From 3ecbd0957bfefefc808893f78503325fea53a7c3 Mon Sep 17 00:00:00 2001 From: zhuyiyi <649091362@qq.com> Date: Mon, 13 Jul 2026 08:57:05 +0800 Subject: [PATCH] first commit --- .gitignore | 33 + LICENSE | 201 + README.md | 138 + database/db_excite_cms.sql | 396 + directoryList.md | 904 + pom.xml | 198 + ss-admin/README.md | 3 + ss-admin/pom.xml | 66 + .../excite/admin/ExciteAdminApplication.java | 30 + .../advanced/GeneratorController.java | 225 + .../advanced/MonitorController.java | 41 + .../account/AccountDepartmentController.java | 237 + .../account/AccountEnterpriseController.java | 144 + .../cloud/account/AccountUserController.java | 340 + .../cloud/collect/CollectController.java | 91 + .../lately/CloudUserLatelyController.java | 76 + .../cloud/my/CloudMyFileController.java | 60 + .../recycle/CloudMyRecycleController.java | 85 + .../cloud/role/CloudRoleController.java | 286 + .../cloud/role/CloudRoleUserController.java | 42 + .../cloud/share/CloudShareController.java | 103 + .../cloud/space/CloudFileController.java | 397 + .../cloud/space/CloudFileRoleController.java | 64 + .../cloud/space/CloudRecycleController.java | 80 + .../cloud/trace/CloudTraceController.java | 73 + .../cloud/upload/UploadController.java | 90 + .../component/AlipayController.java | 83 + .../component/QiniuOssController.java | 43 + .../component/WeChatPayController.java | 92 + .../controller/fileSet/PDFController.java | 42 + .../admin/controller/oss/OssController.java | 133 + .../system/CloudRoleFileController.java | 21 + .../system/CloudUserCollectionController.java | 21 + .../controller/system/SysController.java | 77 + .../controller/system/SysLogController.java | 119 + .../controller/system/SysMenuController.java | 334 + .../controller/system/SysRoleController.java | 282 + .../controller/system/SysUserController.java | 456 + .../controller/tool/CaptchaController.java | 107 + ss-admin/src/main/resources/application.yml | 194 + ss-admin/src/main/resources/banner.txt | 40 + .../src/main/resources/static/api/clear.json | 4 + .../src/main/resources/static/api/init.json | 245 + .../src/main/resources/static/api/menus.json | 254 + .../src/main/resources/static/api/table.json | 127 + .../resources/static/api/tableSelect.json | 23 + .../src/main/resources/static/api/upload.json | 10 + .../main/resources/static/css/layuimini.css | 927 + .../src/main/resources/static/css/login.css | 275 + .../resources/static/css/login2/admin.css | 2 + .../resources/static/css/login2/login2.css | 143 + .../src/main/resources/static/css/public.css | 114 + .../resources/static/css/themes/default.css | 98 + .../src/main/resources/static/css/welcome.css | 136 + .../src/main/resources/static/data/123.pptx | Bin 0 -> 782845 bytes .../src/main/resources/static/data/data.html | 33 + .../main/resources/static/images/bg-login.jpg | Bin 0 -> 392069 bytes .../src/main/resources/static/images/bg.jpg | Bin 0 -> 26174 bytes .../main/resources/static/images/captcha.jpg | Bin 0 -> 2493 bytes .../resources/static/images/donate_qrcode.png | Bin 0 -> 51506 bytes .../main/resources/static/images/favicon.ico | Bin 0 -> 67646 bytes .../main/resources/static/images/favicon2.ico | Bin 0 -> 67646 bytes .../src/main/resources/static/images/home.png | Bin 0 -> 149782 bytes .../main/resources/static/images/ic_404.png | Bin 0 -> 26221 bytes .../resources/static/images/icon-login.png | Bin 0 -> 2791 bytes .../main/resources/static/images/loginbg.png | Bin 0 -> 687033 bytes .../src/main/resources/static/images/logo.png | Bin 0 -> 26360 bytes .../resources/static/images/logo/logo.png | Bin 0 -> 36886 bytes .../resources/static/images/logo/logo2.ico | Bin 0 -> 9919 bytes .../resources/static/images/logo/logo2.png | Bin 0 -> 9919 bytes .../main/resources/static/images/logo2.png | Bin 0 -> 32143 bytes .../resources/static/js/jquery-1.10.2.min.js | 6 + .../main/resources/static/js/lay-config.js | 32 + .../static/js/lay-module/dtree/dtree.css | 113 + .../static/js/lay-module/dtree/dtree.js | 5537 ++ .../js/lay-module/dtree/font/dtreefont.css | 229 + .../js/lay-module/dtree/font/dtreefont.eot | Bin 0 -> 19508 bytes .../js/lay-module/dtree/font/dtreefont.svg | 80 + .../js/lay-module/dtree/font/dtreefont.ttf | Bin 0 -> 19344 bytes .../js/lay-module/dtree/font/dtreefont.woff | Bin 0 -> 19420 bytes .../js/lay-module/dtree/font/icons.json | 283 + .../static/js/lay-module/dtree/开发者日志.txt | 332 + .../static/js/lay-module/echarts/echarts.js | 19 + .../js/lay-module/echarts/echartsTheme.js | 492 + .../js/lay-module/iconPicker/iconPickerFa.js | 399 + .../static/js/lay-module/layarea/layarea.js | 4040 ++ .../js/lay-module/layuimini/miniAdmin.js | 350 + .../js/lay-module/layuimini/miniMenu.js | 250 + .../static/js/lay-module/layuimini/miniTab.js | 582 + .../js/lay-module/layuimini/miniTheme.js | 475 + .../js/lay-module/layuimini/miniTongji.js | 40 + .../static/js/lay-module/step-lay/step.css | 79 + .../static/js/lay-module/step-lay/step.js | 101 + .../js/lay-module/tableSelect/tableSelect.js | 272 + .../treetable-lay-3.x/treeTable.css | 437 + .../lay-module/treetable-lay-3.x/treeTable.js | 2267 + .../treetable-lay-3.x/treeTable2.js | 2 + .../js/lay-module/treetable-lay/treetable.css | 18 + .../js/lay-module/treetable-lay/treetable.js | 206 + .../lay-module/wangEditor/fonts/w-e-icon.woff | Bin 0 -> 6224 bytes .../js/lay-module/wangEditor/wangEditor.css | 411 + .../js/lay-module/wangEditor/wangEditor.js | 4678 ++ .../lay-module/wangEditor/wangEditor.min.css | 1 + .../lay-module/wangEditor/wangEditor.min.js | 4 + .../wangEditor/wangEditor.min.js.map | 1 + .../main/resources/static/js/login/login.js | 83 + ss-admin/src/main/resources/static/js/time.js | 3 + .../src/main/resources/static/lib/admin.css | 720 + .../lib/font-awesome-4.7.0/HELP-US-OUT.txt | 7 + .../font-awesome-4.7.0/css/font-awesome.css | 2337 + .../css/font-awesome.min.css | 4 + .../font-awesome-4.7.0/fonts/FontAwesome.otf | Bin 0 -> 134808 bytes .../fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes .../fonts/fontawesome-webfont.svg | 2671 + .../fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes .../fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes .../lib/font-awesome-4.7.0/less/animated.less | 34 + .../less/bordered-pulled.less | 25 + .../lib/font-awesome-4.7.0/less/core.less | 12 + .../font-awesome-4.7.0/less/fixed-width.less | 6 + .../font-awesome-4.7.0/less/font-awesome.less | 18 + .../lib/font-awesome-4.7.0/less/icons.less | 789 + .../lib/font-awesome-4.7.0/less/larger.less | 13 + .../lib/font-awesome-4.7.0/less/list.less | 19 + .../lib/font-awesome-4.7.0/less/mixins.less | 60 + .../lib/font-awesome-4.7.0/less/path.less | 15 + .../less/rotated-flipped.less | 20 + .../less/screen-reader.less | 5 + .../lib/font-awesome-4.7.0/less/stacked.less | 20 + .../font-awesome-4.7.0/less/variables.less | 800 + .../font-awesome-4.7.0/scss/_animated.scss | 34 + .../scss/_bordered-pulled.scss | 25 + .../lib/font-awesome-4.7.0/scss/_core.scss | 12 + .../font-awesome-4.7.0/scss/_fixed-width.scss | 6 + .../lib/font-awesome-4.7.0/scss/_icons.scss | 789 + .../lib/font-awesome-4.7.0/scss/_larger.scss | 13 + .../lib/font-awesome-4.7.0/scss/_list.scss | 19 + .../lib/font-awesome-4.7.0/scss/_mixins.scss | 60 + .../lib/font-awesome-4.7.0/scss/_path.scss | 15 + .../scss/_rotated-flipped.scss | 20 + .../scss/_screen-reader.scss | 5 + .../lib/font-awesome-4.7.0/scss/_stacked.scss | 20 + .../font-awesome-4.7.0/scss/_variables.scss | 800 + .../font-awesome-4.7.0/scss/font-awesome.scss | 18 + .../fontawesome-free-6.4.0-web/LICENSE.txt | 165 + .../fontawesome-free-6.4.0-web/css/all.css | 7955 +++ .../css/all.min.css | 9 + .../fontawesome-free-6.4.0-web/css/brands.css | 0 .../css/brands.min.css | 0 .../css/fontawesome.css | 6372 ++ .../css/fontawesome.min.css | 9 + .../css/regular.css | 0 .../css/regular.min.css | 0 .../fontawesome-free-6.4.0-web/css/solid.css | 0 .../css/solid.min.css | 0 .../css/svg-with-js.css | 639 + .../css/svg-with-js.min.css | 6 + .../css/v4-font-face.css | 0 .../css/v4-font-face.min.css | 0 .../css/v4-shims.css | 0 .../css/v4-shims.min.css | 0 .../css/v5-font-face.css | 0 .../css/v5-font-face.min.css | 0 .../lib/fontawesome-free-6.4.0-web/js/all.js | 0 .../fontawesome-free-6.4.0-web/js/all.min.js | 0 .../fontawesome-free-6.4.0-web/js/brands.js | 749 + .../js/brands.min.js | 0 .../js/conflict-detection.js | 1138 + .../js/conflict-detection.min.js | 0 .../js/fontawesome.js | 3126 + .../js/fontawesome.min.js | 0 .../fontawesome-free-6.4.0-web/js/regular.js | 445 + .../js/regular.min.js | 0 .../fontawesome-free-6.4.0-web/js/solid.js | 1672 + .../js/solid.min.js | 0 .../fontawesome-free-6.4.0-web/js/v4-shims.js | 225 + .../js/v4-shims.min.js | 0 .../less/_animated.less | 0 .../less/_bordered-pulled.less | 0 .../less/_core.less | 0 .../less/_fixed-width.less | 0 .../less/_icons.less | 0 .../less/_list.less | 0 .../less/_mixins.less | 0 .../less/_rotated-flipped.less | 0 .../less/_screen-reader.less | 0 .../less/_shims.less | 0 .../less/_sizing.less | 0 .../less/_stacked.less | 0 .../less/_variables.less | 0 .../less/brands.less | 0 .../less/fontawesome.less | 0 .../less/regular.less | 0 .../less/solid.less | 0 .../less/v4-shims.less | 0 .../metadata/categories.yml | 3059 + .../metadata/icon-families.json | 0 .../metadata/icon-families.yml | 51019 ++++++++++++++++ .../metadata/icons.json | 0 .../metadata/icons.yml | 41247 +++++++++++++ .../metadata/shims.json | 4052 ++ .../metadata/shims.yml | 646 + .../metadata/sponsors.yml | 1403 + .../scss/_animated.scss | 0 .../scss/_bordered-pulled.scss | 0 .../scss/_core.scss | 0 .../scss/_fixed-width.scss | 0 .../scss/_functions.scss | 0 .../scss/_icons.scss | 0 .../scss/_list.scss | 0 .../scss/_mixins.scss | 0 .../scss/_rotated-flipped.scss | 0 .../scss/_screen-reader.scss | 0 .../scss/_shims.scss | 0 .../scss/_sizing.scss | 0 .../scss/_stacked.scss | 0 .../scss/_variables.scss | 0 .../scss/brands.scss | 0 .../scss/fontawesome.scss | 0 .../scss/regular.scss | 0 .../scss/solid.scss | 0 .../scss/v4-shims.scss | 0 .../sprites/brands.svg | 0 .../sprites/regular.svg | 0 .../sprites/solid.svg | 0 .../svgs/brands/42-group.svg | 0 .../svgs/brands/500px.svg | 0 .../svgs/brands/accessible-icon.svg | 0 .../svgs/brands/accusoft.svg | 0 .../svgs/brands/adn.svg | 0 .../svgs/brands/adversal.svg | 0 .../svgs/brands/affiliatetheme.svg | 0 .../svgs/brands/airbnb.svg | 0 .../svgs/brands/algolia.svg | 0 .../svgs/brands/alipay.svg | 0 .../svgs/brands/amazon-pay.svg | 0 .../svgs/brands/amazon.svg | 0 .../svgs/brands/amilia.svg | 0 .../svgs/brands/android.svg | 0 .../svgs/brands/angellist.svg | 0 .../svgs/brands/angrycreative.svg | 0 .../svgs/brands/angular.svg | 0 .../svgs/brands/app-store-ios.svg | 0 .../svgs/brands/app-store.svg | 0 .../svgs/brands/apper.svg | 0 .../svgs/brands/apple-pay.svg | 0 .../svgs/brands/apple.svg | 0 .../svgs/brands/artstation.svg | 0 .../svgs/brands/asymmetrik.svg | 0 .../svgs/brands/atlassian.svg | 0 .../svgs/brands/audible.svg | 0 .../svgs/brands/autoprefixer.svg | 0 .../svgs/brands/avianex.svg | 0 .../svgs/brands/aviato.svg | 0 .../svgs/brands/aws.svg | 0 .../svgs/brands/bandcamp.svg | 0 .../svgs/brands/battle-net.svg | 0 .../svgs/brands/behance.svg | 0 .../svgs/brands/bilibili.svg | 0 .../svgs/brands/bimobject.svg | 0 .../svgs/brands/bitbucket.svg | 0 .../svgs/brands/bitcoin.svg | 0 .../svgs/brands/bity.svg | 0 .../svgs/brands/black-tie.svg | 0 .../svgs/brands/blackberry.svg | 0 .../svgs/brands/blogger-b.svg | 0 .../svgs/brands/blogger.svg | 0 .../svgs/brands/bluetooth-b.svg | 0 .../svgs/brands/bluetooth.svg | 0 .../svgs/brands/bootstrap.svg | 0 .../svgs/brands/bots.svg | 0 .../svgs/brands/btc.svg | 0 .../svgs/brands/buffer.svg | 0 .../svgs/brands/buromobelexperte.svg | 0 .../svgs/brands/buy-n-large.svg | 0 .../svgs/brands/buysellads.svg | 0 .../svgs/brands/canadian-maple-leaf.svg | 0 .../svgs/brands/cc-amazon-pay.svg | 0 .../svgs/brands/cc-amex.svg | 0 .../svgs/brands/cc-apple-pay.svg | 0 .../svgs/brands/cc-diners-club.svg | 0 .../svgs/brands/cc-discover.svg | 0 .../svgs/brands/cc-jcb.svg | 0 .../svgs/brands/cc-mastercard.svg | 0 .../svgs/brands/cc-paypal.svg | 0 .../svgs/brands/cc-stripe.svg | 0 .../svgs/brands/cc-visa.svg | 0 .../svgs/brands/centercode.svg | 0 .../svgs/brands/centos.svg | 0 .../svgs/brands/chrome.svg | 0 .../svgs/brands/chromecast.svg | 0 .../svgs/brands/cloudflare.svg | 0 .../svgs/brands/cloudscale.svg | 0 .../svgs/brands/cloudsmith.svg | 0 .../svgs/brands/cloudversify.svg | 0 .../svgs/brands/cmplid.svg | 0 .../svgs/brands/codepen.svg | 0 .../svgs/brands/codiepie.svg | 0 .../svgs/brands/confluence.svg | 0 .../svgs/brands/connectdevelop.svg | 0 .../svgs/brands/contao.svg | 0 .../svgs/brands/cotton-bureau.svg | 0 .../svgs/brands/cpanel.svg | 0 .../svgs/brands/creative-commons-by.svg | 0 .../svgs/brands/creative-commons-nc-eu.svg | 0 .../svgs/brands/creative-commons-nc-jp.svg | 0 .../svgs/brands/creative-commons-nc.svg | 0 .../svgs/brands/creative-commons-nd.svg | 0 .../svgs/brands/creative-commons-pd-alt.svg | 0 .../svgs/brands/creative-commons-pd.svg | 0 .../svgs/brands/creative-commons-remix.svg | 0 .../svgs/brands/creative-commons-sa.svg | 0 .../brands/creative-commons-sampling-plus.svg | 0 .../svgs/brands/creative-commons-sampling.svg | 0 .../svgs/brands/creative-commons-share.svg | 0 .../svgs/brands/creative-commons-zero.svg | 0 .../svgs/brands/creative-commons.svg | 0 .../svgs/brands/critical-role.svg | 0 .../svgs/brands/css3-alt.svg | 0 .../svgs/brands/css3.svg | 0 .../svgs/brands/cuttlefish.svg | 0 .../svgs/brands/d-and-d-beyond.svg | 0 .../svgs/brands/d-and-d.svg | 0 .../svgs/brands/dailymotion.svg | 0 .../svgs/brands/dashcube.svg | 0 .../svgs/brands/deezer.svg | 0 .../svgs/brands/delicious.svg | 0 .../svgs/brands/deploydog.svg | 0 .../svgs/brands/deskpro.svg | 0 .../svgs/brands/dev.svg | 0 .../svgs/brands/deviantart.svg | 0 .../svgs/brands/dhl.svg | 0 .../svgs/brands/diaspora.svg | 0 .../svgs/brands/digg.svg | 0 .../svgs/brands/digital-ocean.svg | 0 .../svgs/brands/discord.svg | 0 .../svgs/brands/discourse.svg | 0 .../svgs/brands/dochub.svg | 0 .../svgs/brands/docker.svg | 0 .../svgs/brands/draft2digital.svg | 0 .../svgs/brands/dribbble.svg | 0 .../svgs/brands/dropbox.svg | 0 .../svgs/brands/drupal.svg | 0 .../svgs/brands/dyalog.svg | 0 .../svgs/brands/earlybirds.svg | 0 .../svgs/brands/ebay.svg | 0 .../svgs/brands/edge-legacy.svg | 0 .../svgs/brands/edge.svg | 0 .../svgs/brands/elementor.svg | 0 .../svgs/brands/ello.svg | 0 .../svgs/brands/ember.svg | 0 .../svgs/brands/empire.svg | 0 .../svgs/brands/envira.svg | 0 .../svgs/brands/erlang.svg | 0 .../svgs/brands/ethereum.svg | 0 .../svgs/brands/etsy.svg | 0 .../svgs/brands/evernote.svg | 0 .../svgs/brands/expeditedssl.svg | 0 .../svgs/brands/facebook-f.svg | 0 .../svgs/brands/facebook-messenger.svg | 0 .../svgs/brands/facebook.svg | 0 .../svgs/brands/fantasy-flight-games.svg | 0 .../svgs/brands/fedex.svg | 0 .../svgs/brands/fedora.svg | 0 .../svgs/brands/figma.svg | 0 .../svgs/brands/firefox-browser.svg | 0 .../svgs/brands/firefox.svg | 0 .../svgs/brands/first-order-alt.svg | 0 .../svgs/brands/first-order.svg | 0 .../svgs/brands/firstdraft.svg | 0 .../svgs/brands/flickr.svg | 0 .../svgs/brands/flipboard.svg | 0 .../svgs/brands/fly.svg | 0 .../svgs/brands/font-awesome.svg | 0 .../svgs/brands/fonticons-fi.svg | 0 .../svgs/brands/fonticons.svg | 0 .../svgs/brands/fort-awesome-alt.svg | 0 .../svgs/brands/fort-awesome.svg | 0 .../svgs/brands/forumbee.svg | 0 .../svgs/brands/foursquare.svg | 0 .../svgs/brands/free-code-camp.svg | 0 .../svgs/brands/freebsd.svg | 0 .../svgs/brands/fulcrum.svg | 0 .../svgs/brands/galactic-republic.svg | 0 .../svgs/brands/galactic-senate.svg | 0 .../svgs/brands/get-pocket.svg | 0 .../svgs/brands/gg-circle.svg | 0 .../svgs/brands/gg.svg | 0 .../svgs/brands/git-alt.svg | 0 .../svgs/brands/git.svg | 0 .../svgs/brands/github-alt.svg | 0 .../svgs/brands/github.svg | 0 .../svgs/brands/gitkraken.svg | 0 .../svgs/brands/gitlab.svg | 0 .../svgs/brands/gitter.svg | 0 .../svgs/brands/glide-g.svg | 0 .../svgs/brands/glide.svg | 0 .../svgs/brands/gofore.svg | 0 .../svgs/brands/golang.svg | 0 .../svgs/brands/goodreads-g.svg | 0 .../svgs/brands/goodreads.svg | 0 .../svgs/brands/google-drive.svg | 0 .../svgs/brands/google-pay.svg | 0 .../svgs/brands/google-play.svg | 0 .../svgs/brands/google-plus-g.svg | 0 .../svgs/brands/google-plus.svg | 0 .../svgs/brands/google-wallet.svg | 0 .../svgs/brands/google.svg | 0 .../svgs/brands/gratipay.svg | 0 .../svgs/brands/grav.svg | 0 .../svgs/brands/gripfire.svg | 0 .../svgs/brands/grunt.svg | 0 .../svgs/brands/guilded.svg | 0 .../svgs/brands/gulp.svg | 0 .../svgs/brands/hacker-news.svg | 0 .../svgs/brands/hackerrank.svg | 0 .../svgs/brands/hashnode.svg | 0 .../svgs/brands/hips.svg | 0 .../svgs/brands/hire-a-helper.svg | 0 .../svgs/brands/hive.svg | 0 .../svgs/brands/hooli.svg | 0 .../svgs/brands/hornbill.svg | 0 .../svgs/brands/hotjar.svg | 0 .../svgs/brands/houzz.svg | 0 .../svgs/brands/html5.svg | 0 .../svgs/brands/hubspot.svg | 0 .../svgs/brands/ideal.svg | 0 .../svgs/brands/imdb.svg | 0 .../svgs/brands/instagram.svg | 0 .../svgs/brands/instalod.svg | 0 .../svgs/brands/intercom.svg | 0 .../svgs/brands/internet-explorer.svg | 0 .../svgs/brands/invision.svg | 0 .../svgs/brands/ioxhost.svg | 0 .../svgs/brands/itch-io.svg | 0 .../svgs/brands/itunes-note.svg | 0 .../svgs/brands/itunes.svg | 0 .../svgs/brands/java.svg | 0 .../svgs/brands/jedi-order.svg | 0 .../svgs/brands/jenkins.svg | 0 .../svgs/brands/jira.svg | 0 .../svgs/brands/joget.svg | 0 .../svgs/brands/joomla.svg | 0 .../svgs/brands/js.svg | 0 .../svgs/brands/jsfiddle.svg | 0 .../svgs/brands/kaggle.svg | 0 .../svgs/brands/keybase.svg | 0 .../svgs/brands/keycdn.svg | 0 .../svgs/brands/kickstarter-k.svg | 0 .../svgs/brands/kickstarter.svg | 0 .../svgs/brands/korvue.svg | 0 .../svgs/brands/laravel.svg | 0 .../svgs/brands/lastfm.svg | 0 .../svgs/brands/leanpub.svg | 0 .../svgs/brands/less.svg | 0 .../svgs/brands/line.svg | 0 .../svgs/brands/linkedin-in.svg | 0 .../svgs/brands/linkedin.svg | 0 .../svgs/brands/linode.svg | 0 .../svgs/brands/linux.svg | 0 .../svgs/brands/lyft.svg | 0 .../svgs/brands/magento.svg | 0 .../svgs/brands/mailchimp.svg | 0 .../svgs/brands/mandalorian.svg | 0 .../svgs/brands/markdown.svg | 0 .../svgs/brands/mastodon.svg | 0 .../svgs/brands/maxcdn.svg | 0 .../svgs/brands/mdb.svg | 0 .../svgs/brands/medapps.svg | 0 .../svgs/brands/medium.svg | 0 .../svgs/brands/medrt.svg | 0 .../svgs/brands/meetup.svg | 0 .../svgs/brands/megaport.svg | 0 .../svgs/brands/mendeley.svg | 0 .../svgs/brands/meta.svg | 0 .../svgs/brands/microblog.svg | 0 .../svgs/brands/microsoft.svg | 0 .../svgs/brands/mix.svg | 0 .../svgs/brands/mixcloud.svg | 0 .../svgs/brands/mixer.svg | 0 .../svgs/brands/mizuni.svg | 0 .../svgs/brands/modx.svg | 0 .../svgs/brands/monero.svg | 0 .../svgs/brands/napster.svg | 0 .../svgs/brands/neos.svg | 0 .../svgs/brands/nfc-directional.svg | 0 .../svgs/brands/nfc-symbol.svg | 0 .../svgs/brands/nimblr.svg | 0 .../svgs/brands/node-js.svg | 0 .../svgs/brands/node.svg | 0 .../svgs/brands/npm.svg | 0 .../svgs/brands/ns8.svg | 0 .../svgs/brands/nutritionix.svg | 0 .../svgs/brands/octopus-deploy.svg | 0 .../svgs/brands/odnoklassniki.svg | 0 .../svgs/brands/odysee.svg | 0 .../svgs/brands/old-republic.svg | 0 .../svgs/brands/opencart.svg | 0 .../svgs/brands/openid.svg | 0 .../svgs/brands/opera.svg | 0 .../svgs/brands/optin-monster.svg | 0 .../svgs/brands/orcid.svg | 0 .../svgs/brands/osi.svg | 0 .../svgs/brands/padlet.svg | 0 .../svgs/brands/page4.svg | 0 .../svgs/brands/pagelines.svg | 0 .../svgs/brands/palfed.svg | 0 .../svgs/brands/patreon.svg | 0 .../svgs/brands/paypal.svg | 0 .../svgs/brands/perbyte.svg | 0 .../svgs/brands/periscope.svg | 0 .../svgs/brands/phabricator.svg | 0 .../svgs/brands/phoenix-framework.svg | 0 .../svgs/brands/phoenix-squadron.svg | 0 .../svgs/brands/php.svg | 0 .../svgs/brands/pied-piper-alt.svg | 0 .../svgs/brands/pied-piper-hat.svg | 0 .../svgs/brands/pied-piper-pp.svg | 0 .../svgs/brands/pied-piper.svg | 0 .../svgs/brands/pinterest-p.svg | 0 .../svgs/brands/pinterest.svg | 0 .../svgs/brands/pix.svg | 0 .../svgs/brands/playstation.svg | 0 .../svgs/brands/product-hunt.svg | 0 .../svgs/brands/pushed.svg | 0 .../svgs/brands/python.svg | 0 .../svgs/brands/qq.svg | 0 .../svgs/brands/quinscape.svg | 0 .../svgs/brands/quora.svg | 0 .../svgs/brands/r-project.svg | 0 .../svgs/brands/raspberry-pi.svg | 0 .../svgs/brands/ravelry.svg | 0 .../svgs/brands/react.svg | 0 .../svgs/brands/reacteurope.svg | 0 .../svgs/brands/readme.svg | 0 .../svgs/brands/rebel.svg | 0 .../svgs/brands/red-river.svg | 0 .../svgs/brands/reddit-alien.svg | 0 .../svgs/brands/reddit.svg | 0 .../svgs/brands/redhat.svg | 0 .../svgs/brands/renren.svg | 0 .../svgs/brands/replyd.svg | 0 .../svgs/brands/researchgate.svg | 0 .../svgs/brands/resolving.svg | 0 .../svgs/brands/rev.svg | 0 .../svgs/brands/rocketchat.svg | 0 .../svgs/brands/rockrms.svg | 0 .../svgs/brands/rust.svg | 0 .../svgs/brands/safari.svg | 0 .../svgs/brands/salesforce.svg | 0 .../svgs/brands/sass.svg | 0 .../svgs/brands/schlix.svg | 0 .../svgs/brands/screenpal.svg | 0 .../svgs/brands/scribd.svg | 0 .../svgs/brands/searchengin.svg | 0 .../svgs/brands/sellcast.svg | 0 .../svgs/brands/sellsy.svg | 0 .../svgs/brands/servicestack.svg | 0 .../svgs/brands/shirtsinbulk.svg | 0 .../svgs/brands/shopify.svg | 0 .../svgs/brands/shopware.svg | 0 .../svgs/brands/simplybuilt.svg | 0 .../svgs/brands/sistrix.svg | 0 .../svgs/brands/sith.svg | 0 .../svgs/brands/sitrox.svg | 0 .../svgs/brands/sketch.svg | 0 .../svgs/brands/skyatlas.svg | 0 .../svgs/brands/skype.svg | 0 .../svgs/brands/slack.svg | 0 .../svgs/brands/slideshare.svg | 0 .../svgs/brands/snapchat.svg | 0 .../svgs/brands/soundcloud.svg | 0 .../svgs/brands/sourcetree.svg | 0 .../svgs/brands/space-awesome.svg | 0 .../svgs/brands/speakap.svg | 0 .../svgs/brands/speaker-deck.svg | 0 .../svgs/brands/spotify.svg | 0 .../svgs/brands/square-behance.svg | 0 .../svgs/brands/square-dribbble.svg | 0 .../svgs/brands/square-facebook.svg | 0 .../brands/square-font-awesome-stroke.svg | 0 .../svgs/brands/square-font-awesome.svg | 0 .../svgs/brands/square-git.svg | 0 .../svgs/brands/square-github.svg | 0 .../svgs/brands/square-gitlab.svg | 0 .../svgs/brands/square-google-plus.svg | 0 .../svgs/brands/square-hacker-news.svg | 0 .../svgs/brands/square-instagram.svg | 0 .../svgs/brands/square-js.svg | 0 .../svgs/brands/square-lastfm.svg | 0 .../svgs/brands/square-odnoklassniki.svg | 0 .../svgs/brands/square-pied-piper.svg | 0 .../svgs/brands/square-pinterest.svg | 0 .../svgs/brands/square-reddit.svg | 0 .../svgs/brands/square-snapchat.svg | 0 .../svgs/brands/square-steam.svg | 0 .../svgs/brands/square-tumblr.svg | 0 .../svgs/brands/square-twitter.svg | 0 .../svgs/brands/square-viadeo.svg | 0 .../svgs/brands/square-vimeo.svg | 0 .../svgs/brands/square-whatsapp.svg | 0 .../svgs/brands/square-xing.svg | 0 .../svgs/brands/square-youtube.svg | 0 .../svgs/brands/squarespace.svg | 0 .../svgs/brands/stack-exchange.svg | 0 .../svgs/brands/stack-overflow.svg | 0 .../svgs/brands/stackpath.svg | 0 .../svgs/brands/staylinked.svg | 0 .../svgs/brands/steam-symbol.svg | 0 .../svgs/brands/steam.svg | 0 .../svgs/brands/sticker-mule.svg | 0 .../svgs/brands/strava.svg | 0 .../svgs/brands/stripe-s.svg | 0 .../svgs/brands/stripe.svg | 0 .../svgs/brands/stubber.svg | 0 .../svgs/brands/studiovinari.svg | 0 .../svgs/brands/stumbleupon-circle.svg | 0 .../svgs/brands/stumbleupon.svg | 0 .../svgs/brands/superpowers.svg | 0 .../svgs/brands/supple.svg | 0 .../svgs/brands/suse.svg | 0 .../svgs/brands/swift.svg | 0 .../svgs/brands/symfony.svg | 0 .../svgs/brands/teamspeak.svg | 0 .../svgs/brands/telegram.svg | 0 .../svgs/brands/tencent-weibo.svg | 0 .../svgs/brands/the-red-yeti.svg | 0 .../svgs/brands/themeco.svg | 0 .../svgs/brands/themeisle.svg | 0 .../svgs/brands/think-peaks.svg | 0 .../svgs/brands/tiktok.svg | 0 .../svgs/brands/trade-federation.svg | 0 .../svgs/brands/trello.svg | 0 .../svgs/brands/tumblr.svg | 0 .../svgs/brands/twitch.svg | 0 .../svgs/brands/twitter.svg | 0 .../svgs/brands/typo3.svg | 0 .../svgs/brands/uber.svg | 0 .../svgs/brands/ubuntu.svg | 0 .../svgs/brands/uikit.svg | 0 .../svgs/brands/umbraco.svg | 0 .../svgs/brands/uncharted.svg | 0 .../svgs/brands/uniregistry.svg | 0 .../svgs/brands/unity.svg | 0 .../svgs/brands/unsplash.svg | 0 .../svgs/brands/untappd.svg | 0 .../svgs/brands/ups.svg | 0 .../svgs/brands/usb.svg | 0 .../svgs/brands/usps.svg | 0 .../svgs/brands/ussunnah.svg | 0 .../svgs/brands/vaadin.svg | 0 .../svgs/brands/viacoin.svg | 0 .../svgs/brands/viadeo.svg | 0 .../svgs/brands/viber.svg | 0 .../svgs/brands/vimeo-v.svg | 0 .../svgs/brands/vimeo.svg | 0 .../svgs/brands/vine.svg | 0 .../svgs/brands/vk.svg | 0 .../svgs/brands/vnv.svg | 0 .../svgs/brands/vuejs.svg | 0 .../svgs/brands/watchman-monitoring.svg | 0 .../svgs/brands/waze.svg | 0 .../svgs/brands/weebly.svg | 0 .../svgs/brands/weibo.svg | 0 .../svgs/brands/weixin.svg | 0 .../svgs/brands/whatsapp.svg | 0 .../svgs/brands/whmcs.svg | 0 .../svgs/brands/wikipedia-w.svg | 0 .../svgs/brands/windows.svg | 0 .../svgs/brands/wirsindhandwerk.svg | 0 .../svgs/brands/wix.svg | 0 .../svgs/brands/wizards-of-the-coast.svg | 0 .../svgs/brands/wodu.svg | 0 .../svgs/brands/wolf-pack-battalion.svg | 0 .../svgs/brands/wordpress-simple.svg | 0 .../svgs/brands/wordpress.svg | 0 .../svgs/brands/wpbeginner.svg | 0 .../svgs/brands/wpexplorer.svg | 0 .../svgs/brands/wpforms.svg | 0 .../svgs/brands/wpressr.svg | 0 .../svgs/brands/xbox.svg | 0 .../svgs/brands/xing.svg | 0 .../svgs/brands/y-combinator.svg | 0 .../svgs/brands/yahoo.svg | 0 .../svgs/brands/yammer.svg | 0 .../svgs/brands/yandex-international.svg | 0 .../svgs/brands/yandex.svg | 0 .../svgs/brands/yarn.svg | 0 .../svgs/brands/yelp.svg | 0 .../svgs/brands/yoast.svg | 0 .../svgs/brands/youtube.svg | 0 .../svgs/brands/zhihu.svg | 0 .../svgs/regular/address-book.svg | 0 .../svgs/regular/address-card.svg | 0 .../svgs/regular/bell-slash.svg | 0 .../svgs/regular/bell.svg | 0 .../svgs/regular/bookmark.svg | 0 .../svgs/regular/building.svg | 0 .../svgs/regular/calendar-check.svg | 0 .../svgs/regular/calendar-days.svg | 0 .../svgs/regular/calendar-minus.svg | 0 .../svgs/regular/calendar-plus.svg | 0 .../svgs/regular/calendar-xmark.svg | 0 .../svgs/regular/calendar.svg | 0 .../svgs/regular/chart-bar.svg | 0 .../svgs/regular/chess-bishop.svg | 0 .../svgs/regular/chess-king.svg | 0 .../svgs/regular/chess-knight.svg | 0 .../svgs/regular/chess-pawn.svg | 0 .../svgs/regular/chess-queen.svg | 0 .../svgs/regular/chess-rook.svg | 0 .../svgs/regular/circle-check.svg | 0 .../svgs/regular/circle-dot.svg | 0 .../svgs/regular/circle-down.svg | 0 .../svgs/regular/circle-left.svg | 0 .../svgs/regular/circle-pause.svg | 0 .../svgs/regular/circle-play.svg | 0 .../svgs/regular/circle-question.svg | 0 .../svgs/regular/circle-right.svg | 0 .../svgs/regular/circle-stop.svg | 0 .../svgs/regular/circle-up.svg | 0 .../svgs/regular/circle-user.svg | 0 .../svgs/regular/circle-xmark.svg | 0 .../svgs/regular/circle.svg | 0 .../svgs/regular/clipboard.svg | 0 .../svgs/regular/clock.svg | 0 .../svgs/regular/clone.svg | 0 .../svgs/regular/closed-captioning.svg | 0 .../svgs/regular/comment-dots.svg | 0 .../svgs/regular/comment.svg | 0 .../svgs/regular/comments.svg | 0 .../svgs/regular/compass.svg | 0 .../svgs/regular/copy.svg | 0 .../svgs/regular/copyright.svg | 0 .../svgs/regular/credit-card.svg | 0 .../svgs/regular/envelope-open.svg | 0 .../svgs/regular/envelope.svg | 0 .../svgs/regular/eye-slash.svg | 0 .../svgs/regular/eye.svg | 0 .../svgs/regular/face-angry.svg | 0 .../svgs/regular/face-dizzy.svg | 0 .../svgs/regular/face-flushed.svg | 0 .../svgs/regular/face-frown-open.svg | 0 .../svgs/regular/face-frown.svg | 0 .../svgs/regular/face-grimace.svg | 0 .../svgs/regular/face-grin-beam-sweat.svg | 0 .../svgs/regular/face-grin-beam.svg | 0 .../svgs/regular/face-grin-hearts.svg | 0 .../svgs/regular/face-grin-squint-tears.svg | 0 .../svgs/regular/face-grin-squint.svg | 0 .../svgs/regular/face-grin-stars.svg | 0 .../svgs/regular/face-grin-tears.svg | 0 .../svgs/regular/face-grin-tongue-squint.svg | 0 .../svgs/regular/face-grin-tongue-wink.svg | 0 .../svgs/regular/face-grin-tongue.svg | 0 .../svgs/regular/face-grin-wide.svg | 0 .../svgs/regular/face-grin-wink.svg | 0 .../svgs/regular/face-grin.svg | 0 .../svgs/regular/face-kiss-beam.svg | 0 .../svgs/regular/face-kiss-wink-heart.svg | 0 .../svgs/regular/face-kiss.svg | 0 .../svgs/regular/face-laugh-beam.svg | 0 .../svgs/regular/face-laugh-squint.svg | 0 .../svgs/regular/face-laugh-wink.svg | 0 .../svgs/regular/face-laugh.svg | 0 .../svgs/regular/face-meh-blank.svg | 0 .../svgs/regular/face-meh.svg | 0 .../svgs/regular/face-rolling-eyes.svg | 0 .../svgs/regular/face-sad-cry.svg | 0 .../svgs/regular/face-sad-tear.svg | 0 .../svgs/regular/face-smile-beam.svg | 0 .../svgs/regular/face-smile-wink.svg | 0 .../svgs/regular/face-smile.svg | 0 .../svgs/regular/face-surprise.svg | 0 .../svgs/regular/face-tired.svg | 0 .../svgs/regular/file-audio.svg | 0 .../svgs/regular/file-code.svg | 0 .../svgs/regular/file-excel.svg | 0 .../svgs/regular/file-image.svg | 0 .../svgs/regular/file-lines.svg | 0 .../svgs/regular/file-pdf.svg | 0 .../svgs/regular/file-powerpoint.svg | 0 .../svgs/regular/file-video.svg | 0 .../svgs/regular/file-word.svg | 0 .../svgs/regular/file-zipper.svg | 0 .../svgs/regular/file.svg | 0 .../svgs/regular/flag.svg | 0 .../svgs/regular/floppy-disk.svg | 0 .../svgs/regular/folder-closed.svg | 0 .../svgs/regular/folder-open.svg | 0 .../svgs/regular/folder.svg | 0 .../svgs/regular/font-awesome.svg | 0 .../svgs/regular/futbol.svg | 0 .../svgs/regular/gem.svg | 0 .../svgs/regular/hand-back-fist.svg | 0 .../svgs/regular/hand-lizard.svg | 0 .../svgs/regular/hand-peace.svg | 0 .../svgs/regular/hand-point-down.svg | 0 .../svgs/regular/hand-point-left.svg | 0 .../svgs/regular/hand-point-right.svg | 0 .../svgs/regular/hand-point-up.svg | 0 .../svgs/regular/hand-pointer.svg | 0 .../svgs/regular/hand-scissors.svg | 0 .../svgs/regular/hand-spock.svg | 0 .../svgs/regular/hand.svg | 0 .../svgs/regular/handshake.svg | 0 .../svgs/regular/hard-drive.svg | 0 .../svgs/regular/heart.svg | 0 .../svgs/regular/hospital.svg | 0 .../svgs/regular/hourglass-half.svg | 0 .../svgs/regular/hourglass.svg | 0 .../svgs/regular/id-badge.svg | 0 .../svgs/regular/id-card.svg | 0 .../svgs/regular/image.svg | 0 .../svgs/regular/images.svg | 0 .../svgs/regular/keyboard.svg | 0 .../svgs/regular/lemon.svg | 0 .../svgs/regular/life-ring.svg | 0 .../svgs/regular/lightbulb.svg | 0 .../svgs/regular/map.svg | 0 .../svgs/regular/message.svg | 0 .../svgs/regular/money-bill-1.svg | 0 .../svgs/regular/moon.svg | 0 .../svgs/regular/newspaper.svg | 0 .../svgs/regular/note-sticky.svg | 0 .../svgs/regular/object-group.svg | 0 .../svgs/regular/object-ungroup.svg | 0 .../svgs/regular/paper-plane.svg | 0 .../svgs/regular/paste.svg | 0 .../svgs/regular/pen-to-square.svg | 0 .../svgs/regular/rectangle-list.svg | 0 .../svgs/regular/rectangle-xmark.svg | 0 .../svgs/regular/registered.svg | 0 .../svgs/regular/share-from-square.svg | 0 .../svgs/regular/snowflake.svg | 0 .../svgs/regular/square-caret-down.svg | 0 .../svgs/regular/square-caret-left.svg | 0 .../svgs/regular/square-caret-right.svg | 0 .../svgs/regular/square-caret-up.svg | 0 .../svgs/regular/square-check.svg | 0 .../svgs/regular/square-full.svg | 0 .../svgs/regular/square-minus.svg | 0 .../svgs/regular/square-plus.svg | 0 .../svgs/regular/square.svg | 0 .../svgs/regular/star-half-stroke.svg | 0 .../svgs/regular/star-half.svg | 0 .../svgs/regular/star.svg | 0 .../svgs/regular/sun.svg | 0 .../svgs/regular/thumbs-down.svg | 0 .../svgs/regular/thumbs-up.svg | 0 .../svgs/regular/trash-can.svg | 0 .../svgs/regular/user.svg | 0 .../svgs/regular/window-maximize.svg | 0 .../svgs/regular/window-minimize.svg | 0 .../svgs/regular/window-restore.svg | 0 .../svgs/solid/0.svg | 0 .../svgs/solid/1.svg | 0 .../svgs/solid/2.svg | 0 .../svgs/solid/3.svg | 0 .../svgs/solid/4.svg | 0 .../svgs/solid/5.svg | 0 .../svgs/solid/6.svg | 0 .../svgs/solid/7.svg | 0 .../svgs/solid/8.svg | 0 .../svgs/solid/9.svg | 0 .../svgs/solid/a.svg | 0 .../svgs/solid/address-book.svg | 0 .../svgs/solid/address-card.svg | 0 .../svgs/solid/align-center.svg | 0 .../svgs/solid/align-justify.svg | 0 .../svgs/solid/align-left.svg | 0 .../svgs/solid/align-right.svg | 0 .../svgs/solid/anchor-circle-check.svg | 0 .../svgs/solid/anchor-circle-exclamation.svg | 0 .../svgs/solid/anchor-circle-xmark.svg | 0 .../svgs/solid/anchor-lock.svg | 0 .../svgs/solid/anchor.svg | 0 .../svgs/solid/angle-down.svg | 0 .../svgs/solid/angle-left.svg | 0 .../svgs/solid/angle-right.svg | 0 .../svgs/solid/angle-up.svg | 0 .../svgs/solid/angles-down.svg | 0 .../svgs/solid/angles-left.svg | 0 .../svgs/solid/angles-right.svg | 0 .../svgs/solid/angles-up.svg | 0 .../svgs/solid/ankh.svg | 0 .../svgs/solid/apple-whole.svg | 0 .../svgs/solid/archway.svg | 0 .../svgs/solid/arrow-down-1-9.svg | 0 .../svgs/solid/arrow-down-9-1.svg | 0 .../svgs/solid/arrow-down-a-z.svg | 0 .../svgs/solid/arrow-down-long.svg | 0 .../svgs/solid/arrow-down-short-wide.svg | 0 .../svgs/solid/arrow-down-up-across-line.svg | 0 .../svgs/solid/arrow-down-up-lock.svg | 0 .../svgs/solid/arrow-down-wide-short.svg | 0 .../svgs/solid/arrow-down-z-a.svg | 0 .../svgs/solid/arrow-down.svg | 0 .../svgs/solid/arrow-left-long.svg | 0 .../svgs/solid/arrow-left.svg | 0 .../svgs/solid/arrow-pointer.svg | 0 .../svgs/solid/arrow-right-arrow-left.svg | 0 .../svgs/solid/arrow-right-from-bracket.svg | 0 .../svgs/solid/arrow-right-long.svg | 0 .../svgs/solid/arrow-right-to-bracket.svg | 0 .../svgs/solid/arrow-right-to-city.svg | 0 .../svgs/solid/arrow-right.svg | 0 .../svgs/solid/arrow-rotate-left.svg | 0 .../svgs/solid/arrow-rotate-right.svg | 0 .../svgs/solid/arrow-trend-down.svg | 0 .../svgs/solid/arrow-trend-up.svg | 0 .../svgs/solid/arrow-turn-down.svg | 0 .../svgs/solid/arrow-turn-up.svg | 0 .../svgs/solid/arrow-up-1-9.svg | 0 .../svgs/solid/arrow-up-9-1.svg | 0 .../svgs/solid/arrow-up-a-z.svg | 0 .../svgs/solid/arrow-up-from-bracket.svg | 0 .../svgs/solid/arrow-up-from-ground-water.svg | 0 .../svgs/solid/arrow-up-from-water-pump.svg | 0 .../svgs/solid/arrow-up-long.svg | 0 .../svgs/solid/arrow-up-right-dots.svg | 0 .../svgs/solid/arrow-up-right-from-square.svg | 0 .../svgs/solid/arrow-up-short-wide.svg | 0 .../svgs/solid/arrow-up-wide-short.svg | 0 .../svgs/solid/arrow-up-z-a.svg | 0 .../svgs/solid/arrow-up.svg | 0 .../svgs/solid/arrows-down-to-line.svg | 0 .../svgs/solid/arrows-down-to-people.svg | 0 .../svgs/solid/arrows-left-right-to-line.svg | 0 .../svgs/solid/arrows-left-right.svg | 0 .../svgs/solid/arrows-rotate.svg | 0 .../svgs/solid/arrows-spin.svg | 0 .../svgs/solid/arrows-split-up-and-left.svg | 0 .../svgs/solid/arrows-to-circle.svg | 0 .../svgs/solid/arrows-to-dot.svg | 0 .../svgs/solid/arrows-to-eye.svg | 0 .../svgs/solid/arrows-turn-right.svg | 0 .../svgs/solid/arrows-turn-to-dots.svg | 0 .../svgs/solid/arrows-up-down-left-right.svg | 0 .../svgs/solid/arrows-up-down.svg | 0 .../svgs/solid/arrows-up-to-line.svg | 0 .../svgs/solid/asterisk.svg | 0 .../svgs/solid/at.svg | 0 .../svgs/solid/atom.svg | 0 .../svgs/solid/audio-description.svg | 0 .../svgs/solid/austral-sign.svg | 0 .../svgs/solid/award.svg | 0 .../svgs/solid/b.svg | 0 .../svgs/solid/baby-carriage.svg | 0 .../svgs/solid/baby.svg | 0 .../svgs/solid/backward-fast.svg | 0 .../svgs/solid/backward-step.svg | 0 .../svgs/solid/backward.svg | 0 .../svgs/solid/bacon.svg | 0 .../svgs/solid/bacteria.svg | 0 .../svgs/solid/bacterium.svg | 0 .../svgs/solid/bag-shopping.svg | 0 .../svgs/solid/bahai.svg | 0 .../svgs/solid/baht-sign.svg | 0 .../svgs/solid/ban-smoking.svg | 0 .../svgs/solid/ban.svg | 0 .../svgs/solid/bandage.svg | 0 .../svgs/solid/bangladeshi-taka-sign.svg | 0 .../svgs/solid/barcode.svg | 0 .../svgs/solid/bars-progress.svg | 0 .../svgs/solid/bars-staggered.svg | 0 .../svgs/solid/bars.svg | 0 .../svgs/solid/baseball-bat-ball.svg | 0 .../svgs/solid/baseball.svg | 0 .../svgs/solid/basket-shopping.svg | 0 .../svgs/solid/basketball.svg | 0 .../svgs/solid/bath.svg | 0 .../svgs/solid/battery-empty.svg | 0 .../svgs/solid/battery-full.svg | 0 .../svgs/solid/battery-half.svg | 0 .../svgs/solid/battery-quarter.svg | 0 .../svgs/solid/battery-three-quarters.svg | 0 .../svgs/solid/bed-pulse.svg | 0 .../svgs/solid/bed.svg | 0 .../svgs/solid/beer-mug-empty.svg | 0 .../svgs/solid/bell-concierge.svg | 0 .../svgs/solid/bell-slash.svg | 0 .../svgs/solid/bell.svg | 0 .../svgs/solid/bezier-curve.svg | 0 .../svgs/solid/bicycle.svg | 0 .../svgs/solid/binoculars.svg | 0 .../svgs/solid/biohazard.svg | 0 .../svgs/solid/bitcoin-sign.svg | 0 .../svgs/solid/blender-phone.svg | 0 .../svgs/solid/blender.svg | 0 .../svgs/solid/blog.svg | 0 .../svgs/solid/bold.svg | 0 .../svgs/solid/bolt-lightning.svg | 0 .../svgs/solid/bolt.svg | 0 .../svgs/solid/bomb.svg | 0 .../svgs/solid/bone.svg | 0 .../svgs/solid/bong.svg | 0 .../svgs/solid/book-atlas.svg | 0 .../svgs/solid/book-bible.svg | 0 .../svgs/solid/book-bookmark.svg | 0 .../svgs/solid/book-journal-whills.svg | 0 .../svgs/solid/book-medical.svg | 0 .../svgs/solid/book-open-reader.svg | 0 .../svgs/solid/book-open.svg | 0 .../svgs/solid/book-quran.svg | 0 .../svgs/solid/book-skull.svg | 0 .../svgs/solid/book-tanakh.svg | 0 .../svgs/solid/book.svg | 0 .../svgs/solid/bookmark.svg | 0 .../svgs/solid/border-all.svg | 0 .../svgs/solid/border-none.svg | 0 .../svgs/solid/border-top-left.svg | 0 .../svgs/solid/bore-hole.svg | 0 .../svgs/solid/bottle-droplet.svg | 0 .../svgs/solid/bottle-water.svg | 0 .../svgs/solid/bowl-food.svg | 0 .../svgs/solid/bowl-rice.svg | 0 .../svgs/solid/bowling-ball.svg | 0 .../svgs/solid/box-archive.svg | 0 .../svgs/solid/box-open.svg | 0 .../svgs/solid/box-tissue.svg | 0 .../svgs/solid/box.svg | 0 .../svgs/solid/boxes-packing.svg | 0 .../svgs/solid/boxes-stacked.svg | 0 .../svgs/solid/braille.svg | 0 .../svgs/solid/brain.svg | 0 .../svgs/solid/brazilian-real-sign.svg | 0 .../svgs/solid/bread-slice.svg | 0 .../svgs/solid/bridge-circle-check.svg | 0 .../svgs/solid/bridge-circle-exclamation.svg | 0 .../svgs/solid/bridge-circle-xmark.svg | 0 .../svgs/solid/bridge-lock.svg | 0 .../svgs/solid/bridge-water.svg | 0 .../svgs/solid/bridge.svg | 0 .../svgs/solid/briefcase-medical.svg | 0 .../svgs/solid/briefcase.svg | 0 .../svgs/solid/broom-ball.svg | 0 .../svgs/solid/broom.svg | 0 .../svgs/solid/brush.svg | 0 .../svgs/solid/bucket.svg | 0 .../svgs/solid/bug-slash.svg | 0 .../svgs/solid/bug.svg | 0 .../svgs/solid/bugs.svg | 0 .../solid/building-circle-arrow-right.svg | 0 .../svgs/solid/building-circle-check.svg | 0 .../solid/building-circle-exclamation.svg | 0 .../svgs/solid/building-circle-xmark.svg | 0 .../svgs/solid/building-columns.svg | 0 .../svgs/solid/building-flag.svg | 0 .../svgs/solid/building-lock.svg | 0 .../svgs/solid/building-ngo.svg | 0 .../svgs/solid/building-shield.svg | 0 .../svgs/solid/building-un.svg | 0 .../svgs/solid/building-user.svg | 0 .../svgs/solid/building-wheat.svg | 0 .../svgs/solid/building.svg | 0 .../svgs/solid/bullhorn.svg | 0 .../svgs/solid/bullseye.svg | 0 .../svgs/solid/burger.svg | 0 .../svgs/solid/burst.svg | 0 .../svgs/solid/bus-simple.svg | 0 .../svgs/solid/bus.svg | 0 .../svgs/solid/business-time.svg | 0 .../svgs/solid/c.svg | 0 .../svgs/solid/cable-car.svg | 0 .../svgs/solid/cake-candles.svg | 0 .../svgs/solid/calculator.svg | 0 .../svgs/solid/calendar-check.svg | 0 .../svgs/solid/calendar-day.svg | 0 .../svgs/solid/calendar-days.svg | 0 .../svgs/solid/calendar-minus.svg | 0 .../svgs/solid/calendar-plus.svg | 0 .../svgs/solid/calendar-week.svg | 0 .../svgs/solid/calendar-xmark.svg | 0 .../svgs/solid/calendar.svg | 0 .../svgs/solid/camera-retro.svg | 0 .../svgs/solid/camera-rotate.svg | 0 .../svgs/solid/camera.svg | 0 .../svgs/solid/campground.svg | 0 .../svgs/solid/candy-cane.svg | 0 .../svgs/solid/cannabis.svg | 0 .../svgs/solid/capsules.svg | 0 .../svgs/solid/car-battery.svg | 0 .../svgs/solid/car-burst.svg | 0 .../svgs/solid/car-on.svg | 0 .../svgs/solid/car-rear.svg | 0 .../svgs/solid/car-side.svg | 0 .../svgs/solid/car-tunnel.svg | 0 .../svgs/solid/car.svg | 0 .../svgs/solid/caravan.svg | 0 .../svgs/solid/caret-down.svg | 0 .../svgs/solid/caret-left.svg | 0 .../svgs/solid/caret-right.svg | 0 .../svgs/solid/caret-up.svg | 0 .../svgs/solid/carrot.svg | 0 .../svgs/solid/cart-arrow-down.svg | 0 .../svgs/solid/cart-flatbed-suitcase.svg | 0 .../svgs/solid/cart-flatbed.svg | 0 .../svgs/solid/cart-plus.svg | 0 .../svgs/solid/cart-shopping.svg | 0 .../svgs/solid/cash-register.svg | 0 .../svgs/solid/cat.svg | 0 .../svgs/solid/cedi-sign.svg | 0 .../svgs/solid/cent-sign.svg | 0 .../svgs/solid/certificate.svg | 0 .../svgs/solid/chair.svg | 0 .../svgs/solid/chalkboard-user.svg | 0 .../svgs/solid/chalkboard.svg | 0 .../svgs/solid/champagne-glasses.svg | 0 .../svgs/solid/charging-station.svg | 0 .../svgs/solid/chart-area.svg | 0 .../svgs/solid/chart-bar.svg | 0 .../svgs/solid/chart-column.svg | 0 .../svgs/solid/chart-gantt.svg | 0 .../svgs/solid/chart-line.svg | 0 .../svgs/solid/chart-pie.svg | 0 .../svgs/solid/chart-simple.svg | 0 .../svgs/solid/check-double.svg | 0 .../svgs/solid/check-to-slot.svg | 0 .../svgs/solid/check.svg | 0 .../svgs/solid/cheese.svg | 0 .../svgs/solid/chess-bishop.svg | 0 .../svgs/solid/chess-board.svg | 0 .../svgs/solid/chess-king.svg | 0 .../svgs/solid/chess-knight.svg | 0 .../svgs/solid/chess-pawn.svg | 0 .../svgs/solid/chess-queen.svg | 0 .../svgs/solid/chess-rook.svg | 0 .../svgs/solid/chess.svg | 0 .../svgs/solid/chevron-down.svg | 0 .../svgs/solid/chevron-left.svg | 0 .../svgs/solid/chevron-right.svg | 0 .../svgs/solid/chevron-up.svg | 0 .../svgs/solid/child-combatant.svg | 0 .../svgs/solid/child-dress.svg | 0 .../svgs/solid/child-reaching.svg | 0 .../svgs/solid/child.svg | 0 .../svgs/solid/children.svg | 0 .../svgs/solid/church.svg | 0 .../svgs/solid/circle-arrow-down.svg | 0 .../svgs/solid/circle-arrow-left.svg | 0 .../svgs/solid/circle-arrow-right.svg | 0 .../svgs/solid/circle-arrow-up.svg | 0 .../svgs/solid/circle-check.svg | 0 .../svgs/solid/circle-chevron-down.svg | 0 .../svgs/solid/circle-chevron-left.svg | 0 .../svgs/solid/circle-chevron-right.svg | 0 .../svgs/solid/circle-chevron-up.svg | 0 .../svgs/solid/circle-dollar-to-slot.svg | 0 .../svgs/solid/circle-dot.svg | 0 .../svgs/solid/circle-down.svg | 0 .../svgs/solid/circle-exclamation.svg | 0 .../svgs/solid/circle-h.svg | 0 .../svgs/solid/circle-half-stroke.svg | 0 .../svgs/solid/circle-info.svg | 0 .../svgs/solid/circle-left.svg | 0 .../svgs/solid/circle-minus.svg | 0 .../svgs/solid/circle-nodes.svg | 0 .../svgs/solid/circle-notch.svg | 0 .../svgs/solid/circle-pause.svg | 0 .../svgs/solid/circle-play.svg | 0 .../svgs/solid/circle-plus.svg | 0 .../svgs/solid/circle-question.svg | 0 .../svgs/solid/circle-radiation.svg | 0 .../svgs/solid/circle-right.svg | 0 .../svgs/solid/circle-stop.svg | 0 .../svgs/solid/circle-up.svg | 0 .../svgs/solid/circle-user.svg | 0 .../svgs/solid/circle-xmark.svg | 0 .../svgs/solid/circle.svg | 0 .../svgs/solid/city.svg | 0 .../svgs/solid/clapperboard.svg | 0 .../svgs/solid/clipboard-check.svg | 0 .../svgs/solid/clipboard-list.svg | 0 .../svgs/solid/clipboard-question.svg | 0 .../svgs/solid/clipboard-user.svg | 0 .../svgs/solid/clipboard.svg | 0 .../svgs/solid/clock-rotate-left.svg | 0 .../svgs/solid/clock.svg | 0 .../svgs/solid/clone.svg | 0 .../svgs/solid/closed-captioning.svg | 0 .../svgs/solid/cloud-arrow-down.svg | 0 .../svgs/solid/cloud-arrow-up.svg | 0 .../svgs/solid/cloud-bolt.svg | 0 .../svgs/solid/cloud-meatball.svg | 0 .../svgs/solid/cloud-moon-rain.svg | 0 .../svgs/solid/cloud-moon.svg | 0 .../svgs/solid/cloud-rain.svg | 0 .../svgs/solid/cloud-showers-heavy.svg | 0 .../svgs/solid/cloud-showers-water.svg | 0 .../svgs/solid/cloud-sun-rain.svg | 0 .../svgs/solid/cloud-sun.svg | 0 .../svgs/solid/cloud.svg | 0 .../svgs/solid/clover.svg | 0 .../svgs/solid/code-branch.svg | 0 .../svgs/solid/code-commit.svg | 0 .../svgs/solid/code-compare.svg | 0 .../svgs/solid/code-fork.svg | 0 .../svgs/solid/code-merge.svg | 0 .../svgs/solid/code-pull-request.svg | 0 .../svgs/solid/code.svg | 0 .../svgs/solid/coins.svg | 0 .../svgs/solid/colon-sign.svg | 0 .../svgs/solid/comment-dollar.svg | 0 .../svgs/solid/comment-dots.svg | 0 .../svgs/solid/comment-medical.svg | 0 .../svgs/solid/comment-slash.svg | 0 .../svgs/solid/comment-sms.svg | 0 .../svgs/solid/comment.svg | 0 .../svgs/solid/comments-dollar.svg | 0 .../svgs/solid/comments.svg | 0 .../svgs/solid/compact-disc.svg | 0 .../svgs/solid/compass-drafting.svg | 0 .../svgs/solid/compass.svg | 0 .../svgs/solid/compress.svg | 0 .../svgs/solid/computer-mouse.svg | 0 .../svgs/solid/computer.svg | 0 .../svgs/solid/cookie-bite.svg | 0 .../svgs/solid/cookie.svg | 0 .../svgs/solid/copy.svg | 0 .../svgs/solid/copyright.svg | 0 .../svgs/solid/couch.svg | 0 .../svgs/solid/cow.svg | 0 .../svgs/solid/credit-card.svg | 0 .../svgs/solid/crop-simple.svg | 0 .../svgs/solid/crop.svg | 0 .../svgs/solid/cross.svg | 0 .../svgs/solid/crosshairs.svg | 0 .../svgs/solid/crow.svg | 0 .../svgs/solid/crown.svg | 0 .../svgs/solid/crutch.svg | 0 .../svgs/solid/cruzeiro-sign.svg | 0 .../svgs/solid/cube.svg | 0 .../svgs/solid/cubes-stacked.svg | 0 .../svgs/solid/cubes.svg | 0 .../svgs/solid/d.svg | 0 .../svgs/solid/database.svg | 0 .../svgs/solid/delete-left.svg | 0 .../svgs/solid/democrat.svg | 0 .../svgs/solid/desktop.svg | 0 .../svgs/solid/dharmachakra.svg | 0 .../svgs/solid/diagram-next.svg | 0 .../svgs/solid/diagram-predecessor.svg | 0 .../svgs/solid/diagram-project.svg | 0 .../svgs/solid/diagram-successor.svg | 0 .../svgs/solid/diamond-turn-right.svg | 0 .../svgs/solid/diamond.svg | 0 .../svgs/solid/dice-d20.svg | 0 .../svgs/solid/dice-d6.svg | 0 .../svgs/solid/dice-five.svg | 0 .../svgs/solid/dice-four.svg | 0 .../svgs/solid/dice-one.svg | 0 .../svgs/solid/dice-six.svg | 0 .../svgs/solid/dice-three.svg | 0 .../svgs/solid/dice-two.svg | 0 .../svgs/solid/dice.svg | 0 .../svgs/solid/disease.svg | 0 .../svgs/solid/display.svg | 0 .../svgs/solid/divide.svg | 0 .../svgs/solid/dna.svg | 0 .../svgs/solid/dog.svg | 0 .../svgs/solid/dollar-sign.svg | 0 .../svgs/solid/dolly.svg | 0 .../svgs/solid/dong-sign.svg | 0 .../svgs/solid/door-closed.svg | 0 .../svgs/solid/door-open.svg | 0 .../svgs/solid/dove.svg | 0 .../down-left-and-up-right-to-center.svg | 0 .../svgs/solid/down-long.svg | 0 .../svgs/solid/download.svg | 0 .../svgs/solid/dragon.svg | 0 .../svgs/solid/draw-polygon.svg | 0 .../svgs/solid/droplet-slash.svg | 0 .../svgs/solid/droplet.svg | 0 .../svgs/solid/drum-steelpan.svg | 0 .../svgs/solid/drum.svg | 0 .../svgs/solid/drumstick-bite.svg | 0 .../svgs/solid/dumbbell.svg | 0 .../svgs/solid/dumpster-fire.svg | 0 .../svgs/solid/dumpster.svg | 0 .../svgs/solid/dungeon.svg | 0 .../svgs/solid/e.svg | 0 .../svgs/solid/ear-deaf.svg | 0 .../svgs/solid/ear-listen.svg | 0 .../svgs/solid/earth-africa.svg | 0 .../svgs/solid/earth-americas.svg | 0 .../svgs/solid/earth-asia.svg | 0 .../svgs/solid/earth-europe.svg | 0 .../svgs/solid/earth-oceania.svg | 0 .../svgs/solid/egg.svg | 0 .../svgs/solid/eject.svg | 0 .../svgs/solid/elevator.svg | 0 .../svgs/solid/ellipsis-vertical.svg | 0 .../svgs/solid/ellipsis.svg | 0 .../svgs/solid/envelope-circle-check.svg | 0 .../svgs/solid/envelope-open-text.svg | 0 .../svgs/solid/envelope-open.svg | 0 .../svgs/solid/envelope.svg | 0 .../svgs/solid/envelopes-bulk.svg | 0 .../svgs/solid/equals.svg | 0 .../svgs/solid/eraser.svg | 0 .../svgs/solid/ethernet.svg | 0 .../svgs/solid/euro-sign.svg | 0 .../svgs/solid/exclamation.svg | 0 .../svgs/solid/expand.svg | 0 .../svgs/solid/explosion.svg | 0 .../svgs/solid/eye-dropper.svg | 0 .../svgs/solid/eye-low-vision.svg | 0 .../svgs/solid/eye-slash.svg | 0 .../svgs/solid/eye.svg | 0 .../svgs/solid/f.svg | 0 .../svgs/solid/face-angry.svg | 0 .../svgs/solid/face-dizzy.svg | 0 .../svgs/solid/face-flushed.svg | 0 .../svgs/solid/face-frown-open.svg | 0 .../svgs/solid/face-frown.svg | 0 .../svgs/solid/face-grimace.svg | 0 .../svgs/solid/face-grin-beam-sweat.svg | 0 .../svgs/solid/face-grin-beam.svg | 0 .../svgs/solid/face-grin-hearts.svg | 0 .../svgs/solid/face-grin-squint-tears.svg | 0 .../svgs/solid/face-grin-squint.svg | 0 .../svgs/solid/face-grin-stars.svg | 0 .../svgs/solid/face-grin-tears.svg | 0 .../svgs/solid/face-grin-tongue-squint.svg | 0 .../svgs/solid/face-grin-tongue-wink.svg | 0 .../svgs/solid/face-grin-tongue.svg | 0 .../svgs/solid/face-grin-wide.svg | 0 .../svgs/solid/face-grin-wink.svg | 0 .../svgs/solid/face-grin.svg | 0 .../svgs/solid/face-kiss-beam.svg | 0 .../svgs/solid/face-kiss-wink-heart.svg | 0 .../svgs/solid/face-kiss.svg | 0 .../svgs/solid/face-laugh-beam.svg | 0 .../svgs/solid/face-laugh-squint.svg | 0 .../svgs/solid/face-laugh-wink.svg | 0 .../svgs/solid/face-laugh.svg | 0 .../svgs/solid/face-meh-blank.svg | 0 .../svgs/solid/face-meh.svg | 0 .../svgs/solid/face-rolling-eyes.svg | 0 .../svgs/solid/face-sad-cry.svg | 0 .../svgs/solid/face-sad-tear.svg | 0 .../svgs/solid/face-smile-beam.svg | 0 .../svgs/solid/face-smile-wink.svg | 0 .../svgs/solid/face-smile.svg | 0 .../svgs/solid/face-surprise.svg | 0 .../svgs/solid/face-tired.svg | 0 .../svgs/solid/fan.svg | 0 .../svgs/solid/faucet-drip.svg | 0 .../svgs/solid/faucet.svg | 0 .../svgs/solid/fax.svg | 0 .../svgs/solid/feather-pointed.svg | 0 .../svgs/solid/feather.svg | 0 .../svgs/solid/ferry.svg | 0 .../svgs/solid/file-arrow-down.svg | 0 .../svgs/solid/file-arrow-up.svg | 0 .../svgs/solid/file-audio.svg | 0 .../svgs/solid/file-circle-check.svg | 0 .../svgs/solid/file-circle-exclamation.svg | 0 .../svgs/solid/file-circle-minus.svg | 0 .../svgs/solid/file-circle-plus.svg | 0 .../svgs/solid/file-circle-question.svg | 0 .../svgs/solid/file-circle-xmark.svg | 0 .../svgs/solid/file-code.svg | 0 .../svgs/solid/file-contract.svg | 0 .../svgs/solid/file-csv.svg | 0 .../svgs/solid/file-excel.svg | 0 .../svgs/solid/file-export.svg | 0 .../svgs/solid/file-image.svg | 0 .../svgs/solid/file-import.svg | 0 .../svgs/solid/file-invoice-dollar.svg | 0 .../svgs/solid/file-invoice.svg | 0 .../svgs/solid/file-lines.svg | 0 .../svgs/solid/file-medical.svg | 0 .../svgs/solid/file-pdf.svg | 0 .../svgs/solid/file-pen.svg | 0 .../svgs/solid/file-powerpoint.svg | 0 .../svgs/solid/file-prescription.svg | 0 .../svgs/solid/file-shield.svg | 0 .../svgs/solid/file-signature.svg | 0 .../svgs/solid/file-video.svg | 0 .../svgs/solid/file-waveform.svg | 0 .../svgs/solid/file-word.svg | 0 .../svgs/solid/file-zipper.svg | 0 .../svgs/solid/file.svg | 0 .../svgs/solid/fill-drip.svg | 0 .../svgs/solid/fill.svg | 0 .../svgs/solid/film.svg | 0 .../svgs/solid/filter-circle-dollar.svg | 0 .../svgs/solid/filter-circle-xmark.svg | 0 .../svgs/solid/filter.svg | 0 .../svgs/solid/fingerprint.svg | 0 .../svgs/solid/fire-burner.svg | 0 .../svgs/solid/fire-extinguisher.svg | 0 .../svgs/solid/fire-flame-curved.svg | 0 .../svgs/solid/fire-flame-simple.svg | 0 .../svgs/solid/fire.svg | 0 .../svgs/solid/fish-fins.svg | 0 .../svgs/solid/fish.svg | 0 .../svgs/solid/flag-checkered.svg | 0 .../svgs/solid/flag-usa.svg | 0 .../svgs/solid/flag.svg | 0 .../svgs/solid/flask-vial.svg | 0 .../svgs/solid/flask.svg | 0 .../svgs/solid/floppy-disk.svg | 0 .../svgs/solid/florin-sign.svg | 0 .../svgs/solid/folder-closed.svg | 0 .../svgs/solid/folder-minus.svg | 0 .../svgs/solid/folder-open.svg | 0 .../svgs/solid/folder-plus.svg | 0 .../svgs/solid/folder-tree.svg | 0 .../svgs/solid/folder.svg | 0 .../svgs/solid/font-awesome.svg | 0 .../svgs/solid/font.svg | 0 .../svgs/solid/football.svg | 0 .../svgs/solid/forward-fast.svg | 0 .../svgs/solid/forward-step.svg | 0 .../svgs/solid/forward.svg | 0 .../svgs/solid/franc-sign.svg | 0 .../svgs/solid/frog.svg | 0 .../svgs/solid/futbol.svg | 0 .../svgs/solid/g.svg | 0 .../svgs/solid/gamepad.svg | 0 .../svgs/solid/gas-pump.svg | 0 .../svgs/solid/gauge-high.svg | 0 .../svgs/solid/gauge-simple-high.svg | 0 .../svgs/solid/gauge-simple.svg | 0 .../svgs/solid/gauge.svg | 0 .../svgs/solid/gavel.svg | 0 .../svgs/solid/gear.svg | 0 .../svgs/solid/gears.svg | 0 .../svgs/solid/gem.svg | 0 .../svgs/solid/genderless.svg | 0 .../svgs/solid/ghost.svg | 0 .../svgs/solid/gift.svg | 0 .../svgs/solid/gifts.svg | 0 .../svgs/solid/glass-water-droplet.svg | 0 .../svgs/solid/glass-water.svg | 0 .../svgs/solid/glasses.svg | 0 .../svgs/solid/globe.svg | 0 .../svgs/solid/golf-ball-tee.svg | 0 .../svgs/solid/gopuram.svg | 0 .../svgs/solid/graduation-cap.svg | 0 .../svgs/solid/greater-than-equal.svg | 0 .../svgs/solid/greater-than.svg | 0 .../svgs/solid/grip-lines-vertical.svg | 0 .../svgs/solid/grip-lines.svg | 0 .../svgs/solid/grip-vertical.svg | 0 .../svgs/solid/grip.svg | 0 .../svgs/solid/group-arrows-rotate.svg | 0 .../svgs/solid/guarani-sign.svg | 0 .../svgs/solid/guitar.svg | 0 .../svgs/solid/gun.svg | 0 .../svgs/solid/h.svg | 0 .../svgs/solid/hammer.svg | 0 .../svgs/solid/hamsa.svg | 0 .../svgs/solid/hand-back-fist.svg | 0 .../svgs/solid/hand-dots.svg | 0 .../svgs/solid/hand-fist.svg | 0 .../svgs/solid/hand-holding-dollar.svg | 0 .../svgs/solid/hand-holding-droplet.svg | 0 .../svgs/solid/hand-holding-hand.svg | 0 .../svgs/solid/hand-holding-heart.svg | 0 .../svgs/solid/hand-holding-medical.svg | 0 .../svgs/solid/hand-holding.svg | 0 .../svgs/solid/hand-lizard.svg | 0 .../svgs/solid/hand-middle-finger.svg | 0 .../svgs/solid/hand-peace.svg | 0 .../svgs/solid/hand-point-down.svg | 0 .../svgs/solid/hand-point-left.svg | 0 .../svgs/solid/hand-point-right.svg | 0 .../svgs/solid/hand-point-up.svg | 0 .../svgs/solid/hand-pointer.svg | 0 .../svgs/solid/hand-scissors.svg | 0 .../svgs/solid/hand-sparkles.svg | 0 .../svgs/solid/hand-spock.svg | 0 .../svgs/solid/hand.svg | 0 .../svgs/solid/handcuffs.svg | 0 .../svgs/solid/hands-asl-interpreting.svg | 0 .../svgs/solid/hands-bound.svg | 0 .../svgs/solid/hands-bubbles.svg | 0 .../svgs/solid/hands-clapping.svg | 0 .../svgs/solid/hands-holding-child.svg | 0 .../svgs/solid/hands-holding-circle.svg | 0 .../svgs/solid/hands-holding.svg | 0 .../svgs/solid/hands-praying.svg | 0 .../svgs/solid/hands.svg | 0 .../svgs/solid/handshake-angle.svg | 0 .../svgs/solid/handshake-simple-slash.svg | 0 .../svgs/solid/handshake-simple.svg | 0 .../svgs/solid/handshake-slash.svg | 0 .../svgs/solid/handshake.svg | 0 .../svgs/solid/hanukiah.svg | 0 .../svgs/solid/hard-drive.svg | 0 .../svgs/solid/hashtag.svg | 0 .../svgs/solid/hat-cowboy-side.svg | 0 .../svgs/solid/hat-cowboy.svg | 0 .../svgs/solid/hat-wizard.svg | 0 .../svgs/solid/head-side-cough-slash.svg | 0 .../svgs/solid/head-side-cough.svg | 0 .../svgs/solid/head-side-mask.svg | 0 .../svgs/solid/head-side-virus.svg | 0 .../svgs/solid/heading.svg | 0 .../svgs/solid/headphones-simple.svg | 0 .../svgs/solid/headphones.svg | 0 .../svgs/solid/headset.svg | 0 .../svgs/solid/heart-circle-bolt.svg | 0 .../svgs/solid/heart-circle-check.svg | 0 .../svgs/solid/heart-circle-exclamation.svg | 0 .../svgs/solid/heart-circle-minus.svg | 0 .../svgs/solid/heart-circle-plus.svg | 0 .../svgs/solid/heart-circle-xmark.svg | 0 .../svgs/solid/heart-crack.svg | 0 .../svgs/solid/heart-pulse.svg | 0 .../svgs/solid/heart.svg | 0 .../svgs/solid/helicopter-symbol.svg | 0 .../svgs/solid/helicopter.svg | 0 .../svgs/solid/helmet-safety.svg | 0 .../svgs/solid/helmet-un.svg | 0 .../svgs/solid/highlighter.svg | 0 .../svgs/solid/hill-avalanche.svg | 0 .../svgs/solid/hill-rockslide.svg | 0 .../svgs/solid/hippo.svg | 0 .../svgs/solid/hockey-puck.svg | 0 .../svgs/solid/holly-berry.svg | 0 .../svgs/solid/horse-head.svg | 0 .../svgs/solid/horse.svg | 0 .../svgs/solid/hospital-user.svg | 0 .../svgs/solid/hospital.svg | 0 .../svgs/solid/hot-tub-person.svg | 0 .../svgs/solid/hotdog.svg | 0 .../svgs/solid/hotel.svg | 0 .../svgs/solid/hourglass-end.svg | 0 .../svgs/solid/hourglass-half.svg | 0 .../svgs/solid/hourglass-start.svg | 0 .../svgs/solid/hourglass.svg | 0 .../svgs/solid/house-chimney-crack.svg | 0 .../svgs/solid/house-chimney-medical.svg | 0 .../svgs/solid/house-chimney-user.svg | 0 .../svgs/solid/house-chimney-window.svg | 0 .../svgs/solid/house-chimney.svg | 0 .../svgs/solid/house-circle-check.svg | 0 .../svgs/solid/house-circle-exclamation.svg | 0 .../svgs/solid/house-circle-xmark.svg | 0 .../svgs/solid/house-crack.svg | 0 .../svgs/solid/house-fire.svg | 0 .../svgs/solid/house-flag.svg | 0 .../house-flood-water-circle-arrow-right.svg | 0 .../svgs/solid/house-flood-water.svg | 0 .../svgs/solid/house-laptop.svg | 0 .../svgs/solid/house-lock.svg | 0 .../svgs/solid/house-medical-circle-check.svg | 0 .../house-medical-circle-exclamation.svg | 0 .../svgs/solid/house-medical-circle-xmark.svg | 0 .../svgs/solid/house-medical-flag.svg | 0 .../svgs/solid/house-medical.svg | 0 .../svgs/solid/house-signal.svg | 0 .../svgs/solid/house-tsunami.svg | 0 .../svgs/solid/house-user.svg | 0 .../svgs/solid/house.svg | 0 .../svgs/solid/hryvnia-sign.svg | 0 .../svgs/solid/hurricane.svg | 0 .../svgs/solid/i-cursor.svg | 0 .../svgs/solid/i.svg | 0 .../svgs/solid/ice-cream.svg | 0 .../svgs/solid/icicles.svg | 0 .../svgs/solid/icons.svg | 0 .../svgs/solid/id-badge.svg | 0 .../svgs/solid/id-card-clip.svg | 0 .../svgs/solid/id-card.svg | 0 .../svgs/solid/igloo.svg | 0 .../svgs/solid/image-portrait.svg | 0 .../svgs/solid/image.svg | 0 .../svgs/solid/images.svg | 0 .../svgs/solid/inbox.svg | 0 .../svgs/solid/indent.svg | 0 .../svgs/solid/indian-rupee-sign.svg | 0 .../svgs/solid/industry.svg | 0 .../svgs/solid/infinity.svg | 0 .../svgs/solid/info.svg | 0 .../svgs/solid/italic.svg | 0 .../svgs/solid/j.svg | 0 .../svgs/solid/jar-wheat.svg | 0 .../svgs/solid/jar.svg | 0 .../svgs/solid/jedi.svg | 0 .../svgs/solid/jet-fighter-up.svg | 0 .../svgs/solid/jet-fighter.svg | 0 .../svgs/solid/joint.svg | 0 .../svgs/solid/jug-detergent.svg | 0 .../svgs/solid/k.svg | 0 .../svgs/solid/kaaba.svg | 0 .../svgs/solid/key.svg | 0 .../svgs/solid/keyboard.svg | 0 .../svgs/solid/khanda.svg | 0 .../svgs/solid/kip-sign.svg | 0 .../svgs/solid/kit-medical.svg | 0 .../svgs/solid/kitchen-set.svg | 0 .../svgs/solid/kiwi-bird.svg | 0 .../svgs/solid/l.svg | 0 .../svgs/solid/land-mine-on.svg | 0 .../svgs/solid/landmark-dome.svg | 0 .../svgs/solid/landmark-flag.svg | 0 .../svgs/solid/landmark.svg | 0 .../svgs/solid/language.svg | 0 .../svgs/solid/laptop-code.svg | 0 .../svgs/solid/laptop-file.svg | 0 .../svgs/solid/laptop-medical.svg | 0 .../svgs/solid/laptop.svg | 0 .../svgs/solid/lari-sign.svg | 0 .../svgs/solid/layer-group.svg | 0 .../svgs/solid/leaf.svg | 0 .../svgs/solid/left-long.svg | 0 .../svgs/solid/left-right.svg | 0 .../svgs/solid/lemon.svg | 0 .../svgs/solid/less-than-equal.svg | 0 .../svgs/solid/less-than.svg | 0 .../svgs/solid/life-ring.svg | 0 .../svgs/solid/lightbulb.svg | 0 .../svgs/solid/lines-leaning.svg | 0 .../svgs/solid/link-slash.svg | 0 .../svgs/solid/link.svg | 0 .../svgs/solid/lira-sign.svg | 0 .../svgs/solid/list-check.svg | 0 .../svgs/solid/list-ol.svg | 0 .../svgs/solid/list-ul.svg | 0 .../svgs/solid/list.svg | 0 .../svgs/solid/litecoin-sign.svg | 0 .../svgs/solid/location-arrow.svg | 0 .../svgs/solid/location-crosshairs.svg | 0 .../svgs/solid/location-dot.svg | 0 .../svgs/solid/location-pin-lock.svg | 0 .../svgs/solid/location-pin.svg | 0 .../svgs/solid/lock-open.svg | 0 .../svgs/solid/lock.svg | 0 .../svgs/solid/locust.svg | 0 .../svgs/solid/lungs-virus.svg | 0 .../svgs/solid/lungs.svg | 0 .../svgs/solid/m.svg | 0 .../svgs/solid/magnet.svg | 0 .../solid/magnifying-glass-arrow-right.svg | 0 .../svgs/solid/magnifying-glass-chart.svg | 0 .../svgs/solid/magnifying-glass-dollar.svg | 0 .../svgs/solid/magnifying-glass-location.svg | 0 .../svgs/solid/magnifying-glass-minus.svg | 0 .../svgs/solid/magnifying-glass-plus.svg | 0 .../svgs/solid/magnifying-glass.svg | 0 .../svgs/solid/manat-sign.svg | 0 .../svgs/solid/map-location-dot.svg | 0 .../svgs/solid/map-location.svg | 0 .../svgs/solid/map-pin.svg | 0 .../svgs/solid/map.svg | 0 .../svgs/solid/marker.svg | 0 .../svgs/solid/mars-and-venus-burst.svg | 0 .../svgs/solid/mars-and-venus.svg | 0 .../svgs/solid/mars-double.svg | 0 .../svgs/solid/mars-stroke-right.svg | 0 .../svgs/solid/mars-stroke-up.svg | 0 .../svgs/solid/mars-stroke.svg | 0 .../svgs/solid/mars.svg | 0 .../svgs/solid/martini-glass-citrus.svg | 0 .../svgs/solid/martini-glass-empty.svg | 0 .../svgs/solid/martini-glass.svg | 0 .../svgs/solid/mask-face.svg | 0 .../svgs/solid/mask-ventilator.svg | 0 .../svgs/solid/mask.svg | 0 .../svgs/solid/masks-theater.svg | 0 .../svgs/solid/mattress-pillow.svg | 0 .../svgs/solid/maximize.svg | 0 .../svgs/solid/medal.svg | 0 .../svgs/solid/memory.svg | 0 .../svgs/solid/menorah.svg | 0 .../svgs/solid/mercury.svg | 0 .../svgs/solid/message.svg | 0 .../svgs/solid/meteor.svg | 0 .../svgs/solid/microchip.svg | 0 .../svgs/solid/microphone-lines-slash.svg | 0 .../svgs/solid/microphone-lines.svg | 0 .../svgs/solid/microphone-slash.svg | 0 .../svgs/solid/microphone.svg | 0 .../svgs/solid/microscope.svg | 0 .../svgs/solid/mill-sign.svg | 0 .../svgs/solid/minimize.svg | 0 .../svgs/solid/minus.svg | 0 .../svgs/solid/mitten.svg | 0 .../svgs/solid/mobile-button.svg | 0 .../svgs/solid/mobile-retro.svg | 0 .../svgs/solid/mobile-screen-button.svg | 0 .../svgs/solid/mobile-screen.svg | 0 .../svgs/solid/mobile.svg | 0 .../svgs/solid/money-bill-1-wave.svg | 0 .../svgs/solid/money-bill-1.svg | 0 .../svgs/solid/money-bill-transfer.svg | 0 .../svgs/solid/money-bill-trend-up.svg | 0 .../svgs/solid/money-bill-wave.svg | 0 .../svgs/solid/money-bill-wheat.svg | 0 .../svgs/solid/money-bill.svg | 0 .../svgs/solid/money-bills.svg | 0 .../svgs/solid/money-check-dollar.svg | 0 .../svgs/solid/money-check.svg | 0 .../svgs/solid/monument.svg | 0 .../svgs/solid/moon.svg | 0 .../svgs/solid/mortar-pestle.svg | 0 .../svgs/solid/mosque.svg | 0 .../svgs/solid/mosquito-net.svg | 0 .../svgs/solid/mosquito.svg | 0 .../svgs/solid/motorcycle.svg | 0 .../svgs/solid/mound.svg | 0 .../svgs/solid/mountain-city.svg | 0 .../svgs/solid/mountain-sun.svg | 0 .../svgs/solid/mountain.svg | 0 .../svgs/solid/mug-hot.svg | 0 .../svgs/solid/mug-saucer.svg | 0 .../svgs/solid/music.svg | 0 .../svgs/solid/n.svg | 0 .../svgs/solid/naira-sign.svg | 0 .../svgs/solid/network-wired.svg | 0 .../svgs/solid/neuter.svg | 0 .../svgs/solid/newspaper.svg | 0 .../svgs/solid/not-equal.svg | 0 .../svgs/solid/notdef.svg | 0 .../svgs/solid/note-sticky.svg | 0 .../svgs/solid/notes-medical.svg | 0 .../svgs/solid/o.svg | 0 .../svgs/solid/object-group.svg | 0 .../svgs/solid/object-ungroup.svg | 0 .../svgs/solid/oil-can.svg | 0 .../svgs/solid/oil-well.svg | 0 .../svgs/solid/om.svg | 0 .../svgs/solid/otter.svg | 0 .../svgs/solid/outdent.svg | 0 .../svgs/solid/p.svg | 0 .../svgs/solid/pager.svg | 0 .../svgs/solid/paint-roller.svg | 0 .../svgs/solid/paintbrush.svg | 0 .../svgs/solid/palette.svg | 0 .../svgs/solid/pallet.svg | 0 .../svgs/solid/panorama.svg | 0 .../svgs/solid/paper-plane.svg | 0 .../svgs/solid/paperclip.svg | 0 .../svgs/solid/parachute-box.svg | 0 .../svgs/solid/paragraph.svg | 0 .../svgs/solid/passport.svg | 0 .../svgs/solid/paste.svg | 0 .../svgs/solid/pause.svg | 0 .../svgs/solid/paw.svg | 0 .../svgs/solid/peace.svg | 0 .../svgs/solid/pen-clip.svg | 0 .../svgs/solid/pen-fancy.svg | 0 .../svgs/solid/pen-nib.svg | 0 .../svgs/solid/pen-ruler.svg | 0 .../svgs/solid/pen-to-square.svg | 0 .../svgs/solid/pen.svg | 0 .../svgs/solid/pencil.svg | 0 .../svgs/solid/people-arrows.svg | 0 .../svgs/solid/people-carry-box.svg | 0 .../svgs/solid/people-group.svg | 0 .../svgs/solid/people-line.svg | 0 .../svgs/solid/people-pulling.svg | 0 .../svgs/solid/people-robbery.svg | 0 .../svgs/solid/people-roof.svg | 0 .../svgs/solid/pepper-hot.svg | 0 .../svgs/solid/percent.svg | 0 .../svgs/solid/person-arrow-down-to-line.svg | 0 .../svgs/solid/person-arrow-up-from-line.svg | 0 .../svgs/solid/person-biking.svg | 0 .../svgs/solid/person-booth.svg | 0 .../svgs/solid/person-breastfeeding.svg | 0 .../svgs/solid/person-burst.svg | 0 .../svgs/solid/person-cane.svg | 0 .../svgs/solid/person-chalkboard.svg | 0 .../svgs/solid/person-circle-check.svg | 0 .../svgs/solid/person-circle-exclamation.svg | 0 .../svgs/solid/person-circle-minus.svg | 0 .../svgs/solid/person-circle-plus.svg | 0 .../svgs/solid/person-circle-question.svg | 0 .../svgs/solid/person-circle-xmark.svg | 0 .../svgs/solid/person-digging.svg | 0 .../svgs/solid/person-dots-from-line.svg | 0 .../svgs/solid/person-dress-burst.svg | 0 .../svgs/solid/person-dress.svg | 0 .../svgs/solid/person-drowning.svg | 0 .../svgs/solid/person-falling-burst.svg | 0 .../svgs/solid/person-falling.svg | 0 .../svgs/solid/person-half-dress.svg | 0 .../svgs/solid/person-harassing.svg | 0 .../svgs/solid/person-hiking.svg | 0 .../svgs/solid/person-military-pointing.svg | 0 .../svgs/solid/person-military-rifle.svg | 0 .../svgs/solid/person-military-to-person.svg | 0 .../svgs/solid/person-praying.svg | 0 .../svgs/solid/person-pregnant.svg | 0 .../svgs/solid/person-rays.svg | 0 .../svgs/solid/person-rifle.svg | 0 .../svgs/solid/person-running.svg | 0 .../svgs/solid/person-shelter.svg | 0 .../svgs/solid/person-skating.svg | 0 .../svgs/solid/person-skiing-nordic.svg | 0 .../svgs/solid/person-skiing.svg | 0 .../svgs/solid/person-snowboarding.svg | 0 .../svgs/solid/person-swimming.svg | 0 .../svgs/solid/person-through-window.svg | 0 .../solid/person-walking-arrow-loop-left.svg | 0 .../svgs/solid/person-walking-arrow-right.svg | 0 ...person-walking-dashed-line-arrow-right.svg | 0 .../svgs/solid/person-walking-luggage.svg | 0 .../svgs/solid/person-walking-with-cane.svg | 0 .../svgs/solid/person-walking.svg | 0 .../svgs/solid/person.svg | 0 .../svgs/solid/peseta-sign.svg | 0 .../svgs/solid/peso-sign.svg | 0 .../svgs/solid/phone-flip.svg | 0 .../svgs/solid/phone-slash.svg | 0 .../svgs/solid/phone-volume.svg | 0 .../svgs/solid/phone.svg | 0 .../svgs/solid/photo-film.svg | 0 .../svgs/solid/piggy-bank.svg | 0 .../svgs/solid/pills.svg | 0 .../svgs/solid/pizza-slice.svg | 0 .../svgs/solid/place-of-worship.svg | 0 .../svgs/solid/plane-arrival.svg | 0 .../svgs/solid/plane-circle-check.svg | 0 .../svgs/solid/plane-circle-exclamation.svg | 0 .../svgs/solid/plane-circle-xmark.svg | 0 .../svgs/solid/plane-departure.svg | 0 .../svgs/solid/plane-lock.svg | 0 .../svgs/solid/plane-slash.svg | 0 .../svgs/solid/plane-up.svg | 0 .../svgs/solid/plane.svg | 0 .../svgs/solid/plant-wilt.svg | 0 .../svgs/solid/plate-wheat.svg | 0 .../svgs/solid/play.svg | 0 .../svgs/solid/plug-circle-bolt.svg | 0 .../svgs/solid/plug-circle-check.svg | 0 .../svgs/solid/plug-circle-exclamation.svg | 0 .../svgs/solid/plug-circle-minus.svg | 0 .../svgs/solid/plug-circle-plus.svg | 0 .../svgs/solid/plug-circle-xmark.svg | 0 .../svgs/solid/plug.svg | 0 .../svgs/solid/plus-minus.svg | 0 .../svgs/solid/plus.svg | 0 .../svgs/solid/podcast.svg | 0 .../svgs/solid/poo-storm.svg | 0 .../svgs/solid/poo.svg | 0 .../svgs/solid/poop.svg | 0 .../svgs/solid/power-off.svg | 0 .../solid/prescription-bottle-medical.svg | 0 .../svgs/solid/prescription-bottle.svg | 0 .../svgs/solid/prescription.svg | 0 .../svgs/solid/print.svg | 0 .../svgs/solid/pump-medical.svg | 0 .../svgs/solid/pump-soap.svg | 0 .../svgs/solid/puzzle-piece.svg | 0 .../svgs/solid/q.svg | 0 .../svgs/solid/qrcode.svg | 0 .../svgs/solid/question.svg | 0 .../svgs/solid/quote-left.svg | 0 .../svgs/solid/quote-right.svg | 0 .../svgs/solid/r.svg | 0 .../svgs/solid/radiation.svg | 0 .../svgs/solid/radio.svg | 0 .../svgs/solid/rainbow.svg | 0 .../svgs/solid/ranking-star.svg | 0 .../svgs/solid/receipt.svg | 0 .../svgs/solid/record-vinyl.svg | 0 .../svgs/solid/rectangle-ad.svg | 0 .../svgs/solid/rectangle-list.svg | 0 .../svgs/solid/rectangle-xmark.svg | 0 .../svgs/solid/recycle.svg | 0 .../svgs/solid/registered.svg | 0 .../svgs/solid/repeat.svg | 0 .../svgs/solid/reply-all.svg | 0 .../svgs/solid/reply.svg | 0 .../svgs/solid/republican.svg | 0 .../svgs/solid/restroom.svg | 0 .../svgs/solid/retweet.svg | 0 .../svgs/solid/ribbon.svg | 0 .../svgs/solid/right-from-bracket.svg | 0 .../svgs/solid/right-left.svg | 0 .../svgs/solid/right-long.svg | 0 .../svgs/solid/right-to-bracket.svg | 0 .../svgs/solid/ring.svg | 0 .../svgs/solid/road-barrier.svg | 0 .../svgs/solid/road-bridge.svg | 0 .../svgs/solid/road-circle-check.svg | 0 .../svgs/solid/road-circle-exclamation.svg | 0 .../svgs/solid/road-circle-xmark.svg | 0 .../svgs/solid/road-lock.svg | 0 .../svgs/solid/road-spikes.svg | 0 .../svgs/solid/road.svg | 0 .../svgs/solid/robot.svg | 0 .../svgs/solid/rocket.svg | 0 .../svgs/solid/rotate-left.svg | 0 .../svgs/solid/rotate-right.svg | 0 .../svgs/solid/rotate.svg | 0 .../svgs/solid/route.svg | 0 .../svgs/solid/rss.svg | 0 .../svgs/solid/ruble-sign.svg | 0 .../svgs/solid/rug.svg | 0 .../svgs/solid/ruler-combined.svg | 0 .../svgs/solid/ruler-horizontal.svg | 0 .../svgs/solid/ruler-vertical.svg | 0 .../svgs/solid/ruler.svg | 0 .../svgs/solid/rupee-sign.svg | 0 .../svgs/solid/rupiah-sign.svg | 0 .../svgs/solid/s.svg | 0 .../svgs/solid/sack-dollar.svg | 0 .../svgs/solid/sack-xmark.svg | 0 .../svgs/solid/sailboat.svg | 0 .../svgs/solid/satellite-dish.svg | 0 .../svgs/solid/satellite.svg | 0 .../svgs/solid/scale-balanced.svg | 0 .../svgs/solid/scale-unbalanced-flip.svg | 0 .../svgs/solid/scale-unbalanced.svg | 0 .../svgs/solid/school-circle-check.svg | 0 .../svgs/solid/school-circle-exclamation.svg | 0 .../svgs/solid/school-circle-xmark.svg | 0 .../svgs/solid/school-flag.svg | 0 .../svgs/solid/school-lock.svg | 0 .../svgs/solid/school.svg | 0 .../svgs/solid/scissors.svg | 0 .../svgs/solid/screwdriver-wrench.svg | 0 .../svgs/solid/screwdriver.svg | 0 .../svgs/solid/scroll-torah.svg | 0 .../svgs/solid/scroll.svg | 0 .../svgs/solid/sd-card.svg | 0 .../svgs/solid/section.svg | 0 .../svgs/solid/seedling.svg | 0 .../svgs/solid/server.svg | 0 .../svgs/solid/shapes.svg | 0 .../svgs/solid/share-from-square.svg | 0 .../svgs/solid/share-nodes.svg | 0 .../svgs/solid/share.svg | 0 .../svgs/solid/sheet-plastic.svg | 0 .../svgs/solid/shekel-sign.svg | 0 .../svgs/solid/shield-cat.svg | 0 .../svgs/solid/shield-dog.svg | 0 .../svgs/solid/shield-halved.svg | 0 .../svgs/solid/shield-heart.svg | 0 .../svgs/solid/shield-virus.svg | 0 .../svgs/solid/shield.svg | 0 .../svgs/solid/ship.svg | 0 .../svgs/solid/shirt.svg | 0 .../svgs/solid/shoe-prints.svg | 0 .../svgs/solid/shop-lock.svg | 0 .../svgs/solid/shop-slash.svg | 0 .../svgs/solid/shop.svg | 0 .../svgs/solid/shower.svg | 0 .../svgs/solid/shrimp.svg | 0 .../svgs/solid/shuffle.svg | 0 .../svgs/solid/shuttle-space.svg | 0 .../svgs/solid/sign-hanging.svg | 0 .../svgs/solid/signal.svg | 0 .../svgs/solid/signature.svg | 0 .../svgs/solid/signs-post.svg | 0 .../svgs/solid/sim-card.svg | 0 .../svgs/solid/sink.svg | 0 .../svgs/solid/sitemap.svg | 0 .../svgs/solid/skull-crossbones.svg | 0 .../svgs/solid/skull.svg | 0 .../svgs/solid/slash.svg | 0 .../svgs/solid/sleigh.svg | 0 .../svgs/solid/sliders.svg | 0 .../svgs/solid/smog.svg | 0 .../svgs/solid/smoking.svg | 0 .../svgs/solid/snowflake.svg | 0 .../svgs/solid/snowman.svg | 0 .../svgs/solid/snowplow.svg | 0 .../svgs/solid/soap.svg | 0 .../svgs/solid/socks.svg | 0 .../svgs/solid/solar-panel.svg | 0 .../svgs/solid/sort-down.svg | 0 .../svgs/solid/sort-up.svg | 0 .../svgs/solid/sort.svg | 0 .../svgs/solid/spa.svg | 0 .../svgs/solid/spaghetti-monster-flying.svg | 0 .../svgs/solid/spell-check.svg | 0 .../svgs/solid/spider.svg | 0 .../svgs/solid/spinner.svg | 0 .../svgs/solid/splotch.svg | 0 .../svgs/solid/spoon.svg | 0 .../svgs/solid/spray-can-sparkles.svg | 0 .../svgs/solid/spray-can.svg | 0 .../svgs/solid/square-arrow-up-right.svg | 0 .../svgs/solid/square-caret-down.svg | 0 .../svgs/solid/square-caret-left.svg | 0 .../svgs/solid/square-caret-right.svg | 0 .../svgs/solid/square-caret-up.svg | 0 .../svgs/solid/square-check.svg | 0 .../svgs/solid/square-envelope.svg | 0 .../svgs/solid/square-full.svg | 0 .../svgs/solid/square-h.svg | 0 .../svgs/solid/square-minus.svg | 0 .../svgs/solid/square-nfi.svg | 0 .../svgs/solid/square-parking.svg | 0 .../svgs/solid/square-pen.svg | 0 .../svgs/solid/square-person-confined.svg | 0 .../svgs/solid/square-phone-flip.svg | 0 .../svgs/solid/square-phone.svg | 0 .../svgs/solid/square-plus.svg | 0 .../svgs/solid/square-poll-horizontal.svg | 0 .../svgs/solid/square-poll-vertical.svg | 0 .../svgs/solid/square-root-variable.svg | 0 .../svgs/solid/square-rss.svg | 0 .../svgs/solid/square-share-nodes.svg | 0 .../svgs/solid/square-up-right.svg | 0 .../svgs/solid/square-virus.svg | 0 .../svgs/solid/square-xmark.svg | 0 .../svgs/solid/square.svg | 0 .../svgs/solid/staff-snake.svg | 0 .../svgs/solid/stairs.svg | 0 .../svgs/solid/stamp.svg | 0 .../svgs/solid/stapler.svg | 0 .../svgs/solid/star-and-crescent.svg | 0 .../svgs/solid/star-half-stroke.svg | 0 .../svgs/solid/star-half.svg | 0 .../svgs/solid/star-of-david.svg | 0 .../svgs/solid/star-of-life.svg | 0 .../svgs/solid/star.svg | 0 .../svgs/solid/sterling-sign.svg | 0 .../svgs/solid/stethoscope.svg | 0 .../svgs/solid/stop.svg | 0 .../svgs/solid/stopwatch-20.svg | 0 .../svgs/solid/stopwatch.svg | 0 .../svgs/solid/store-slash.svg | 0 .../svgs/solid/store.svg | 0 .../svgs/solid/street-view.svg | 0 .../svgs/solid/strikethrough.svg | 0 .../svgs/solid/stroopwafel.svg | 0 .../svgs/solid/subscript.svg | 0 .../svgs/solid/suitcase-medical.svg | 0 .../svgs/solid/suitcase-rolling.svg | 0 .../svgs/solid/suitcase.svg | 0 .../svgs/solid/sun-plant-wilt.svg | 0 .../svgs/solid/sun.svg | 0 .../svgs/solid/superscript.svg | 0 .../svgs/solid/swatchbook.svg | 0 .../svgs/solid/synagogue.svg | 0 .../svgs/solid/syringe.svg | 0 .../svgs/solid/t.svg | 0 .../svgs/solid/table-cells-large.svg | 0 .../svgs/solid/table-cells.svg | 0 .../svgs/solid/table-columns.svg | 0 .../svgs/solid/table-list.svg | 0 .../svgs/solid/table-tennis-paddle-ball.svg | 0 .../svgs/solid/table.svg | 0 .../svgs/solid/tablet-button.svg | 0 .../svgs/solid/tablet-screen-button.svg | 0 .../svgs/solid/tablet.svg | 0 .../svgs/solid/tablets.svg | 0 .../svgs/solid/tachograph-digital.svg | 0 .../svgs/solid/tag.svg | 0 .../svgs/solid/tags.svg | 0 .../svgs/solid/tape.svg | 0 .../svgs/solid/tarp-droplet.svg | 0 .../svgs/solid/tarp.svg | 0 .../svgs/solid/taxi.svg | 0 .../svgs/solid/teeth-open.svg | 0 .../svgs/solid/teeth.svg | 0 .../svgs/solid/temperature-arrow-down.svg | 0 .../svgs/solid/temperature-arrow-up.svg | 0 .../svgs/solid/temperature-empty.svg | 0 .../svgs/solid/temperature-full.svg | 0 .../svgs/solid/temperature-half.svg | 0 .../svgs/solid/temperature-high.svg | 0 .../svgs/solid/temperature-low.svg | 0 .../svgs/solid/temperature-quarter.svg | 0 .../svgs/solid/temperature-three-quarters.svg | 0 .../svgs/solid/tenge-sign.svg | 0 .../svgs/solid/tent-arrow-down-to-line.svg | 0 .../svgs/solid/tent-arrow-left-right.svg | 0 .../svgs/solid/tent-arrow-turn-left.svg | 0 .../svgs/solid/tent-arrows-down.svg | 0 .../svgs/solid/tent.svg | 0 .../svgs/solid/tents.svg | 0 .../svgs/solid/terminal.svg | 0 .../svgs/solid/text-height.svg | 0 .../svgs/solid/text-slash.svg | 0 .../svgs/solid/text-width.svg | 0 .../svgs/solid/thermometer.svg | 0 .../svgs/solid/thumbs-down.svg | 0 .../svgs/solid/thumbs-up.svg | 0 .../svgs/solid/thumbtack.svg | 0 .../svgs/solid/ticket-simple.svg | 0 .../svgs/solid/ticket.svg | 0 .../svgs/solid/timeline.svg | 0 .../svgs/solid/toggle-off.svg | 0 .../svgs/solid/toggle-on.svg | 0 .../svgs/solid/toilet-paper-slash.svg | 0 .../svgs/solid/toilet-paper.svg | 0 .../svgs/solid/toilet-portable.svg | 0 .../svgs/solid/toilet.svg | 0 .../svgs/solid/toilets-portable.svg | 0 .../svgs/solid/toolbox.svg | 0 .../svgs/solid/tooth.svg | 0 .../svgs/solid/torii-gate.svg | 0 .../svgs/solid/tornado.svg | 0 .../svgs/solid/tower-broadcast.svg | 0 .../svgs/solid/tower-cell.svg | 0 .../svgs/solid/tower-observation.svg | 0 .../svgs/solid/tractor.svg | 0 .../svgs/solid/trademark.svg | 0 .../svgs/solid/traffic-light.svg | 0 .../svgs/solid/trailer.svg | 0 .../svgs/solid/train-subway.svg | 0 .../svgs/solid/train-tram.svg | 0 .../svgs/solid/train.svg | 0 .../svgs/solid/transgender.svg | 0 .../svgs/solid/trash-arrow-up.svg | 0 .../svgs/solid/trash-can-arrow-up.svg | 0 .../svgs/solid/trash-can.svg | 0 .../svgs/solid/trash.svg | 0 .../svgs/solid/tree-city.svg | 0 .../svgs/solid/tree.svg | 0 .../svgs/solid/triangle-exclamation.svg | 0 .../svgs/solid/trophy.svg | 0 .../svgs/solid/trowel-bricks.svg | 0 .../svgs/solid/trowel.svg | 0 .../svgs/solid/truck-arrow-right.svg | 0 .../svgs/solid/truck-droplet.svg | 0 .../svgs/solid/truck-fast.svg | 0 .../svgs/solid/truck-field-un.svg | 0 .../svgs/solid/truck-field.svg | 0 .../svgs/solid/truck-front.svg | 0 .../svgs/solid/truck-medical.svg | 0 .../svgs/solid/truck-monster.svg | 0 .../svgs/solid/truck-moving.svg | 0 .../svgs/solid/truck-pickup.svg | 0 .../svgs/solid/truck-plane.svg | 0 .../svgs/solid/truck-ramp-box.svg | 0 .../svgs/solid/truck.svg | 0 .../svgs/solid/tty.svg | 0 .../svgs/solid/turkish-lira-sign.svg | 0 .../svgs/solid/turn-down.svg | 0 .../svgs/solid/turn-up.svg | 0 .../svgs/solid/tv.svg | 0 .../svgs/solid/u.svg | 0 .../svgs/solid/umbrella-beach.svg | 0 .../svgs/solid/umbrella.svg | 0 .../svgs/solid/underline.svg | 0 .../svgs/solid/universal-access.svg | 0 .../svgs/solid/unlock-keyhole.svg | 0 .../svgs/solid/unlock.svg | 0 .../svgs/solid/up-down-left-right.svg | 0 .../svgs/solid/up-down.svg | 0 .../svgs/solid/up-long.svg | 0 .../up-right-and-down-left-from-center.svg | 0 .../svgs/solid/up-right-from-square.svg | 0 .../svgs/solid/upload.svg | 0 .../svgs/solid/user-astronaut.svg | 0 .../svgs/solid/user-check.svg | 0 .../svgs/solid/user-clock.svg | 0 .../svgs/solid/user-doctor.svg | 0 .../svgs/solid/user-gear.svg | 0 .../svgs/solid/user-graduate.svg | 0 .../svgs/solid/user-group.svg | 0 .../svgs/solid/user-injured.svg | 0 .../svgs/solid/user-large-slash.svg | 0 .../svgs/solid/user-large.svg | 0 .../svgs/solid/user-lock.svg | 0 .../svgs/solid/user-minus.svg | 0 .../svgs/solid/user-ninja.svg | 0 .../svgs/solid/user-nurse.svg | 0 .../svgs/solid/user-pen.svg | 0 .../svgs/solid/user-plus.svg | 0 .../svgs/solid/user-secret.svg | 0 .../svgs/solid/user-shield.svg | 0 .../svgs/solid/user-slash.svg | 0 .../svgs/solid/user-tag.svg | 0 .../svgs/solid/user-tie.svg | 0 .../svgs/solid/user-xmark.svg | 0 .../svgs/solid/user.svg | 0 .../svgs/solid/users-between-lines.svg | 0 .../svgs/solid/users-gear.svg | 0 .../svgs/solid/users-line.svg | 0 .../svgs/solid/users-rays.svg | 0 .../svgs/solid/users-rectangle.svg | 0 .../svgs/solid/users-slash.svg | 0 .../svgs/solid/users-viewfinder.svg | 0 .../svgs/solid/users.svg | 0 .../svgs/solid/utensils.svg | 0 .../svgs/solid/v.svg | 0 .../svgs/solid/van-shuttle.svg | 0 .../svgs/solid/vault.svg | 0 .../svgs/solid/vector-square.svg | 0 .../svgs/solid/venus-double.svg | 0 .../svgs/solid/venus-mars.svg | 0 .../svgs/solid/venus.svg | 0 .../svgs/solid/vest-patches.svg | 0 .../svgs/solid/vest.svg | 0 .../svgs/solid/vial-circle-check.svg | 0 .../svgs/solid/vial-virus.svg | 0 .../svgs/solid/vial.svg | 0 .../svgs/solid/vials.svg | 0 .../svgs/solid/video-slash.svg | 0 .../svgs/solid/video.svg | 0 .../svgs/solid/vihara.svg | 0 .../svgs/solid/virus-covid-slash.svg | 0 .../svgs/solid/virus-covid.svg | 0 .../svgs/solid/virus-slash.svg | 0 .../svgs/solid/virus.svg | 0 .../svgs/solid/viruses.svg | 0 .../svgs/solid/voicemail.svg | 0 .../svgs/solid/volcano.svg | 0 .../svgs/solid/volleyball.svg | 0 .../svgs/solid/volume-high.svg | 0 .../svgs/solid/volume-low.svg | 0 .../svgs/solid/volume-off.svg | 0 .../svgs/solid/volume-xmark.svg | 0 .../svgs/solid/vr-cardboard.svg | 0 .../svgs/solid/w.svg | 0 .../svgs/solid/walkie-talkie.svg | 0 .../svgs/solid/wallet.svg | 0 .../svgs/solid/wand-magic-sparkles.svg | 0 .../svgs/solid/wand-magic.svg | 0 .../svgs/solid/wand-sparkles.svg | 0 .../svgs/solid/warehouse.svg | 0 .../svgs/solid/water-ladder.svg | 0 .../svgs/solid/water.svg | 0 .../svgs/solid/wave-square.svg | 0 .../svgs/solid/weight-hanging.svg | 0 .../svgs/solid/weight-scale.svg | 0 .../solid/wheat-awn-circle-exclamation.svg | 0 .../svgs/solid/wheat-awn.svg | 0 .../svgs/solid/wheelchair-move.svg | 0 .../svgs/solid/wheelchair.svg | 0 .../svgs/solid/whiskey-glass.svg | 0 .../svgs/solid/wifi.svg | 0 .../svgs/solid/wind.svg | 0 .../svgs/solid/window-maximize.svg | 0 .../svgs/solid/window-minimize.svg | 0 .../svgs/solid/window-restore.svg | 0 .../svgs/solid/wine-bottle.svg | 0 .../svgs/solid/wine-glass-empty.svg | 0 .../svgs/solid/wine-glass.svg | 0 .../svgs/solid/won-sign.svg | 0 .../svgs/solid/worm.svg | 0 .../svgs/solid/wrench.svg | 0 .../svgs/solid/x-ray.svg | 0 .../svgs/solid/x.svg | 0 .../svgs/solid/xmark.svg | 0 .../svgs/solid/xmarks-lines.svg | 0 .../svgs/solid/y.svg | 0 .../svgs/solid/yen-sign.svg | 0 .../svgs/solid/yin-yang.svg | 0 .../svgs/solid/z.svg | 0 .../webfonts/fa-brands-400.ttf | 0 .../webfonts/fa-brands-400.woff2 | 0 .../webfonts/fa-regular-400.ttf | 0 .../webfonts/fa-regular-400.woff2 | 0 .../webfonts/fa-solid-900.ttf | 0 .../webfonts/fa-solid-900.woff2 | 0 .../webfonts/fa-v4compatibility.ttf | 0 .../webfonts/fa-v4compatibility.woff2 | 0 .../static/lib/highlight/highlight.min.css | 9 + .../static/lib/highlight/highlight.min.js | 1149 + .../jq-module/jquery.particleground.min.js | 195 + .../static/lib/jq-module/paigusu.min.js | 1 + .../jq-module/zyupload/zyupload-1.0.0.min.css | 2 + .../jq-module/zyupload/zyupload-1.0.0.min.js | 17 + .../lib/jquery-3.4.1/jquery-3.4.1.min.js | 2 + .../static/lib/jsencrypt/jsencrypt.min.js | 2 + .../resources/static/lib/jsencrypt/rsa.js | 1 + .../static/lib/layui-v2.11.5/css/layui.css | 1 + .../lib/layui-v2.11.5/font/iconfont.eot | Bin 0 -> 54764 bytes .../lib/layui-v2.11.5/font/iconfont.svg | 409 + .../lib/layui-v2.11.5/font/iconfont.ttf | Bin 0 -> 54588 bytes .../lib/layui-v2.11.5/font/iconfont.woff | Bin 0 -> 34928 bytes .../lib/layui-v2.11.5/font/iconfont.woff2 | Bin 0 -> 30004 bytes .../static/lib/layui-v2.11.5/layui.js | 1 + .../static/lib/layui-v2.6.3/css/layui.css | 5787 ++ .../lib/layui-v2.6.3/css/modules/code.css | 1 + .../css/modules/laydate/default/laydate.css | 1 + .../css/modules/layer/default/icon-ext.png | Bin 0 -> 5911 bytes .../css/modules/layer/default/icon.png | Bin 0 -> 11493 bytes .../css/modules/layer/default/layer.css | 1 + .../css/modules/layer/default/loading-0.gif | Bin 0 -> 5793 bytes .../css/modules/layer/default/loading-1.gif | Bin 0 -> 701 bytes .../css/modules/layer/default/loading-2.gif | Bin 0 -> 1787 bytes .../static/lib/layui-v2.6.3/font/iconfont.eot | Bin 0 -> 46684 bytes .../static/lib/layui-v2.6.3/font/iconfont.svg | 554 + .../static/lib/layui-v2.6.3/font/iconfont.ttf | Bin 0 -> 46508 bytes .../lib/layui-v2.6.3/font/iconfont.woff | Bin 0 -> 30628 bytes .../lib/layui-v2.6.3/font/iconfont.woff2 | Bin 0 -> 25964 bytes .../static/lib/layui-v2.6.3/layui.js | 5 + .../resources/static/lib/qrcode/qrcode.min.js | 1 + .../cloud/account/department/add.html | 46 + .../cloud/account/department/edit.html | 66 + .../cloud/account/department/index.html | 210 + .../cloud/account/enterprise/add.html | 43 + .../cloud/account/enterprise/edit.html | 60 + .../cloud/account/enterprise/index.html | 266 + .../templates/cloud/account/user/add.html | 273 + .../cloud/account/user/authRole.html | 110 + .../templates/cloud/account/user/edit.html | 136 + .../cloud/account/user/editDepartment.html | 103 + .../templates/cloud/account/user/index.html | 511 + .../cloud/account/user/selectDepartment.html | 117 + .../cloud/account/user/updateDepartment.html | 131 + .../templates/cloud/collect/index.html | 261 + .../templates/cloud/lately/index.html | 231 + .../resources/templates/cloud/my/index.html | 333 + .../templates/cloud/recycle/index.html | 222 + .../templates/cloud/role/role/add.html | 75 + .../templates/cloud/role/role/authUser.html | 209 + .../templates/cloud/role/role/edit.html | 108 + .../templates/cloud/role/role/index.html | 421 + .../templates/cloud/share/index.html | 610 + .../templates/cloud/space/file/add.html | 75 + .../templates/cloud/space/file/authFile.html | 131 + .../templates/cloud/space/file/authRole.html | 97 + .../templates/cloud/space/file/edit.html | 108 + .../templates/cloud/space/file/index.html | 604 + .../cloud/space/file/updateAuthFile.html | 135 + .../templates/cloud/space/recycle/index.html | 222 + .../templates/cloud/upload/changeIndex.html | 571 + .../templates/cloud/upload/index.html | 541 + .../templates/component/alipay/index.html | 307 + .../templates/component/qiniuOss/index.html | 107 + .../templates/component/wechatPay/index.html | 279 + .../main/resources/templates/error/404.html | 96 + .../main/resources/templates/error/500.html | 10 + .../main/resources/templates/error/error.html | 64 + .../main/resources/templates/file/pdf.html | 26 + .../templates/system/advanced/generator.html | 202 + .../system/advanced/monitorServer.html | 264 + .../resources/templates/system/index.html | 177 + .../resources/templates/system/log/login.html | 357 + .../templates/system/log/request.html | 374 + .../resources/templates/system/login.html | 1024 + .../resources/templates/system/login1.html | 168 + .../resources/templates/system/menu/add.html | 283 + .../resources/templates/system/menu/edit.html | 271 + .../templates/system/menu/index.html | 352 + .../resources/templates/system/role/add.html | 188 + .../templates/system/role/authUser.html | 261 + .../resources/templates/system/role/edit.html | 189 + .../templates/system/role/index.html | 367 + .../resources/templates/system/user/add.html | 235 + .../templates/system/user/authRole.html | 117 + .../resources/templates/system/user/edit.html | 136 + .../templates/system/user/index.html | 429 + .../templates/system/userCenter/password.html | 70 + .../templates/system/userCenter/setting.html | 84 + .../resources/templates/system/welcome.html | 215 + .../com/zxdmy/excite/admin/CodeGenerator.java | 186 + .../admin/ExciteAdminApplicationTests.java | 13 + .../java/com/zxdmy/excite/admin/RsaTest.java | 31 + .../zxdmy/excite/admin/SmartDocGenerator.java | 60 + .../excite/admin/component/AlipayTest.java | 95 + .../excite/admin/component/AliyunSmsTest.java | 78 + .../excite/admin/component/WeChatPayTest.java | 68 + .../service/IGlobalConfigServiceTest.java | 71 + .../admin/service/ISysMenuServiceTest.java | 44 + .../admin/service/ISysUserServiceTest.java | 250 + .../excite/admin/utils/RedisUtilsTest.java | 103 + ss-common/README.md | 3 + ss-common/pom.xml | 51 + .../excite/common/base/BaseController.java | 208 + .../zxdmy/excite/common/base/BaseResult.java | 104 + .../excite/common/base/ErrorController.java | 43 + .../excite/common/config/ErrorPageConfig.java | 26 + .../excite/common/config/ExciteConfig.java | 67 + .../excite/common/config/KaptchaConfig.java | 139 + .../common/config/MybatisPlusConfig.java | 34 + .../excite/common/config/RedisConfig.java | 100 + .../excite/common/config/SpringDocConfig.java | 59 + .../excite/common/entity/CaptchaDomain.java | 51 + .../excite/common/entity/GlobalConfig.java | 68 + .../zxdmy/excite/common/entity/PageList.java | 56 + .../zxdmy/excite/common/enums/CloudCode.java | 25 + .../zxdmy/excite/common/enums/ReturnCode.java | 70 + .../zxdmy/excite/common/enums/SystemCode.java | 73 + .../common/exception/GlobalException.java | 85 + .../common/exception/ServiceException.java | 47 + .../common/mapper/GlobalConfigMapper.java | 16 + .../excite/common/service/CaptchaService.java | 128 + .../common/service/IGlobalConfigService.java | 24 + .../excite/common/service/RedisService.java | 176 + .../service/impl/GlobalConfigServiceImpl.java | 149 + .../zxdmy/excite/common/utils/ArithUtils.java | 114 + .../zxdmy/excite/common/utils/DateUtils.java | 144 + .../common/utils/HttpServletRequestUtil.java | 172 + .../utils/KaptchaMathOneTextCreator.java | 28 + .../utils/KaptchaMathTwoTextCreator.java | 28 + .../excite/common/utils/MyCaptchaUtil.java | 71 + .../resources/mapper/GlobalConfigMapper.xml | 22 + ss-component/README.md | 3 + ss-component/pom.xml | 70 + .../component/alipay/AlipayService.java | 362 + .../component/aliyun/AliyunOssService.java | 127 + .../component/aliyun/AliyunSmsService.java | 184 + .../zxdmy/excite/component/bo/AlipayBO.java | 88 + .../excite/component/bo/AliyunOssBO.java | 57 + .../excite/component/bo/AliyunSmsBO.java | 49 + .../zxdmy/excite/component/bo/JustAuthBO.java | 59 + .../zxdmy/excite/component/bo/QiniuOssBO.java | 70 + .../excite/component/bo/WeChatPayBO.java | 77 + .../component/justauth/JustAuthService.java | 281 + .../component/oss/AliOSSProperties.java | 16 + .../excite/component/oss/AliOSSUtils.java | 303 + .../com/zxdmy/excite/component/oss/OSSVO.java | 18 + .../component/qiniu/QiniuOssService.java | 428 + .../component/vo/AliyunOssPolicyVO.java | 56 + .../excite/component/vo/QiniuFileVO.java | 71 + .../component/wechat/WeChatPayService.java | 245 + ss-framework/README.md | 3 + ss-framework/pom.xml | 42 + .../framework/aop/AnnotationSaveLoginLog.java | 19 + .../framework/aop/AnnotationSaveReLog.java | 16 + .../excite/framework/aop/SaveLogAspect.java | 212 + .../zxdmy/excite/framework/oshi/Server.java | 233 + .../excite/framework/oshi/domain/Cpu.java | 106 + .../excite/framework/oshi/domain/Jvm.java | 130 + .../excite/framework/oshi/domain/Mem.java | 72 + .../excite/framework/oshi/domain/Sys.java | 81 + .../excite/framework/oshi/domain/SysFile.java | 109 + .../framework/satoken/SaTokenConfig.java | 70 + .../satoken/SaTokenListenerConfig.java | 83 + .../satoken/SaTokenStpInterfaceImpl.java | 49 + ss-system/README.md | 3 + ss-system/pom.xml | 29 + .../excite/system/entity/SysLogLogin.java | 95 + .../excite/system/entity/SysLogRequest.java | 107 + .../zxdmy/excite/system/entity/SysMenu.java | 145 + .../zxdmy/excite/system/entity/SysRole.java | 105 + .../excite/system/entity/SysRoleMenu.java | 41 + .../zxdmy/excite/system/entity/SysUser.java | 128 + .../excite/system/entity/SysUserRole.java | 41 + .../entity/cloud/account/CloudCompany.java | 70 + .../entity/cloud/account/CloudDepartment.java | 77 + .../cloud/account/CloudDepartmentUser.java | 37 + .../cloud/collection/CloudUserCollection.java | 43 + .../entity/cloud/lately/CloudUserLately.java | 48 + .../system/entity/cloud/role/CloudRole.java | 93 + .../entity/cloud/role/CloudRoleFile.java | 38 + .../entity/cloud/role/CloudRoleUser.java | 37 + .../system/entity/cloud/space/CloudFile.java | 132 + .../entity/cloud/space/CloudFileRole.java | 37 + .../entity/cloud/trace/CloudFileTrace.java | 53 + .../system/entity/dto/DepartmentTreeDTO.java | 22 + .../entity/dto/DepartmentUserTreeNode.java | 52 + .../excite/system/entity/dto/FileTreeDTO.java | 21 + .../excite/system/entity/dto/RoleTreeDTO.java | 17 + .../system/entity/req/account/ReqCompany.java | 26 + .../entity/req/account/ReqDepartment.java | 26 + .../collection/ReqCloudUserCollection.java | 41 + .../entity/req/lately/ReqCloudUserLately.java | 36 + .../system/entity/req/role/ReqRole.java | 27 + .../system/entity/req/space/ReqCloudFile.java | 90 + .../entity/req/space/ReqCloudFileRole.java | 34 + .../entity/req/trace/ReqCloudFileTrace.java | 51 + .../system/entity/vo/account/CompanyVo.java | 83 + .../entity/vo/account/DepartmentVo.java | 73 + .../vo/collection/CloudUserCollectionVo.java | 45 + .../entity/vo/lately/CloudUserLatelyVo.java | 52 + .../excite/system/entity/vo/role/RoleVo.java | 78 + .../entity/vo/space/CloudFileRoleVo.java | 42 + .../system/entity/vo/space/CloudFileVo.java | 140 + .../entity/vo/space/CloudFilleUserVo.java | 26 + .../entity/vo/space/CloudRoleFileVo.java | 34 + .../entity/vo/space/CloudRoleFolderVo.java | 22 + .../entity/vo/trace/CloudFileTraceVo.java | 57 + .../system/mapper/SysLogLoginMapper.java | 16 + .../system/mapper/SysLogRequestMapper.java | 16 + .../excite/system/mapper/SysMenuMapper.java | 37 + .../excite/system/mapper/SysRoleMapper.java | 18 + .../system/mapper/SysRoleMenuMapper.java | 18 + .../excite/system/mapper/SysUserMapper.java | 48 + .../system/mapper/SysUserRoleMapper.java | 18 + .../cloud/account/CloudCompanyMapper.java | 30 + .../cloud/account/CloudDepartmentMapper.java | 30 + .../account/CloudDepartmentUserMapper.java | 21 + .../collection/CloudUserCollectionMapper.java | 33 + .../cloud/lately/CloudUserLatelyMapper.java | 30 + .../cloud/role/CloudRoleFileMapper.java | 18 + .../mapper/cloud/role/CloudRoleMapper.java | 29 + .../cloud/role/CloudRoleUserMapper.java | 18 + .../mapper/cloud/space/CloudFileMapper.java | 40 + .../cloud/space/CloudFileRoleMapper.java | 30 + .../cloud/trace/CloudFileTraceMapper.java | 28 + .../system/service/ISysLogLoginService.java | 20 + .../system/service/ISysLogRequestService.java | 20 + .../system/service/ISysMenuService.java | 107 + .../system/service/ISysRoleMenuService.java | 17 + .../system/service/ISysRoleService.java | 90 + .../system/service/ISysUserRoleService.java | 34 + .../system/service/ISysUserService.java | 101 + .../cloud/account/ICloudCompanyService.java | 28 + .../account/ICloudDepartmentService.java | 31 + .../account/ICloudDepartmentUserService.java | 16 + .../ICloudUserCollectionService.java | 29 + .../cloud/lately/ICloudUserLatelyService.java | 27 + .../cloud/role/ICloudRoleFileService.java | 16 + .../service/cloud/role/ICloudRoleService.java | 36 + .../cloud/role/ICloudRoleUserService.java | 24 + .../cloud/space/ICloudFileRoleService.java | 28 + .../cloud/space/ICloudFileService.java | 42 + .../cloud/trace/ICloudFileTraceService.java | 22 + .../service/impl/SysLogLoginServiceImpl.java | 52 + .../impl/SysLogRequestServiceImpl.java | 50 + .../service/impl/SysMenuServiceImpl.java | 389 + .../service/impl/SysRoleMenuServiceImpl.java | 20 + .../service/impl/SysRoleServiceImpl.java | 361 + .../service/impl/SysUserRoleServiceImpl.java | 52 + .../service/impl/SysUserServiceImpl.java | 543 + .../account/CloudCompanyServiceImpl.java | 107 + .../account/CloudDepartmentServiceImpl.java | 245 + .../CloudDepartmentUserServiceImpl.java | 20 + .../CloudUserCollectionServiceImpl.java | 82 + .../lately/CloudUserLatelyServiceImpl.java | 97 + .../cloud/role/CloudRoleFileServiceImpl.java | 20 + .../impl/cloud/role/CloudRoleServiceImpl.java | 300 + .../cloud/role/CloudRoleUserServiceImpl.java | 63 + .../cloud/space/CloudFileRoleServiceImpl.java | 60 + .../cloud/space/CloudFileServiceImpl.java | 290 + .../trace/CloudFileTraceServiceImpl.java | 59 + .../zxdmy/excite/system/utils/AuthUtils.java | 147 + .../resources/mapper/SysLogLoginMapper.xml | 26 + .../resources/mapper/SysLogRequestMapper.xml | 29 + .../main/resources/mapper/SysMenuMapper.xml | 63 + .../main/resources/mapper/SysRoleMapper.xml | 26 + .../resources/mapper/SysRoleMenuMapper.xml | 17 + .../main/resources/mapper/SysUserMapper.xml | 125 + .../resources/mapper/SysUserRoleMapper.xml | 17 + .../cloud/account/CloudCompanyMapper.xml | 74 + .../cloud/account/CloudDepartmentMapper.xml | 89 + .../account/CloudDepartmentUserMapper.xml | 23 + .../collection/CloudUserCollectionMapper.xml | 54 + .../cloud/lately/CloudUserLatelyMapper.xml | 56 + .../mapper/cloud/role/CloudRoleFileMapper.xml | 17 + .../mapper/cloud/role/CloudRoleMapper.xml | 66 + .../mapper/cloud/role/CloudRoleUserMapper.xml | 17 + .../mapper/cloud/space/CloudFileMapper.xml | 221 + .../cloud/space/CloudFileRoleMapper.xml | 54 + .../cloud/trace/CloudFileTraceMapper.xml | 32 + 2536 files changed, 200576 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 database/db_excite_cms.sql create mode 100644 directoryList.md create mode 100644 pom.xml create mode 100644 ss-admin/README.md create mode 100644 ss-admin/pom.xml create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/ExciteAdminApplication.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/advanced/GeneratorController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/advanced/MonitorController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/account/AccountDepartmentController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/account/AccountEnterpriseController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/account/AccountUserController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/collect/CollectController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/lately/CloudUserLatelyController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/my/CloudMyFileController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/recycle/CloudMyRecycleController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/role/CloudRoleController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/role/CloudRoleUserController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/share/CloudShareController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/space/CloudFileController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/space/CloudFileRoleController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/space/CloudRecycleController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/trace/CloudTraceController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/upload/UploadController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/component/AlipayController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/component/QiniuOssController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/component/WeChatPayController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/fileSet/PDFController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/oss/OssController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/CloudRoleFileController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/CloudUserCollectionController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysLogController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysMenuController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysRoleController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysUserController.java create mode 100644 ss-admin/src/main/java/com/zxdmy/excite/admin/controller/tool/CaptchaController.java create mode 100644 ss-admin/src/main/resources/application.yml create mode 100644 ss-admin/src/main/resources/banner.txt create mode 100644 ss-admin/src/main/resources/static/api/clear.json create mode 100644 ss-admin/src/main/resources/static/api/init.json create mode 100644 ss-admin/src/main/resources/static/api/menus.json create mode 100644 ss-admin/src/main/resources/static/api/table.json create mode 100644 ss-admin/src/main/resources/static/api/tableSelect.json create mode 100644 ss-admin/src/main/resources/static/api/upload.json create mode 100644 ss-admin/src/main/resources/static/css/layuimini.css create mode 100644 ss-admin/src/main/resources/static/css/login.css create mode 100644 ss-admin/src/main/resources/static/css/login2/admin.css create mode 100644 ss-admin/src/main/resources/static/css/login2/login2.css create mode 100644 ss-admin/src/main/resources/static/css/public.css create mode 100644 ss-admin/src/main/resources/static/css/themes/default.css create mode 100644 ss-admin/src/main/resources/static/css/welcome.css create mode 100644 ss-admin/src/main/resources/static/data/123.pptx create mode 100644 ss-admin/src/main/resources/static/data/data.html create mode 100644 ss-admin/src/main/resources/static/images/bg-login.jpg create mode 100644 ss-admin/src/main/resources/static/images/bg.jpg create mode 100644 ss-admin/src/main/resources/static/images/captcha.jpg create mode 100644 ss-admin/src/main/resources/static/images/donate_qrcode.png create mode 100644 ss-admin/src/main/resources/static/images/favicon.ico create mode 100644 ss-admin/src/main/resources/static/images/favicon2.ico create mode 100644 ss-admin/src/main/resources/static/images/home.png create mode 100644 ss-admin/src/main/resources/static/images/ic_404.png create mode 100644 ss-admin/src/main/resources/static/images/icon-login.png create mode 100644 ss-admin/src/main/resources/static/images/loginbg.png create mode 100644 ss-admin/src/main/resources/static/images/logo.png create mode 100644 ss-admin/src/main/resources/static/images/logo/logo.png create mode 100644 ss-admin/src/main/resources/static/images/logo/logo2.ico create mode 100644 ss-admin/src/main/resources/static/images/logo/logo2.png create mode 100644 ss-admin/src/main/resources/static/images/logo2.png create mode 100644 ss-admin/src/main/resources/static/js/jquery-1.10.2.min.js create mode 100644 ss-admin/src/main/resources/static/js/lay-config.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/dtree/dtree.css create mode 100644 ss-admin/src/main/resources/static/js/lay-module/dtree/dtree.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.css create mode 100644 ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.eot create mode 100644 ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.svg create mode 100644 ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.ttf create mode 100644 ss-admin/src/main/resources/static/js/lay-module/dtree/font/dtreefont.woff create mode 100644 ss-admin/src/main/resources/static/js/lay-module/dtree/font/icons.json create mode 100644 ss-admin/src/main/resources/static/js/lay-module/dtree/开发者日志.txt create mode 100644 ss-admin/src/main/resources/static/js/lay-module/echarts/echarts.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/echarts/echartsTheme.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/iconPicker/iconPickerFa.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/layarea/layarea.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/layuimini/miniAdmin.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/layuimini/miniMenu.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/layuimini/miniTab.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/layuimini/miniTheme.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/layuimini/miniTongji.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/step-lay/step.css create mode 100644 ss-admin/src/main/resources/static/js/lay-module/step-lay/step.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/tableSelect/tableSelect.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/treetable-lay-3.x/treeTable.css create mode 100644 ss-admin/src/main/resources/static/js/lay-module/treetable-lay-3.x/treeTable.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/treetable-lay-3.x/treeTable2.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/treetable-lay/treetable.css create mode 100644 ss-admin/src/main/resources/static/js/lay-module/treetable-lay/treetable.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/wangEditor/fonts/w-e-icon.woff create mode 100644 ss-admin/src/main/resources/static/js/lay-module/wangEditor/wangEditor.css create mode 100644 ss-admin/src/main/resources/static/js/lay-module/wangEditor/wangEditor.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/wangEditor/wangEditor.min.css create mode 100644 ss-admin/src/main/resources/static/js/lay-module/wangEditor/wangEditor.min.js create mode 100644 ss-admin/src/main/resources/static/js/lay-module/wangEditor/wangEditor.min.js.map create mode 100644 ss-admin/src/main/resources/static/js/login/login.js create mode 100644 ss-admin/src/main/resources/static/js/time.js create mode 100644 ss-admin/src/main/resources/static/lib/admin.css create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/HELP-US-OUT.txt create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/css/font-awesome.css create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/css/font-awesome.min.css create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/fonts/FontAwesome.otf create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/fonts/fontawesome-webfont.eot create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/fonts/fontawesome-webfont.svg create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/fonts/fontawesome-webfont.woff create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2 create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/less/animated.less create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/less/bordered-pulled.less create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/less/core.less create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/less/fixed-width.less create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/less/font-awesome.less create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/less/icons.less create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/less/larger.less create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/less/list.less create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/less/mixins.less create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/less/path.less create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/less/rotated-flipped.less create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/less/screen-reader.less create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/less/stacked.less create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/less/variables.less create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/scss/_animated.scss create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/scss/_bordered-pulled.scss create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/scss/_core.scss create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/scss/_fixed-width.scss create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/scss/_icons.scss create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/scss/_larger.scss create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/scss/_list.scss create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/scss/_mixins.scss create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/scss/_path.scss create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/scss/_rotated-flipped.scss create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/scss/_screen-reader.scss create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/scss/_stacked.scss create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/scss/_variables.scss create mode 100644 ss-admin/src/main/resources/static/lib/font-awesome-4.7.0/scss/font-awesome.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/LICENSE.txt create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/all.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/all.min.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/brands.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/brands.min.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/fontawesome.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/fontawesome.min.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/regular.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/regular.min.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/solid.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/solid.min.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/svg-with-js.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/svg-with-js.min.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/v4-font-face.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/v4-font-face.min.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/v4-shims.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/v4-shims.min.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/v5-font-face.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/css/v5-font-face.min.css create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/js/all.js create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/js/all.min.js create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/js/brands.js create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/js/brands.min.js create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/js/conflict-detection.js create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/js/conflict-detection.min.js create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/js/fontawesome.js create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/js/fontawesome.min.js create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/js/regular.js create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/js/regular.min.js create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/js/solid.js create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/js/solid.min.js create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/js/v4-shims.js create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/js/v4-shims.min.js create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/_animated.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/_bordered-pulled.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/_core.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/_fixed-width.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/_icons.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/_list.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/_mixins.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/_rotated-flipped.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/_screen-reader.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/_shims.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/_sizing.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/_stacked.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/_variables.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/brands.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/fontawesome.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/regular.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/solid.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/less/v4-shims.less create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/metadata/categories.yml create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/metadata/icon-families.json create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/metadata/icon-families.yml create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/metadata/icons.json create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/metadata/icons.yml create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/metadata/shims.json create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/metadata/shims.yml create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/metadata/sponsors.yml create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/_animated.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/_bordered-pulled.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/_core.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/_fixed-width.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/_functions.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/_icons.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/_list.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/_mixins.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/_rotated-flipped.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/_screen-reader.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/_shims.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/_sizing.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/_stacked.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/_variables.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/brands.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/fontawesome.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/regular.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/solid.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/scss/v4-shims.scss create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/sprites/brands.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/sprites/regular.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/sprites/solid.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/42-group.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/500px.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/accessible-icon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/accusoft.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/adn.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/adversal.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/affiliatetheme.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/airbnb.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/algolia.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/alipay.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/amazon-pay.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/amazon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/amilia.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/android.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/angellist.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/angrycreative.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/angular.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/app-store-ios.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/app-store.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/apper.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/apple-pay.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/apple.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/artstation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/asymmetrik.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/atlassian.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/audible.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/autoprefixer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/avianex.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/aviato.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/aws.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/bandcamp.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/battle-net.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/behance.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/bilibili.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/bimobject.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/bitbucket.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/bitcoin.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/bity.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/black-tie.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/blackberry.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/blogger-b.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/blogger.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/bluetooth-b.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/bluetooth.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/bootstrap.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/bots.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/btc.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/buffer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/buromobelexperte.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/buy-n-large.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/buysellads.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/canadian-maple-leaf.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cc-amazon-pay.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cc-amex.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cc-apple-pay.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cc-diners-club.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cc-discover.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cc-jcb.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cc-mastercard.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cc-paypal.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cc-stripe.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cc-visa.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/centercode.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/centos.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/chrome.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/chromecast.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cloudflare.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cloudscale.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cloudsmith.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cloudversify.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cmplid.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/codepen.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/codiepie.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/confluence.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/connectdevelop.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/contao.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cotton-bureau.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cpanel.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/creative-commons-by.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/creative-commons-nc-eu.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/creative-commons-nc-jp.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/creative-commons-nc.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/creative-commons-nd.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/creative-commons-pd-alt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/creative-commons-pd.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/creative-commons-remix.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/creative-commons-sa.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/creative-commons-sampling-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/creative-commons-sampling.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/creative-commons-share.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/creative-commons-zero.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/creative-commons.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/critical-role.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/css3-alt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/css3.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/cuttlefish.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/d-and-d-beyond.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/d-and-d.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/dailymotion.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/dashcube.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/deezer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/delicious.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/deploydog.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/deskpro.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/dev.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/deviantart.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/dhl.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/diaspora.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/digg.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/digital-ocean.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/discord.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/discourse.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/dochub.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/docker.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/draft2digital.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/dribbble.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/dropbox.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/drupal.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/dyalog.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/earlybirds.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/ebay.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/edge-legacy.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/edge.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/elementor.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/ello.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/ember.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/empire.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/envira.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/erlang.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/ethereum.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/etsy.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/evernote.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/expeditedssl.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/facebook-f.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/facebook-messenger.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/facebook.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/fantasy-flight-games.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/fedex.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/fedora.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/figma.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/firefox-browser.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/firefox.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/first-order-alt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/first-order.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/firstdraft.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/flickr.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/flipboard.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/fly.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/font-awesome.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/fonticons-fi.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/fonticons.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/fort-awesome-alt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/fort-awesome.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/forumbee.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/foursquare.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/free-code-camp.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/freebsd.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/fulcrum.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/galactic-republic.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/galactic-senate.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/get-pocket.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/gg-circle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/gg.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/git-alt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/git.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/github-alt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/github.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/gitkraken.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/gitlab.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/gitter.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/glide-g.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/glide.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/gofore.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/golang.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/goodreads-g.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/goodreads.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/google-drive.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/google-pay.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/google-play.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/google-plus-g.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/google-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/google-wallet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/google.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/gratipay.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/grav.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/gripfire.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/grunt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/guilded.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/gulp.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/hacker-news.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/hackerrank.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/hashnode.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/hips.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/hire-a-helper.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/hive.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/hooli.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/hornbill.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/hotjar.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/houzz.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/html5.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/hubspot.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/ideal.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/imdb.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/instagram.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/instalod.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/intercom.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/internet-explorer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/invision.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/ioxhost.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/itch-io.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/itunes-note.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/itunes.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/java.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/jedi-order.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/jenkins.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/jira.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/joget.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/joomla.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/js.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/jsfiddle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/kaggle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/keybase.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/keycdn.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/kickstarter-k.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/kickstarter.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/korvue.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/laravel.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/lastfm.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/leanpub.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/less.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/line.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/linkedin-in.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/linkedin.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/linode.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/linux.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/lyft.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/magento.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/mailchimp.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/mandalorian.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/markdown.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/mastodon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/maxcdn.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/mdb.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/medapps.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/medium.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/medrt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/meetup.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/megaport.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/mendeley.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/meta.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/microblog.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/microsoft.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/mix.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/mixcloud.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/mixer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/mizuni.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/modx.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/monero.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/napster.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/neos.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/nfc-directional.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/nfc-symbol.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/nimblr.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/node-js.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/node.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/npm.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/ns8.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/nutritionix.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/octopus-deploy.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/odnoklassniki.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/odysee.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/old-republic.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/opencart.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/openid.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/opera.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/optin-monster.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/orcid.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/osi.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/padlet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/page4.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/pagelines.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/palfed.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/patreon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/paypal.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/perbyte.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/periscope.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/phabricator.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/phoenix-framework.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/phoenix-squadron.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/php.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/pied-piper-alt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/pied-piper-hat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/pied-piper-pp.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/pied-piper.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/pinterest-p.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/pinterest.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/pix.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/playstation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/product-hunt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/pushed.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/python.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/qq.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/quinscape.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/quora.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/r-project.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/raspberry-pi.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/ravelry.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/react.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/reacteurope.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/readme.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/rebel.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/red-river.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/reddit-alien.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/reddit.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/redhat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/renren.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/replyd.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/researchgate.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/resolving.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/rev.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/rocketchat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/rockrms.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/rust.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/safari.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/salesforce.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/sass.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/schlix.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/screenpal.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/scribd.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/searchengin.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/sellcast.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/sellsy.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/servicestack.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/shirtsinbulk.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/shopify.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/shopware.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/simplybuilt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/sistrix.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/sith.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/sitrox.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/sketch.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/skyatlas.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/skype.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/slack.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/slideshare.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/snapchat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/soundcloud.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/sourcetree.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/space-awesome.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/speakap.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/speaker-deck.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/spotify.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-behance.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-dribbble.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-facebook.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-font-awesome-stroke.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-font-awesome.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-git.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-github.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-gitlab.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-google-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-hacker-news.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-instagram.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-js.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-lastfm.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-odnoklassniki.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-pied-piper.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-pinterest.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-reddit.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-snapchat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-steam.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-tumblr.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-twitter.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-viadeo.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-vimeo.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-whatsapp.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-xing.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/square-youtube.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/squarespace.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/stack-exchange.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/stack-overflow.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/stackpath.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/staylinked.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/steam-symbol.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/steam.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/sticker-mule.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/strava.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/stripe-s.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/stripe.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/stubber.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/studiovinari.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/stumbleupon-circle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/stumbleupon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/superpowers.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/supple.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/suse.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/swift.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/symfony.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/teamspeak.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/telegram.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/tencent-weibo.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/the-red-yeti.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/themeco.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/themeisle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/think-peaks.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/tiktok.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/trade-federation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/trello.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/tumblr.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/twitch.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/twitter.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/typo3.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/uber.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/ubuntu.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/uikit.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/umbraco.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/uncharted.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/uniregistry.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/unity.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/unsplash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/untappd.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/ups.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/usb.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/usps.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/ussunnah.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/vaadin.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/viacoin.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/viadeo.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/viber.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/vimeo-v.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/vimeo.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/vine.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/vk.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/vnv.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/vuejs.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/watchman-monitoring.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/waze.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/weebly.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/weibo.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/weixin.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/whatsapp.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/whmcs.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/wikipedia-w.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/windows.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/wirsindhandwerk.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/wix.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/wizards-of-the-coast.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/wodu.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/wolf-pack-battalion.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/wordpress-simple.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/wordpress.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/wpbeginner.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/wpexplorer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/wpforms.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/wpressr.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/xbox.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/xing.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/y-combinator.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/yahoo.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/yammer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/yandex-international.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/yandex.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/yarn.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/yelp.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/yoast.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/youtube.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/brands/zhihu.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/address-book.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/address-card.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/bell-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/bell.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/bookmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/building.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/calendar-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/calendar-days.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/calendar-minus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/calendar-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/calendar-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/calendar.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/chart-bar.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/chess-bishop.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/chess-king.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/chess-knight.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/chess-pawn.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/chess-queen.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/chess-rook.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/circle-dot.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/circle-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/circle-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/circle-pause.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/circle-play.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/circle-question.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/circle-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/circle-stop.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/circle-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/circle-user.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/circle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/circle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/clipboard.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/clock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/clone.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/closed-captioning.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/comment-dots.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/comment.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/comments.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/compass.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/copy.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/copyright.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/credit-card.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/envelope-open.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/envelope.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/eye-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/eye.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-angry.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-dizzy.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-flushed.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-frown-open.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-frown.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-grimace.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-grin-beam-sweat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-grin-beam.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-grin-hearts.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-grin-squint-tears.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-grin-squint.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-grin-stars.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-grin-tears.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-grin-tongue-squint.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-grin-tongue-wink.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-grin-tongue.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-grin-wide.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-grin-wink.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-grin.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-kiss-beam.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-kiss-wink-heart.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-kiss.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-laugh-beam.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-laugh-squint.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-laugh-wink.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-laugh.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-meh-blank.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-meh.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-rolling-eyes.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-sad-cry.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-sad-tear.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-smile-beam.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-smile-wink.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-smile.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-surprise.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/face-tired.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/file-audio.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/file-code.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/file-excel.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/file-image.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/file-lines.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/file-pdf.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/file-powerpoint.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/file-video.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/file-word.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/file-zipper.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/file.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/flag.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/floppy-disk.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/folder-closed.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/folder-open.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/folder.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/font-awesome.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/futbol.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/gem.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/hand-back-fist.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/hand-lizard.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/hand-peace.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/hand-point-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/hand-point-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/hand-point-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/hand-point-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/hand-pointer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/hand-scissors.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/hand-spock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/hand.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/handshake.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/hard-drive.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/heart.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/hospital.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/hourglass-half.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/hourglass.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/id-badge.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/id-card.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/image.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/images.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/keyboard.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/lemon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/life-ring.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/lightbulb.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/map.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/message.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/money-bill-1.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/moon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/newspaper.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/note-sticky.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/object-group.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/object-ungroup.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/paper-plane.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/paste.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/pen-to-square.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/rectangle-list.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/rectangle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/registered.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/share-from-square.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/snowflake.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/square-caret-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/square-caret-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/square-caret-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/square-caret-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/square-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/square-full.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/square-minus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/square-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/square.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/star-half-stroke.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/star-half.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/star.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/sun.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/thumbs-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/thumbs-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/trash-can.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/user.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/window-maximize.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/window-minimize.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/regular/window-restore.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/0.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/1.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/2.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/3.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/4.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/5.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/6.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/7.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/8.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/9.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/a.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/address-book.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/address-card.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/align-center.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/align-justify.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/align-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/align-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/anchor-circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/anchor-circle-exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/anchor-circle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/anchor-lock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/anchor.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/angle-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/angle-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/angle-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/angle-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/angles-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/angles-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/angles-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/angles-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ankh.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/apple-whole.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/archway.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-down-1-9.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-down-9-1.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-down-a-z.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-down-long.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-down-short-wide.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-down-up-across-line.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-down-up-lock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-down-wide-short.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-down-z-a.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-left-long.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-pointer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-right-arrow-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-right-from-bracket.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-right-long.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-right-to-bracket.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-right-to-city.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-rotate-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-rotate-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-trend-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-trend-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-turn-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-turn-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-up-1-9.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-up-9-1.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-up-a-z.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-up-from-bracket.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-up-from-ground-water.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-up-from-water-pump.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-up-long.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-up-right-dots.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-up-right-from-square.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-up-short-wide.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-up-wide-short.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-up-z-a.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrow-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrows-down-to-line.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrows-down-to-people.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrows-left-right-to-line.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrows-left-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrows-rotate.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrows-spin.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrows-split-up-and-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrows-to-circle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrows-to-dot.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrows-to-eye.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrows-turn-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrows-turn-to-dots.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrows-up-down-left-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrows-up-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/arrows-up-to-line.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/asterisk.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/at.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/atom.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/audio-description.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/austral-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/award.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/b.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/baby-carriage.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/baby.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/backward-fast.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/backward-step.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/backward.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bacon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bacteria.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bacterium.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bag-shopping.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bahai.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/baht-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ban-smoking.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ban.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bandage.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bangladeshi-taka-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/barcode.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bars-progress.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bars-staggered.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bars.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/baseball-bat-ball.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/baseball.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/basket-shopping.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/basketball.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bath.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/battery-empty.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/battery-full.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/battery-half.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/battery-quarter.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/battery-three-quarters.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bed-pulse.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bed.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/beer-mug-empty.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bell-concierge.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bell-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bell.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bezier-curve.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bicycle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/binoculars.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/biohazard.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bitcoin-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/blender-phone.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/blender.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/blog.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bold.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bolt-lightning.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bolt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bomb.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bone.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bong.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/book-atlas.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/book-bible.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/book-bookmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/book-journal-whills.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/book-medical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/book-open-reader.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/book-open.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/book-quran.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/book-skull.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/book-tanakh.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/book.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bookmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/border-all.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/border-none.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/border-top-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bore-hole.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bottle-droplet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bottle-water.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bowl-food.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bowl-rice.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bowling-ball.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/box-archive.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/box-open.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/box-tissue.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/box.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/boxes-packing.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/boxes-stacked.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/braille.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/brain.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/brazilian-real-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bread-slice.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bridge-circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bridge-circle-exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bridge-circle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bridge-lock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bridge-water.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bridge.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/briefcase-medical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/briefcase.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/broom-ball.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/broom.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/brush.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bucket.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bug-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bug.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bugs.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/building-circle-arrow-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/building-circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/building-circle-exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/building-circle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/building-columns.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/building-flag.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/building-lock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/building-ngo.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/building-shield.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/building-un.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/building-user.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/building-wheat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/building.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bullhorn.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bullseye.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/burger.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/burst.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bus-simple.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/bus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/business-time.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/c.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cable-car.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cake-candles.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/calculator.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/calendar-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/calendar-day.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/calendar-days.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/calendar-minus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/calendar-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/calendar-week.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/calendar-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/calendar.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/camera-retro.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/camera-rotate.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/camera.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/campground.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/candy-cane.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cannabis.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/capsules.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/car-battery.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/car-burst.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/car-on.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/car-rear.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/car-side.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/car-tunnel.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/car.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/caravan.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/caret-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/caret-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/caret-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/caret-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/carrot.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cart-arrow-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cart-flatbed-suitcase.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cart-flatbed.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cart-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cart-shopping.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cash-register.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cedi-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cent-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/certificate.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chair.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chalkboard-user.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chalkboard.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/champagne-glasses.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/charging-station.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chart-area.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chart-bar.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chart-column.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chart-gantt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chart-line.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chart-pie.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chart-simple.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/check-double.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/check-to-slot.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cheese.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chess-bishop.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chess-board.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chess-king.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chess-knight.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chess-pawn.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chess-queen.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chess-rook.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chess.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chevron-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chevron-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chevron-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/chevron-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/child-combatant.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/child-dress.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/child-reaching.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/child.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/children.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/church.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-arrow-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-arrow-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-arrow-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-arrow-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-chevron-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-chevron-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-chevron-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-chevron-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-dollar-to-slot.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-dot.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-h.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-half-stroke.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-info.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-minus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-nodes.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-notch.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-pause.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-play.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-question.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-radiation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-stop.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-user.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/circle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/city.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/clapperboard.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/clipboard-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/clipboard-list.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/clipboard-question.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/clipboard-user.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/clipboard.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/clock-rotate-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/clock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/clone.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/closed-captioning.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cloud-arrow-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cloud-arrow-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cloud-bolt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cloud-meatball.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cloud-moon-rain.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cloud-moon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cloud-rain.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cloud-showers-heavy.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cloud-showers-water.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cloud-sun-rain.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cloud-sun.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cloud.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/clover.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/code-branch.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/code-commit.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/code-compare.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/code-fork.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/code-merge.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/code-pull-request.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/code.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/coins.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/colon-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/comment-dollar.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/comment-dots.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/comment-medical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/comment-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/comment-sms.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/comment.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/comments-dollar.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/comments.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/compact-disc.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/compass-drafting.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/compass.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/compress.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/computer-mouse.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/computer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cookie-bite.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cookie.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/copy.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/copyright.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/couch.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cow.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/credit-card.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/crop-simple.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/crop.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cross.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/crosshairs.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/crow.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/crown.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/crutch.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cruzeiro-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cube.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cubes-stacked.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/cubes.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/d.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/database.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/delete-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/democrat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/desktop.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dharmachakra.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/diagram-next.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/diagram-predecessor.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/diagram-project.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/diagram-successor.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/diamond-turn-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/diamond.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dice-d20.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dice-d6.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dice-five.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dice-four.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dice-one.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dice-six.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dice-three.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dice-two.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dice.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/disease.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/display.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/divide.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dna.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dog.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dollar-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dolly.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dong-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/door-closed.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/door-open.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dove.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/down-left-and-up-right-to-center.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/down-long.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/download.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dragon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/draw-polygon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/droplet-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/droplet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/drum-steelpan.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/drum.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/drumstick-bite.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dumbbell.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dumpster-fire.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dumpster.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/dungeon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/e.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ear-deaf.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ear-listen.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/earth-africa.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/earth-americas.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/earth-asia.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/earth-europe.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/earth-oceania.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/egg.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/eject.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/elevator.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ellipsis-vertical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ellipsis.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/envelope-circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/envelope-open-text.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/envelope-open.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/envelope.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/envelopes-bulk.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/equals.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/eraser.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ethernet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/euro-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/expand.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/explosion.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/eye-dropper.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/eye-low-vision.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/eye-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/eye.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/f.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-angry.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-dizzy.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-flushed.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-frown-open.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-frown.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-grimace.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-grin-beam-sweat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-grin-beam.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-grin-hearts.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-grin-squint-tears.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-grin-squint.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-grin-stars.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-grin-tears.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-grin-tongue-squint.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-grin-tongue-wink.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-grin-tongue.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-grin-wide.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-grin-wink.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-grin.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-kiss-beam.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-kiss-wink-heart.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-kiss.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-laugh-beam.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-laugh-squint.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-laugh-wink.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-laugh.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-meh-blank.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-meh.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-rolling-eyes.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-sad-cry.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-sad-tear.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-smile-beam.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-smile-wink.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-smile.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-surprise.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/face-tired.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/fan.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/faucet-drip.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/faucet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/fax.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/feather-pointed.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/feather.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ferry.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-arrow-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-arrow-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-audio.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-circle-exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-circle-minus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-circle-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-circle-question.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-circle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-code.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-contract.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-csv.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-excel.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-export.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-image.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-import.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-invoice-dollar.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-invoice.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-lines.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-medical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-pdf.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-pen.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-powerpoint.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-prescription.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-shield.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-signature.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-video.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-waveform.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-word.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file-zipper.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/file.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/fill-drip.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/fill.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/film.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/filter-circle-dollar.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/filter-circle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/filter.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/fingerprint.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/fire-burner.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/fire-extinguisher.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/fire-flame-curved.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/fire-flame-simple.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/fire.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/fish-fins.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/fish.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/flag-checkered.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/flag-usa.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/flag.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/flask-vial.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/flask.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/floppy-disk.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/florin-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/folder-closed.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/folder-minus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/folder-open.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/folder-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/folder-tree.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/folder.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/font-awesome.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/font.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/football.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/forward-fast.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/forward-step.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/forward.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/franc-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/frog.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/futbol.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/g.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/gamepad.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/gas-pump.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/gauge-high.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/gauge-simple-high.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/gauge-simple.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/gauge.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/gavel.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/gear.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/gears.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/gem.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/genderless.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ghost.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/gift.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/gifts.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/glass-water-droplet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/glass-water.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/glasses.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/globe.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/golf-ball-tee.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/gopuram.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/graduation-cap.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/greater-than-equal.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/greater-than.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/grip-lines-vertical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/grip-lines.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/grip-vertical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/grip.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/group-arrows-rotate.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/guarani-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/guitar.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/gun.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/h.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hammer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hamsa.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-back-fist.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-dots.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-fist.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-holding-dollar.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-holding-droplet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-holding-hand.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-holding-heart.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-holding-medical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-holding.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-lizard.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-middle-finger.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-peace.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-point-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-point-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-point-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-point-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-pointer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-scissors.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-sparkles.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand-spock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hand.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/handcuffs.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hands-asl-interpreting.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hands-bound.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hands-bubbles.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hands-clapping.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hands-holding-child.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hands-holding-circle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hands-holding.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hands-praying.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hands.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/handshake-angle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/handshake-simple-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/handshake-simple.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/handshake-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/handshake.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hanukiah.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hard-drive.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hashtag.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hat-cowboy-side.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hat-cowboy.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hat-wizard.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/head-side-cough-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/head-side-cough.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/head-side-mask.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/head-side-virus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/heading.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/headphones-simple.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/headphones.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/headset.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/heart-circle-bolt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/heart-circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/heart-circle-exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/heart-circle-minus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/heart-circle-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/heart-circle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/heart-crack.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/heart-pulse.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/heart.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/helicopter-symbol.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/helicopter.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/helmet-safety.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/helmet-un.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/highlighter.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hill-avalanche.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hill-rockslide.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hippo.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hockey-puck.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/holly-berry.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/horse-head.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/horse.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hospital-user.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hospital.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hot-tub-person.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hotdog.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hotel.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hourglass-end.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hourglass-half.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hourglass-start.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hourglass.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-chimney-crack.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-chimney-medical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-chimney-user.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-chimney-window.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-chimney.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-circle-exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-circle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-crack.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-fire.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-flag.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-flood-water-circle-arrow-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-flood-water.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-laptop.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-lock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-medical-circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-medical-circle-exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-medical-circle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-medical-flag.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-medical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-signal.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-tsunami.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house-user.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/house.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hryvnia-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/hurricane.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/i-cursor.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/i.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ice-cream.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/icicles.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/icons.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/id-badge.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/id-card-clip.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/id-card.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/igloo.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/image-portrait.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/image.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/images.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/inbox.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/indent.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/indian-rupee-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/industry.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/infinity.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/info.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/italic.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/j.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/jar-wheat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/jar.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/jedi.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/jet-fighter-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/jet-fighter.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/joint.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/jug-detergent.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/k.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/kaaba.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/key.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/keyboard.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/khanda.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/kip-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/kit-medical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/kitchen-set.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/kiwi-bird.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/l.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/land-mine-on.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/landmark-dome.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/landmark-flag.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/landmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/language.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/laptop-code.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/laptop-file.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/laptop-medical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/laptop.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/lari-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/layer-group.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/leaf.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/left-long.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/left-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/lemon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/less-than-equal.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/less-than.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/life-ring.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/lightbulb.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/lines-leaning.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/link-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/link.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/lira-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/list-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/list-ol.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/list-ul.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/list.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/litecoin-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/location-arrow.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/location-crosshairs.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/location-dot.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/location-pin-lock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/location-pin.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/lock-open.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/lock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/locust.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/lungs-virus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/lungs.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/m.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/magnet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/magnifying-glass-arrow-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/magnifying-glass-chart.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/magnifying-glass-dollar.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/magnifying-glass-location.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/magnifying-glass-minus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/magnifying-glass-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/magnifying-glass.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/manat-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/map-location-dot.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/map-location.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/map-pin.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/map.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/marker.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mars-and-venus-burst.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mars-and-venus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mars-double.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mars-stroke-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mars-stroke-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mars-stroke.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mars.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/martini-glass-citrus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/martini-glass-empty.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/martini-glass.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mask-face.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mask-ventilator.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mask.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/masks-theater.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mattress-pillow.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/maximize.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/medal.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/memory.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/menorah.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mercury.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/message.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/meteor.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/microchip.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/microphone-lines-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/microphone-lines.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/microphone-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/microphone.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/microscope.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mill-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/minimize.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/minus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mitten.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mobile-button.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mobile-retro.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mobile-screen-button.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mobile-screen.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mobile.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/money-bill-1-wave.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/money-bill-1.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/money-bill-transfer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/money-bill-trend-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/money-bill-wave.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/money-bill-wheat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/money-bill.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/money-bills.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/money-check-dollar.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/money-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/monument.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/moon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mortar-pestle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mosque.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mosquito-net.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mosquito.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/motorcycle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mound.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mountain-city.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mountain-sun.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mountain.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mug-hot.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/mug-saucer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/music.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/n.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/naira-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/network-wired.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/neuter.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/newspaper.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/not-equal.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/notdef.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/note-sticky.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/notes-medical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/o.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/object-group.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/object-ungroup.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/oil-can.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/oil-well.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/om.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/otter.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/outdent.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/p.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/pager.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/paint-roller.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/paintbrush.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/palette.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/pallet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/panorama.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/paper-plane.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/paperclip.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/parachute-box.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/paragraph.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/passport.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/paste.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/pause.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/paw.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/peace.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/pen-clip.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/pen-fancy.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/pen-nib.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/pen-ruler.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/pen-to-square.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/pen.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/pencil.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/people-arrows.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/people-carry-box.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/people-group.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/people-line.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/people-pulling.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/people-robbery.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/people-roof.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/pepper-hot.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/percent.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-arrow-down-to-line.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-arrow-up-from-line.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-biking.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-booth.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-breastfeeding.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-burst.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-cane.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-chalkboard.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-circle-exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-circle-minus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-circle-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-circle-question.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-circle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-digging.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-dots-from-line.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-dress-burst.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-dress.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-drowning.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-falling-burst.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-falling.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-half-dress.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-harassing.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-hiking.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-military-pointing.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-military-rifle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-military-to-person.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-praying.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-pregnant.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-rays.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-rifle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-running.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-shelter.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-skating.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-skiing-nordic.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-skiing.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-snowboarding.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-swimming.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-through-window.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-walking-arrow-loop-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-walking-arrow-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-walking-dashed-line-arrow-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-walking-luggage.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-walking-with-cane.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person-walking.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/person.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/peseta-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/peso-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/phone-flip.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/phone-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/phone-volume.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/phone.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/photo-film.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/piggy-bank.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/pills.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/pizza-slice.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/place-of-worship.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plane-arrival.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plane-circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plane-circle-exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plane-circle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plane-departure.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plane-lock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plane-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plane-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plane.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plant-wilt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plate-wheat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/play.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plug-circle-bolt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plug-circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plug-circle-exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plug-circle-minus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plug-circle-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plug-circle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plug.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plus-minus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/podcast.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/poo-storm.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/poo.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/poop.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/power-off.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/prescription-bottle-medical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/prescription-bottle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/prescription.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/print.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/pump-medical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/pump-soap.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/puzzle-piece.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/q.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/qrcode.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/question.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/quote-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/quote-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/r.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/radiation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/radio.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/rainbow.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ranking-star.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/receipt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/record-vinyl.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/rectangle-ad.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/rectangle-list.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/rectangle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/recycle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/registered.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/repeat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/reply-all.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/reply.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/republican.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/restroom.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/retweet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ribbon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/right-from-bracket.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/right-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/right-long.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/right-to-bracket.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ring.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/road-barrier.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/road-bridge.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/road-circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/road-circle-exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/road-circle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/road-lock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/road-spikes.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/road.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/robot.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/rocket.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/rotate-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/rotate-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/rotate.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/route.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/rss.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ruble-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/rug.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ruler-combined.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ruler-horizontal.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ruler-vertical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ruler.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/rupee-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/rupiah-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/s.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sack-dollar.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sack-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sailboat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/satellite-dish.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/satellite.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/scale-balanced.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/scale-unbalanced-flip.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/scale-unbalanced.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/school-circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/school-circle-exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/school-circle-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/school-flag.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/school-lock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/school.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/scissors.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/screwdriver-wrench.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/screwdriver.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/scroll-torah.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/scroll.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sd-card.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/section.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/seedling.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/server.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shapes.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/share-from-square.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/share-nodes.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/share.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sheet-plastic.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shekel-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shield-cat.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shield-dog.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shield-halved.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shield-heart.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shield-virus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shield.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ship.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shirt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shoe-prints.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shop-lock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shop-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shop.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shower.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shrimp.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shuffle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/shuttle-space.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sign-hanging.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/signal.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/signature.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/signs-post.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sim-card.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sink.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sitemap.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/skull-crossbones.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/skull.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sleigh.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sliders.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/smog.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/smoking.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/snowflake.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/snowman.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/snowplow.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/soap.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/socks.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/solar-panel.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sort-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sort-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sort.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/spa.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/spaghetti-monster-flying.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/spell-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/spider.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/spinner.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/splotch.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/spoon.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/spray-can-sparkles.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/spray-can.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-arrow-up-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-caret-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-caret-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-caret-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-caret-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-envelope.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-full.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-h.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-minus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-nfi.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-parking.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-pen.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-person-confined.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-phone-flip.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-phone.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-poll-horizontal.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-poll-vertical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-root-variable.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-rss.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-share-nodes.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-up-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-virus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/square.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/staff-snake.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/stairs.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/stamp.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/stapler.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/star-and-crescent.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/star-half-stroke.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/star-half.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/star-of-david.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/star-of-life.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/star.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sterling-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/stethoscope.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/stop.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/stopwatch-20.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/stopwatch.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/store-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/store.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/street-view.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/strikethrough.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/stroopwafel.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/subscript.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/suitcase-medical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/suitcase-rolling.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/suitcase.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sun-plant-wilt.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/sun.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/superscript.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/swatchbook.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/synagogue.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/syringe.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/t.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/table-cells-large.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/table-cells.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/table-columns.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/table-list.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/table-tennis-paddle-ball.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/table.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tablet-button.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tablet-screen-button.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tablet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tablets.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tachograph-digital.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tag.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tags.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tape.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tarp-droplet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tarp.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/taxi.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/teeth-open.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/teeth.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/temperature-arrow-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/temperature-arrow-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/temperature-empty.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/temperature-full.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/temperature-half.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/temperature-high.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/temperature-low.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/temperature-quarter.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/temperature-three-quarters.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tenge-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tent-arrow-down-to-line.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tent-arrow-left-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tent-arrow-turn-left.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tent-arrows-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tent.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tents.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/terminal.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/text-height.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/text-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/text-width.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/thermometer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/thumbs-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/thumbs-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/thumbtack.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ticket-simple.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/ticket.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/timeline.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/toggle-off.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/toggle-on.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/toilet-paper-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/toilet-paper.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/toilet-portable.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/toilet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/toilets-portable.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/toolbox.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tooth.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/torii-gate.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tornado.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tower-broadcast.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tower-cell.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tower-observation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tractor.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/trademark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/traffic-light.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/trailer.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/train-subway.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/train-tram.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/train.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/transgender.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/trash-arrow-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/trash-can-arrow-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/trash-can.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/trash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tree-city.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tree.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/triangle-exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/trophy.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/trowel-bricks.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/trowel.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/truck-arrow-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/truck-droplet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/truck-fast.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/truck-field-un.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/truck-field.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/truck-front.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/truck-medical.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/truck-monster.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/truck-moving.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/truck-pickup.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/truck-plane.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/truck-ramp-box.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/truck.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tty.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/turkish-lira-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/turn-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/turn-up.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/tv.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/u.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/umbrella-beach.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/umbrella.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/underline.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/universal-access.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/unlock-keyhole.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/unlock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/up-down-left-right.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/up-down.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/up-long.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/up-right-and-down-left-from-center.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/up-right-from-square.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/upload.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-astronaut.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-clock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-doctor.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-gear.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-graduate.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-group.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-injured.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-large-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-large.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-lock.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-minus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-ninja.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-nurse.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-pen.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-plus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-secret.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-shield.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-tag.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-tie.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/user.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/users-between-lines.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/users-gear.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/users-line.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/users-rays.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/users-rectangle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/users-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/users-viewfinder.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/users.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/utensils.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/v.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/van-shuttle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/vault.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/vector-square.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/venus-double.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/venus-mars.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/venus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/vest-patches.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/vest.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/vial-circle-check.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/vial-virus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/vial.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/vials.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/video-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/video.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/vihara.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/virus-covid-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/virus-covid.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/virus-slash.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/virus.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/viruses.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/voicemail.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/volcano.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/volleyball.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/volume-high.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/volume-low.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/volume-off.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/volume-xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/vr-cardboard.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/w.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/walkie-talkie.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/wallet.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/wand-magic-sparkles.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/wand-magic.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/wand-sparkles.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/warehouse.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/water-ladder.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/water.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/wave-square.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/weight-hanging.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/weight-scale.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/wheat-awn-circle-exclamation.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/wheat-awn.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/wheelchair-move.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/wheelchair.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/whiskey-glass.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/wifi.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/wind.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/window-maximize.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/window-minimize.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/window-restore.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/wine-bottle.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/wine-glass-empty.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/wine-glass.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/won-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/worm.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/wrench.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/x-ray.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/x.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/xmark.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/xmarks-lines.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/y.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/yen-sign.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/yin-yang.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/svgs/solid/z.svg create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/webfonts/fa-brands-400.ttf create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/webfonts/fa-brands-400.woff2 create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/webfonts/fa-regular-400.ttf create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/webfonts/fa-regular-400.woff2 create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/webfonts/fa-solid-900.ttf create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/webfonts/fa-solid-900.woff2 create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/webfonts/fa-v4compatibility.ttf create mode 100644 ss-admin/src/main/resources/static/lib/fontawesome-free-6.4.0-web/webfonts/fa-v4compatibility.woff2 create mode 100644 ss-admin/src/main/resources/static/lib/highlight/highlight.min.css create mode 100644 ss-admin/src/main/resources/static/lib/highlight/highlight.min.js create mode 100644 ss-admin/src/main/resources/static/lib/jq-module/jquery.particleground.min.js create mode 100644 ss-admin/src/main/resources/static/lib/jq-module/paigusu.min.js create mode 100644 ss-admin/src/main/resources/static/lib/jq-module/zyupload/zyupload-1.0.0.min.css create mode 100644 ss-admin/src/main/resources/static/lib/jq-module/zyupload/zyupload-1.0.0.min.js create mode 100644 ss-admin/src/main/resources/static/lib/jquery-3.4.1/jquery-3.4.1.min.js create mode 100644 ss-admin/src/main/resources/static/lib/jsencrypt/jsencrypt.min.js create mode 100644 ss-admin/src/main/resources/static/lib/jsencrypt/rsa.js create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.11.5/css/layui.css create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.11.5/font/iconfont.eot create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.11.5/font/iconfont.svg create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.11.5/font/iconfont.ttf create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.11.5/font/iconfont.woff create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.11.5/font/iconfont.woff2 create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.11.5/layui.js create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/layui.css create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/code.css create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/laydate/default/laydate.css create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/icon-ext.png create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/icon.png create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/layer.css create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/loading-0.gif create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/loading-1.gif create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/loading-2.gif create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.eot create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.svg create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.ttf create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.woff create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.woff2 create mode 100644 ss-admin/src/main/resources/static/lib/layui-v2.6.3/layui.js create mode 100644 ss-admin/src/main/resources/static/lib/qrcode/qrcode.min.js create mode 100644 ss-admin/src/main/resources/templates/cloud/account/department/add.html create mode 100644 ss-admin/src/main/resources/templates/cloud/account/department/edit.html create mode 100644 ss-admin/src/main/resources/templates/cloud/account/department/index.html create mode 100644 ss-admin/src/main/resources/templates/cloud/account/enterprise/add.html create mode 100644 ss-admin/src/main/resources/templates/cloud/account/enterprise/edit.html create mode 100644 ss-admin/src/main/resources/templates/cloud/account/enterprise/index.html create mode 100644 ss-admin/src/main/resources/templates/cloud/account/user/add.html create mode 100644 ss-admin/src/main/resources/templates/cloud/account/user/authRole.html create mode 100644 ss-admin/src/main/resources/templates/cloud/account/user/edit.html create mode 100644 ss-admin/src/main/resources/templates/cloud/account/user/editDepartment.html create mode 100644 ss-admin/src/main/resources/templates/cloud/account/user/index.html create mode 100644 ss-admin/src/main/resources/templates/cloud/account/user/selectDepartment.html create mode 100644 ss-admin/src/main/resources/templates/cloud/account/user/updateDepartment.html create mode 100644 ss-admin/src/main/resources/templates/cloud/collect/index.html create mode 100644 ss-admin/src/main/resources/templates/cloud/lately/index.html create mode 100644 ss-admin/src/main/resources/templates/cloud/my/index.html create mode 100644 ss-admin/src/main/resources/templates/cloud/recycle/index.html create mode 100644 ss-admin/src/main/resources/templates/cloud/role/role/add.html create mode 100644 ss-admin/src/main/resources/templates/cloud/role/role/authUser.html create mode 100644 ss-admin/src/main/resources/templates/cloud/role/role/edit.html create mode 100644 ss-admin/src/main/resources/templates/cloud/role/role/index.html create mode 100644 ss-admin/src/main/resources/templates/cloud/share/index.html create mode 100644 ss-admin/src/main/resources/templates/cloud/space/file/add.html create mode 100644 ss-admin/src/main/resources/templates/cloud/space/file/authFile.html create mode 100644 ss-admin/src/main/resources/templates/cloud/space/file/authRole.html create mode 100644 ss-admin/src/main/resources/templates/cloud/space/file/edit.html create mode 100644 ss-admin/src/main/resources/templates/cloud/space/file/index.html create mode 100644 ss-admin/src/main/resources/templates/cloud/space/file/updateAuthFile.html create mode 100644 ss-admin/src/main/resources/templates/cloud/space/recycle/index.html create mode 100644 ss-admin/src/main/resources/templates/cloud/upload/changeIndex.html create mode 100644 ss-admin/src/main/resources/templates/cloud/upload/index.html create mode 100644 ss-admin/src/main/resources/templates/component/alipay/index.html create mode 100644 ss-admin/src/main/resources/templates/component/qiniuOss/index.html create mode 100644 ss-admin/src/main/resources/templates/component/wechatPay/index.html create mode 100644 ss-admin/src/main/resources/templates/error/404.html create mode 100644 ss-admin/src/main/resources/templates/error/500.html create mode 100644 ss-admin/src/main/resources/templates/error/error.html create mode 100644 ss-admin/src/main/resources/templates/file/pdf.html create mode 100644 ss-admin/src/main/resources/templates/system/advanced/generator.html create mode 100644 ss-admin/src/main/resources/templates/system/advanced/monitorServer.html create mode 100644 ss-admin/src/main/resources/templates/system/index.html create mode 100644 ss-admin/src/main/resources/templates/system/log/login.html create mode 100644 ss-admin/src/main/resources/templates/system/log/request.html create mode 100644 ss-admin/src/main/resources/templates/system/login.html create mode 100644 ss-admin/src/main/resources/templates/system/login1.html create mode 100644 ss-admin/src/main/resources/templates/system/menu/add.html create mode 100644 ss-admin/src/main/resources/templates/system/menu/edit.html create mode 100644 ss-admin/src/main/resources/templates/system/menu/index.html create mode 100644 ss-admin/src/main/resources/templates/system/role/add.html create mode 100644 ss-admin/src/main/resources/templates/system/role/authUser.html create mode 100644 ss-admin/src/main/resources/templates/system/role/edit.html create mode 100644 ss-admin/src/main/resources/templates/system/role/index.html create mode 100644 ss-admin/src/main/resources/templates/system/user/add.html create mode 100644 ss-admin/src/main/resources/templates/system/user/authRole.html create mode 100644 ss-admin/src/main/resources/templates/system/user/edit.html create mode 100644 ss-admin/src/main/resources/templates/system/user/index.html create mode 100644 ss-admin/src/main/resources/templates/system/userCenter/password.html create mode 100644 ss-admin/src/main/resources/templates/system/userCenter/setting.html create mode 100644 ss-admin/src/main/resources/templates/system/welcome.html create mode 100644 ss-admin/src/test/java/com/zxdmy/excite/admin/CodeGenerator.java create mode 100644 ss-admin/src/test/java/com/zxdmy/excite/admin/ExciteAdminApplicationTests.java create mode 100644 ss-admin/src/test/java/com/zxdmy/excite/admin/RsaTest.java create mode 100644 ss-admin/src/test/java/com/zxdmy/excite/admin/SmartDocGenerator.java create mode 100644 ss-admin/src/test/java/com/zxdmy/excite/admin/component/AlipayTest.java create mode 100644 ss-admin/src/test/java/com/zxdmy/excite/admin/component/AliyunSmsTest.java create mode 100644 ss-admin/src/test/java/com/zxdmy/excite/admin/component/WeChatPayTest.java create mode 100644 ss-admin/src/test/java/com/zxdmy/excite/admin/service/IGlobalConfigServiceTest.java create mode 100644 ss-admin/src/test/java/com/zxdmy/excite/admin/service/ISysMenuServiceTest.java create mode 100644 ss-admin/src/test/java/com/zxdmy/excite/admin/service/ISysUserServiceTest.java create mode 100644 ss-admin/src/test/java/com/zxdmy/excite/admin/utils/RedisUtilsTest.java create mode 100644 ss-common/README.md create mode 100644 ss-common/pom.xml create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/base/BaseController.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/base/BaseResult.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/base/ErrorController.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/config/ErrorPageConfig.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/config/ExciteConfig.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/config/KaptchaConfig.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/config/MybatisPlusConfig.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/config/RedisConfig.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/config/SpringDocConfig.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/entity/CaptchaDomain.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/entity/GlobalConfig.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/entity/PageList.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/enums/CloudCode.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/enums/ReturnCode.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/enums/SystemCode.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/exception/GlobalException.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/exception/ServiceException.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/mapper/GlobalConfigMapper.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/service/CaptchaService.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/service/IGlobalConfigService.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/service/RedisService.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/service/impl/GlobalConfigServiceImpl.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/utils/ArithUtils.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/utils/DateUtils.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/utils/HttpServletRequestUtil.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/utils/KaptchaMathOneTextCreator.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/utils/KaptchaMathTwoTextCreator.java create mode 100644 ss-common/src/main/java/com/zxdmy/excite/common/utils/MyCaptchaUtil.java create mode 100644 ss-common/src/main/resources/mapper/GlobalConfigMapper.xml create mode 100644 ss-component/README.md create mode 100644 ss-component/pom.xml create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/alipay/AlipayService.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/aliyun/AliyunOssService.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/aliyun/AliyunSmsService.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/bo/AlipayBO.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/bo/AliyunOssBO.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/bo/AliyunSmsBO.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/bo/JustAuthBO.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/bo/QiniuOssBO.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/bo/WeChatPayBO.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/justauth/JustAuthService.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/oss/AliOSSProperties.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/oss/AliOSSUtils.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/oss/OSSVO.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/qiniu/QiniuOssService.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/vo/AliyunOssPolicyVO.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/vo/QiniuFileVO.java create mode 100644 ss-component/src/main/java/com/zxdmy/excite/component/wechat/WeChatPayService.java create mode 100644 ss-framework/README.md create mode 100644 ss-framework/pom.xml create mode 100644 ss-framework/src/main/java/com/zxdmy/excite/framework/aop/AnnotationSaveLoginLog.java create mode 100644 ss-framework/src/main/java/com/zxdmy/excite/framework/aop/AnnotationSaveReLog.java create mode 100644 ss-framework/src/main/java/com/zxdmy/excite/framework/aop/SaveLogAspect.java create mode 100644 ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/Server.java create mode 100644 ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Cpu.java create mode 100644 ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Jvm.java create mode 100644 ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Mem.java create mode 100644 ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Sys.java create mode 100644 ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/SysFile.java create mode 100644 ss-framework/src/main/java/com/zxdmy/excite/framework/satoken/SaTokenConfig.java create mode 100644 ss-framework/src/main/java/com/zxdmy/excite/framework/satoken/SaTokenListenerConfig.java create mode 100644 ss-framework/src/main/java/com/zxdmy/excite/framework/satoken/SaTokenStpInterfaceImpl.java create mode 100644 ss-system/README.md create mode 100644 ss-system/pom.xml create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/SysLogLogin.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/SysLogRequest.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/SysMenu.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/SysRole.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/SysRoleMenu.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/SysUser.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/SysUserRole.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/account/CloudCompany.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/account/CloudDepartment.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/account/CloudDepartmentUser.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/collection/CloudUserCollection.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/lately/CloudUserLately.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/role/CloudRole.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/role/CloudRoleFile.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/role/CloudRoleUser.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/space/CloudFile.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/space/CloudFileRole.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/trace/CloudFileTrace.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/DepartmentTreeDTO.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/DepartmentUserTreeNode.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/FileTreeDTO.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/RoleTreeDTO.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/req/account/ReqCompany.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/req/account/ReqDepartment.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/req/collection/ReqCloudUserCollection.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/req/lately/ReqCloudUserLately.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/req/role/ReqRole.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/req/space/ReqCloudFile.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/req/space/ReqCloudFileRole.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/req/trace/ReqCloudFileTrace.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/account/CompanyVo.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/account/DepartmentVo.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/collection/CloudUserCollectionVo.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/lately/CloudUserLatelyVo.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/role/RoleVo.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudFileRoleVo.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudFileVo.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudFilleUserVo.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudRoleFileVo.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudRoleFolderVo.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/trace/CloudFileTraceVo.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysLogLoginMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysLogRequestMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysMenuMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysRoleMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysRoleMenuMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysUserMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysUserRoleMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/account/CloudCompanyMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/account/CloudDepartmentMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/account/CloudDepartmentUserMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/collection/CloudUserCollectionMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/lately/CloudUserLatelyMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/role/CloudRoleFileMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/role/CloudRoleMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/role/CloudRoleUserMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/space/CloudFileMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/space/CloudFileRoleMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/trace/CloudFileTraceMapper.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/ISysLogLoginService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/ISysLogRequestService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/ISysMenuService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/ISysRoleMenuService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/ISysRoleService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/ISysUserRoleService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/ISysUserService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/account/ICloudCompanyService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/account/ICloudDepartmentService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/account/ICloudDepartmentUserService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/collection/ICloudUserCollectionService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/lately/ICloudUserLatelyService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/role/ICloudRoleFileService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/role/ICloudRoleService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/role/ICloudRoleUserService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/space/ICloudFileRoleService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/space/ICloudFileService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/trace/ICloudFileTraceService.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysLogLoginServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysLogRequestServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysMenuServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysRoleMenuServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysRoleServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysUserRoleServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysUserServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/account/CloudCompanyServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/account/CloudDepartmentServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/account/CloudDepartmentUserServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/collection/CloudUserCollectionServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/lately/CloudUserLatelyServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/role/CloudRoleFileServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/role/CloudRoleServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/role/CloudRoleUserServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/space/CloudFileRoleServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/space/CloudFileServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/trace/CloudFileTraceServiceImpl.java create mode 100644 ss-system/src/main/java/com/zxdmy/excite/system/utils/AuthUtils.java create mode 100644 ss-system/src/main/resources/mapper/SysLogLoginMapper.xml create mode 100644 ss-system/src/main/resources/mapper/SysLogRequestMapper.xml create mode 100644 ss-system/src/main/resources/mapper/SysMenuMapper.xml create mode 100644 ss-system/src/main/resources/mapper/SysRoleMapper.xml create mode 100644 ss-system/src/main/resources/mapper/SysRoleMenuMapper.xml create mode 100644 ss-system/src/main/resources/mapper/SysUserMapper.xml create mode 100644 ss-system/src/main/resources/mapper/SysUserRoleMapper.xml create mode 100644 ss-system/src/main/resources/mapper/cloud/account/CloudCompanyMapper.xml create mode 100644 ss-system/src/main/resources/mapper/cloud/account/CloudDepartmentMapper.xml create mode 100644 ss-system/src/main/resources/mapper/cloud/account/CloudDepartmentUserMapper.xml create mode 100644 ss-system/src/main/resources/mapper/cloud/collection/CloudUserCollectionMapper.xml create mode 100644 ss-system/src/main/resources/mapper/cloud/lately/CloudUserLatelyMapper.xml create mode 100644 ss-system/src/main/resources/mapper/cloud/role/CloudRoleFileMapper.xml create mode 100644 ss-system/src/main/resources/mapper/cloud/role/CloudRoleMapper.xml create mode 100644 ss-system/src/main/resources/mapper/cloud/role/CloudRoleUserMapper.xml create mode 100644 ss-system/src/main/resources/mapper/cloud/space/CloudFileMapper.xml create mode 100644 ss-system/src/main/resources/mapper/cloud/space/CloudFileRoleMapper.xml create mode 100644 ss-system/src/main/resources/mapper/cloud/trace/CloudFileTraceMapper.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ef0de04 --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +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 +.git +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..adce168 --- /dev/null +++ b/README.md @@ -0,0 +1,138 @@ +

+ logo +

+ +

ExciteCMS-Layui

+ +

基于Spring Boot 2 + Layui 开发的内容管理系统 / 快速开发脚手架

+ +

+ + + + + + + + + + + + +

+ +## 1、主要功能简介 + ++ 用户管理:基本的增删改查与授权角色; ++ 角色管理:基本的增删改查与授权用户和授权菜单; ++ 菜单管理:基本的增删改查,其中以树状展示; ++ 日志管理:即操作日志管理、登录日志管理等功能; ++ 监控管理:即服务器监控、数据库监控等功能; ++ 开发功能:即代码生成等功能; ++ 第三方功能:如微信支付、支付宝支付、七牛云OSS等功能; ++ + +## 2、视频演示 + +详情请访问:[https://www.bilibili.com/video/BV1Wq4y1h78B](https://www.bilibili.com/video/BV1Wq4y1h78B) + +## 3、主要功能演示 + +> **系统功能**:主要实现了基本的RBAC,即用户管理、权限控制、日志管理、代码生成与系统监控等功能。其预览图如下所示。 + + + + + + + + + + + + + + + + + + +
+ +
首页
+
+ +
用户管理
+
+ +
角色管理
+
+ +
菜单/权限管理
+
+ +
操作日志
+
+ +
登录日志
+
+ +
代码生成
+
+ +
服务器监控
+
+ +> **集成功能**:主要实现了部分第三方组件功能,如支付宝、微信等支付功能,对象存储服务功能,短信服务功能等。其预览见演示视频。 + +## 4、主要技术栈 + +**后的技术栈:** + +| 技术栈 | 说明 | +| :---------------- | :----------------------- | +| Spring Boot 2.5.X | Spring框架 | +| Sa-Token | 权限认证框架 | +| thymeleaf | 前端模板引擎 | +| nekohtml | 提供非严格HTML模式支持 | +| mybatis-plus | Mybatis 的增强工具 | +| freemarker | 代码生成器模板 | +| lombok | Lombok,Java开发工具 | +| druid | 数据库连接池 | +| openapi | 接口文档 | +| fastjson | 阿里巴巴的开源JSON解析库 | + +**前端模板:** + ++ Layui ++ miniLayui + +## 5、开发文档 + +网址1:[https://excitecms.gitee.io](https://shensong.gitee.io) + +网址2:[https://excite.zxdmy.com](https://excite.zxdmy.com) + +> 以上两个开发文档网址内容一致,区别是部署的仓库不同(Gitee和GitHub)。 + +## 6、在线体验 + +网址:[http://demo.excite.zxdmy.com](http://demo.excite.zxdmy.com) + +体验账号:demo@zxdmy.com + +登录密码:123456 + +> 注:① 体验账号只有浏览权限,无增删改的权限。② 由于部分页面设置了固定的长宽,使用电脑浏览器访问体验更佳! + +## 7、支持 + +如果你觉得 ExciteCMS 还不错,可以通过点亮仓库右上角的 Star 来支持我们~ + +## 8、贡献 + +发现BUG?发现功能错误?欢迎提交**issues**:[Gitee](https://gitee.com/ExciteTeam/ExciteCMS-SpringBoot-Layui/issues) | [GitHub](https://github.com/cxh1231/ExciteCMS-SpringBoot-Layui/issues) + +## 9、开源协议 + +[Apache License 2.0](https://gitee.com/ExciteTeam/ExciteCMS-SpringBoot-Layui/blob/master/LICENSE) diff --git a/database/db_excite_cms.sql b/database/db_excite_cms.sql new file mode 100644 index 0000000..83865ff --- /dev/null +++ b/database/db_excite_cms.sql @@ -0,0 +1,396 @@ +/* + Navicat Premium Data Transfer + + Source Server : db_excite_cms + Source Server Type : MySQL + Source Server Version : 50734 + Source Host : 1.15.186.61:3306 + Source Schema : db_excite_cms + + Target Server Type : MySQL + Target Server Version : 50734 + File Encoding : 65001 + + Date: 30/01/2022 18:05:09 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for attach_file +-- ---------------------------- +DROP TABLE IF EXISTS `attach_file`; +CREATE TABLE `attach_file` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '文件主键', + `user_id` bigint(20) NULL DEFAULT NULL COMMENT '上传用户id', + `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件名(服务器内存储的)', + `file_source_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件原名(上传前)', + `file_size` int(11) NULL DEFAULT NULL COMMENT '文件大小', + `file_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件路径', + `file_type` tinyint(4) NULL DEFAULT NULL COMMENT '文件类型 1:图片 2:视频 3:文件', + `file_mime_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件类型(mime-type)', + `file_group_id` bigint(20) NULL DEFAULT 0 COMMENT '文件分组id', + `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `delete_time` datetime NULL DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1431 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '上传文件记录表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of attach_file +-- ---------------------------- + +-- ---------------------------- +-- Table structure for global_config +-- ---------------------------- +DROP TABLE IF EXISTS `global_config`; +CREATE TABLE `global_config` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键,自增', + `conf_service` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '配置信息的服务:如qiniu,aliyun', + `conf_key` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '配置信息的主键:如qiniu01、aliyunSms01等等', + `conf_value` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '配置信息的JSON值', + `encrypt` tinyint(4) NULL DEFAULT NULL COMMENT '是否加密:1-是 0-否', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `delete_time` datetime NULL DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '组件配置信息表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of global_config +-- ---------------------------- +INSERT INTO `global_config` VALUES (2, 'aliyunSms', 'aliyunSms001', '', 0, NULL, '2022-01-03 20:50:41', NULL); +INSERT INTO `global_config` VALUES (6, 'alipay', 'alipay', '666', 1, NULL, '2022-01-12 17:14:01', NULL); + +-- ---------------------------- +-- Table structure for sys_log_login +-- ---------------------------- +DROP TABLE IF EXISTS `sys_log_login`; +CREATE TABLE `sys_log_login` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', + `user_id` int(11) NULL DEFAULT NULL COMMENT '登录用户ID', + `user_account` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '登录用户账号', + `ip` varchar(127) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '登录IP', + `user_agent` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '浏览器Agent', + `req_data` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '请求数据', + `res_data` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '返回数据', + `time_cost` int(11) NULL DEFAULT NULL COMMENT '耗时', + `status` tinyint(4) NULL DEFAULT NULL COMMENT '请求状态:0-失败 | 1-成功', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `delete_time` datetime NULL DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 54 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '登录日志表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_log_login +-- ---------------------------- +INSERT INTO `sys_log_login` VALUES (53, 10000, '10000@zxdmy.com', '60.233.1.102', 'Windows 10 or Windows Server 2016;Chrome 97.0.4692.99', '[\"10000@zxdmy.com\",\"Pr+v96V9jqGTN6rgRUkGMHKjXuRyzrIVs70jtGoJmoRATDsvSTudyPD5/WqWVjs1nq4tmQX3gWYySzygIyEnOZoNWLe06AKhzId1P7Q0la75WUuLNzqbAs24kMGKfS/7SjFqmtwURHrzn0PALXtkUARhzbErcWe1h3YhFfaIm0g=\",\"0\",null]', '{\"msg\":\"登录成功!\",\"code\":200,\"data\":{\"tokenName\":\"com.zxdmy.excite\",\"tokenValue\":\"6cf72af4-eff9-4167-88c9-ad6aed4ca6be\",\"isLogin\":true,\"loginId\":\"10000\",\"loginType\":\"login\",\"tokenTimeout\":259200,\"sessionTimeout\":259200,\"tokenSessionTimeout\":-2,\"tokenActivityTimeout\":7200,\"loginDevice\":\"default-device\",\"tag\":null},\"success\":true}', 58, 1, '2022-01-30 17:43:27', NULL, NULL); + +-- ---------------------------- +-- Table structure for sys_log_request +-- ---------------------------- +DROP TABLE IF EXISTS `sys_log_request`; +CREATE TABLE `sys_log_request` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', + `user_id` int(11) NULL DEFAULT NULL COMMENT '请求用户ID', + `ip` varchar(127) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求IP', + `user_agent` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '浏览器Agent', + `req_uri` varchar(1023) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求的URI', + `req_method` varchar(31) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求方法:GET | POST | DELETE', + `req_function` varchar(511) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求的函数', + `req_data` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '请求的数据', + `res_data` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '返回的数据', + `time_cost` int(11) NULL DEFAULT NULL COMMENT '耗时', + `status` tinyint(4) NULL DEFAULT NULL COMMENT '请求状态:0-失败 | 1-成功', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `delete_time` datetime NULL DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = MyISAM AUTO_INCREMENT = 162 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '操作请求日志表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_log_request +-- ---------------------------- +INSERT INTO `sys_log_request` VALUES (161, 10000, '60.233.1.102', 'Windows 10 or Windows Server 2016;Chrome 97.0.4692.99', '/system/role/update', 'POST', 'SysRoleController.updateRole(..)', '[{\"id\":101,\"name\":\"围观角色\",\"permission\":\"visit\",\"remark\":\"演示用户拥有的权限\",\"sort\":50,\"status\":null,\"createTime\":null,\"updateTime\":null,\"deleteTime\":null,\"checkArr\":\"0\",\"parentId\":\"-1\",\"LAY_CHECKED\":false},[1,2,3,6,7,9,12,4,17,18,20,5,28,25,26,35,36,24,32,34,38,39,40,33,41,42]]', '{\"msg\":\"更新角色成功\",\"code\":200,\"success\":true}', 174, 1, '2022-01-30 17:43:50', NULL, NULL); + +-- ---------------------------- +-- Table structure for sys_menu +-- ---------------------------- +DROP TABLE IF EXISTS `sys_menu`; +CREATE TABLE `sys_menu` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜单/权限ID', + `name` varchar(63) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单/权限名称', + `icon` varchar(63) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单图标', + `path` varchar(63) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单/权限路由:对于后台控制类定义,示例:system/user/get/{id}', + `permission` varchar(63) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限标识符:对于后台控制类定义。示例:system:user:list', + `component` varchar(63) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组件路径:对于前端框架定义。示例:system/user/index', + `parent_id` int(11) NULL DEFAULT NULL COMMENT '上级菜单ID', + `type` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单类型:C - 目录 | M - 菜单 | B - 按钮', + `sort` int(11) NULL DEFAULT NULL COMMENT '排序:数值越大越靠前', + `editable` tinyint(4) NULL DEFAULT NULL COMMENT '可编辑:0-禁止编辑 | 1-可编辑', + `removable` tinyint(4) NULL DEFAULT NULL COMMENT '可删除:0-禁止删除 | 1-可删除', + `status` tinyint(4) NULL DEFAULT NULL COMMENT '角色状态:0-封禁 | 1-正常 | 2-正常且禁止封禁', + `is_delete` tinyint(4) NULL DEFAULT NULL COMMENT '是否删除:0-未删除 | 1-已删除', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `delete_time` datetime NULL DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 49 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统菜单/权限表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_menu +-- ---------------------------- +INSERT INTO `sys_menu` VALUES (1, '系统功能', 'fa fa-gears', '', 'system:system', NULL, -1, 'N', 100, 0, 0, 2, NULL, '2021-09-16 20:10:10', '2021-12-04 18:53:50', NULL); +INSERT INTO `sys_menu` VALUES (2, '系统管理', 'fa fa-cog', '', 'system:index', NULL, 1, 'C', 80, 0, 0, 2, NULL, '2021-09-16 20:10:10', '2021-12-04 18:53:46', NULL); +INSERT INTO `sys_menu` VALUES (3, '系统用户', 'fa fa-user', '/system/user/index', 'system:user:index', NULL, 2, 'M', 75, 1, 0, 1, NULL, '2021-09-16 20:10:10', '2021-12-09 10:48:48', NULL); +INSERT INTO `sys_menu` VALUES (4, '角色管理', 'fa fa-users', '/system/role/index', 'system:role:index', NULL, 2, 'M', 70, 1, 0, 1, NULL, '2021-09-16 20:10:10', '2021-12-02 21:27:29', NULL); +INSERT INTO `sys_menu` VALUES (5, '菜单管理', 'fa fa-th-list', '/system/menu/index', 'system:menu:index', NULL, 2, 'M', 65, 1, 1, 1, NULL, '2021-09-16 20:10:10', '2021-12-02 21:01:06', NULL); +INSERT INTO `sys_menu` VALUES (6, '查询用户列表', 'fa fa fa-mouse-pointer', '/system/user/list/{type}', 'system:user:list', NULL, 3, 'B', 50, 1, 0, 1, NULL, '2021-10-12 20:50:33', '2021-12-04 17:13:17', NULL); +INSERT INTO `sys_menu` VALUES (7, '访问添加用户页面', 'fa fa-address-card', '/system/user/goAdd', 'system:user:goAdd', NULL, 3, 'B', 50, 1, 1, 1, NULL, '2021-09-16 20:10:10', '2021-12-02 21:45:36', NULL); +INSERT INTO `sys_menu` VALUES (8, '添加用户', 'fa fa-500px', '/system/user/add', 'system:user:add', NULL, 3, 'B', 50, 1, 1, 1, NULL, '2021-09-16 20:10:10', '2021-12-02 21:46:11', NULL); +INSERT INTO `sys_menu` VALUES (9, '访问用户编辑页面', 'fa fa-500px', '/system/user/goEdit', 'system:user:goEdit', NULL, 3, 'B', 50, 1, 1, 1, NULL, '2021-09-16 20:10:10', '2021-12-02 21:47:21', NULL); +INSERT INTO `sys_menu` VALUES (10, '更新用户信息', 'fa fa-address-book', '/system/user/update', 'system:user:update', NULL, 3, 'B', 50, 1, 1, 1, NULL, '2021-09-16 20:10:10', '2021-12-04 17:43:00', NULL); +INSERT INTO `sys_menu` VALUES (11, '删除用户', 'fa fa-address-book', '/system/user/delete', 'system:user:delete', NULL, 3, 'B', 50, 1, 1, 1, NULL, '2021-09-16 20:10:10', '2022-01-30 15:21:14', NULL); +INSERT INTO `sys_menu` VALUES (12, '访问分配角色页面', 'fa fa-address-book', '/system/user/role/{id}', 'system:user:role', NULL, 3, 'B', 50, 1, 1, 1, NULL, '2021-09-16 20:10:10', '2021-12-04 17:25:52', NULL); +INSERT INTO `sys_menu` VALUES (13, '分配角色', 'fa fa-address-book', '/system/user/authRole', 'system:user:authRole', NULL, 3, 'B', 50, 1, 0, 1, NULL, '2021-09-16 20:10:10', '2022-01-30 15:22:43', NULL); +INSERT INTO `sys_menu` VALUES (14, '改变用户状态', 'fa fa-address-book', '/system/user/changeStatus/{status}', 'system:user:changeStatus', NULL, 3, 'B', 50, 1, 1, 1, NULL, '2021-09-16 20:10:10', '2022-01-30 15:19:20', NULL); +INSERT INTO `sys_menu` VALUES (16, '重置密码', 'fa fa-compass', '/system/user/resetPassword', 'system:user:resetPassword', NULL, 3, 'B', 50, 1, 1, 1, NULL, '2021-12-02 17:32:40', '2022-01-30 15:23:33', NULL); +INSERT INTO `sys_menu` VALUES (17, '查询用户列表', 'fa fa-address-book', '/system/role/list', 'system:role:list', NULL, 4, 'B', 50, 1, 1, 1, NULL, '2021-12-02 21:20:41', '2021-12-04 19:01:55', NULL); +INSERT INTO `sys_menu` VALUES (18, '访问添加角色页面', 'fa fa-fonticons', '/system/role/goAdd', 'system:role:goAdd', NULL, 4, 'B', 50, 1, 1, 1, NULL, '2021-12-04 19:03:32', NULL, NULL); +INSERT INTO `sys_menu` VALUES (19, '添加角色', 'fa fa-fonticons', '/system/role/add', 'system:role:add', NULL, 4, 'B', 50, 1, 1, 1, NULL, '2021-12-04 19:03:54', NULL, NULL); +INSERT INTO `sys_menu` VALUES (20, '访问修改角色页面', 'fa fa-fonticons', '/system/role/goEdit/{id}', 'system:role:goEdit', NULL, 4, 'B', 50, 1, 1, 1, NULL, '2021-12-04 19:04:10', '2021-12-04 21:09:28', NULL); +INSERT INTO `sys_menu` VALUES (21, '修改角色', 'fa fa-fonticons', '/system/role/update', 'system:role:update', NULL, 4, 'B', 50, 1, 1, 1, NULL, '2021-12-04 19:04:35', NULL, NULL); +INSERT INTO `sys_menu` VALUES (22, '删除角色', 'fa fa-fonticons', '/system/role/delete', 'system:role:delete', NULL, 4, 'B', 50, 1, 1, 1, NULL, '2021-12-04 21:21:13', '2021-12-04 21:21:23', NULL); +INSERT INTO `sys_menu` VALUES (23, '改变角色状态', 'fa fa-fonticons', '/system/role/changeStatus/{status}', 'system:role:changeStatus', NULL, 4, 'B', 50, 1, 1, 1, NULL, '2021-12-04 21:35:37', '2021-12-08 20:33:05', NULL); +INSERT INTO `sys_menu` VALUES (24, '日志管理', 'fa fa-history', '', 'system:log', NULL, 1, 'C', 50, 1, 1, 1, NULL, '2021-12-06 15:48:11', '2021-12-26 16:30:38', NULL); +INSERT INTO `sys_menu` VALUES (25, '查询菜单列表', 'fa fa-fonticons', '/system/menu/list/{type}', 'system:menu:list', NULL, 5, 'B', 50, 1, 1, 1, NULL, '2021-12-07 11:31:13', NULL, NULL); +INSERT INTO `sys_menu` VALUES (26, '访问添加菜单页面', 'fa fa-fonticons', '/system/menu/goAdd', 'system:menu:goAdd', NULL, 5, 'B', 50, 1, 1, 1, NULL, '2021-12-07 11:31:42', NULL, NULL); +INSERT INTO `sys_menu` VALUES (27, '添加菜单', 'fa fa-fonticons', '/system/menu/add', 'system:menu:add', NULL, 5, 'B', 50, 1, 1, 1, NULL, '2021-12-07 11:31:52', NULL, NULL); +INSERT INTO `sys_menu` VALUES (28, '访问编辑菜单页面', 'fa fa-fonticons', '/system/menu/goEdit/{id}', 'system:menu:goEdit', NULL, 5, 'B', 50, 1, 1, 1, NULL, '2021-12-07 11:34:04', '2021-12-07 20:41:21', NULL); +INSERT INTO `sys_menu` VALUES (29, '编辑菜单', 'fa fa-fonticons', '/system/menu/update', 'system:menu:update', NULL, 5, 'B', 50, 1, 1, 1, NULL, '2021-12-07 11:34:11', '2021-12-07 19:46:47', NULL); +INSERT INTO `sys_menu` VALUES (30, '修改菜单状态', 'fa fa-fonticons', '/system/menu/changeStatus/{status}', 'system:menu:changeStatus', NULL, 5, 'B', 50, 1, 1, 2, NULL, '2021-12-07 11:34:35', '2022-01-30 16:41:24', NULL); +INSERT INTO `sys_menu` VALUES (31, '删除菜单', 'fa fa-fonticons', '/system/menu/remove', 'system:menu:remove', NULL, 5, 'B', 50, 1, 1, 1, NULL, '2021-12-07 11:34:46', '2022-01-30 17:29:12', NULL); +INSERT INTO `sys_menu` VALUES (32, '操作日志', 'fa fa-sliders', '/system/log/request', 'system:log:request', NULL, 24, 'M', 50, 1, 1, 1, NULL, '2021-12-13 19:07:47', '2021-12-26 16:31:38', NULL); +INSERT INTO `sys_menu` VALUES (33, '第三方组件', 'fa fa-fonticons', '', 'component', NULL, -1, 'N', 50, 1, 1, 1, NULL, '2021-12-23 18:23:07', '2022-01-11 20:46:52', NULL); +INSERT INTO `sys_menu` VALUES (34, '登录日志', 'fa fa-street-view', '/system/log/login', 'system:log:login', NULL, 24, 'M', 50, 1, 1, 1, NULL, '2021-12-26 16:27:13', '2021-12-28 20:21:06', NULL); +INSERT INTO `sys_menu` VALUES (35, '开发管理', 'fa fa-gears', '', 'controller:develop', NULL, 1, 'C', 50, 1, 1, 1, NULL, '2021-12-26 16:28:55', '2021-12-26 16:35:59', NULL); +INSERT INTO `sys_menu` VALUES (36, '代码生成', 'fa fa-file-code-o', '/system/develop/generator', 'system:develop:generator', NULL, 35, 'M', 50, 1, 1, 1, NULL, '2021-12-26 16:37:46', '2021-12-26 16:39:26', NULL); +INSERT INTO `sys_menu` VALUES (37, '接口文档', 'fa fa-external-link-square', '/swagger', 'swagger', NULL, 35, 'M', 50, 1, 1, 1, NULL, '2021-12-26 16:39:13', '2022-01-03 14:00:48', NULL); +INSERT INTO `sys_menu` VALUES (38, '系统监控', 'fa fa-dashboard', '', 'controller:monitor', NULL, 1, 'C', 25, 1, 1, 1, NULL, '2021-12-26 16:52:26', '2021-12-26 16:55:27', NULL); +INSERT INTO `sys_menu` VALUES (39, '服务器监控', 'fa fa-line-chart', '/system/monitor/server', 'system:monitor:server', NULL, 38, 'M', 50, 1, 1, 1, NULL, '2021-12-26 16:54:23', '2022-01-30 17:29:18', NULL); +INSERT INTO `sys_menu` VALUES (40, '数据库监控', 'fa fa-database', '/druid/login.html', 'druid:login.html', NULL, 38, 'M', 50, 1, 1, 1, NULL, '2021-12-26 16:54:47', '2022-01-23 21:24:32', NULL); +INSERT INTO `sys_menu` VALUES (41, '微信支付演示', 'fa fa-wechat', '/component/wechatPay/index', 'component:wechatPay:index', NULL, 33, 'M', 50, 1, 1, 1, NULL, '2022-01-11 20:45:02', '2022-01-12 20:01:22', NULL); +INSERT INTO `sys_menu` VALUES (42, '支付宝支付演示', 'fa fa-cc-paypal', '/component/alipay/index', 'component:alipay:index', NULL, 33, 'M', 50, 1, 1, 1, NULL, '2022-01-11 22:57:18', '2022-01-24 21:36:19', NULL); +INSERT INTO `sys_menu` VALUES (43, '阿里云短信服务', 'fa fa-commenting-o', '/component/aliyunSms/index', 'component:aliyunSms:index', NULL, 33, 'M', 50, 1, 1, 1, NULL, '2022-01-12 16:31:08', '2022-01-24 21:35:56', NULL); +INSERT INTO `sys_menu` VALUES (44, '七牛云文件存储', 'fa fa-file', '/component/qiniuOss/index', 'component:qiniuOss:index', NULL, 33, 'M', 50, 1, 1, 1, NULL, '2022-01-24 21:38:10', '2022-01-24 21:53:54', NULL); +INSERT INTO `sys_menu` VALUES (45, '给用户授权/撤销授权', 'fa fa-fonticons', '/system/role/authUser/{type}', 'system:role:authUser', NULL, 4, 'B', 50, 1, 1, 1, NULL, '2022-01-30 16:36:10', '2022-01-30 16:37:46', NULL); +INSERT INTO `sys_menu` VALUES (46, '删除日志', 'fa fa-fonticons', '/system/log/request/delete', 'system:log:request:delete', NULL, 32, 'B', 0, 1, 1, 1, NULL, '2022-01-30 16:39:00', '2022-01-30 16:53:30', NULL); +INSERT INTO `sys_menu` VALUES (47, '生成指定表的代码', 'fa fa-fonticons', '/system/develop/generator/create', 'system:develop:generator:create', NULL, 36, 'B', 50, 1, 1, 1, NULL, '2022-01-30 16:51:03', NULL, NULL); +INSERT INTO `sys_menu` VALUES (48, '删除日志', 'fa fa-fonticons', '/system/log/login/delete', 'system:log:login:delete', NULL, 34, 'B', 50, 1, 1, 1, NULL, '2022-01-30 16:54:05', NULL, NULL); + +-- ---------------------------- +-- Table structure for sys_role +-- ---------------------------- +DROP TABLE IF EXISTS `sys_role`; +CREATE TABLE `sys_role` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色ID', + `name` varchar(63) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色名称', + `permission` varchar(63) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色权限标识符,如:admin、guest', + `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `sort` int(11) NULL DEFAULT NULL COMMENT '排序:数值越大越靠前', + `status` tinyint(4) NULL DEFAULT NULL COMMENT '角色状态:0-封禁 | 1-正常 | 2-正常且禁止封禁', + `is_delete` tinyint(4) NULL DEFAULT NULL COMMENT '是否删除:0-未删除 | 1-已删除', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `delete_time` datetime NULL DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 106 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统角色表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_role +-- ---------------------------- +INSERT INTO `sys_role` VALUES (100, '超级管理员', 'admin', '超级管理员,禁止禁用和删除!', 100, 2, 0, NULL, '2022-01-30 17:15:50', NULL); +INSERT INTO `sys_role` VALUES (101, '围观角色', 'visit', '演示用户拥有的权限', 50, 1, 0, '2021-09-23 19:36:08', '2022-01-30 17:43:50', NULL); +INSERT INTO `sys_role` VALUES (102, 'test2', 'test2', '', 50, 1, 0, NULL, '2022-01-30 16:47:12', NULL); +INSERT INTO `sys_role` VALUES (103, '系统管理员', 'system', '', 50, 0, 0, '2021-12-04 20:55:13', '2021-12-06 20:23:26', NULL); +INSERT INTO `sys_role` VALUES (104, '系统管理员', 'system', '', 50, 0, 0, '2021-12-04 20:56:45', '2021-12-06 20:19:40', NULL); +INSERT INTO `sys_role` VALUES (105, '测试', '1111', '', 50, 0, 0, '2021-12-08 20:55:59', NULL, NULL); + +-- ---------------------------- +-- Table structure for sys_role_menu +-- ---------------------------- +DROP TABLE IF EXISTS `sys_role_menu`; +CREATE TABLE `sys_role_menu` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色菜单关联ID', + `role_id` int(11) NOT NULL COMMENT '角色ID', + `menu_id` int(11) NOT NULL COMMENT '菜单/权限ID', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 844 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统角色和菜单/权限关联表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_role_menu +-- ---------------------------- +INSERT INTO `sys_role_menu` VALUES (89, 104, 24); +INSERT INTO `sys_role_menu` VALUES (90, 103, 1); +INSERT INTO `sys_role_menu` VALUES (91, 103, 2); +INSERT INTO `sys_role_menu` VALUES (92, 103, 4); +INSERT INTO `sys_role_menu` VALUES (93, 103, 17); +INSERT INTO `sys_role_menu` VALUES (94, 103, 18); +INSERT INTO `sys_role_menu` VALUES (95, 103, 19); +INSERT INTO `sys_role_menu` VALUES (96, 103, 20); +INSERT INTO `sys_role_menu` VALUES (97, 103, 21); +INSERT INTO `sys_role_menu` VALUES (98, 103, 22); +INSERT INTO `sys_role_menu` VALUES (99, 103, 23); +INSERT INTO `sys_role_menu` VALUES (720, 100, 1); +INSERT INTO `sys_role_menu` VALUES (721, 100, 2); +INSERT INTO `sys_role_menu` VALUES (722, 100, 3); +INSERT INTO `sys_role_menu` VALUES (724, 100, 6); +INSERT INTO `sys_role_menu` VALUES (725, 100, 7); +INSERT INTO `sys_role_menu` VALUES (726, 100, 8); +INSERT INTO `sys_role_menu` VALUES (727, 100, 9); +INSERT INTO `sys_role_menu` VALUES (728, 100, 10); +INSERT INTO `sys_role_menu` VALUES (729, 100, 11); +INSERT INTO `sys_role_menu` VALUES (730, 100, 12); +INSERT INTO `sys_role_menu` VALUES (731, 100, 13); +INSERT INTO `sys_role_menu` VALUES (732, 100, 14); +INSERT INTO `sys_role_menu` VALUES (733, 100, 16); +INSERT INTO `sys_role_menu` VALUES (734, 100, 4); +INSERT INTO `sys_role_menu` VALUES (735, 100, 45); +INSERT INTO `sys_role_menu` VALUES (736, 100, 17); +INSERT INTO `sys_role_menu` VALUES (737, 100, 18); +INSERT INTO `sys_role_menu` VALUES (738, 100, 19); +INSERT INTO `sys_role_menu` VALUES (739, 100, 20); +INSERT INTO `sys_role_menu` VALUES (740, 100, 21); +INSERT INTO `sys_role_menu` VALUES (741, 100, 22); +INSERT INTO `sys_role_menu` VALUES (742, 100, 23); +INSERT INTO `sys_role_menu` VALUES (743, 100, 5); +INSERT INTO `sys_role_menu` VALUES (744, 100, 27); +INSERT INTO `sys_role_menu` VALUES (745, 100, 28); +INSERT INTO `sys_role_menu` VALUES (746, 100, 29); +INSERT INTO `sys_role_menu` VALUES (747, 100, 30); +INSERT INTO `sys_role_menu` VALUES (748, 100, 31); +INSERT INTO `sys_role_menu` VALUES (749, 100, 26); +INSERT INTO `sys_role_menu` VALUES (750, 100, 25); +INSERT INTO `sys_role_menu` VALUES (751, 100, 35); +INSERT INTO `sys_role_menu` VALUES (752, 100, 36); +INSERT INTO `sys_role_menu` VALUES (753, 100, 47); +INSERT INTO `sys_role_menu` VALUES (754, 100, 37); +INSERT INTO `sys_role_menu` VALUES (755, 100, 24); +INSERT INTO `sys_role_menu` VALUES (756, 100, 32); +INSERT INTO `sys_role_menu` VALUES (757, 100, 46); +INSERT INTO `sys_role_menu` VALUES (758, 100, 34); +INSERT INTO `sys_role_menu` VALUES (759, 100, 48); +INSERT INTO `sys_role_menu` VALUES (760, 100, 38); +INSERT INTO `sys_role_menu` VALUES (761, 100, 39); +INSERT INTO `sys_role_menu` VALUES (762, 100, 40); +INSERT INTO `sys_role_menu` VALUES (763, 100, 33); +INSERT INTO `sys_role_menu` VALUES (764, 100, 41); +INSERT INTO `sys_role_menu` VALUES (765, 100, 42); +INSERT INTO `sys_role_menu` VALUES (818, 101, 1); +INSERT INTO `sys_role_menu` VALUES (819, 101, 2); +INSERT INTO `sys_role_menu` VALUES (820, 101, 3); +INSERT INTO `sys_role_menu` VALUES (821, 101, 6); +INSERT INTO `sys_role_menu` VALUES (822, 101, 7); +INSERT INTO `sys_role_menu` VALUES (823, 101, 9); +INSERT INTO `sys_role_menu` VALUES (824, 101, 12); +INSERT INTO `sys_role_menu` VALUES (825, 101, 4); +INSERT INTO `sys_role_menu` VALUES (826, 101, 17); +INSERT INTO `sys_role_menu` VALUES (827, 101, 18); +INSERT INTO `sys_role_menu` VALUES (828, 101, 20); +INSERT INTO `sys_role_menu` VALUES (829, 101, 5); +INSERT INTO `sys_role_menu` VALUES (830, 101, 28); +INSERT INTO `sys_role_menu` VALUES (831, 101, 25); +INSERT INTO `sys_role_menu` VALUES (832, 101, 26); +INSERT INTO `sys_role_menu` VALUES (833, 101, 35); +INSERT INTO `sys_role_menu` VALUES (834, 101, 36); +INSERT INTO `sys_role_menu` VALUES (835, 101, 24); +INSERT INTO `sys_role_menu` VALUES (836, 101, 32); +INSERT INTO `sys_role_menu` VALUES (837, 101, 34); +INSERT INTO `sys_role_menu` VALUES (838, 101, 38); +INSERT INTO `sys_role_menu` VALUES (839, 101, 39); +INSERT INTO `sys_role_menu` VALUES (840, 101, 40); +INSERT INTO `sys_role_menu` VALUES (841, 101, 33); +INSERT INTO `sys_role_menu` VALUES (842, 101, 41); +INSERT INTO `sys_role_menu` VALUES (843, 101, 42); + +-- ---------------------------- +-- Table structure for sys_test +-- ---------------------------- +DROP TABLE IF EXISTS `sys_test`; +CREATE TABLE `sys_test` ( + `id` int(11) NOT NULL, + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_test +-- ---------------------------- + +-- ---------------------------- +-- Table structure for sys_user +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user`; +CREATE TABLE `sys_user` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户主键', + `username` varchar(63) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户姓名', + `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户头像', + `sex` tinyint(4) NULL DEFAULT NULL COMMENT '用户性别(0-未知 | 1-男 | 2-女)', + `email` varchar(127) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户邮箱', + `phone` varchar(31) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户手机号', + `password` varchar(127) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户密码', + `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注信息', + `status` tinyint(4) NULL DEFAULT NULL COMMENT '用户状态', + `login_ip` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '登录IP', + `login_date` datetime NULL DEFAULT NULL COMMENT '登录时间', + `is_delete` tinyint(4) NULL DEFAULT 0 COMMENT '是否删除(0-未删除 | 1-已删除)', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', + `delete_time` datetime NULL DEFAULT NULL COMMENT '删除时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 10020 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统用户表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_user +-- ---------------------------- +INSERT INTO `sys_user` VALUES (10000, '张三', NULL, 1, '10000@zxdmy.com', '18811111111', 'e10adc3949ba59abbe56e057f20f883e', '超级管理员', 1, NULL, NULL, 0, NULL, '2021-12-30 15:18:34', NULL); +INSERT INTO `sys_user` VALUES (10006, '李四', NULL, 1, 'demo@zxdmy.com', '18866666666', 'e10adc3949ba59abbe56e057f20f883e', '演示用户', 1, NULL, NULL, 0, NULL, '2022-01-30 15:15:13', NULL); +INSERT INTO `sys_user` VALUES (10007, '用户2', NULL, 1, '10007@zxdmy.com', '18877777777', 'e10adc3949ba59abbe56e057f20f883e', NULL, 0, NULL, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sys_user` VALUES (10008, '用户3', NULL, 1, '10008@zxdmy.com', '18888888888', 'e10adc3949ba59abbe56e057f20f883e', NULL, 0, NULL, NULL, 0, NULL, '2022-01-30 16:30:59', NULL); +INSERT INTO `sys_user` VALUES (10009, '用户4', NULL, 1, '10009@zxdmy.com', '18899999999', 'e10adc3949ba59abbe56e057f20f883e', NULL, 0, NULL, NULL, 0, NULL, '2022-01-30 15:23:53', NULL); +INSERT INTO `sys_user` VALUES (10010, '用户5', NULL, 1, '10010@zxdmy.com', '18810101010', 'e10adc3949ba59abbe56e057f20f883e', NULL, 0, NULL, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sys_user` VALUES (10011, '10000@zxdmy.com', NULL, 0, '10011@qq.com', '18811001100', 'e10adc3949ba59abbe56e057f20f883e', NULL, 0, NULL, NULL, 0, '2021-12-22 21:53:48', '2022-01-30 16:30:33', NULL); +INSERT INTO `sys_user` VALUES (10012, '用户1', NULL, NULL, '10012@zxdmy.com', NULL, 'e10adc3949ba59abbe56e057f20f883e', NULL, 0, NULL, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sys_user` VALUES (10013, '用户2', NULL, NULL, '10013@zxdmy.com', NULL, 'e10adc3949ba59abbe56e057f20f883e', NULL, 0, NULL, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sys_user` VALUES (10014, '用户3', NULL, NULL, '10014@zxdmy.com', NULL, 'e10adc3949ba59abbe56e057f20f883e', NULL, 0, NULL, NULL, 0, NULL, '2021-12-29 11:04:48', NULL); +INSERT INTO `sys_user` VALUES (10015, '用户4', NULL, NULL, '10015@zxdmy.com', NULL, 'e10adc3949ba59abbe56e057f20f883e', NULL, 0, NULL, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sys_user` VALUES (10016, '用户5', NULL, NULL, '10016@zxdmy.com', NULL, 'e10adc3949ba59abbe56e057f20f883e', NULL, 0, NULL, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sys_user` VALUES (10017, '张三', NULL, NULL, '10017@zxdmy.com', NULL, 'e10adc3949ba59abbe56e057f20f883e', NULL, 0, NULL, NULL, 0, NULL, NULL, NULL); +INSERT INTO `sys_user` VALUES (10018, '王二麻子', NULL, 1, 'hahah@zxdmy.com', '18811001122', 'e10adc3949ba59abbe56e057f20f883e', '', 0, NULL, NULL, 0, '2021-12-29 10:09:43', '2021-12-29 11:05:31', NULL); +INSERT INTO `sys_user` VALUES (10019, '哈哈哈', NULL, 0, 'hahaaaa@zxdmy.com', '18811001111', 'e10adc3949ba59abbe56e057f20f883e', '', 0, NULL, NULL, 0, '2021-12-29 10:12:55', '2021-12-29 10:36:17', NULL); + +-- ---------------------------- +-- Table structure for sys_user_role +-- ---------------------------- +DROP TABLE IF EXISTS `sys_user_role`; +CREATE TABLE `sys_user_role` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户角色关联ID', + `user_id` int(11) NOT NULL COMMENT '用户ID', + `role_id` int(11) NOT NULL COMMENT '角色ID', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统用户和角色关联表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of sys_user_role +-- ---------------------------- +INSERT INTO `sys_user_role` VALUES (1, 10000, 100); +INSERT INTO `sys_user_role` VALUES (2, 10000, 101); +INSERT INTO `sys_user_role` VALUES (4, 10006, 101); +INSERT INTO `sys_user_role` VALUES (7, 10018, 101); +INSERT INTO `sys_user_role` VALUES (9, 10011, 101); +INSERT INTO `sys_user_role` VALUES (10, 10006, 102); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/directoryList.md b/directoryList.md new file mode 100644 index 0000000..3781817 --- /dev/null +++ b/directoryList.md @@ -0,0 +1,904 @@ +|-- undefined + |-- .gitignore + |-- LICENSE + |-- pom.xml + |-- README.md + |-- .idea + | |-- .gitignore + | |-- compiler.xml + | |-- encodings.xml + | |-- jarRepositories.xml + | |-- misc.xml + | |-- runConfigurations.xml + | |-- uiDesigner.xml + | |-- vcs.xml + | |-- workspace.xml + | |-- artifacts + | | |-- shensong_jar.xml + | |-- inspectionProfiles + | |-- Project_Default.xml + |-- database + | |-- db_excite_cms(Only struct).sql + | |-- db_excite_cms(Struct and data).sql + |-- ss-admin + | |-- pom.xml + | |-- README.md + | |-- src + | | |-- main + | | | |-- java + | | | | |-- com + | | | | |-- zxdmy + | | | | |-- excite + | | | | |-- admin + | | | | |-- ExciteAdminApplication.java + | | | | |-- controller + | | | | |-- advanced + | | | | | |-- GeneratorController.java + | | | | | |-- MonitorController.java + | | | | |-- component + | | | | | |-- AlipayController.java + | | | | | |-- QiniuOssController.java + | | | | | |-- WeChatPayController.java + | | | | |-- system + | | | | | |-- SysController.java + | | | | | |-- SysLogController.java + | | | | | |-- SysMenuController.java + | | | | | |-- SysRoleController.java + | | | | | |-- SysUserController.java + | | | | |-- tool + | | | | |-- CaptchaController.java + | | | |-- resources + | | | |-- application.yml + | | | |-- banner.txt + | | | |-- static + | | | | |-- api + | | | | | |-- clear.json + | | | | | |-- init.json + | | | | | |-- menus.json + | | | | | |-- table.json + | | | | | |-- tableSelect.json + | | | | | |-- upload.json + | | | | |-- css + | | | | | |-- layuimini.css + | | | | | |-- login.css + | | | | | |-- public.css + | | | | | |-- login2 + | | | | | | |-- admin.css + | | | | | | |-- login2.css + | | | | | |-- themes + | | | | | |-- default.css + | | | | |-- doc + | | | | | |-- AllInOne.css + | | | | | |-- font.css + | | | | | |-- highlight.min.js + | | | | | |-- index.html + | | | | | |-- jquery.min.js + | | | | | |-- xt256.min.css + | | | | |-- images + | | | | | |-- bg-login.jpg + | | | | | |-- bg.jpg + | | | | | |-- captcha.jpg + | | | | | |-- donate_qrcode.png + | | | | | |-- favicon.ico + | | | | | |-- favicon2.ico + | | | | | |-- home.png + | | | | | |-- icon-login.png + | | | | | |-- ic_404.png + | | | | | |-- loginbg.png + | | | | | |-- logo.png + | | | | | |-- logo2.png + | | | | |-- js + | | | | | |-- lay-config.js + | | | | | |-- time.js + | | | | | |-- lay-module + | | | | | |-- dtree + | | | | | | |-- dtree.css + | | | | | | |-- dtree.js + | | | | | | |-- 开发者日志.txt + | | | | | | |-- font + | | | | | | |-- dtreefont.css + | | | | | | |-- dtreefont.eot + | | | | | | |-- dtreefont.svg + | | | | | | |-- dtreefont.ttf + | | | | | | |-- dtreefont.woff + | | | | | | |-- icons.json + | | | | | |-- echarts + | | | | | | |-- echarts.js + | | | | | | |-- echartsTheme.js + | | | | | |-- iconPicker + | | | | | | |-- iconPickerFa.js + | | | | | |-- layarea + | | | | | | |-- layarea.js + | | | | | |-- layuimini + | | | | | | |-- miniAdmin.js + | | | | | | |-- miniMenu.js + | | | | | | |-- miniTab.js + | | | | | | |-- miniTheme.js + | | | | | | |-- miniTongji.js + | | | | | |-- step-lay + | | | | | | |-- step.css + | | | | | | |-- step.js + | | | | | |-- tableSelect + | | | | | | |-- tableSelect.js + | | | | | |-- treetable-lay + | | | | | | |-- treetable.css + | | | | | | |-- treetable.js + | | | | | |-- treetable-lay-3.x + | | | | | | |-- treeTable.css + | | | | | | |-- treeTable.js + | | | | | | |-- treeTable2.js + | | | | | |-- wangEditor + | | | | | |-- wangEditor.css + | | | | | |-- wangEditor.js + | | | | | |-- wangEditor.min.css + | | | | | |-- wangEditor.min.js + | | | | | |-- wangEditor.min.js.map + | | | | | |-- fonts + | | | | | |-- w-e-icon.woff + | | | | |-- lib + | | | | |-- font-awesome-4.7.0 + | | | | | |-- HELP-US-OUT.txt + | | | | | |-- css + | | | | | | |-- font-awesome.css + | | | | | | |-- font-awesome.min.css + | | | | | |-- fonts + | | | | | | |-- fontawesome-webfont.eot + | | | | | | |-- fontawesome-webfont.svg + | | | | | | |-- fontawesome-webfont.ttf + | | | | | | |-- fontawesome-webfont.woff + | | | | | | |-- fontawesome-webfont.woff2 + | | | | | | |-- FontAwesome.otf + | | | | | |-- less + | | | | | | |-- animated.less + | | | | | | |-- bordered-pulled.less + | | | | | | |-- core.less + | | | | | | |-- fixed-width.less + | | | | | | |-- font-awesome.less + | | | | | | |-- icons.less + | | | | | | |-- larger.less + | | | | | | |-- list.less + | | | | | | |-- mixins.less + | | | | | | |-- path.less + | | | | | | |-- rotated-flipped.less + | | | | | | |-- screen-reader.less + | | | | | | |-- stacked.less + | | | | | | |-- variables.less + | | | | | |-- scss + | | | | | |-- font-awesome.scss + | | | | | |-- _animated.scss + | | | | | |-- _bordered-pulled.scss + | | | | | |-- _core.scss + | | | | | |-- _fixed-width.scss + | | | | | |-- _icons.scss + | | | | | |-- _larger.scss + | | | | | |-- _list.scss + | | | | | |-- _mixins.scss + | | | | | |-- _path.scss + | | | | | |-- _rotated-flipped.scss + | | | | | |-- _screen-reader.scss + | | | | | |-- _stacked.scss + | | | | | |-- _variables.scss + | | | | |-- highlight + | | | | | |-- highlight.min.css + | | | | | |-- highlight.min.js + | | | | |-- jq-module + | | | | | |-- jquery.particleground.min.js + | | | | | |-- paigusu.min.js + | | | | | |-- zyupload + | | | | | |-- zyupload-1.0.0.min.css + | | | | | |-- zyupload-1.0.0.min.js + | | | | |-- jquery-3.4.1 + | | | | | |-- jquery-3.4.1.min.js + | | | | |-- jsencrypt + | | | | | |-- jsencrypt.min.js + | | | | | |-- rsa.js + | | | | |-- layui-v2.6.3 + | | | | | |-- layui.js + | | | | | |-- css + | | | | | | |-- layui.css + | | | | | | |-- modules + | | | | | | |-- code.css + | | | | | | |-- laydate + | | | | | | | |-- default + | | | | | | | |-- laydate.css + | | | | | | |-- layer + | | | | | | |-- default + | | | | | | |-- icon-ext.png + | | | | | | |-- icon.png + | | | | | | |-- layer.css + | | | | | | |-- loading-0.gif + | | | | | | |-- loading-1.gif + | | | | | | |-- loading-2.gif + | | | | | |-- font + | | | | | |-- iconfont.eot + | | | | | |-- iconfont.svg + | | | | | |-- iconfont.ttf + | | | | | |-- iconfont.woff + | | | | | |-- iconfont.woff2 + | | | | |-- qrcode + | | | | |-- qrcode.min.js + | | | |-- templates + | | | |-- component + | | | | |-- alipay + | | | | | |-- index.html + | | | | |-- qiniuOss + | | | | | |-- index.html + | | | | |-- wechatPay + | | | | |-- index.html + | | | |-- error + | | | | |-- 404.html + | | | | |-- 500.html + | | | | |-- error.html + | | | |-- system + | | | |-- index.html + | | | |-- login.html + | | | |-- welcome.html + | | | |-- advanced + | | | | |-- generator.html + | | | | |-- monitorServer.html + | | | |-- log + | | | | |-- login.html + | | | | |-- request.html + | | | |-- menu + | | | | |-- add.html + | | | | |-- edit.html + | | | | |-- index.html + | | | |-- role + | | | | |-- add.html + | | | | |-- authUser.html + | | | | |-- edit.html + | | | | |-- index.html + | | | |-- user + | | | | |-- add.html + | | | | |-- authRole.html + | | | | |-- edit.html + | | | | |-- index.html + | | | |-- userCenter + | | | |-- password.html + | | | |-- setting.html + | | |-- test + | | |-- java + | | |-- com + | | |-- zxdmy + | | |-- excite + | | |-- admin + | | |-- CodeGenerator.java + | | |-- ExciteAdminApplicationTests.java + | | |-- SmartDocGenerator.java + | | |-- component + | | | |-- AlipayTest.java + | | | |-- AliyunSmsTest.java + | | | |-- WeChatPayTest.java + | | |-- service + | | | |-- IGlobalConfigServiceTest.java + | | | |-- ISysMenuServiceTest.java + | | | |-- ISysUserServiceTest.java + | | |-- utils + | | |-- RedisUtilsTest.java + | |-- target + | |-- ss-admin-2.0.0.jar + | |-- ss-admin-2.0.0.jar.original + | |-- classes + | | |-- application.yml + | | |-- banner.txt + | | |-- com + | | | |-- zxdmy + | | | |-- excite + | | | |-- admin + | | | |-- ExciteAdminApplication.class + | | | |-- controller + | | | |-- advanced + | | | | |-- GeneratorController$1.class + | | | | |-- GeneratorController$2.class + | | | | |-- GeneratorController.class + | | | | |-- MonitorController.class + | | | |-- component + | | | | |-- AlipayController.class + | | | | |-- QiniuOssController.class + | | | | |-- WeChatPayController.class + | | | |-- system + | | | | |-- SysController.class + | | | | |-- SysLogController.class + | | | | |-- SysMenuController.class + | | | | |-- SysRoleController.class + | | | | |-- SysUserController.class + | | | |-- tool + | | | |-- CaptchaController.class + | | |-- static + | | | |-- api + | | | | |-- clear.json + | | | | |-- init.json + | | | | |-- menus.json + | | | | |-- table.json + | | | | |-- tableSelect.json + | | | | |-- upload.json + | | | |-- css + | | | | |-- layuimini.css + | | | | |-- login.css + | | | | |-- public.css + | | | | |-- login2 + | | | | | |-- admin.css + | | | | | |-- login2.css + | | | | |-- themes + | | | | |-- default.css + | | | |-- doc + | | | | |-- AllInOne.css + | | | | |-- font.css + | | | | |-- highlight.min.js + | | | | |-- index.html + | | | | |-- jquery.min.js + | | | | |-- xt256.min.css + | | | |-- images + | | | | |-- bg-login.jpg + | | | | |-- bg.jpg + | | | | |-- captcha.jpg + | | | | |-- donate_qrcode.png + | | | | |-- favicon.ico + | | | | |-- favicon2.ico + | | | | |-- home.png + | | | | |-- icon-login.png + | | | | |-- ic_404.png + | | | | |-- loginbg.png + | | | | |-- logo.png + | | | | |-- logo2.png + | | | |-- js + | | | | |-- lay-config.js + | | | | |-- time.js + | | | | |-- lay-module + | | | | |-- dtree + | | | | | |-- dtree.css + | | | | | |-- dtree.js + | | | | | |-- 开发者日志.txt + | | | | | |-- font + | | | | | |-- dtreefont.css + | | | | | |-- dtreefont.eot + | | | | | |-- dtreefont.svg + | | | | | |-- dtreefont.ttf + | | | | | |-- dtreefont.woff + | | | | | |-- icons.json + | | | | |-- echarts + | | | | | |-- echarts.js + | | | | | |-- echartsTheme.js + | | | | |-- iconPicker + | | | | | |-- iconPickerFa.js + | | | | |-- layarea + | | | | | |-- layarea.js + | | | | |-- layuimini + | | | | | |-- miniAdmin.js + | | | | | |-- miniMenu.js + | | | | | |-- miniTab.js + | | | | | |-- miniTheme.js + | | | | | |-- miniTongji.js + | | | | |-- step-lay + | | | | | |-- step.css + | | | | | |-- step.js + | | | | |-- tableSelect + | | | | | |-- tableSelect.js + | | | | |-- treetable-lay + | | | | | |-- treetable.css + | | | | | |-- treetable.js + | | | | |-- treetable-lay-3.x + | | | | | |-- treeTable.css + | | | | | |-- treeTable.js + | | | | | |-- treeTable2.js + | | | | |-- wangEditor + | | | | |-- wangEditor.css + | | | | |-- wangEditor.js + | | | | |-- wangEditor.min.css + | | | | |-- wangEditor.min.js + | | | | |-- wangEditor.min.js.map + | | | | |-- fonts + | | | | |-- w-e-icon.woff + | | | |-- lib + | | | |-- font-awesome-4.7.0 + | | | | |-- HELP-US-OUT.txt + | | | | |-- css + | | | | | |-- font-awesome.css + | | | | | |-- font-awesome.min.css + | | | | |-- fonts + | | | | | |-- fontawesome-webfont.eot + | | | | | |-- fontawesome-webfont.svg + | | | | | |-- fontawesome-webfont.ttf + | | | | | |-- fontawesome-webfont.woff + | | | | | |-- fontawesome-webfont.woff2 + | | | | | |-- FontAwesome.otf + | | | | |-- less + | | | | | |-- animated.less + | | | | | |-- bordered-pulled.less + | | | | | |-- core.less + | | | | | |-- fixed-width.less + | | | | | |-- font-awesome.less + | | | | | |-- icons.less + | | | | | |-- larger.less + | | | | | |-- list.less + | | | | | |-- mixins.less + | | | | | |-- path.less + | | | | | |-- rotated-flipped.less + | | | | | |-- screen-reader.less + | | | | | |-- stacked.less + | | | | | |-- variables.less + | | | | |-- scss + | | | | |-- font-awesome.scss + | | | | |-- _animated.scss + | | | | |-- _bordered-pulled.scss + | | | | |-- _core.scss + | | | | |-- _fixed-width.scss + | | | | |-- _icons.scss + | | | | |-- _larger.scss + | | | | |-- _list.scss + | | | | |-- _mixins.scss + | | | | |-- _path.scss + | | | | |-- _rotated-flipped.scss + | | | | |-- _screen-reader.scss + | | | | |-- _stacked.scss + | | | | |-- _variables.scss + | | | |-- highlight + | | | | |-- highlight.min.css + | | | | |-- highlight.min.js + | | | |-- jq-module + | | | | |-- jquery.particleground.min.js + | | | | |-- paigusu.min.js + | | | | |-- zyupload + | | | | |-- zyupload-1.0.0.min.css + | | | | |-- zyupload-1.0.0.min.js + | | | |-- jquery-3.4.1 + | | | | |-- jquery-3.4.1.min.js + | | | |-- jsencrypt + | | | | |-- jsencrypt.min.js + | | | | |-- rsa.js + | | | |-- layui-v2.6.3 + | | | | |-- layui.js + | | | | |-- css + | | | | | |-- layui.css + | | | | | |-- modules + | | | | | |-- code.css + | | | | | |-- laydate + | | | | | | |-- default + | | | | | | |-- laydate.css + | | | | | |-- layer + | | | | | |-- default + | | | | | |-- icon-ext.png + | | | | | |-- icon.png + | | | | | |-- layer.css + | | | | | |-- loading-0.gif + | | | | | |-- loading-1.gif + | | | | | |-- loading-2.gif + | | | | |-- font + | | | | |-- iconfont.eot + | | | | |-- iconfont.svg + | | | | |-- iconfont.ttf + | | | | |-- iconfont.woff + | | | | |-- iconfont.woff2 + | | | |-- qrcode + | | | |-- qrcode.min.js + | | |-- templates + | | |-- component + | | | |-- alipay + | | | | |-- index.html + | | | |-- qiniuOss + | | | | |-- index.html + | | | |-- wechatPay + | | | |-- index.html + | | |-- error + | | | |-- 404.html + | | | |-- 500.html + | | | |-- error.html + | | |-- system + | | |-- index.html + | | |-- login.html + | | |-- welcome.html + | | |-- advanced + | | | |-- generator.html + | | | |-- monitorServer.html + | | |-- log + | | | |-- login.html + | | | |-- request.html + | | |-- menu + | | | |-- add.html + | | | |-- edit.html + | | | |-- index.html + | | |-- role + | | | |-- add.html + | | | |-- authUser.html + | | | |-- edit.html + | | | |-- index.html + | | |-- user + | | | |-- add.html + | | | |-- authRole.html + | | | |-- edit.html + | | | |-- index.html + | | |-- userCenter + | | |-- password.html + | | |-- setting.html + | |-- generated-sources + | | |-- annotations + | |-- generated-test-sources + | | |-- test-annotations + | |-- maven-archiver + | | |-- pom.properties + | |-- maven-status + | | |-- maven-compiler-plugin + | | |-- compile + | | | |-- default-compile + | | | |-- createdFiles.lst + | | | |-- inputFiles.lst + | | |-- testCompile + | | |-- default-testCompile + | | |-- createdFiles.lst + | | |-- inputFiles.lst + | |-- surefire-reports + | | |-- 2021-12-28T19-22-00_971-jvmRun1.dump + | | |-- com.zxdmy.excite.admin.ExciteAdminApplicationTests.txt + | | |-- com.zxdmy.excite.admin.service.ISysMenuServiceTest.txt + | | |-- com.zxdmy.excite.admin.service.ISysUserServiceTest.txt + | | |-- com.zxdmy.excite.admin.utils.RedisUtilsTest.txt + | | |-- TEST-com.zxdmy.excite.admin.ExciteAdminApplicationTests.xml + | | |-- TEST-com.zxdmy.excite.admin.service.ISysMenuServiceTest.xml + | | |-- TEST-com.zxdmy.excite.admin.service.ISysUserServiceTest.xml + | | |-- TEST-com.zxdmy.excite.admin.utils.RedisUtilsTest.xml + | |-- test-classes + | |-- com + | |-- zxdmy + | |-- excite + | |-- admin + | |-- CodeGenerator$1.class + | |-- CodeGenerator$2.class + | |-- CodeGenerator.class + | |-- ExciteAdminApplicationTests.class + | |-- SmartDocGenerator.class + | |-- component + | | |-- AlipayTest.class + | | |-- AliyunSmsTest.class + | | |-- WeChatPayTest.class + | |-- service + | | |-- IGlobalConfigServiceTest.class + | | |-- ISysMenuServiceTest.class + | | |-- ISysUserServiceTest.class + | |-- utils + | |-- RedisUtilsTest.class + |-- ss-common + | |-- pom.xml + | |-- README.md + | |-- src + | | |-- main + | | |-- java + | | | |-- com + | | | |-- zxdmy + | | | |-- excite + | | | |-- common + | | | |-- base + | | | | |-- BaseController.java + | | | | |-- BaseResult.java + | | | | |-- ErrorController.java + | | | |-- config + | | | | |-- ErrorPageConfig.java + | | | | |-- ExciteConfig.java + | | | | |-- KaptchaConfig.java + | | | | |-- MybatisPlusConfig.java + | | | | |-- RedisConfig.java + | | | | |-- SpringDocConfig.java + | | | |-- entity + | | | | |-- CaptchaDomain.java + | | | | |-- GlobalConfig.java + | | | |-- enums + | | | | |-- ReturnCode.java + | | | | |-- SystemCode.java + | | | |-- exception + | | | | |-- GlobalException.java + | | | | |-- ServiceException.java + | | | |-- mapper + | | | | |-- GlobalConfigMapper.java + | | | |-- service + | | | | |-- CaptchaService.java + | | | | |-- IGlobalConfigService.java + | | | | |-- RedisService.java + | | | | |-- impl + | | | | |-- GlobalConfigServiceImpl.java + | | | |-- utils + | | | |-- ArithUtils.java + | | | |-- DateUtils.java + | | | |-- HttpServletRequestUtil.java + | | | |-- KaptchaMathOneTextCreator.java + | | | |-- KaptchaMathTwoTextCreator.java + | | | |-- MyCaptchaUtil.java + | | |-- resources + | | |-- mapper + | | |-- GlobalConfigMapper.xml + | |-- target + | |-- ss-common-2.0.0.jar + | |-- classes + | | |-- com + | | | |-- zxdmy + | | | |-- excite + | | | |-- common + | | | |-- base + | | | | |-- BaseController.class + | | | | |-- BaseResult.class + | | | | |-- ErrorController.class + | | | |-- config + | | | | |-- ErrorPageConfig.class + | | | | |-- ExciteConfig.class + | | | | |-- KaptchaConfig.class + | | | | |-- MybatisPlusConfig.class + | | | | |-- RedisConfig.class + | | | | |-- SpringDocConfig.class + | | | |-- entity + | | | | |-- CaptchaDomain.class + | | | | |-- GlobalConfig.class + | | | |-- enums + | | | | |-- ReturnCode.class + | | | | |-- SystemCode.class + | | | |-- exception + | | | | |-- GlobalException.class + | | | | |-- ServiceException.class + | | | |-- mapper + | | | | |-- GlobalConfigMapper.class + | | | |-- service + | | | | |-- CaptchaService.class + | | | | |-- IGlobalConfigService.class + | | | | |-- RedisService.class + | | | | |-- impl + | | | | |-- GlobalConfigServiceImpl.class + | | | |-- utils + | | | |-- ArithUtils.class + | | | |-- DateUtils.class + | | | |-- HttpServletRequestUtil.class + | | | |-- KaptchaMathOneTextCreator.class + | | | |-- KaptchaMathTwoTextCreator.class + | | | |-- MyCaptchaUtil.class + | | |-- mapper + | | | |-- GlobalConfigMapper.xml + | | |-- META-INF + | | |-- spring-configuration-metadata.json + | |-- generated-sources + | | |-- annotations + | |-- maven-archiver + | | |-- pom.properties + | |-- maven-status + | |-- maven-compiler-plugin + | |-- compile + | |-- default-compile + | |-- createdFiles.lst + | |-- inputFiles.lst + |-- ss-component + | |-- pom.xml + | |-- src + | | |-- main + | | |-- java + | | |-- com + | | |-- zxdmy + | | |-- excite + | | |-- component + | | |-- alipay + | | | |-- AlipayService.java + | | |-- aliyun + | | | |-- AliyunOssService.java + | | | |-- AliyunSmsService.java + | | |-- bo + | | | |-- AlipayBO.java + | | | |-- AliyunOssBO.java + | | | |-- AliyunSmsBO.java + | | | |-- JustAuthBO.java + | | | |-- QiniuOssBO.java + | | | |-- WeChatPayBO.java + | | |-- justauth + | | | |-- JustAuthService.java + | | |-- qiniu + | | | |-- QiniuOssService.java + | | |-- vo + | | | |-- AliyunOssPolicyVO.java + | | | |-- QiniuFileVO.java + | | |-- wechat + | | |-- WeChatPayService.java + | |-- target + | |-- ss-component-2.0.0.jar + | |-- classes + | | |-- com + | | |-- zxdmy + | | |-- excite + | | |-- component + | | |-- alipay + | | | |-- AlipayService.class + | | |-- aliyun + | | | |-- AliyunOssService.class + | | | |-- AliyunSmsService.class + | | |-- bo + | | | |-- AlipayBO.class + | | | |-- AliyunOssBO.class + | | | |-- AliyunSmsBO.class + | | | |-- JustAuthBO.class + | | | |-- QiniuOssBO.class + | | | |-- WeChatPayBO.class + | | |-- justauth + | | | |-- JustAuthService$1.class + | | | |-- JustAuthService.class + | | |-- qiniu + | | | |-- QiniuOssService.class + | | |-- vo + | | | |-- AliyunOssPolicyVO.class + | | | |-- QiniuFileVO.class + | | |-- wechat + | | |-- WeChatPayService.class + | |-- generated-sources + | | |-- annotations + | |-- maven-archiver + | | |-- pom.properties + | |-- maven-status + | |-- maven-compiler-plugin + | |-- compile + | |-- default-compile + | |-- createdFiles.lst + | |-- inputFiles.lst + |-- ss-framework + | |-- pom.xml + | |-- README.md + | |-- src + | | |-- main + | | |-- java + | | |-- com + | | |-- zxdmy + | | |-- excite + | | |-- framework + | | |-- aop + | | | |-- AnnotationSaveLoginLog.java + | | | |-- AnnotationSaveReLog.java + | | | |-- SaveLogAspect.java + | | |-- config + | | |-- oshi + | | | |-- Server.java + | | | |-- domain + | | | |-- Cpu.java + | | | |-- Jvm.java + | | | |-- Mem.java + | | | |-- Sys.java + | | | |-- SysFile.java + | | |-- satoken + | | |-- SaTokenConfig.java + | | |-- SaTokenListenerConfig.java + | | |-- SaTokenStpInterfaceImpl.java + | |-- target + | |-- ss-framework-2.0.0.jar + | |-- classes + | | |-- com + | | |-- zxdmy + | | |-- excite + | | |-- framework + | | |-- aop + | | | |-- AnnotationSaveLoginLog.class + | | | |-- AnnotationSaveReLog.class + | | | |-- SaveLogAspect.class + | | |-- oshi + | | | |-- Server.class + | | | |-- domain + | | | |-- Cpu.class + | | | |-- Jvm.class + | | | |-- Mem.class + | | | |-- Sys.class + | | | |-- SysFile.class + | | |-- satoken + | | |-- SaTokenConfig.class + | | |-- SaTokenListenerConfig.class + | | |-- SaTokenStpInterfaceImpl.class + | |-- generated-sources + | | |-- annotations + | |-- maven-archiver + | | |-- pom.properties + | |-- maven-status + | |-- maven-compiler-plugin + | |-- compile + | |-- default-compile + | |-- createdFiles.lst + | |-- inputFiles.lst + |-- ss-system + |-- pom.xml + |-- README.md + |-- src + | |-- main + | |-- java + | | |-- com + | | |-- zxdmy + | | |-- excite + | | |-- system + | | |-- entity + | | | |-- SysLogLogin.java + | | | |-- SysLogRequest.java + | | | |-- SysMenu.java + | | | |-- SysRole.java + | | | |-- SysRoleMenu.java + | | | |-- SysUser.java + | | | |-- SysUserRole.java + | | |-- mapper + | | | |-- SysLogLoginMapper.java + | | | |-- SysLogRequestMapper.java + | | | |-- SysMenuMapper.java + | | | |-- SysRoleMapper.java + | | | |-- SysRoleMenuMapper.java + | | | |-- SysUserMapper.java + | | | |-- SysUserRoleMapper.java + | | |-- service + | | | |-- ISysLogLoginService.java + | | | |-- ISysLogRequestService.java + | | | |-- ISysMenuService.java + | | | |-- ISysRoleMenuService.java + | | | |-- ISysRoleService.java + | | | |-- ISysUserRoleService.java + | | | |-- ISysUserService.java + | | | |-- impl + | | | |-- SysLogLoginServiceImpl.java + | | | |-- SysLogRequestServiceImpl.java + | | | |-- SysMenuServiceImpl.java + | | | |-- SysRoleMenuServiceImpl.java + | | | |-- SysRoleServiceImpl.java + | | | |-- SysUserRoleServiceImpl.java + | | | |-- SysUserServiceImpl.java + | | |-- utils + | | |-- AuthUtils.java + | |-- resources + | |-- mapper + | |-- SysLogLoginMapper.xml + | |-- SysLogRequestMapper.xml + | |-- SysMenuMapper.xml + | |-- SysRoleMapper.xml + | |-- SysRoleMenuMapper.xml + | |-- SysUserMapper.xml + | |-- SysUserRoleMapper.xml + |-- target + |-- ss-system-2.0.0.jar + |-- classes + | |-- com + | | |-- zxdmy + | | |-- excite + | | |-- system + | | |-- entity + | | | |-- SysLogLogin.class + | | | |-- SysLogRequest.class + | | | |-- SysMenu.class + | | | |-- SysRole.class + | | | |-- SysRoleMenu.class + | | | |-- SysUser.class + | | | |-- SysUserRole.class + | | |-- mapper + | | | |-- SysLogLoginMapper.class + | | | |-- SysLogRequestMapper.class + | | | |-- SysMenuMapper.class + | | | |-- SysRoleMapper.class + | | | |-- SysRoleMenuMapper.class + | | | |-- SysUserMapper.class + | | | |-- SysUserRoleMapper.class + | | |-- service + | | | |-- ISysLogLoginService.class + | | | |-- ISysLogRequestService.class + | | | |-- ISysMenuService.class + | | | |-- ISysRoleMenuService.class + | | | |-- ISysRoleService.class + | | | |-- ISysUserRoleService.class + | | | |-- ISysUserService.class + | | | |-- impl + | | | |-- SysLogLoginServiceImpl.class + | | | |-- SysLogRequestServiceImpl.class + | | | |-- SysMenuServiceImpl.class + | | | |-- SysRoleMenuServiceImpl.class + | | | |-- SysRoleServiceImpl.class + | | | |-- SysUserRoleServiceImpl.class + | | | |-- SysUserServiceImpl$1.class + | | | |-- SysUserServiceImpl.class + | | |-- utils + | | |-- AuthUtils.class + | |-- mapper + | |-- SysLogLoginMapper.xml + | |-- SysLogRequestMapper.xml + | |-- SysMenuMapper.xml + | |-- SysRoleMapper.xml + | |-- SysRoleMenuMapper.xml + | |-- SysUserMapper.xml + | |-- SysUserRoleMapper.xml + |-- generated-sources + | |-- annotations + |-- maven-archiver + | |-- pom.properties + |-- maven-status + |-- maven-compiler-plugin + |-- compile + |-- default-compile + |-- createdFiles.lst + |-- inputFiles.lst diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..1c240ba --- /dev/null +++ b/pom.xml @@ -0,0 +1,198 @@ + + + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + + 2.5.4 + + + + com.zxdmy.excite + + shensong + + 2.0.0 + + pom + + Lt-Cloud + + Demo project for Spring Boot + + + + + ss-admin + ss-common + ss-component + ss-system + ss-framework + + + + + + + 2.0.0 + 1.8 + + + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + + + + + org.springframework.boot + spring-boot-devtools + true + true + + + + + org.springframework.boot + spring-boot-starter-validation + + + + + org.springframework.boot + spring-boot-starter-freemarker + + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + + + org.projectlombok + lombok + true + + + + + com.alibaba + druid-spring-boot-starter + 1.2.8 + + + + mysql + mysql-connector-java + 8.0.28 + runtime + + + + + com.baomidou + mybatis-plus-boot-starter + 3.4.3.2 + + + + + com.baomidou + mybatis-plus-generator + 3.4.1 + + + + + com.alibaba + fastjson + 1.2.83 + + + + + com.fasterxml.jackson.core + jackson-databind + 2.12.7 + + + + + org.springdoc + springdoc-openapi-ui + 1.5.10 + + + + + com.github.shalousun + smart-doc + + test + 2.2.6 + + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + + + cn.dev33 + sa-token-spring-boot-starter + 1.28.0 + + + org.assertj + assertj-core + + + + + + + + + + + cn.hutool + hutool-all + 5.7.12 + + + + com.tennetcn.free + think-swagger-ui-starter + 0.0.5 + + + + + + + + + + + + + + diff --git a/ss-admin/README.md b/ss-admin/README.md new file mode 100644 index 0000000..125cc21 --- /dev/null +++ b/ss-admin/README.md @@ -0,0 +1,3 @@ +# Ss-Admin模块 + +主模块,项目启动的入口,所有控制类模块,配置文件、资源文件等。 diff --git a/ss-admin/pom.xml b/ss-admin/pom.xml new file mode 100644 index 0000000..2682ff6 --- /dev/null +++ b/ss-admin/pom.xml @@ -0,0 +1,66 @@ + + + 4.0.0 + + + com.zxdmy.excite + shensong + 2.0.0 + + + ss-admin + 2.0.0 + ss-admin + + 这里是本模块的描述. + + + + + + + com.zxdmy.excite + ss-framework + 2.0.0 + + + + com.zxdmy.excite + ss-component + 2.0.0 + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + com.zxdmy.excite.admin.ExciteAdminApplication + + + + + + + repackage + + + + + + + + diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/ExciteAdminApplication.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/ExciteAdminApplication.java new file mode 100644 index 0000000..b34b1aa --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/ExciteAdminApplication.java @@ -0,0 +1,30 @@ +package com.zxdmy.excite.admin; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.bind.annotation.RestController; + +/** + * 项目启动入口 + * + * @author 沈松 + */ +@RestController +@SpringBootApplication(scanBasePackages = { + "com.zxdmy.excite", + "com.zxdmy.excite.system.service", + "com.zxdmy.excite.common.service", +}) +@MapperScan(basePackages = { + "com.zxdmy.excite.system.mapper", + "com.zxdmy.excite.common.mapper", +}) +public class ExciteAdminApplication { + + public static void main(String[] args) { + SpringApplication.run(ExciteAdminApplication.class, args); + System.out.println("系统启动成功,访问 http://localhost:8077 "); + } + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/advanced/GeneratorController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/advanced/GeneratorController.java new file mode 100644 index 0000000..21e07b2 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/advanced/GeneratorController.java @@ -0,0 +1,225 @@ +package com.zxdmy.excite.admin.controller.advanced; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import lombok.AllArgsConstructor; +import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + *

+ * 描述 + *

+ * + * @author 沈松 + * @since 2021/12/29 18:50 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/system/develop") +public class GeneratorController extends BaseController { + + private DataSourceProperties dataSourceProperties; + + /** + * 访问[代码生成]页面 + * + * @return 页面跳转 + */ + @RequestMapping("generator") + public String generatorIndex() { + return "system/advanced/generator"; + } + + @GetMapping("/generator/list") + @ResponseBody + public BaseResult getTableList() { + // 获取链接数据库的基本信息,并填入配置类 + DataSourceConfig dsConfig = new DataSourceConfig(); + dsConfig.setUrl(dataSourceProperties.getUrl())// + .setSchemaName("public") //数据库 schema name + .setDbType(DbType.MYSQL) + .setDriverName(dataSourceProperties.getDriverClassName()) + .setUsername(dataSourceProperties.getUsername()) + .setPassword(dataSourceProperties.getPassword()); + + // 策略配置(数据库表配置) + StrategyConfig strategyConfig = new StrategyConfig(); + strategyConfig + .setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略:下划线转驼峰 + .setColumnNaming(NamingStrategy.underline_to_camel) // 数据库表字段映射到实体的命名策略:下划线转驼峰 + .setEntityLombokModel(true) // 实体是否为lombok模型(默认 false) + .setControllerMappingHyphenStyle(true); // 驼峰转连字符 + + // 获取所有的表 + ConfigBuilder configBuilder = new ConfigBuilder(null, dsConfig, strategyConfig, null, null); + List tableInfos = configBuilder.getTableInfoList(); + return success(200, tableInfos); + } + + /** + * 生成代码 + * + * @param projectPack 项目路径 + * @param moduleName 模块名 + * @param parentPack 父包名 + * @param author 作者 + * @param tableName 表名 + * @return 结果 + */ + @PostMapping("/generator/create") + @ResponseBody + public BaseResult CodeGenerator(String projectPack, String moduleName, String parentPack, String author, String tableName) { + // 代码生成器类 + AutoGenerator mpg = new AutoGenerator(); + + // 项目根目录 + String projectPath = System.getProperty("user.dir"); + // D:\IdeaProjects\2021_ExciteCMS\ExciteCMS + + // 六类文件的保存路径设置,可以根据自己项目的实际情况修改 + String entityPath = projectPath + "/ss-" + moduleName + projectPack + moduleName + "/entity/"; + String servicePath = projectPath + "/ss-" + moduleName + projectPack + moduleName + "/service/"; + String serviceImplPath = projectPath + "/ss-" + moduleName + projectPack + moduleName + "/service/impl/"; + String mapperPath = projectPath + "/ss-" + moduleName + projectPack + moduleName + "/mapper"; + String mapperXmlPath = projectPath + "/ss-" + moduleName + "/src/main/resources/mapper/"; + String controllerPath = projectPath + "/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/" + moduleName + "/"; + + // 1. 全局配置 + GlobalConfig globalConfig = new GlobalConfig(); + globalConfig + // 代码生成的目录 +// .setOutputDir(projectPath + "/src/main/java") + .setAuthor(author) // 修改项目作者 + .setOpen(false) // 是否打开输出目录 + .setIdType(IdType.ASSIGN_ID) // 主键策略 + .setFileOverride(false) // 是否覆盖已有文件 + .setBaseResultMap(true) // 是否开启 BaseResultMap(XML文件) + .setBaseColumnList(true); // 是否开启 baseColumnList(XML文件) +// .setServiceName(""); + + //把全局配置添加到代码生成器主类 + mpg.setGlobalConfig(globalConfig); + + // 2. 数据源配置 + DataSourceConfig dsConfig = new DataSourceConfig(); + dsConfig + // 数据库链接URL + .setUrl(dataSourceProperties.getUrl()) + // .setSchemaName("public") //数据库 schema name + .setDbType(DbType.MYSQL) // 数据库类型 + .setDriverName(dataSourceProperties.getDriverClassName()) + .setUsername(dataSourceProperties.getUsername()) + .setPassword(dataSourceProperties.getPassword()); + + // 把数据源配置添加到代码生成器主类 + mpg.setDataSource(dsConfig); + + // 3. 包配置 + PackageConfig pkConfig = new PackageConfig(); + // 添加这个后 会以一个实体为一个模块 比如user实体会生成user模块 每个模块下都会生成三层 +// pkConfig.setModuleName(scanner("模块名(系统端建议system,客户端建议client)")); + // 父包名。如果为空,将下面子包名必须写写完整的包路径。如果不为空,只需写子包名。 + pkConfig.setParent(parentPack) + // 子包名 + .setEntity(moduleName + ".entity") // 实体类 Entity包名 + .setXml("mapper") // 持久层 Mapper.xml 包名 + .setMapper(moduleName + ".mapper") // 持久层 Mapper.java 包名 + .setService(moduleName + ".service") // 服务层 Service.java 包名 + .setServiceImpl(moduleName + ".service.impl") // 服务层 ServiceImpl.java 包名 + .setController("admin.controller." + moduleName); // 控制层 Controller.java 包名 + + //设置自定义输出目录(分布式项目使用) + Map pathInfo = new HashMap<>(); + + pathInfo.put(ConstVal.ENTITY_PATH, entityPath); + pathInfo.put(ConstVal.MAPPER_PATH, mapperPath); + // pathInfo.put(ConstVal.XML_PATH, mapperXmlPath); + pathInfo.put(ConstVal.SERVICE_PATH, servicePath); + pathInfo.put(ConstVal.SERVICE_IMPL_PATH, serviceImplPath); + pathInfo.put(ConstVal.CONTROLLER_PATH, controllerPath); + + pkConfig.setPathInfo(pathInfo); + + // 把包配置添加到代码生成器主类 + mpg.setPackageInfo(pkConfig); + + // 4. 自定义配置【这是MyBatisPlus 3.x 新增的】 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + // to do nothing + } + }; + // 如果模板引擎是 freemarker + String templatePath = "/templates/mapper.xml.ftl"; + // 如果模板引擎是 velocity + // String templatePath = "/templates/mapper.xml.vm"; + + // 自定义输出配置 + List focList = new ArrayList<>(); + // 自定义配置会被优先输出 + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + // 自定义输出文件名称,如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! + return mapperXmlPath + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; + } + }); + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + // 配置模板 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setXml(null); + mpg.setTemplate(templateConfig); + + // 5. 策略配置(数据库表配置) + StrategyConfig strategyConfig = new StrategyConfig(); + + strategyConfig + .setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略:下划线转驼峰 + .setColumnNaming(NamingStrategy.underline_to_camel) // 数据库表字段映射到实体的命名策略:下划线转驼峰 + .setEntityLombokModel(true) // 实体是否为lombok模型(默认 false) + // .setSuperEntityClass("com.zxdmy.wx.mp.wechat.common.BaseEntity") // 设置实体类的父类(如果启用,实体类会增加BaseEntity的继承) + .setSuperControllerClass("com.zxdmy.excite.common.base.BaseController") // 设置控制类的父类(如果启用,控制类会增加BaseController的继承) + // 提示输入生成的表名 + .setInclude(tableName) + // .setExclude("***") // 需要排除的表名,允许正则表达式 + // .setSuperEntityColumns("id"); // 实体类主键名称设置(如果启用,生成的实体类没有此字段) + // .setTablePrefix(pc.getModuleName() + "_") // 表前缀符(如果启用,生成的所有文件名没有此前缀) + .setControllerMappingHyphenStyle(true); // 驼峰转连字符 + + // 把数据库配置添加到代码生成器主类 + mpg.setStrategy(strategyConfig); + + // 在代码生成器主类上配置模板引擎,选择 freemarker 引擎需要指定如下加,注意 pom 依赖必须有! + mpg.setTemplateEngine(new FreemarkerTemplateEngine()); + // 开始执行 + try { + mpg.execute(); + } catch (Exception e) { + return error(e.getMessage()); + } + return success("表" + tableName + "的代码生成成功!"); + } + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/advanced/MonitorController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/advanced/MonitorController.java new file mode 100644 index 0000000..576e6e8 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/advanced/MonitorController.java @@ -0,0 +1,41 @@ +package com.zxdmy.excite.admin.controller.advanced; + +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.framework.oshi.Server; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 描述 + *

+ * + * @author 沈松 + * @since 2022/1/22 21:18 + */ +@Controller +@RequestMapping("/system/monitor") +public class MonitorController extends BaseController { + + + @RequestMapping("server") + public String goServerMonitor() { + return "system/advanced/monitorServer"; + } + + @PostMapping("/server") + @ResponseBody + public BaseResult serverMonitor() { + Server server = new Server(); + try { + server.copyTo(); + return success("获取服务器信息成功!", server); + } catch (Exception e) { + return error("获取服务器信息失败!"); + } + } +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/account/AccountDepartmentController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/account/AccountDepartmentController.java new file mode 100644 index 0000000..716b8d2 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/account/AccountDepartmentController.java @@ -0,0 +1,237 @@ +package com.zxdmy.excite.admin.controller.cloud.account; + +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.cloud.account.CloudCompany; +import com.zxdmy.excite.system.entity.cloud.account.CloudDepartment; +import com.zxdmy.excite.system.entity.dto.DepartmentTreeDTO; +import com.zxdmy.excite.system.entity.dto.DepartmentUserTreeNode; +import com.zxdmy.excite.system.entity.req.account.ReqDepartment; +import com.zxdmy.excite.system.entity.vo.account.DepartmentVo; +import com.zxdmy.excite.system.service.cloud.account.ICloudCompanyService; +import com.zxdmy.excite.system.service.cloud.account.ICloudDepartmentService; +import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.*; + +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/account/department/") +public class AccountDepartmentController extends BaseController { + + private ICloudDepartmentService iCloudDepartmentService; + private ICloudCompanyService iCloudCompanyService; + @RequestMapping("index") + public String index() { + return "cloud/account/department/index"; + } + + + @GetMapping("/list") + @ResponseBody + public BaseResult getPageList(Integer page, Integer limit, ReqDepartment data) { + try { + PageList dataPage = iCloudDepartmentService.queryByPage(page, limit, data); + return success("获取数据成功", dataPage.getList(), (int) dataPage.getTotal()); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + + @RequestMapping("add") + public String add() { + return "cloud/account/department/add"; + } + + @PostMapping("/addSave") + @ResponseBody + @AnnotationSaveReLog + public BaseResult addSave(@Validated ReqDepartment data) { + try { + if(null == iCloudDepartmentService.getByData(data)){ + if(iCloudDepartmentService.saveData(data)==1){ + return success("操作成功"); + }else{ + return error(400, "操作失败,系统错误"); + } + }else{ + return error(400, "操作失败,数据已存在"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @RequestMapping("edit/{id}") + public String edit(@PathVariable String id, ModelMap map) { + CloudDepartment data = iCloudDepartmentService.getById(id); + // 加载至前端 + if (data == null) { + map.put("code", 404); + map.put("msg", "数据不存在!"); + return "error/error"; + } + map.put("id", id); + return "cloud/account/department/edit"; + } + + @GetMapping("/getData") + @ResponseBody + public BaseResult getData(ReqDepartment req) { + try { + DepartmentVo data = iCloudDepartmentService.getByData(req); + if(null!=data){ + return success("获取数据成功",data); + }else{ + return error(400, "数据不存在!"); + } + + + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @PostMapping("/editSave") + @ResponseBody + @AnnotationSaveReLog + public BaseResult editSave(@Validated ReqDepartment data) { + try { + if(null == iCloudDepartmentService.getByData(data)){ + if(iCloudDepartmentService.updateData(data)==1){ + return success(200,"操作成功"); + }else{ + return error(400, "操作失败,系统错误"); + } + }else{ + return error(400, "操作失败,数据已存在"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @PostMapping("/delete") + @ResponseBody + @AnnotationSaveReLog + public BaseResult delete(String id) { + try { + int result = iCloudDepartmentService.deleteById(id); + if (result == 1) { + return success(200, "删除成功!"); + }else{ + return error("删除失败!"); + } + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + } + + + @GetMapping("/query") + @ResponseBody + public BaseResult query() { + try { + List data = new ArrayList<>(); + List company = iCloudCompanyService.getList(); + for (CloudCompany cloudCompany :company) { + DepartmentTreeDTO departmentTreeDTO = new DepartmentTreeDTO(); + departmentTreeDTO.setId(cloudCompany.getId()); + departmentTreeDTO.setTitle(cloudCompany.getCompanyName()); + departmentTreeDTO.setSpread(true); + List dataPage = iCloudDepartmentService.getList(cloudCompany.getId()); + List department = buildDepartmentTree(dataPage); + departmentTreeDTO.setChildren(department); + data.add(departmentTreeDTO); + } + + return success(200, "获取数据成功!",data); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + @GetMapping("/query1") + @ResponseBody + public BaseResult query1() { + try { + List data = new ArrayList<>(); + List company = iCloudCompanyService.getList(); + for (CloudCompany cloudCompany :company) { + CloudDepartment cloudDepartment = new CloudDepartment(); + cloudDepartment.setId(cloudCompany.getId()); + cloudDepartment.setDepartmentName(cloudCompany.getCompanyName()); + DepartmentUserTreeNode departmentTreeDTO = new DepartmentUserTreeNode(cloudDepartment); + List tree = iCloudDepartmentService.buildDepartmentUserTree(cloudCompany.getId()); + departmentTreeDTO.setChildren(tree); + data.add(departmentTreeDTO); + System.out.println(tree); + } + + return success(200, "获取数据成功!",data); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + public List buildDepartmentTree(List departments) { + // 1. 按parentId分组 + Map> parentMap = new HashMap<>(); + // 2. 创建所有节点的映射 + Map nodeMap = new HashMap<>(); + // 3. 转换并分组 + for (CloudDepartment dept : departments) { + DepartmentTreeDTO node = new DepartmentTreeDTO(); + BeanUtils.copyProperties(dept, node); + node.setChildren(new ArrayList<>()); + nodeMap.put(dept.getId(), node); + + Long parentId = dept.getDepartmentParentId(); + if (parentId == null) { + parentId = 0L; // 将null转换为0,作为根节点的父ID + } + + parentMap.computeIfAbsent(parentId, k -> new ArrayList<>()) + .add(node); + } + + // 4. 构建树形结构 + List rootList = parentMap.getOrDefault(0L, new ArrayList<>()); + + // 5. 递归构建子节点 + for (Long parentId : parentMap.keySet()) { + if (parentId.equals(0L)) continue; + + DepartmentTreeDTO parentNode = nodeMap.get(parentId); + if (parentNode != null) { + parentNode.setChildren(parentMap.get(parentId)); + } + } + + // 6. 排序(按department_sort) + sortTreeNodes(rootList); + + return rootList; + } + + private void sortTreeNodes(List nodes) { + if (nodes == null || nodes.isEmpty()) return; + + // 按排序字段排序 + nodes.sort(Comparator.comparing(DepartmentTreeDTO::getDepartmentSort)); + + // 递归排序子节点 + for (DepartmentTreeDTO node : nodes) { + if (node.getChildren() != null && !node.getChildren().isEmpty()) { + sortTreeNodes(node.getChildren()); + } + } + } +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/account/AccountEnterpriseController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/account/AccountEnterpriseController.java new file mode 100644 index 0000000..c468f0a --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/account/AccountEnterpriseController.java @@ -0,0 +1,144 @@ +package com.zxdmy.excite.admin.controller.cloud.account; + +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.cloud.account.CloudCompany; +import com.zxdmy.excite.system.entity.req.account.ReqCompany; +import com.zxdmy.excite.system.entity.vo.account.CompanyVo; +import com.zxdmy.excite.system.service.cloud.account.ICloudCompanyService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/account/company") +public class AccountEnterpriseController extends BaseController { + + private ICloudCompanyService iCloudCompanyService; + + + @RequestMapping("index") + public String index() { + return "cloud/account/enterprise/index"; + } + + + @GetMapping("/list") + @ResponseBody + public BaseResult getPageList(Integer page, Integer limit, ReqCompany data) { + try { + PageList dataPage = iCloudCompanyService.queryByPage(page, limit, data); + return success("获取数据成功", dataPage.getList(), (int) dataPage.getTotal()); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + + @RequestMapping("add") + public String add() { + return "cloud/account/enterprise/add"; + } + + @PostMapping("/addSave") + @ResponseBody + @AnnotationSaveReLog + public BaseResult addSave(@Validated ReqCompany data) { + try { + if(null == iCloudCompanyService.getByData(data)){ + if(iCloudCompanyService.saveData(data)==1){ + return success("操作成功"); + }else{ + return error(400, "操作失败,系统错误"); + } + }else{ + return error(400, "操作失败,数据已存在"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @RequestMapping("edit/{id}") + public String edit(@PathVariable String id, ModelMap map) { + CloudCompany data = iCloudCompanyService.getById(id); + // 加载至前端 + if (data == null) { + map.put("code", 404); + map.put("msg", "数据不存在!"); + return "error/error"; + } + map.put("id", id); + return "cloud/account/enterprise/edit"; + } + + @GetMapping("/getData") + @ResponseBody + public BaseResult getData(String id) { + try { + CloudCompany data = iCloudCompanyService.getById(id); + if(null!=data){ + return success("获取数据成功",data); + }else{ + return error(400, "数据不存在!"); + } + + + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @PostMapping("/editSave") + @ResponseBody + @AnnotationSaveReLog + public BaseResult editSave(@Validated ReqCompany data) { + try { + if(null == iCloudCompanyService.getByData(data)){ + if(iCloudCompanyService.updateData(data)==1){ + return success(200,"操作成功"); + }else{ + return error(400, "操作失败,系统错误"); + } + }else{ + return error(400, "操作失败,数据已存在"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @PostMapping("/delete") + @ResponseBody + @AnnotationSaveReLog + public BaseResult delete(String id) { + try { + int result = iCloudCompanyService.deleteById(id); + if (result == 1) { + return success(200, "删除成功!"); + }else{ + return error("删除失败!"); + } + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + } + + @GetMapping("/query") + @ResponseBody + public BaseResult query() { + try { + List dataPage = iCloudCompanyService.queryByData(); + return success("获取数据成功", dataPage); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/account/AccountUserController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/account/AccountUserController.java new file mode 100644 index 0000000..305e3a1 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/account/AccountUserController.java @@ -0,0 +1,340 @@ +package com.zxdmy.excite.admin.controller.cloud.account; + +import cn.dev33.satoken.stp.SaTokenInfo; +import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import cn.hutool.crypto.asymmetric.KeyType; +import cn.hutool.crypto.asymmetric.RSA; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.common.config.ExciteConfig; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.common.enums.SystemCode; +import com.zxdmy.excite.framework.aop.AnnotationSaveLoginLog; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.entity.cloud.account.CloudCompany; +import com.zxdmy.excite.system.entity.cloud.account.CloudDepartment; +import com.zxdmy.excite.system.entity.dto.DepartmentTreeDTO; +import com.zxdmy.excite.system.entity.req.account.ReqDepartment; +import com.zxdmy.excite.system.entity.vo.account.DepartmentVo; +import com.zxdmy.excite.system.service.ISysUserService; +import com.zxdmy.excite.system.service.cloud.account.ICloudCompanyService; +import com.zxdmy.excite.system.service.cloud.account.ICloudDepartmentService; +import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpSession; +import java.util.*; + +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/account/user/") +public class AccountUserController extends BaseController { + + private ICloudDepartmentService iCloudDepartmentService; + private ICloudCompanyService iCloudCompanyService; + private ISysUserService userService; + private ExciteConfig exciteConfig; + @RequestMapping("index") + public String index() { + return "cloud/account/user/index"; + } + + @RequestMapping("goAdd/{id}") + public String goAdd(@PathVariable String id,ModelMap map) { + map.put("id", id); + return "cloud/account/user/add"; + } + + @RequestMapping("goEdit/{id}") + public String goEdit(@PathVariable String id, ModelMap map) { + // 获取该用户的信息 + SysUser user = userService.getById(id); + // 加载至前端 + if (user == null) { + map.put("code", 404); + map.put("msg", "用户不存在!"); + return "error/error"; + } + map.put("user", user); + return "cloud/account/user/edit"; + } + @RequestMapping("goAuthDepartment/{id}") + public String goAuthDepartment(@PathVariable String id, ModelMap map) { + // 获取该用户的信息 + SysUser user = userService.getById(id); + // 加载至前端 + if (user == null) { + map.put("code", 404); + map.put("msg", "用户不存在!"); + return "error/error"; + } + map.put("user", user); + return "cloud/account/user/editDepartment"; + } + + @RequestMapping("selectDepartment") + public String selectDepartment() { + return "cloud/account/user/selectDepartment"; + } + @RequestMapping("updateDepartment/{id}") + public String selectDepartment(@PathVariable String id, ModelMap map) { + map.put("id", id); + return "cloud/account/user/updateDepartment"; + } + @PostMapping(value = "/changeDepartment") + @ResponseBody + public BaseResult changeDepartment(String userId, String departmentId) { + try { + if (iCloudDepartmentService.changeDepartment(userId, departmentId)==1) { + return success(200, "转换成功!"); + } + return success("转换失败,请重试!"); + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + + } + + /** + * 接口功能:获取用户列表 + * + * @param page 当前页面 + * @param limit 每页请求数 + * @param username 检索用户名 + * @param account 检索电话或邮箱 + * @return JSON:用户列表 | 错误信息 + */ + @GetMapping(value = "/list") + @ResponseBody + public BaseResult getUserList(Integer page, Integer limit, String username, String account,String departmentId) { + Page userPage = userService.getPage(page, limit, username, account); + if (null != userPage) { + return success("查询成功", userPage.getRecords(), (int) userPage.getTotal()); + } else { + return error("查询失败,用户不存在"); + } + } + + @GetMapping(value = "/getPageList") + @ResponseBody + public BaseResult getPageList(Integer page, Integer limit, String username, String phone,String departmentId) { + PageList dataPage = userService.queryByPage(page, limit, username,phone,departmentId); + if (null != dataPage) { + return success("查询成功", dataPage.getList(), (int) dataPage.getTotal()); + } else { + return error("查询失败,用户不存在"); + } + } + + /** + * 接口功能:添加用户 + * 基本逻辑:接收前端的用户信息-->校验与初始化新用户信息-->添加至[用户表]-->获取新添加用户的ID-->用户ID与角色ID添加至[用户角色关联表]. + * + * @param user 用户信息 + * @param roleIds 用户分配的角色信息 + * @return JSON:成败结果 + * @apiNote 启用注解[@AnnotationSaveReLog]保存请求日志 + */ + @PostMapping(value = "/add") + @ResponseBody + @AnnotationSaveReLog + public BaseResult add(SysUser user, Integer[] roleIds,String[] roleIds1,String departmentId) { + // 新建用户:其邮箱或手机号、密码不能为空,因为这是登录凭证. + if (null != user && null != user.getPassword() && (null != user.getLoginName() || null != user.getPhone())) { + // 解密 + user.setPassword(SecureUtil.md5(this.decrypt(user.getPassword()))); + // 添加 + if (userService.saveData(user, roleIds,roleIds1,departmentId) > 0) { + return success("新用户添加成功!"); + } else { + return error("新用户添加失败,请重试!"); + } + } + return error("用户信息(账号或手机号、密码)不能为空,请重试!"); + } + + /** + * 接口功能:更新用户基本信息(不含角色信息) + * + * @param user 用户信息 + * @return JSON:成败结果 + * @apiNote 启用注解[@AnnotationSaveReLog]保存请求日志 + */ + @PostMapping(value = "/update") + @ResponseBody + @AnnotationSaveReLog + public BaseResult update(SysUser user) { + // 编辑用户基本信息:用户名、头像、性别、邮箱和手机号。 + if (null != user && null != user.getId()) { + // 其他信息(状态、密码)不能通过此接口修改,故其应为null. + if (null == user.getStatus() && null == user.getPassword()) { + if (userService.save(user, null) > 0) { + return success("用户信息编辑成功!"); + } else { + return error("用户信息编辑失败,请重试!"); + } + } else { + return error("接口请求信息错误!"); + } + } else { + return error("用户信息不能为空,请重试!"); + } + } + + /** + * 接口功能:删除用户 + * 基本逻辑:删除该用户的角色信息[用户-角色关联表]-->删除用户 + * + * @param userIds 用户ID列表 + * @return JSON:成败 + * @apiNote 启用注解[@AnnotationSaveReLog]保存请求日志 + */ + @PostMapping(value = "/delete") + @ResponseBody + @AnnotationSaveReLog + public BaseResult delete(Integer[] userIds) { + try { + if (userService.deleteUserById(userIds)[0] > 0) { + return success("用户删除成功"); + } + return error("用户删除失败"); + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + } + + /** + * 接口功能:给指定用户分配角色 + * + * @param id 用户ID + * @param roleIds 角色信息列表 + * @return 分配结果 + */ + @PostMapping(value = "/authRole") + @ResponseBody + public BaseResult setRole(Long id, String[] roleIds) { + try { + if (userService.setCloudRoleForUser(String.valueOf(id), roleIds)) { + return success(200, "分配角色成功!"); + } + return success("分配角色失败,请重试!"); + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + + } + + /** + * 接口功能:改变用户的状态 + * + * @param status 新状态:1-正常 0-禁用 + * @param userIds 用户ID列表 + * @return 修改结果 + */ + @PostMapping(value = "/changeStatus/{status}") + @ResponseBody + public BaseResult changeStatus(@PathVariable String status, Integer[] userIds) { + try { + int[] result = userService.changeStatus(Integer.parseInt(status), userIds); + // 没有失败 + if (result[0] != 0 && result[1] == 0) { + return success(200, "用户状态修改成功!"); + } + // 有成功的 + else if (result[0] != 0) { + return success(200, result[0] + "个角色状态更新成功," + result[1] + "个失败!"); + } else { + return success(500, "用户状态修改失败,请重试!"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + /** + * 接口功能:重置密码 + * + * @param userId 用户ID + * @param newPassword 新密码 + * @param newPassword2 新密码 + * @return 重置结果 + */ + @PostMapping(value = "/resetPassword") + @ResponseBody + @AnnotationSaveReLog + public BaseResult resetPassword(String userId, String newPassword, String newPassword2) { + if (null == userId || null == newPassword || null == newPassword2) { + return error("输入信息有误,请重新输入!"); + } + // 密码先解密 + newPassword = this.decrypt(newPassword); + newPassword2 = this.decrypt(newPassword2); + // 密码相同 + if (newPassword.equals(newPassword2)) { + SysUser user = new SysUser(); + try { + user.setId(Integer.parseInt(userId)); + // 密码MD5加密 + user.setPassword(SecureUtil.md5(newPassword)); + if (userService.save(user, null) > 0) { + return success("密码重置成功!"); + } else { + error("密码重置失败,请重试!"); + } + } catch (Exception e) { + return error(e.getMessage()); + } + } + return error("密码重置失败,新密码不一致!"); + } + + /** + * 接口功能:获取指定角色所分配的用户列表(拥有/不拥有此角色) + * + * @param roleId 角色ID + * @param have 是否用于此角色:0-不拥有 | 1-拥有 + * @return 用户列表 + */ + @GetMapping("/listForRole/{have}/{roleId}") + @ResponseBody + public BaseResult getUserListForRole(@PathVariable("have") String have, @PathVariable("roleId") Long roleId) { + try { + // 拥有 此角色 + List userList; + if (have.equals("1")) { + userList = userService.selectUsersByCloudUploadRoleId(String.valueOf(roleId)); + } + // 不拥有 此角色 + else { + userList = userService.selectUsersByCloudUploadRoleIdNotIn(String.valueOf(roleId)); + } + return success(200, "获取成功", userList); + } catch (Exception e) { + return error(e.getMessage()); + } + } + + + + /** + * 私有方法:解密密码 + * + * @param encrypt 加密密码 + * @return 解密密码 + */ + private String decrypt(String encrypt) { + // 根据私钥生成新的对象 + RSA rsa = new RSA(exciteConfig.getRsaPrivateKey(), null); + byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey); + return StrUtil.str(decrypt, CharsetUtil.CHARSET_UTF_8); + } +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/collect/CollectController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/collect/CollectController.java new file mode 100644 index 0000000..0b4be83 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/collect/CollectController.java @@ -0,0 +1,91 @@ +package com.zxdmy.excite.admin.controller.cloud.collect; + +import cn.dev33.satoken.stp.StpUtil; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.cloud.account.CloudCompany; +import com.zxdmy.excite.system.entity.cloud.space.CloudFile; +import com.zxdmy.excite.system.entity.req.account.ReqCompany; +import com.zxdmy.excite.system.entity.req.collection.ReqCloudUserCollection; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.service.cloud.collection.ICloudUserCollectionService; +import com.zxdmy.excite.system.service.cloud.space.ICloudFileService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 系统菜单/权限表 前端控制器 + * + * @author 沈松 + * @since 2021-09-12 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/collect/") +public class CollectController extends BaseController { + + private ICloudUserCollectionService iCloudUserCollectionService; + + /** + * @return 页面:【菜单管理】页面入口 + */ + @RequestMapping("index") + public String index() { + return "cloud/collect/index"; + } + + + @GetMapping("/list") + @ResponseBody + public BaseResult getPageList(Integer page, Integer limit, ReqCloudUserCollection data) { + try { + data.setUserId(StpUtil.getLoginIdAsInt()); + PageList dataPage = iCloudUserCollectionService.queryByPage(page, limit, data); + return success("获取列表成功", dataPage.getList(), (int) dataPage.getTotal()); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + + @PostMapping("/collection") + @ResponseBody + @AnnotationSaveReLog + public BaseResult collection(@Validated ReqCloudUserCollection data) { + try { + data.setUserId(StpUtil.getLoginIdAsInt()); + if(null == iCloudUserCollectionService.getByData(data)){ + if(iCloudUserCollectionService.saveData(data)==1){ + return success("操作成功"); + }else{ + return error(400, "操作失败,系统错误"); + } + }else{ + return error(400, "操作失败,数据已存在"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + + @PostMapping("/removeCollection") + @ResponseBody + @AnnotationSaveReLog + public BaseResult removeCollection(String id) { + try { + if(iCloudUserCollectionService.deleteById(id)==1){ + return success("操作成功"); + }else{ + return error(400, "操作失败,系统错误"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/lately/CloudUserLatelyController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/lately/CloudUserLatelyController.java new file mode 100644 index 0000000..2090ae3 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/lately/CloudUserLatelyController.java @@ -0,0 +1,76 @@ +package com.zxdmy.excite.admin.controller.cloud.lately; + + +import cn.dev33.satoken.stp.StpUtil; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.req.collection.ReqCloudUserCollection; +import com.zxdmy.excite.system.entity.req.lately.ReqCloudUserLately; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.service.cloud.collection.ICloudUserCollectionService; +import com.zxdmy.excite.system.service.cloud.lately.ICloudUserLatelyService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 最近文件表 前端控制器 + *

+ * + * @author 沈松 + * @since 2026-01-29 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/lately") +public class CloudUserLatelyController extends BaseController { + + private ICloudUserLatelyService iCloudUserLatelyService; + + @RequestMapping("index") + public String index() { + return "cloud/lately/index"; + } + + + @GetMapping("/list") + @ResponseBody + public BaseResult getPageList(Integer page, Integer limit, ReqCloudUserLately data) { + try { + data.setUserId(StpUtil.getLoginIdAsInt()); + PageList dataPage = iCloudUserLatelyService.queryByPage(page, limit, data); + return success("获取列表成功", dataPage.getList(), (int) dataPage.getTotal()); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + + @PostMapping("/addSave") + @ResponseBody + @AnnotationSaveReLog + public BaseResult addSave(@Validated ReqCloudUserLately data) { + try { + data.setUserId(StpUtil.getLoginIdAsInt()); + if(null == iCloudUserLatelyService.getByData(data)){ + if(iCloudUserLatelyService.saveData(data)==1){ + return success("操作成功"); + }else{ + return error(400, "操作失败,系统错误"); + } + }else{ + return error(400, "操作失败,数据已存在"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/my/CloudMyFileController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/my/CloudMyFileController.java new file mode 100644 index 0000000..813189d --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/my/CloudMyFileController.java @@ -0,0 +1,60 @@ +package com.zxdmy.excite.admin.controller.cloud.my; + + +import cn.dev33.satoken.stp.StpUtil; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.system.entity.cloud.role.CloudRole; +import com.zxdmy.excite.system.entity.cloud.space.CloudFile; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFile; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.service.cloud.role.ICloudRoleService; +import com.zxdmy.excite.system.service.cloud.role.ICloudRoleUserService; +import com.zxdmy.excite.system.service.cloud.space.ICloudFileService; +import lombok.AllArgsConstructor; +import org.apache.commons.beanutils.BeanUtils; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 文件表 前端控制器 + *

+ * + * @author ss + * @since 2026-01-28 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/my") +public class CloudMyFileController extends BaseController { + + + private ICloudFileService iCloudFileService; + private ICloudRoleUserService iCloudRoleUserService; + private ICloudRoleService iCloudRoleService; + @RequestMapping("index") + public String index() { + return "cloud/my/index"; + } + + + @GetMapping("/list") + @ResponseBody + public BaseResult getPageList(Integer page, Integer limit, ReqCloudFile data) { + try { + data.setCreatorId(StpUtil.getLoginIdAsInt()); + data.setFileFolder(1); + PageList dataPage = iCloudFileService.queryByPage(page, limit, data); + return success("获取数据成功", dataPage.getList(), (int) dataPage.getTotal()); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/recycle/CloudMyRecycleController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/recycle/CloudMyRecycleController.java new file mode 100644 index 0000000..0373b11 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/recycle/CloudMyRecycleController.java @@ -0,0 +1,85 @@ +package com.zxdmy.excite.admin.controller.cloud.recycle; + + +import cn.dev33.satoken.stp.StpUtil; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFile; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.service.cloud.space.ICloudFileService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + + +/** + *

+ * 文件表 前端控制器 + *

+ * + * @author ss + * @since 2026-01-28 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/myRecycle") +public class CloudMyRecycleController extends BaseController { + + + private ICloudFileService iCloudFileService; + + @RequestMapping("index") + public String index() { + return "cloud/recycle/index"; + } + + + @GetMapping("/list") + @ResponseBody + public BaseResult getPageList(Integer page, Integer limit, ReqCloudFile data) { + try { + data.setCreatorId(StpUtil.getLoginIdAsInt()); + PageList dataPage = iCloudFileService.queryByRecyclePage(page, limit, data); + return success("获取数据成功", dataPage.getList(), (int) dataPage.getTotal()); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + + @PostMapping("/recover") + @ResponseBody + public BaseResult recover(String id) { + try { + int result = iCloudFileService.recover(id); + if (result == 1) { + return success(200, "恢复成功!"); + }else{ + return error("恢复失败!"); + } + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + } + + @PostMapping("/foreverDelete") + @ResponseBody + @AnnotationSaveReLog + public BaseResult foreverDelete(String id) { + try { + int result = iCloudFileService.deleteById(id); + if (result == 1) { + return success(200, "删除成功!"); + }else{ + return error("删除失败!"); + } + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + } +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/role/CloudRoleController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/role/CloudRoleController.java new file mode 100644 index 0000000..3962d14 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/role/CloudRoleController.java @@ -0,0 +1,286 @@ +package com.zxdmy.excite.admin.controller.cloud.role; + + +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.SysRole; +import com.zxdmy.excite.system.entity.cloud.role.CloudRole; +import com.zxdmy.excite.system.entity.dto.RoleTreeDTO; +import com.zxdmy.excite.system.entity.req.role.ReqRole; +import com.zxdmy.excite.system.entity.vo.role.RoleVo; +import com.zxdmy.excite.system.service.ISysUserService; +import com.zxdmy.excite.system.service.cloud.role.ICloudRoleService; +import com.zxdmy.excite.system.service.cloud.role.ICloudRoleUserService; +import lombok.AllArgsConstructor; +import org.apache.commons.beanutils.BeanUtils; +import org.springframework.ui.ModelMap; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; +import com.zxdmy.excite.common.base.BaseController; + +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 云盘权限表 前端控制器 + *

+ * + * @author ss + * @since 2026-01-27 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/role/") +public class CloudRoleController extends BaseController { + private ICloudRoleService iCloudRoleService; + private ISysUserService iSysUserService; + private ICloudRoleUserService iCloudRoleUserService; + + + @RequestMapping("index") + public String index() { + return "cloud/role/role/index"; + } + + @GetMapping("/list") + @ResponseBody + public BaseResult getRoleList(Integer page, Integer limit, ReqRole data) { + try { + PageList dataPage = iCloudRoleService.queryByPage(page, limit, data); + return success("获取数据成功", dataPage.getList(), (int) dataPage.getTotal()); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @RequestMapping("add") + public String add() { + return "cloud/role/role/add"; + } + + @PostMapping("/addSave") + @ResponseBody + @AnnotationSaveReLog + public BaseResult addSave(@Validated ReqRole data) { + try { + if(null == iCloudRoleService.getByData(data)){ + if(iCloudRoleService.saveData(data)==1){ + return success("操作成功"); + }else{ + return error(400, "操作失败,系统错误"); + } + }else{ + return error(400, "操作失败,数据已存在"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @RequestMapping("edit/{id}") + public String edit(@PathVariable String id, ModelMap map) { + CloudRole data = iCloudRoleService.getById(id); + // 加载至前端 + if (data == null) { + map.put("code", 404); + map.put("msg", "数据不存在!"); + return "error/error"; + } + map.put("id", id); + return "cloud/role/role/edit"; + } + + @GetMapping("/getData") + @ResponseBody + public BaseResult getData(String id) { + try { + CloudRole data = iCloudRoleService.getById(id); + if(null!=data){ + return success("获取数据成功",data); + }else{ + return error(400, "数据不存在!"); + } + + + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @PostMapping("/editSave") + @ResponseBody + @AnnotationSaveReLog + public BaseResult editSave(@Validated ReqRole data) { + try { + RoleVo roleVo =iCloudRoleService.getByData(data); + CloudRole cloudRole = iCloudRoleService.getById(data.getId()); + if(roleVo==null){ + if(iCloudRoleService.updateData(data)==1){ + return success(200,"操作成功"); + }else{ + return error(400, "操作失败,系统错误"); + } + }else{ + if(cloudRole.getRoleName().equals(roleVo.getRoleName())){ + if(iCloudRoleService.updateData(data)==1){ + return success(200,"操作成功"); + }else{ + return error(400, "操作失败,系统错误"); + } + }else{ + return error(400, "操作失败,数据已存在"); + } + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @PostMapping("/delete") + @ResponseBody + @AnnotationSaveReLog + public BaseResult delete(String id) { + try { + int result = iCloudRoleService.deleteById(id); + if (result == 1) { + return success(200, "删除成功!"); + }else{ + return error("删除失败!"); + } + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + } + + @PostMapping(value = "/changeUploadStatus/{status}") + @ResponseBody + public BaseResult changeUploadStatus(@PathVariable String status, String[] ids) { + try { + int[] result = iCloudRoleService.changeUploadStatus(Integer.parseInt(status), ids); + // 没有失败 + if (result[0] != 0 && result[1] == 0) { + return success(200, "修改成功!"); + } + // 有成功的 + else if (result[0] != 0) { + return success(200, result[0] + "个更新成功," + result[1] + "个失败!"); + } else { + return success(500, "修改失败,请重试!"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + @PostMapping(value = "/changeDownStatus/{status}") + @ResponseBody + public BaseResult changeDownStatus(@PathVariable String status, String[] ids) { + try { + int[] result = iCloudRoleService.changeDownStatus(Integer.parseInt(status), ids); + // 没有失败 + if (result[0] != 0 && result[1] == 0) { + return success(200, "修改成功!"); + } + // 有成功的 + else if (result[0] != 0) { + return success(200, result[0] + "个更新成功," + result[1] + "个失败!"); + } else { + return success(500, "修改失败,请重试!"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @PostMapping(value = "/changeDeleteStatus/{status}") + @ResponseBody + public BaseResult changeDeleteStatus(@PathVariable String status, String[] ids) { + try { + int[] result = iCloudRoleService.changeDeleteStatus(Integer.parseInt(status), ids); + // 没有失败 + if (result[0] != 0 && result[1] == 0) { + return success(200, "修改成功!"); + } + // 有成功的 + else if (result[0] != 0) { + return success(200, result[0] + "个更新成功," + result[1] + "个失败!"); + } else { + return success(500, "修改失败,请重试!"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @RequestMapping("goShowUser/{id}") + public String goShowUser(@PathVariable String id, ModelMap map) { + try { + CloudRole role = iCloudRoleService.getById(id); + if (null == role) { + map.put("code", 500); + map.put("msg", "可能原因:该角色禁止编辑,该角色已被禁用!"); + return "error/error"; + } else { + RoleVo roleVo = new RoleVo(); + BeanUtils.copyProperties(roleVo, role); + map.put("role", roleVo); + return "cloud/role/role/authUser"; + } + } catch (Exception e) { + // 发生异常,一般就是数字转换出错 + System.err.println(e.getMessage()); + return "error/500"; + } + } + + @PostMapping("/authUser/{type}") + @ResponseBody + @AnnotationSaveReLog + public BaseResult authForUser(@PathVariable("type") String type, String roleId, String[] userIds) { + try { + // 添加授权 + if (type.equals("auth")) { + if (iCloudRoleService.authRoleForUsers(roleId, userIds)) + return success(200, "添加授权成功!"); + else + return error("授权失败,请重试!"); + } + // 取消授权 + else if (type.equals("revoke")) { + int[] result = iCloudRoleService.revokeRoleForUsers(roleId, userIds); + if (result[1] == 0) + return success(200, "取消授权成功!"); + else if (result[0] == 0) + return error("取消授权失败,请重试!"); + else + return success(result[0] + "个用户取消授权成功," + result[1] + "个失败!"); + } + return error("访问错误!"); + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + } + + + @GetMapping("/listForUser/{userId}") + @ResponseBody + public BaseResult getRoleListForUser(@PathVariable String userId) { + try { + List list = new ArrayList<>(); + List roleList = iCloudRoleService.getListByUserId(Integer.parseInt(userId)); + for (CloudRole cloudRole:roleList) { + RoleTreeDTO roleTreeDTO = new RoleTreeDTO(); + roleTreeDTO.setId(cloudRole.getId()); + roleTreeDTO.setName(cloudRole.getRoleName()); + list.add(roleTreeDTO); + } + return success("获取角色列表成功", list, list.size()); + } catch (Exception e) { + return error(500, "error:" + e.getMessage()); + } + } + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/role/CloudRoleUserController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/role/CloudRoleUserController.java new file mode 100644 index 0000000..bd6b4c8 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/role/CloudRoleUserController.java @@ -0,0 +1,42 @@ +package com.zxdmy.excite.admin.controller.cloud.role; + + +import cn.dev33.satoken.stp.StpUtil; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.system.entity.cloud.role.CloudRole; +import com.zxdmy.excite.system.service.ISysUserService; +import com.zxdmy.excite.system.service.cloud.role.ICloudRoleUserService; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import com.zxdmy.excite.common.base.BaseController; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 云盘权限用户表 前端控制器 + *

+ * + * @author ss + * @since 2026-01-27 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/roleUser") +public class CloudRoleUserController extends BaseController { + private ICloudRoleUserService iCloudRoleUserService; + + @GetMapping("/getRole") + @ResponseBody + public BaseResult getRole() { + try { + CloudRole data = iCloudRoleUserService.getCloudShareRole(StpUtil.getLoginIdAsInt()); + return success("获取数据成功",data); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/share/CloudShareController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/share/CloudShareController.java new file mode 100644 index 0000000..a08f9bc --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/share/CloudShareController.java @@ -0,0 +1,103 @@ +package com.zxdmy.excite.admin.controller.cloud.share; + + +import cn.dev33.satoken.stp.StpUtil; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.cloud.role.CloudRole; +import com.zxdmy.excite.system.entity.cloud.role.CloudRoleUser; +import com.zxdmy.excite.system.entity.cloud.space.CloudFile; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFile; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.service.cloud.role.ICloudRoleService; +import com.zxdmy.excite.system.service.cloud.role.ICloudRoleUserService; +import com.zxdmy.excite.system.service.cloud.space.ICloudFileService; +import lombok.AllArgsConstructor; +import org.apache.commons.beanutils.BeanUtils; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.lang.reflect.InvocationTargetException; +import java.util.List; + +/** + *

+ * 文件表 前端控制器 + *

+ * + * @author ss + * @since 2026-01-28 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/share") +public class CloudShareController extends BaseController { + + + private ICloudFileService iCloudFileService; + private ICloudRoleUserService iCloudRoleUserService; + private ICloudRoleService iCloudRoleService; + @RequestMapping("index") + public String index() { + return "cloud/share/index"; + } + + + @GetMapping("/list") + @ResponseBody + public BaseResult getPageList(Integer page, Integer limit, ReqCloudFile data) { + try { + CloudRole cloudRole = iCloudRoleUserService.getCloudShareRole(StpUtil.getLoginIdAsInt()); + PageList dataPage = iCloudFileService.queryByPage(page, limit, data); + if(null!=cloudRole){ + if (cloudRole.getRoleDown()>0) { + for (CloudFileVo cloudFileVo:dataPage.getList()) { + cloudFileVo.setRoleDown(1); + } + } + if (cloudRole.getRoleUpload()>0) { + for (CloudFileVo cloudFileVo:dataPage.getList()) { + cloudFileVo.setRoleUpload(1); + } + } + if (cloudRole.getRoleDelete()>0) { + for (CloudFileVo cloudFileVo:dataPage.getList()) { + cloudFileVo.setRoleDelete(1); + } + } + } + + return success("获取数据成功", dataPage.getList(), (int) dataPage.getTotal()); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + + @GetMapping("/getData") + @ResponseBody + public BaseResult getData(String id) { + try { + CloudFileVo data = new CloudFileVo(); + CloudFile cloudFile = iCloudFileService.getById(id); + if(null!=cloudFile){ + BeanUtils.copyProperties(data, cloudFile); + } + if(null!=cloudFile){ + return success("获取数据成功",data); + }else{ + return error(400, "数据不存在!"); + } + + + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/space/CloudFileController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/space/CloudFileController.java new file mode 100644 index 0000000..eac59c1 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/space/CloudFileController.java @@ -0,0 +1,397 @@ +package com.zxdmy.excite.admin.controller.cloud.space; + + +import cn.dev33.satoken.stp.StpUtil; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.cloud.role.CloudRole; +import com.zxdmy.excite.system.entity.cloud.space.CloudFile; +import com.zxdmy.excite.system.entity.cloud.space.CloudFileRole; +import com.zxdmy.excite.system.entity.dto.FileTreeDTO; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFile; +import com.zxdmy.excite.system.entity.vo.space.*; +import com.zxdmy.excite.system.service.cloud.role.ICloudRoleUserService; +import com.zxdmy.excite.system.service.cloud.space.ICloudFileRoleService; +import com.zxdmy.excite.system.service.cloud.space.ICloudFileService; +import lombok.AllArgsConstructor; +import org.apache.commons.beanutils.BeanUtils; +import org.springframework.ui.ModelMap; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; +import com.zxdmy.excite.common.base.BaseController; + +import java.lang.reflect.InvocationTargetException; +import java.util.*; +import java.util.stream.Collectors; + +/** + *

+ * 文件表 前端控制器 + *

+ * + * @author ss + * @since 2026-01-28 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/space") +public class CloudFileController extends BaseController { + + + private ICloudFileService iCloudFileService; + private ICloudRoleUserService iCloudRoleUserService; + private ICloudFileRoleService iCloudFileRoleService; + @RequestMapping("index") + public String index() { + return "cloud/space/file/index"; + } + + + @GetMapping("/list") + @ResponseBody + public BaseResult getPageList(Integer page, Integer limit, ReqCloudFile data) { + try { + CloudRole cloudRole = iCloudRoleUserService.getCloudShareRole(StpUtil.getLoginIdAsInt()); + PageList dataPage = iCloudFileService.queryByPage(page, limit, data); + if(null!=cloudRole){ + if (cloudRole.getRoleDown()>0) { + for (CloudFileVo cloudFileVo:dataPage.getList()) { + cloudFileVo.setRoleDown(1); + } + } + if (cloudRole.getRoleUpload()>0) { + for (CloudFileVo cloudFileVo:dataPage.getList()) { + cloudFileVo.setRoleUpload(1); + } + } + if (cloudRole.getRoleDelete()>0) { + for (CloudFileVo cloudFileVo:dataPage.getList()) { + cloudFileVo.setRoleDelete(1); + } + } + } + return success("获取数据成功", dataPage.getList(), (int) dataPage.getTotal()); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @RequestMapping("add") + public String add() { + return "cloud/space/file/add"; + } + + @PostMapping("/addSave") + @ResponseBody + @AnnotationSaveReLog + public BaseResult addSave(@Validated ReqCloudFile data) { + try { + if(null == iCloudFileService.getByData(data)){ + if(iCloudFileService.saveData(data)==1){ + return success("操作成功"); + }else{ + return error(400, "操作失败,系统错误"); + } + }else{ + return error(400, "操作失败,数据已存在"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @GetMapping("/getData") + @ResponseBody + public BaseResult getData(String id) { + try { + CloudFileVo data = new CloudFileVo(); + CloudFile cloudFile = iCloudFileService.getById(id); + if(null!=cloudFile){ + BeanUtils.copyProperties(data, cloudFile); + } + if(null!=cloudFile){ + return success("获取数据成功",data); + }else{ + return error(400, "数据不存在!"); + } + + + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @RequestMapping("edit/{id}") + public String edit(@PathVariable String id, ModelMap map) throws InvocationTargetException, IllegalAccessException { + + CloudFileVo data = new CloudFileVo(); + CloudFile cloudFile = iCloudFileService.getById(id); + if(null!=cloudFile){ + BeanUtils.copyProperties(data, cloudFile); + } + // 加载至前端 + if (cloudFile == null) { + map.put("code", 404); + map.put("msg", "数据不存在!"); + return "error/error"; + } + map.put("id", id); + return "cloud/space/file/edit"; + } + + @PostMapping("/editSave") + @ResponseBody + @AnnotationSaveReLog + public BaseResult editSave(@Validated ReqCloudFile data) { + try { + CloudFileVo cloudFileVo = iCloudFileService.getByData(data); + CloudFile cloudFile = iCloudFileService.getById(data.getId()); + if(cloudFileVo==null){ + if(iCloudFileService.updateData(data)==1){ + return success(200,"操作成功"); + }else{ + return error(400, "操作失败,系统错误"); + } + }else{ + if (cloudFile.getFileName().equals(data.getFileName())) { + if(iCloudFileService.updateData(data)==1){ + return success(200,"操作成功"); + }else{ + return error(400, "操作失败,系统错误"); + } + }else{ + return error(400, "操作失败,数据已存在"); + } + } + + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + + @PostMapping("/delete") + @ResponseBody + @AnnotationSaveReLog + public BaseResult delete(String id) { + try { + int result = iCloudFileService.deleteById(id); + if (result == 1) { + return success(200, "删除成功!"); + }else{ + return error("删除失败!"); + } + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + } + + + @GetMapping("/getFileRole") + @ResponseBody + public BaseResult getFileRole(String id) { + try { + CloudFilleUserVo cloudFilleUserVo = new CloudFilleUserVo(); + List dataPage = iCloudFileRoleService.getFileRole(id); + + List ids = dataPage.stream() + .map(CloudFileRoleVo::getUserId) + .collect(Collectors.toList()); + cloudFilleUserVo.setIds(ids); + + String names = dataPage.stream() + .map(CloudFileRoleVo::getUserName) + .collect(Collectors.joining(", ")); + + String userIDs = dataPage.stream() + .map(CloudFileRoleVo -> String.valueOf(CloudFileRoleVo.getId())) + .collect(Collectors.joining(", ")); + cloudFilleUserVo.setUserId(userIDs); + cloudFilleUserVo.setName(names); + return success("获取数据成功", cloudFilleUserVo); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + + + @GetMapping("/getRoleFile") + @ResponseBody + public BaseResult getRoleFile(String id) { + try { + CloudRoleFolderVo cloudRoleFolderVo = new CloudRoleFolderVo(); + List dataPage = iCloudFileRoleService.getRoleFile(id); + + List ids = dataPage.stream() + .map(CloudRoleFileVo::getFileId) + .collect(Collectors.toList()); + cloudRoleFolderVo.setIds(ids); + + String names = dataPage.stream() + .map(CloudRoleFileVo::getFileName) + .collect(Collectors.joining(", ")); + + String userIDs = dataPage.stream() + .map(CloudRoleFileVo -> String.valueOf(CloudRoleFileVo.getId())) + .collect(Collectors.joining(", ")); + cloudRoleFolderVo.setRoleId(userIDs); + cloudRoleFolderVo.setName(names); + return success("获取数据成功", cloudRoleFolderVo); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @GetMapping("/getRoleFileCheck") + @ResponseBody + public BaseResult getRoleFileCheck(String id) { + try { + CloudRoleFolderVo cloudRoleFolderVo = new CloudRoleFolderVo(); + List dataPage = iCloudFileRoleService.getRoleFileCheck(id); + + List ids = dataPage.stream() + .map(CloudRoleFileVo::getFileId) + .collect(Collectors.toList()); + cloudRoleFolderVo.setIds(ids); + + String names = dataPage.stream() + .map(CloudRoleFileVo::getFileName) + .collect(Collectors.joining(", ")); + + String userIDs = dataPage.stream() + .map(CloudRoleFileVo -> String.valueOf(CloudRoleFileVo.getId())) + .collect(Collectors.joining(", ")); + cloudRoleFolderVo.setRoleId(userIDs); + cloudRoleFolderVo.setName(names); + return success("获取数据成功", cloudRoleFolderVo); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + @PostMapping(value = "/changeDeleteStatus/{status}") + @ResponseBody + public BaseResult changeDeleteStatus(@PathVariable String status, String[] ids) { + try { + int[] result = iCloudFileService.changeDeleteStatus(Integer.parseInt(status), ids); + // 没有失败 + if (result[0] != 0 && result[1] == 0) { + return success(200, "修改成功!"); + } + // 有成功的 + else if (result[0] != 0) { + return success(200, result[0] + "个更新成功," + result[1] + "个失败!"); + } else { + return success(500, "修改失败,请重试!"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + + + @GetMapping("/queryByIndexPage") + @ResponseBody + public BaseResult queryByIndexPage(Integer page, Integer limit, ReqCloudFile data) { + try { + page=1; + limit=15; + List list = iCloudFileRoleService.getFileRoleByUseId(StpUtil.getLoginIdAsInt()); + + List ids = list.stream() + .map(CloudFileRole::getFileId) + .collect(Collectors.toList()); + data.setFileIds(ids); + + PageList dataPage = iCloudFileService.queryByIndexPage(page, limit, data); + + return success("获取数据成功", dataPage.getList(), (int) dataPage.getTotal()); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + + + @RequestMapping("authFile") + public String authFile() { + return "cloud/space/file/authFile"; + } + @RequestMapping("updateAuthFile/{id}") + public String updateAuthFile(@PathVariable String id, ModelMap map) { + map.put("id",id); + return "cloud/space/file/updateAuthFile"; + } + @GetMapping("/query") + @ResponseBody + public BaseResult query() { + try { + ReqCloudFile data = new ReqCloudFile(); + List dataPage = iCloudFileService.queryFileByData(data); + List department = buildDepartmentTree(dataPage); + return success(200, "获取数据成功!",department); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + + public List buildDepartmentTree(List departments) { + // 1. 按parentId分组 + Map> parentMap = new HashMap<>(); + // 2. 创建所有节点的映射 + Map nodeMap = new HashMap<>(); + // 3. 转换并分组 + for (CloudFileVo dept : departments) { + FileTreeDTO node = new FileTreeDTO(); + org.springframework.beans.BeanUtils.copyProperties(dept, node); + node.setChildren(new ArrayList<>()); + nodeMap.put(dept.getId(), node); + + Long parentId = dept.getFileParentId(); + if (parentId == null) { + parentId = 0L; // 将null转换为0,作为根节点的父ID + } + + parentMap.computeIfAbsent(parentId, k -> new ArrayList<>()) + .add(node); + } + + // 4. 构建树形结构 + List rootList = parentMap.getOrDefault(0L, new ArrayList<>()); + + // 5. 递归构建子节点 + for (Long parentId : parentMap.keySet()) { + if (parentId.equals(0L)) continue; + + FileTreeDTO parentNode = nodeMap.get(parentId); + if (parentNode != null) { + parentNode.setChildren(parentMap.get(parentId)); + } + } + + // 6. 排序(按department_sort) + sortTreeNodes(rootList); + + return rootList; + } + + private void sortTreeNodes(List nodes) { + if (nodes == null || nodes.isEmpty()) return; + + // 按排序字段排序 + nodes.sort(Comparator.comparing(FileTreeDTO::getFileSort)); + + // 递归排序子节点 + for (FileTreeDTO node : nodes) { + if (node.getChildren() != null && !node.getChildren().isEmpty()) { + sortTreeNodes(node.getChildren()); + } + } + } + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/space/CloudFileRoleController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/space/CloudFileRoleController.java new file mode 100644 index 0000000..2542062 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/space/CloudFileRoleController.java @@ -0,0 +1,64 @@ +package com.zxdmy.excite.admin.controller.cloud.space; + + +import cn.dev33.satoken.stp.StpUtil; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.cloud.role.CloudRole; +import com.zxdmy.excite.system.entity.cloud.space.CloudFile; +import com.zxdmy.excite.system.entity.cloud.space.CloudFileRole; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFile; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFileRole; +import com.zxdmy.excite.system.entity.vo.space.CloudFileRoleVo; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.entity.vo.space.CloudFilleUserVo; +import com.zxdmy.excite.system.service.cloud.role.ICloudRoleUserService; +import com.zxdmy.excite.system.service.cloud.space.ICloudFileRoleService; +import com.zxdmy.excite.system.service.cloud.space.ICloudFileService; +import lombok.AllArgsConstructor; +import org.apache.commons.beanutils.BeanUtils; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.lang.reflect.InvocationTargetException; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 文件表 前端控制器 + *

+ * + * @author ss + * @since 2026-01-28 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/fileRole") +public class CloudFileRoleController extends BaseController { + + private ICloudFileRoleService iCloudFileRoleService; + + + @GetMapping("/getData") + @ResponseBody + public BaseResult getData(ReqCloudFileRole reqCloudFileRole) { + try { + reqCloudFileRole.setUserId(StpUtil.getLoginIdAsInt()); + CloudFileRole cloudFileRole = iCloudFileRoleService.getData(reqCloudFileRole); + if(null!=cloudFileRole){ + return success("获取数据成功",cloudFileRole); + }else{ + return error(400, "暂无权限!"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/space/CloudRecycleController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/space/CloudRecycleController.java new file mode 100644 index 0000000..98c541f --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/space/CloudRecycleController.java @@ -0,0 +1,80 @@ +package com.zxdmy.excite.admin.controller.cloud.space; + + +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFile; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.service.cloud.space.ICloudFileService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + + +/** + *

+ * 文件表 前端控制器 + *

+ * + * @author ss + * @since 2026-01-28 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/recycle") +public class CloudRecycleController extends BaseController { + + + private ICloudFileService iCloudFileService; + + @RequestMapping("index") + public String index() { + return "cloud/space/recycle/index"; + } + + + @GetMapping("/list") + @ResponseBody + public BaseResult getPageList(Integer page, Integer limit, ReqCloudFile data) { + try { + PageList dataPage = iCloudFileService.queryByRecyclePage(page, limit, data); + return success("获取数据成功", dataPage.getList(), (int) dataPage.getTotal()); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + + @PostMapping("/recover") + @ResponseBody + public BaseResult recover(String id) { + try { + int result = iCloudFileService.recover(id); + if (result == 1) { + return success(200, "恢复成功!"); + }else{ + return error("恢复失败!"); + } + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + } + + @PostMapping("/foreverDelete") + @ResponseBody + @AnnotationSaveReLog + public BaseResult foreverDelete(String id) { + try { + int result = iCloudFileService.deleteById(id); + if (result == 1) { + return success(200, "删除成功!"); + }else{ + return error("删除失败!"); + } + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + } +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/trace/CloudTraceController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/trace/CloudTraceController.java new file mode 100644 index 0000000..acec9ac --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/trace/CloudTraceController.java @@ -0,0 +1,73 @@ +package com.zxdmy.excite.admin.controller.cloud.trace; + + +import cn.dev33.satoken.stp.StpUtil; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.req.lately.ReqCloudUserLately; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFile; +import com.zxdmy.excite.system.entity.req.trace.ReqCloudFileTrace; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.entity.vo.trace.CloudFileTraceVo; +import com.zxdmy.excite.system.service.cloud.lately.ICloudUserLatelyService; +import com.zxdmy.excite.system.service.cloud.trace.ICloudFileTraceService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 最近文件表 前端控制器 + *

+ * + * @author 沈松 + * @since 2026-01-29 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/trace") +public class CloudTraceController extends BaseController { + + private ICloudFileTraceService iCloudFileTraceService; + + @RequestMapping("index") + public String index() { + return "cloud/lately/index"; + } + + + @GetMapping("/list") + @ResponseBody + public BaseResult getPageList(Integer page, Integer limit, ReqCloudFileTrace data) { + try { + page = 1; + limit = 15; + PageList dataPage = iCloudFileTraceService.queryByPage(page, limit, data); + return success("获取列表成功", dataPage.getList(), (int) dataPage.getTotal()); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @PostMapping("/addSave") + @ResponseBody + @AnnotationSaveReLog + public BaseResult addSave(@Validated ReqCloudFileTrace data) { + try { + if(iCloudFileTraceService.saveData(data)==1){ + return success("操作成功"); + }else{ + return error(400, "操作失败,系统错误"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/upload/UploadController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/upload/UploadController.java new file mode 100644 index 0000000..b583314 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/cloud/upload/UploadController.java @@ -0,0 +1,90 @@ +package com.zxdmy.excite.admin.controller.cloud.upload; + +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.cloud.space.CloudFile; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFile; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.service.cloud.space.ICloudFileService; +import lombok.AllArgsConstructor; +import org.apache.commons.beanutils.BeanUtils; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.annotation.Validated; +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.ResponseBody; + +import java.lang.reflect.InvocationTargetException; + +/** + * 系统菜单/权限表 前端控制器 + * + * @author 沈松 + * @since 2021-09-12 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/upload/") +public class UploadController extends BaseController { + + private ICloudFileService iCloudFileService; + + + @RequestMapping("index/{id}") + public String index(@PathVariable String id, ModelMap map) throws InvocationTargetException, IllegalAccessException { + map.put("id", id); + return "cloud/upload/index"; + } + @PostMapping("/addSave") + @ResponseBody + @AnnotationSaveReLog + public BaseResult addSave(@Validated ReqCloudFile data) { + try { + String oldName = data.getFileName(); + if(null!=data.getFileName()){ + String[] file = data.getFileName().split("\\."); + if(file.length>0) { + data.setFileName(file[0].toString()); + } + } + + if(null == iCloudFileService.getByData(data)){ + data.setFileName(oldName); + if(iCloudFileService.saveFileData(data)==1){ + return success("操作成功"); + }else{ + return error(400, "操作失败,系统错误"); + } + }else{ + return error(400, "操作失败,数据已存在"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @PostMapping("/editSave") + @ResponseBody + @AnnotationSaveReLog + public BaseResult editSave(@Validated ReqCloudFile data) { + try { + + if(iCloudFileService.updateFileData(data)==1){ + return success("操作成功"); + }else{ + return error(400, "操作失败,数据已存在"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @RequestMapping("changeIndex/{id}") + public String changeIndex(@PathVariable String id, ModelMap map) throws InvocationTargetException, IllegalAccessException { + map.put("id", id); + return "cloud/upload/changeIndex"; + } +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/component/AlipayController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/component/AlipayController.java new file mode 100644 index 0000000..8db3293 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/component/AlipayController.java @@ -0,0 +1,83 @@ +package com.zxdmy.excite.admin.controller.component; + +import cn.hutool.core.util.IdUtil; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.component.alipay.AlipayService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + *

+ * 描述 + *

+ * + * @author 沈松 + * @since 2022/1/11 20:45 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/component/alipay") +public class AlipayController extends BaseController { + + AlipayService alipayService; + + @RequestMapping("index") + public String index() { + return "component/alipay/index"; + } + + + @PostMapping(value = "/pay") + @ResponseBody + public BaseResult pay(String title, String price) { + String outTradeNo = IdUtil.simpleUUID(); + String qrcode = alipayService.pay(null, "facetoface", title, outTradeNo, price, null, null); + + return success(200, "获取支付二维码成功!") + .put("qrcode", qrcode) + .put("outTradeNo", outTradeNo); + } + + @GetMapping(value = "/page") + @ResponseBody + public String page(String title, String price,String returnUrl) { + String outTradeNo = IdUtil.simpleUUID(); + String qrcode = alipayService.pay(null, "page", title, outTradeNo, price, returnUrl, null); + return qrcode; +// return success(200, "获取支付二维码成功!") +// .put("qrcode", qrcode) +// .put("outTradeNo", outTradeNo); + } + + @PostMapping(value = "/refund") + @ResponseBody + public BaseResult refund(String outTradeNo, String amount) { + String[] result = alipayService.refund(null, null, outTradeNo, amount, "用户取消退款"); + if ("Y".equals(result[0])) { + return success(200, "退款成功,退款金额:" + result[4]); + } else if ("N".equals(result[0])) { + return success(200, "该订单早已退款成功!退款金额:" + result[4]); + } else + return error("退款错误:" + result[1] + result[2]); + } + + @PostMapping(value = "/query") + @ResponseBody + public BaseResult query(String outTradeNo) { + String[] result = alipayService.queryPay(null, null, outTradeNo); + if ("Y".equals(result[0])) { + return success(200, "查询成功!" + + " 支付宝交易号:" + result[1] + + " 交易状态:" + result[3] + + " 订单金额:" + result[4] + + " 买家账号:" + result[6]); + } + return error("查询失败:" + result[1] + result[2]); + } + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/component/QiniuOssController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/component/QiniuOssController.java new file mode 100644 index 0000000..613dece --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/component/QiniuOssController.java @@ -0,0 +1,43 @@ +package com.zxdmy.excite.admin.controller.component; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.qiniu.storage.model.FileInfo; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.component.qiniu.QiniuOssService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +/** + * 七牛云文件存储服务控制类 + * + * @author 沈松 + * @since 2022/1/24 21:49 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/component/qiniuOss") +public class QiniuOssController extends BaseController { + + QiniuOssService qiniuOssService; + + @RequestMapping("index") + public String index() { + return "component/qiniuOss/index"; + } + + @GetMapping(value = "/fileList") + @ResponseBody + public BaseResult getList(Integer page, Integer limit) { + Page fileInfoList = qiniuOssService.getQiniuFileListPage(page, limit, "", ""); + return success("获取成功!", fileInfoList.getRecords(), (int) fileInfoList.getTotal()); + } + + + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/component/WeChatPayController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/component/WeChatPayController.java new file mode 100644 index 0000000..dda77a9 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/component/WeChatPayController.java @@ -0,0 +1,92 @@ +package com.zxdmy.excite.admin.controller.component; + +import cn.hutool.core.util.IdUtil; +import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryV3Result; +import com.github.binarywang.wxpay.bean.result.WxPayRefundV3Result; +import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderV3Result; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.component.wechat.WeChatPayService; +import lombok.AllArgsConstructor; +import org.aspectj.weaver.ast.Or; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.Timer; + +/** + *

+ * 描述 + *

+ * + * @author 沈松 + * @since 2022/1/11 20:45 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/component/wechatPay") +public class WeChatPayController extends BaseController { + + WeChatPayService weChatPayService; + + + @RequestMapping("index") + public String requestLogPage() { + return "component/wechatPay/index"; + } + + @PostMapping(value = "/pay") + @ResponseBody + public BaseResult pay(String title, Float price) { + System.out.println(title); + System.out.println(price); + int total = (int) (price * 100); + String outTradeNo = IdUtil.simpleUUID(); + String result = weChatPayService.pay(null, "native", title, outTradeNo, total, null); + + return success(200, "获取支付二维码成功!") + .put("qrcode", result) + .put("outTradeNo", outTradeNo); + } + + @PostMapping(value = "/refund") + @ResponseBody + public BaseResult refund(String outTradeNo, Float amount) { + int refund = (int) (amount * 100); + // 查询该订单的实际支付金额 + int total = weChatPayService.query(null, null, outTradeNo).getAmount().getTotal(); + if (refund > total) { + return error("退款金额大于支付金额!"); + } + WxPayRefundV3Result wxPayRefundV3Result = weChatPayService.refund(null, outTradeNo, IdUtil.simpleUUID(), total, refund); + if ("SUCCESS".equals(wxPayRefundV3Result.getStatus())) { + return success(200, "退款成功!"); + } else if ("PROCESSING".equals(wxPayRefundV3Result.getStatus())) { + return success(200, "退款处理中...稍后到账,请注意查收微信通知!"); + } + return error("退款失败!"); + } + + @PostMapping(value = "/query") + @ResponseBody + public BaseResult query(String outTradeNo) { + WxPayOrderQueryV3Result wxPayOrderQueryV3Result = weChatPayService.query(null, null, outTradeNo); + if (wxPayOrderQueryV3Result.getTradeState().equals("SUCCESS")) { + return success(200, "支付成功!,交易成功时间:" + wxPayOrderQueryV3Result.getSuccessTime()); + } else if (wxPayOrderQueryV3Result.getTradeState().equals("NOTPAY")) { + return error("未支付!"); + } else if (wxPayOrderQueryV3Result.getTradeState().equals("CLOSED")) { + return error("订单已关闭!"); + } else if (wxPayOrderQueryV3Result.getTradeState().equals("USERPAYING")) { + return success(200, "用户支付中(付款码支付)!"); + } else if (wxPayOrderQueryV3Result.getTradeState().equals("PAYERROR")) { + return error("支付失败(其他原因,如银行返回失败)!"); + } else if (wxPayOrderQueryV3Result.getTradeState().equals("REFUND")) { + return error("订单已退款!"); + } else + return error(wxPayOrderQueryV3Result.getTradeState() + ":订单不存在"); + } + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/fileSet/PDFController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/fileSet/PDFController.java new file mode 100644 index 0000000..155d47f --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/fileSet/PDFController.java @@ -0,0 +1,42 @@ +package com.zxdmy.excite.admin.controller.fileSet; + +import cn.dev33.satoken.stp.StpUtil; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.SysMenu; +import com.zxdmy.excite.system.service.ISysMenuService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 系统菜单/权限表 前端控制器 + * + * @author 沈松 + * @since 2021-09-12 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/pdf/") +public class PDFController extends BaseController { + + private ISysMenuService menuService; + + /** + * @return 页面:【菜单管理】页面入口 + */ + @RequestMapping("index") + public String index() { + return "file/pdf"; + } + + + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/oss/OssController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/oss/OssController.java new file mode 100644 index 0000000..7d30a9d --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/oss/OssController.java @@ -0,0 +1,133 @@ +package com.zxdmy.excite.admin.controller.oss; + +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.model.MatchMode; +import com.aliyun.oss.model.PolicyConditions; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.component.oss.AliOSSProperties; +import lombok.AllArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.time.LocalDate; +import java.util.*; + +/** + * 系统菜单/权限表 前端控制器 + * + * @author 沈松 + * @since 2021-09-12 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/cloud/oss/") +public class OssController extends BaseController { + + @Autowired//将OSS的配置注入进来,后面需要用到 + + private AliOSSProperties aliOSSProperties; + + + /** + * 获取OSS上传凭证(用于前端直传) + */ + + + @GetMapping("/policy") + @ResponseBody + public BaseResult getUploadPolicy() { + try { + // 使用简化版本的Policy生成 + Map policy = getSimpleUploadPolicy(); + return success("获取列表成功", policy); + } catch (Exception e) { + return error("获取上传凭证失败: " + e.getMessage()); + } + } + + + + + /** + * 生成唯一的文件名 + */ + private String generateFileName(String originalFilename) { + String suffix = ""; + if (originalFilename != null && originalFilename.contains(".")) { + suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); + } + return UUID.randomUUID().toString().replace("-", "") + suffix; + } + /** + * 简化的Policy获取方法 + */ + public Map getSimpleUploadPolicy() { + Map result = new HashMap<>(); + + try { + // 生成目录:按年月 + String dir = "cloud/" + + LocalDate.now().getYear() + "-" + + String.format("%02d", LocalDate.now().getMonthValue()); + + // 确保以/结尾 + if (!dir.endsWith("/")) { + dir = dir + "/"; + } + + // 使用更简单的key格式:cloud/2026-01/${filename} + String key = dir + "${filename}"; + + // Policy过期时间 + long expireEndTime = System.currentTimeMillis() + 300 * 1000; + Date expiration = new Date(expireEndTime); + + // 创建Policy + PolicyConditions policyConds = new PolicyConditions(); + policyConds.addConditionItem( + PolicyConditions.COND_CONTENT_LENGTH_RANGE, + 0, + 1048576000 + ); + + // 使用starts-with条件,允许任意文件名 + policyConds.addConditionItem( + MatchMode.StartWith, + PolicyConditions.COND_KEY, + dir + ); + + String endpoint = aliOSSProperties.getEndpoint(); + String accessKeyId = aliOSSProperties.getAccessKeyId(); + String accessKeySecret = aliOSSProperties.getAccessKeySecret(); + String bucketName = aliOSSProperties.getBucketName(); + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId,accessKeySecret); + + String postPolicy = ossClient.generatePostPolicy(expiration, policyConds); + String encodedPolicy = Base64.getEncoder().encodeToString(postPolicy.getBytes("UTF-8")); + String signature = ossClient.calculatePostSignature(postPolicy); + + // 返回结果 + result.put("OSSAccessKeyId", accessKeyId); + result.put("policy", encodedPolicy); + result.put("signature", signature); + result.put("key", key); // 这个key必须包含${filename} + result.put("host", "https://" + bucketName + "." + endpoint); + result.put("dir", dir); + result.put("expire", String.valueOf(expireEndTime / 1000)); + result.put("success_action_status", "200"); + + + + } catch (Exception e) { + throw new RuntimeException("生成上传凭证失败", e); + } + + return result; + } +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/CloudRoleFileController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/CloudRoleFileController.java new file mode 100644 index 0000000..3936b27 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/CloudRoleFileController.java @@ -0,0 +1,21 @@ +package com.zxdmy.excite.admin.controller.system; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import com.zxdmy.excite.common.base.BaseController; + +/** + *

+ * 云盘权限文件表 前端控制器 + *

+ * + * @author 沈松 + * @since 2026-02-01 + */ +@Controller +@RequestMapping("/cloud-role-file") +public class CloudRoleFileController extends BaseController { + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/CloudUserCollectionController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/CloudUserCollectionController.java new file mode 100644 index 0000000..e361a22 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/CloudUserCollectionController.java @@ -0,0 +1,21 @@ +package com.zxdmy.excite.admin.controller.system; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.stereotype.Controller; +import com.zxdmy.excite.common.base.BaseController; + +/** + *

+ * 收藏表 前端控制器 + *

+ * + * @author 沈松 + * @since 2026-01-29 + */ +@Controller +@RequestMapping("/cloud-user-collection") +public class CloudUserCollectionController extends BaseController { + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysController.java new file mode 100644 index 0000000..8f67a8a --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysController.java @@ -0,0 +1,77 @@ +package com.zxdmy.excite.admin.controller.system; + + +import cn.dev33.satoken.stp.StpUtil; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.component.qiniu.QiniuOssService; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.service.ISysUserService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 系统模块基础控制器 + * + * @author 沈松 + * @since 2021-09-30 0030 23:45 + */ +@Controller +@AllArgsConstructor +public class SysController extends BaseController { + + ISysUserService userService; + + /** + * 开发模式下:默认访问域名,跳转至后台主页 + * 如果后期有新的首页,删除即可 + * + * @return 页面跳转 + */ + @RequestMapping("") + public String defaultPage() { + return "redirect:/system/login"; + } + + /** + * @return 【后台主页】访问入口 + */ + @RequestMapping("system/index") + public String index(ModelMap map) { + // 已登录,访问后台主页 + if (StpUtil.isLogin()) { + SysUser user = userService.getById(StpUtil.getLoginIdAsInt()); + map.put("user", user); + return "system/index"; + } + // 未登录,跳转至登录页面 + return "redirect:/system/login"; + } + + /** + * @return 【登录】页面入口 + */ + @RequestMapping("system/login") + public String login() { + // 已登录:跳转至后台首页 + if (StpUtil.isLogin()) { + return "redirect:/system/index"; + } + // 未登录,跳转至登录页面 + return "system/login"; + } + + /** + * @return 后台欢迎页面访问入口 + */ + @RequestMapping("system/welcome") + public String welcome() { + return "system/welcome"; + } + + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysLogController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysLogController.java new file mode 100644 index 0000000..1487fcb --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysLogController.java @@ -0,0 +1,119 @@ +package com.zxdmy.excite.admin.controller.system; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.system.entity.SysLogLogin; +import com.zxdmy.excite.system.entity.SysLogRequest; +import com.zxdmy.excite.system.entity.SysMenu; +import com.zxdmy.excite.system.service.ISysLogLoginService; +import com.zxdmy.excite.system.service.ISysLogRequestService; +import lombok.AllArgsConstructor; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.*; + +import org.springframework.stereotype.Controller; +import com.zxdmy.excite.common.base.BaseController; + +import java.time.LocalDateTime; + +/** + * 日志管理控制器 + * + * @author 沈松 + * @since 2021-12-09 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/system/log") +public class SysLogController extends BaseController { + + ISysLogRequestService logRequestService; + + ISysLogLoginService logLoginService; + + /** + * @return 【操作日志】页面访问入口 + */ + @RequestMapping("request") + public String requestLogPage() { + return "system/log/request"; + } + + /** + * @return 【登录日志】页面访问入口 + */ + @RequestMapping("login") + public String loginLogPage() { + return "system/log/login"; + } + + + /** + * 获取操作日志列表(含查询条件) + * + * @param page 页码 + * @param limit 页条数 + * @param userId 用户ID,格式:10001 + * @param startDate 开始时间,格式:2022-01-11 00:00:00 + * @param endDate 结束时间,格式:2022-01-11 00:00:00 + * @return 操作日志列表 + */ + @GetMapping("/requestList") + @ResponseBody + public BaseResult requestList(Integer page, Integer limit, String userId, String startDate, String endDate) { + try { + // TODO 加上根据ID和开始、结束时间的搜索功能 + Page rolePage = logRequestService.getPage(page, limit, userId, startDate, endDate); + return success("获取日志列表成功", rolePage.getRecords(), (int) rolePage.getTotal()); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + /** + * 获取登录日志列表 + * + * @param page 页码 + * @param limit 页条数 + * @param userId 用户ID,格式:10001 + * @param startDate 开始时间,格式:2022-01-11 00:00:00 + * @param endDate 结束时间,格式:2022-01-11 00:00:00 + * @return 登录日志列表 + */ + @GetMapping("/loginList") + @ResponseBody + public BaseResult loginList(Integer page, Integer limit, String userId, String ip, String startDate, String endDate) { + try { + // TODO 加上搜索功能,详情同上 + Page rolePage = logLoginService.getPage(page, limit, userId, ip, startDate, endDate); + return success("获取日志列表成功", rolePage.getRecords(), (int) rolePage.getTotal()); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + @PostMapping("/request/delete") + @ResponseBody + public BaseResult deleteRequestLog(Integer[] logIds) { + if (null == logIds || logIds.length == 0) { + return error("请求数据为空!"); + } + if (logRequestService.deleteLog(logIds) > 0) { + return success("删除成功!"); + } + return error("删除失败!"); + } + + @PostMapping("/login/delete") + @ResponseBody + public BaseResult deleteLoginLog(Integer[] logIds) { + if (null == logIds || logIds.length == 0) { + return error("请求数据为空!"); + } + if (logLoginService.deleteLog(logIds) > 0) { + return success("删除成功!"); + } + return error("删除失败!"); + } +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysMenuController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysMenuController.java new file mode 100644 index 0000000..298cf1b --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysMenuController.java @@ -0,0 +1,334 @@ +package com.zxdmy.excite.admin.controller.system; + +import cn.dev33.satoken.stp.StpUtil; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.SysMenu; +import com.zxdmy.excite.system.service.ISysMenuService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.*; + +/** + * 系统菜单/权限表 前端控制器 + * + * @author 沈松 + * @since 2021-09-12 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/system/menu") +public class SysMenuController extends BaseController { + + private ISysMenuService menuService; + + /** + * @return 页面:【菜单管理】页面入口 + */ + @RequestMapping("index") + public String index() { + return "system/menu/index"; + } + + /** + * @return 页面:【菜单管理-添加菜单】页面入口 + */ + @RequestMapping("goAdd") + public String goAdd() { + return "system/menu/add"; + } + + /** + * 页面:【菜单管理-编辑菜单】页面入口 + * + * @param id 菜单ID + * @param map Map + * @return 【菜单管理-编辑菜单】页面入口 + */ + @RequestMapping("goEdit/{id}") + public String goEdit(@PathVariable String id, ModelMap map) { + try { + // 尝试获取菜单信息,并返回前端 + SysMenu menu = menuService.getMenu(Integer.parseInt(id)); + if (null != menu) { + // 此处是为了适应前端的图标选择器,将"fa "截掉 + if ("".equals(menu.getIcon()) && null != menu.getIcon()) { + menu.setIcon(menu.getIcon().substring(3)); + } + map.put("menu", menu); + return "system/menu/edit"; + } else { + return "error/404"; + } + } catch (Exception e) { + // 发生异常,一般就是数字转换出错 + System.err.println(e.getMessage()); + return "error/500"; + } + } + + /** + * 接口功能:菜单管理-添加菜单 接口 + * + * @param menu 菜单信息 + * @return 菜单添加结果 + */ + @PostMapping("/add") + @ResponseBody + @AnnotationSaveReLog + public BaseResult addMenu(@Validated SysMenu menu) { + // 添加菜单 + if (menuService.saveMenu(menu) > 0) { + return success("菜单添加成功"); + } + return error(400, "菜单添加失败"); + } + + /** + * 接口功能:根据菜单ID查询菜单并返回结果 + * + * @param id 菜单ID + * @return 查询结果 + */ + @GetMapping("/get/{id}") + @ResponseBody + public BaseResult getMenu(@PathVariable String id) { + try { + SysMenu menu = menuService.getMenu(Integer.parseInt(id)); + if (null != menu) { + return success("获取菜单成功", menu); + } + return error(400, "获取菜单失败"); + } catch (Exception e) { + return error(400, "发生错误:" + e.getMessage()); + } + } + + /** + * 接口功能:查询菜单列表,并组合后台首页的其他信息 + * + * @return 菜单列表,以及后台标题等信息 + */ + @GetMapping("/indexList") + @ResponseBody + public BaseResult getMenuListIndex() { + List menus = menuService.getMenuListByUserId(StpUtil.getLoginIdAsInt(), true); + if (null != menus) { + // 如果是【tree】,则需要将菜单初始化成树状结构 + menus = this.initMenu(menus); + // 首页信息 + HashMap map = new HashMap<>(); + map.put("title", "首页"); + map.put("href", "/system/welcome"); + // logo信息 + HashMap map2 = new HashMap<>(); + map2.put("title", ""); + map2.put("image", "/images/logo/logo.png"); + map2.put("href", "/system/index"); + // 转换成相应的格式 + return success("获取菜单成功").put("homeInfo", map).put("logoInfo", map2).put("menuInfo", menus); + } + return error(400, "获取菜单失败"); + } + + /** + * 接口功能:根据类型获取菜单列表 + * + * @param type all:查询全部数据 | menu:查询除了按钮的全部数据 | tree:查询树状菜单(不含按钮) + * @return 菜单/权限列表 + */ + @GetMapping("/list/{type}") + @ResponseBody + public BaseResult getMenuList(@PathVariable String type) { + boolean isAll = "all".equals(type); + boolean isTree = "tree".equals(type); + List menus = menuService.getMenuList(isAll); + if (null != menus) { + // 如果是【tree】,则需要将菜单初始化成树状结构 + if (isTree) { + menus = this.initMenu(menus); + return success("获取菜单成功", menus); + } + return success("获取菜单成功", menus, menus.size()); + } + return error(400, "获取菜单失败"); + } + + /** + * 接口功能:获取菜单列表,其中该角色拥有的菜单的checkArr字段为"1" + * + * @param roleId 角色ID。0表示获取所有的状态正常的菜单 + * @return 全部角色列表,其中指定角色拥有的菜单的checkArr字段为"1" + */ + @GetMapping("/listForRole/{roleId}") + @ResponseBody + public BaseResult getMenuListForRole(@PathVariable String roleId) { + try { + List menus = menuService.getMenuListForRole(Integer.parseInt(roleId)); + if (null != menus) { + return success("获取菜单列表成功", menus); + } + return error(400, "获取菜单失败"); + } catch (Exception e) { + return error(400, "发生错误:" + e.getMessage()); + } + } + + /** + * 接口功能:根据角色ID获取菜单/权限 + * + * @param roleId 角色ID + * @return 该角色具有的菜单/权限列表 + */ + @GetMapping("/listByRoleId/{roleId}") + @ResponseBody + public BaseResult getMenuListByRoleId(@PathVariable String roleId) { + try { + List menus = menuService.getMenuListByRoleId(Integer.parseInt(roleId)); + return success("角色[" + roleId + "]拥有的菜单获取成功!", menus, menus.size()); + } catch (Exception e) { + return error(400, "error:" + e.getMessage()); + } + } + + /** + * 接口功能:根据用户ID获取菜单/权限 + * + * @param userId 用户ID + * @return 该用户具有的菜单/权限列表 + */ + @GetMapping("/listByUserId/{userId}") + @ResponseBody + public BaseResult getMenuListByUserId(@PathVariable String userId) { + try { + List menus = menuService.getMenuListByUserId(Integer.parseInt(userId), false); + return success("用户[" + userId + "]拥有的菜单获取成功!", menus, menus.size()); + } catch (Exception e) { + return error(400, "发生错误:" + e.getMessage()); + } + } + + /** + * 接口功能:更新菜单 + * + * @param menu 菜单实体 + * @return 菜单更新结果 + */ + @PostMapping("/update") + @ResponseBody + @AnnotationSaveReLog + public BaseResult updateMenu(@Validated SysMenu menu) { + // 执行修改菜单操作 + if (menuService.saveMenu(menu) > 0) { + return success("更新菜单成功"); + } + return error(400, "更新菜单失败"); + } + + + /** + * 接口功能:根据ID修改菜单状态 + * + * @param status 菜单新状态:1-正常 0-禁用 + * @param menuIds 需要修改状态的菜单ID数组 + * @return 菜单状态修改结果 + */ + @PostMapping("/changeStatus/{status}") + @ResponseBody + @AnnotationSaveReLog + public BaseResult changeMenuStatus(@PathVariable String status, Integer[] menuIds) { + try { + int[] result = menuService.changeStatus(Integer.parseInt(status), menuIds); + if (result[0] > 0) { + return success(result[0] + "个菜单状态更新成功," + result[1] + "个失败。"); + } + return error(400, "菜单状态更新失败!"); + } catch (Exception e) { + return error(400, "error:" + e.getMessage()); + } + } + + /** + * 接口功能:根据ID删除菜单 + * + * @param id 菜单ID + * @return 删除结果 + */ + @PostMapping("/remove") + @ResponseBody + @AnnotationSaveReLog + public BaseResult removeMenu(String id) { + try { + if (menuService.deleteMenu(Integer.parseInt(id)) > 0) { + return success("菜单删除成功"); + } + return error(400, "菜单删除失败"); + } catch (Exception e) { + return error(400, "发生错误:" + e.getMessage()); + } + } + + + /** + * 【注意:正常来说,这种工具应该以工具类的形式定义。但本项目中,我们只在此控制类中使用一次,所以就写在各个文件中】 + *

+ * 构造菜单树状列表数据 + * + * @param menuList 查询到的菜单列表 + * @return 合并后的树状列表 + */ + private List initMenu(List menuList) { + // 如果菜单为空,直接返回空 + if (menuList.isEmpty()) { + return null; + } + // 定义新的菜单列表,用来返回 + List retMenuList = new ArrayList<>(); + // 循环遍历:查找顶级菜单(有的项目中是顶部导航菜单) + for (SysMenu aMenuList : menuList) { + // 顶级菜单的特征是父级ID为 -1 + if (null != aMenuList.getParentId() && -1 == aMenuList.getParentId()) { + retMenuList.add(aMenuList); + } + } + //遍历所有菜单,将二级菜单添加至对应的一级菜单内 + for (SysMenu menu : retMenuList) { + menu.setChild(getChild(menu.getId(), menuList)); + } + //返回构建后的树状菜单 + return retMenuList; + } + + /** + * 设置子菜单(递归调用) + * + * @param parentId 父级菜单ID + * @param menuList 全部菜单列表 + * @return 子菜单结果集合 + */ + private List getChild(Integer parentId, List menuList) { + List result = new ArrayList<>(); + // 遍历,将子菜单添加进父菜单项内 + for (SysMenu menu : menuList) { + if (null != menu.getParentId() && parentId.equals(menu.getParentId())) { + result.add(menu); + } + } + // 继续遍历二级菜单是否有子菜单(递归) + for (SysMenu menu : result) { + menu.setChild(getChild(menu.getId(), menuList)); + } + //递归终止条件 + if (result.size() == 0) { + return null; + } + //返回结果集 + return result; + } + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysRoleController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysRoleController.java new file mode 100644 index 0000000..a084510 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysRoleController.java @@ -0,0 +1,282 @@ +package com.zxdmy.excite.admin.controller.system; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.SysRole; +import com.zxdmy.excite.system.service.ISysRoleService; +import com.zxdmy.excite.system.service.ISysUserRoleService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * 系统角色表 前端控制器 + * + * @author 沈松 + * @since 2021-09-23 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/system/role") +public class SysRoleController extends BaseController { + + ISysRoleService roleService; + + ISysUserRoleService userRoleService; + + /** + * @return 页面:【角色管理】页面入口 + */ + @RequestMapping("index") + public String index() { + return "system/role/index"; + } + + /** + * @return 页面:【角色管理-添加角色】页面入口 + */ + @RequestMapping("goAdd") + public String goAdd() { + return "system/role/add"; + } + + /** + * @param id 角色ID + * @param map map + * @return 页面:【角色管理-编辑角色】页面入口 + */ + @RequestMapping("goEdit/{id}") + public String goEdit(@PathVariable String id, ModelMap map) { + try { + SysRole role = roleService.getRole(Integer.parseInt(id)); + if (null != role) { + map.put("role", role); + return "system/role/edit"; + } else { + map.put("code", 500); + map.put("msg", "可能原因:该角色禁止编辑,该角色已被禁用!"); + return "error/error"; + } + } catch (Exception e) { + // 发生异常,一般就是数字转换出错 + System.err.println(e.getMessage()); + return "error/500"; + } + } + + @RequestMapping("goShowUser/{id}") + public String showUser(@PathVariable String id, ModelMap map) { + try { + SysRole role = roleService.getRole(Integer.parseInt(id)); + if (null == role) { + map.put("code", 500); + map.put("msg", "可能原因:该角色禁止编辑,该角色已被禁用!"); + return "error/error"; + } else { + map.put("role", role); + return "system/role/authUser"; + } + } catch (Exception e) { + // 发生异常,一般就是数字转换出错 + System.err.println(e.getMessage()); + return "error/500"; + } + } + + /** + * 接口功能:添加角色,并支持同时分配权限 + * + * @param role 角色实体 + * @param menuIds 该角色拥有的菜单ID,数组类型:[1,2,3,4,5,6],前端传递字符串格式:1,2,3,4 + * @return 添加结果 + */ + @PostMapping("/add") + @ResponseBody + @AnnotationSaveReLog + public BaseResult addRole(@Validated SysRole role, Integer[] menuIds) { + try { + if (roleService.saveRole(role, menuIds) > 0) { + return success("菜单角色成功"); + } + return error(400, "菜单角色失败"); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + /** + * 接口功能:通过角色ID获取角色信息 + * + * @param id 角色ID + * @return 指定角色的信息 + */ + @GetMapping("/get/{id}") + @ResponseBody + @AnnotationSaveReLog + public BaseResult getRole(@PathVariable String id) { + try { + SysRole role = roleService.getRole(Integer.parseInt(id)); + if (null != role) { + return success("获取角色成功", role); + } + return error(400, "获取角色失败"); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + /** + * 接口功能:获取所有角色,支持条件搜索 + * + * @param page 页号 + * @param limit 当前页数目 + * @param name 搜索字段:名称 + * @param permission 搜索字段:权限字符 + * @return 符合要求的角色列表 + */ + @GetMapping("/list") + @ResponseBody + public BaseResult getRoleList(Integer page, Integer limit, String name, String permission) { + try { + Page rolePage = roleService.getPage(page, limit, name, permission); + return success("获取角色列表成功", rolePage.getRecords(), (int) rolePage.getTotal()); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + /** + * 接口功能:获取获取所有正常的角色,为用户模块所用(添加、编辑用户) + * 其中:如果指定ID(即ID不为0),则该用户的角色列表中,已分配的角色属性中的checkArr=1 + * + * @param userId 用户ID。如果为0,则表示获取所有列表 + * @return JSON结果 + */ + @GetMapping("/listForUser/{userId}") + @ResponseBody + public BaseResult getRoleListForUser(@PathVariable String userId) { + try { + List roleList = roleService.getListByUserId(Integer.parseInt(userId)); + return success("获取角色列表成功", roleList, roleList.size()); + } catch (Exception e) { + return error(500, "error:" + e.getMessage()); + } + } + + /** + * 接口功能:更新角色接口 + * + * @param role 角色实体 + * @param menuIds 该角色拥有的菜单ID,数组类型:[1,2,3,4,5,6],前端发送数据格式为字符串:1,2,3,4 + * @return 结果 + */ + @PostMapping("/update") + @ResponseBody + @AnnotationSaveReLog + public BaseResult updateRole(@Validated SysRole role, Integer[] menuIds) { + try { + if (roleService.saveRole(role, menuIds) > 0) { + return success("更新角色成功"); + } + return error(400, "更新角色失败,请重试"); + } catch (Exception e) { + return error(500, "error:" + e.getMessage()); + } + } + + /** + * 接口功能:更新角色状态 + * + * @param status 角色新状态:1-正常 0-禁用 + * @param roleIds 角色ID列表,数组类型:[1,2,3,4,5,6] + * @return 修改结果 + */ + @PostMapping("/changeStatus/{status}") + @ResponseBody + @AnnotationSaveReLog + public BaseResult changeStatus(@PathVariable String status, Integer[] roleIds) { + try { + int[] result = roleService.changeStatus(Integer.parseInt(status), roleIds); + if (result[0] > 0) { + return success(result[0] + "个角色状态更新成功," + result[1] + "个失败!"); + } else + return error(400, "更新角色状态失败,请重试"); + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + /** + * 接口功能:删除指定角色,包含该角色的权限信息,以及撤销分配给某些用户的角色 + * + * @param roleIds 要删除的角色ID列表 + * @return 结果 + */ + @PostMapping("/delete") + @ResponseBody + @AnnotationSaveReLog + public BaseResult removeRole(Integer[] roleIds) { + try { + int[] result = roleService.deleteRoleById(roleIds); + // 没有失败的 + if (result[1] == 0 && result[2] == 0) { + return success(200, "删除成功!"); + } + // 没有成功的 + else if (result[0] == 0) { + return error(result[1] + "个角色删除失败!" + result[2] + "个角色因已授权用户,请取消授权后再删除!"); + } + // 有成功有失败的 + else { + return success(200, result[0] + "个角色删除成功!" + result[1] + "个角色删除失败!" + result[2] + "个角色已授权用户,请取消授权后再删除!"); + } + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + } + + /** + * 接口功能:将指定角色分配给系列用户,或者取消某角色分配给的用户 + * + * @param type 操作类型:auth-添加授权 | revoke-取消授权 + * @param roleId 用户ID + * @param userIds 角色信息列表 + * @return 分配结果 + */ + @PostMapping("/authUser/{type}") + @ResponseBody + @AnnotationSaveReLog + public BaseResult authForUser(@PathVariable("type") String type, String roleId, Integer[] userIds) { + try { + // 添加授权 + if (type.equals("auth")) { + if (roleService.authRoleForUsers(Integer.parseInt(roleId), userIds)) + return success(200, "添加授权成功!"); + else + return error("授权失败,请重试!"); + } + // 取消授权 + else if (type.equals("revoke")) { + int[] result = roleService.revokeRoleForUsers(Integer.parseInt(roleId), userIds); + if (result[1] == 0) + return success(200, "取消授权成功!"); + else if (result[0] == 0) + return error("取消授权失败,请重试!"); + else + return success(result[0] + "个用户取消授权成功," + result[1] + "个失败!"); + } + return error("访问错误!"); + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + } + + +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysUserController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysUserController.java new file mode 100644 index 0000000..18b7acc --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/system/SysUserController.java @@ -0,0 +1,456 @@ +package com.zxdmy.excite.admin.controller.system; + +import cn.dev33.satoken.session.SaSession; +import cn.dev33.satoken.stp.SaTokenInfo; +import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import cn.hutool.crypto.asymmetric.KeyType; +import cn.hutool.crypto.asymmetric.RSA; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; + +import com.zxdmy.excite.common.config.ExciteConfig; +import com.zxdmy.excite.common.enums.ReturnCode; +import com.zxdmy.excite.common.enums.SystemCode; +import com.zxdmy.excite.common.service.RedisService; +import com.zxdmy.excite.framework.aop.AnnotationSaveLoginLog; +import com.zxdmy.excite.framework.aop.AnnotationSaveReLog; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.service.ISysUserService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpSession; +import java.util.Arrays; +import java.util.List; + +/** + * 系统用户表 前端控制器 + * + * @author 沈松 + * @since 2021-09-01 + */ +@Tag(name = "后台用户控制器") +@Controller +@AllArgsConstructor +@RequestMapping("/system/user") +public class SysUserController extends BaseController { + + private ISysUserService userService; + +// private RedisService redisUtils; + + private ExciteConfig exciteConfig; + + /** + * 访问页面:用户管理 - 列表页面 + * + * @return 跳转至列表页面 + */ + @RequestMapping("index") + public String index() { + return "system/user/index"; + } + + /** + * 访问页面:用户管理 - 添加用户页面 + * + * @return 跳转至添加用户页面 + */ + @RequestMapping("goAdd") + public String goAdd() { + return "system/user/add"; + } + + /** + * 访问页面:用户管理 - 编辑用户信息页面 + * + * @return 跳转至编辑用户页面 + */ + @RequestMapping("goEdit/{id}") + public String goEdit(@PathVariable String id, ModelMap map) { + // 获取该用户的信息 + SysUser user = userService.getById(id); + // 加载至前端 + if (user == null) { + map.put("code", 404); + map.put("msg", "用户不存在!"); + return "error/error"; + } + map.put("user", user); + return "system/user/edit"; + } + + /** + * 访问页面:用户管理 - 为用户分配角色页面 + * + * @return 跳转至编辑用户页面 + */ + @RequestMapping("goAuthRole/{id}") + public String goAuthRole(@PathVariable String id, ModelMap map) { + // 获取该用户的信息 + SysUser user = userService.getById(id); + // 加载至前端 + if (user == null) { + map.put("code", 404); + map.put("msg", "用户不存在!"); + return "error/error"; + } + map.put("user", user); + return "system/user/authRole"; + } + + + /** + * 接口功能:用户登录 + * 基本逻辑:校验前端信息-->校验验证码-->校验用户名、密码-->登录 + * + * @param username 用户名 + * @param password 密码 + * @param captcha 验证码 + * @param remember 是否记住登录状态 1-记住 | 0-不记住(记住登录状态后,关闭浏览器,不退出。不记住登录状态,关闭浏览器后即退出登录。只有手动退出才可以) + * @return JSON:登录结果 + */ + @PostMapping(value = "/login") + @ResponseBody + @AnnotationSaveLoginLog + public BaseResult login(String username, String password,String remember) { + // 如果提交的信息有空信息 + if (StrUtil.hasBlank(username, password)) { + return error("用户名、密码或验证码不能为空!"); + } + // 前后端同域:使用session存储验证码。如果不同域:使用redis + HttpSession session = request.getSession(); + // 如果验证码session不为空,表示以获取验证码 + + // 使用用户名和密码登录 + SysUser user = userService.login(username, SecureUtil.md5(this.decrypt(password))); + // 如果用户不为空,则登录成功 + if (null != user) { + // 账号状态正常 + if (SystemCode.STATUS_N.getCode() != user.getStatus()) { + // 保持登录与否 + StpUtil.login(user.getId(), "1".equals(remember)); + SaTokenInfo tokenInfo = StpUtil.getTokenInfo(); + return success("登录成功!", tokenInfo); + } + // 账号已被封禁 + else + return error("该账号已被封禁,请联系系统管理员"); + } + // 登录失败 + else { + return error("登录失败:用户名或密码错误"); + } + + } + + /** + * 接口功能:退出登录 + * + * @return JSON:退出登录结果 + */ + @PostMapping(value = "/logout") + @ResponseBody + public BaseResult logout() { + if (StpUtil.isLogin()) { + StpUtil.logout(); + return success("已退出登录!"); + } + return error("请求失败,未登录任何账户"); + } + + /** + * 接口功能:获取用户列表 + * + * @param page 当前页面 + * @param limit 每页请求数 + * @param username 检索用户名 + * @param account 检索电话或邮箱 + * @return JSON:用户列表 | 错误信息 + */ + @GetMapping(value = "/list") + @ResponseBody + public BaseResult getUserList(Integer page, Integer limit, String username, String account) { + Page userPage = userService.getPage(page, limit, username, account); + if (null != userPage) { + return success("查询成功", userPage.getRecords(), (int) userPage.getTotal()); + } else { + return error("查询失败,用户不存在"); + } + } + + /** + * 接口功能:添加用户 + * 基本逻辑:接收前端的用户信息-->校验与初始化新用户信息-->添加至[用户表]-->获取新添加用户的ID-->用户ID与角色ID添加至[用户角色关联表]. + * + * @param user 用户信息 + * @param roleIds 用户分配的角色信息 + * @return JSON:成败结果 + * @apiNote 启用注解[@AnnotationSaveReLog]保存请求日志 + */ + @PostMapping(value = "/add") + @ResponseBody + @AnnotationSaveReLog + public BaseResult add(SysUser user, Integer[] roleIds) { + // 新建用户:其邮箱或手机号、密码不能为空,因为这是登录凭证. + if (null != user && null != user.getPassword() && (null != user.getLoginName() || null != user.getPhone())) { + // 解密 + user.setPassword(SecureUtil.md5(this.decrypt(user.getPassword()))); + // 添加 + if (userService.save(user, roleIds) > 0) { + return success("新用户添加成功!"); + } else { + return error("新用户添加失败,请重试!"); + } + } + return error("用户信息(账号或手机号、密码)不能为空,请重试!"); + } + + /** + * 接口功能:更新用户基本信息(不含角色信息) + * + * @param user 用户信息 + * @return JSON:成败结果 + * @apiNote 启用注解[@AnnotationSaveReLog]保存请求日志 + */ + @PostMapping(value = "/update") + @ResponseBody + @AnnotationSaveReLog + public BaseResult update(SysUser user) { + // 编辑用户基本信息:用户名、头像、性别、邮箱和手机号。 + if (null != user && null != user.getId()) { + // 其他信息(状态、密码)不能通过此接口修改,故其应为null. + if (null == user.getStatus() && null == user.getPassword()) { + if (userService.save(user, null) > 0) { + return success("用户信息编辑成功!"); + } else { + return error("用户信息编辑失败,请重试!"); + } + } else { + return error("接口请求信息错误!"); + } + } else { + return error("用户信息不能为空,请重试!"); + } + } + + /** + * 接口功能:删除用户 + * 基本逻辑:删除该用户的角色信息[用户-角色关联表]-->删除用户 + * + * @param userIds 用户ID列表 + * @return JSON:成败 + * @apiNote 启用注解[@AnnotationSaveReLog]保存请求日志 + */ + @PostMapping(value = "/delete") + @ResponseBody + @AnnotationSaveReLog + public BaseResult delete(Integer[] userIds) { + try { + if (userService.deleteUserById(userIds)[0] > 0) { + return success("用户删除成功"); + } + return error("用户删除失败"); + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + } + + /** + * 接口功能:给指定用户分配角色 + * + * @param id 用户ID + * @param roleIds 角色信息列表 + * @return 分配结果 + */ + @PostMapping(value = "/authRole") + @ResponseBody + public BaseResult setRole(String id, Integer[] roleIds) { + try { + if (userService.setRoleForUser(Integer.parseInt(id), roleIds)) { + return success(200, "分配角色成功!"); + } + return success("分配角色失败,请重试!"); + } catch (Exception e) { + return error("发生错误:" + e.getMessage()); + } + + } + + /** + * 接口功能:改变用户的状态 + * + * @param status 新状态:1-正常 0-禁用 + * @param userIds 用户ID列表 + * @return 修改结果 + */ + @PostMapping(value = "/changeStatus/{status}") + @ResponseBody + public BaseResult changeStatus(@PathVariable String status, Integer[] userIds) { + try { + int[] result = userService.changeStatus(Integer.parseInt(status), userIds); + // 没有失败 + if (result[0] != 0 && result[1] == 0) { + return success(200, "用户状态修改成功!"); + } + // 有成功的 + else if (result[0] != 0) { + return success(200, result[0] + "个角色状态更新成功," + result[1] + "个失败!"); + } else { + return success(500, "用户状态修改失败,请重试!"); + } + } catch (Exception e) { + return error(500, "发生错误:" + e.getMessage()); + } + } + + /** + * 接口功能:重置密码 + * + * @param userId 用户ID + * @param newPassword 新密码 + * @param newPassword2 新密码 + * @return 重置结果 + */ + @PostMapping(value = "/resetPassword") + @ResponseBody + @AnnotationSaveReLog + public BaseResult resetPassword(String userId, String newPassword, String newPassword2) { + if (null == userId || null == newPassword || null == newPassword2) { + return error("输入信息有误,请重新输入!"); + } + // 密码先解密 + newPassword = this.decrypt(newPassword); + newPassword2 = this.decrypt(newPassword2); + // 密码相同 + if (newPassword.equals(newPassword2)) { + SysUser user = new SysUser(); + try { + user.setId(Integer.parseInt(userId)); + // 密码MD5加密 + user.setPassword(SecureUtil.md5(newPassword)); + if (userService.save(user, null) > 0) { + return success("密码重置成功!"); + } else { + error("密码重置失败,请重试!"); + } + } catch (Exception e) { + return error(e.getMessage()); + } + } + return error("密码重置失败,新密码不一致!"); + } + + /** + * 接口功能:获取指定角色所分配的用户列表(拥有/不拥有此角色) + * + * @param roleId 角色ID + * @param have 是否用于此角色:0-不拥有 | 1-拥有 + * @return 用户列表 + */ + @GetMapping("/listForRole/{have}/{roleId}") + @ResponseBody + public BaseResult getUserListForRole(@PathVariable("have") String have, @PathVariable("roleId") String roleId) { + try { + // 拥有 此角色 + List userList; + if (have.equals("1")) { + userList = userService.getUserListByRoleId(Integer.parseInt(roleId)); + } + // 不拥有 此角色 + else { + userList = userService.getUserListByRoleIdNotIn(Integer.parseInt(roleId)); + } + return success(200, "获取成功", userList); + } catch (Exception e) { + return error(e.getMessage()); + } + } + + /** + * 访问页面:用户个人信息管理 - 修改用户信息 + * + * @return 跳转至编辑用户页面 + */ + @RequestMapping("center/setting") + public String goSetting(ModelMap map) { + SysUser user = userService.getById(StpUtil.getLoginIdAsInt()); + if (user != null) { + map.put("user", user); + return "system/userCenter/setting"; + } + map.put("code", 404); + map.put("msg", "访问错误!"); + return "error/error"; + } + + /** + * 访问页面:用户管理 - 编辑用户信息页面 + * + * @return 跳转至编辑用户页面 + */ + @RequestMapping("center/password") + public String goChangePassword() { + return "system/userCenter/password"; + } + + /** + * 接口功能:个人中心保存用户信息接口 + * + * @return 结果 + */ + @PostMapping(value = "/center/saveSetting") + @ResponseBody + public BaseResult saveSetting(SysUser user) { + user.setId(StpUtil.getLoginIdAsInt()); +// if (userService.save(user, null) > 0) { +// return success(200, "修改成功"); +// } + return error("修改失败,此接口暂不开放!"); + } + + /** + * 接口功能:个人中心修改用户密码接口 + * + * @param oldPassword 旧密码 + * @param newPassword1 新密码 + * @param newPassword2 新密码 + * @return 修改结果 + */ + @PostMapping(value = "/center/changePassword") + @ResponseBody + public BaseResult changePassword(String oldPassword, String newPassword1, String newPassword2) { + if (!newPassword1.equals(newPassword2)) { + return error("新密码不一致!"); + } + return error("修改失败,此接口暂不开放!"); + } + + /** + * 私有方法:解密密码 + * + * @param encrypt 加密密码 + * @return 解密密码 + */ + private String decrypt(String encrypt) { + // 根据私钥生成新的对象 + RSA rsa = new RSA(exciteConfig.getRsaPrivateKey(), null); + byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey); + return StrUtil.str(decrypt, CharsetUtil.CHARSET_UTF_8); + } +} diff --git a/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/tool/CaptchaController.java b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/tool/CaptchaController.java new file mode 100644 index 0000000..8203e53 --- /dev/null +++ b/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/tool/CaptchaController.java @@ -0,0 +1,107 @@ +package com.zxdmy.excite.admin.controller.tool; + + +import com.zxdmy.excite.common.base.BaseController; +import com.zxdmy.excite.common.base.BaseResult; + + +import com.zxdmy.excite.common.entity.CaptchaDomain; +import com.zxdmy.excite.common.service.CaptchaService; +import com.zxdmy.excite.common.service.RedisService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.imageio.ImageIO; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpSession; +import java.io.IOException; +import java.security.SecureRandom; +import java.util.Random; + +/** + *

+ * 生成验证码接口 + *

+ * + * @author 沈松 + * @since 2021-10-04 0004 21:16 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/tool/captcha") +public class CaptchaController extends BaseController { + + private CaptchaService captchaService; + + private RedisService redisUtils; + + /** + * 获取验证码接口 + * + * @param type 类型,char - 字符(默认) | math - 一位数算式 | math2 - 两位数算式 + * @return 结果 + */ + @GetMapping("/get") + @ResponseBody + public BaseResult getCaptcha(@RequestParam(value = "type", required = false, defaultValue = "char") String type) { + // 生成验证码实体 + CaptchaDomain captchaDomain = captchaService.createGoogleCaptcha(type); + if (null != captchaDomain) { + // 将验证码保存至redis,包含前缀 + redisUtils.set(captchaDomain.getToken(), captchaDomain.getCode(), 300L); + // 无用信息设空 + captchaDomain.setText(null); + captchaDomain.setCode(null); + // 返回前端信息 + return success("获取验证码成功", captchaDomain); + } else { + return error(400, "获取验证码失败,请重试。"); + } + + } + + /** + * 直接输出图片 + * + * @param type 类型,char - 字符(默认) | math - 一位数算式 | math2 - 两位数算式 + */ + @GetMapping("/get/image") + public void getCaptchaImage(@RequestParam(value = "type", required = false, defaultValue = "math") String type) { + ServletOutputStream out = null; + Random random = new SecureRandom(); +// int rand = random.nextInt(2); + CaptchaDomain captchaDomain; +// if (rand == 0) { + // 生成验证码实体 + captchaDomain = captchaService.createGoogleCaptcha(type); +// } else { +// captchaDomain = captchaService.createHutoolCaptcha(160, 60); +// } + // 将验证码保存至session + HttpSession session = request.getSession(); + session.setAttribute("captcha",captchaDomain.getCode()); + // 输出图片 + try { + response.setContentType("image/jpeg"); + out = response.getOutputStream(); + ImageIO.write(captchaDomain.getImage(), "jpg", out); + out.flush(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + + } + } + +} diff --git a/ss-admin/src/main/resources/application.yml b/ss-admin/src/main/resources/application.yml new file mode 100644 index 0000000..582585f --- /dev/null +++ b/ss-admin/src/main/resources/application.yml @@ -0,0 +1,194 @@ +# 项目服务配置 +server: + port: 8077 # 端口号 + servlet: + context-path: / #项目访问路径 + +# 自定义的配置信息 +excite: + name: Lt-Cloud # 项目名 + allow-redis: true # 开启redis缓存 + rsa-public-key: "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxo7epYQqWu4Dgr52LZIn+Y9T3wf2t1NCnh+DpbY3CSBdTDbTyoJdMJm0cat3E7sWcCGqZb2U8Kdtg12ycybhiyuNIc9tXqjYZqBk4ocjuk2QshNFBWU9hgLioKCsbGnCvUY4bB/SuuKUGmNl+CRT7kcehU6u+i3ML88V2LQQKuQIDAQAB" + rsa-private-key: "MIICdAIBADANBgkqhkiG9w0BAQEFAASCAl4wggJaAgEAAoGBALGjt6lhCpa7gOCvnYtkif5j1PfB/a3U0KeH4OltjcJIF1MNtPKgl0wmbRxq3cTuxZwIaplvZTwp22DXbJzJuGLK40hz21eqNhmoGTihyO6TZCyE0UFZT2GAuKgoKxsacK9RjhsH9K64pQaY2X4JFPuRx6FTq76LcwvzxXYtBAq5AgMBAAECfxC5ld7K1gp+wJctnedLlKegE/Wf8prsCCputNKFHE/UecjEqfJ+yPAKEv9SlFuIKOdiuZWTbl+xqgJt9UTzCD8t3E7WTi6yejmhIw1WcmFnDvh7G/AFdfYSxKJ29ak+CEc93SlfaURtxYco71qbjkrUnJi9ALIei4k8i+cEe9ECQQDXq/fm+MiMFTwZEjAimEbu2SZ6E70hbva520WOCkyDDnAvYZ76jtR35rDcIrXEPGGIBKf527iYEpiRriji4CBlAkEA0tstVP+j0UdIb8K1DZ7jj9pKVsBH/5HxLGtE5qk5GnqVwyI3C39/Y1kGY2hkt+7HHQ/uCa29AraymOTntahZxQJBAIsmXTAc2+fl23yhi4UGkt2QJY8mJSTpHy8TFnFqm6sDKcaoSZaHiPZDVWDy1CvkeVj1CBvhc9xKQz3bDG41BTECQGLSPCW5BhLgQK+4Zlhy3h4eZXbQ+S1rPcfeolUkfFHPn/7rOzcVUyPBpn/SflnB++m//ITmu03ZSEzmAz6dHy0CQHRgMPKVPzi70ToLwsWcnhZT6fUv/rkyYIRn4K40l13HNM/6Jj0zEaSMw/Ib4wJx/9l3QgiazeUO0usylxfprug=" + +# Spring相关配置 +spring: + # 数据库链接配置 + datasource: + name: druidDataSource + type: com.alibaba.druid.pool.DruidDataSource + # 链接地址,这里需要修改自己的数据库IP和数据库名 + url: jdbc:mysql://rm-gw0feo75m96osiy49ko.mysql.cn-chengdu.rds.aliyuncs.com:3306/lingtao_file_cloud?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC + username: admin_666888 + password: Admin_666888 + driver-class-name: com.mysql.cj.jdbc.Driver + druid: + # 链接地址,这里需要修改自己的数据库IP和数据库名 + # url: jdbc:mysql://127.0.0.1:3306/db_excite_cms?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC + # username: chen # 数据库用户名 + # password: 123456 # 数据库密码 + initial-size: 1 + min-idle: 1 + max-active: 20 + test-on-borrow: true + # 连接驱动类名 + # MySQL 8.x: com.mysql.cj.jdbc.Driver + # MySQL 5.x: com.mysql.jdbc.Driver + # driver-class-name: com.mysql.cj.jdbc.Driver + # 以下是开启监控相关配置 + webStatFilter: + enabled: true + statViewServlet: + enabled: true + # 设置白名单,不填则允许所有访问 + allow: + url-pattern: /druid/* + # 控制台管理用户名和密码 + login-username: admin + login-password: 123456 + filter: + stat: + enabled: true + # 慢SQL记录 + log-slow-sql: true + slow-sql-millis: 1000 + merge-sql: true + wall: + config: + multi-statement-allow: true + + redis: + # Redis服务器地址 + host: localhost + # password: + # Redis服务器连接端口 + port: 6379 + # 连接超时时间(记得添加单位,Duration) + timeout: 100000ms + # Redis默认情况下有16个分片,这里配置具体使用的分片 + database: 0 + # 自定义属性:开启自定义前缀 + allow-prefix: true + # 自定义属性:key的前缀 + prefix: "com.zxdmy.excite:" + lettuce: + pool: + # 连接池最大连接数(使用负值表示没有限制) 默认 8 + max-active: 100 + # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1 + max-wait: -1ms + # 连接池中的最大空闲连接 默认 8 + max-idle: 8 + # 连接池中的最小空闲连接 默认 0 + min-idle: 0 + thymeleaf: + cache: false #开发时关闭缓存,不然没法实时看到页面 + mode: LEGACYHTML5 #用非严格的HTML(标签不必严格遵守W3C标准) + encoding: UTF-8 # 编码格式 + servlet: + content-type: text/html #内容类型为HTML + prefix: classpath:/templates/ + suffix: .html + + devtools: + restart: + enabled: true + livereload: + enabled: true + + +# Mybatis Plus 相关配置 +mybatis-plus: + # 配置Mapper映射文件 + mapper-locations: classpath*:/mapper/**/**Mapper.xml + # 实体扫描,多个package用逗号或者分号分隔 + typeAliasesPackage: com.zxdmy.excite.system.entity;com.zxdmy.excite.common.entity + configuration: + # 自动驼峰命名 + map-underscore-to-camel-case: true + auto-mapping-behavior: full + cache-enabled: false + # 打印SQL + log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl + global-config: + db-config: + # 主键类型 0:"数据库ID自增", 1:"用户输入ID", 2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID"; + id-type: auto + # 驼峰下划线转换 + table-underline: true + # 逻辑删除 + logic-delete-value: 1 + logic-not-delete-value: 0 + +# OpenApi 接口文档信息配置 +springdoc: + api-docs: + # 开启或关闭swagger,关闭后,无法访问和查看接口文档 + enabled: true + swagger-ui: + # 打开swagger的地址。当前:http://localhost:8181/swagger + path: /swagger + csrf: + enabled: true # 开启跨域访问 + # 包扫描路径,多个package用英文逗号分隔。如果配置了分组,可以不用设置此项。 + # packages-to-scan: com.zxdmy.excite.system.controller,com.zxdmy.excite.system.entity + # 分组配置, + group-configs: + # 分组名 + - group: system + # 匹配方式1:按路径匹配 + pathsToMatch: /system/** +# # 分组名 +# - group: system +# # 匹配方式2:按包路径匹配;多个package用英文逗号分隔 +# packagesToScan: com.zxdmy.excite.system + +# Sa-Token配置(权限配置使用) +sa-token: + # token名称 (同时也是cookie名称) + token-name: "com.zxdmy.excite" + # token有效期,单位s 默认30天(2592000), -1代表永不过期 + timeout: 259200 + # token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒,-1表示永不过期 + activity-timeout: 7200 + # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) + is-concurrent: true + # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) + is-share: false + # token风格 + token-style: uuid + # 是否输出操作日志 + is-log: true + + + +aliyun: + oss: + #你自己阿里云账户的endpoint + endpoint: oss-cn-hangzhou.aliyuncs.com + #你自己阿里云账户的accessKeyId + accessKeyId: LTAI5tE7wuNkeT9jZ42bQnyr + #你自己阿里云账户的accessKeySecret + accessKeySecret: NnutvWhKl4HbQFSad3HosYbCkEkbjN + #你自己阿里云账户的bucketName + bucketName: ltcloudfile + #Oss前缀路径 + prefix_dir: yangcai365_design + + region: oss-cn-hangzhou + #外网访问域名 + endpointExternal: http://oss-cn-hangzhou.aliyuncs.com + #内网访问域名 + endpointInternal: http://oss-cn-hangzhou-internal.aliyuncs.com + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/banner.txt b/ss-admin/src/main/resources/banner.txt new file mode 100644 index 0000000..bff73ee --- /dev/null +++ b/ss-admin/src/main/resources/banner.txt @@ -0,0 +1,40 @@ +/*##################################################### +# # +# _oo0oo_ # +# o8888888o # +# 88" . "88 # +# (| -_- |) # +# 0\ = /0 # +# ___/`---'\___ # +# .' \\|???? |# '. # +# / \\|||? :? |||# \ # +# / _||||| -:- |||||- \ # +# |?? | \\\? -? #/ |?? | # +# | \_|? ''\---/''? |_/ | # +# \? .-\__? '-'? ___/-. / # +# ___'. .'? /--.--\? `. .'___ # +# ."" '_/___.' >' "". # +# | | :? `- \`.;`\ _ /`;.`/ - ` : | | # +# \? \ `_.?? \_ __\ /__ _/?? .-` /? / # +# =====`-.____`.___ \_____/___.-`___.-'===== # +# `=---=' # +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# # +# 佛祖保佑 永无BVG # +# # +#####################################################*/ + + + ┌─────────────────────────────────────────────┐ + │ 🙏 南无阿弥陀佛 🙏 │ + │ 🐛 永无bug 🎯 │ + │ │ + │ 🌸 Spring Boot 加持中... │ + │ 🪷 代码清净无染 │ + │ 📿 运行稳定如常 │ + └─────────────────────────────────────────────┘ + +应用: ${spring.application.name} +端口: ${server.port} +环境: ${spring.profiles.active:default} +内存: ${java.vm.name} ${java.vm.version} diff --git a/ss-admin/src/main/resources/static/api/clear.json b/ss-admin/src/main/resources/static/api/clear.json new file mode 100644 index 0000000..e0f5ed7 --- /dev/null +++ b/ss-admin/src/main/resources/static/api/clear.json @@ -0,0 +1,4 @@ +{ + "code": 1, + "msg": "服务端清理缓存成功" +} \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/api/init.json b/ss-admin/src/main/resources/static/api/init.json new file mode 100644 index 0000000..8c7383c --- /dev/null +++ b/ss-admin/src/main/resources/static/api/init.json @@ -0,0 +1,245 @@ +{ + "homeInfo": { + "title": "首页", + "href": "page/welcome-1.html?t=1" + }, + "logoInfo": { + "title": "LAYUI MINI", + "image": "images/logo.png", + "href": "" + }, + "menuInfo": [ + { + "title": "常规管理", + "icon": "fa fa-address-book", + "href": "", + "target": "_self", + "child": [ + { + "title": "主页模板", + "href": "", + "icon": "fa fa-home", + "target": "_self", + "child": [ + { + "title": "主页一", + "href": "page/welcome-1.html", + "icon": "fa fa-tachometer", + "target": "_self" + }, + { + "title": "主页二", + "href": "page/welcome-2.html", + "icon": "fa fa-tachometer", + "target": "_self" + }, + { + "title": "主页三", + "href": "page/welcome-3.html", + "icon": "fa fa-tachometer", + "target": "_self" + } + ] + }, + { + "title": "菜单管理", + "href": "page/menu.html", + "icon": "fa fa-window-maximize", + "target": "_self" + }, + { + "title": "系统设置", + "href": "page/setting.html", + "icon": "fa fa-gears", + "target": "_self" + }, + { + "title": "表格示例", + "href": "page/table.html", + "icon": "fa fa-file-text", + "target": "_self" + }, + { + "title": "表单示例", + "href": "", + "icon": "fa fa-calendar", + "target": "_self", + "child": [ + { + "title": "普通表单", + "href": "page/form.html", + "icon": "fa fa-list-alt", + "target": "_self" + }, + { + "title": "分步表单", + "href": "page/form-step.html", + "icon": "fa fa-navicon", + "target": "_self" + } + ] + }, + { + "title": "登录模板", + "href": "", + "icon": "fa fa-flag-o", + "target": "_self", + "child": [ + { + "title": "登录-1", + "href": "page/login-1.html", + "icon": "fa fa-stumbleupon-circle", + "target": "_blank" + }, + { + "title": "登录-2", + "href": "page/login-2.html", + "icon": "fa fa-viacoin", + "target": "_blank" + }, + { + "title": "登录-3", + "href": "page/login-3.html", + "icon": "fa fa-tags", + "target": "_blank" + } + ] + }, + { + "title": "异常页面", + "href": "", + "icon": "fa fa-home", + "target": "_self", + "child": [ + { + "title": "404页面", + "href": "page/404.html", + "icon": "fa fa-hourglass-end", + "target": "_self" + } + ] + }, + { + "title": "其它界面", + "href": "", + "icon": "fa fa-snowflake-o", + "target": "", + "child": [ + { + "title": "按钮示例", + "href": "page/button.html", + "icon": "fa fa-snowflake-o", + "target": "_self" + }, + { + "title": "弹出层", + "href": "page/layer.html", + "icon": "fa fa-shield", + "target": "_self" + } + ] + } + ] + }, + { + "title": "组件管理", + "icon": "fa fa-lemon-o", + "href": "", + "target": "_self", + "child": [ + { + "title": "图标列表", + "href": "page/icon.html", + "icon": "fa fa-dot-circle-o", + "target": "_self" + }, + { + "title": "图标选择", + "href": "page/icon-picker.html", + "icon": "fa fa-adn", + "target": "_self" + }, + { + "title": "颜色选择", + "href": "page/color-select.html", + "icon": "fa fa-dashboard", + "target": "_self" + }, + { + "title": "下拉选择", + "href": "page/table-select.html", + "icon": "fa fa-angle-double-down", + "target": "_self" + }, + { + "title": "文件上传", + "href": "page/upload.html", + "icon": "fa fa-arrow-up", + "target": "_self" + }, + { + "title": "富文本编辑器", + "href": "page/editor.html", + "icon": "fa fa-edit", + "target": "_self" + }, + { + "title": "省市县区选择器", + "href": "page/area.html", + "icon": "fa fa-rocket", + "target": "_self" + } + ] + }, + { + "title": "其它管理", + "icon": "fa fa-slideshare", + "href": "", + "target": "_self", + "child": [ + { + "title": "多级菜单", + "href": "", + "icon": "fa fa-meetup", + "target": "", + "child": [ + { + "title": "按钮1", + "href": "page/button.html?v=1", + "icon": "fa fa-calendar", + "target": "_self", + "child": [ + { + "title": "按钮2", + "href": "page/button.html?v=2", + "icon": "fa fa-snowflake-o", + "target": "_self", + "child": [ + { + "title": "按钮3", + "href": "page/button.html?v=3", + "icon": "fa fa-snowflake-o", + "target": "_self" + }, + { + "title": "表单4", + "href": "page/form.html?v=1", + "icon": "fa fa-calendar", + "target": "_self" + } + ] + } + ] + } + ] + }, + { + "title": "失效菜单", + "href": "page/error.html", + "icon": "fa fa-superpowers", + "target": "_self" + } + ] + } + ] +} \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/api/menus.json b/ss-admin/src/main/resources/static/api/menus.json new file mode 100644 index 0000000..e14d00e --- /dev/null +++ b/ss-admin/src/main/resources/static/api/menus.json @@ -0,0 +1,254 @@ +{ + "code": 0, + "msg": "", + "count": 19, + "data": [ + { + "authorityId": 1, + "authorityName": "系统管理", + "orderNumber": 1, + "menuUrl": null, + "menuIcon": "layui-icon-set", + "createTime": "2018/06/29 11:05:41", + "authority": null, + "checked": 0, + "updateTime": "2018/07/13 09:13:42", + "isMenu": 0, + "parentId": -1 + }, + { + "authorityId": 2, + "authorityName": "用户管理", + "orderNumber": 2, + "menuUrl": "system/user", + "menuIcon": null, + "createTime": "2018/06/29 11:05:41", + "authority": null, + "checked": 0, + "updateTime": "2018/07/13 09:13:42", + "isMenu": 0, + "parentId": 1 + }, + { + "authorityId": 3, + "authorityName": "查询用户", + "orderNumber": 3, + "menuUrl": "", + "menuIcon": "", + "createTime": "2018/07/21 13:54:16", + "authority": "user:view", + "checked": 0, + "updateTime": "2018/07/21 13:54:16", + "isMenu": 1, + "parentId": 2 + }, + { + "authorityId": 4, + "authorityName": "添加用户", + "orderNumber": 4, + "menuUrl": null, + "menuIcon": null, + "createTime": "2018/06/29 11:05:41", + "authority": "user:add", + "checked": 0, + "updateTime": "2018/07/13 09:13:42", + "isMenu": 1, + "parentId": 2 + }, + { + "authorityId": 5, + "authorityName": "修改用户", + "orderNumber": 5, + "menuUrl": null, + "menuIcon": null, + "createTime": "2018/06/29 11:05:41", + "authority": "user:edit", + "checked": 0, + "updateTime": "2018/07/13 09:13:42", + "isMenu": 1, + "parentId": 2 + }, + { + "authorityId": 6, + "authorityName": "删除用户", + "orderNumber": 6, + "menuUrl": null, + "menuIcon": null, + "createTime": "2018/06/29 11:05:41", + "authority": "user:delete", + "checked": 0, + "updateTime": "2018/07/13 09:13:42", + "isMenu": 1, + "parentId": 2 + }, + { + "authorityId": 7, + "authorityName": "角色管理", + "orderNumber": 7, + "menuUrl": "system/role", + "menuIcon": null, + "createTime": "2018/06/29 11:05:41", + "authority": null, + "checked": 0, + "updateTime": "2018/07/13 09:13:42", + "isMenu": 0, + "parentId": 1 + }, + { + "authorityId": 8, + "authorityName": "查询角色", + "orderNumber": 8, + "menuUrl": "", + "menuIcon": "", + "createTime": "2018/07/21 13:54:59", + "authority": "role:view", + "checked": 0, + "updateTime": "2018/07/21 13:54:58", + "isMenu": 1, + "parentId": 7 + }, + { + "authorityId": 9, + "authorityName": "添加角色", + "orderNumber": 9, + "menuUrl": "", + "menuIcon": "", + "createTime": "2018/06/29 11:05:41", + "authority": "role:add", + "checked": 0, + "updateTime": "2018/07/13 09:13:42", + "isMenu": 1, + "parentId": 7 + }, + { + "authorityId": 10, + "authorityName": "修改角色", + "orderNumber": 10, + "menuUrl": "", + "menuIcon": "", + "createTime": "2018/06/29 11:05:41", + "authority": "role:edit", + "checked": 0, + "updateTime": "2018/07/13 09:13:42", + "isMenu": 1, + "parentId": 7 + }, + { + "authorityId": 11, + "authorityName": "删除角色", + "orderNumber": 11, + "menuUrl": "", + "menuIcon": "", + "createTime": "2018/06/29 11:05:41", + "authority": "role:delete", + "checked": 0, + "updateTime": "2018/07/13 09:13:42", + "isMenu": 1, + "parentId": 7 + }, + { + "authorityId": 12, + "authorityName": "角色权限管理", + "orderNumber": 12, + "menuUrl": "", + "menuIcon": "", + "createTime": "2018/06/29 11:05:41", + "authority": "role:auth", + "checked": 0, + "updateTime": "2018/07/13 15:27:18", + "isMenu": 1, + "parentId": 7 + }, + { + "authorityId": 13, + "authorityName": "权限管理", + "orderNumber": 13, + "menuUrl": "system/authorities", + "menuIcon": null, + "createTime": "2018/06/29 11:05:41", + "authority": null, + "checked": 0, + "updateTime": "2018/07/13 15:45:13", + "isMenu": 0, + "parentId": 1 + }, + { + "authorityId": 14, + "authorityName": "查询权限", + "orderNumber": 14, + "menuUrl": "", + "menuIcon": "", + "createTime": "2018/07/21 13:55:57", + "authority": "authorities:view", + "checked": 0, + "updateTime": "2018/07/21 13:55:56", + "isMenu": 1, + "parentId": 13 + }, + { + "authorityId": 15, + "authorityName": "添加权限", + "orderNumber": 15, + "menuUrl": "", + "menuIcon": "", + "createTime": "2018/06/29 11:05:41", + "authority": "authorities:add", + "checked": 0, + "updateTime": "2018/06/29 11:05:41", + "isMenu": 1, + "parentId": 13 + }, + { + "authorityId": 16, + "authorityName": "修改权限", + "orderNumber": 16, + "menuUrl": "", + "menuIcon": "", + "createTime": "2018/07/13 09:13:42", + "authority": "authorities:edit", + "checked": 0, + "updateTime": "2018/07/13 09:13:42", + "isMenu": 1, + "parentId": 13 + }, + { + "authorityId": 17, + "authorityName": "删除权限", + "orderNumber": 17, + "menuUrl": "", + "menuIcon": "", + "createTime": "2018/06/29 11:05:41", + "authority": "authorities:delete", + "checked": 0, + "updateTime": "2018/06/29 11:05:41", + "isMenu": 1, + "parentId": 13 + }, + { + "authorityId": 18, + "authorityName": "登录日志", + "orderNumber": 18, + "menuUrl": "system/loginRecord", + "menuIcon": null, + "createTime": "2018/06/29 11:05:41", + "authority": null, + "checked": 0, + "updateTime": "2018/06/29 11:05:41", + "isMenu": 0, + "parentId": 1 + }, + { + "authorityId": 19, + "authorityName": "查询登录日志", + "orderNumber": 19, + "menuUrl": "", + "menuIcon": "", + "createTime": "2018/07/21 13:56:43", + "authority": "loginRecord:view", + "checked": 0, + "updateTime": "2018/07/21 13:56:43", + "isMenu": 1, + "parentId": 18 + } + ] +} \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/api/table.json b/ss-admin/src/main/resources/static/api/table.json new file mode 100644 index 0000000..7bda61b --- /dev/null +++ b/ss-admin/src/main/resources/static/api/table.json @@ -0,0 +1,127 @@ +{ + "code": 0, + "msg": "", + "count": 1000, + "data": [ + { + "id": 10000, + "username": "user-0", + "sex": "女", + "city": "城市-0", + "sign": "签名-0", + "experience": 255, + "logins": 24, + "wealth": 82830700, + "classify": "作家", + "score": 57 + }, + { + "id": 10001, + "username": "user-1", + "sex": "男", + "city": "城市-1", + "sign": "签名-1", + "experience": 884, + "logins": 58, + "wealth": 64928690, + "classify": "词人", + "score": 27 + }, + { + "id": 10002, + "username": "user-2", + "sex": "女", + "city": "城市-2", + "sign": "签名-2", + "experience": 650, + "logins": 77, + "wealth": 6298078, + "classify": "酱油", + "score": 31 + }, + { + "id": 10003, + "username": "user-3", + "sex": "女", + "city": "城市-3", + "sign": "签名-3", + "experience": 362, + "logins": 157, + "wealth": 37117017, + "classify": "诗人", + "score": 68 + }, + { + "id": 10004, + "username": "user-4", + "sex": "男", + "city": "城市-4", + "sign": "签名-4", + "experience": 807, + "logins": 51, + "wealth": 76263262, + "classify": "作家", + "score": 6 + }, + { + "id": 10005, + "username": "user-5", + "sex": "女", + "city": "城市-5", + "sign": "签名-5", + "experience": 173, + "logins": 68, + "wealth": 60344147, + "classify": "作家", + "score": 87 + }, + { + "id": 10006, + "username": "user-6", + "sex": "女", + "city": "城市-6", + "sign": "签名-6", + "experience": 982, + "logins": 37, + "wealth": 57768166, + "classify": "作家", + "score": 34 + }, + { + "id": 10007, + "username": "user-7", + "sex": "男", + "city": "城市-7", + "sign": "签名-7", + "experience": 727, + "logins": 150, + "wealth": 82030578, + "classify": "作家", + "score": 28 + }, + { + "id": 10008, + "username": "user-8", + "sex": "男", + "city": "城市-8", + "sign": "签名-8", + "experience": 951, + "logins": 133, + "wealth": 16503371, + "classify": "词人", + "score": 14 + }, + { + "id": 10009, + "username": "user-9", + "sex": "女", + "city": "城市-9", + "sign": "签名-9", + "experience": 484, + "logins": 25, + "wealth": 86801934, + "classify": "词人", + "score": 75 + } + ] +} \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/api/tableSelect.json b/ss-admin/src/main/resources/static/api/tableSelect.json new file mode 100644 index 0000000..37fb0ed --- /dev/null +++ b/ss-admin/src/main/resources/static/api/tableSelect.json @@ -0,0 +1,23 @@ +{ + "code": 0, + "msg": "", + "count": 16, + "data": [ + { "id":"001", "username":"张玉林", "sex":"女" }, + { "id":"002", "username":"刘晓军", "sex":"男" }, + { "id":"003", "username":"张恒", "sex":"男" }, + { "id":"004", "username":"朱一", "sex":"男" }, + { "id":"005", "username":"刘佳能", "sex":"女" }, + { "id":"006", "username":"晓梅", "sex":"女" }, + { "id":"007", "username":"马冬梅", "sex":"女" }, + { "id":"008", "username":"刘晓庆", "sex":"女" }, + { "id":"009", "username":"刘晓庆", "sex":"女" }, + { "id":"010", "username":"刘晓庆", "sex":"女" }, + { "id":"011", "username":"刘晓庆", "sex":"女" }, + { "id":"012", "username":"刘晓庆", "sex":"女" }, + { "id":"013", "username":"刘晓庆", "sex":"女" }, + { "id":"014", "username":"刘晓庆", "sex":"女" }, + { "id":"015", "username":"刘晓庆", "sex":"女" }, + { "id":"016", "username":"刘晓庆", "sex":"女" } + ] +} \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/api/upload.json b/ss-admin/src/main/resources/static/api/upload.json new file mode 100644 index 0000000..691902d --- /dev/null +++ b/ss-admin/src/main/resources/static/api/upload.json @@ -0,0 +1,10 @@ +{ + "code": 1, + "msg": "上传成功", + "data": { + "url": [ + "../images/logo.png", + "../images/captcha.jpg" + ] + } +} diff --git a/ss-admin/src/main/resources/static/css/layuimini.css b/ss-admin/src/main/resources/static/css/layuimini.css new file mode 100644 index 0000000..6a96476 --- /dev/null +++ b/ss-admin/src/main/resources/static/css/layuimini.css @@ -0,0 +1,927 @@ +/** +配色方案(如有需要,请自行配置) + */ +/**头部-配色*/ +.layui-layout-admin .layui-header { + background-color: #1aa094 !important; +} + +.layui-header > ul > .layui-nav-item.layui-this, .layuimini-tool i:hover { + background-color: #197971 !important; +} + +.layui-header .layuimini-header-content > ul > .layui-nav-item.layui-this, .layuimini-tool i:hover { + background-color: #197971 !important; +} + +/**logo-配色*/ +.layui-layout-admin .layuimini-logo { + background-color: #ffffff !important; +} + +/**左侧-配色*/ +.layui-side.layui-bg-black, .layui-side.layui-bg-black > .layuimini-menu-left > ul { + background-color: #ffffff !important; +} + +.layuimini-menu-left .layui-nav .layui-nav-child a:hover:not(.layui-this) { + background-color: #3b3f4b; +} + +/**左侧菜单选中-配色*/ +.layui-layout-admin .layui-nav-tree .layui-this, .layui-layout-admin .layui-nav-tree .layui-this > a, .layui-layout-admin .layui-nav-tree .layui-nav-child dd.layui-this, .layui-layout-admin .layui-nav-tree .layui-nav-child dd.layui-this a { + background-color: #1aa094 !important; +} + + +/**头部样式 */ +.layui-layout-admin .header { + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; +} + +.layuimini-header-menu, .layui-header { + height: 60px !important; +} + +.layuimini-header-menu > .layui-nav-item { + color: #1b1d21; + height: 60px !important; + line-height: 60px !important; +} + +.layui-header > .layui-layout-right > .layui-nav-item { + height: 60px !important; + line-height: 60px !important; +} + +.layui-layout-left { + left: 295px !important; +} + +.layui-nav.layui-layout-left.layuimini-header-menu.layuimini-pc-show { + font-weight: bold; + transition: all .2s; +} + + +/**logo演示(通用) */ +.layui-layout-admin .layuimini-logo { + font-weight: bold; + color: #ffffff !important; + height: 60px !important; + line-height: 60px !important; + overflow: hidden; + line-height: 64px; + transition: all .2s !important; +} + +.layui-layout-admin .layuimini-logo img { + display: inline-block; + height: 40px; + vertical-align: middle; +} + +.layui-layout-admin .layuimini-logo h1 { + display: inline-block; + margin: 0 0 0 12px; + color: #ffffff; + font-weight: 600; + font-size: 20px; + font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif; + vertical-align: middle; +} + +/**缩放工具(通用) */ +.layuimini-tool { + position: absolute !important; + top: 0; + left: 235px; + width: 60px; + height: 100%; + line-height: 60px; + text-align: center; + color: #ffffff !important; + transition: all .2s; +} + +/**缩放工具(缩放) */ +.layuimini-tool i { + display: block; + color: #bbe3df; + width: 32px; + height: 32px; + line-height: 32px; + border-radius: 3px; + text-align: center; + margin-top: 15px; + cursor: pointer; +} + +/**tab选项卡 */ +.layuimini-tab { + margin: 0px; + overflow: hidden; + height: 100% !important; +} + +.layuimini-tab .layui-tab-content { + height: calc(100% - 37px) !important; +} + +.layuimini-tab .layui-tab-content .layui-tab-item { + height: 100%; +} + +.layuimini-tab .layui-tab-content { + padding: 0px; +} + +.layuimini-tab .layui-tab-title { + border: none; + border: 1px solid whitesmoke; + background-color: white; +} + +.layuimini-tab .layui-tab-title li { + border-right: 1px solid whitesmoke; + color: dimgray; +} + +.layuimini-tab .layui-tab-title .layui-tab-bar { + display: none; +} + +.layuimini-tab .layui-tab-title .layui-this:after { + display: none; +} + +.layuimini-tab .layui-tab-title .layuimini-tab-active { + display: inline-block; + background-color: lightgray; + width: 9px; + height: 9px; + border-radius: 30px; + margin-right: 5px; +} + +.layuimini-tab .layui-tab-title .layui-this .layuimini-tab-active { + background-color: #1aa094; +} + +.layuimini-tab > .layui-tab-title, .layuimini-tab > .close-box { + height: 35px !important; +} + +.layuimini-tab > .layui-tab-title li, .layuimini-tab > .close-box li { + line-height: 35px !important; +} + +.layuimini-tab .layui-tab-title span { + color: #616161; +} + +.layuimini-tab .layui-tab-title .layui-this span { + color: #070707; +} + +.layuimini-tab .layui-tab-title .layui-tab-close { + font-size: 12px !important; + width: 14px !important; + height: 14px !important; + line-height: 16px !important; +} + +.layuimini-tab .layui-tab-title .layui-tab-close:hover { + border-radius: 4em; + background: #ff5722; +} + +.layuimini-tab .layui-tab-title .disable-close + .layui-tab-close { + display: none; +} + +.layuimini-tab .layui-tab-title .able-close + .layui-tab-close { + display: inline-block; +} + +.layuimini-tab .layui-tab-control > li { + position: absolute; + top: 0px; + height: 35px; + line-height: 35px; + width: 35px; + text-align: center; + background-color: white; + border-top: whitesmoke 1px solid; + border-bottom: whitesmoke 1px solid; +} + +.layuimini-tab .layuimini-tab-roll-left { + left: 0px; + border-right: whitesmoke 1px solid; + border-left: whitesmoke 1px solid; +} + +.layuimini-tab .layuimini-tab-roll-right { + right: 35px; + border-left: 1px solid whitesmoke; +} + +.layuimini-tab .layui-tab-tool { + right: 0px; + border-left: 1px solid whitesmoke; +} + +.layuimini-tab .layui-tab-control .layui-tab-tool, +.layuimini-tab .layui-tab-control .layuimini-tab-roll-left, +.layuimini-tab .layui-tab-control .layuimini-tab-roll-right { + display: none; +} + +.layuimini-tab.layui-tab-roll .layui-tab-control .layuimini-tab-roll-left, +.layuimini-tab.layui-tab-roll .layui-tab-control .layuimini-tab-roll-right { + display: block; +} + +.layuimini-tab.layui-tab-roll .layui-tab-control .layuimini-tab-roll-right { + right: 0px; + border-right: 1px solid whitesmoke; +} + +.layuimini-tab.layui-tab-roll .layui-tab-title { + padding-left: 35px; + padding-right: 35px; +} + + +.layuimini-tab.layui-tab-tool .layui-tab-control .layui-tab-tool { + display: block; +} + +.layuimini-tab.layui-tab-tool .layui-tab-title { + padding-left: 0px; + padding-right: 35px; +} + + +.layuimini-tab.layui-tab-rollTool .layui-tab-title { + padding-left: 35px; + padding-right: 80px; +} + +.layuimini-tab.layui-tab-rollTool .layui-tab-control .layuimini-tab-roll-left, +.layuimini-tab.layui-tab-rollTool .layui-tab-control .layuimini-tab-roll-right, +.layuimini-tab.layui-tab-rollTool .layui-tab-control .layui-tab-tool { + display: block; +} + +.layuimini-tab .layui-tab-tool .layui-nav { + position: absolute; + height: 43px !important; + top: 0; + width: 100%; + height: 100%; + padding: 0; + background: 0 0; +} + +.layuimini-tab .layui-tab-tool .layui-nav-item { + height: 35px; +} + +.layuimini-tab .layui-tab-tool .layui-nav-bar { + display: none; +} + +.layuimini-tab .layui-tab-tool .layui-nav-child { + left: auto; + top: 45px; + right: 3px; + width: 120px; + border: 1px solid whitesmoke; +} + +.layuimini-tab .layui-tab-tool .layui-this a { + background-color: #009688; +} + +.layuimini-tab-loading { + position: absolute; + display: none; + width: 100%; + height: calc(100% - 37px); + top: 37px; + z-index: 19; + background-color: #fff +} + +.layuimini-tab-loading.close { + animation: close 1s; + -webkit-animation: close 1s; + animation-fill-mode: forwards; +} + +/**左侧菜单栏 (通用) */ +.layui-side.layui-bg-black { + transition: all .2s; +} + +.layui-side.layui-bg-black > .layuimini-menu-left > ul { + transition: all .2s; +} + +.layui-side.layui-bg-black > .layuimini-menu-left > ul > .layui-nav-item:first-child { + border-top: 1px solid #4b5461; +} + +.layuimini-menu-left .layui-nav .layui-nav-item a { + height: 40px; + line-height: 40px; + padding-right: 30px; +} + +.layuimini-menu-left .layui-nav .layui-nav-item > a { + padding-top: 5px; + padding-bottom: 5px; +} + +.layuimini-menu-left .layui-nav .layui-nav-child .layui-nav-child { + background: 0 0 !important +} + +.layuimini-menu-left .layui-nav .layui-nav-more { + right: 15px; +} + +.layuimini-menu-left .layui-nav .layui-nav-item a:hover { + background-color: transparent !important; +} + +.layuimini-menu-left .layui-nav { + background-color: transparent !important; +} + + +/**左侧菜单栏 (正常) */ +.layui-layout-body .layui-nav-itemed .layui-nav-child a, .layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-child a { + padding-left: 35px; +} + +.layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-child .layui-nav-child a { + padding-left: 45px; +} + +.layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-child .layui-nav-child .layui-nav-child a { + padding-left: 55px; +} + +.layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-child .layui-nav-child .layui-nav-child .layui-nav-child a { + padding-left: 65px; +} + +.layui-layout-body .layuimini-menu-left .layui-nav .layui-nav-itemed > .layui-nav-child { + padding: 5px 0; +} + +/**内容主体(通用) */ +.layui-layout-admin .layui-body { + overflow: hidden; + bottom: 0px !important; + top: 60px !important; + transition: all .2s; +} + +/**选择配色方案 */ +.layuimini-color .color-title { + padding: 10px 0 10px 20px; + border-bottom: 1px solid #d9dada; + margin-bottom: 8px; +} + +.layuimini-color .color-content { + padding: 10px 5px 0 5px; +} + +.layuimini-color .color-content ul { + list-style: none; + text-align: center; +} + +.layuimini-color .color-content ul li { + position: relative; + display: inline-block; + vertical-align: top; + width: 80px; + height: 50px; + margin: 0 15px 15px 0; + padding: 2px 2px 4px 2px; + background-color: #f2f2f2; + cursor: pointer; + font-size: 12px; + color: #666; +} + +.layuimini-color .color-content li.layui-this:after, .layuimini-color .color-content li:hover:after { + width: 100%; + height: 100%; + padding: 4px; + top: -5px; + left: -5px; + border-color: #d8d8d8; + opacity: 1; +} + +.layuimini-color .color-content li:after { + content: ''; + position: absolute; + z-index: 20; + top: 50%; + left: 50%; + width: 1px; + height: 0; + border: 1px solid #f2f2f2; + transition: all .3s; + -webkit-transition: all .3s; + opacity: 0; +} + + +/**其它 */ +.layui-tab-item { + width: 100% !important; + height: 100% !important; +} + +.layui-nav-item.layui-this { + background-color: #1b1d21; +} + +.layui-width-height { + width: 100%; + height: 95%; +} + +.layui-tab { + margin: 0 0 0 0; + z-index: 99999; +} + +.text-center { + height: 30px !important; + line-height: 30px !important; + text-align: center !important; +} + +.layui-nav { + padding: 0 !important; +} + +.layui-nav .layui-this:after, .layui-nav-bar, .layui-nav-tree .layui-nav-itemed:after { + width: 0 !important; + height: 0 !important; +} + +.layui-layout-admin .layui-side { + top: 60px !important; +} + +.layui-tab-card { + box-shadow: 0px 0px 0px #888888; + border-bottom: 0; +} + + +/**自定义滚动条样式 */ +::-webkit-scrollbar { + display: none +} + + +/*移动端遮罩层*/ +.layuimini-make { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 1000; + background: rgba(0, 0, 0, .5); + display: none; +} + +.layuimini-mini .layui-header { + z-index: 1001; +} + +/**初始化加载层*/ +.layuimini-loader { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: #ffffff; + z-index: 999999; +} + +.layuimini-loader .layuimini-loader-inner { + display: block; + position: relative; + left: 50%; + top: 50%; + width: 150px; + height: 150px; + margin: -75px 0 0 -75px; + border-radius: 50%; + border: 3px solid transparent; + border-top-color: #1E9FFF; + animation: spin 2s linear infinite; +} + +.layuimini-loader .layuimini-loader-inner:before { + content: ""; + position: absolute; + top: 5px; + left: 5px; + right: 5px; + bottom: 5px; + border-radius: 50%; + border: 3px solid transparent; + border-top-color: #1E9FFF; + animation: spin 3s linear infinite; +} + +.layuimini-loader .layuimini-loader-inner:after { + content: ""; + position: absolute; + top: 15px; + left: 15px; + right: 15px; + bottom: 15px; + border-radius: 50%; + border: 3px solid transparent; + border-top-color: #1E9FFF; + animation: spin 1.5s linear infinite; +} + +@keyframes spin { + 0% { + transform: rotate(0deg); + } + to { + transform: rotate(1turn); + } +} + +/*系统设置*/ + +.layuimini-color .layui-word-aux { + position: absolute; + left: 60px; + top: 12px; + font-size: 12px; +} + +.layuimini-color .layui-input-block { + margin-left: 15px; + min-height: 36px; +} + +.layuimini-color .more-menu-list { + width: 100%; + margin-top: 30px; +} + + +.layuimini-color .more-menu-item:first-child { + border-top: 1px solid #e8e8e8; +} + +.layuimini-color .more-menu-item .layui-icon { + font-size: 18px; + padding-right: 10px; +} + +.layuimini-color .more-menu-item { + color: #595959; + height: 50px; + line-height: 50px; + font-size: 16px; + padding: 0 25px; + border-bottom: 1px solid #e8e8e8; + font-style: normal; + display: block; +} + +.layuimini-color .more-menu-item:hover { + background-color: whitesmoke; +} + +.layuimini-color .more-menu-item:after { + color: #8c8c8c; + right: 16px; + content: "\e602"; + position: absolute; + font-family: layui-icon !important; +} + +/** +鼠标右键 + */ +.layuimini-tab-mousedown { + display: none; + width: 80px; + position: absolute; + top: 0px !important; + left: 0px !important; +} + +.layuimini-tab-mousedown dd a { + padding: 0 5px; + color: #484545; +} + +.layuimini-tab-make{ + position: absolute; + top: 36px; + bottom: 0px; + width: 100%; + background: rgb(255, 255, 255,0); + padding: 0px; + overflow: hidden; +} + +/** +菜单缩放 + */ +.popup-tips .layui-layer-TipsG{ + display: none; +} +.popup-tips.layui-layer-tips .layui-layer-content{ + padding: 0; +} +.popup-tips .layui-nav-tree{ + width: 150px; + border-radius: 10px; +} + +/**左侧菜单字体间距*/ +.layuimini-menu-left .layui-nav-item a span { + letter-spacing: 1px; +} + +/**头部菜单字体间距*/ +.layui-layout-admin .layui-header .layuimini-header-menu.layuimini-pc-show,.layui-layout-admin .layui-header .layuimini-header-menu.layuimini-mobile-show { + letter-spacing: 1px; +} + + +/**左侧菜单更多下拉样式*/ +.layuimini-menu-left .layui-nav-more,.layuimini-menu-left-zoom .layui-nav-more { + font-family: layui-icon !important; + font-size: 12px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + overflow: hidden; + width: auto; + height: auto; + line-height: normal; + border: none; + display: inline-block; + margin-top: -6px !important; +} + +.layuimini-menu-left .layui-nav-child .layui-nav-more { + margin-top: -6px !important; +} + +.layuimini-menu-left .layui-nav .layui-nav-mored,.layuimini-menu-left .layui-nav-itemed>a .layui-nav-more{ + margin-top: -9px!important; +} + +.layuimini-menu-left-zoom.layui-nav .layui-nav-mored,.layuimini-menu-left-zoom.layui-nav-itemed>a .layui-nav-more{ + margin-top: -9px!important; +} + +.layuimini-menu-left .layui-nav-more:before,.layuimini-menu-left-zoom .layui-nav-more:before { + content: "\e61a"; +} +.layuimini-menu-left .layui-nav-itemed > a > .layui-nav-more,.layuimini-menu-left-zoom .layui-nav-itemed > a > .layui-nav-more { + transform: rotate(180deg); + -ms-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -webkit-transform: rotate(180deg); + -o-transform: rotate(180deg); + width: 12px; + text-align: center; + border-style:none; +} + +.layuimini-menu-left .layui-nav-itemed > a > .layui-nav-more:before,.layuimini-menu-left-zoom .layui-nav-itemed > a > .layui-nav-more:before { + content: '\e61a'; + background-color: transparent; + display: inline-block; + vertical-align: middle; +} + +/**修复左侧菜单字体不对齐的问题*/ +.layuimini-menu-left .layui-nav-item a .fa,.layuimini-menu-left .layui-nav-item a .layui-icon{ + width: 20px; +} + + +/** + PC版样式 + */ +@media screen and (min-width: 1025px) { + /**头部样式(缩放) */ + .layuimini-mini .layui-layout-left.layuimini-header-menu.layuimini-pc-show { + left: 155px !important; + } + + /**logo演示(缩放) */ + .layuimini-mini .layui-layout-admin .layuimini-logo { + width: 60px !important; + } + + .layuimini-mini .layui-layout-admin .layuimini-logo h1 { + display: none; + } + + /**左侧菜单栏(缩放) */ + .layuimini-mini .layuimini-menu-left { + width: 80px !important; + } + + .layuimini-mini .layui-side.layui-bg-black, .layuimini-mini .layuimini-menu-left > ul, .layuimini-mini .layuimini-menu-left > ul li i { + width: 60px !important; + } + + .layuimini-mini .layuimini-menu-left > ul li span:first-child { + display: none; + } + + .layuimini-mini .layuimini-menu-left > ul li span:last-child { + float: right; + right: 7px; + } + + .layuimini-mini .layuimini-menu-left .layui-nav .layui-nav-item a { + height: 40px; + line-height: 40px; + padding-right: 0px !important; + } + + /**内容主体(缩放) */ + .layuimini-mini .layui-layout-admin .layui-body { + left: 60px !important; + } + + .layuimini-mini .layuimini-tool { + left: 95px !important; + } + + .layuimini-pc-show{ + display: block; + } + .layuimini-mobile-show{ + display: none; + } + + /**菜单缩放*/ + .layuimini-mini .layuimini-menu-left .layui-nav-more,.layuimini-mini .layuimini-menu-left .layui-nav-child{ + display: none;!important; + } +} + +/** + 手机自适应样式 +*/ +@media screen and (max-width: 1024px) { + + /** + 修复低版本IOS不能滑动问题, 但还是有问题, 低版本IOS部分情况下子页面无法自适应 + */ + .layuimini-tab .layui-tab-content .layui-tab-item { + -webkit-overflow-scrolling: touch; + overflow: scroll; + width: 100%; + height: 100%; + } + + .layuimini-tab .layui-tab-content .layui-tab-item iframe { + height: 100%; + width: 100%; + } + + .layuimini-pc-show{ + display: none; + } + .layuimini-mobile-show{ + display: block; + } + .layuimini-header-content { + left: 0; + } + + .layui-layout-admin .layui-body .layui-tab-item.layui-show { + border-top: 1px solid #e2e2e2; + } + + .layuimini-all .layui-layout-left.layuimini-header-menu { + left: 15px !important + } + + .layuimini-mini .layui-layout-left.layuimini-header-menu { + left: 205px !important + } + + .layui-layout-admin .layui-nav.layui-layout-right > li:not(.layuimini-setting) { + width: 40px !important; + } + + .layui-layout-admin .layui-nav.layui-layout-right > li:not(.layuimini-setting) a { + padding: 0 15px; + } + + .layuimini-all .layui-layout-admin .layui-body { + left: 0px !important; + } + + .layuimini-mini .layui-layout-admin .layuimini-menu-left, .layuimini-mini .layui-header .layuimini-logo { + left: 0; + transition: left .2s; + z-index: 1001 !important; + } + + .layuimini-all .layui-layout-admin .layuimini-menu-left, .layuimini-all .layui-header .layuimini-logo { + left: -200px; + transition: left .2s; + top: 0; + z-index: 1002; + } + + .layuimini-mini .layui-layout-admin .layui-body { + left: 0!important; + transition: left .2s; + top: 0; + z-index: 998; + } + + .layuimini-mini .layuimini-make { + display: block; + } + + .layuimini-multi-module .layuimini-header-content .layuimini-tool { + display: none; + } + + .layuimini-single-module .layuimini-header-content .layuimini-tool { + left: 15px; + } + + .layuimini-mini .layuimini-site-mobile { + display: none !important; + } + + .layuimini-site-mobile { + display: block !important; + position: fixed; + z-index: 100000; + bottom: 15px; + left: 15px; + width: 40px; + height: 40px; + line-height: 40px; + border-radius: 2px; + text-align: center; + background-color: rgba(0, 0, 0, .7); + color: #fff; + } + + .layuimini-header-content { + z-index: 997; + } + + /*修复UC之类的浏览器点击无效*/ + .layuimini-make { + cursor: pointer; + } + + .layuimini-site-mobile { + cursor: pointer; + } +} + +@media screen and (max-width: 550px){ + + /**头部右侧数据*/ + .layuimini-multi-module.layuimini-mini .layuimini-header-content .layui-layout-right { + display: none; + } +} diff --git a/ss-admin/src/main/resources/static/css/login.css b/ss-admin/src/main/resources/static/css/login.css new file mode 100644 index 0000000..f68a6d6 --- /dev/null +++ b/ss-admin/src/main/resources/static/css/login.css @@ -0,0 +1,275 @@ +.main-body { + top: 50%; + left: 50%; + position: absolute; + -webkit-transform: translate(-50%, -50%); + -moz-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + -o-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + overflow: hidden; +} + +.login-main .login-bottom .center .item input { + display: inline-block; + width: 227px; + height: 22px; + padding: 0; + position: absolute; + border: 0; + outline: 0; + font-size: 14px; + letter-spacing: 0; +} + +.login-main .login-bottom .center .item .icon-1 { + background: url(/images/icon-login.png) no-repeat 1px 0; +} + +.login-main .login-bottom .center .item .icon-2 { + background: url(/images/icon-login.png) no-repeat -54px 0; +} + +.login-main .login-bottom .center .item .icon-3 { + background: url(/images/icon-login.png) no-repeat -106px 0; +} + +.login-main .login-bottom .center .item .icon-4 { + background: url(/images/icon-login.png) no-repeat 0 -43px; + position: absolute; + right: -10px; + cursor: pointer; +} + +.login-main .login-bottom .center .item .icon-5 { + background: url(/images/icon-login.png) no-repeat -55px -43px; +} + +.login-main .login-bottom .center .item .icon-6 { + background: url(/images/icon-login.png) no-repeat 0 -93px; + position: absolute; + right: -10px; + margin-top: 8px; + cursor: pointer; +} + +.login-main .login-bottom .tip .icon-nocheck { + display: inline-block; + width: 10px; + height: 10px; + border-radius: 2px; + border: solid 1px #9abcda; + position: relative; + top: 2px; + margin: 1px 8px 1px 1px; + cursor: pointer; +} + +.login-main .login-bottom .tip .icon-check { + margin: 0 7px 0 0; + width: 14px; + height: 14px; + border: none; + background: url(/images/icon-login.png) no-repeat -111px -48px; +} + +.login-main .login-bottom .center .item .icon { + display: inline-block; + width: 33px; + height: 22px; +} + +.login-main .login-bottom .center .item { + width: 288px; + height: 35px; + border-bottom: 1px solid #dae1e6; + margin-bottom: 35px; +} + +.login-main { + width: 428px; + position: relative; + float: left; +} + +.login-main .login-top { + height: 87px; + background-color: #148be4; + border-radius: 12px 12px 0 0; + font-family: SourceHanSansCN-Regular; + font-size: 30px; + font-weight: 400; + font-stretch: normal; + letter-spacing: 0; + color: #fff; + line-height: 87px; + text-align: center; + overflow: hidden; + -webkit-transform: rotate(0); + -moz-transform: rotate(0); + -ms-transform: rotate(0); + -o-transform: rotate(0); + transform: rotate(0); +} + +.login-main .login-top .bg1 { + display: inline-block; + width: 74px; + height: 74px; + background: #fff; + opacity: .1; + border-radius: 0 74px 0 0; + position: absolute; + left: 0; + top: 43px; +} + +.login-main .login-top .bg2 { + display: inline-block; + width: 94px; + height: 94px; + background: #fff; + opacity: .1; + border-radius: 50%; + position: absolute; + right: -16px; + top: -16px; +} + +.login-main .login-bottom { + width: 428px; + background: #fff; + border-radius: 0 0 12px 12px; + padding-bottom: 23px; +} + +.login-main .login-bottom .center { + width: 288px; + margin: 0 auto; + padding-top: 30px; + padding-bottom: 0px; + position: relative; +} + +.login-main .login-bottom .tip { + clear: both; + height: 16px; + line-height: 16px; + width: 288px; + margin: 0 auto; +} + +body { + background: url(/images/bg-login.jpg) 0% 0% / cover no-repeat; + position: static; + font-size: 14px; +} + +input::-webkit-input-placeholder { + color: #a6aebf; +} + +input::-moz-placeholder { /* Mozilla Firefox 19+ */ + color: #a6aebf; +} + +input:-moz-placeholder { /* Mozilla Firefox 4 to 18 */ + color: #a6aebf; +} + +input:-ms-input-placeholder { /* Internet Explorer 10-11 */ + color: #a6aebf; +} + +input:-webkit-autofill { /* 取消Chrome记住密码的背景颜色 */ + -webkit-box-shadow: 0 0 0 1000px white inset !important; +} + +html { + height: 100%; +} + +.login-main .login-bottom .tip { + clear: both; + height: 16px; + line-height: 16px; + width: 288px; + margin: 0 auto; +} + +.login-main .login-bottom .tip .login-tip { + font-family: MicrosoftYaHei; + font-size: 14px; + font-weight: 400; + font-stretch: normal; + letter-spacing: 0; + color: #9abcda; + cursor: pointer; +} + +.login-main .login-bottom .tip .forget-password { + font-stretch: normal; + letter-spacing: 0; + color: #1391ff; + text-decoration: none; + position: absolute; + right: 62px; +} + +.login-main .login-bottom .login-btn { + width: 288px; + height: 40px; + background-color: #1E9FFF; + border-radius: 16px; + margin: 24px auto 0; + text-align: center; + line-height: 40px; + color: #fff; + font-size: 14px; + letter-spacing: 0; + cursor: pointer; + border: none; +} + +.login-main .login-bottom .center .item .validateImg { + position: absolute; + right: 1px; + cursor: pointer; + height: 36px; + border: 1px solid #e6e6e6; +} + +.footer { + left: 0; + bottom: 0; + color: #fff; + width: 100%; + position: absolute; + text-align: center; + line-height: 30px; + padding-bottom: 10px; + text-shadow: #000 0.1em 0.1em 0.1em; + font-size: 14px; +} + +.padding-5 { + padding: 5px !important; +} + +.footer a, .footer span { + color: #fff; +} + +@media screen and (max-width: 428px) { + .login-main { + width: 360px !important; + } + + .login-main .login-top { + width: 360px !important; + } + + .login-main .login-bottom { + width: 360px !important; + } +} \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/css/login2/admin.css b/ss-admin/src/main/resources/static/css/login2/admin.css new file mode 100644 index 0000000..f323f31 --- /dev/null +++ b/ss-admin/src/main/resources/static/css/login2/admin.css @@ -0,0 +1,2 @@ +/** EasyWeb iframe v3.1.8 date:2020-05-04 License By http://easyweb.vip */ +*{font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif}body{color:#595959;background-color:#f5f7f9}.layui-layout-body{overflow:auto}.layui-layout-admin{position:absolute;top:0;left:0;right:0;bottom:0;overflow:hidden;-webkit-transition:left .3s,right .3s;transition:left .3s,right .3s}.layui-layout-admin .layui-header{position:absolute;top:0;left:0;right:0;height:50px;background-color:#fff;box-shadow:0 1px 0 0 rgba(0,0,0,.03);z-index:999}.layui-layout-admin .layui-header .layui-logo{color:#ddd;width:235px;line-height:50px;background-color:#191a23;box-shadow:1px 2px 2px 0 rgba(0,0,0,.05);position:relative;vertical-align:top;white-space:nowrap;display:inline-block;-webkit-transition:width .3s;transition:width .3s;overflow:hidden}.layui-layout-admin .layui-header .layui-logo img{height:28px;vertical-align:middle}.layui-layout-admin .layui-header .layui-logo cite{font-style:normal;vertical-align:middle}.layui-layout-admin .layui-header .layui-layout-left{padding:0;vertical-align:top;display:inline-block;position:static!important}.layui-layout-admin .layui-header .layui-layout-right{padding:0}.layui-layout-admin .layui-header .layui-nav .layui-this:after,.layui-layout-admin .layui-header .layui-nav-bar{height:2px;top:0!important;background-color:#191a23}.layui-layout-admin .layui-header .layui-nav .layui-nav-item{line-height:50px;vertical-align:top}.layui-layout-admin .layui-header .layui-nav .layui-nav-item .layui-nav-child{top:55px}.layui-layout-admin .layui-header .layui-nav-item .layui-icon{font-size:16px}.layui-layout-admin .layui-header a{color:#595959;padding:0 15px;cursor:pointer}.layui-layout-admin .layui-header a:hover{color:#595959}.layui-layout-admin .layui-header .layui-nav-child a{color:#595959;text-align:center}.layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-color:#8c8c8c transparent transparent}.layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color:transparent transparent #8c8c8c}.layui-layout-admin .layui-header .layui-nav-img{width:26px;height:26px;margin-right:2px;vertical-align:middle}.layui-layout-admin .layui-header .layui-nav-img+cite{margin-right:3px;vertical-align:middle}.layui-layout-admin .layui-header .layui-badge-dot{right:8px;margin:-10px 0 0 0}.layui-layout-admin .layui-body{position:absolute;left:235px;top:50px;z-index:auto;overflow:auto;-webkit-transition:left .3s;transition:left .3s;-webkit-overflow-scrolling:touch}.admin-iframe{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%}.layui-fluid{padding:15px}.layui-layout-admin .layui-footer{position:absolute;left:235px;background:#fff;box-sizing:border-box;border-top:1px solid #f5f7f9;-webkit-transition:left .3s;transition:left .3s;overflow:hidden}.close-footer .layui-layout-admin .layui-footer{display:none}.close-footer .layui-layout-admin .layui-body{bottom:0}.layui-layout-admin .layui-side{position:absolute;top:50px;width:235px;background-color:#191a23;box-shadow:1px 2px 2px 0 rgba(0,0,0,.05);-webkit-transition:width .3s;transition:width .3s;-webkit-user-select:none;user-select:none;z-index:1000}.layui-layout-admin .layui-side .layui-side-scroll{width:255px;-webkit-transition:width .3s;transition:width .3s}.layui-layout-admin .layui-side .layui-nav{width:235px;background-color:transparent;-webkit-transition:width .3s;transition:width .3s}.layui-layout-admin .layui-side>.layui-side-scroll>.layui-nav:first-child{margin-top:10px}.layui-layout-admin .layui-side .layui-nav .layui-nav-item>a{cursor:pointer;padding-top:5px;padding-bottom:5px}.layui-layout-admin .layui-side .layui-nav .layui-nav-item a{-webkit-transition:color .3s,background-color .3s;transition:color .3s,background-color .3s}.layui-layout-admin .layui-side .layui-nav .layui-nav-more{right:15px}.layui-layout-admin .layui-side .layui-nav .layui-nav-item>.layui-nav-child{position:static}.layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child a{padding-left:50px;cursor:pointer}.layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child .layui-nav-child a{padding-left:70px}.layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child .layui-nav-child .layui-nav-child a{padding-left:90px}.layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child .layui-nav-child .layui-nav-child .layui-nav-child a{padding-left:110px}@media screen and (min-width:769px){.layui-layout-admin.admin-nav-mini .layui-header .layui-logo{width:60px}.layui-layout-admin.admin-nav-mini .layui-header .layui-logo cite{display:none}.layui-layout-admin.admin-nav-mini .layui-header .layui-icon-shrink-right:before{content:"\e66b"}.layui-layout-admin.admin-nav-mini .layui-body,.layui-layout-admin.admin-nav-mini .layui-footer{left:60px}.layui-layout-admin.admin-nav-mini .layui-side,.layui-layout-admin.admin-nav-mini .layui-side .layui-nav{width:60px}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a{overflow:visible}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a>cite,.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a .layui-nav-more,.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-itemed>.layui-nav-child{display:none!important}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav li.layui-nav-itemed>a{background:rgba(0,0,0,.3)}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a>.layui-icon{font-size:16px;-webkit-transition:font-size .3s;transition:font-size .3s}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child{position:fixed;top:60px;left:60px;padding:5px;min-width:150px;display:block!important;background:transparent!important}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{content:'';position:absolute;right:5px;left:5px;bottom:0;top:0;border-radius:4px;background:#191a23;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child dd:first-child>.layui-nav-child{margin-top:-5px}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child dd:last-child>.layui-nav-child.show-top{margin-top:5px}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child>dd>a{padding:0 20px!important}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more{border-color:transparent transparent transparent rgba(255,255,255,.7);right:7px;margin-top:-6px}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav.arrow2 .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more,.layui-layout-admin.admin-nav-mini .layui-side .layui-nav.arrow3 .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more{-o-transform:rotate(0deg);-ms-transform:rotate(0deg);-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg);width:6px;height:10px;right:10px;margin-top:-5px;font-weight:600}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav.arrow2 .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more:before,.layui-layout-admin.admin-nav-mini .layui-side .layui-nav.arrow3 .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more:before{content:"\e602";left:-4px;top:-2px}.layui-layout-admin.admin-nav-mini .layui-side .layui-nav.arrow3 .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more:before{-o-transform:rotate(0deg);-ms-transform:rotate(0deg);-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@media screen and (max-width:768px){.layui-layout-admin{left:-235px}.layui-layout-admin .layui-side,.layui-layout-admin .layui-header .layui-logo{box-shadow:none!important}.layui-layout-admin .layui-header .layui-icon-shrink-right:before{content:"\e66b"}.layui-layout-admin.admin-nav-mini{left:0;right:-235px;position:fixed}.layui-layout-admin.admin-nav-mini .layui-header .layui-icon-shrink-right:before{content:"\e668"}.layui-layout-admin.admin-nav-mini .layui-side,.layui-layout-admin.admin-nav-mini .layui-header .layui-logo{box-shadow:1px 0 2px 0 rgba(0,0,0,.05)}.layui-layout-admin.admin-nav-mini .site-mobile-shade{position:absolute;top:0;right:0;bottom:0;left:235px;background-color:rgba(0,0,0,.25);-webkit-transition:background-color .3s;transition:background-color .3s;cursor:pointer;z-index:1000}}.ew-anim-drop-in{-webkit-animation:ewTransitionDropIn .3s ease-in-out;animation:ewTransitionDropIn .3s ease-in-out;-webkit-transform-origin:0 0;transform-origin:0 0}@-webkit-keyframes ewTransitionDropIn{from{opacity:0;-webkit-transform:scale(0.8)}to{opacity:1;-webkit-transform:scale(1)}}@keyframes ewTransitionDropIn{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:scale(1)}}.layui-nav-tree .layui-nav-bar{display:none}.layui-nav-tree>.layui-nav-item>a:before{content:"";position:absolute;top:0;left:0;bottom:100%;width:4px;background-color:#009688;-webkit-transition:all .3s ease;transition:all .3s ease}.layui-nav-tree>.layui-nav-item:hover>a:before{bottom:0}.layui-nav-tree .layui-nav-item a:hover{background-color:transparent}.layui-nav-tree .layui-this>a:hover{background-color:#009688}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-this{background:transparent}.layui-nav-tree .layui-nav-item .layui-nav-child{padding:5px 0;background-color:rgba(0,0,0,.3)!important}.layui-nav-tree.arrow2 .layui-nav-more{font-family:layui-icon!important;font-size:12px;font-weight:600;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden;line-height:normal;border:0;margin:-3px 0 0 0;padding:0;width:10px;height:6px;top:50%;display:inline-block;-webkit-transition:all .3s ease;transition:all .3s ease}.layui-nav-tree.arrow2 .layui-nav-more:before{content:"\e61a";position:absolute;right:-1px;top:-4px}.layui-nav-tree.arrow2 .layui-nav-itemed>a>.layui-nav-more{-ms-transform:rotate(-180deg);-moz-transform:rotate(-180deg);-webkit-transform:rotate(-180deg);-o-transform:rotate(-180deg);transform:rotate(-180deg)}.layui-nav-tree.arrow3 .layui-nav-more{font-family:layui-icon!important;font-size:12px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden;line-height:normal;border:0;margin:-5px 0 0 0;padding:0;width:10px;height:10px;top:50%;display:inline-block;-webkit-transition:all .3s ease;transition:all .3s ease}.layui-nav-tree.arrow3 .layui-nav-more:before{content:"\e654";position:absolute;top:-2px;left:-1px}.layui-nav-tree.arrow3 .layui-nav-itemed>a>.layui-nav-more{-ms-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}.layui-nav-tree.arrow3 .layui-nav-itemed>a>.layui-nav-more:before{content:'';width:8px;height:2px;background-color:rgba(255,255,255,.7);top:4px;left:1px;-ms-transform:rotate(45deg);-moz-transform:rotate(45deg);-webkit-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.layui-layout-admin .layui-body>.layui-tab{position:absolute;top:0;left:0;right:0;bottom:0;margin:0}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-content{position:absolute;left:0;right:0;bottom:0;top:40px;padding:0}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-content>.layui-tab-item{position:absolute;bottom:0;right:0;top:0;left:0;overflow:auto;-webkit-overflow-scrolling:touch;display:block;visibility:hidden;opacity:0;filter:Alpha(opacity=0)}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-content>.layui-tab-item.layui-show{visibility:visible;opacity:1;filter:Alpha(opacity=100)}.layui-layout-admin.admin-side-flexible .layui-body>.layui-tab>.layui-tab-content>.layui-tab-item{display:none}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title{height:40px;line-height:40px;padding:0 80px 0 40px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.1);position:absolute;top:0;left:0;right:0;border:0;overflow:hidden;-webkit-transition:none;transition:none;z-index:998}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li{min-width:auto;max-width:160px;line-height:40px;padding:0 30px 0 15px;border-right:1px solid #f6f6f6;overflow:hidden;text-overflow:ellipsis;vertical-align:top;-webkit-transition:background-color .2s;transition:background-color .2s}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this,.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li:hover{background-color:#f6f6f6}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{height:2px;border:0;border-radius:0;background-color:#191a23}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li:first-child{padding:0 15px}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li cite{font-style:normal}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title .layui-tab-bar{display:none}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li .layui-tab-close{width:16px;height:16px;line-height:16px;font-size:12px;border-radius:50%;position:absolute;top:12px;right:8px;-webkit-transition:background-color .2s,color .2s;transition:background-color .2s,color .2s}.layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li:first-child .layui-tab-close{display:none}.admin-tabs-control{position:absolute;top:0;width:40px;height:40px;line-height:40px;background-color:#fff;border-left:1px solid #f6f6f6;-webkit-transition:background-color .2s;transition:background-color .2s;text-align:center;cursor:pointer;z-index:998}.admin-tabs-control:hover{background-color:#f6f6f6}.admin-tabs-control.layui-icon-prev{left:0;border-left:none;border-right:1px solid #f6f6f6}.admin-tabs-control.layui-icon-next{right:40px}.admin-tabs-control.layui-icon-down{right:0}.admin-tabs-control>.layui-nav,.admin-tabs-control>.layui-nav .layui-nav-item{position:absolute;top:0;left:0;padding:0;width:100%;height:100%;background:transparent}.admin-tabs-control>.layui-nav .layui-nav-child{right:0;top:40px;left:auto}.admin-tabs-control>.layui-nav .layui-nav-child a{color:#595959}.admin-tabs-control>.layui-nav .layui-nav-bar,.admin-tabs-control>.layui-nav .layui-nav-more{display:none}.layui-body-header{padding:0 20px;height:40px;line-height:40px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.1);box-sizing:border-box;position:absolute;left:0;right:0;z-index:998;display:none}.layui-body-header.show{display:block}.layui-body-header-title{padding-left:6px;border-left:4px solid #009688}.layui-body-header.show+div{position:absolute;left:0;right:0;top:40px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}.hide-body-title .layui-body-header.show{display:none}.hide-body-title .layui-body-header.show+div{top:0}.layui-layout-admin .layui-body>.page-loading,.layui-layout-admin .layui-body>.layui-tab>.layui-tab-content>.layui-tab-item>.page-loading,.layui-layout-admin .layui-body>div>iframe[lay-id]+.page-loading{z-index:997}.layui-layer.layui-layer-adminRight{bottom:0;top:50px!important;border:none!important;box-shadow:1px 1px 50px rgba(0,0,0,.3)!important;overflow:auto}.layui-layer.layui-layer-adminRight>.layui-layer-content,.layui-layer.layui-layer-adminRight>.layui-layer-content>iframe{height:100%!important}.layui-layer.layui-layer-adminRight>.layui-layer-title+.layui-layer-content{position:absolute;top:43px;left:0;right:0;bottom:0;height:auto!important}.layui-anim-rl{-webkit-animation-name:layui-rl;animation-name:layui-rl}@-webkit-keyframes layui-rl{from{-webkit-transform:translate3d(100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@keyframes layui-rl{from{transform:translate3d(100%,0,0)}to{transform:translate3d(0,0,0)}}.layui-anim-lr,.layui-anim-rl.layer-anim-close{-webkit-animation-name:layui-lr;animation-name:layui-lr}@-webkit-keyframes layui-lr{from{-webkit-transform:translate3d(0,0,0);opacity:1}to{-webkit-transform:translate3d(100%,0,0);opacity:1}}@keyframes layui-lr{from{transform:translate3d(0,0,0)}to{transform:translate3d(100%,0,0)}}.layui-layer.layui-layer-admin{border:none!important;box-shadow:1px 1px 50px rgba(0,0,0,.3)!important}.layui-layer.layui-layer-admin .layui-layer-title{color:#fff;height:50px;line-height:50px;background-color:#191a23;border:0}.layui-layer.layui-layer-admin .layui-layer-setwin{top:17px}.layui-layer.layui-layer-admin .layui-layer-setwin a{color:#fff;font-size:16px;font-style:normal;font-family:layui-icon!important;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-close1{background:0;margin-top:-1px}.layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-close1:before{content:"\1006"}.layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-min cite{background-color:#ddd}.layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-max{font-size:14px;padding-top:1px;background:0}.layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-max:before{content:"\e622"}.layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-maxmin:before{content:"\e758"}.layui-layer.layui-layer-admin .layui-layer-btn{padding-bottom:15px}.layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#009688;background-color:#009688}.layui-layer.layui-layer-admin .layui-layer-btn a{height:34px;line-height:34px}.layui-layer-admin{max-width:100%}.layui-layer-iframe .layui-layer-content{overflow:auto;-webkit-overflow-scrolling:touch}@media screen and (max-width:768px){.layui-layer-admin{max-width:98%;max-width:-webkit-calc(100% - 30px);max-width:-moz-calc(100% - 30px);max-width:calc(100% - 30px);width:max-content;left:0!important;right:0!important;margin:auto!important;margin-bottom:15px!important}.layui-layer-admin[area]{max-width:100%;margin-bottom:0!important}}body .layui-layer-msg{border:0;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,0.1)}body .layui-layer-load{background:transparent}.page-loading{position:absolute;display:block;width:100%;height:100%;top:0;left:0;right:0;bottom:0;z-index:19891017;background-color:#fff}body>.page-loading{position:fixed;background-color:#f5f7f9}.layui-layout-admin>.layui-body>.layui-tab>.layui-tab-content>.layui-tab-item>.page-loading,.layui-layout-admin>.layui-body>.page-loading,.layui-layout-admin>.layui-body>div>iframe[lay-id]+.page-loading{background-color:#f5f7f9}.layui-layout-admin>.layui-body>.layui-body-header.show+div+.page-loading{top:40px;height:auto}.page-no-scroll{overflow-x:hidden!important;overflow-y:hidden!important;min-height:80px}.rubik-loader,.ball-loader,.signal-loader,.layui-loader{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.ball-loader>span,.signal-loader>span{background-color:#4aca85;display:inline-block}.ball-loader>span:nth-child(1),.ball-loader.sm>span:nth-child(1),.signal-loader>span:nth-child(1),.signal-loader.sm>span:nth-child(1){-webkit-animation-delay:0s;animation-delay:0s}.ball-loader>span:nth-child(2),.ball-loader.sm>span:nth-child(2),.signal-loader>span:nth-child(2),.signal-loader.sm>span:nth-child(2){-webkit-animation-delay:.1s;animation-delay:.1s}.ball-loader>span:nth-child(3),.ball-loader.sm>span:nth-child(3),.signal-loader>span:nth-child(3),.signal-loader.sm>span:nth-child(3){-webkit-animation-delay:.15s;animation-delay:.15s}.ball-loader>span:nth-child(4),.ball-loader.sm>span:nth-child(4),.signal-loader>span:nth-child(4),.signal-loader.sm>span:nth-child(4){-webkit-animation-delay:.2s;animation-delay:.2s}.rubik-loader{width:64px;height:64px;background-image:url(img/ic_loading.gif);background-repeat:no-repeat;background-position:center;background-size:contain}.rubik-loader.sm{width:50px;height:50px}.ball-loader>span{width:20px;height:20px;margin:0 3px;border-radius:50%;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-animation:1s ball-load ease-in-out infinite;animation:ball-load 1s ease-in-out infinite}@-webkit-keyframes ball-load{0%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}100%{-webkit-transform:scale(0)}}@keyframes ball-load{0%{transform:scale(0)}50%{transform:scale(1)}100%{transform:scale(0)}}.ball-loader.sm>span{width:15px;height:15px;margin:0 2px}.signal-loader{width:50px;height:22px}.signal-loader>span{width:8px;height:0;position:absolute;bottom:0;left:0;margin:0;-webkit-animation:signal-load 1s infinite;animation:signal-load 1s infinite}.signal-loader>span:nth-child(2){left:14px}.signal-loader>span:nth-child(3){left:28px}.signal-loader>span:nth-child(4){left:42px}@-webkit-keyframes signal-load{0%{height:0}50%{height:22px}100%{height:0}}@keyframes signal-load{0%{height:0}50%{height:22px}100%{height:0}}.signal-loader.sm{width:32px;height:15px}.signal-loader.sm>span{width:5px;-webkit-animation:signal-load-sm 1s infinite;animation:signal-load-sm 1s infinite}.signal-loader.sm>span:nth-child(2){left:9px}.signal-loader.sm>span:nth-child(3){left:18px}.signal-loader.sm>span:nth-child(4){left:27px}@-webkit-keyframes signal-load-sm{0%{height:0}50%{height:15px}100%{height:0}}@keyframes signal-load-sm{0%{height:0}50%{height:15px}100%{height:0}}.layui-loader .layui-icon{font-size:36px;color:#bbb}.layui-loader.sm .layui-icon{font-size:30px}.layui-form.toolbar .layui-form-item,.layui-form.toolbar .layui-form-item .layui-inline>.layui-input-inline{margin-bottom:0}.layui-form.toolbar .layui-form-item .layui-inline{margin-bottom:10px}.toolbar+.layui-table,.layui-card-body>.layui-table,.toolbar+table+.layui-table-view,.layui-card-body>.layui-table-view,.toolbar+table+.ew-tree-table{margin:0}.mr0,.layui-form.toolbar .layui-form-item .layui-inline>.layui-input-inline{margin-right:0!important}.w-auto{width:auto!important}.model-form{padding:25px 30px 0 0}.model-form.no-padding{padding:0}.model-form .model-form-body{overflow-y:auto;padding:25px 30px 0 0;max-height:calc(100vh - 180px)}.model-form.no-padding .model-form-footer{padding-top:10px;padding-right:30px}.layui-form.model-form>.layui-form-item:last-child{margin-bottom:0;padding-bottom:20px}.layui-form-required:before{content:"*";display:inline-block;font-family:SimSun;margin-right:4px;font-size:14px;line-height:1;color:#ed4014}.layui-input,.layui-textarea{color:#595959}.layui-form-select .layui-input{padding-right:0}.layui-form-select-top .layui-form-select>dl{top:auto;bottom:42px}.ew-select-fixed .layui-form-selected dl{position:fixed;min-width:auto;bottom:auto;right:auto}body .layui-form-checked[lay-skin=primary] i,body .layui-form-checked[lay-skin=primary]:hover i{color:#fff}body .layui-form-checkbox[lay-skin=primary] span,body .layui-form-checkbox[lay-skin=primary]:hover span{background-color:transparent}body .layui-form-danger+.layui-form-select .layui-input,body .layui-input.layui-form-danger:focus,body .layui-textarea.layui-form-danger:focus{border-color:#ff5722!important}body .layui-laypage input.layui-input{height:30px;line-height:30px}body .layui-table-page .layui-laypage input.layui-input{height:26px;line-height:26px}body .layui-form-onswitch em{margin-left:3px;margin-right:18px}.layui-btn{-webkit-transition:background-color .2s;transition:background-color .2s}body .layui-btn.layui-btn-radius{border-radius:100px}.layui-btn-primary{color:#595959;border-color:#e6e6e6}.layui-btn-primary:hover{border-color:#bbb}.layui-btn-group .layui-btn-primary:hover{border-color:#e6e6e6}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #e6e6e6}body .layui-btn.layui-btn-disabled,body .layui-transfer-active .layui-btn.layui-btn-disabled{background-color:#fbfbfb!important;border-color:#e6e6e6!important;color:#c9c9c9!important}body .layui-btn.layui-btn-primary{background-color:#fff}body .layui-btn.layui-btn-normal{background-color:#1e9fff}body .layui-btn.layui-btn-warm{background-color:#ffb800}body .layui-btn.layui-btn-danger{background-color:#ff5722}.layui-btn-group>.layui-btn+.layui-btn{border-radius:0}.layui-btn-group>.layui-btn:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px}body .layui-transfer-active .layui-btn{background-color:#5fb878!important;border-color:#5fb878!important;color:#fff!important}.btn-circle{width:50px;height:50px;line-height:50px;border-radius:50%;background:#009688;position:fixed;right:15px;bottom:15px;color:#fff;text-align:center;box-shadow:0 0 8px rgba(0,0,0,.2);cursor:pointer}.btn-circle:hover{color:#fff;opacity:.8}.btn-circle .layui-icon{font-size:24px}.icon-date,.date-icon{background-image:url(img/icon_date.png);background-repeat:no-repeat;background-position:right center;padding-right:28px}.icon-search{background-image:url(img/icon_search.png);background-repeat:no-repeat;background-position:right center;padding-right:26px}span.icon-text>.layui-icon,a.icon-text>.layui-icon,.layui-form-label.icon-text>.layui-icon{font-size:14px;margin:0 2px}.layui-btn.icon-btn{padding:0 10px}.layui-btn.layui-btn-sm.icon-btn{padding:0 6px}.bg-white,html.bg-white>body{background-color:white}[ew-href],[lay-tips]{cursor:pointer}.inline-block{display:inline-block}.pull-right{float:right}.pull-left{float:left}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-primary,.layui-link{color:#009688!important}.text-success{color:#5fb878!important}.text-warning{color:#ffb800!important}.text-danger{color:#ff5722!important}.text-info{color:#01aaed!important}.text-muted{color:#c2c2c2!important}.layui-text a:not(.layui-btn){color:#2d8cf0;cursor:pointer}.layui-text a:not(.layui-btn):hover{text-decoration:none}.ew-console-wrapper .layui-card{box-shadow:none;border-radius:4px}.layui-card-header{color:#595959}.lay-big-font{font-size:36px;line-height:36px;padding:5px 0 10px;overflow:hidden;white-space:nowrap;word-break:break-all;text-overflow:ellipsis}.no-scrollbar{overflow-x:hidden!important;overflow-y:hidden!important}input.layui-disabled,input.layui-disabled:hover,textarea.layui-disabled,textarea.layui-disabled:hover{color:#595959!important;background-color:#f6f6f6}.layui-input::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{color:#ccc}.layui-input::-moz-placeholder,.layui-textarea::-moz-placeholder{color:#ccc}.layui-input::-ms-input-placeholder,.layui-textarea::-ms-input-placeholder{color:#ccc}.dropdown-menu{display:inline-block}.dropdown-menu .dropdown-menu-nav{display:none}.dropdown-menu+.dropdown-menu,.layui-btn+.dropdown-menu,.dropdown-menu+.layui-btn{margin-left:10px}::-webkit-scrollbar{width:10px;height:10px;background:transparent}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{border-radius:5px;background-color:#c1c1c1}::-webkit-scrollbar-thumb:hover{background-color:#a8a8a8}.mini-bar::-webkit-scrollbar{width:6px;height:6px}.mini-bar::-webkit-scrollbar-thumb{border-radius:3px}@media screen and (max-width:768px){::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-thumb{border-radius:0}}#ew-map-select-map{height:450px}#ew-map-select-pois{height:450px;overflow-x:hidden;overflow-y:auto}.ew-map-select-search-list-item{padding:10px 30px 10px 15px;border-bottom:1px solid #e8e8e8;cursor:pointer;position:relative}.ew-map-select-search-list-item:hover{background:#f2f2f2}.ew-map-select-search-list-item:last-child{border-bottom:0}.ew-map-select-search-list-item .ew-map-select-search-list-item-title{font-size:14px;color:#262626}.ew-map-select-search-list-item .ew-map-select-search-list-item-address{font-size:12px;color:#595959;padding-top:5px}.ew-map-select-search-list-item-icon-ok{position:absolute;right:15px;top:50%;transform:translateY(-50%)}.ew-map-select-search-list-item-icon-ok .layui-icon{color:#3b74ff}.ew-map-select-tool{padding:5px 15px;box-shadow:0 1px 0 0 rgba(0,0,0,.05)}#ew-map-select-center-img{position:absolute;bottom:50%;left:50%;width:26px;margin-left:-13px}#ew-map-select-center-img2{position:absolute;left:50%;top:50%;font-size:12px;display:inline-block;margin-left:-6px;margin-top:-7px;color:#3b74ff}.bounceInDown{animation:bounceInDown 500ms;animation-direction:alternate;-webkit-animation:bounceInDown 500ms;-webkit-animation-direction:alternate}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%,to{-webkit-transform:translate3d(0,0,0)}25%{-webkit-transform:translate3d(0,-30px,0)}50%{-webkit-transform:translate3d(0,-15px,0)}75%{-webkit-transform:translate3d(0,-4px,0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%,to{transform:translate3d(0,0,0)}25%{transform:translate3d(0,-10px,0)}50%{transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,-10px,0)}}#ew-map-select-tips{position:absolute;z-index:999;background:#fff;max-height:430px;overflow:auto;top:48px;left:56px;width:280px;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #d2d2d2}#ew-map-select-tips .ew-map-select-search-list-item{padding:10px 15px 10px 35px}.ew-map-select-search-list-item-icon-search{position:absolute;left:10px;top:50%;transform:translateY(-50%)}.ew-map-select-search-list-item-icon-search .layui-icon{color:#8c8c8c}.table-tool-mini .layui-table-view{position:relative}.table-tool-mini .layui-table-tool{position:absolute;min-height:unset;height:auto;padding:3px 10px;width:auto;top:-38px;right:-1px;border-top-right-radius:8px;border-top-left-radius:8px;border:1px solid #e6e6e6;border-bottom:0}.table-tool-mini .layui-table-tool .layui-table-tool-temp{padding-right:0;display:inline-block}.table-tool-mini .layui-table-tool .layui-table-tool-self{position:static;display:inline-block}.table-tool-mini .layui-table-tool .layui-table-tool-self .layui-inline[lay-event]:first-child{margin:0}.table-tool-mini.full-table .layui-table-tool{top:-35px;height:1px;padding:0 10px;background:transparent;border:0}.table-tool-mini.full-table .layui-table-tool:before{content:"";position:absolute;top:-3px;right:0;left:0;height:36px;background-color:#f2f2f2;border-top-right-radius:8px;border-top-left-radius:8px;border:1px solid #e6e6e6;border-bottom:0}@media screen and (max-width:768px){.layui-laydate-range{left:0!important;top:0!important;right:0!important;margin:10px auto!important;max-width:95%}.layui-laydate-range .layui-laydate-main,.layui-laydate-range .layui-laydate-content table{width:100%}.layui-laydate-range .laydate-main-list-0 .laydate-next-m,.layui-laydate-range .laydate-main-list-0 .laydate-next-y,.layui-laydate-range .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range .laydate-main-list-1 .laydate-prev-y{display:inline-block!important}.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-top:1px solid #e2e2e2}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content{border-left:none!important}.layui-laydate-range .laydate-time-list ol li{padding-left:0!important;text-align:center}.layui-laydate-range .laydate-time-list ol{overflow:auto!important}}.layui-tree-spread>div>div>span>.layui-tree-iconArrow:after{border-color:#c0c4cc transparent transparent transparent;top:6px;left:0}.layui-tree .layui-tree-iconArrow:after{transition:none}.ew-tb-cell-ck .layui-form-checkbox[lay-skin=primary]{padding-left:22px}.ew-tb-cell-ck .layui-form-checkbox[lay-skin=primary] span{padding-right:5px}.ew-field-group>.layui-elem-field{border-bottom:0;margin:0}.ew-field-group>.ew-field-box{border:1px solid #e6e6e6;padding:10px 15px;border-top:0}body .layui-elem-quote.layui-quote-nm{border-color:#e6e6e6}.layui-card>.layui-tab-brief>.layui-tab-title li{padding:0 5px;margin:0 10px;line-height:43px;height:43px;transition:color .2s;-webkit-transition:color .2s}.layui-card>.layui-tab-brief>.layui-tab-title li:after{height:43px}.layui-card>.layui-tab-brief>.layui-tab-title{border-bottom-color:#f6f6f6;height:42px;transition:none;-webkit-transition:none}.layui-card>.layui-tab-brief>.layui-tab-content{padding:10px 15px}.layui-tab.layui-tab-vertical{position:relative}.layui-tab.layui-tab-vertical:after{content:"";clear:both;display:block}.layui-tab.layui-tab-vertical>.layui-tab-title{width:130px;height:auto;border:0;border-right:1px solid #e9e9e9;box-sizing:border-box;padding:10px 0;float:left}.layui-tab.layui-tab-vertical>.layui-tab-title>li{display:block;margin-right:-1px;border-right:2px solid transparent;white-space:normal;line-height:normal;padding:10px 20px;text-align:right}.layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-right:2px solid #5fb878;color:#5fb878}.layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this:after{display:none}.layui-tab.layui-tab-vertical>.layui-tab-title>li>.layui-icon{font-size:14px;margin-right:5px}.layui-tab.layui-tab-vertical>.layui-tab-content{margin-left:130px}.layui-tab.layui-tab-vertical.layui-tab-vertical-right>.layui-tab-title{float:right;border-right:0;border-left:1px solid #e9e9e9}.layui-tab.layui-tab-vertical.layui-tab-vertical-right>.layui-tab-content{margin-left:0;margin-right:130px}.layui-tab.layui-tab-vertical.layui-tab-vertical-right>.layui-tab-title>li{text-align:left;border-left:2px solid transparent;border-right:0}.layui-tab.layui-tab-vertical.layui-tab-vertical-right>.layui-tab-title>li.layui-this{border-left:2px solid #5fb878}.layui-tab.layui-tab-vertical.layui-tab-vertical-full>.layui-tab-title{position:absolute;top:0;left:0;right:auto;min-height:100%}.layui-tab.layui-tab-vertical.layui-tab-vertical-right.layui-tab-vertical-full>.layui-tab-title{right:0;left:auto}.ew-btn-loading{opacity:.8;pointer-events:none;font-size:0!important}.ew-btn-loading *{display:none!important}.ew-btn-loading>.ew-btn-loading-text{font-size:14px!important;display:inline-block!important}.ew-btn-loading.layui-btn-sm>.ew-btn-loading-text,.ew-btn-loading.layui-btn-xs>.ew-btn-loading-text{font-size:12px!important}.ew-btn-loading.layui-btn-lg>.ew-btn-loading-text{font-size:16px!important}.ew-btn-loading>.ew-btn-loading-text *{display:inline-block!important}.form-search-expand,.form-search-expand:hover{padding:0!important;color:#2d8cf0!important;border:none!important;box-shadow:none!important;background-color:transparent!important}.form-search-expand .layui-icon{font-size:12px!important;font-weight:600!important}.form-search-show-expand{display:none!important}.layui-badge-green{color:#52c41a;background:#f6ffed;border:1px solid #b7eb8f}.layui-badge-blue{color:#1890ff;background:#e6f7ff;border:1px solid #91d5ff}.layui-badge-red{color:#f5222d;background:#fff1f0;border:1px solid #ffa39e}.layui-badge-yellow{color:#faad14;background:#fffbe6;border:1px solid #ffe58f}.layui-badge-gray{color:#8c8c8c;background:#fafafa;border:1px solid #ccc}.layui-badge{height:20px;line-height:19px;box-sizing:border-box}.layui-badge-list .layui-badge{height:23px;line-height:22px;margin:0 6px 8px 0}.layui-badge-list .layui-badge.layui-bg-gray{border:1px solid #ccc;background-color:#fafafa!important}.layui-card .layui-card-header .layui-badge.pull-right{top:50%;margin-top:-10px}#ew-lock-screen-group{position:fixed;top:0;left:0;right:0;bottom:0;z-index:19891099}.ios-iframe-body{position:absolute;top:0;left:0;right:0;bottom:0}xm-select>.xm-body{margin-left:-2px}xm-select>.xm-body .xm-option{background-color:transparent!important}xm-select>.xm-body .xm-option.hide-icon.selected{background-color:#5fb878!important}xm-select>.xm-body .xm-option:hover{background-color:#f2f2f2!important}.xm-body .xm-tree{min-width:200px}.xm-body .xm-tree .xm-option-content{padding-left:6px}xm-select{border-color:#e6e6e6!important}xm-select:hover{border-color:#d2d2d2!important}xm-select[style="border-color: rgb(229, 77, 66);"]{border-color:#e54d42!important}body .ew-xmselect-tree xm-select .xm-body .xm-option .xm-option-icon{position:absolute;left:30px;top:0;right:0;bottom:0;width:auto;height:auto;border:none!important;z-index:1}body .ew-xmselect-tree xm-select .xm-body .xm-option .xm-option-icon:before{display:none}body .ew-xmselect-tree xm-select .xm-body .xm-option.selected{background-color:#f2f2f2!important}body .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#5fb878!important}.theme-blue .layui-layout-admin .layui-header .layui-logo{color:#fff;box-shadow:none;background-color:transparent}.theme-blue .layui-layout-admin .layui-header{background-color:#3c8dbc}.theme-blue .layui-layout-admin .layui-header a{color:#fff}.theme-blue .layui-layout-admin .layui-header a:hover{color:#fff}.theme-blue .layui-layout-admin .layui-header .layui-nav-child a{color:#595959}.theme-blue .layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-color:#eee transparent transparent}.theme-blue .layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color:transparent transparent #eee}.theme-blue .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-blue .layui-layout-admin .layui-header .layui-nav-bar{background-color:#fff}.theme-blue .layui-layout-admin .layui-side{background-color:#222d32}.theme-blue .layui-side .layui-nav .layui-nav-item a{color:#b8c7ce}.theme-blue .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-blue .layui-nav-tree .layui-this>a,.theme-blue .layui-nav-tree .layui-this>a:hover{color:#fff;background-color:#3c8dbc}.theme-blue .layui-nav-tree>.layui-nav-item>a:before{background-color:#3c8dbc}.theme-blue .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#222d32!important}.theme-blue .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{background-color:#3c8dbc;top:38px}.theme-blue .layui-body-header-title{border-left-color:#3c8dbc}.theme-blue .layui-layer.layui-layer-admin .layui-layer-title{background-color:#3c8dbc}.theme-blue .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#3c8dbc;background-color:#3c8dbc}.theme-blue .ball-loader>span,.theme-blue .signal-loader>span{background-color:#3c8dbc}.theme-blue .btn-circle{background:#3c8dbc}.theme-blue .more-theme-item:hover,.theme-blue .more-theme-item.active{border-color:#3c8dbc}.theme-blue .text-primary,.theme-blue .layui-link{color:#3c8dbc!important}.theme-blue .layui-btn{background-color:#3c8dbc}.theme-blue .layui-form-onswitch{border-color:#3c8dbc;background-color:#3c8dbc}.theme-blue .layui-form-radio>i:hover,.theme-blue .layui-form-radioed>i,.theme-blue .layui-form-checked i,.theme-blue .layui-form-checked:hover i{color:#3c8dbc}.theme-blue .layui-form-checked[lay-skin=primary] i,.theme-blue .layui-form-checked span,.theme-blue .layui-form-checked:hover span{border-color:#3c8dbc!important;background-color:#3c8dbc}.theme-blue .layui-form-checked[lay-skin=primary] i:hover,.theme-blue .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#3c8dbc!important}.theme-blue .layui-form-select dl dd.layui-this{background-color:#3c8dbc}.theme-blue .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#3c8dbc}.theme-blue .layui-laypage input:focus,.theme-blue .layui-laypage select:focus{border-color:#3c8dbc!important}.theme-blue .layui-laypage a:hover{color:#3c8dbc}.theme-blue .layui-tab-brief>.layui-tab-title .layui-this{color:#3c8dbc}.theme-blue .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-blue .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#3c8dbc!important}.theme-blue .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#3c8dbc;color:#3c8dbc}.theme-blue .layui-breadcrumb a:hover{color:#3c8dbc!important}.theme-blue .layui-laydate-footer span:hover,.theme-blue .layui-laydate-header i:hover,.theme-blue .layui-laydate-header span:hover{color:#3c8dbc}.theme-blue .layui-laydate .layui-this{background-color:#3c8dbc!important}.theme-blue .layui-laydate-content td.laydate-selected{background-color:rgba(60,141,188,.1)}.theme-blue .laydate-selected:hover{background-color:rgba(60,141,188,.1)!important}.theme-blue .layui-timeline-axis{color:#3c8dbc}.theme-blue .layui-transfer-active .layui-btn{background-color:#3c8dbc!important;border-color:#3c8dbc!important}.theme-blue .layui-progress-bar{background-color:#3c8dbc}.theme-blue .layui-slider-bar{background-color:#3c8dbc!important}.theme-blue .layui-slider-wrap-btn{border-color:#3c8dbc!important}.theme-blue .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#3c8dbc}.theme-blue .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-blue .layui-elem-quote{border-color:#3c8dbc}.theme-blue .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-blue .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#3c8dbc}.theme-blue .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#9dc6dd}.theme-blue .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#3c8dbc}.theme-blue .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#9dc6dd!important}.theme-blue .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#3c8dbc!important}.theme-blue .ew-cascader-dropdown-list-item.active,.theme-blue .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#3c8dbc}.theme-blue div.tagsinput span.tag{background:#3c8dbc}.theme-blue xm-select .xm-body .xm-option .xm-option-icon{border-color:#3c8dbc!important}.theme-blue xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-blue xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-blue .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#3c8dbc!important}.theme-blue xm-select .xm-label .xm-label-block,.theme-blue xm-select .xm-body .xm-option.hide-icon.selected{background-color:#3c8dbc!important}.theme-blue .city-select a.active{color:#fff!important;background-color:#3c8dbc!important}.theme-blue .city-select a:hover,.theme-blue .city-select a:focus{background-color:rgba(60,141,188,.1);color:#3c8dbc}.theme-blue .city-picker-span>.title>span:hover{background-color:rgba(60,141,188,.1)}.theme-blue .city-select-tab>a.active{color:#3c8dbc}.theme-green .layui-layout-admin .layui-header .layui-logo{color:#fff;box-shadow:none;background-color:transparent}.theme-green .layui-layout-admin .layui-header{background-color:#00a65a}.theme-green .layui-layout-admin .layui-header a{color:#fff}.theme-green .layui-layout-admin .layui-header a:hover{color:#fff}.theme-green .layui-layout-admin .layui-header .layui-nav-child a{color:#595959}.theme-green .layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-color:#eee transparent transparent}.theme-green .layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color:transparent transparent #eee}.theme-green .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-green .layui-layout-admin .layui-header .layui-nav-bar{background-color:#fff}.theme-green .layui-layout-admin .layui-side{background-color:#222d32}.theme-green .layui-side .layui-nav .layui-nav-item a{color:#b8c7ce}.theme-green .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-green .layui-nav-tree .layui-this>a,.theme-green .layui-nav-tree .layui-this>a:hover{color:#fff;background-color:#00a65a}.theme-green .layui-nav-tree>.layui-nav-item>a:before{background-color:#00a65a}.theme-green .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#222d32!important}.theme-green .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{background-color:#00a65a;top:38px}.theme-green .layui-body-header-title{border-left-color:#00a65a}.theme-green .layui-layer.layui-layer-admin .layui-layer-title{background-color:#00a65a}.theme-green .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#00a65a;background-color:#00a65a}.theme-green .more-theme-item:hover,.theme-green .more-theme-item.active{border-color:#00a65a}.theme-green .btn-circle{background:#00a65a}.theme-green .ball-loader>span,.theme-green .signal-loader>span{background-color:#00a65a}.theme-green .text-primary,.theme-green .layui-link{color:#00a65a!important}.theme-green .layui-btn{background-color:#00a65a}.theme-green .layui-form-onswitch{border-color:#00a65a;background-color:#00a65a}.theme-green .layui-form-radio>i:hover,.theme-green .layui-form-radioed>i,.theme-green .layui-form-checked i,.theme-green .layui-form-checked:hover i{color:#00a65a}.theme-green .layui-form-checked[lay-skin=primary] i,.theme-green .layui-form-checked span,.theme-green .layui-form-checked:hover span{border-color:#00a65a!important;background-color:#00a65a}.theme-green .layui-form-checked[lay-skin=primary] i:hover,.theme-green .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#00a65a!important}.theme-green .layui-form-select dl dd.layui-this{background-color:#00a65a}.theme-green .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#00a65a}.theme-green .layui-laypage input:focus,.theme-green .layui-laypage select:focus{border-color:#00a65a!important}.theme-green .layui-laypage a:hover{color:#00a65a}.theme-green .layui-tab-brief>.layui-tab-title .layui-this{color:#00a65a}.theme-green .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-green .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#00a65a!important}.theme-green .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#00a65a;color:#00a65a}.theme-green .layui-breadcrumb a:hover{color:#00a65a!important}.theme-green .layui-laydate-footer span:hover,.theme-green .layui-laydate-header i:hover,.theme-green .layui-laydate-header span:hover{color:#00a65a}.theme-green .layui-laydate .layui-this{background-color:#00a65a!important}.theme-green .layui-laydate-content td.laydate-selected{background-color:rgba(0,166,90,.1)}.theme-green .laydate-selected:hover{background-color:rgba(0,166,90,.1)!important}.theme-green .layui-timeline-axis{color:#00a65a}.theme-green .layui-transfer-active .layui-btn{background-color:#00a65a!important;border-color:#00a65a!important}.theme-green .layui-progress-bar{background-color:#00a65a}.theme-green .layui-slider-bar{background-color:#00a65a!important}.theme-green .layui-slider-wrap-btn{border-color:#00a65a!important}.theme-green .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#00a65a}.theme-green .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-green .layui-elem-quote{border-color:#00a65a}.theme-green .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-green .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#00a65a}.theme-green .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#7fd2ac}.theme-green .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#00a65a}.theme-green .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#7fd2ac!important}.theme-green .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#00a65a!important}.theme-green .ew-cascader-dropdown-list-item.active,.theme-green .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#00a65a}.theme-green div.tagsinput span.tag{background:#00a65a}.theme-green xm-select .xm-body .xm-option .xm-option-icon{border-color:#00a65a!important}.theme-green xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-green xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-green .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#00a65a!important}.theme-green xm-select .xm-label .xm-label-block,.theme-green xm-select .xm-body .xm-option.hide-icon.selected{background-color:#00a65a!important}.theme-green .city-select a.active{color:#fff!important;background-color:#00a65a!important}.theme-green .city-select a:hover,.theme-green .city-select a:focus{background-color:rgba(0,166,90,.1);color:#00a65a}.theme-green .city-picker-span>.title>span:hover{background-color:rgba(0,166,90,.1)}.theme-green .city-select-tab>a.active{color:#00a65a}.theme-purple .layui-layout-admin .layui-header .layui-logo{color:#fff;box-shadow:none;background-color:transparent}.theme-purple .layui-layout-admin .layui-header{background-color:#722ed1}.theme-purple .layui-layout-admin .layui-header a{color:#fff}.theme-purple .layui-layout-admin .layui-header a:hover{color:#fff}.theme-purple .layui-layout-admin .layui-header .layui-nav-child a{color:#595959}.theme-purple .layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-color:#eee transparent transparent}.theme-purple .layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color:transparent transparent #eee}.theme-purple .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-purple .layui-layout-admin .layui-header .layui-nav-bar{background-color:#fff}.theme-purple .layui-layout-admin .layui-side{background-color:#222d32}.theme-purple .layui-side .layui-nav .layui-nav-item a{color:#b8c7ce}.theme-purple .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-purple .layui-nav-tree .layui-this>a,.theme-purple .layui-nav-tree .layui-this>a:hover{color:#fff;background-color:#722ed1}.theme-purple .layui-nav-tree>.layui-nav-item>a:before{background-color:#722ed1}.theme-purple .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#222d32!important}.theme-purple .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{background-color:#722ed1;top:38px}.theme-purple .layui-body-header-title{border-left-color:#722ed1}.theme-purple .layui-layer.layui-layer-admin .layui-layer-title{background-color:#722ed1}.theme-purple .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#722ed1;background-color:#722ed1}.theme-purple .more-theme-item:hover,.theme-purple .more-theme-item.active{border-color:#722ed1}.theme-purple .btn-circle{background:#722ed1}.theme-purple .ball-loader>span,.theme-purple .signal-loader>span{background-color:#722ed1}.theme-purple .text-primary,.theme-purple .layui-link{color:#722ed1!important}.theme-purple .layui-btn{background-color:#722ed1}.theme-purple .layui-form-onswitch{border-color:#722ed1;background-color:#722ed1}.theme-purple .layui-form-radio>i:hover,.theme-purple .layui-form-radioed>i,.theme-purple .layui-form-checked i,.theme-purple .layui-form-checked:hover i{color:#722ed1}.theme-purple .layui-form-checked[lay-skin=primary] i,.theme-purple .layui-form-checked span,.theme-purple .layui-form-checked:hover span{border-color:#722ed1!important;background-color:#722ed1}.theme-purple .layui-form-checked[lay-skin=primary] i:hover,.theme-purple .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#722ed1!important}.theme-purple .layui-form-select dl dd.layui-this{background-color:#722ed1}.theme-purple .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#722ed1}.theme-purple .layui-laypage input:focus,.theme-purple .layui-laypage select:focus{border-color:#722ed1!important}.theme-purple .layui-laypage a:hover{color:#722ed1}.theme-purple .layui-tab-brief>.layui-tab-title .layui-this{color:#722ed1}.theme-purple .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-purple .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#722ed1!important}.theme-purple .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#722ed1;color:#722ed1}.theme-purple .layui-breadcrumb a:hover{color:#722ed1!important}.theme-purple .layui-laydate-footer span:hover,.theme-purple .layui-laydate-header i:hover,.theme-purple .layui-laydate-header span:hover{color:#722ed1}.theme-purple .layui-laydate .layui-this{background-color:#722ed1!important}.theme-purple .layui-laydate-content td.laydate-selected{background-color:rgba(114,46,209,.1)}.theme-purple .laydate-selected:hover{background-color:rgba(114,46,209,.1)!important}.theme-purple .layui-timeline-axis{color:#722ed1}.theme-purple .layui-transfer-active .layui-btn{background-color:#722ed1!important;border-color:#722ed1!important}.theme-purple .layui-progress-bar{background-color:#722ed1}.theme-purple .layui-slider-bar{background-color:#722ed1!important}.theme-purple .layui-slider-wrap-btn{border-color:#722ed1!important}.theme-purple .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#722ed1}.theme-purple .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-purple .layui-elem-quote{border-color:#722ed1}.theme-purple .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-purple .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#722ed1}.theme-purple .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#b896e8}.theme-purple .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#722ed1}.theme-purple .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#b896e8!important}.theme-purple .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#722ed1!important}.theme-purple .ew-cascader-dropdown-list-item.active,.theme-purple .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#722ed1}.theme-purple div.tagsinput span.tag{background:#722ed1}.theme-purple xm-select .xm-body .xm-option .xm-option-icon{border-color:#722ed1!important}.theme-purple xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-purple xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-purple .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#722ed1!important}.theme-purple xm-select .xm-label .xm-label-block,.theme-purple xm-select .xm-body .xm-option.hide-icon.selected{background-color:#722ed1!important}.theme-purple .city-select a.active{color:#fff!important;background-color:#722ed1!important}.theme-purple .city-select a:hover,.theme-purple .city-select a:focus{background-color:rgba(114,46,209,.1);color:#722ed1}.theme-purple .city-picker-span>.title>span:hover{background-color:rgba(114,46,209,.1)}.theme-purple .city-select-tab>a.active{color:#722ed1}.theme-red .layui-layout-admin .layui-header .layui-logo{color:#fff;box-shadow:none;background-color:transparent}.theme-red .layui-layout-admin .layui-header{background-color:#dd4b39}.theme-red .layui-layout-admin .layui-header a{color:#fff}.theme-red .layui-layout-admin .layui-header a:hover{color:#fff}.theme-red .layui-layout-admin .layui-header .layui-nav-child a{color:#595959}.theme-red .layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-color:#eee transparent transparent}.theme-red .layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color:transparent transparent #eee}.theme-red .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-red .layui-layout-admin .layui-header .layui-nav-bar{background-color:#fff}.theme-red .layui-layout-admin .layui-side{background-color:#28333e}.theme-red .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-red .layui-nav-tree .layui-this>a,.theme-red .layui-nav-tree .layui-this>a:hover{background-color:#dd4b39}.theme-red .layui-nav-tree>.layui-nav-item>a:before{background-color:#dd4b39}.theme-red .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#28333e!important}.theme-red .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{background-color:#dd4b39;top:38px}.theme-red .layui-body-header-title{border-left-color:#dd4b39}.theme-red .layui-layer.layui-layer-admin .layui-layer-title{background-color:#dd4b39}.theme-red .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#dd4b39;background-color:#dd4b39}.theme-red .more-theme-item:hover,.theme-red .more-theme-item.active{border-color:#dd4b39}.theme-red .btn-circle{background:#dd4b39}.theme-red .ball-loader>span,.theme-red .signal-loader>span{background-color:#dd4b39}.theme-red .text-primary,.theme-red .layui-link{color:#dd4b39!important}.theme-red .layui-btn{background-color:#dd4b39}.theme-red .layui-form-onswitch{border-color:#dd4b39;background-color:#dd4b39}.theme-red .layui-form-radio>i:hover,.theme-red .layui-form-radioed>i,.theme-red .layui-form-checked i,.theme-red .layui-form-checked:hover i{color:#dd4b39}.theme-red .layui-form-checked[lay-skin=primary] i,.theme-red .layui-form-checked span,.theme-red .layui-form-checked:hover span{border-color:#dd4b39!important;background-color:#dd4b39}.theme-red .layui-form-checked[lay-skin=primary] i:hover,.theme-red .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#dd4b39!important}.theme-red .layui-form-select dl dd.layui-this{background-color:#dd4b39}.theme-red .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#dd4b39}.theme-red .layui-laypage input:focus,.theme-red .layui-laypage select:focus{border-color:#dd4b39!important}.theme-red .layui-laypage a:hover{color:#dd4b39}.theme-red .layui-tab-brief>.layui-tab-title .layui-this{color:#dd4b39}.theme-red .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-red .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#dd4b39!important}.theme-red .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#dd4b39;color:#dd4b39}.theme-red .layui-breadcrumb a:hover{color:#dd4b39!important}.theme-red .layui-laydate-footer span:hover,.theme-red .layui-laydate-header i:hover,.theme-red .layui-laydate-header span:hover{color:#dd4b39}.theme-red .layui-laydate .layui-this{background-color:#dd4b39!important}.theme-red .layui-laydate-content td.laydate-selected{background-color:rgba(221,75,57,.1)}.theme-red .laydate-selected:hover{background-color:rgba(221,75,57,.1)!important}.theme-red .layui-timeline-axis{color:#dd4b39}.theme-red .layui-transfer-active .layui-btn{background-color:#dd4b39!important;border-color:#dd4b39!important}.theme-red .layui-progress-bar{background-color:#dd4b39}.theme-red .layui-slider-bar{background-color:#dd4b39!important}.theme-red .layui-slider-wrap-btn{border-color:#dd4b39!important}.theme-red .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#dd4b39}.theme-red .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-red .layui-elem-quote{border-color:#dd4b39}.theme-red .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-red .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#dd4b39}.theme-red .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#eea39a}.theme-red .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#dd4b39}.theme-red .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#eea39a!important}.theme-red .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#dd4b39!important}.theme-red .ew-cascader-dropdown-list-item.active,.theme-red .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#dd4b39}.theme-red div.tagsinput span.tag{background:#dd4b39}.theme-red xm-select .xm-body .xm-option .xm-option-icon{border-color:#dd4b39!important}.theme-red xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-red xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-red .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#dd4b39!important}.theme-red xm-select .xm-label .xm-label-block,.theme-red xm-select .xm-body .xm-option.hide-icon.selected{background-color:#dd4b39!important}.theme-red .city-select a.active{color:#fff!important;background-color:#dd4b39!important}.theme-red .city-select a:hover,.theme-red .city-select a:focus{background-color:rgba(221,75,57,.1);color:#dd4b39}.theme-red .city-picker-span>.title>span:hover{background-color:rgba(221,75,57,.1)}.theme-red .city-select-tab>a.active{color:#dd4b39}.theme-cyan .layui-layout-admin .layui-header .layui-logo{background-color:#001529}.theme-cyan .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-cyan .layui-layout-admin .layui-header .layui-nav-bar{background-color:#001529}.theme-cyan .layui-layout-admin .layui-side{background-color:#001529}.theme-cyan .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-cyan .layui-nav-tree .layui-this>a,.theme-cyan .layui-nav-tree .layui-this>a:hover{background-color:#1890ff}.theme-cyan .layui-nav-tree>.layui-nav-item>a:before{background-color:#1890ff}.theme-cyan .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#001529!important}.theme-cyan .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{background-color:#001529}.theme-cyan .layui-body-header-title{border-left-color:#1890ff}.theme-cyan .layui-layer.layui-layer-admin{border-radius:4px}.theme-cyan .layui-layer.layui-layer-admin .layui-layer-title{color:#333;font-size:16px;padding-left:23px;background-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid #f1f1f1}.theme-cyan .layui-layer.layui-layer-admin .layui-layer-setwin a{color:#8c8c8c;font-weight:600}.theme-cyan .layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-min cite{background-color:#8c8c8c}.theme-cyan .layui-layer.layui-layer-admin .layui-layer-btn a{height:32px;line-height:32px;border-radius:4px;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-cyan .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#1890ff;background-color:#1890ff}.theme-cyan .more-theme-item:hover,.theme-cyan .more-theme-item.active{border-color:#1890ff}.theme-cyan .btn-circle{background:#1890ff}.theme-cyan .ball-loader>span,.theme-cyan .signal-loader>span{background-color:#1890ff}.theme-cyan .text-primary,.theme-cyan .layui-link{color:#1890ff!important}.theme-cyan .layui-btn{height:36px;line-height:36px;border-radius:4px;background-color:#1890ff;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-cyan .layui-btn-lg{height:42px;line-height:42px}.theme-cyan .layui-btn-sm{height:28px;line-height:28px}.theme-cyan .layui-btn-xs{height:22px;line-height:22px}.theme-cyan .layui-input,.theme-cyan .layui-select,.theme-cyan .layui-textarea,.theme-cyan xm-select{height:36px;border-radius:4px}.theme-cyan .layui-input:focus,.theme-cyan .layui-textarea:focus,.theme-cyan xm-select:hover{border-color:#40a9ff!important}.theme-cyan .layui-form-label,.theme-cyan .layui-form-mid{padding-top:8px;padding-bottom:8px}.theme-cyan .layui-input-block{min-height:36px}.theme-cyan .layui-form-radio{margin-top:4px}.theme-cyan .layui-form-onswitch{border-color:#1890ff;background-color:#1890ff}.theme-cyan .layui-form-radio>i:hover,.theme-cyan .layui-form-radioed>i,.theme-cyan .layui-form-checked i,.theme-cyan .layui-form-checked:hover i{color:#1890ff}.theme-cyan .layui-form-checked[lay-skin=primary] i,.theme-cyan .layui-form-checked span,.theme-cyan .layui-form-checked:hover span{border-color:#1890ff!important;background-color:#1890ff}.theme-cyan .layui-form-checked[lay-skin=primary] i:hover,.theme-cyan .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#1890ff!important}.theme-cyan .layui-form-select dl dd.layui-this{background-color:#1890ff}.theme-cyan .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#1890ff}.theme-cyan .layui-laypage input:focus,.theme-cyan .layui-laypage select:focus{border-color:#1890ff!important}.theme-cyan .layui-laypage a:hover{color:#1890ff}.theme-cyan .layui-tab-brief>.layui-tab-title .layui-this{color:#1890ff}.theme-cyan .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-cyan .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#1890ff!important}.theme-cyan .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#2d8cf0;color:#2d8cf0}.theme-cyan .layui-breadcrumb a:hover{color:#1890ff!important}.theme-cyan .layui-laydate-footer span:hover,.theme-cyan .layui-laydate-header i:hover,.theme-cyan .layui-laydate-header span:hover{color:#1890ff}.theme-cyan .layui-laydate .layui-this{background-color:#1890ff!important}.theme-cyan .layui-laydate-content td.laydate-selected{background-color:rgba(24,144,255,.1)}.theme-cyan .laydate-selected:hover{background-color:rgba(24,144,255,.1)!important}.theme-cyan .layui-timeline-axis{color:#1890ff}.theme-cyan .layui-transfer-active .layui-btn{background-color:#1890ff!important;border-color:#1890ff!important}.theme-cyan .layui-progress-bar{background-color:#1890ff}.theme-cyan .layui-slider-bar{background-color:#1890ff!important}.theme-cyan .layui-slider-wrap-btn{border-color:#1890ff!important}.theme-cyan .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#1890ff}.theme-cyan .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-cyan .layui-elem-quote{border-color:#1890ff}.theme-cyan .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-cyan .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#1890ff}.theme-cyan .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#89c6ff}.theme-cyan .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#1890ff}.theme-cyan .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#89c6ff!important}.theme-cyan .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#1890ff!important}.theme-cyan .ew-cascader-dropdown-list-item.active,.theme-cyan .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#1890ff}.theme-cyan div.tagsinput span.tag{background:#1890ff}.theme-cyan xm-select .xm-body .xm-option .xm-option-icon{border-color:#1890ff!important}.theme-cyan xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-cyan xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-cyan .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#1890ff!important}.theme-cyan xm-select .xm-label .xm-label-block,.theme-cyan xm-select .xm-body .xm-option.hide-icon.selected{background-color:#1890ff!important}.theme-cyan .city-select a.active{color:#fff!important;background-color:#1890ff!important}.theme-cyan .city-select a:hover,.theme-cyan .city-select a:focus{background-color:#f0faff;color:#1890ff}.theme-cyan .city-picker-span>.title>span:hover{background-color:#f0faff}.theme-cyan .city-select-tab>a.active{color:#1890ff}.theme-white .layui-layout-admin .layui-header .layui-logo{color:#262626;background-color:transparent;box-shadow:2px 8px 8px 0 rgba(29,35,41,.05)}.theme-white .layui-layout-admin .layui-header{box-shadow:0 1px 4px rgba(0,21,41,.08)}.theme-white .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-white .layui-layout-admin .layui-header .layui-nav-bar{background-color:#2d8cf0}.theme-white .layui-layout-admin .layui-side{background-color:#fff;box-shadow:2px 8px 8px 0 rgba(29,35,41,.05)}.theme-white .layui-side .layui-nav .layui-nav-item a{color:#595959}.theme-white .layui-side .layui-nav .layui-nav-item a:hover{color:#2d8cf0}.theme-white .layui-side .layui-nav-itemed>a,.theme-white .layui-side .layui-nav-tree .layui-nav-title a,.theme-white .layui-side .layui-nav-tree .layui-nav-title a:hover{color:#595959!important}.theme-white .layui-side .layui-nav-itemed>a:hover{color:#2d8cf0!important}.theme-white .layui-side .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-white .layui-side .layui-nav-tree .layui-this>a,.theme-white .layui-side .layui-nav-tree .layui-this>a:hover{color:#2d8cf0;background:#f0faff;border-right:2px solid #2d8cf0}.theme-white .layui-side .layui-nav-tree .layui-nav-item .layui-nav-child{background-color:transparent!important}.theme-white .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#fff!important}@media screen and (min-width:769px){.theme-white .layui-layout-admin.admin-nav-mini .layui-side .layui-nav li.layui-nav-itemed>a{background:#f0faff;color:#2d8cf0!important}}.theme-white .layui-nav-tree>.layui-nav-item>a:before{display:none}.theme-white .layui-side .layui-nav .layui-nav-more{border-color:rgba(89,89,89,.7) transparent transparent}.theme-white .layui-side .layui-nav .layui-nav-mored,.theme-white .layui-side .layui-nav-itemed>a .layui-nav-more{border-color:transparent transparent rgba(89,89,89,.7)}.theme-white .layui-side .layui-nav-tree.arrow3 .layui-nav-itemed>a>.layui-nav-more:before{background-color:rgba(89,89,89,.7)}@media screen and (min-width:769px){.theme-white .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more{border-color:transparent transparent transparent rgba(89,89,89,.7)}}.theme-white .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title{top:8px;right:8px;height:32px;line-height:32px;box-sizing:border-box;background-color:transparent;box-shadow:-4px 4px 0 #f5f7f9;padding-right:70px}.theme-white .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li{border:0;margin-right:6px;border-radius:4px;background-color:#fff;line-height:32px;height:32px}.theme-white .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this{color:#2d8cf0;background-color:#fff}.theme-white .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li:hover{background-color:#fff}.theme-white .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{display:none}.theme-white .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li .layui-tab-close,.theme-white .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li .layui-tab-close:hover{top:8px;color:#8c8c8c;background-color:transparent}.theme-white .layui-layout-admin .layui-body .admin-tabs-control,.theme-white .layui-layout-admin .layui-body .admin-tabs-control:hover{top:8px;height:32px;line-height:32px;background-color:#f5f7f9;border:0}.theme-white .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-down{border-radius:4px;background-color:#fff;width:32px;right:8px}.theme-white .admin-tabs-control>.layui-nav .layui-nav-item{line-height:32px}.theme-white .admin-tabs-control>.layui-nav .layui-nav-item>a{height:32px;width:32px;padding:0}.theme-white .admin-tabs-control>.layui-nav .layui-nav-child{top:36px;border:0;border-radius:4px;box-shadow:0 1px 6px rgba(0,0,0,.2)}.theme-white .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-prev:before{content:"\e603"}.theme-white .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-next:before{content:"\e602"}.theme-white .layui-body-header-title{border-left-color:#2d8cf0}.theme-white .layui-body-header{box-shadow:0 1px 4px rgba(0,21,41,.08)}.theme-white .layui-layer.layui-layer-admin{border-radius:4px}.theme-white .layui-layer.layui-layer-admin .layui-layer-title{color:#262626;font-size:16px;padding-left:23px;background-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid #f1f1f1}.theme-white .layui-layer.layui-layer-admin .layui-layer-setwin a{color:#8c8c8c;font-weight:600}.theme-white .layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-min cite{background-color:#8c8c8c}.theme-white .layui-layer.layui-layer-admin .layui-layer-btn a{height:32px;line-height:32px;border-radius:4px;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-white .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#2d8cf0;background-color:#2d8cf0}.theme-white .more-theme-item:hover,.theme-white .more-theme-item.active{border-color:#2d8cf0}.theme-white .btn-circle{background:#2d8cf0}.theme-white .ball-loader>span,.theme-white .signal-loader>span{background-color:#2d8cf0}.theme-white .text-primary,.theme-white .layui-link{color:#2d8cf0!important}.theme-white .layui-card{border-radius:4px;box-shadow:none}.theme-white .layui-btn{height:36px;line-height:36px;border-radius:4px;background-color:#2d8cf0;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-white .layui-btn-lg{height:42px;line-height:42px}.theme-white .layui-btn-sm{height:28px;line-height:28px}.theme-white .layui-btn-xs{height:22px;line-height:22px}.theme-white .layui-input,.theme-white .layui-select,.theme-white .layui-textarea,.theme-white xm-select{height:36px;border-radius:4px}.theme-white .layui-input:focus,.theme-white .layui-textarea:focus,.theme-white xm-select:hover{border-color:#2d8cf0!important}.theme-white .layui-form-label,.theme-white .layui-form-mid{padding-top:8px;padding-bottom:8px}.theme-white .layui-input-block{min-height:36px}.theme-white .layui-form-radio{margin-top:4px}.theme-white .layui-form-onswitch{border-color:#2d8cf0;background-color:#2d8cf0}.theme-white .layui-form-radio>i:hover,.theme-white .layui-form-radioed>i,.theme-white .layui-form-checked i,.theme-white .layui-form-checked:hover i{color:#2d8cf0}.theme-white .layui-form-checked[lay-skin=primary] i,.theme-white .layui-form-checked span,.theme-white .layui-form-checked:hover span{border-color:#2d8cf0!important;background-color:#2d8cf0}.theme-white .layui-form-checked[lay-skin=primary] i:hover,.theme-white .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#2d8cf0!important}.theme-white .layui-form-select dl dd.layui-this{background-color:#2d8cf0}.theme-white .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#2d8cf0}.theme-white .layui-laypage input:focus,.theme-white .layui-laypage select:focus{border-color:#2d8cf0!important}.theme-white .layui-laypage a:hover{color:#2d8cf0}.theme-white .layui-tab-brief>.layui-tab-title .layui-this{color:#2d8cf0}.theme-white .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-white .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#2d8cf0!important}.theme-white .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#2d8cf0;color:#2d8cf0}.theme-white .layui-breadcrumb a:hover{color:#2d8cf0!important}.theme-white .layui-laydate-footer span:hover,.theme-white .layui-laydate-header i:hover,.theme-white .layui-laydate-header span:hover{color:#2d8cf0}.theme-white .layui-laydate .layui-this{background-color:#2d8cf0!important}.theme-white .layui-laydate-content td.laydate-selected{background-color:rgba(45,140,240,.1)}.theme-white .laydate-selected:hover{background-color:rgba(45,140,240,.1)!important}.theme-white .layui-timeline-axis{color:#2d8cf0}.theme-white .layui-transfer-active .layui-btn{background-color:#2d8cf0!important;border-color:#2d8cf0!important}.theme-white .layui-progress-bar{background-color:#2d8cf0}.theme-white .layui-slider-bar{background-color:#2d8cf0!important}.theme-white .layui-slider-wrap-btn{border-color:#2d8cf0!important}.theme-white .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#2d8cf0}.theme-white .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-white .layui-elem-quote{border-color:#2d8cf0}.theme-white .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-white .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#2d8cf0}.theme-white .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#95c5f7}.theme-white .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#2d8cf0}.theme-white .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#95c5f7!important}.theme-white .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#2d8cf0!important}.theme-white .ew-cascader-dropdown-list-item.active,.theme-white .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#2d8cf0}.theme-white div.tagsinput span.tag{background:#2d8cf0}.theme-white xm-select .xm-body .xm-option .xm-option-icon{border-color:#2d8cf0!important}.theme-white xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-white xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-white .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#2d8cf0!important}.theme-white xm-select .xm-label .xm-label-block,.theme-white xm-select .xm-body .xm-option.hide-icon.selected{background-color:#2d8cf0!important}.theme-white .city-select a.active{color:#fff!important;background-color:#2d8cf0!important}.theme-white .city-select a:hover,.theme-white .city-select a:focus{background-color:#f0faff;color:#2d8cf0}.theme-white .city-picker-span>.title>span:hover{background-color:#f0faff}.theme-white .city-select-tab>a.active{color:#2d8cf0}.theme-pink .layui-layout-admin .layui-header .layui-logo{color:#262626;background-color:transparent;box-shadow:2px 8px 8px 0 rgba(29,35,41,.05)}.theme-pink .layui-layout-admin .layui-header{box-shadow:0 1px 4px rgba(0,21,41,.08)}.theme-pink .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-pink .layui-layout-admin .layui-header .layui-nav-bar{background-color:#fb7299}.theme-pink .layui-layout-admin .layui-side{background-color:#fff;box-shadow:2px 8px 8px 0 rgba(29,35,41,.05)}.theme-pink .layui-side .layui-nav .layui-nav-item a{color:#595959}.theme-pink .layui-side .layui-nav .layui-nav-item a:hover{color:#fb7299}.theme-pink .layui-side .layui-nav-itemed>a,.theme-pink .layui-side .layui-nav-tree .layui-nav-title a,.theme-pink .layui-side .layui-nav-tree .layui-nav-title a:hover{color:#595959!important}.theme-pink .layui-side .layui-nav-itemed>a:hover{color:#fb7299!important}.theme-pink .layui-side .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-pink .layui-side .layui-nav-tree .layui-this>a,.theme-pink .layui-side .layui-nav-tree .layui-this>a:hover{color:#fb7299;background:#fff7f9;border-right:2px solid #fb7299}.theme-pink .layui-side .layui-nav-tree .layui-nav-item .layui-nav-child{background-color:transparent!important}.theme-pink .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#fff!important}@media screen and (min-width:769px){.theme-pink .layui-layout-admin.admin-nav-mini .layui-side .layui-nav li.layui-nav-itemed>a{background:#fff1f5;color:#fb7299!important}}.theme-pink .layui-nav-tree>.layui-nav-item>a:before{display:none}.theme-pink .layui-side .layui-nav .layui-nav-more{border-color:rgba(89,89,89,.7) transparent transparent}.theme-pink .layui-side .layui-nav .layui-nav-mored,.theme-pink .layui-side .layui-nav-itemed>a .layui-nav-more{border-color:transparent transparent rgba(89,89,89,.7)}.theme-pink .layui-side .layui-nav-tree.arrow3 .layui-nav-itemed>a>.layui-nav-more:before{background-color:rgba(89,89,89,.7)}@media screen and (min-width:769px){.theme-pink .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more{border-color:transparent transparent transparent rgba(89,89,89,.7)}}.theme-pink .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title{top:8px;right:8px;height:32px;line-height:32px;box-sizing:border-box;background-color:transparent;box-shadow:-4px 4px 0 #f5f7f9;padding-right:70px}.theme-pink .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li{border:0;margin-right:6px;border-radius:4px;background-color:#fff;line-height:32px;height:32px}.theme-pink .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this{color:#fb7299;background-color:#fff}.theme-pink .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li:hover{background-color:#fff}.theme-pink .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{display:none}.theme-pink .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li .layui-tab-close,.theme-pink .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li .layui-tab-close:hover{top:8px;color:#8c8c8c;background-color:transparent}.theme-pink .layui-layout-admin .layui-body .admin-tabs-control,.theme-pink .layui-layout-admin .layui-body .admin-tabs-control:hover{top:8px;height:32px;line-height:32px;background-color:#f5f7f9;border:0}.theme-pink .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-down{border-radius:4px;background-color:#fff;width:32px;right:8px}.theme-pink .admin-tabs-control>.layui-nav .layui-nav-item{line-height:32px}.theme-pink .admin-tabs-control>.layui-nav .layui-nav-item>a{height:32px;width:32px;padding:0}.theme-pink .admin-tabs-control>.layui-nav .layui-nav-child{top:36px;border:0;border-radius:4px;box-shadow:0 1px 6px rgba(0,0,0,.2)}.theme-pink .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-prev:before{content:"\e603"}.theme-pink .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-next:before{content:"\e602"}.theme-pink .layui-body-header-title{border-left-color:#fb7299}.theme-pink .layui-body-header{box-shadow:0 1px 4px rgba(0,21,41,.08)}.theme-pink .layui-layer.layui-layer-admin{border-radius:4px}.theme-pink .layui-layer.layui-layer-admin .layui-layer-title{color:#262626;font-size:16px;padding-left:23px;background-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid #f1f1f1}.theme-pink .layui-layer.layui-layer-admin .layui-layer-setwin a{color:#8c8c8c;font-weight:600}.theme-pink .layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-min cite{background-color:#8c8c8c}.theme-pink .layui-layer.layui-layer-admin .layui-layer-btn a{height:32px;line-height:32px;border-radius:4px;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-pink .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#fb7299;background-color:#fb7299}.theme-pink .more-theme-item:hover,.theme-pink .more-theme-item.active{border-color:#fb7299}.theme-pink .btn-circle{background:#fb7299}.theme-pink .ball-loader>span,.theme-pink .signal-loader>span{background-color:#fb7299}.theme-pink .text-primary,.theme-pink .layui-link{color:#fb7299!important}.theme-pink .layui-card{border-radius:4px;box-shadow:none}.theme-pink .layui-btn{height:36px;line-height:36px;border-radius:4px;background-color:#fb7299;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-pink .layui-btn-lg{height:42px;line-height:42px}.theme-pink .layui-btn-sm{height:28px;line-height:28px}.theme-pink .layui-btn-xs{height:22px;line-height:22px}.theme-pink .layui-input,.theme-pink .layui-select,.theme-pink .layui-textarea,.theme-pink xm-select{height:36px;border-radius:4px}.theme-pink .layui-input:focus,.theme-pink .layui-textarea:focus,.theme-pink xm-select:hover{border-color:#fb7299!important}.theme-pink .layui-form-label,.theme-pink .layui-form-mid{padding-top:8px;padding-bottom:8px}.theme-pink .layui-input-block{min-height:36px}.theme-pink .layui-form-radio{margin-top:4px}.theme-pink .layui-form-onswitch{border-color:#fb7299;background-color:#fb7299}.theme-pink .layui-form-radio>i:hover,.theme-pink .layui-form-radioed>i,.theme-pink .layui-form-checked i,.theme-pink .layui-form-checked:hover i{color:#fb7299}.theme-pink .layui-form-checked[lay-skin=primary] i,.theme-pink .layui-form-checked span,.theme-pink .layui-form-checked:hover span{border-color:#fb7299!important;background-color:#fb7299}.theme-pink .layui-form-checked[lay-skin=primary] i:hover,.theme-pink .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#fb7299!important}.theme-pink .layui-form-select dl dd.layui-this{background-color:#fb7299}.theme-pink .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#fb7299}.theme-pink .layui-laypage input:focus,.theme-pink .layui-laypage select:focus{border-color:#fb7299!important}.theme-pink .layui-laypage a:hover{color:#fb7299}.theme-pink .layui-tab-brief>.layui-tab-title .layui-this{color:#fb7299}.theme-pink .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-pink .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#fb7299!important}.theme-pink .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#fb7299;color:#fb7299}.theme-pink .layui-breadcrumb a:hover{color:#fb7299!important}.theme-pink .layui-laydate-footer span:hover,.theme-pink .layui-laydate-header i:hover,.theme-pink .layui-laydate-header span:hover{color:#fb7299}.theme-pink .layui-laydate .layui-this{background-color:#fb7299!important}.theme-pink .layui-laydate-content td.laydate-selected{background-color:#fff1f5}.theme-pink .laydate-selected:hover{background-color:#fff1f5!important}.theme-pink .layui-timeline-axis{color:#fb7299}.theme-pink .layui-transfer-active .layui-btn{background-color:#fb7299!important;border-color:#fb7299!important}.theme-pink .layui-progress-bar{background-color:#fb7299}.theme-pink .layui-slider-bar{background-color:#fb7299!important}.theme-pink .layui-slider-wrap-btn{border-color:#fb7299!important}.theme-pink .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#fb7299}.theme-pink .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-pink .layui-elem-quote{border-color:#fb7299}.theme-pink .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-pink .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#fb7299}.theme-pink .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#fdb8cc}.theme-pink .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#fb7299}.theme-pink .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#fdb8cc!important}.theme-pink .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#fb7299!important}.theme-pink .ew-cascader-dropdown-list-item.active,.theme-pink .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#fb7299}.theme-pink div.tagsinput span.tag{background:#fb7299}.theme-pink xm-select .xm-body .xm-option .xm-option-icon{border-color:#fb7299!important}.theme-pink xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-pink xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-pink .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#fb7299!important}.theme-pink xm-select .xm-label .xm-label-block,.theme-pink xm-select .xm-body .xm-option.hide-icon.selected{background-color:#fb7299!important}.theme-pink .city-select a.active{color:#fff!important;background-color:#fb7299!important}.theme-pink .city-select a:hover,.theme-pink .city-select a:focus{background-color:#fff1f5;color:#fb7299}.theme-pink .city-picker-span>.title>span:hover{background-color:#fff1f5}.theme-pink .city-select-tab>a.active{color:#fb7299}.theme-colorful .layui-layout-admin .layui-header .layui-logo{color:#262626;background-color:transparent;box-shadow:2px 8px 8px 0 rgba(29,35,41,.05)}.theme-colorful .layui-layout-admin .layui-header{box-shadow:0 1px 4px rgba(0,21,41,.08)}.theme-colorful .layui-layout-admin .layui-header .layui-nav .layui-this:after,.theme-colorful .layui-layout-admin .layui-header .layui-nav-bar{background-color:#2d8cf0}.theme-colorful .layui-layout-admin .layui-side{background-color:#fff;box-shadow:2px 8px 8px 0 rgba(29,35,41,.05)}.theme-colorful .layui-side .layui-nav .layui-nav-item a{color:#595959}.theme-colorful .layui-side .layui-nav .layui-nav-item a:hover{color:#2d8cf0}.theme-colorful .layui-side .layui-nav-itemed>a,.theme-colorful .layui-side .layui-nav-tree .layui-nav-title a,.theme-colorful .layui-side .layui-nav-tree .layui-nav-title a:hover{color:#595959!important}.theme-colorful .layui-side .layui-nav-itemed>a:hover{color:#2d8cf0!important}.theme-colorful .layui-side .layui-nav-tree .layui-nav-child dd.layui-this a,.theme-colorful .layui-side .layui-nav-tree .layui-this>a,.theme-colorful .layui-side .layui-nav-tree .layui-this>a:hover{color:#2d8cf0;background:#f0faff;border-right:2px solid #2d8cf0}.theme-colorful .layui-side .layui-nav-tree .layui-nav-item .layui-nav-child{background-color:transparent!important}.theme-colorful .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child:before{background:#fff!important}@media screen and (min-width:769px){.theme-colorful .layui-layout-admin.admin-nav-mini .layui-side .layui-nav li.layui-nav-itemed>a{background:#f0faff;color:#2d8cf0!important}}.theme-colorful .layui-nav-tree>.layui-nav-item>a:before{display:none}.theme-colorful .layui-side .layui-nav .layui-nav-more{border-color:rgba(89,89,89,.7) transparent transparent}.theme-colorful .layui-side .layui-nav .layui-nav-mored,.theme-colorful .layui-side .layui-nav-itemed>a .layui-nav-more{border-color:transparent transparent rgba(89,89,89,.7)}.theme-colorful .layui-side .layui-nav-tree.arrow3 .layui-nav-itemed>a>.layui-nav-more:before{background-color:rgba(89,89,89,.7)}@media screen and (min-width:769px){.theme-colorful .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .admin-nav-hover>.layui-nav-child>dd>a .layui-nav-more{border-color:transparent transparent transparent rgba(89,89,89,.7)}}.theme-colorful .layui-side .layui-nav .layui-nav-item a cite{vertical-align:middle}.theme-colorful .layui-side .layui-nav-item>a>.layui-icon{color:#fff;width:28px;height:28px;font-size:12px!important;line-height:28px;text-align:center;border-radius:50%;display:inline-block;vertical-align:middle;background-color:#61b2fc}.theme-colorful .layui-side .layui-nav-item:nth-child(even)>a>.layui-icon{background-color:#7dd733}.theme-colorful .layui-side .layui-nav-item:nth-child(3)>a>.layui-icon{background-color:#32a2d4}.theme-colorful .layui-side .layui-nav-item:nth-child(4)>a>.layui-icon{background-color:#2bccce}.theme-colorful .layui-side .layui-nav-item:nth-child(5)>a>.layui-icon{background-color:#7383cf}@media screen and (min-width:768px){.theme-colorful .admin-nav-mini .layui-side .layui-nav-item>a{padding-left:16px}}.theme-colorful .layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child a{padding-left:63px}.theme-colorful .layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child .layui-nav-child a{padding-left:83px}.theme-colorful .layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child .layui-nav-child .layui-nav-child a{padding-left:103px}.theme-colorful .layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child .layui-nav-child .layui-nav-child .layui-nav-child a{padding-left:123px}.theme-colorful .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title{top:8px;right:8px;height:32px;line-height:32px;box-sizing:border-box;background-color:transparent;box-shadow:-4px 4px 0 #f5f7f9;padding-right:70px}.theme-colorful .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li{border:0;margin-right:6px;border-radius:4px;background-color:#fff;line-height:32px;height:32px}.theme-colorful .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this{color:#2d8cf0;background-color:#fff}.theme-colorful .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li:hover{background-color:#fff}.theme-colorful .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li.layui-this:after{display:none}.theme-colorful .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li .layui-tab-close,.theme-colorful .layui-layout-admin .layui-body>.layui-tab>.layui-tab-title li .layui-tab-close:hover{top:8px;color:#8c8c8c;background-color:transparent}.theme-colorful .layui-layout-admin .layui-body .admin-tabs-control,.theme-colorful .layui-layout-admin .layui-body .admin-tabs-control:hover{top:8px;height:32px;line-height:32px;background-color:#f5f7f9;border:0}.theme-colorful .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-down{border-radius:4px;background-color:#fff;width:32px;right:8px}.theme-colorful .admin-tabs-control>.layui-nav .layui-nav-item{line-height:32px}.theme-colorful .admin-tabs-control>.layui-nav .layui-nav-item>a{height:32px;width:32px;padding:0}.theme-colorful .admin-tabs-control>.layui-nav .layui-nav-child{top:36px;border:0;border-radius:4px;box-shadow:0 1px 6px rgba(0,0,0,.2)}.theme-colorful .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-prev:before{content:"\e603"}.theme-colorful .layui-layout-admin .layui-body .admin-tabs-control.layui-icon-next:before{content:"\e602"}.theme-colorful .layui-body-header-title{border-left-color:#2d8cf0}.theme-colorful .layui-body-header{box-shadow:0 1px 4px rgba(0,21,41,.08)}.theme-colorful .layui-layer.layui-layer-admin{border-radius:4px}.theme-colorful .layui-layer.layui-layer-admin .layui-layer-title{color:#262626;font-size:16px;padding-left:23px;background-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:1px solid #f1f1f1}.theme-colorful .layui-layer.layui-layer-admin .layui-layer-setwin a{color:#8c8c8c;font-weight:600}.theme-colorful .layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-min cite{background-color:#8c8c8c}.theme-colorful .layui-layer.layui-layer-admin .layui-layer-btn a{height:32px;line-height:32px;border-radius:4px;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-colorful .layui-layer.layui-layer-admin .layui-layer-btn .layui-layer-btn0{border-color:#2d8cf0;background-color:#2d8cf0}.theme-colorful .more-theme-item:hover,.theme-colorful .more-theme-item.active{border-color:#2d8cf0}.theme-colorful .btn-circle{background:#2d8cf0}.theme-colorful .ball-loader>span,.theme-colorful .signal-loader>span{background-color:#2d8cf0}.theme-colorful .text-primary,.theme-colorful .layui-link{color:#2d8cf0!important}.theme-colorful .layui-card{border-radius:4px;box-shadow:none}.theme-colorful .layui-btn{height:36px;line-height:36px;border-radius:4px;background-color:#2d8cf0;box-shadow:0 1px 0 rgba(0,0,0,.03)}.theme-colorful .layui-btn-lg{height:42px;line-height:42px}.theme-colorful .layui-btn-sm{height:28px;line-height:28px}.theme-colorful .layui-btn-xs{height:22px;line-height:22px}.theme-colorful .layui-input,.theme-colorful .layui-select,.theme-colorful .layui-textarea,.theme-colorful xm-select{height:36px;border-radius:4px}.theme-colorful .layui-input:focus,.theme-colorful .layui-textarea:focus,.theme-colorful xm-select:hover{border-color:#2d8cf0!important}.theme-colorful .layui-form-label,.theme-colorful .layui-form-mid{padding-top:8px;padding-bottom:8px}.theme-colorful .layui-input-block{min-height:36px}.theme-colorful .layui-form-radio{margin-top:4px}.theme-colorful .layui-form-onswitch{border-color:#2d8cf0;background-color:#2d8cf0}.theme-colorful .layui-form-radio>i:hover,.theme-colorful .layui-form-radioed>i,.theme-colorful .layui-form-checked i,.theme-colorful .layui-form-checked:hover i{color:#2d8cf0}.theme-colorful .layui-form-checked[lay-skin=primary] i,.theme-colorful .layui-form-checked span,.theme-colorful .layui-form-checked:hover span{border-color:#2d8cf0!important;background-color:#2d8cf0}.theme-colorful .layui-form-checkbox[lay-skin=primary] i:hover,.theme-colorful .layui-form-checkbox[lay-skin=primary]:hover i{border-color:#2d8cf0}.theme-colorful .layui-form-select dl dd.layui-this{background-color:#2d8cf0}.theme-colorful .layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:#2d8cf0}.theme-colorful .layui-laypage input:focus,.theme-colorful .layui-laypage select:focus{border-color:#2d8cf0!important}.theme-colorful .layui-laypage a:hover{color:#2d8cf0}.theme-colorful .layui-tab-brief>.layui-tab-title .layui-this{color:#2d8cf0}.theme-colorful .layui-tab-brief>.layui-tab-more li.layui-this:after,.theme-colorful .layui-tab-brief>.layui-tab-title .layui-this:after{border-color:#2d8cf0!important}.theme-colorful .layui-tab.layui-tab-vertical>.layui-tab-title>li.layui-this{border-color:#2d8cf0;color:#2d8cf0}.theme-colorful .layui-breadcrumb a:hover{color:#2d8cf0!important}.theme-colorful .layui-laydate-footer span:hover,.theme-colorful .layui-laydate-header i:hover,.theme-colorful .layui-laydate-header span:hover{color:#2d8cf0}.theme-colorful .layui-laydate .layui-this{background-color:#2d8cf0!important}.theme-colorful .layui-laydate-content td.laydate-selected{background-color:rgba(45,140,240,.1)}.theme-colorful .laydate-selected:hover{background-color:rgba(45,140,240,.1)!important}.theme-colorful .layui-timeline-axis{color:#2d8cf0}.theme-colorful .layui-transfer-active .layui-btn{background-color:#2d8cf0!important;border-color:#2d8cf0!important}.theme-colorful .layui-progress-bar{background-color:#2d8cf0}.theme-colorful .layui-slider-bar{background-color:#2d8cf0!important}.theme-colorful .layui-slider-wrap-btn{border-color:#2d8cf0!important}.theme-colorful .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon{color:#2d8cf0}.theme-colorful .layui-tab.layui-steps>.layui-tab-title>li>.layui-icon.layui-icon-ok,.theme-colorful .layui-elem-quote{border-color:#2d8cf0}.theme-colorful .layui-tab.layui-steps>.layui-tab-title>li:before,.theme-colorful .layui-tab.layui-steps>.layui-tab-title>li.layui-this>.layui-icon.layui-icon-ok{background-color:#2d8cf0}.theme-colorful .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li{background-color:#96c6f8}.theme-colorful .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this{background-color:#2d8cf0}.theme-colorful .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li:after{border-left-color:#96c6f8!important}.theme-colorful .layui-tab.layui-steps.layui-steps-simple>.layui-tab-title>li.layui-this+li:after{border-left-color:#2d8cf0!important}.theme-colorful .ew-cascader-dropdown-list-item.active,.theme-colorful .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#2d8cf0}.theme-colorful div.tagsinput span.tag{background:#2d8cf0}.theme-colorful xm-select .xm-body .xm-option .xm-option-icon{border-color:#2d8cf0!important}.theme-colorful xm-select .xm-body .xm-option.selected .xm-option-icon,.theme-colorful xm-select>.xm-body .xm-toolbar .toolbar-tag:hover,.theme-colorful .ew-xmselect-tree xm-select .xm-body .xm-option.selected .xm-option-content{color:#2d8cf0!important}.theme-colorful xm-select .xm-label .xm-label-block,.theme-colorful xm-select .xm-body .xm-option.hide-icon.selected{background-color:#2d8cf0!important}.theme-colorful .city-select a.active{color:#fff!important;background-color:#2d8cf0!important}.theme-colorful .city-select a:hover,.theme-colorful .city-select a:focus{background-color:#f0faff;color:#2d8cf0}.theme-colorful .city-picker-span>.title>span:hover{background-color:#f0faff}.theme-colorful .city-select-tab>a.active{color:#2d8cf0} \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/css/login2/login2.css b/ss-admin/src/main/resources/static/css/login2/login2.css new file mode 100644 index 0000000..5018240 --- /dev/null +++ b/ss-admin/src/main/resources/static/css/login2/login2.css @@ -0,0 +1,143 @@ +body { + background-image: url("/images/bg-login.jpg"); + background-repeat: no-repeat; + background-size: cover; + min-height: 100vh; +} + +body:before { + content: ""; + background-color: rgba(0, 0, 0, .2); + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; +} + +.login-wrapper { + max-width: 420px; + padding: 20px; + margin: 0 auto; + position: relative; + box-sizing: border-box; + z-index: 2; +} + +.login-wrapper > .layui-form { + padding: 25px 30px; + background-color: #fff; + box-shadow: 0 3px 6px -1px rgba(0, 0, 0, 0.19); + box-sizing: border-box; + border-radius: 4px; +} + +.login-wrapper > .layui-form > h2 { + color: #333; + font-size: 18px; + text-align: center; + margin-bottom: 25px; +} + +.login-wrapper > .layui-form > .layui-form-item { + margin-bottom: 25px; + position: relative; +} + +.login-wrapper > .layui-form > .layui-form-item:last-child { + margin-bottom: 0; +} + +.login-wrapper > .layui-form > .layui-form-item > .layui-input { + height: 46px; + line-height: 1; + border-radius: 2px !important; +} + +.login-wrapper .layui-input-icon-group > .layui-input { + padding-left: 46px; +} + +.login-wrapper .layui-input-icon-group > .layui-icon { + width: 46px; + height: 46px; + line-height: 46px; + font-size: 20px; + color: #909399; + position: absolute; + left: 0; + top: 0; + text-align: center; +} + +.login-wrapper > .layui-form > .layui-form-item.login-captcha-group { + padding-right: 135px; +} + +.login-wrapper > .layui-form > .layui-form-item.login-captcha-group > .login-captcha { + height: 46px; + width: 120px; + cursor: pointer; + box-sizing: border-box; + border: 1px solid #e6e6e6; + border-radius: 2px !important; + position: absolute; + right: 0; + top: 0; +} + +.login-wrapper > .layui-form > .layui-form-item > .layui-form-checkbox { + margin: 0 !important; + padding-left: 25px; +} + +.login-wrapper > .layui-form > .layui-form-item > .layui-form-checkbox > .layui-icon { + width: 15px !important; + height: 15px !important; +} + +.login-wrapper > .layui-form .layui-btn-fluid { + height: 48px; + line-height: 48px; + font-size: 16px; + border-radius: 2px !important; +} + +.login-wrapper > .layui-form > .layui-form-item.login-oauth-group > a > .layui-icon { + font-size: 26px; +} + +.login-copyright { + color: #eee; + padding-bottom: 20px; + text-align: center; + position: relative; + z-index: 1; +} + +@media screen and (min-height: 550px) { + .login-wrapper { + margin: -250px auto 0; + position: absolute; + top: 50%; + left: 0; + right: 0; + width: 100%; + } + + .login-copyright { + position: absolute; + bottom: 0; + right: 0; + left: 0; + } +} + +.layui-btn { + background-color: #5FB878; + border-color: #5FB878; +} + +.layui-link { + color: #5FB878 !important; +} \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/css/public.css b/ss-admin/src/main/resources/static/css/public.css new file mode 100644 index 0000000..9218d83 --- /dev/null +++ b/ss-admin/src/main/resources/static/css/public.css @@ -0,0 +1,114 @@ +body { + margin: 15px 15px 15px 15px; + background: #f2f2f2; +} + +.layuimini-container { + border: 1px solid #f2f2f2; + border-radius: 5px; + background-color: #ffffff +} + +.layuimini-main { + margin: 10px 10px 10px 10px; +} + +/**必填红点 */ +.layuimini-form > .layui-form-item > .required:after { + content: '*'; + color: red; + position: absolute; + margin-left: 4px; + font-weight: bold; + line-height: 1.8em; + top: 6px; + right: 5px; +} + +.layuimini-form > .layui-form-item > .layui-form-label { + width: 120px !important; +} + +.layuimini-form > .layui-form-item > .layui-input-block { + margin-left: 150px !important; +} + +.layuimini-form > .layui-form-item > .layui-input-block > tip { + display: inline-block; + margin-top: 10px; + line-height: 10px; + font-size: 10px; + color: #a29c9c; +} + +/**搜索框*/ +.layuimini-container .table-search-fieldset { + margin: 0; + border: 1px solid #e6e6e6; + padding: 10px 20px 5px 20px; + color: #6b6b6b; +} + +/**自定义滚动条样式 */ +::-webkit-scrollbar { + width: 6px; + height: 6px +} + +::-webkit-scrollbar-track { + background-color: transparent; + -webkit-border-radius: 2em; + -moz-border-radius: 2em; + border-radius: 2em; +} + +::-webkit-scrollbar-thumb { + background-color: #9c9da0; + -webkit-border-radius: 2em; + -moz-border-radius: 2em; + border-radius: 2em +} + +/* 树形选择器 */ +.selectContent { + display: none; + position: absolute; + z-index: 999; + padding-bottom: 4px; + overflow-y: scroll; + max-height: 210px; + background-color: #FAFAFA; + border: 1px solid rgb(204, 204, 204); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} + +.select-tree { + cursor: pointer; +} + +.select-tree + .layui-edge { + position: absolute; + right: 10px; + top: 50%; + margin-top: -3px; + border-width: 6px; + border-top: 6px solid #c2c2c2; +} + +/*树状图下拉框样式*/ +.trg{ + width: 0; + height: 0; + border-left: 3px solid transparent; + border-right: 3px solid transparent; + border-top: 6px solid black;; + position: absolute; + left:181px; + top:8px; + +} +.org-select{ + cursor: default; + z-index: -1; + width:200px; +} diff --git a/ss-admin/src/main/resources/static/css/themes/default.css b/ss-admin/src/main/resources/static/css/themes/default.css new file mode 100644 index 0000000..8f55edb --- /dev/null +++ b/ss-admin/src/main/resources/static/css/themes/default.css @@ -0,0 +1,98 @@ +/*头部右侧背景色 headerRightBg */ +.layui-layout-admin .layui-header { + background-color: #ffffff !important; +} + +/*头部右侧选中背景色 headerRightBgThis */ +.layui-layout-admin .layui-header .layuimini-header-content > ul > .layui-nav-item.layui-this, .layuimini-tool i:hover { + background-color: #e4e4e4 !important; +} + +/*头部右侧字体颜色 headerRightColor */ +.layui-layout-admin .layui-header .layui-nav .layui-nav-item a { + color: rgba(107, 107, 107, 0.7); +} + +/**头部右侧下拉字体颜色 headerRightChildColor */ +.layui-layout-admin .layui-header .layui-nav .layui-nav-item .layui-nav-child a { + color: rgba(107, 107, 107, 0.7) !important; +} + +/*头部右侧鼠标选中 headerRightColorThis */ +.layui-header .layuimini-menu-header-pc.layui-nav .layui-nav-item a:hover, .layui-header .layuimini-header-menu.layuimini-pc-show.layui-nav .layui-this a { + color: #565656 !important; +} + +/*头部右侧更多下拉颜色 headerRightNavMore */ +.layui-header .layui-nav .layui-nav-more { + border-top-color: rgba(160, 160, 160, 0.7) !important; +} + +/*头部右侧更多下拉颜色 headerRightNavMore */ +.layui-header .layui-nav .layui-nav-mored, .layui-header .layui-nav-itemed > a .layui-nav-more { + border-color: transparent transparent rgba(160, 160, 160, 0.7) !important; +} + +/**头部右侧更多下拉配置色 headerRightNavMoreBg headerRightNavMoreColor */ +.layui-header .layui-nav .layui-nav-child dd.layui-this a, .layui-header .layui-nav-child dd.layui-this, .layui-layout-admin .layui-header .layui-nav .layui-nav-item .layui-nav-child .layui-this a { + background-color: #154d96 !important; + color: #ffffff !important; +} + +/*头部缩放按钮样式 headerRightToolColor */ +.layui-layout-admin .layui-header .layuimini-tool i { + color: #565656; +} + +/*logo背景颜色 headerLogoBg */ +.layui-layout-admin .layuimini-logo { + background-color: #ffffff !important; +} + +/*logo字体颜色 headerLogoColor */ +.layui-layout-admin .layuimini-logo h1 { + color: rgb(191, 187, 187); +} + +/*左侧菜单更多下拉样式 leftMenuNavMore */ +.layuimini-menu-left .layui-nav .layui-nav-more, .layuimini-menu-left-zoom.layui-nav .layui-nav-more { + border-top-color: rgb(191, 187, 187); +} + +/*左侧菜单更多下拉样式 leftMenuNavMore */ +.layuimini-menu-left .layui-nav .layui-nav-mored, .layuimini-menu-left .layui-nav-itemed > a .layui-nav-more, .layuimini-menu-left-zoom.layui-nav .layui-nav-mored, .layuimini-menu-left-zoom.layui-nav-itemed > a .layui-nav-more { + border-color: transparent transparent rgb(191, 187, 187) !important; +} + +/*左侧菜单背景 leftMenuBg */ +.layui-side.layui-bg-black, .layui-side.layui-bg-black > .layuimini-menu-left > ul, .layuimini-menu-left-zoom > ul { + background-color: #ffffff !important; +} + +/*左侧菜单选中背景 leftMenuBgThis */ +.layuimini-menu-left .layui-nav-tree .layui-this, .layuimini-menu-left .layui-nav-tree .layui-this > a, .layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this, .layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this a, .layuimini-menu-left-zoom.layui-nav-tree .layui-this, .layuimini-menu-left-zoom.layui-nav-tree .layui-this > a, .layuimini-menu-left-zoom.layui-nav-tree .layui-nav-child dd.layui-this, .layuimini-menu-left-zoom.layui-nav-tree .layui-nav-child dd.layui-this a { + background-color: #154d96 !important +} + +/*左侧菜单子菜单背景 leftMenuChildBg */ +.layuimini-menu-left .layui-nav-itemed > .layui-nav-child { + background-color: #ffffff !important; +} + +/*左侧菜单字体颜色 leftMenuColor */ +.layuimini-menu-left .layui-nav .layui-nav-item a, .layuimini-menu-left-zoom.layui-nav .layui-nav-item a { + color: rgb(40, 31, 31) !important; +} + +/*左侧菜单选中字体颜色 leftMenuColorThis */ +.layuimini-menu-left , .layuimini-menu-left .layui-nav .layui-this a, .layuimini-menu-left-zoom.layui-nav .layui-this a { + color: #fac45f !important; +} +.layui-nav .layui-nav-item a:hover, .layuimini-menu-left-zoom.layui-nav .layui-nav-item a:hover{ + color: #fac45f !important; +} + +/**tab选项卡选中颜色 tabActiveColor */ +.layuimini-tab .layui-tab-title .layui-this .layuimini-tab-active { + background-color: #1e9fff; +} diff --git a/ss-admin/src/main/resources/static/css/welcome.css b/ss-admin/src/main/resources/static/css/welcome.css new file mode 100644 index 0000000..b84d495 --- /dev/null +++ b/ss-admin/src/main/resources/static/css/welcome.css @@ -0,0 +1,136 @@ +.layui-card { + border: 1px solid #f2f2f2; + border-radius: 5px; +} + +.icon { + margin-right: 10px; + color: #1aa094; +} + +.icon-cray { + color: #ffb800 !important; +} + +.icon-blue { + color: #1e9fff !important; +} + +.icon-tip { + color: #ff5722 !important; +} + +.layuimini-qiuck-module { + text-align: center; + margin-top: 10px +} + +.layuimini-qiuck-module a i { + display: inline-block; + width: 100%; + height: 70px; + line-height: 70px; + text-align: center; + border-radius: 2px; + font-size: 30px; + background-color: #F8F8F8; + color: #333; + transition: all .3s; + -webkit-transition: all .3s; +} + +.layuimini-qiuck-module a cite { + position: relative; + top: 2px; + display: block; + color: #666; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + font-size: 14px; +} + +.welcome-module { + width: 100%; + height: 115px; +} + +.panel { + background-color: #fff; + border: 1px solid transparent; + border-radius: 3px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05) +} + +.panel-body { + padding: 10px +} + +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 12px; + color: inherit +} + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; + margin-top: .3em; +} + +.layui-red { + color: red +} + +.main_btn > p { + height: 40px; +} + +.layui-bg-number { + background-color: #F8F8F8; +} + +.layuimini-notice:hover { + background: #f6f6f6; +} + +.layuimini-notice { + padding: 7px 16px; + clear: both; + font-size: 12px !important; + cursor: pointer; + position: relative; + transition: background 0.2s ease-in-out; +} + +.layuimini-notice-title, .layuimini-notice-label { + padding-right: 70px !important; + text-overflow: ellipsis !important; + overflow: hidden !important; + white-space: nowrap !important; +} + +.layuimini-notice-title { + line-height: 28px; + font-size: 14px; +} + +.layuimini-notice-extra { + position: absolute; + top: 50%; + margin-top: -8px; + right: 16px; + display: inline-block; + height: 16px; + color: #999; +} \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/data/123.pptx b/ss-admin/src/main/resources/static/data/123.pptx new file mode 100644 index 0000000000000000000000000000000000000000..b8d847038f43fef44ed5dfc1c606fcd73bc1e03e GIT binary patch literal 782845 zcma&NW0WS%wk=$?ZQHihfJi&SUbzhl5=WACczRB<;`)IQt^h813-u;ak*pUE+gCZ)x}g4 zX4ne$sCkd?jsb+`eN00kv`|CPdp`xE_p&Xu{BX78nL%S>^ynkwoljCn`1(qT%Vt3! z=o;a3AUDa_prj2Ay!`IYCyvLSD_657R!<{+rtV0i>eD5o%-ODw!c`Ra_oUElIhMut`S9y`zu%Akc6KS8Ah^6z6p>v^cf^8k>KDbCex^1 zi|l9-YKpVzoGFAwjE@Bx15z?kJ*@r@ZSQvq1J54<#tp6;s;8dbPEU?bPVApv%xxaL z9bXUkBjKlqs}~PBT2ZI3En|<~v)E}BWY|eJNQz{?-xNS1f`fz*=z~=x=;nK-b}U$B z^_)Rj{qCQf&e*xMR1i&rn=Iz(g+x1XTn z!sOC*OJ;*>S=Mu`-KADybfV~L=hK%NM&h^Ft+H6uL;$5;yrHZ&@+$pBgmVC$IX&0Jv(#_SmCbyvu68^LeB#+j4}K!(3-%8&xiX70JuIudbN++d{{uv5$ot8D z5Fj8%sQ(N^mVba)t*ZMMh-kh)_5?LNx98X@u+5LAaDxO^61jzEVc-Tl>z_ZE=?pFVW+SkKy{>6sWK&+to_8SQ9h2pK3Z4d_?<|fI7s_V5J;eg zP+lm7M^R&k8H0wwrGO+%^NPuM@qWiHUt>#xM`FOy7a_QM!=I6ck)~r^xcYbb=5(*f z=kdu4`l(Jp>!XL51Xj6f-$3Xi(^ywDll(j}rxFJkV!(>0+ZO&ZNW#nPXz=BK;>{>MzfsFINTX;V=1r!m z7Dm1RvGoXOL^G#6GGuD5Ga-^aEW|Uj}Hsy74+vL^f`lX z$vx_ae-bDQpZ=ZS1NIJU(*J=@ceCkl4}>iQ1v4|KN}o~g5BRgRbaSs`n#ev_|-|qF~nL6r9QuuOJ{PZ_LYllUoV&Ee&mnem;-D#E-b$sd z@?P`R*VP3|;p6z3RymUcLs1ZFM&pM_B;nL?AuR4%x<{CB2oiipdZ!TgI}RUEqi){;@c;do3kjfFt-Zb z1ldHZ7#0oGWDgKFSx#E2^L|obk!unZ&-r}$4cUad<9An3+HjaNU_EI{{DXxJQ=4)% zx6mJ*r9KHWg+={Y2zO0uz7U@IO#}nAiJw6KUWmqZ6bOF(RRp1M|M@$x{qr5B(x&X@ zg^>O#g3jPW@2r(b<7Mff!Dr$o^b*9nX3p3lFWXBy(SBrN^aPqg;K4xAP#Sr0JnoxY zHnPwb1G8oMIi(PAk~8vVcXKoU`@GdhfUjvXi?w8^EX!7X&SJZ*B7v!6zdP^KQ&$#k zpskd+hpfi1v|$YBDZlXyRNO@C1ks9yNthI%s>55X3sU7(v)gsk%X}odl@067$z({Q!Lu@ zQTi>e=OwMOMFEKtE!2^=GPqI1aNKT~PVoQ@8^^@{-e>dp((re|t?ngMmL5tfaa4g$ z^1EsuWsCR6-O{>5tWQ|M4mDXcv$vFBY`%p*t=Fl)B)QI_o7O3ap$ubrI2Np9dUnJ_ zc$CykAc|fs*jBhkIB+(&M%vXFfWR8X3l`eOPL^FZSn!Ji4=3kX0AN1enlAcUe8FPO z{z>{x0(3=&b6A3e8WL_PR1&bftQFwYmn9g@WI0mEY}vi6UR-{@Q}$qGs*Y#5`^{$t zfqSii$8YfZwMt<@s!P(O2pDvcKus&3;;iDD)_IH*}dUsceq*O^kh& zoxT^1&F&{n*LM5+GJiTa+&x4h`+L1O-o1L_Vkpjth?|V>%aK4SeHsGa01?gPPwGwt zhQ9i~;x^v(tmSoc=i=e{y*oKLef)7k#(t90JnT6GP2LLA1*O*oOzAg^&ciNcR);Cp zZ;+L(_uZbkQkHKZcy-XHHc-{4pv=y9u(=i!r4(Mba(RI!&*Cf}W)F5GC!DyZ0u9?5V_uW(ZrLN5&qZdNw(FMNM z3;(m(>dnY(Vo!WDsD=I5byJA25i=f>7*@|eaM_-N#=fQG2~-55vo9Odu=2Xa^j{Ne z*iQQCp7eKk;wdSgr}y{=htVkpN1kf`F2s}CTmN>%6YIdX!+z4OkjJ##NM5pSEGwVZ z4_ca?N-$Awo#$xU?F}&FECaFVz$jP=(QYvR?2h zyu&ZuR+Ttxr3M8t!Hjl6;X0JHayD}&;YtqaNFw2x6^(+zhmpEe_@g5HZ~%+;yX&ht zC^Ql@{7$QG=G)%)-aXq{oV9G*FjQ733^2X-lyV~@7z^OOmoU(cQ z^bz!MrcB;nJ zTAehlY8)1Bl8`bg4b2EySRZkMus@i8Y;d}eT>z~3%9HD0Rr1wVfri$`P_ye~v`{=x z3*EcV7SkB(AJ3i{>Ny@E0t{NIBc|qJzGNwD=TF_;{kyz_s|>X&=pnX;M!iXXVhI;Y zeOdZ#DJlPuNtEAfmqz zO+>dl+;AVKT(?NUgJP2yW>#af8TsMXf6DVgBUdLAS~bo=9%XF+)&Yb|kWV)>7P(rZ zKu?DarQBA&CB@aOCZ{+mz2S*}?RW0a7Zsn2Adl$x<+1v`fqlWR5P9z2Gg$UczM~)X zp=pBhMw`C><9iE;4+x1YKd@2zOJ~D2!zpCbptrC2Szv zaw@JXVy(3#igo{9nI+px0}h%0V9q+@$xh7nF3Kf=cvA5Fg!ddoFysu&2d~3`r+*D=dd-% z4C8#3O%pT~3*{1+N(xXzC1+p|d)D&hM=9)ya@qzbr!G;4>b#7Ca*_AG9A>Kz+D}wr zp6vc@lQ7jZzC%Q2ZM)y{;L06jKEm|O>GO?Jmm6e}1;=0G_WzEf)aUtrv%fv}9r}Of zMUH>rNMpioT@7gy^F$D7gBK;Q5K0F4On{@tR^<=mMuK{(R+Pz@wdObgky9v^Lo=H7`H_e;5zRkM^@rLo3UF$MeQax2BCzuCh0TDpPj+V$J&|I0@)>WdQWyKVJNz2 zr>Ytnu6N)*5FF-Z{=E_UyEVtJQ8bt}qFs5^W z08tzw@g@NJM)1;QpY2EVME(%80&tkxbO%`&vlwk$;b-5MVw3l?vnug^F=85fGxV)@ zb+5X}QZVd3CgOJITU1TytzSR)7UFvznIr9%%&13MPa2gjA?Ad*mH1YInaf{H;i+Jx z5*|oS;x{GfIVZIxK%36|46Gym>L)q63;fx6QK+u-$kTzj;*}H6P*-z+2!vRQ2wt;K zSJ*Nzd+#t@HsUY%sW@9|XbON^viq@xS%D&fL^Yf@bbR^X%m#;ZyB|k#zl9E*=C&#) zEoqmhq~xqnR^b3wX0<>~m}+*O%Abc;ZDpCN93En5$0o`NpLEB8>kNV4VRR#WfXH0t zzMIEoXqOO`iUpDF1dnaV&2wxD?HV6HBA62^FR%aY%EIkkb8^Ch=J97n8qa7;rQCyRB>OI>AWSgQHofnUO2<2xCR9#AB=F(9=y85XJtwLH<` zL@3jAH*7_vtERxsZ2`#QAX=;eaaZ}8)QHExe`jmp`8B*dJJJCWB*50J0qpZsQ)8Xs ze^Ompk&b5^m#gx}Vvy(cr65D>P zZ;$aJvoYt?INeM57)>R)rdq-DnGI2p^wLaLcEcMYX}Oki?VvimOFs6Q^Q;4N@VIYi zPh*{9zp_bP3U1V!O24`47ixDX83oUfC)gLpR#(sOuPKiO^&71j+DW{pSnNUC@7_PN z+(XaYPOD;a`Pw|yC##Iorp8|f&N~`5G>i{PnDnr$se-bwt$!kQ^O;2MFp18@h{^^Q z9kTZ=*>u?T9s|i2VIp$J>DCTFu6T_Wyjt@ge4KA^3yM^QX9IQjW0vUtd6|eN>_SMF7vMANi-QHSaLzzrrzf2T1mzZA)Mvxa&zs9SA%!z(dCZhfR77jo9viX6G z;5hNi%`E6Z8RPm%YQ&%neK>)>9c^HX#*ZVw(l7|?RnPXG@ZXD+yE*g@*xv?f^)KQ7 zrzVQ?Urm(qgxvxY+9v5O;@<){=@R&pO^STnm~}EH{RxyI&KzZTCG|2aguT4390?X_ z0>)L_b*vCwe?WGZvDGax^#^&o)Wx}T+%-2~gx8f?awwKQS@y)jS`s=<)-+Uy+{OR; zc1M7GDR5GVY7BMFLB@Tq!+n?sK$0a?gn%auZ)q%Pag`lcG}@4zX3&y+gtDAEp1k8= zrKV`MLvEEuvPOV#El!S>=;q^$+pWa_J4{I9_S5N93wZ#X>tg#T6wsB~9h=FqQ7CKh zy_#sv*6tdL>O&zeDix3k6HS^~=nX)^{`J#n_x&|%>UMXUF>fGf(L2l;@z)}15vG?N zh@aLJJT=SowFlc729HL%bjU8zTXgqX3Qma6ffA_IB`iI8;WsEnxE}j$ymY_R==4r-pGWo|!y6e1Y0I zW2&#W@!LKC&IYRMA$EV}2d>{`S6@Mo_O2DwJ=#MR%;kQt)5b+u;xOexs0aKl&S#RW zKk&b&P++V(=i=Y=355U8Da7?p3N@$w}C8SKXm(y+{c9A4k`JrbHdmF)OSNb@`bFn}sGg;6ScQ2Zr%?L|itq97N|08MoK zYD4Q!3??!3hWZ>T)vzu-baFoP#hk(ekgF+}3|4UeLr=!k3tEF?&FRbM@UHBVevWg~ zw8tTvREdv$lJ?QIpEx9*!)P!1r}4? z80UIjz#et0XydwP5nqIH+Tlgc2HaV7P4vOdBjOLHrjZ~ZLocpAvtym5hBKp#s4``G zB{ciP^4rBB3s30e%}*{#QN6I)y=6WzI@6AuZc0ApTsI%0>-`H{1Ac^=2~Xw1b>S3g z1zJ8TgEF$GqAy|N%*f>6Y^S1AlQitA6L4pf{WiJW!v*Qn-9Y8W!9ou`xarO(JL0xbLN;3BfgJQJ;56?~wU?5RLaBYC-asolRgOCgX z{ea&YEt}oy6D`Ivr~@ad_Eyv)CLIDo#O>WRXfjqzD5Tw*;Y_S}t|TQ|dlSl0W6^+3r4 zT0DKhna%kA3+<$McyuW|Q85^wY-qKyI6>_~St&bJ;!;>?t(RX?8n+cv$`bUMh}w3C zfUE@Gr>i*MNZ8(vKu>CX>rpD=VV|ELdiLY2%=;zs8u$SyZ){rA(_j8-AUb~UjzE`Y zR~0e~U$%u}v|K-j;`_h#kQ^{LJ==e2#s7b>InDjAnxHoEcTebFv{JO%@~1M^n!F;P zkAu8ga@??U3({s%RVAR-PX8wgg8Z(^d2b2&!HFIR=P2OQ@! z`WTl^i+))Qbs>V_Nu!GHQT|>!?W>dx7SS$$R*RIyE>jB>PF&3n{ zKv*%D;2oYyv!_l@mfZP$JF63YcE`)_EmXV=3}ZwAbvSE?B!ePU>J_%2(X2^zJ3+rQ*Oz4p%O>-duGT!sfqOD@6i zXh*<*djA2b5DrPmxEhwE;zB8>aCrW7QE`y8$rbCKFWuS5>P-_0tH{mc;p$0K)`R-y z{43k`rW`@A>)F>a{HD1y6*kUSYAA|e&tWEB;C6%2j5>bk4etpTiMO zf(Twd9f6#jSE*K5)N&p|8k3fwWh%QVM~~L7yVMv>k~r5EV0b#7#et&Lp~qa~h?Zgt zB6L*YU3PS&g@)8EIYNmez4**!N(_v=$fu5cLlYA_`*tnI^Xv6JsERetC{oz7`TC*! z1uz_r*c`+aAUM$ij8bJF?XfKc0B#xPhDescgy^i9j%`EWJ+dI7CmYW9mqm$`m4xI> z-`tI)LeixYIX#&r@-uJ+y0;N`lsaH+Z-K=_yp9 z!6M(-55AK;@y|M6;TpoNHllTEn1CQn#q`Ee-nYga=~?+JVGb^yPl0r}ZDRK&eFPGr zxv0+{Ft=Dd91;hyZ`M-6*6p03Vj3O>OG_~%;+mqcDXh3w(d;b%ldf_#j0sNrY|cS? z_02OU>`9hx73&&UAnhK5AQJB88<%f2yyD?$`j_T=A_C?1B4vr{=^cn$At)p0tPDiy zNJ_bc^x%6ky6PH3v2?pt_QR4X`5I}?#=b0@>-CobN4F0bC#ReHk;>b$K9ld)7X$kb zH!gvXv#6<{8BENg-U0?Og~Z_4n0 zhyTkf@L!XEc?B-Db?w(V(0mE&zKKqnM~$RXFR>h>$h6x*EHT+m5%W#CpGaha22JF1 zA#B9e4f=i>&_cL?Mis6Qq}If*zdagY+_>ttp#W;$xc{c(hSEl`e0spck6SO z1aRT)m_&qOD;^ha{ShQqJyZxDl}M5ctppN(~&z? zYUno>c|JCAo!kUdm5obGknKtd2nl77iAJey+9(-5UuBr$WNoYP4^&KcekXi+E(7fe zW=y|lIg7gzO2ZU)%%EXFdNhw8^Pz@=#WqYKzV3a^o1;er&$=@-YC5-?xXLZ$m4|HAQ_j-D zo~z5rt!caaXGK;ei=zq#ak>oMm=tspwM6}NGcf2J#`;Dj*%Kny>| z)!f)mS}lN~Cc2k2VbeA70+`kokgi5(W{Wrx`Dkn?NA+x+hkp_eushp%(hkEtRisc5 z@fTU{ycydO&zKA4Qs3^@*4O+sV&0b@!1ULteXDoKgVe_R`ybEtGLDtTDc-{64*zey zP1^D5%gL)t!B0oH=L3qhZIwj|Ua0%sBx{8ez3ZiYXQ$eM!oy6vKgqFCTnvuh!SW

prD2LSB%y8-WIJKDb-~_!-G(2a5pfTaIU=|@f`av{o+eb%- zCLK!Rm*g+L0BD=nGRgsj%gu-c&KoIS80AMz?pjh6>}7skFC&smBWd6@ItUv`)s;lL zh1&l?=Te(RV|7O3I>h6G4r8El@M`(u(%(^`At#Id5eO=scg- z1>)=RW3gV$QEASlYGAkG5-BQn@Lm!@x}sdg-XX(6Bo0&8xBy}ZaxhG^Ygbo?ox?#@ zpHm#03~6gf)fiNL(orbVpnxF}Wnm(5VOUx^VSD_ykrD_8k<3N$puDuS6!eMug!Ma- z(nFE;RPVbE2AO&gbAm_9Bp_JMuNnAqPZC;6sZ@~;^H&#!xzPM?k>aQtj$}X3Q%1|2 z`eyJF85>m+fjNwNXYqtuTYcn`W-bO zJ$xZm=^fPv=w8a!T>ca@T-VB4k|Fa{bBg>raRD{jle{^`ZipB-(JtcS37-3v+vz5x z29e2nsP{Z;xqutBJ{3$o`WKH7CFnTEhUCd&5F(N|VyByN#igeU>A`U~U33X`A&eCs zqSkBz#Ea+kVP35spQrEl(z&^N{ESP70kTw@iEl!R0(R+mzwXo1o6}xkH-l?;wv!P% z2sR{6Or}&t7PPp^6!U_4g!%}Dj;SpTc~&xW4kQf+~R;xFU;RS_z=mI@nZ@Y8VQme_DdeTe?WXKYxrs=9SvW!eccY~ARapwJ1J**=yxO=8Ch&ChnhDTW`7JVem}B>Z zreU+)1j`2OSjBJLxU3&DHcuE(M}44U>}r< zx!J^F$u1{a>Cc`L)K4xF3*D++_prDR4Bkl?dNMxU%wDD#JU@pABD8*R8IwhJxP59( z0UY?`Kv1STp1Q`$=K%D>ig-ksgRRz#%#HRo{vWfhO+%u1hOigLfY5fgQO|bO>IP~! zQa5_3za`g93WFFSZM74}8;u!(v)xVZYjyGRT(wCR zOVKZ`+K4mJKUCKc36J9-d-Wqfd%;m>PIu8RIn{_a z?u%MAr-K%bUXY0N-T=JI)MMtCRWrFs>I^<<=RQx7T9HGygfM&ZB6(>#IrFkr^@tMR zA)pnr08)wrB%n1vB57rB0&RK*ZTzKH(C_W|`M7M`$MNk>h8cFPU$QL+QEqiOA$`VZ zKBlOED4iR!H?hb?creTe&d%}bMRi9)#EiIWV|aXzUT!Bt|xtSvR@_jza*(EkT?ps)}rhm}^7C z@lji2XjDh^%r8qT!XYiC@MyH+#B`lE;w6nMMKou&5$2=R)-*gL8v~y_B>JijlT32D z499bU`nL!yQWj!Jt=pITRPM%QFop}VtA5F=W{`0`&iT&_{8O1ufpfurQQ zuYa{knCfEf{UKpJxS^15YR6|hh1=C267FHwjFa>!nN`QJ_3Ex=YhT$;UXP`XRpZoG z$I-|bF1e1P zbgLF?@BB7XJ8pnD@YtfZS%5F)$`mwfLi8#spw1T)W!!`(vNTZ4njK2h0~NZh;km!i z*kBgpO1&Zx(pyp&8zx`P4BSl$9>4E#<1ljZu*5A;)|xEYXB1WNRQ=MxVI@(r7B5h+-C*)%V9nQ=QQ^5qvi()K zt*LTLbqTTJdzqgvI#D6Fb@rBDE)1Qu3vOtWh)|)| zAnlg+eUq0REOgC_B{tKblX^g;F;Kg ze1D@h0iUtS=O#8WR-?9_*4~ak^_*}Xi{$EFhOVjNaT+3Nn2)it9#3X)v)fVEJUcd!y0luCtgQb<16BnR);s_zO0DgPqZ|A&%pJOTIIWIY) z$7FaVI38e9>#IxemN?BV0F;(%_?&}graO?0^RU|)saw`7TUVoF1`otf`bMp4d-xpT zeAu^EDBqP!1RZ-pmmi{xlH5rv_c>_$3U9$wzcvaJd)Bq&$U z;g?OhoL;`xbGUujewLe`X!EKA#LQ<&_Q=}ty$PCwZgCx5Xxp(H3-k!LWBQWhLJ%{s z3=o!0IiFaCIRAJ=by9M3U+&xS6(bu$v&A5#I*EJ-jaqt-R2dpA@x76&W!xOB26n|W9kXS9RKc#pJCCC+`|4|Me<@>hRIom42V??=@ZcV>Iin>R5XR!(*=c%JR1oH0i#5bofjB90rR zk(dq{^mEdKn%CYy%`Cw?#6vN+A7bvP6tCVhy-p!GizM;_BlM^6vBA#!1>~i8+jsHE zM)jOXTJ!teb3%+c)FQ}JC;dPk{?Ff1s0TF{Vco=XM*1WSPadUfS8&Z2JP+y=je z>cyH~b3@1aZ&f<$?G@WgZS^enzn1sBx+dWfSOe=plHnMiaJL=r&+#o+s!0XJReQ$r zPG8t3F4T@y+@9yOjn%V$ z++y15LmOR<0X&697!REDVCYtB?@Zn1OjjqemsuT!M)(1{FD`z$_S4E^>+R|`(nnGgZ7`TZc%5~X_fi&~H5sb8dV)B@{%`ux1p zM$$!k{41M+t!k^4?6~OO%UhK?&6O6bfW?hUPB-gnYfafxu8K5-u&us)&ZsV2Qi2!# z#T_G}zx4KW^Dwk6I0uKZu2DEXU))>>!%@2)yzm?njqO^gIp5r!bU~~ZGLYrS6_c=B zXX6lhe!E~*iYl{DWor_P{;JajGreD<-bj~qjPLnmqoNJZ3d>T+8o$W$iXb9wbAl6U zom(>wm0M!P#~+NBn_18|&%)**9Tqm(*Q%()1d7XZOFVG^0o;I59*@;f72};ixDln3 z>MMRFr%t977FZ~8L~9kVTg$ty?j}RR+2h?DO_miybX@U(>K-q#tXM80%wlXz9Xhn& zHwXda^){hVJ&M+LwLAf8h*HVQ&GE;@-06EdX`a$tUm%mu>-yq0X$%rkQK}!3igzUY zmT~`SGmLj28G-Bd++R`g@D`yaGSKcUa<+FWrw-iEnwwaLoip0M4Hbt8_BYN7%P7tg zQ>>br@)+R;N-?HVu9P@BeLY=qwp;DMxR6yu&Ln)WK|=8s<1XQ50b-1AJjFg7ZAhJ{KiitN=ihZ1yNG&kU2?;!1?Tydk)`S>A-Ku1sc}`0m0so1pn@g=HS53@U$)#)w)qq?6)fwxV3HedYq@A&-3enSXU`G{bM~t` z+pMTih)xJU$? zsnjro0=^5*w8M=Kb(@~|shmj}mLc2%C(i*be^iC#2cL3?K84~}=oDPq8=wADpRGEZ z5OgH^4wakg_=hZ*An&oc20TZs5vU4Gb-jWP*g$4~oh656wWh_eGF)V|fyOj;CIxZ1 zcp2YNLMv1ld}x7BtK%&)3T9tj25a#T@+KGSlYbWILk+ti#LVc!218$S1mA%I$23Fd z>TGE@XZ7qtBVzT1*bwEX1-?WokjP!yW>JB>E|StB>SC$b30ZSy}F4%{`%r7=Iaa2dY z%?SID<(&zJJa5N1vw*l8MW}QdnP`v&F%+RQG(RT)2$A&knrjNzQU7M$ZyfDezSGRL z)=!|Xp__%_lOz65({r5qQKg?0RMKTW)zsr=NUa)qCtK|?v9l|FaKE;N~1_r z?fFYXq<+sQ$7j%0)BH%9%I%dF6EoZhIF7+#O~y0OXxLKwoX7UbY+=n_S(e*&{x`k5 z)~{AMP~Pw9X$5Jzr~Xu}j`TE=CDe41{Kr~A)T$lP zj@2reQ8gGy1#WqiAgXqrbO1h#jx#XUNvJZNhW+WodJXhoK1lP_5u?*|)@{2NU>Zl3 z%;RTrtSohozl*p1LqWzJhxIELGnUZ9-Tel138~<%2+=87sS)$7@~|UH%azEUrHx~O z_~^@ho~+S-Mp-_zyLmN(>dCQqA1yP7TK_;Wa_J9a^P<`{^;)j>0c6~?I>B3W=k30_ z;;GB3v4@??&?B{>hsW(vY;G0Y7=C?%-}$llVrdWP!h-9q-^`>@1*?V#zNd}r$?(0lrEj21wXv}y{NEo&D?&X-SmptgKh0u%n5F=MwaC-&xUV~3kk z#q#Eq7Fb{y@w|V}nDRFA-tQ-HZV6gZKU#}2^Hq(1k<3l8A zirq6gGJVO2X$g;f#`2x+zjUiyT+Q{IA5H#{!vFGM%Y5teyC9qjqS}{FBzjR1-2ieJH8IKV6^<5yulvM=}I|_{-5z_J-%;u+tbs2 z--oM>nBSk%jcIw`Qx5l`WvvJ1aX58+s>Z-|3#L@|(3t-8)OBR)A zMqM|~+ueH1lS+93(chR4n^!y>o&9VfOP6uh&6ZnjEL}OCiDuVex06ViSZX`wChA+v z!*pyv6B3wjC7Du^Ha$FOmY$IO4MlD|ZWQ(oA}vF%B~E)UwBtZ$u|FL)>~IB9x(@3W z5<|V2>9EA~4vO*uPtBoY$%9(9dB*oIIvwCzjFt?U zybxOkK{Q2>gBW55PHzlw!X89z=t93uC@<7j*~V9j+U;O{sv-M*E_JUu~g#U*m# z!eH8{x@75!Cy|#AV6LYyKiMCfkIzg5+3>(3lNe!D+9)FZLWxO?9|Eb4!oXt)3r^T!S6w95Vp z=a2erY*cPYLs(wYK`y8cJ5CM}{uCi#$97e(Z0SFIa9H~wV+ zejIPqNt0wV_ysPWV63=FhdxDY1}>6;P?)|I ziW;ndsm=ogaHn}FVb~^0p5pu%e5x3NNne=mqc30mVa?RgY>7}>o*_FXtzuP^(+x%~ z`&cAnSX`>Ng%gwW-C13-oSz9WD^!JbQkCIsKX0OY7F5OaN89xo;X=e!Af4F$TpX=7 z3TE?vzI{Y1ObdMOd`#3%`#tYv>j;4zr?Y;QZ0TKFnm4C>=X@RwH1_zb;N?((|SPh%ZjLkV8xR(HzTWHVBHsg zt>fmdnSiriCUw4Tg=0s!&I?*HOQPos{4ACj%ycQTR?2$hR++;%$&yK z@Z97CNwNV(3G0}z=$XuHN}IYvn|w=n-<)s<-`89QP1dUcsjI~ly7YpJo>{w1{?MBx zpA|YXs8IaX-HRz`p1?RCqo#f-<0&7Z3RW43(C|SB{4u7^~zFJ zR6-YOD6HU3gbe*-2JAE9S69tfQ*C}mIE zK6ks7(_fZYFsJPp26VY7XqLW&B1_{8FI6i)wd`Hnb4oh5Y!6478w?D%tR^-!?D|kF z1}aDCr~>k^*0^X;VX^P^X^fdG%TM$bkk(w^ma)ZNbZ2{V@n%|oDd_O{gUEsMh4z1p^Io2zZxwr$(CZQHi3)wXTx>-Rlh#Jy+#x%sj znIlJz;b?3MI>pLoMpayw!aig1qAXT{tzv#uY3lI84u>5H!bx)WLs|moqOyrDNiLPj z#S!$gQ!VT!4dm+jwBCPW@{KwD6lU&*XpnZGb!JCUfZg(_7DBnqPsqBzqME~?H7QFOj;BDx@0_F%XA)z6) znD)8bY2a`v2}>xNxyT1YA~8q_Ii1=BcE<%V;8v1H*X#T7vv9Wg1j}ix`o}Af%57pz z3=VKXV+}k|c4b@yU?~jD+F(UHJ=&?N2AsRyWXinU2_!R3LNwyA+kK*p(Y6ds7M9L? zVigsv=}sh<(FPhv%?J4H{Ghhx0oh^xBfq!u0Cdcl)=pj7x1Ap#KQzjaCiQ9&u#q6u zT9aEzSt3d~c{xR^#m(oEInD)bxDev}BkcGE*CE1toxuKwM6oKz(vX5=&@V0V-W?f=?aTc6!(7XxRz z4QCAUVpY}lzhhR((jnsWQp|C_ip9Vt<8sptm@v8>ZQOHN)$#nZ!iY9RVNuIn)AKGM z7F?!2P+-@TPnbi-#y9De=m!Lffbt8B?y69c5%mD4{U<4kj!A`DvG}? zqC;WU*E6Xr*8O)CjIN{4lI}iH;r#5R&XH=P`X|~yl@_?$nV#)@yiO$zlfNrTWnDz`>+E`cL zU~<(a@Y&pUvHm2UiPo}$|07P4wr3i66^mTzK?7dlV&z98jtf0wf=55>abE!tn6YLI zUlapQ@pYe2RB?^$!aZZ6r=%e^zyJ8D;B(N$ntc>x3^4iFiXF$l>1iSU!nZ?|>Pj;` zCMhlu^lAg!VJ^=bO9Xb^P2Z|{b|4c0(`wa}z?wU^`r+e62hB zYtL~XHqXHF-tQ&_xIHdo$Kn-4^~O5Zr&Jp}#%XrK$q`+Bjc<8GD!RpQj`oQc1u#ph--S=%GqTuiFNK?b72LaG-rDI2#R%urkEgl^N0!)r zffI7=um?h6OZ@DWQ1CNug-g=VTqa>De@S8%Vvp82lruzz{wwoO4n@Mv+gA{Lk%nAv zzl>_|p}Kk94U?hG=5&3&>e4iRJ;V&+#+D?RF?-Kunmyc6w5?lDh=EEmZTsU{k`3XV z7nbMWY<1O>g$<(^%M^gspUhY89%i$5;B7^w?;a$2GOQbI?c?OZn??sa$J+x2>ti1y>-^8GHNP5f%_lDCu>7vt0)7?)*4=49zkmf1oa>rV8G%S{Di4`zv5T1NC=8Yyrp*bj9S-bKcbO&qlI zXdQK!%o^M;)V?KB$&G@PRrtXV0tpNQrd`K4x4~@e0k(V5oMg_L5{_*Xqui8T_&7_4 z>l}Fsx8;+?yeqw>n)&-odb5X`jUPxEut1W}i-$Muo%@wXC3($zM&VlNgj=*(=;4Cp zrG=E<$k0uG#V4tS=!yS#pf(wHKxJGHNVF96R&ui4xpQUvrs@4dRA#aPZoT@;d(_GsoT++^Z4Ppw2#Mq#q~!u znk7hf@aTWV4Tn%3Zvh?ZYJ^Bdg7G|@acQ4?Dw@>4dp{23J(>B3vW>58PG*|fhso-e zq29lU4grvw!3k9nhA>xrz+_mgZ! zzX6t{l6yvzqEi3w0DWP>7;y-q-4E61PR69eo#^k039i|P zqN0p!?PVQ45Hvtsq2C8|Cd+W=Weh9fkKtIz=%`je$pnViVDlhR zNy*eyE^*vmsTcCsaZ8xE7_&GqKXsib4`YGDv}`O$b?zkccE}T+QDQgDN;nkyto2Qi zSFXI_AF_rx!H-B4ce297ks`_2p{~rVYRY+1Lumub3LFw zc63=$3|hCb@4`uDHAo|###%00fS3SIH7PntyfTa06gat<<~Ay)5e6&?z@;K0y_(5z z5|FTI1p{$FgUTc|1;15Vl4E4K;$FxbKV?Crfqfyp9t#=i!j2YAyB)tT0G9zL9l%kB z-6gK&@8d)`U7u%J>BQudW&rGn^&|6^KLng0o+{e9RI8QdE%R5-EB98N+58-167ovo zrByVSju5y0$>cq#kDRO?p>pMqhQYzbC>GEs)Ui#~j7lMpSCx023Llh$!OzR9)9=wu z#+E=j z3X#-Q(dd~ilavi%9b-@0C;Ba?`qh70YK}k-DmSvVH!9KmYP1zoT>(hty5&Y`852`P z0?H<8@e`Y9;s_V4)1?hT-hvC`IDCQ=6f1@u0Vm?c8TSlODA6a#*AC2JCUck$@i-&Axrs}Wpt?r#`*6T+CnT+;_(N&6*C&IKc)_+w(FG}$hps~2sFO0s$ zaBSlG7YrK z8XpsruUx>r@5T``$;@cXLKg_&D0u6(l?zC?c&kc=+IB+nzmov`n99=fyleGismE>L z*dA)04?7ga`ZXzX3>=I$%lR%E$nk0~u%!@n$DGw!1A0UZT1SFQK^^o1(|Kj>an!59E`r1k&urUa_J9T%$3K8)9SS~xV zTxYeQ@<~%p5j?PLp#kC-SV*3a?2U>G^3VdE2bJu*_ttZr`q_quoE^gT&@ok^4+{<~ zb?92yfH#?%3D-Bvzz=w{H66N2_@df~h#(PF5_i>s%82@#rpZwfX1m-?5aoH!l1xTB zabvwBSq`C+0@q}tGU#MLYLxB+94h~DB~X3qBSZQ5P6-92kO>7P;9CEW7Jl8G{;z)u zbJhMIaR)4RcpDgkMN0f-ghpfp9Af0XOb9&D6+D&NBZyZi?xbD+3CXvs(wft(-N->Z`RW4aPzN|PnQzGKc8a(+8NTC29RLARW&^(y@4Ww7;ku&9R`Y;K~_%;_jE!Tc6d3swZ$!2x=1ykJI1CIU}J`JQ9E;MV8` zE+&r`+tMhUJxhkmDK~NF8AZ(qoIS}lB*yvu6TCgx>|1u!NRlhS?yYD_*PpiFo%$mj zy`WDS)$RP!+b{Q9cwNLIUq9TS@7OmOcaqubW5Ghh)Lhu^H{Sodze*|dLi9iBHKw}% z3rzptNUE#=}6;|W^oF7u&46j7-3 z?@Fy^f0)e^cu352Bl5&Hbbm_;y{E1-Q*ndK5|URo*rg`$YFhVNCNo(~joZB@VGY>|lo}3S({Y#VE5sCN%jrv(K-PpW~^UwHCxc<+~n=P8vGtWzz zLM2187rUc_dqZ%r2EME?1zPapfpe1#-&S1WjKVbKf;8fR&_?K;e~En(a1BRN%%>Xg zx%>LW1&*DiwtCTEqsB7#@77XtbGUuq?-PBk+PiZ#Xneew3G)i)Kl;3EB^4M(GSptNy!QV1Jnu*LVqO`f0HGvE*$jUV zPK6nSg$@yvKyi@o6aO(tjf(!X4=4^8*v^s8pOtl)&YkXJhEq_iilrK#ZTRe)?ABD5 z32SGYh;j-o%I@K;Ljl79UqrHc6|kRiYfb`(#CYkjF5Pid`}H10|C}6JyJ~}(=wlK) zmoBzg<+u_^*^-GjerDt6U^@BhgZRvN9N`#F5&I(sC5uM^D{`zwg2kF!$KIk*0w;of zv&-bBiM-k*U1fMrI`{uQ!L#YKJP@tm<*48qAN)ecgvO`4=Qmw>d`KEa?BBGVx_4ub zCqkqScTYQdxgRBX#9SH82jRfbVGq!TSmLMm!fQ42r$z+sH@0WTz?K<^^PQVfSeNx7 zoTAJXYOgD^=>*{-2p?Egqs7D#6Svz3bHLx%z`}Q0-oO}`69@FUezx7bYLe1Qy+u~;*L6P{wmi!l_=6@ERAyIKCQ0;3+czWx>x zyzSuL*{5Fy`vQ@d#`=@#1I_GKB)JjCje!q49s(+ZLwFz!J68`oCJyV|y&v}QBn>ab zEagg?66#^{VW6m|%k|Bn10i0iG&43FJa8C^SLX#J9cd=7y3Kxzu(ZUAKQ|vTdT)Xsw)GxpsJ7eNXR8VYs=+$(Ho*88J%+ax&T9 z_SS?(g0!kdk4ejmYsY8hrJUY0?!nHMX9WUhRP>RmCh?W{#{*KHIAdEq0o7 zN$;-Iv9%3723fLz4cTC~M|;%|9Rnl?N16sBQg zb%>5O+o>)?=(Jf3aR0&E%h(fWGj4;Y#h^`sBTd?mz+GLEw5=y&3*T+#^Ad{dX4L1` zccQyn`;hqT>~U(MhT@ODS9J>O)?}wdJ%iTsF7$+qmH@C36KbyZ~9gqPRbGN!w zV5fd2!X>{wqf6A-r+{3mJq8mXN%3^xn)!S`Yuw4^`Fg*coR#7IxV@~bmGynN!`J|D z|4${s*kb3}-gIpOp!e-jm5%qPQ=hz0ZL*q3w}-ihC#}lJ>(Zdc^*VXPwAmURk4o0u zJ7zyLDa+QilRr=Xc%1J6AjMOs0zGGJ0G6Qt0wXqhM^$V1R?4wD-zSw&RorNr&e zPvLA-f3|W2ZM_)JAu)KqasbV;5bt^DNojPadM>$tR3zNw=VZ<$urHmBeQ>{!Y!cdzzKT=wL^YSQws0TUpAF5edA+g)QEbcVqnM!hn={41v}+S5H+0F z6?AI6rjt=!4#gwGdcj8arcueDvhl76r!~IGr$xJ^{Q77Wh zeV+Co1$(POL(B&EW3@QL}R+1HP(Moq|urCQE9o|cS@-CH0Nf3JUxBf||5+mtC{p+(T z)|1BWzA%z#Yaw=_uQYujrx?&|r(|B|Zj~C{K%FTW_^Vu}!cazygM-5A-uELOSm6g@ zNt;MLN4WX|dNr*U_gCF4u%JkJ1~Ni&m@Z(LWG#buIG9bWLTXq`K(-`n>@P5acs-WG+a)rQi0In@9p ze*vNJ>N0pm#pQCTloD~jj(8j+U{*%k-`^7u&nyAitP0~)(&@k3q_d5$G0)_}q}4E$ zZN9)tO^@Y(Wpew`$!`(yU0{QSgHgkErRuoNBg{Z$omF_QKHqw=nX_z6x5c`nTBaSZ zOuKROgVu%7=nLgLq_z@b`L(rt9@BgWYY^yH#?^zaC= zPTnB+gyw_)CIdHC=rqNPtx|H+w@U*um@ic*nrwIOZ}Fd79xDU5EiR-zKI6H$d)iEyFrGEj9= zBJir*p+0iy*k_T2T*=6YFT0ysGgM@v)KSxEV+pU&EFM~1iYi*j>%NVyz#x$7!YApD z|IW3@sRXmBw9dM4O+UvnRb-*WM4K21EC}XD>110@nNx~>#Qj&9>imJ0L7u9>ru7e` zby-TO%ezyBQscpz@&=mL3$LUctN(2+DVo)}aFTPj)~cBm@@TmOAyt{pvg%8Dr@!u> zZQYgn(om@S?+P&K(s;A)gxY>OTXTW###0~jbCG7wlMET6b?XS9+>%8zbxV~+^Cc(D zd=g1pS&P5XM!xBG+7<$HO=3m>K?B_xV}!s((cW6ly89GE> zFY_avwUHMhtMY7hwkj7Q-mf~9B*iN~c`-fqzc*ZB)AT7=e7MjBx+UT=FBA>Opt=sI z-<8QG&#q9Je)?{`go0%K9<5XSpWiQOfECmObs@58PS;~7Q_cBm_7@CO|2-#llj9iF z&`Xg_`mWx{>EXa6Kz0!8mHfR1V?UAzl;@_)5*By=+{|c^8++spq6YMrdh{YSSXRJ= zjB&crUL(`TbOdG#a5*gF5T6cbw{!%$ZVzS0bO;WUd2t>R^rTAr#x2AS;zeSeM`&A1 z)o1-0nY{6T-hci_9xfZ2k@3K9@7s^;|AKw|p8(BY_Hpq4un&Vf((r)^f8*LkfS8pq zHokkMD2j6+MPf+>9nb$5ne>VK3S_r_3ko(FMY0g?m^fXPG`@y5xy! z&;*f;h|-nOV+YS7v7ZAuQ@TR3V~YLTCeF;1`1Fj7NN{Jprtn|^m+R;KCL{4Bp>iPMj{h*bL<7B_YYDrnvo4T2Yu!%;Ew=fRaKxb+zDCJ>x1q3cCnHd1{P&If1tM*T&SB#8M`3id!3^J(i)!s<8mv9?fYz z>cENG=rrkYYumqVveDuPtzD?nsu82#;BzuUyu~iw==y0^F%QK&`NDXtdI)V@f|?dd zZ@N#zuR8NFzZ(#91@S!)?B{VBTXk57^9p*`N29eVhVd zEWs<$MhA@R`62>ef@NzRzmCsvR5ggF*$Xw}0K`Wp0kN8(6=SP~uMFXah1^;e``;=r z-~e4L0s0tra=vU#_pF^hzHEhDU9w_*^;|GhTh5+#dj69ct@nj`fRN3E{)F!li4>bF z^qZr2x@)WV1P=sR1N^uOjfRWai(Ry0yM?I2*No99FTsP25fdmA*HQ69cV*pm$lHs> zwrUlup&=zN~e0wY44C0>gNDW`GDWkk^MA2|%NxrL@{ppIp|g zIcU+@KeN5fK&(4^d3t#8k~VM6`1tDn`iRypU9?&C_H3;;WV1KkP%&*?zUI9C@{-1g zo0=t6^z~)TAo&i&(0$ci86M_4q~3kLydU2AuEMagHuR^2OH|QNrg!JgGV-UxH)*Ph zDYP_9xHhN`D-jiEjz(CiGphsk;A+xw?FF<#@kP7|FKS+vf4 zBP0rX)1V2wp)c@fx=DM3kWr8i(^1{jZls1Di1K0=63p`3pSjcib$j_!V2%q9r1ItPAWMB%u5G;#@> zLIO=dz=EQnHhD(+CwIEoTUC}I7Qf-s%nna0k2_xPVzQws`|alZw)MoOtKPqR*^qHYE>zz8dK!jjcq#cnK zjfom^FcaVV?yYyF|IC2Ij@~HF?n+f`96Iig*Yf9g*a*taMmQ(9uw%uw2VqJa|r;!qhpd%;5~8&X+s>YkDsX$pQ_StGPU zDIb=7rwf+HGG!&7Qn@*`TSB-ZLCj)86tsV@OHz5dgfcvyt`-7HPe)N1kNnimmaZ1O zNm@r91W#_5DifytzH%u)g6;uODwuu; z5g&O@IDW1mkuRLlu7uJtr>%k!por2D^7lP1pVCpKvVyToTltuaU)h+wu7X4l3c(Qmp z<%`ZBZlzow1?X%?hH^A3+_g3ij4^SL2}$d~VFIxh0m@X@puED$J1 zqcwF{wZr%pk0{Ko!!@8e$=Ys6<<5reHY1kkj?w(%QQG9}L(Se5vq zI@U-p;FgJe8$ezhPV-mPo4r@hXWD}+)=>mv+?7wH{MPGITE8I4@pxc_@Q%yq-pi3V z?U&VndU*yNUk?1zn(LE#Z!y(vkzsf7D)GW31JQrOOTrD>o8fC_!DhnS(|UyeK*7dC z%(%R3(unmg{1R3Mi&k+nZyG>{IE|qJA@&*ev{USm5~>>6B36mc(jps0-{1u@u4`|< zgfVs|yICyi=qq~uh#cA8Vgp%t#YRcspD_%#>|YHi01c>=*CqMYX;V^@;9n*|IzmJ# z)U{=UE>9QPu3H#Qh$Jvi^#-hK8L6yd_UfB}NS;fqVe0a%?6IxI(B}?Nj{=^Mn!t`% zrQvw?gqx&=NVZzFAABp7C8r`}l{6$*DbP7WGLh*UwXzA@VY3@J3BBT&11KpGjD3iX42H|;EHubW+{M7r#LsL z!a^Y7zQ&dV4jyzD?1t zpjePes>-LZ9k3qVg&;3f9qApktd;`PZEVZLhcM&(dIO|yAf zQW$CF$cq|EZ~ z>xEzeyR;^|x&}K+I-VnSmQOWYIBmY=?_sKJiQmtpPXzMs3uE`SWpl2dK0|^9q;lR+ zoddA$*6g~2nzWTimY>53&G#%`jbb_Ml^pY&B&rrNP9P4!*_$VLs)eSlw+w90j9zhF zqWfT`m)-_lOi9GA0Z7~UebeZqw^=*m#?oBq!R~6 zM@>DM%5prOvNP#nI*ewUCG&SVCOcz?{OGt7QC#_)iv&HmZL00{^qM<8)yQby>w_tn zySYH~spxfoDCKQOcv;Z18|@A&Ne9K%Uw8a?C!gHko{>3^{tVCTK^XQ4Ytc`V+Jxp! zT+HU*=K;78uQU9Gz}exPu+IFsO8K!NgY_pjqT5dUp%|tKul||(-)Cmnr3so^!J1jG z6sz>-_epA!4k0L59jww{MtDeM5NB-lPB-M}X8D}_4~x7%5BD3fx!%t=A@g=V#`VXE zisw!a?=iefBY}=`ESW;5&uK=V-T3n}n|ZalS(xuL(^#AZjctVc%set)xitfgtqHH> zJ*jp6aI@DWyW=IpWPH%{g@S9*U(oZ>OtkU25;8V7UTIQhBJgD)7zR6Zr@rv*+&^54 zTt16b*B*tPE00eit+i*}L|}aj_x$F{UcwKP=4T2yy&vaip|LsNFNu>ozTR)I<3By# zpO2HhmNGpOGLYgUu7o!}6~PEYg8RFZ!Pvx(34kzYu}#1DSA}06t`zC?VX)`>qCC^c zr{LkM9^}J3kY`|80Y%xQkZ{Oat##AqCfV_7p__ zOVMY0d0oA6bzHM{dWq|V)zY|Pb$RWQ9b$Zi)w$(;q4FOHdEzXNJJ2?y`F}( zy@i>BtEe>=Ifz9}QDbs7WG=*#db&c-yb2C=x7ym=W%0aeEKW~!MI*x+-Q{G| z+iNr1+P5EV?hTi>cbj}M4DzpI&xu^dsJRH zY0l0+;?>JStRB2PEk10PHfc@=ZhZxAM05WK1$RE{9HeXwC0lD|cdK}=oNdo|PxMWH zT5;XMjg&49^>QA?{5U()f)1G2*rek5I6ocEH}-zZGo^VN)>FnN{d1r`dpvZ@0_mw^ zEDRRyu8H1sg1aWn*pw^~kD3bs36iXe6;)-*RwEXTC+bu~Txiw|*&0#UGo4bYq%nvk z3}CHJG5+iJC?_-;KzX)r{D~uiym7nhtlu<3#H_{R#H4jw_G_N& zI%=_y&~`8GzlG+ z!@46432?34wa!59ttLoZ_|Lg56}L%h%R+Y~!TwIg+mgrVvm=rJ9#?j2#b%F^HWq-c zm33Z?oBV`m9JoB*-WojE2pttovKt7v<1O^5N66Bb$R)&y@EWsCD&K`*yO7Ib!GWC2 zVud`Z8`Q?SAO`3gOI%A3te@}0k>~_*PIP%6v?Dj-b`Yjp%fAhRhXwim1Yt*B4TJQh zchW~mJm5Q+WMS7+CNzCNoL?^0Mdd(}LXZuR7UTd5Nur1SZP3uimfU4+_zS!xEpVWQ zO{N9sxgbuA%%PHs+l@TJA??OpUPz_B6*vTiSntk5@ZPG#f2=kA3=6R{$k65uj9qcVj+d{m-<~A9@%H zXPMFTpPcnI`gm{)qUy8}=gU1~hvzJVad^sphvzT?6~kIYYEwAju{EZCYNR*`IcYw* z)8!C3h;^5hiaH4J$9o1!>i~(q7uPe9KiO*5(8+oG=-}WF3@PUo>+J)HGamsO+hCQ_DKtGMHb0*cJCCIu%Hkrd4z*H0#orBS!x~8 z7DHT=v*B;NDd}=dTxwp8>x8I|JmeAhf|HsWI8i z%G8_5qiLGZfE@}VBY)oE9};mUi=T+u)kQ;4GBVy{RN~sJC4z!(g1Z+Ej zN}DMnj7_}%!8A*@3VELetkNobyYr4&<>`HZ2L1S)30hEqgC^vk8(xg#o>MQ#h~#|0 zUH#E(In=W}3wwraL~zRn8S}4dUNg{G@Gn)TqB&!<-Xf;i(*y8TOA9fE_*55{q+S$x zLkookUYJF3B{|hgM#=-CRV#-#Wzg$`Q&6VQV+Sly1b@qt^F%h~a@SqE@^k=t6tI4{ zzZ*@B?P-4>JxR^&^?iC`OU2`Me_r!tulj-VhL16d$&jec=z!d+1++zVOZ1&ILL({zc1Z}90i(oIqx4l0lO+3<#MR`8u!4B5g~S0nUd-Wj@) z^tEB$Y2E|PtDM8Z|Do=KZMhE+=Ab)sTA7w)^^JymVql#~ao150^bvJecY}G`TY7(Y zeJ}fa`V{o3Ck8c@g41r(I#e5(0R%6Qn~^c?Y503 zIm@vyuHd}zIREA$X_{rala9WZ9TI_=O^>g^v|FF8~5{^ zxc2~p005Bxrs({C<{JNZn#7UXmJOCLa*yafj*91v$I6GHCrW3;Ra-?8DS|nkUIS+f znu%{31{P-+RFOc~QW+3Ge-k1gN*lx@B#OYExk0Bl)XdcNdQ4_ZiA)h+@z~lLx8wKm z$4pjwa^;sFIk!|gUNDMsZ$UXE?AF-Bpo?&~b7MMHIphKPBYe1kmONNmxoV|tZ!;oi zl-q?FymLFyUxDMii1j@#mwWeP7dyYzWbzRLFH2!&KJ1XD>=*KP04FeF-8p7XJbYfI z#W$z;H~Gq=&NhVhEr3uic>xA~>`zl1UX%0|Hw0^jVd$l?wNmZ4|AdbdR~u-2GRvmC4_R# zxa~I#BvJS_@iD|&u7#--XdLjz`!NYsfB38mu>cTVsm?#Ng*Zwm4-tV_6rZ$5u)+$R zM}~!B)}``e##p!D-2LpQBz0e{`0R2=@ z;++Ru9s{C06QmA@lI|?oApvBf0yS5U0MHKea9^nz=~3c&NOJhdzcdbEf(~In!N394 z^?k?+Ix7TfLaPc=oEL!?wP2+x)%*anzZx9Rp~#-X#5VKhK)6wskCfgKf#g*?xh&qw zMZ?AQv*>%K!GP^xX1NOlbC8AB<(Lx6ac#Q))D8ii5h4i02oJqv@DMoQTL9G{fdlwE zZ=)Frz`h9PbWvzvPDwHnK!w4lxTnwmQJ0_|hbt!NL5 zlxQ~LFx7CTQLRj_&eCUo)M(eQN}+xr63aE>`jcu8u7*TOE+iCJ7Sx%oGWzKIj$cnBcD_Q<}?WLEy`|B#n z3ImIgvKw_x!!Lv>&4jv-nc@#%TkSNnB9lZ5KH}}ER7rY=P0F@Zi7|7xmsY1*TPDV) zsO}HD$L$vKH3o5NK<6k@lPkP=ac0CO{jnTZZ@E|n4Ty86Rq|CT{uj))Vi9(`H3^f1){Naff!5`cd7Y8kPEx_-t2ndOJl%{eFQCT%lFUMaeM`Ah{luGl61W@B zgLn@L3lk4G4-RtarntvrjW<8Me+ah{Gmj9jVQzMM#a<45I)XgOMs;&aJ>?9)g#~re zmZlB`^c>!&EjATc5!q3c8%BM@5*bbjc1Yy*yg!4k_iTUaI^{g6R~zh?1{)=3-dcs5;_^Nc`f_? zkJ2IgrN{XB@5ls0-2cS}`rlb9SL*-o(jn9^v9Lrzor~VMy+)rWe;0qQ=%LttMk_2u z^<@DZhyy=fKpx-%s<>YfKOMOov8=GX6C9Kw zn~B@Uv@#-=By9w_q^tA?%p|iLrjdTqjLWnu9<~c;iF^_@jCxkF*9zBB@Z0frtgjO% z9;&_DkW8bnxu2*8^jZxE-K1Arqav_lPThVq^$EpsNxGO?xGKX21c)c_ws_Zpnu;x% zzPyFX#jx`~(?xUS+dyhHVlEmKq<%vcfgc0hqu}Ed-B3+hH$YYgXU*b!=FsNEv|_Rn zg7G25KdfC0v$$LO!sEjXMry~nS_s&q`SA_F$Y{B~j^Brh92$pkz$eVPv^%J8_CC5| z`<;^?17QN=(lm^&72y$5Jtg>qgEJ%d>BmDMmE~g3HjM;X232Bc2T4BlVK8qM%s?#Y zRic4!-84=8pVc%=oEiYkWx<4(?G2|5969Q5yJxC+JU{PnA=;V6W*Gl)jr+y*i!h)` zK9arrw~CKNM38>GY|7x1U57o8)R zlr*CoZj%I<`gs|58SbHHf4M&aXryVGiGgq-L2gfAf1)rV$=aY8DI_8mh!5*c)Qy0a7Vfxfj>|T; zNJQ>cMvig+Ww?|=vr)Ze$tmCxoRCw1l5C^ln-M0NmfQ=U_#l#zvTz!h0=oI^{%O>Y zQjd&U|3O#>#MmMdfcbreaYt28Pwxu&KD8eIaX zdfCWU&&jj#T)hrm{I`XDp-cS4XGQ~n#ij(V%YH)y^+wvRlr*rg;r?f*Z4UR_^V`V{ zukWYkBUp+FNcw>q(PU%Ct1GqY*8qVdDP&C2)oRRy7!G2&IttU%W*Est6ij@{EB~zy zdhNPx!~G<;vTqV8Ipn7VEf>rUQ$IOU%`~)SJ}9Ix86B?jm+lsb*A@t^&)3zkEl=0$ z%gqe$_sN^6uJ_MjVPx;maNLuB$1=%}E(?eiw<}t>gi-|_vmp`=%GFE?u8+9x=>+l` zen$sgU!^77>4Ie{UGNzu3*`aPAI{+re(m$r!qzUqQnvfQE<0;CZD59_ObsGmG2C^d zp@y|=n2)2qjFl#8dBkpzleNjH!U{2lGjiz;vV8Oe$tpTbC`zU6zeA51%CxWE@P6(t zyJ!F9yN+MgV!l&6iCV~E*{@_uH!j;=gDC(GwKtn@(qA(Mb)3{3y!|+v>vle#-TZt$ zM$)a&CZ~T^(85R_&2vPSc0?JCSh-m&W?NKl;CJM6{-_!sy7wG#%#<18{IwZ%22(LT z#KU%a_HMnoegXY+k*AvaI|))p1cEop1gigrW&+QNo8#~6iLTe}Wo@pO*IVlYnXc`l zyt-OYc9d}cFd!f6)hN9s(cesh%dILTg$MjO^ROuVG!_7{z8u*>6wu~QRuO=(y4VeE z*Ev_V+p?{PFaZM6%On|DHnM1w^1nOB=|U}55PD>lR;UtTqajSuP3o_6%q8Mcj$nNL z{C>p=&7||d9M7JUeG%10RDB-9r(~QW^5|3eD0KFk1c(urDx>hbq0Y%R%A=gt3Q{fd zLiNXh@>CmkUZ%UYXlVKK%|rUunp(`}a&hd!{vx`bk<-n80+lt~;br|Y{d~1C+PSDs zAL-$Y=7^zzz~JT8EY|_dGC(OU()_{c{-pD6lx>kZ4|_U*G*9G3Fje&osh=s9)49oE z0{F`Tiid53Bt;4PRV45#8Ih>dG!GZvfv3Q3(!wHin(Qbc<1 zc<{(*IwiydmxqBoE-b$Ds$Mc8gUHYpTVDOOHz-K%D8#RtVy5uiX`kam_LPl^W0g-{9nRF@Zq zF=Z$IgDDmp5$9Ci-!<@-m_G1LJ#!)jbJn+BTm+gG@X5eRp#-u zB#mWbcLcx=&(uuIDLe`69wC`(LXB6(zV+@wD(GVfP*HUU0=-QU>h-&a7|M=lV50Cb zEoNilz}#in+Mmm74h1kKTSDZbLa(6@+|g1X$7c-B_nwGN~BrkHfaplzqoNK9dpaMh;C=roz8}Ak5ORmfJkkk}+rYe@h-c-4gPg$#kqnlwePuG{Q^xccCt+ zO{*i?)%X}No=s!_^8R^v0_YZwS+{P%IK5*EPuK!b()pf}H+e~kIJtg@m_ZMktHvy3uf+CYK?Ejo) z1i78Y4toClkD+sYp%c3Jzr$7if5(vge^Sl=PMEq<`+ud0GrbcDhu0yeB`71?Sr^LS z>Iv2mw|rh)OT;T2!sC})=7q@TNk@|MZS|Sc**H=rbeQLk6eYC&hKVOx2+I&_f;!v^ z6Q(jX?syG;xuj67faOpmKErpT2CasgUirC&_0yakS_Rk$TFp+Q zJiIx~2*%KrejDNb?WAMdC*Rup zJm>6nv)A3Mdg`j48a2m!#~AO=g=Pb`GCRaO8SLkZ2<-KIHOd?ffJ3e!Ru4u$@X1`< z3RAG@+@;q2j9CNOr4WG_ycNDobG@4OWhCHt0!GM9uh0Erz;R6X05kR$A*LgB_ZJd$ zb3ZMS7Tc?)u!9vok#mycNx*{i#;YC#Ml0o$EIKq+0Nc$e^#~AEp@2+qINS?8$4^j% zR3p-WC8LE?o2lByHcRG8$5k*tJswI_ZfPbD<}Afz**<{=SG(Kkt>a_0GL9*FdqG4a z-detrc!FO;nV}>KmIXOMhpTsCebvHOzrf?xlYg^}h+~4@@s6d3<~fhG;0fVTAqC7! z@-+=c`n@H_>BWnoVXO)(Cz6gkOPjQotBgYz1SxjqS}Ju|6d9D|`vaS*RUHFJ>z?^7 zCCqx*7(hKoDja@%im1fxDmG09)1fbd$i@NxB5A&gmVy$G6L==vv%Hp7Gq)N+c35p| z8SZj$YL3-Y!jiXtggdn-teyT758$MoXH53CknHE))y+7Cf*Z7eikR z1>jYLt2V|cRBL*6lH_o$ZNhjs!*m$x>xRw$=|1NGb-~^3Kq8YfnR}RJ!6%HvP=qkQ z8ItPdgY+9-k0|Bp7-?q{sJuwBpfUsCd{IqP z6h;`Fw!fP^e}dGpYIw_26(r2NWXI^g?>B<2qnVoRNw>yDqq^Xry0F~+{&M;$mymDa zCDd-FupUXG@{u0`)o+*JlyujS1k!Ve`shHp$Sf)LlpW>bnky9fm?IZTOCO-l0d8~O zk+v~ae+L7b(tqJLTe`T&%4>_B6uw$cRlYPrU99oF^OR{YR7}oUh$sz51h+*;d5;`> z>rmTK$jRp1^iG|T^GmL3dQC-B@}6@|44zQmG?_>ov5ixtacEC0GRavY^Ur3wKO!a4 z9G>45`}K;ubREI=m;(Kjp?d)f%J7c+;q?sUZ62D3$md*WBqQw>c|I@k@oyt!Qq}FZ z9^X>d9M1p#e_>+y2hnw*p=-OYjOr`4$F1%&jXdmPB_>lsW{sq{tlIDf^wla_ou$~`#i8rA2FzHT zp>=Hac0P!nn?joM07Q`hXHLvS@J0M_GQkS|yV{dbio6@#)2*ubBk;QO?Vw;@qN~I_ zO2UJF@`F$37R!aowpDABm|^UU3l#WEfhcn*2Ot)l7U}{@&+ef`yaC6r$!UB0;{5VW z^N9}?JQKG`UmZC`z}IoO4lJgHVTRw^>G9MNH_Cr=rfKy{=dF`r1-eNnvtxA&KB#yQ zojhW|>sE{jPM0?o0^ud>&=WT-k^5mrTZhQFHgKjabf=c?El8x$%C%H)D8Pivf~|=z z)sk(AE;Z{2#}BMurgvGOa@O71s9N^xM&Rp2;_CSMp<65rBOf@;hC%C z`^Zd*VDfUnSOAlfNYL-~3??v5*;=HmK84*aA(2=<&PZS)7Ej;_!@K=S%#${?xWXaCQ!#AWE}}vycLjYfbx(&Fo&2A&FG%j7 zrQ!A4iSHxuUI82rfq0zjI)l-SN|Ot>NHFFtMTx{t+Ef%uNOJNTT`yj@n{_Jzk1`5O| zjd;}oYJ~Vwk@QCK`fCjS|CgWYh6c7Aa#des0ZdQ*qgDHAWH}F8*Mx zLIBN`P9cCeXr@SGn`kk;OLU&Y{l5FH=<9yCL9~C**yT1Vhtif~AMB%-f=b8~sb!isi1CMqv$Hp?nvyeZiEI+tY_e0;%(k&~1paWnJaaT2@04sMyJ|u`2tmlZ z4F?!|+1~MSQqDJ<_xY!Dxl1R`PZx`$3GoZ zDp4x#B5Fyyd10AkPBsDsUw0b7e0#b~(Fj}b@0~sUZbN^Szd|FK7tpQ;mv+%;s%xex-CqXRsrlbL`0gCA9pq67zoMe#Cs#c&=? zbnXWYW?xZiOQ+$)`ln|~mBNs@?6efB$SLW_jqa=khuAngVJNf3Mbe$wdfV><2vxZDFba=83n5R0jbF;L-tMIc!-C&0Mm* zHdQ&oZ_CClS}+#j$2aOyj5~vzKxZ6*Mym+(2g+QhNWW-{V3BuKyCB*!(kBYPN{&}* z>L?{JGv=}BhNeA<(PR1oJslxRsk{d`8tPdDImb_wrxpXTh)1hMo8{@c#`Pq}$_EbM zbG>xb0eE6z{(gx;JJA}x=&ddsc$erdxSwkn-(kyL?Jl{jV0+Rr4p z79Zyqr(ft$B)uegL>;q;3ALBn&R5-51wZ%zAJXqH4P)9Tl)tpJ{@qPZHL^eM5FOUE z1a!_v?~W;8ExC{jUzj3^VhXO{^u!Jf);|*H4SIk{087m2OIwZ<;c@$Ub~BWbR$5kp z*f?rlcp3nokK0dztcoAXoSucIY6FC*6;S&Opp+R-jLtcaYGxY_p$}PqV>XDYAVdc^ zRPE=CTWdvOpha!;KiF~8ViR{OkCIio)0(Q>rN_~cvW$ z#k;iW8Rh%@^lD(owB?PUz`8g`Kxh^r_Lqf|OZ&TBA@f*w{09xTCy3@sDP~JRzmqzl zM;GcoC0+|=x7$!~X+n4)^vf`u|K9}c3Gjiu0}vn}hi~fR|8^{6`j?CEpvtBNiU4XC zhF6I3WphT3OahIJBs)LRKw;`5u&gWj=-lS2vk7uSIEFu=4(b)Eh&(+iST8lwKv$IY zJuMG+hJ-~GAaPHI$?@@h;>p`_%F0T%U?x?b&Odcg+=o^ScC2FsVWn2o#dXaj2vZQ` z?q?)cRU8(YQN7Q@nCM>U%vBE!z7(h_Kh zf69AJA}$?W{)e_wu3)$ar?a7N@?1;E*BF#6g^})*VEM5Kat~JSsd*Cj;e*z?b(5w^ zfih)AlO_8EEq4g@I-M%^nQ^nS^(HAclsHvDXj8y$>im}ao-uI9epb(TkcY0O^_D*!ofR=50OI`ft@#4A)%_@f}+Elb=ZPp7#V$(L8MkDly$qr3x z^kynj&s7#8Sg$d}*{@5qMW$7)VPmf6#bfvvIB^e@Op2WysSvf+JZb1I>xk7R2MNdH z=0Bf!|FcT2X2(og|Gh!we|O0KuQBp3$GJh(O&b)k?<)BzcjRB68?LR!<%$&w%V8)= znS2O*y%oImA8*4GD=W&Kzd+{1qvVT{CBe&-^Dkro)l`yxd@@VLw!LW@H8O&PY!VAN zo~DnP%-b(h*;f;{MFN<)e8w9w1=w^t3yk@3IG#QWWxJMYn(0AE7$mpih++-FA&L7^ z5A<|2xIGXf+Q|^J)3lJ(A}8iEdH(+sX@X$@y;;##LYilFj148 zI<=s}2zJBxGluzXn!Qul44X0L#Ek?n;X;AlJI=^?Vv;9NX!R3?Fb};k<1xu%t-U@V zM8`rO^fd;YN7grCcu?aI+2D0H#UfD7oc+UCm zh5SgsKw)l-?19CH5!>K)Cow=+qp74v!4dxzfE^5gJEZ48%76!RsF!hVI&)!CM=@*}5__PuKk`OgI8K-#VZO|7j>8oLt(z zHQhgUekdS;QR>f=2pzk*pDzKXu`k$#R@jeJPnvcfUNQyT5E6;%%arUf((kAe$rrtWyaf6OC7zr&6s9-}~-4`7`5Zy)&>SzqH5oUI9Sn-Z7AZ z1ueG#lSanz%grT_{sAc-HhDl6$Lm^B!Memq^jlrY65D*aiAgy>`|>l@rW^a?g~r>( z_WgBs-M5>7cN_1@i`%1t*W(Yn$19QdhaFZeu-bJ6(fr6dNu-zaE$~hpFi)W3qCT>v zY~p@rXTZnR(3@{2BdW^fVBUMZo507* zJu1Xfb8AOT`g!^VfH`vdvgwNsGv{tLkM^^yXI}1iBe3c$gtL;>TiUCh`V3nqL!L?? zYWnQ>He@q~N~5yyi1cl-AT%EBDSc-!v$@oyn7UHqW<{vGmR|4GRI z%aCUBJLLC;|J4{nv+cRh;)1Lxqv||ISQsz*ttJHUhS3i3Pe=>?p{Dz#?M$su1$0xe zD2dt-@d&a&z3?O18#~i!+n;$~IzPD9s6usbsE+)|wCis2Wy)$BZ&(;de=MKH{P>W& zxO#U$E`S1y<=!&{ub|p8vVi0liHx04j$ZM$b=TXJ%U>qs^E?Tz1MC6u)Cg>k5%<5z zk`oB_ktXa_l#9ZyzJW7YhVK9J?Zj z;n3f?DY__@((E6Zd}CB*DB{i4v@pWC?m(R^Uxqeh{3r|oDRbd( zzeEHtTjcitvN`0Dt+nKVI-}fxkss_aF25Vh>Q=w*eqw9#Z)h88D?;l*MilmVs1m-C zXNLPTe|)~&pTxYJtm^t^Px*X^tOItaGZDd7r9NWPk_-LRQS*ULUB$k$etKl%JXLul zJC4w&-^#+TT!{#^Nu;W|1|x1b_6@@=cDrUhET`cx^G~2@xP)4a@gm zzQ;K|qOoVB_c4(JRuWDnxS6>WSZc#`fzA&;>CI#G19e<;|X+ViS4E`Rot0xB{&hZV_P$ zBuFmweCMdrMVnF$OTqyHYyL&kwHUuvURXapZAv~|pR#=zL!TVfXp>)?JGrUf(bQCq zv%SFLfY7Y8E;6q^HDxn--xS%lY!5qblNNl$*`!d`FrGbMeZF9AIm;3$3@i&Y`_-ye z9=;-!*Tw7agPyJE5#^OMnfkIv0$z)s} zeW4topj4fDnBK``H)b+vKf$GiGq6!7z1|cds}fgujJj9tWL7m5zF{P6#mUxduoCnm z6m=WuN#FuTKvUhXg)#^|TQRp+1vFq#9<0~bvq*%_RwrBcKu%ZM*VEt~zwEhDQ9n*i0 zlWTt))S`L+!=XE_`&~~YBDv6a*5k6r;le)-LfWGTrGKd|+18*tiyj6!=z46yiFS)ynL6bnReL-Q~a$ zQ6-XiIM1?bxk}%xshSvgVwWEI1hC!ib{@3Va7QBPCzMSvt8qp>tWvA~xQ0|aYIo=9 zz{4$q3<8fN*@k-rB;==FU7jE8lB9#bjGypGURx!a)aUkCvu$CS^a|-s@8OkfUS3Z4 zo6jk})E|xJM2pTdc(B4Dm?$VhiK7n+{JuR(IN@0~yE_udFjauZoU%p_%Q5<~uoC>8 z>-Mt;bcFu#?&%YTbWiLIPmdi1EbB$s@#6y|7y{mJ_|uu^3tt^Rt2Ev$+A0wkV;{wQ=5+asHeA3Ty?)yO$8B5alXm$;No>tZLbsqNF&?7n(o&F+hJWV6L;f73Nej(v`PC| zj2Z|LJ8pV$A*4u0>UC0XV_R4}K>>ljHpI(O@pnRvV~|5DQ_7B{B5>BM?P7i#zJB$l z4)34_Ii9)G3}L@&f#P8VnCx(bSJ)lu1!8W@ZiOwdEQN0j@9M*G7CISt|(-5|$ZUcO3$pROvTwCu_Suw+yd^f?5cQ513PGe&g1 zgm|54;U}d1z#|LG2{C7g@Bdo&ne`(Ro!Hx~;lW?>%DnYjj{(kBIOcTC8X*B8k=lGE zr7_I*cB8u7mp1N{^i_uEt{Ps5t0hAsU$qP(pnNO7QM!Ra_D(!eQOWLNoGq_7Fk=?f zD-*n5bDpC(8S}^^^az~`R7)xa;wLYFkyhRT@q6@a0(C7SF}~6z^GEGY>j$fw0H(oQ z0#<48Ni2^1U+y2x-9M|Px-4kvXp{j&!P|Rz01pjngaD4c7a3`-X1xhRHi^;v+eF2k z(Lw9|W{z-1bH!%bBOR<|*P%NQ&)_LQXf#`W z-3pm~aXr@8Xqgh}ynrOx+v{StwLkbKz{d)o^8thr488;tHpO;Y137KYuFh*Z*x zX>fgyaRo0!1IPH2fKBO8)9h>?{5ARQ$paDqTX44g!X<5rsneYB;V!#+P#*_TeFt2+{2_E8SRC*nc6dm;5^n2POz|rb_6kD7 z4nYqA-eg|mwKwq$-7&o!7 zp-w^lUVD>hBPy(;l3W7bEhx5&K8KI@mwyJzTYO*e1}cCtRH+cl`@VK zjrEjU*jHY*#lCs{V!g%0(Ngy0-n;vX%HN2acN+;BQ%7m84b&PF8L21ur}cPj&%jMM zaPUEc^==RvxT18f3^MDf5_IZ;SgyrCA01kUVkB#L!5s3dtHd3QM1lu}5dt0hYh%l3 zf>q6UrWs|D1$hv|&q;0tpl*qN3=6m8bO2m27=%9dWMDf(xzk@QiOUjE%OxcQ1AM_G zwj!3!;5o$KiSP^Z>A`bam_?MJ{3R4{-Ivxf<_8~6hLU%cJ95*u?T^Tf_PoQQu}TK~ z+9mrB4b&E?aB?KZRuy3%GnPMwa}U%+Af`~>PV%N1>rdWp%QbJ%S?!;K=#Hn9Oi4$Q4AkCY7>W56y_k z%>95yAXQ#H5qi97cp;Tta(q1%pyL-qNyUpvLlLN=nlQARh@GW@@KFSRRg8BPYvY;H z{l+XCjIHpl^3|^SyRo#wJk^bQYzvY4!k1nfON&Ey7d3xTpXs9=o53t2kj72f?tB4x zb?9RaZ7^^ckp+}epGx190o*wXAzi8CZPH0<5;d6zZ8eHi^yNeuB|rFXinKBt}KVs+4?l%q} zgxr7~)|*VYnr!z0uf9S~ZaU_nQ>2J^!;XQ+D?YBI(-qr4twWmD zkfo9rh}O_$Gz=~CZq4t|XCANsNjKPK94)Tk) zxsI0z)cri<-EViJ!#Rjn62WGOfA7}Kp9!1eQB7fb=2|j~r$LP#a=}z^@-O)D&A#crG7T+9Zm1+UN{Q{=lr|q%7C4PNv_g zw8sI4fn)%oHL3MKBB`ul ze=l8{`&@7}+W*waL^`14_FXR4dfFWE$czTlSPS~Wtk={+KWkZ=C;szfckt$e$9gj< zu%uiKC(u^w1Ql~+MLipqX1}?r*)85V`f}!D`xW4-)8zvnJc%LlCg*qg$-&D_tm}SJ zu}drJ{=ul&w%2#dA)A_BEZ#KZo!-_O|^l0D&UUPyhO zg_09m(UY6~ZCu~``vZa;0^iTwQQvI*uf5SxTYj#WdpRZ(otYWuG5Iw$-S@L+wU`(J z{+HW`Vcm}pdXD-KvK(x7o@Gq*M{%0p@L@gffX3d)I;XB)t+}PiDMupqLUg^>+?X!% zUijt42l*<9`u$dGf^{!922Z?!(|fJT6#YqN&cng{ADJ@=_$2+F99sn<7S9VHZ4_$M zRos)%A5zc>M=Gi34AdTAE-1g3>W26dN9ETWU4!XGszuQ9+dVfk|GFX<` zu;C|)wQuh6i|kAtnTERhy&_c&$tx$k4xR4|c`k9gKGDy1UwbBHs*0@(*fHS0MR9mC zr*=2$kqHiu8O{HE&?DJv_)`~DaAh}y_L!*YM!I4NN3dhT;6ee{U(GSFcnw^wth;S_ zB3q+)t)(cL7A-3fsf6Fk1+HsHIyg_Mha5k*NO^A(VJw1hjV;dqJ<0cOC^4h9kzQ(` z!dl+Whjz2}@4aRWlm&**-_^ts(*HoP{VzKMfK&|5Fj5!fh%e?frjX85fSlQKtZJOK z9xXHgiw}D;?I-6_2NQFlI36f52rLvQDHI3+s?Z4OBO??@?+fcz;|Kk%iprB+@c1I1 z5d~B(Z|vmdY5D1Cb$Lz2(_hF6lBQ&R1yPN*?YiwNmr90*dO}Ilw=6k=%}&O1b>pJB zUxOOhm#$0tt1mk{%iV2hG2(n3asin6cGzdzOGWA3X zXg=umow@RIJ=|eWnKsScDWwz_$1j7%f4}?k4?n)uGcW9f35Thwb%>sDM9WzT9r+ z)w;i4Y`@+&J~s|~MO*!H!u`?yI<>RNM6Js2>T9V>pF}K&d+BwRhoT1Cm z-HC}{DpG6vs2>c!1o#hbY4TC@Bs8Ml3;?}uFdMxygQqdr$mC$jT6CnNLz{!W0cH>_ zwdTpm%IsUpX>_?hWNP@ky91VTzFZ(5vXT6X76r{!{^Zw>_m(9bW_G<_9-Q&3>vYoO zS1mUf5~CYCi>aKJR))G3nG~r+jtUMA{}$59_1`Axvt>d+D3mIY97RWOtRkv-(X2N0#c-0dXCtZwFObb z(di~rj{XJ{w2Oh^Bhfwe4aJ-rRaa6vCqX@GhKeSRr!4j~?F4I~Il`en%1%I}b{QKd)>YY`&0PrtDVM zM`Z zyr4|uz%w3VCsGX+(`R3els)=RQ16jXVm(P_ciI8N;@2!SL(s^nQyK*H-qrr{wV-Du zDGJj&iwr{f*@6k_PqILBO9SrKR288EyHHE;o1 zU2R$5mImy->~_-$g1a+`-I}HT(K2WRCQuq2S5yy2SVYOXVVNxLjirCg3tc6OQHXaC zy!?{FO?w=Kr`xfMdqGu7LonSt#Pdnshzvr}?)2Tby6xQ%6!%U;eM3&7sXLc>M(+3bK+kTYa?z_gGWGcD)d`yn@5*qV*uKb2@lT0jyn%>)-=hj*LtM1p%(G z?h)HN%P)&5LM*R|d&vgz3)ngHhQG41E3~kVQTMXF1yf}$vGx$Y*6?{)R8vQi@flGD zzZFWdHr8IeS%|pOwUnSi6IPm@;VIh8QI?olz-Dx@U9DpM!a}V{e%X}u!j7(Fy>A!2 zF{~Tf zr{oq(*&$f7#l+wj6ZvfR531I4hZ+yzZEu%NI^YBYXM=K!$%x$@I^YQIXs>%lc%_4<*x`Wb3xMPJ^ zPQE}%R!f^s)v7V3eLnxvCr`#T4~a(3-WE*wY5~lHP5D8RoZ_)j|K3m$963TbmM)2@ zM0%ulusmv0(NC+mhxSP&^8nRO{x(mWM)z3rp+!lo7Xe$v=tz!RYEv|Fz2F;!mjr6* zak&Y&-~Lt6weDy&W(Zbwo;@GR;$MZ$PNt+(G43nlMc|v6PXQ~DWR6@BSZw95AdtfTns?5gA< zIANu@0bjD-;OsMUL#HolEA!F`u9lo`8Xy}Zi~b}pVoD9Un@E*4RFt!&D^{X#lL0M7b+&2<+{sOQcL63ppXpgR zsv;oa$d}9g@$|kug`B>d=VQ4dp+;vUiJn=lSy`X8Uu~AE#dwE@xo!^i)SmZq`C9P)ds&n3?Smvf_BlS}@g_I*!Ybt8IkSkIs z$Q9LFuRNgITgG;C&pEr_!6Wu7GLJdNw@+UzGD1$-$9L31DXTOTB;4|NK&f{E1b=v( z4L_sOB1rWbvuboAk55ar91YNG*x&@Vag{1x>d8RI%Nk|rab1JYbdZLxwO3eT>aoK) zH_y&{aNaW&qfnJkPenCIAQ57o*3qqjUA6fRxzy|XZ!-#i+*zm%zA+TD(*Hr;_^)yJ z3oWUb^^t$&jf74UecXHB)L(r1_YLhHOC0X4gO*&1)4F2uphBal7=c(^2dG#rf4u;i zNT7%fhtZ!5@wzDdkGcmHtEaYIXH9lb;>kv|tJKg-)+AL`m7miYnGD3)kPgEUfd zT#q4}(P$+KZ0SV_2~!v`SK2?gR270xD5U?e@SS81iX0W-@PE!e4BE#d{5I7r4QZJJ~L6MpGKXo%UbjkX2n1Th)1{_ERtC7KdNfzodVX^@u)(iNeGz?|aFT`g_wRB0BRFbdR9o51-A2lQ5Pm6`b_b{+YeM zL_Z;}0#d0+RIDl#)hwUCqHyebe^s;X`q(_P{d~ODou=(B$1^S~Zz|$V7I7!1>3x<{;c5;p9nXQ>ClFUqRL%&76jG&`S&Bt?+f9!B4)H1;&`>gHkugX% zgDnNDCo|jm_qsUOYei5wk64yxz~LYl%97}fj{$a-aTow4-->;`VEUAnO}&V!JVK7> z#-P+cioLU>c4vIlj1+}{L;<#0w@QOjx~K1M(t22M=q5o5|AHJKiH;KZ}uZa7_^0YT)*)<&JTAa ztOuCl2p&+U!>?_K9JHdZGiL4JNn3Xgv){ERo5AVyHEV*3|5ofr4-PzeRlY=t7Nzbp z-2T>(!Jh2ckc9z?uwlzRaF&>6^GT=;6eMMO8*A1A(~;*R@plq(1`b=L$B7(L7U_|tnBy$p()5-~Y&HSB zjJ4DrP#oE46{Y(XXhs)FA_P@Am7gF8f5zms_ieS6TUt@(#g|mxxJA}!8*i=MoBXAM zw49pby7Njld1>lO$jwSJiNgR5)30T!wlywb_Q%?7Pk_d+8|)tW;K|vYrN2i6(ir-TPRve^;>|r(|1$l@%P9fznnId* zC(|h(`7YzVMSG7O|F@v%&18lbfw3cO&D+Td5s@90XZogA@~WGtC3(7Jxgf$XhHJ=0 zNmUBy6LB&^>%!k>9biu$9intbfNZ`Bo2y>ccTlr%kb#q9h18H7(DP9Tz6?{{$rc-E z*A>%w%Vq*ZFZUeZ;gd#s*&^PlzpCy{p~L!MF3-I@o#-LuA{OFwY%mdB6`FzVjBzPH z)RBwD^u52_Z}t}Hecx_te7)|je32FYycPPp@BEY=J@mhvOdQD!$A-hr=ilK^9qQDv z)!WaWtdb~VhVuVi0u_I84=P5Y=Qb&kfnqiu8w%6}dmNg{Ka7wauuH&ZhxlWp|I`&SsJO!;48 z?ND!ci!ARL0WQbliK5218Hnw^?x5}g*c`K$R%`sPAFYKVN1H>FH>5sNTk5olv# zaS@A}h&gUYvrP#L{Imh261F@4X2x8{7+_e2iS9UnSr2mJ+ z;kt!4|NUAYA4MzGbkBDKy7xV&30uG~9cRm}eDurTGvJ$8XGdgkCvaN37XW#Fwq+;a z3pfa!$z+!0V^=iRI=IuB=3O!($z2OG6h&%evob`9`hG}=x#bb|1<6a(lUhU<^80=0I9#N4-BBk< zU6u1>*)LKv;K5ETrv)n5VQmZRIM-utI%mk1+6IkBllO}fC7<|O2F02cyFC_MmB&T< z7dEA99|NG3EkcdQczPN1-?bbwT34k3i5H5I!#fixv+5Hf+3 zQ?r&`!vYugPrFUcI3GR@K@%J~f(x-*(;|7uc~7G@Zi!8dYO`3y1Cp(~tyhj%MHZpo zKG?$XOu-_^y^GDjE1}EhNW*BT}u9=)#d!1wNRv#AvGO`rK zvsZ;)1q`;N>${}~p$Z*OSZuL6%EIwYcM~WcNZ!ACY{c15LMze?*Kb~9X(Q6~*IBAOh;H7GPxQ4R7*tOvb!7k`G19bU)D{YTiHT^M85vXdVO+~a_76_XA``M z27#8fXNKsZ1ld*mVjBdd5DWkE7)Wh8zDk&Uer@=1jkE#u_GM~5;r&|mjp=;ypd^#$ zYM^2T)y>!${hNsW!NmO)MAu01-ssnOf$5;}t@PkQYvERtJ29veO~Q0J&$x7?#|-^v zCOCq=a;@g0**xj=FMIsbnm*~XW6$k7yHGR*2VC!~rxTVYSmsVoRmhkng#s=RIY?v& z>B4AxX+9aG@*khtrx{w?un$pu7^=50(LEC{(bofo6mk`aiz)_6g?l^`SM~lHTzwrq z%@1{q7JmW-35qWA#h~DiY{gb&iAjnm?WOjVk^D7AErp#2llLtI&2^~|!R>-h|EITDL z*Z8toiW}#}xg`N&M4;){s12Gz2v%P8z^tn%YeTL-m5)GJb}7wjf}1w^E*8&YzQy|e ze~IVbA@`S4Sd_TL&{_5?s2jqYAQJ$fcXDLt4qf-D8pQP6fbEs7> zJ~%F?;7h}oVT`0%0nes@WuhmzjJ$n-^n_Eivbn(?y%_SCL!#6fM+hOhpc?&62$lcq zW4os7<$mz!YtMh4nTn71jquz&;1c|_d0lw#s#d!1gJN;&!>rlaqqw=rc6*JE3PVje zGfH-jp|Illz0=8whfA_`wEwOEm8VrG-`v2j3wO-I3#TAmk4M0VjPr#Xqti*8*Pnv* z9+BBc;wxZe8=BsM77-!f)O^O*PG&RL_bGjC{SPo~l~tlBsVECKZV4&rOT918*I>fY z*UQ6VO;?-8>#A?J`|Ep+@9eolqCaXp?xvi7NE$jhB0`uDEQUkugapLGMrqAq3b8b@ z@`D{uAQ}Ib^@q`UiF<0(z`Hv5n|(6DbE_}^co@UeG!yOSPxF#1SGZMw0CYdfgN>2ZRL{RfHn#$5i>zE$($EbR}OBQL|%>fag4 zw47NKqXi#e*pZSxxPH?%)FVolQm{hZ%u@+lxyNy4@z^nc-Z{D>bC+BAVw^@K?h2UI z6A3SZI}xr!$;8P8V?0+tO{scome0t%FZ06$$=7Yccpt%1DzUtT@nW(?Pd#jWq ze9Hte*l`y)9`+9WMnuW8Ysq5pwHK|U*GWH)x-a{_jvU<8k|6B_^1Y)JtH~IP= z_a8`JW3tIf+o3l*txWn!hN)$Z>LyYjRLILYyDr~bKLNFK3RP=zo2z5qg*X2xnrsl> zP$IeWE`X}BaB~rJ~HV-eoclcSu)dk*0dwZj;=VfxE>4oiP-CD~Z zn)!9t4c>Og=6gzQeuTSTh7NWPoRZyuI=gqrRDh98dH_&I+AcwktwI&nhEiR1yJ zHAegMC2gYFdx?kj?&sfdr{D|%=@1DR4`!sfA}RRr!Epnl{0nkJn-TL>fl~m6^yf0mNublB z0xBLQA?g_{d3$9G)RJ<;A?mJz!c2DiBYm|a0XYt8-wwTLi~fFfQ1BH1$36jg1vnUm zAgl1v`M)q`vh?2$ypely$&aa*8gUj7fMp{n&-shY$U2E79oVkixgqa=VnJi~* z7#%xix*}_5RVPY#%}EcsqRl!6MG)Y72LbL~MH*D7lszta4)d}v0=l4cvFKygcGNnG zK&jtizTkA=s`-M1kqk73P9P>;on(+5l3)(xU_bChd=MWKN^y#@EA2s-#E#{WCel2H z@1&Q5ENW0ETP-v2^RL)?9dM`6@I!UokdX%sDuitH!vCJLW#%X^6iHtxoPyRzBF&56 z!_im@yD*_fB#;6%sSvlbK~RZ3wN1tXbm;!v1pw(+`28mTKa9O&kZnQp?%D3sw)?bg z+qP|-wr$(CZQHhO+qS0P_r}D`{l|@%Ss!-owWA`|s@NG-nORxSk8gl|Zp*1yEF0Ai z88n{jtVzlNvzyRmby>Ax&P?Z&Xd6K-mH@Wwlca&L|lmlrIqnBbE*J`ymes*ame+er7g?8t2e7iQdBXqdZE=@&yeX za&d{bVj`lU^9ul1=3HhjV)nf{0`#8WS$b{Usr@mHY`f)tY7E8w&6qZMN_}PRq7PA= ztgY93#+UDI*^TYUvZ_a7#FTWXC6xwb{iDW0mR3UEf07#&RY@nx!tbMDk1iia&hv8hp84KoNt(F)+A+ zi83f?ISl@KV(blMlStE%;&Rf`c05d;s(Fs8EN_?l{Zm7am)+A4=}hx?~Xe0+%-O>Yk@c4hRgEAax##)K_nMF~vXsoz4bPhwg*>*>z< zX^ve0D%1=ql}f%(r+~UkgypczM&f*JdRBPQGl%neTQ#*RB+O?EdXC~8mrfE@|A~_S z(4{g{jA}&0Y6VC>Z^W%U%2dTtpoARKvcg=ahJpgbphmsl5AtRvejC{LfP@cZljUwt z4CZSM2r@Af6O7;3P#jebNM>;#Q#G}IC1kzDZV$$3v)>QqYfPUcp2P3Mc1`C*5E0>l zCxH=G;VfG#mEe&;j_G1)+x1~Pe#A_d< zQdsp_P1_UMq6FP2Pqu*Ah|s&BssitCsQNN*NYUvw-xaD23@~Ft(T3Y$R2~7VnaTj~c zP|sj`^SM7ju#c!1`|%LGY|JIsRdO-7)Z$33|Z%yuoCPiE*v4)uARY z1Cjp5-MeW(Hw*afpd0WL<_O=mnKpT7am$<5yt?aiZX*6WrkQmLa03)an{RoI_hL3A zl{K#iO4c`@8vLIbzT#dkcs~bcmhd0;h&2G(#f_^T<7>zHmajdw+U1^Y>CDoi!1QKv=Vlsds18#iS@p$A_jVEkSAghM{*!F58 zGBVDwlJMvv-_nKueuTTL&q*>E3FFfBo&8#0a*NWHwZF=*zq_l8ae923AS)$##Z%I4)^B$ka16=NCxCK4;eH~G>v>>kj z$JxId5mXUyaIgwCdo`PnU1ZOKof*Po<5Ra547{l%*A9nWkg%C56+X50DS6aS2^{Zp zmd%f!2csQoZ~DV&MBcl`WIpX`!)4>t)d~M0kksQ}*~gtq+lOJcSX~f2B^V-WHO6`c zmV21=EkbUg=mE1K9z6>e4zS$w>43$7&c)Po$qVfInMdVgCc(nLK zKiyi$qsrbEqT29}SRxRtNlxJLqv;ib_+_?doGJ#Xi(pC9vt4*u^V2cn(T~Bm{76K& zs#PRo$?2qNAuSh3_UUvMj6E# z8ZJ3{*#;ksW<{ndlQJ@6{fyXxZe|OxCik!ajnD#3>PV62S2>>;a89pSwD^`pQ(k9t zswODtPtk06Q}YzZ-OTOpuMYRgNyyEY%6LDZgQRsMuV9Bfv)Y7pStJ!G8F+qa~f(I^37?z<%t=w97)cOS(qer#3v*i12S-o zzXF7gMVKsf*Y;TTN#$0j5>6XX2RD1cjzu~x3j=Ir*BF&_ZAI%-#gt>&HO-4FR7-z> z+hwc-fv4o6=yM}htXVD@AB-#X1<`g`z~~^3Vb5t2XWUiu95uMqna~~#;6=+;LCocQuAWRV(Kd>7)^4LT>2n_%23St= zfKwRGT}=A;ZA=%Ez<(RM`J|9`hG6(}ni0uMV*}(c9{8B$hq@|bCky)KB}?ksZgA@iB0d5C& zV)?EmffAx|cS{t>m)x7%RkF3IiWnfPL}efKa<{cWhRI?_Vs@L+X9atsD{76dYrW9^ zd4Udf?9|d*X@NKDqZu3PC5R> z@GW`@(qY?gzJqjgtxJbSFItwqG0%9zWy5z;Nd-hGQ+p~oNIGBz)0eScDJwA)H3Xh} zx<`B_7UwsuB2PgXxuH0`OKW{%z%H4h+IU~v76mnNzE)N8Nkr2xy}v?yO9H5E9Va(Eyry9}BeU zxod1KdUJ9+(W@VAMZQRH6T~QTTmMNrO5Lz!;WS@!y^w(wtq_dT;(2vkupvGc5Tkt6 zvo`BNF%=~Fj*`^p!hH76kIO?)9cKUNU|p2v6ZrhaV{^J+K^c7R`2CJ8*XBohP2E%7 z3tHYN-w&D}Qek-tc{ObcKvURG!a-8Hq|okfS!7PhfmdoItXgU%90HP5RRpzSP5l>M zNnxQH=C%idti6{ zM}#0pfC}-m6C$W1*6n(B?n!W=m~@5T2%&)ZC?W6{qx{(aItAew6!1X6n_7H6i`h2u zPHa#kq3gKU&wS%B8oGML&>k>QA?asqKnbVyRZ`=r=H_~$%=?$efL=XPku5AD^ zyF9F%lw&=v45(&%Jje<)fR&i$Fn9Us$y_??YOwWv-hcx)T~}{X1Kg`e_Itc$;8OHD!Kdvqlqud#~lKxY=-0zP@;T=AgoQNdV`gSeGI2cz9@F19yPb^cPBW&XbY) z?`3+kkT3&xcbSUT-~)FU(XxTYKeNCv*p~P$4`8tJvs3+X_|YuR1h8zqmb7dPmSJk| z9eZM7Y;;t(TNtK?IDYzXr|SYpR5`$W&LJ(=ZhLx~zO(S)0Gw`=^3kEd6kE{la=!4^ zNXXmfraVrxrMDxW!Lc0M7U#<`d2fvsB2llGB2>7-p-dgM(auJPcGh^kgFM~k;17Gg zU6iyyD5^n3sPsZP`0tBX)$4m^?v^^#5=yGEet0CQa6Sq3LAU*ZYeh^qxS=Nkw zp2~sM5XT3a0!9L1W}KUV41Jy~ipl*|jlEp6DQ>%3XDZPU$G_cPwv-uI!$UuOZlefD z;aJsTjvY>UWCvV9gf?Ur`7?lZU-}6(xOP;y3{rXCoZ^bxfCnC#M;`GLcVUZTqJ6QP zRkcJmrnKL(y$r9{T{2`+&o|=EfdyIvIA3)=MgBzGT5tA!?;y+% z1UB!-A-d@Kzo#F-LNBdgFS(p>dwh?J3_JqLw7NK~eA%q0Y%a-pk(ApUY;0cuy6i)t zXW+hjOQyIWpp<-P`u>R>*rCadc;vr#VEulK@3sh$O(q$$r|9;L9z^%a>+9bk=_TE| z14M(;6~x_GaNv?Yjusn`NYnoPgQ7{_vQp}*cwPwW$zCx?OG#0H)s&phBnNf^BEJ9T6XIeDr({6_n<@ z4hTA;W-odu^Zen(_)n-7Iy$ zb+J3u9rAxD^w| z;Gb7D#!YWb6x8ueT0ouA^)>JMRA>V-J?Wg;rCTB-4Nqu6!YSJ^D6Tg4NbFbzF$Eux zTmhl@un!m>lE37oA$iynt>|5(IYjhfs&Vnm#mu+&!~I)D&*$83`5raW;jE4$db>#&LZBQ(86OjZRSHnq zmXZ(?{d~ort%OWCnUb=bG z(2v6F*MU6h2*t2j9(fYkQFEfsjzU;_Vwd&gg+5n*nJedx1yiL*E7lF^4$ug~D$Xic zslXKVKal+|CEc{?)R6qtv^y{%s*5(jpCh-oywHf-1!Yo$4D_)OsI3X`s44gQ7`*~J z?6L!MOvGynh+~flk3?Pf^vH4Dx73Z3sdcZhXml{abhz37zR{2Ois{i#!AavJe?hl6 z9cAcO$y?*;k%&s+E?x3TDlFKaLn|&Kr^)qFK{Ov6Y`pzaLnC*ySYCnWBr~}-;O$Ic zo#nCOKW(M6Ik4hIpWxD(L3YI{2EKW{{*cUQ3T^2OLGX<6&UqP?50OET8gi1tyaGBT z?dqY|>aaEw;rUh8JgIWZ@hM@>kaH>xhE3wK72_l%^tN~zAjb8Y;g{80MHH4K|GC)+ zvfQ}N2g?{I@k_gmCg?a|8iQr6V1=0c=K{4x@qG02NoD{E zY!?p%hQBC3YLskgXV_?|fVVUJpDR#K+??4|y)Va~-Lbhd5781*riNbsyA%hHzT4EH zNGZoKc-ve#sXF^=L50`&A)F#|Zi!==*T=3h&c06-C(%uvQUA8@{bQRI* zs-TZxPP<$F)&v=>0BMaf$8VcvPW+8H>UI;C{o69=Ymn_v*iDGxj&m1P7PdOFE>#By zdxwvKhYVgHhp+u3A8*&Y16Exu&rBP0m&SVeWLq_Ys-{2(mS*;nIV%}Vp+q2G$Ijks%9Q#ZE)*z56E_(@+uv}XO z#zZP89k$xvGqAt&Hxx&p7_h%n{pa?kKDKgR{ZqvY^5S(JD#hjc_<4{rFPj~k>sixH>&b~39v}&8H3u_d7 zVHkx*AP=}<9#r9hL;|W;st63CbOsLy6tkTx{s++jU}kT8#(Yj6LF_h7Wn0irZ1`HS zgxV3nXosrfT7pjs+&G0mh}=73qEhGI&y6buD94>qV$;;21wj@m zxz|%xoW_dSCSaZ|{X{MP2&{b1)%2-zJpS*6BN-jOh@gR`fMkgRRd;bXS$G0S7y&dS z6^G$VET7?mOA?&Y)F6(d{vNXer>?wgU(?DdNliz!qca5(R-K*A`m}PRR7K-B0V@vp zh1rX2R2lT->24sYBSt}# zi~*G(g*sc($8@q-qT1)D!FZrSL>g@>bp>Cw{hWv}V$e|H+_qFTx!j*G3Xqnjt7XFdEt+z>Y7j z&x*dFnjBwuZ=JaUc0+41#CPJDW8-IXcI^oZ<7@vcOn9-udm0*YIGLv|&~&wUf4+}5 zYN~tQx2Af!d%i!9DrkSG;jcm%H7b#9TGX$nS}Yp4rQj{rD%FIo4H_txO*q-us|g@5 zFBD--ZYDh)D*qDhMGd}RhBPQ)dC2RRBVHb8u2E;4wu|Z+)HH{MmFwX~cU-c!q+iJ~ zt&-+SpmZE~#2T4qj@M!nE7oyVzZvZ-gURO@nU;ocEl~&^5| zft%Ob@RRMZ5Wrc!c5L_oUn(}oJmb&mQy=;g#`G4p1U%o7w}xYzHr`C{0%;a_A;(ez z*|r!ot@2aXu5*T7UFeUrB`@t0`AxgA&}*XHS~$1MpmwVIK4RW3`0BFvcbV%U?{1s& z;O(XuJ|Nz9KuLLTIWS3r%v%~1Q0%W*5~8=9Ycx>Dh;h^Q$PaLQf8wbiI=#|`13Ho=Y^49Ht-=tln#5du;+#7`so((vSy17 zRSS%x8=d9r+39!vRP)&>_@<)=r~h%G51!F;l?(RDZ1>lTMomo68}q*7h-6omp?79@ zSOlKBG=@E%tG>BYX6rX80!&41_9O&^!S?@$v)y zzk9!U4gr>(zsfwTzuqrC004lkts||2rP)6tX?+JrBYTJc_sxH`F0Zt#Yz~GIzIAec z{B}pc!iD3Ii4Pq8jyOsAGdT&JXJdxK^NEhh;)%&ey7T#+KDzYa@^9`JEK#xKV7M_YHQ ztuWI%7Ifpna=vGPb2cSc7hynsP=yNA6ySQ4ea}zjd>@K*rh$E}sHeMy{bH`$$2k6j zxt@xOTKwx~nB0v%q!apEDuL1Pi@Dwt;nlYZcwt*LUA&lzqJI$7=E>1Id^4rH)xJ?V zlo{4Zg&+w-tA#$074^=fu)Y&+9STeFhw*VY7h|R8b>Tf-aIqod*|`Nv-{JL7Ja-c8 zaSO1zcXQw1&;MJWTksMb+->(T48{#);3f=La>u{#=7@sRojLe%rz60-$r<7S;p$&h z9b^gph6wB}7=M?8KMHbCHWCt!w84c*WQd6{SfC#`yHD@6kKcUu*C?G5b1Q%8@0K>- zMYJ_-?zY@tJ#)7bCQAB(x3k72M;xEGqchH%EYJ78mYvU+!wcC)6&_x9vYbp7@vcKu zsQ^p({2&k#Gv^2+OV+7Vli}d9WXt%{c-0RW;uCTT=xC6kAsn1?{vxeq1E6)h+XGc0 zG{$=K^eE>BWIV;N)V=1-nxw=P6bCsH!J2`vrFLXcCOAO-){ zdGt4egql`1iLq``8rIv$cK~qsxV)1_>mK>yVW!+3K^O8S<>KT{56RLCBaKP-=mzu{ zZ14THG_Vz4{C|JB7ns@DxfTN&;P1oKMH-6teu=NnqBe~h$<0M^5;ZIT5;UD~J#YmBh@!)ywRo#ZuG^7RJfqW=_@2G+0J8m2<^AB6qE=|1_o9e-sGsQXsSTTS7bZ1if}4hBTeXQSik5d%^b!v(%iN4b^{OMTge_62LPe!4k)yS0c5`@pJ#dQs zTlChfk+z1`j&+Rib(xL>V0R5(%Nfq8?Qvp_&+B^+IOAeP-0A^!b@YW2&|Jzuzg5^& zJxxXcn_25?JyVb+>2h*X-PG~ULZ7(jIz10F@$GPOZ!%x{uT<|)2@@Y5OIgwNFplAJ zC>8E(zd>%;AtORYywQmx91;1Z>P`4*L5M&CU@l9so?^nZ;dWM^{Mza}UeQ4imbp~e zdivXA;y)tR!*HVET%4}10s*%RdopVW2V^)gY(#JASJCHJk5Xn$;z7^tV}%ZKM8$m~ z*mhB&v~SN&t-(}@ye&;$qcnZZt6Q3eYPL)xlWMW9N2=Eu223sDg@JRL*;f-%A*CV3 z0B}=PY(wMZaQomr*q?e&xB$gC*!mS+P3wJldp7+lU*T*Mu$s`GU)1`y0UA6K>Ug8K z@833otZQFHo31zqc{YxEx@w<~yJtu4)Fz@0ZF;qKOVNh)rwkPcK_z)Cp;4PFnEIzu z>4xpu0<3hc(;HlirMYc8n^Ch7yludqDnm@pWxC4ff(3l7HkhO!OrSTLEy?jfaVNH` z{TTz7DcA<=mN0FHYwa`$*bJHecFRGv60n$Vbi$`2c&g;5Wk$9mSxe-hKXETzajh}& z!4JaVF*s6(p=|qV<_?3s04+rM+U7r)SugZ}*z^r$3NY07kmE5DmYAu`fQ+aGVh=Js zcx8L6LXJ!lbU==Xc`ELunuHjpLk?$tJvTJC;AVO~eUEwMb|wuSR+dVni~c ztG2)PC#DbkV24Ccue zKw+=ix$knO_zQuk5JRMdaDb7EmBrG7zd<&F*95bXG{Z~?tYG};ugL)O#@}acFJ=J^ zrtou4p^n7fA=2R#u6cXoaY94)9|6TcF>Swq1y+j-f3+GcP%*l|q2a}uOa z!ZEt}76ESv%;cbY;t|gw?I7CH<@$wQ%mciQ>BB#|p+Bmscw96q-msWgUCVSBuWdYO zv}`n66uV8FHru3WQg6I74}xdP79YQGXL`TxB64_UHZ(RmW?F&c43r5)VRy|phA;HB zK?jCuyn#7srm!QE9gY7Y14e={D7_agK$Fu=+e6~Gy9-DWVY`Oo*wDW0 zY&B7SFkU~o?7VQcezoydJ#Uhh@@8l=f-8e~b1h`~wc_LfI2|`}^#xvn%T1A-p@C{a z%?f!tW;9&4GYOQgY0OnB3vf4nTGcoS-C)g@%%w?rs{&GamX*0=KY9EButO8N>Prtm z{RZBLfgpJl1t4STP=xUOMHHY$v^!;;&Gor37C>=aszPX^D%`h!|UPte0?L+ zR+s7h`8K9{Baer6lXE-v(Ykw`o76$T#l>rHO&@pBu&+iQm9JbJ+vJJXRI(>g=igk)dg zXbzd2QyC{}lnY*;G;JmT4@}C0Ll8VSUkteXw={?=og$`Kj9IyjCa}GND_!`FK^bT2 zX`+B%Ah&m`K`xkZ?su3j7Y`xg%c2pm*tO7Zm>#bFQVFxX~OuWXvBABV+=kJ}9Fd2z(iuOKFw~5IIr^`p$0SMD^^67VQH5Vo zW2%n~3-cB3f_N~M!TWs}O;EXC!lIsrEs zb+`RRw`q`xbw-ua8S;u5wLIREN?yYtpsaeJC=^V`aZI6g!nTSsjC)LA_n46cG(bf= z>6-ahSxCn*WP!Aa(0GZ$Ozhfio_jx64PrBHq$5$B4VVsyOu$6Rp}o9MhnZZM2D0xpJ<-Z_>F~5x)S_C01Qk&JJ1@UsAYG5x)>K+xyTj za=Ml-b#@O5@TqQ;DNojDfvRFXZysnVlepj&t4b&@TFxM@+6W$!6i-~XfZXv=aF?B_~&U&O$zD`uyb`I<)SMnx@=RG;7DHs=@Q8=m+I4WM+^;sYp zv0I`b#n<-M?1`oz<(5opk)*I`N>{|IR(OLGJt{Q88Kw*}+n*xCaudgC(xOOg;wHw9V-|)netA~tdbtt zb?rc$-8U?q>)#PBj8!DgB_?IT@vZ>@L2EqpEcl)lGvb$&0qzarnpcD{g>bfBC)2J; zMo(6YW}4WICv7in8QM3he~ma~{rMk|5mSmf-lkvtoDduUz%T6lzoDO_sgact?SDW2 z8|`hWPDKAoIByZ&!Kqwr-ElfEp2Zyu8UPvyflVPQe;{PgY{XT}b63gJA{dOp_C*s% z=tE)ltxSq7`1Dm#Y}6e*3N8Ez94*&kcgi{0Zg=`V6y{I7C@gkUo{sY_#wR8(pqQSR z!uEQjQqnGz3!XqvD3>}uWyw1o8ydmQI>4BSCy?Lu6gP2=W*Ba67z-4sjXG0rl9qU- ztvUx{e63_nXdPz7Yr#VjT*wsndq5;7rs1pnUOF*L7Y(~VZdrNZ{qd#Ic%uZ8kPvwj z5jtm1$z}@K_WGFEQ047@`{Ep$hp{8-o@b9;&Y19B9A_qRC=A0**UFT=tptQ;84lWC z*~R4ZG>SZOYq!zJ;sV68jMNOKWL)HQ1M)5SlZkP$Ol7!d4$}-CKT&77q0L6=;d?X2 zD$24Uv+E()2_XKq{0BD}Y6oW@RBZo>UdLtYY}Okv-qj>f7u1=}%5W9fh={gE#B|De zGB@fUxH#qgn0%{==0w>Xh)In9r3=VD#eDfcxLI*gY`NW<3JwtDAH39~qJHZZ@o+-C z%MD)Lu8)J2kDTr{pD%9JAQK4hn;nF!uPt=eS-Ha_-YV-FK>xZIU7-SWu!FaSrauDd zNcF}oL~n`VY_s8qc7HNHV@sb3D;ll9CWe~;trZWhCxcnyS(MgPkk1uQ*(oGIyjA%u zVv8zet*VUFUHBHCM3_QV3TY(21H(R{2lE*Jj27x`KS!2v)y)1$AUY-)zox%Euz5|q zik~K3s?Edt7Tw%$WD{c}|2QKpvIpKu7yUzyustmgnFKgt0A-hd1V)}}xl0nJM*Z-P z-fd|yo}6mTaN#deKOCM(+$3;s5UrI)n1-$ZS^ilQi4}VV9AV5yCwW_OblaoOYBh7+ zabLO#L>s~-HO~~LmXp@?cN+9#M4-C)Kcxr(tfXxk^>P``evwveXOHMgEKK?v?#9jY3~N%)oHzEVa3$j^5V zrkE**vmd4Z586P;8dc6c3uUMI7jtVu$oKpPyF$kDn$jIHKjDti5cm52^qm*YWtp{0 z*(|rTx2G6I^rQ!u(w7t;T{~i|EyCM$rlK4AaS{IVQLt{17bfg=SM@Rx7EULwEbjhx zFF=1GUQCI)vrzb&i857-lbuZyT5W3Lo&ahz3{&HgYpe$QljDlMM_RU?$4oiPARYQ+ zReUBgBjS{8CKJys7>yTRhrvz2aL1B7Zm>&d;`o6*(>OTb1|?SNFts)C8lzPYCsUOZ zeCsSZ%HH2}XY)^Zk((vxmJA(1^@U z7Fm%xUUwE$Hzn0Zi8Xa4lmrPbNYZ|sJIlqWzJ@wCCZ2;Bfx^St67*KaN5|C8Zzp#9%dVI}K9Wg)-Z7a}kK z0F?i|<9{<^|BJJvq-}vrkL-o^35S1kCDq}i9Xy@vEr+n&zWNNV#kiK$mnJ1uZ_y(A zzDR&vB`b_jo-0eRN=jbUW6b-g>zc4uW>w@!&NJFilD6sbt2Z>3rMo(=Fn=UL+VO z+#!*vf?X6H%?D5shsyBs!f3RHHQDr)l;aI~8%@TzRgF_dI1$3RaF{Q&QQo$zA@*@H z(17i}wuB9u7>&>b(3j1r1OzwN=G)Vq@8sh2G?_o(8MFPf5K`PhS+bNJy5>c)ZL%LX z-|*lg(fvOWDYMO`}lA}0G zVf&)Asv@rQr4xMD$bzTiuBJ{Ah{EE%Wi2VI zYRz`|RQI1l;hzspDF48_o>3>V6@XRr;w%Dcz0&b~3A`d9|50X|FLj@>ns*1bs^w?;U*ZFY&e~(pU-#w+K*#IXf$~w zWUlt&VF4Xv6xxzbh)h)Pj&&zB75&q>v$@@;ZM~aXpLW*w`?Secf;+Rs4F-2wFyrux?yPqxoyM$fl0A5ZMqy}9e#uNWV1{p;;<8OOZGiJM0I zARZ$@!!mb(d;OIzl*Ug5&UiuJpa3!wj>E%(1m z`IOo(fQ22oTi0x-Fa0AvjVO@F+&|Y+RcuRc?h$Y@av{=|i*N&mTD2lcrB^tJ&!3=f zz8Mc5?Nhr_MdOM+9=>r?+P^?e!zsITFpMFEiCi zrWJnwX79tA%D}p14UIB25s@)YF(4s~MarKGgNG5^35;bZ&^>2y zxCjS+F?7!hkj@Zd=r@(VgI843t2u$WX38L(=QNa=6SHIRtmvEgUp~bap_GUOTb`Q# zQT|0pzbVv$DHJ$}6eY8s0AU%33YAY+K0bpgt zWLUC;rdNU7T5j^64zcTCy|UHrxo2WxR7*YZVkL>Chq`Sm{2INml|Us%qHV;`l_i!p zOD5+sPw>h1ivOq00MyJkd4+9eQ6lq>wG&MEu(&DDvrc9hd2bY^!o~ z+;3n&v)B8UxsjJP`-4p0Fzj2TTe?5n81;$^d#rKr@nKpf$?R)s^oS@AL*JwHQbgm0 z-V#FjOkoI?viKCE5r7>m$ z@tpEO+{8uZ>!p^-Q*$G%Ip1D9?jCHdA9T9B9C0cq(5_W!kXH4j(!+F9UzwfL=mQdM z2D*V4u8w_7^pixpR13j#ZkUJB)6`IXTswFwT^JS|)KQue?!b!J5 zN-ZuZA6j`C2!AgH1oshN=$qt1)$#O9(XJ+(hiC>CKKqgg9*Z`#hq!aDSt=1fcb)0c zg#0@Rj2Pr#vw5(1-x&4R*PKB!p@yXsOor*7_>;fQB}Noyq)@l~Fbw~(>)z%Gvi~K7 z;ZZlRR@f>_rM*thv55?1k$`?vJ=q#;psHJ`^*+!*+A2Aol*L$bU$^?_aJy3z@Bx<} zZq@qp;`&oFw^uQ#4czRxS)6SSN>V}68d)xv2A~ji;M^kl3q0;zUa`Y&e~q^-mE9|W ze}BGPG(>2kYaHwOAN(_x(x7_m-*ph~7ajY5S_l7&b1G7rutuW)Z(xx8a&`zP&n%(9 zPYJK^2f>VYm*L=_h^ysfrp#Jb8)q3Pz|2mmRv1|CN0k+pu@$Tf{BYn zjaurDSGrn7KOUWYKLZ`70==J!Vi{v?>rw;W@-3t~BTi$+lyxjWg{gW?OIgZ-8D6SFvQCRO_FDt8peVq{y=D6R#wyx~=h=$l#s zlSmI4LTny26B(RD>JDV!9zm--4`nLXV5$F??76dW7YAqe`)hLJb(IIQ9-o^aMi-Ni z*yZ^k@>IUO&Kx^vwVy<&HpQZu;sl2971W>$XUB`=d|Ms3p1x^ifMzO2z94I!H)4$& zE5A3H=rx)$ZvgCD+vR>lzxi1&=pf$9FCfGM~tZnswVMf)Eh`oEKyU*Rh;pN9l!bF6_e0gQ%=1+-drY6>%V@qhs6ANu*x<@}&#OD^O(kEB{a1{qR4{ zNsj7V3gXw4oPTZU|71@8MFlOXY06@WB74^?{?x9!>{AXm)5+81mkW_Y3VGoyTXdeg zyD)RM7Rzc07{Y_dEeP}`N@nOWFNQ6aa8F(zjs1jqWwe&|H_L?r_ab+}9lb$azi_}vu zrlkG=WeJYLpNs}?5LA^%(csB=UW@ujWg+}Fx_L@u@6q6cA`nH+lmu>9& zYHjZz0Xe78(g0b8Ih}7Q&OOUbT;D&B2W!Y?G6zVqDFkKE_f13WBZQPULa3Yplq5pF zsvi5xI_4!b>nlzM&Tm-kd+_-8E@iC!RD|GJLy1Szl|uR!!Gkfrqk@$5-Cf=jIXe+{ zh*>Oz^FTlp-roqt|BO`qxQd^R32`(sW!3Yc)>pf;3;flQE)<_`4>Tm$=2OEnN4}_ z%io`?G?$tY8%YPkCO<*&g~R+tZewpb^C`v(g6AUU3|I~Evf9OH&?%TI z@i+bKPtEeMQ@58V{GQ{qAWcq@ZdCy$LqYrXd8Hs4KO9{|KLJS)hmNojh}hsn2KLB^ zV|@wWp$CDuD`oO7+TzvF@`hZN)iC{Xv(WW_?nfzbRbWXd!FyC$y>|s>@}eSWOiT~* z;U*a7M@nEuHjv9I=QEi#8^6^WihsT5l5*OW%bfe=-&A!gfab^A-q~cG;<{ZjZ?a#~ z0O_LW2rtJ)427s-Qh?KmEgVC$!Z#MQOSZK-<;b$c9F1k0F^5lb*8OtFnAvn*R#5V& zaMPhQ-Blne*oKzReg^u&hC4O==RQ@3&1H9!quz}4dQjWB zR9(A9WAbrT67$8>!;2`?^MdMgKe8&VR)h^C+|FphR9glRh_GK4sJVsN%5;yNPPe~q zW>-D4ZeY{XM!Vwlz<#5nf;RP*<3^NrqKQs~rD68aDk-#Thv$YdrI%LbP(wY1m@NAJgsLiE}2Zw@vh50=XR(EI?^Uq~@^Sxzhse|2%j87nSrocPeg(Aba0P{RD{IgjvyncmSno1ig~B4?VDJJ`#7y04 zb_d0=C2fCbFN%Gcwb7qaii=kB{_scebzBtRcM)Qc{4r|(qdp$>?Te-8d)G3Lh||a? z4Z5*~xvY%Qi0eySHDyIj-0cP19Zc7Lt=9}xpd(tJU>WngQYN^3B;=_X$?F3l#Gyyn z&B$dtBn9KFB{X)kJ9a8J?`zw-88U?f!>Bz`(hEyA7G_yn6|MIAmCEDt6ikKxSNFtl ziOr=WqAVi5bwJlsIde--ickL)#ezLW5uFZmXb<&_A5!h8z6xJEnd)CEEOdeN9Oc}y zDRy?B54JILWg(}$$O8Drk@0J8Vcb9q_xv!@^Od` zU*_I&KZrf$!LhNqc~5le7}2v$sCZplxcecr3I)ZnE`B*rg;hGZ>JJsew5jJuJ zw(iYueNyI!(W)tNuD`q-9z~4Iu9AATnB&o|!1V_LC~JL3Dmi~E4PYKuF`hxt6LTF& z4enf#d(%-0l9QKBBO8Rood6^uCs~_@4y+>i0K?T3sSrAP7f>mRb_XLMCx!|*6m?=Q z)XV$MuQPhaR=GKzA}6cbf_OJqY9eBsyY@nUpp69M;QImOA7beE^aLP)tyOh25qQHJ z7Vt7Vw|sy7VQFC$f}|A{rM{j9K<7J?;Jp><%ATFyI7;&Sv6D>ddjXUoj&#D!#i!4M z6QW^g6MfOSz2&5PJs5v0?Ik38whsLAz()N?c6Bx@mLp0yYdPVbf=y`=$!WcOl#-_9 zz0;qLBj7Y=J^u}+K8}#k;=AGFd-7(t?Ej+c9fNG^mTl3pZQHhO+qP}jD%;j7ud;31 zSY_KbU!CusckkId_W3bK#EclfM)u5Xy=7)gX4i#~URl5`mR?@SSW-d?$o-g70m6bf z9uyxq4`BD7rSpcJkhS^0Jrhca=vz15jzWsCbyJrCPm0z zUjb59dUa@jS#15tYjg}e+`_~Qx;|~iBqpGnm}H@$eOwe#9J*Kq!p)>{$ji^C4Sa1( zYc5|6N-|yoObt0%f`^X;hec&)Yc%=?d(9W0Ejs8HV|7}sxWmS=oDVAe&*AG zdk>E?y3+nFJLST!?auX5Z7KFEYMJm5XpD|ktRs`1B_dRQ9zCEG|Ax=a;g@s?!saWe zL!g2pY<#=1^I+SFRjv`l*ZY)grf>&7G*^CGh-_(93wj%R%>F(A#Py;(Bh}0$b6?u| zL++ro@oaHr?l_X)LpPhI>_P`_i{748=q-GK*PKnyr$yWo4JM!EG2`7dbitFEp?xv&gMt~@faE17H0jr*4zXS?H- z+wOwN$H;cVGAZ$&$u^F`h{(JnlHv|xm&3b^W|weg8NIRF`toqxe7`ve-0P384r8sQ zcxN01YO&O72viy6iRKn;AwinE;ka@#svDY`GtsT!I4^f^x#Jq3<$?`7*s!EaQ9UIg zx-Pt6y{ThTL7ploUQtCxNMzk)Ph=K$s6;abJ1qpeOggMyFlF_!MM!dFx-rg&tecC4k#ysO;66fXu)${ZtuEn1Cl= zfyC%yWV&s<0iLO>56%G*6tZnw2QRc7#c#^vIy3fNW5O>FK~XFNVjrf4>!Qr_Yo1~A zjve~75p&c>k+`xWQe?|pRyE05L2!F3>8NKUf4nRC`;78_P+5oVT5H>7VWIz16(K(#QlLBB0_$taG731n-bPLQEk5Q@akF1?vSyj|4Po&~l9q{A*S( z@D4PyK`3{RjJA?Php3-07&X(1pwfUDV+X+3g*ll3NFjeyHk@!q!$=8|Q5C>Qf*>_L z&rZQ;6ebmem{x-*eGTD~hOrtlAcF9hrqKo=2w7;JNkkIe7nm~k&uvl;HyoosoK&u1 zP{fyAk7Y|lG1wS1bwl-!6Uq}5xR;)a_s|5@mSsU6QBxR5*@VA+)a(K&B>9ka6G(;w zSqLrQT*PZUeSCMTz+8>)@Yb`$CDot$ekON9$lNS6uJ*#rScw?Zy)u*JL9rAat;P5q zEZx;GRq`4%K~Q8xnuI9q>aLS+t25tHq+1oN!XyHr{g~|CdOG{a3w+=$4R*P3Q>14W z*fO{XI3@*@{P@*0whlOO+9xQdDz}o(;8=i9X0bBy89@SS187aBlY&Cvrq_aI&{qgz z5nyQGjihKT_*;$U`iw~+mj~JwZ!E6l>o4ykyg)Cx=3XWbOEKO{XN|7D#dkkicV32@ zz8;Nmfstw>f-JGxrvy6pKF!bE;V7!xWTVbZaC@Q)8x{#c9Q#-@UJOSF*=*c7mu>S$ z0FEmoIUTh>+lCg@QNLiJPFMkcP!b5gjMR=Vb|F2VxNbI|}*$AKi4GTyOCs2hX+-bifz?MD~| z8B?6c^3{Xzfxgi|$At&Rahy15DC2*Y&^}#%Fm-}|pSd8BG?bs>=9Z7e!Z|nEHxw`i zGmM_O^LyUm-H8Qb*QQ}1LMc)gzQRS;!4f4hWRek4zSRgmAkHmrk(pD$qHD`z7jBWs zkifZ8+R%%206IN*gL2`{mY$`;5nlfNv_3apI5ZxUGLG`$Exfa&rQ4{-{{)cY1IgOh z*mhRQ+c1&_s76g+atU6jkE3R&P#vmjqj+OPZI~kDTDU|mq=U)f=OFOb^+CHsHTe7` z3)`ebO)KBEI(w(TEe&RUnabL!w3g%YwZ&&;FtvCOU!_>}0MFJ%fAral1$i_5OLWPX zdA~MOZl39_&i1Xz*BdcY^nEO5ybvlrP6D|JVE4Q-h=^A>h4NeBMj z>E)O0X^TP&(H6*24;^7~$58V~-f@E!EK~DddAaE5iIC81ZvOmIJ#&kS9zN&UIA}jerGKEoeqTt;wxqpzi>BX@q-&_v_8K_DA`nT(%JBLPd z-Vbv-@V`_r|Iz3Ft2*_=+#+-n-@>I{U)m)iiB^!Q`l|%1NQth4r+am2Lf0(U=gi&! z9nMR`hXaQJA(iw)6AVr?f^G%Yv1gIxD^hdh^S)eX*_-jrc&IPOLQ95jXegG`+0u+8 zI}DAhl=`LN;n~o;Qq;kzK-H`KjNos~H*F1oS8&xaky=#Q0O@9Omn2ct(;S1Y94a}7 zm}^=>Ikd8TQn212X+mSN?ziHi5}@F&XT7haX_8@VQ?2IhjH{A_N;_b*O@%bGW_AAz z({2#S*8YYp3(KhU&3KzT10HD0E!#CNe17~5Inpt}D=ZS}rC5+BplQLvhcVEvL8q`fnc8i%wej4nKg_3x8V5s!oP^vIGfoq?9 zTG|3Nh8T+n9?@^4f#1r6JPpp}8%!mDBmkC@vJ-W!+TGYD4Jpxryre^md!-EDSd4Po z9M44KGjuC!If`JC24w6}r8?>?@!K?;QwFh1m?<4$vNq#uF1TXO%9Sf8?+gYtl&^Uh z6YSzt=lb}0CQYCJty4kRf2ZYpAe+FDO+^|EhT3csB0kwdp?Ju2Bbt5BtuxU0vudZz zfo3~YXjCz+*&*oAfW|!>f5M%3A?;bcX6DFbk7^Sbc;>qGqui!eqxR$sYQXZZNR)ON zt7S1e`SLYgwcHGSPtI5CiwKtM>oV@WI`1L1PkHg$vqhPi0w{i_zeSnCPz$TvUyAz} zzjg5e2LZpxN z`C6?-B(>7{HHQ^Zke*(!82;uXA~j|y0_G~bw4*CDVkxqVNbc(x-3?x4`4|1+eW05~ ziKUJY&z)IMo&-g*yHYx%u~JbSGF4Ti&pA;EX3vVbea_4v;};fR`%p1rxJ;(v{)JSu zCe6f!+=O3D45l&E{c_SOB@Kn+Xc~nD1*|2a?<2Y^<5y__#>NZJKvFCjoe+%pd&kdi z5v%jQv%W%F!dZshQKB0=p|oz&z&}BXM^VPonUn2n>A*5Q2}mb_fOb+SGgK-mqBnkc zp~1ol&aPdULiEIuKU@hhg%lE?xMuWAmWQxw0|I>1=`nk?BoOCb!rZI0mye+dhUoFm z_<@27Fh{gm>2C#!`=(da13=L>gwT!h@V@J?#om>o9|l?O##|G-m5rE5u%JT9M@Lch ztCxX1?jN$4Y~FK3H!e9_ViYOlrk5$w3@b>RW%ocwSe^hSQiO=7jJCY@^39?Z*gS)a zOKII-t%|3b*WcpE&n!U@ZPofoX=zUxqVN=c@X!S04&c=#3A_bPXl>u5G$6^lV(GKw zXgKI>9rpbcnNTHH104<@6obuO)&SBSFqJ?alcqo!I`zo2>7H|x>ZX9eduGBs4&yDeSMSM`gD8k8Qk{$X?vLhYSe&gUTHB&O8iNIu_bV{3V%;s#}o8zKp(2%9m%7Ezplw}JD7-)7m z(`n0Edm9oKIW;!U91*NvewBKnvGmvC9>hbnk1l5&Ow3W3ehAb{PKVG6u*~!lIVTm3 zCtFw{vlO=pV&r~?E5UOc574;D7sj$4+mZgEZ^9}Mcp4F32q3eJ_EIDw5ZAP*<mQt@Gh!3lPAMXG}LoNGt+~5Y}!$tQEa^0F7@#A6i~{B2jpB!Dgvg)~63?HdH(M`LghND1KG1 zq5o`*N5zvC+t4fV_Alo@6CG?a*GB}gXu(wUWg@?c3=uv2@@DIF+$SGYa zlmfHySoKZCHLdc(0j2pP%VTP1g9?wH4zDz71<++N6`Z9&Ln-oZ5JOh0D*-kMnbDAS zV&dqYcjBAfyq8FO+wJ3e?lr~OrTSxgVt88; ztKp?cJJT+Q#DfWk!&iwdK*w}VL%Y95*~`=7vv4HzOo|rTSq`@y3i6Y5Fz->`G@t&S#_I0@<(CxNS@U~rY388uZpWtlM$h*iBLBk}R4I~ZJ*J+YG9V#*k$LQktEL#wo)O$7 zeCLf=bIv?Ook}7NZ5)F1L}KyY&mR=rQBoQih(;J}=DtGhz8LFp%>8u3==2D&sUWb9 zx!%b+47F18E%ir2vtdZ)7Hxk!R(}u7&i2?fuqIfI!A-Xd4-JcrLqPACZ+<)blBP%H z^SHEd(!u$3BS--j8~YN^YeyIcpvkbIWsV(KeGr(6!C!g1FiqiARCta$_;#$i)K;3b zu*)a#fqK7(qThHdHJZbD1!2nNO6{3O@x88Z^cYi7*3{X8^z{cd&bd{>&`7nC2Ov06 z#fhA5&F&Q)&Xr)83jvRJ#)6)bz!{eiriJ5TQeRH2xG};f@#PgjMe#)OcE}Yu_UfJy z?=GGeZ8~a6O8nga1RgFraCnljvP>I`rap1YR^`88~Tn;vMzuy)exx_$BV}_lw*8{Lip|k zV-Jc?r;q${fzOA#%pnN9rx8zI6ds+2^x8e%#9-!<5ia4*<|Woa@e$?(^uxj1psu zI&K52Cycl{UGMi(x0n63p50a#>c^AuWc#26hu8prt%Zj?oN6m$@CO!qXvS{{m<{42 zD%N4Fe$3sEfIiHh)8VHh;up+Q|J1{-r9GqQyYqz9+9gthPqpX80~2VB(Ao3oF&`vk z8#F3-u=Aiu6V4gUj3w1-LBSK!G$SgU-_TG00ixgPmJPMx32#a7g@zYGBPS6%J;KH% z9~z5~UloOHu%mG~Eu+B0Wwu^>S~B=Rp8r~dpfH7;~2KO^(a%VtNEj(93?O4M8V!dE9o&tF}jNt_wT(Q0%-aI~H5 znu#20H%J?mY&yG|^6N-EcDDRuw4DM=N@OuCw&bJ`q9eCYbhqux$k8=c&Du_f)JPMg z9x7K*hB{MbSN&!*?h?p_HIipWW;W7CKOHH}hdh;wJNc~IW(&jnF@1kXiAMg5sTr)F zHSu8x9jX$-pi7Ln@f$)RoL0GDFT-YiT)q7o8hJLUcJ&ko1xs$JUUe2v9@Y*@KVxcU zEIkbjbO@jf$H!Vc4N1!`c;X#w$-0LhF6x-B2@G>R2Hp_fM$8IrowCcB~A4XWiBfJqpT@k@Z(6nlUPU9&ShM)N}=Dgh;9 zUgLo6nnc=y+giW*r}b{xO{GSV(x_n=+bt+{FV__!enlv)GHcm&Gg)HWoY=xbnUtYCB`gzv^H$6s?Tr|*i!1%5Ry{^FPp1)8oCmXi*5UMwctCr>in(zpIT?QIH_o(S%vq?J3QY=cvocuKCeJS}6Y!(qLU zkDK47MWGqcaf+F$Kdt=*!D`$8%elwI(=RB~9mNWd)t7+S%e|HboS1p(lIQ!O3)U+0 zV|2A$rpxu33N=l=rCMode88tHQh1z!_Dsct(1uJ7*8&V&S?SqGK$7LQ>z5b1WtU+4 z+s#qmer~eIJ({34&_-43a7p)GtAp~iv;)1dYlUD8bML7)X~?BV@1MSt&>Y|i8*zP)VKt_F?PuocBFy5hatiJRKCds49s;shkI^kbV)Yw z+)msvE&{mwtVvpp==(K4$fE!gQDP`(Yh*ed`c`Nfw)*ZXqcX4<2;d~raA+!s~8N!843 zpk~O=u;;u7fCGkvW&%=;3FZU}30r*ogzYv+B2YhaWb88`o`AhZkV*(Nx8ntO*hKW#}K6dp$)u@1<>OM1Y_Nk9kl$ zYHvM^nS$0q<&svOuFN9D&??m|zt z3c&Qn9G8jOsNRO}zd4kjt_7wpCEl#Q05{Gyq$_HXnNEPs(gEsYkP7)G3BDtwSp?>! z*yE}AtyWz3gfKjMOee@+GicZV3KM-FDNt!4HIfk5lMs0ALwuej%0U~i2>AxNW-qnN zwN5j0EUGUoggGO0)w2j}aJs#GhVcX64q&FgK!#h-gEYc;x3*(^!u0=zVtGFsLnmZ7 z#R@92{v`%K#h2+jcJ{mZIL@2|Z1&>0Qhry_w{@6rw#l63-PqtsxU%YP#P0F9<b>fq&#LcDROB#c0xKc-Bd~*2;bj+a+xiYsTc5V_}?0@mWOJ^(C zzIsP;ZNE7F-qdwT$86^op+qPaNDee%r0%b@(5Ww2pmmIN!v~IDv7*;o*5l{kvB7~t z7N&D7|7uhB|0-mmYh<=CA0C>9G55dJFi9x$vs!mXX$=pE!q|;+u476NE-z_q(7o0! z2(*gAMxXA-wjf@@3){CX1U^Ri;B0Nt?sD(AyYS<;UrvJZ;(l;L-o0d?ALz8vxvPg9 z@CP6%+f3NDprFMT}^-&v(~sd{l!)``8y0+ss9p135jM8FlrozDtT zv9^(u*}I2dNz_Xf__Y&L)C}nvr=+fdTh%TA#wcTG4B(bSxaW!$Pc#!bv>S)#t;Eg$dvjZVS?`nFR9Cl8TV6l34;#!r38V8z z2~CSTgd``SpvM9TScEF}(I}qb4d<1bHI~_(@H*XsNFWGc${UDC1zSQS$(r3@Ix`h3Pe4JQRfL%d=Gk`u#8P~dYcP4GAF$44!T zKqHk#0E-!_1P;{1s?lY&M1*>MG-dhJxsj0Hht~d5#urR%~&0F;IPsZUl zEjpoQu|70c^&+i_!WT=%0^~K`oQ|4i`%L%9wSinvAmd{`EqEDk$R>)@$hWM3%zmA{ z_WxHTLGca(4flhBvHv#|{Li3Cm5Ocb0t3Ql+#oK^_w}E~0J>VCB}&xOAJ1{j zf*5JOu(W6cP+!Tlknb&m6h-_3$Ub)R;x8GX9{B27$WOeFe`4G;}ed_<$imW?$Mx=DkK-Jp{`^syjKK7a@b8#WxsmCXtN|K z&%*c?P{gQ8#*`A)(gICxigEfD(~yzV(aKYC9Gk-VI+PI_X|p?KX9ympEX#mJ0=`=j zN-5N7yW(GR)wHh2e&1f6Z%(nEKjRO$1=t~Gwwiz5<6d`Hge^S-g^EP^D!6=joCl?3 zPVY{zW|~IWShAP_q1c9^>$V$3Hp>HkY}>Yf`UyW5x>K@M@cx3w;b^36K7nUzI@X|g z#=8jPvcrGl&38GzO)AEppWfAvk58NamjBliq@+;uM-LDHpylTjA^tc2=-_1Ptl(tt z;7sRXYg3glW;MWoBKjQi6*Q-pz%v*tn{6;chtfV;@CjfzQ73?$$do+qU&E9VY*&AB zC3U@7a$kKk5wz16i#3rRbeBjA?!(Sj zCHGPnRC8#`PQ}!`Y8E-FjALh@WV%T0^g7lbSqyWGu-3?W`yF0GrH4tk!H1ea8;f=3 zWdw1$x|h3LRgm-OdMk${IY^gj5X+_#F>1F+(!n$v_uw>uAm-Yz4s)Bm+I~xwKAK!r zhKNEOHP?mS_G+^QmY5rs!JcRr0_`ig=oqu_aCA}kUwo_9zxB4h624>c|J4}gznkpy zevBas{Qr#MW@+mFe~l57G$nV=fDrO5(HV5eOH$PuA|{InvDpC#Sr*b|Dz8jD(#&Hg z`TpR3QAFzx?S?xunQ<-ir(wOC)dm`{seu(=H#IvTMb2`4@x%1>c`uYXx}VB0J0$ZO z;Pvw3!{(@>D)jldSEAR5)T%pnPF*y>3AUu@xBhyGHHK_n~ z?Jl4Hh_x7ZZ8K;qbDZbEeLi`11>tQfB%0AYxa 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%0D&LM7zW)Yk*S?VP0y5yBL@s;|GUHoF=v2+`_^D|q z&AOVt&|t6jCu7V}z;p8XIjS^m_Cz*$16)A5zWp43*nqZ$fJ~KZLA%NqiCYlFqKSHT zo?Q%HD2>f`rP#4}_O^=T@TGmC0N*TFQT~S$8B|N1N^R&BONzM_L56ndkM*I!9-q)YY zHo^JcixH5oQg>wZj==toOnC+QUGFo%xMkas(kM_d-!Kp3$Qem?DAwrmPHstJtE|YH zUat+$89Px?=0wSiN~~qQgZuhd0e$0dc{P6ph`k{7>zFM+*#Ubr=-dR>C9E&z#jPO^^vYCoV%SATJ ze6n!*`RnbTA5lWA$4InQXA`~lLyXCA8Gk`hBmF&nN8=8O-|R>X6fhh9|xr3;Va|S29i3$Y|H8 zdB;QfJ&JXwwc-IPtQz*0<-00vz;TkrD=|CoZ2WS6taeW7d0oy{OcgS#NXn&V^^do- zNphR=_lDr+eBqtFoD=89nuDUkX$0!uF_)Rexm|^+scFEN7b-$&7Dx9VmaSnw z!b(bYko0#ayGG{8(AvQTZyns zJenpe{dowCsni5md(~46N(yivfz)>;$uGebM_KupY1_cB`%RkdSIugL6pNy0KiJ4l zc^#tMpw}Yyf+Kl_adKO2M0H@W5tj1ff!s%0DMw1{@$7-Hcno6eH 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

g$|n6&nC0-dLPX>==Rok$d8RbT{Y31cMV^u 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%0DHW_-$X%7zR+lhLGH0R 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 y98>PNT>;wH1llJKy$rd9*EAh-E0 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

tHL9(Zi$bg$zasEp)I94Pp49kkkMb7D%o~hk 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

%R9|* zBBDw<``M3oBbGDuq!<*EXW(}rAN7=?_4xh3)SntA&I9Umu$QjFp1{*}s!gTPN`yvm z0g`-lf|KXzZxk{E7{n7rd%)e+5EgVGRP-W=F>1Fy?Iy zX|n0!Wc6r}1TP}z=lbzBs%af@%&ZCXhC3Bm`K}~pCymkhu2HAL5`ppl^HBzk!R>#3 z{giAH?AMOABX3c{iIY)BG(~*y_4ccr(yLk?yu;O?td=N+^1JzA{wdD2N`2%>$mxs+|MUiDOboIK=)Nmfv1N%YVtamk}$$6 zDBc&u{O3$pk^}-W9=EQ4ci`JjPK`(^4CE68qimFLEgFH?mwN96>SsGlS} z3dSlPt616j0xw=$&I~!>MS9!hSnZ4d=VOo0;iY| z++-N@M^Ld+)l7*r$AEh7$~qB2J{CmsJHT@)jGHY@rYlZuEL3dMPpZ5kZ(r5cZ3M;3OS!63fn|8{~jZ zT9rF3(-bQUl?koKWuY7ClB4KOPu4jd=+?1tKdhXfa$P<ZpF1!5!x+o;Aq>^w3Q^04S7 zV6yb_{^$eZOO!-c`aq19PWOwfecjw`3v>J{7^TdqxG4tuXZVAe@c@oZP!<})wAN=Z z?lCZ28@-8A0^7k5;G5B0pCFH7X}Qnj-!Ak8)gRCo4vS zveUaC($eZXEYB|IVvd1%=W3hYFcP*5f;Oe`8dM@%Z=gg`a(!A@9vP?=Phi z#dj-NhX))zyx|^ns=P^7%!30MDo)dl|0w#zW4^O~{ciL`-9dm_1N-r(1o#hcIqdC`wjBgY}d2CklUSm$4g1W88dEA}`E3Mem;MO;}hzU(xjR^ORz`;maGmlpMTS z+~D8yMcKgn@G**Q?|FX-pPVA2?TG1)0s!vtTn`fv@9Ma>)J)>&ol6CQPyr8E&L4I7 zZ$)9^eGvoijVpV znaM$NU0%ChMF}#mz14hmL-aSOuJ4+{s(yrg@%o@g(-OrZKOZHemkIv)L7KT%+T2rh zA=COLATKscWnbYRocJ6J=F-4+*!&>J&?q∋H&DR2rMc)Bd1ncsnt-8m*HHUVGx* zJekNCZ|SJopfov?p=qgn*2C$I*r?P~uTGix-KFs9a2iWW+LO>caVH zKTYC~9Z06j15IAe!^Cbti67OkS11HzhX0`Trj}9epF7?ITF^6QrXUGQHmY^VG8}@C z7~sV5EDKAU`Rqp*S%j6f6jli>{67i?xx5ve0U~ah6PtJoN z3?W)mV{6gpR{wKNUJRTw0tZr}xJT>Yl(5+T9ZPlXj1oPwS$g19A4;vd{ipBw3K2as ze?7H5p~YgbY`^XVk9_s(%-R;IdwI*kKy&>LNT~{^rsO@qv*yYtre~nXOXqje&jrOM zA8+g5@d`>&&W4QYsRCCZa`-o#$*4jwio$ymcmPs@`+4sd&5h1j)K4dkoE=^Ii~9v5 z5B6&W0;?G`*-i%dAwVL9X41YLJmQ1X<3IjGBM4^idlm{l#V8kds@p6kYVJv*bQ{U) zA!v&Ax6Q{~x-=gm!7E-goanj5Bg@meQ(#xK%RafPeGPf4)b0Tmg9+(rb+yoRAqR@ei=0PDO^GBjA$bh0rdWB1Vq$qY`*a z9!R&W<#e+Dp-FrS-je)xM~|PoX!5#{>??k*3ivq_gGArmj}oI22;I;>8R>0{mE_v_ zy}FF=IqCsZ+X3@amZQT(KVA<)-a^kmN1i2sZFjj8pXCQd{wjC#rj;<;JvPfTN)Tf! zH~pILACP}@S6u4q7sr+-Z{pe_d0;uWyR7WVEWeN1szaRf!rk;I_iSVhDoa=5urN@{ z3kfBtni6paPRHH$JJ@cL_Qo;%zW)wgHjRS&)*x5#F->K-B13EDx5e`G?7f}L zfDT9C3PXP#*d&!Xwv?p^S1q}?bB44vTLw~G7hZ=b{^>YgI8mKNqHB-r1>5mZt_j( z)O{i@+o?LgUut-pQVDvyeQAti7l5A5tF~%$?}bLG8_Jqo2PlcdTS#e*rd+ zyWx5SexfB*z)6YJDF{@ne3bw5a=!0Z;R;5;7x}n&&^7CIC%R(9$pWP<{=O-D4e2)` zYVYJ}d0ewrr$TxRBHw*!CXy*gX3kKZXz-X9j0L8k%hxsQsHw5h{jVDwg`U|+hyGPH zX6I9sB}>JS?+*7{^rhyJkSDeP1}3rMu5FAKA=`2-_j1|VOrt*Sd8{S%BySr!&mHGW z;3+kN^U>K8(%L6+#%Ir=moH9F+DZ3>M^1R?LV_p1Gu{1nh00-J9vOYAf6PPoPmPv> zUDIoQ)$0~JW?#j1nda}hGe8J-xYC>Qejf^X*fcSg#T4Esmf4{CM5ung&lkSsP4KEXpv-wOTURK1!TslE)j3`yCwE#YZXz1hoM$U z{@_+}9<=g72eEE2h5b&mLLgmvL3~1<%NZV^@gj&te^};n`j8~S|0sI6R8|s-U`LH1 zszlk7aAI?U;Y&inYSeD?C+>T3{aQrjwCiTNhhKafYfq~uu$md&@^yu&UYRdkSmyM5 zU(()B*?5CASJN+^NWfSdmdI+kias_zah0qwm}1)QwI0tl)v<2&-Jr(!<}{%SD^FW% z(P^UM<2q|7l5hf^N}2!iM{VQjonNTcnJ;_f_K`YIvbMw=a1h-bd}GQckf#Qqd%y9n z!;p(tWD!EEh&Pyk?F8Lk(xF)Be62EX$_m@Lo>0-+K~dwOkTnp-K6f=6&Y{TVxQ2|$ zX~?cDqwMEG)Y%t>h>`roYPlSrHUxznzAAdX?@?18*{wfUwKQKkl*^{gsRX3TYgoy5 zCG{QMQ1eN>$zoo*KUO>Fwp+Y3heDHd6O4WfLez%TZvLThw@TyBOnY6LU7K=V_a1H1 zc1A$%TQ1?%D{t?o9jq-bCCzn-7rlC{X*uGyZ9mx#z8aJymCm6s0e@7e$f5+(UG3b( z1g9QTu)KS@4IW}@BxS$U4 zWTOG*(a$Or>cZCTg;|LDg*Vv?G56~2v#lk;tmi{t1B3=09^P)`rzq{; z<4<&9rNoDTK@MSHtIaQA^c(eYxHhQ2)Cuh9uPF0#l*dd_OEtsSs--Ek>|w*B=dx@B77P?G1^ZFeaieNm+mtb~5vt6o4^XPkxK8 zGhAaoYO2+CYtvGTe|DLtcPQ|K=}-&3|G7VB-C}vSWfjCQtP)+P_b*bzPe*8TQ=xA1 zScl*B>jJBBV?*;d5_sbv585}dE;iUSH1N{2giczhl$aY=UY>OV9nck3u+VQ^**TYG znV!(n>ZgDGzwO`}GRV5N8NG=`*3} zL6m_fLr7p_8~PEE=3^b(TiGCALG5uVd`p6U)W4lB-dJYu|uF@Mq_rwS-W( z_v%ZEH`i4KynOT|^26qXHk*oHt$MPB+#0KFzXOfln-=GWnz+;{>6#xQr6^0cDzUoO zl0BIpz5_IAylHJ~B<}H)$6DWUU37)^<=iLC&E6*c3L#^Q_G;e(l;EuvJj;{~|N=hmWseE2)=f_Ow&^F~L2f zSDc#cLCRh0h&t!2-gaAs{8BH5Vpet$zp97tW@h)uNAq-_$W93S#ia*@We3w_VvXwB z5ZZ@lEkwgr)5I$tYfCFv`9o-Y*WAnx@fbzNd{n}sxMi=3P;y(a&hmQ_31qynNOt*ak`8ti#fqS~Z6S^<{I zm6qmTYw~LzU$p$?KY6qq(ZSQsA2w>kOH|8}vJgyCl&$!3)Nzj_*vsmUB&qAmhhkah z0;}3HbXf1c?p_p{ z(Hd`847oiiUXZd!AiY3q{FdRCBKgjJ>kF^iK7XBQJ+xpI?(D+NPUM=rdX{t;ph0NQ zDix_HfesD7O5+oYFIFuXt!ebLeZpT|-)xi|#cGl>lyuuTpYFws`N}d29(cMdhPtnz zVw5F6;w_8}x*d^bT@JNP4ebrL0z8$XtDGY>X3ct~Oj&xhi?W#IZapx5jKk^cCj|4) zd!`h1Rmgm6vWb0y3=-B0QXGT4WE|#kwALzQ@9=Xj($Sjn_E;DcUZR&e_I63erE~KW zl(Qvmp|_`X9{8!(=m5^Ydx`YAw7DPHKlmvGNARCJ%$QVW+?ls_bc8xKqMac03o*l@ z`%bZoE9ex}2Y*0xkY5|IZ`vIUZt(r&%l-*VaXUh(68Ar=xVUTYe#JH0MqMen$p9Vm z$}Gft=tZ&^srUZlc{e&)6ofTe`XZH1k1L*L!ebwkcrdL^uljj1ggfFwA;b@TC9rLC z+m>z#DmIO^jNDxAN^vupYe=*A3#iAPzDyBrnH4MFjlAWUP+8PwrZxDW@s{F{VQJPz znX56=Cft$#SKjm+j|IXK8Ww01XO(iQ^B@B8u!8Mvj-s&fXL(3S!)A%V-J-iG0FvE1 zJRHiSb8#zdFuXRPKb+geMuhaPIVnn1D*pQ*F%*H9Hd?NBbBMc{!ZGj&RvVDsz&PyY z$LQM_y{b4cf9^REzVf|;R+J2OFUHx@h4IWo53af_ZCSP5SBpQ?+A`N(aBqArXpMba zsN*wU@y}V5H`r~8RX*fA^zYLJ^>dyJmJn`${pvpCshR|KF4~(M^Ncn)I7H4=}u4mXZaW9w_0I9J4hu|QI~7JBZ%HZic-HQ zA6uMT;&-C6dfbw8XtLaEd#9b2gf*IOXG?h5ZQ*>%<~G3oc_K}cWrd-sV10WxATNxMpm-WH=AuLG1oeAb<GHYw_o3boxeKIY!A#qff~-@EsrssN(S?~US%)wgq~5~=vKoYV zZpK?q+DYpOy@+o+y6AYUHKyS1U;CXS&_6=TF-6Aq+i?dIZaesCU3&0530Ou|qV z$NyqmKYNe=d8cgG`OgltO=$>xStn8`rTjMk3GI61Q!p=!6$~ErnT89z)*8?gPSC~E z(vMJoGfe&XyZGjvI{_fkMB5T8-ao2V!%<$gpVOeXE93KZ}+RNT<4ndUzv@ zTeiW}?>Xm zbs;Zp9&VR9GE0`MpR8ngJms~+sA0^e|B*}wBX@%#DQ%`cQOsqU(){Hqb@QhN{>}9r zkASurPFvIT5u4pd^|NI~HO&X@%Y48&={Ihygpua8yX`kw-jBKgZ-L}D-%miQlj-Bq z{B6UEkB0rxD+3Pr3KPXjj^Y1NbRK?5y?-CZG|@6`Sy(tq%gQoG76>>RDq2{UX6{mR z55$2e;wWt(uB>l{Sh+JL_g*>BOwn*p6czWzt-t3y{{Zj;&VBB4f8Ouwss+mgh@ zVtrwC8_~Mg=HFYvK{@7*wRMtTZ}MNVP?psUxPpzDZr-`Rd9&{c={GWL()gvLNGT#* z>w^CHd|MYpCfssF5r4(@SFRhneCwWjf7ej9TKAuRSKqqp*|5wXZ*MDnMxYnsOnmhb zKxil@=nVS1H6q{t!bt4Mbx|)bQ=4Ne<5VA6IQP8f+~F=hlT-3oc6b|J&LJAcunL;u zk15`GQ0<_3Sm8%{gw0us?_nEAShLXpUu_c@eyGC6Z($d)b8ec@A%s+RtbGHy*%27Q zA6aY44eKZykG*qbkgoDOE4_6UTb#3BWwLrB{X{X?=tX0xPvNL-UW1I(9vzxr)4Q`LE1vc)rq4^J9s9 z*L<&v0+<}3GyEh=;qsAkO@GX!07z%VJ!orF6L>Zi*<4ld|ut%x)Jmpva;Z&T*` z!shN_$njI>?wf+(Z^{p7%U{S^Q)n1jLc1B&Af^&t*B-8X^|*g=a8pKdHvCcW?IH{x zRJmX5kCh^DrTYh3ES2kb51%dVoaeYIm}xD_hQw;zBj=?<P3?Xy*6Dw|R%YsF zC{CQtfFm?4{mc{V0h=j%*2^1-NLqUO zKhW7t$3~y1!-K;oeO|O%@c61+uVx6bj|w6DLB5Qsr+{jEQ?WW^%-pf!!B^)pTws;U zPb~ASgu}tY95hMxUD8@ZS3=Ig~@c$nhD^ zUg@0K?`~CUy=roZI<`0aLTNQ+lJ(TtAin%ofMTV0?p|R~i}jK*v+q6UX1+(V<>unO zb~WL@w}lGJL(+tw^cef`7Henr zwxv(({4p{SNe6twoIxAX$Eq(&wkAdKiUk}W5A4~@XXkw1JF!RY$O@UDredL&fQ8HZjF-?yHE`A(hEw-z<+)3~m&5I3u zAdqTzFhXmNnO!4F8vXRZUa(e=5d{fNDgj7{ohzM=A#YyTuQt}T}xs?o<+ z_^FNED5tn7lPi+$)U)XU{F4uFej6oPp*3WtKIPp*=IIsRoK+CI8yWob%SuOt{E?D) zkR9&b<}O&|Wr@>Rvig6n_k`819EwE4QSS4Yl;?6=e(2)7a)<7h_#8=kcpaZuRFc^ti^cjrp*VKPN|q+|i!N@$3B zJ6fq_bbnklVhS%1bzhX|30B*k31UhY6@F?U-fnAb9DUu=eDcKz4sn1xZqh%Y%?@eA zpR2NQS${vuf31FcASyTtYvZ-qhwo}>gL0qN3iiw9Ho>yhzlkf z@=NQFRrI|=e4zf|#2RV^5dGmCo*G5%f1u0#w?;$Y0^DykfESOj{|uI+W@bK{o>123 zZ_QjB8vOjoykWYii1cH2vv-XMXo0PlP^Fp}^m>CSL^fQiE|>9qBs~*VA}`Ken$4}= zEr8Ovu|!e$x}*x>SgV_M*17!)wYAXIDbPBgb@o)yd+N8CZvC-;ixii4SD!o5dxwW%kLQY3E$f0Hh;Oe-WAmz z$O3-y7wwvJ_KM{itJNcIV;6CGR93;tdDh3h^_kmbrQ}Z!jbFl=H#=tI!luJm#o%gp zmyg|Q6?R}w6$X6YHbY`hY)qMWO;mK3rkgHX+{s;a3(K=zuPXXaRR6^4skavL3ij14P`ED-3 z=ER63ypa%K$4+urIDzgk={%CvrbHCx^eh7ex}IOt33XoNRR&}_38PWLU4}O}VIJJE zwA$!%NgL_n^;DU@1{)XjT-zJ&H>VS=%BAeb%;OK$Q*C+UQC1Nn=KbYx$b{x}eHZSxw!cP-iZp+)(0;!5YFNfa_{OKXC%_L1) zqWwU6+$0>$lVB&M&Dp*3TwY$D#iFEl;wTjX>kZC~6dTY}AS6g#rd03Q#*8GCBhYc6&J%J5Y>bYQe>k1mn7-|JZ&!B$>OrZ^5lPxz~|tYsam{=KJz%=d?Qa7LOkMY~ym&DVxl9_T8^&iFSsA*CwI z*k0;XzIhYh{kvFZAV?WV2F(wY@V|4iA^?7X3I|rOKeL4KDD8Y$#P(Q z6ZB?-MJfUW^2U{2x}wD15I3{PWAHDl4jV-7l?ex46c(b!anK+<3>$7 z>>twnPI77GbjDqk>qx)v1Mj;UvTtHCi2G$j?B>TEI7qs`e*xj0MbX_Z7203})3&#= z$aVVU>HR~J92d7+R?FGcloRXcORs*t91AuE!g{B!_#HnRS|VLeH@rHz-Ed3t4ApWU zOG>A^x%z+pB%6AvbJOz5Qdi$C^#{(wZ?mQYvMLS71{%6awmoVv^dw^7KL+N#Do95M z8>kg4+m$c{z?O)qzFBh{D9Dt4}5yFZ&jrS8ST7rWrp3AJBctFDqMwQKtOI zFFqLC@o)lm^`H zZGCP&L(Wbm@3@4iP3TWi?deb@9o1Smy<4o;djHV-<)`Z}x(iyt^<|OVw^h;-W8p3a znRXv%4U1oD%Y9r}7)ZWnv4s)UI_KG15`>XTER(KZm%dG)>>fI~%u3?MbW*(xGp2dd zj5l?U8njv2QuhB0(6!S)?JKPMUANQxo-eEYihph{X7c0*y`U(8m7p3~>LBboD%Vxf z#aw%}_eImi@U?V7&#RwEG~4><^v2U$rN*=)8Ut|IAc6z6-teZUSrl zP*h9K%M0*J!?r?zFc#+PYVW)Mfo_WRt*(FG%-*@RS=Q2^DY~m0kX~@2euLo9f8plo z4h2ES^ssZ7CFK%OU53nxX6{I@?EazbrRsI+zk)^K&EMNSzpIapzCQQGu&U%8geUw+ z>0e*-W#bq*8Ma7XQiafgD%;Z`*&uDhHK$R??6S>wy^5vwc{MpqTh ze8W$iC5>ACFdpdMbV5D(nKSjE6qQ+8Xul)SIzSfjfj=g*MGh!ooBGwEUa%KZhOMzM zezGWd`8k?BPPM^>QO~@+KymCgO|*M=_qgtPmAtZO2?>i+2TjFm4;G66pf2kiSdBz& zBdc~!2PXAdAs82|d)+uEVZ_{OFMH1ib;Q=EFKa}Xr9<%imL4p|qWFLlw&vX>yP&%R%$%P<1g=?N;K7Q-KC&+{%jB*$}CkP>c`{0;bv> zKY~6ZHp3fe^BoKHS z|DJ`tb`2Ns)NYcM)P{gjc$CH~@LNMDN5Gap4a}YI+&^FCx5SKccP%oT5wQzif^uc! zL7c=&3br8Bz~*ROzpIbArT#g!pWoWqF-f0Q&=X!5p+-nxdhFqccg!~OJ4SYsl6aYw zlhlw|3T}{03YOcLLWr*tH&KR?0mpjUaqT`#Gv+GB5E)C@Lkm#7n>RQ)I*zOAHmd_O zq`f;RTpYt9WRLWj^jFS@Oj$5y&-jXN;Eg%$(W6}eSZhU6m=ciy9Fq9}l>@kG{;&0)yR`);!tm8tk+HGJ+ z%v+ZXuv>1p(F*(}GisZsneN(*hj{V(xtvgd1&S&Iy3(D&POsavfP2d-tpd8-hV6ku z*)i`xzy8@t(JDfy)VR2wG%rEye7kazOmr^{1QiYXZxN87#|^IMFq@cnsKHuOqUx*7 zj3OOEtjGiT)<%Me6qU!JP^A!}|1I!2y#YOc5A_1ow4rvAFk+Z1s^`g)_54YXD{^pCK1pF;GHMB^pDk zwQB&!G~!evzP1KjWkXH3t)nX=ayNO5kpLJu9vneGA0#XLQk(^VK?X*T53lamxZ zU(`R+MR;RMwj+yTo8_dGw73~y6nf9p!dqgtr%K~h%)WH^<$A#;34V>QQtS=*6k(q~ zm|vfKqLGgqjqk@cFH*v2dc3h%Lrdd?jwyONZ)i)fXV%TT%X=6|JvX%oBC)+|wKJ;i zR37_8JK<$QjWWbWIT{z&2-4V1N&{D2p5udqR`{BrBEGV5q1w|)jPgU{aW(R&np!z% zsPbB)A;H(oBfZtR`;*Ifc1AUQc02c&MXZjXq1#}r26Y|IaNQ74RAxy$?-V&fWqaWv zyM#m0DqvAyGk^e2icF-(!nfQymJ|iW2v(Pj1ZI$eF9o z22N61{=QNKaLW!b0Rpd0TZZx(Xg4+IBfSQt1oc4tJup}e({&sBJD4FMFM$HF3Epim zIRXWr`Gjf51-@?r530NMH*oJz7IPX5-Vwe`TF#~C!T3M9#wnLtK{~W8k zr?SAX$CB26%^iG>?(`nVzxxC4{zF*S1zW>_N`I3Dc?PL&=ChRp4%Wx~zV+3W3Z1WQ z)a?O94#qK;5_bOKjpHN05|WkR+e*ZpFh)yf&j)<|ZOY_jZSv94a3$qf;q8?GDZbj- zeGbdh_St6WWyoSl>0cLzp9d9x z&)ZbRgpK6U!GN-5jFj@XXeXZh86q!7wv&1i6YWXh279V*F$4U@NMWR--qvrbj{3cS z+@aWwws|q@lF_SYh8R+rk+tK;8%R8Rp&ON}152=KF?0d9qG#=kZ@$S-R65lZ-$DsUIUh^qN z+l}j;jNo5r5^C%gAN~kVpJ)rRb}!}UPhX|CS%;7yYe^D#QeD!q-OHYGES@QN;Oetn zwbZ|Mx*5~AnuHEx9j+AU%3ipOYdoZ)8WiG0NX?-?_aM2*;1wS#jUUgBN<1qt8k3hz zg+>ups21Km53X*!H*eUYqdbV>ktu~iWm_71-b79InW~pUaJHYk1g9E6fsgx48@qoC zUmrGi>O>l)_1xBz85g&IUYP771HcAVR3eNZm&N4yLzwLx`HXocoVPf5#(gfNlZM|_ zZuefm)z&aTlhKvPYWhdUWf8O2r2zpYsqx>4(ZlD#1|``4#_iurYM!L8;M794B6aqFty4zf}`I*U>QZ4!YyFX?+62#luqCk2IBiV&ODGaI9(QR$lZ<92uC z*PqEwmcZAepf*_Qwyj1A(El4XQUZ>6z#7Aq%PhJVJWXYsqS}5G2A9G|Z*_KZOFZ|DfYuY(7T2l)A0F zd{3;;A*sRDm=S>!jo8iOSW2)@+MK5MI{T=KHWTO_fuS6@BwR3j@-5&Ec@%9ZTjf7Xez&dR-nuj3RtbzPLY~eQ)y2Q&lTZ2tEUiR! zQBNWG^ibe`ge|8STCfxe(0d|mEAQVqE~q?B)8nF)=SP45@n@&Ub7DbY>!9lWD*v>c z!XkQk`7|qlIPY_6gypfl`-Xf;HTbKIXreMjsCIs>nIU;ORk=N+m(9=cz*HqKb5E`a zF`*7o+5;tA^0sfQ4tkzJw?eJ9N3H07jsNoC0#K;&ZC&4ORQq5}Mk&p;v6Q%Q)i()!H7Y7@4AQOCwa zS)t&vORrPzM2o%9<)_P1x$;y$nP^zsp~AfzPrHYZRXZUMIC5+UpcVvD(!C$5Ji?+y zs97eyY;Kb*ohO#?OCPgcop*xtz zveu5pZ?<1WM-@$NT=U8^wF(-|mwze!-+~TeV{Hz{kcomVr@!KKB@^!$K6(ErQpg^D z%<3yx`F@Eeg73BG&nMg;A5Hor9WZ98m-_#`TK{m}9c|XCR$=DUXoAh}NQeCSgT4`0 z*fk&E^xd~;!(6Q|e<`lcy7=^Ou{T&}ugyE7%*K&ZRWVm@mX$eL9f`~?m|Zs+aZwxM z@jfl$pNnpCj2;yq^lUQm=r@iQcGY~j*bjd6_|Jv5PwYK}SLxYjt;~1LMkne29Uvck zISwkEmoBKT(|j|0Wch~mnV=)jNX`byeQ1|u@Th+Ovpe!{ZfvHknj3Xk!M^)-yKx-u z7L_FEU4L<@sMQ0ux5%^-+WS@Lan|5xdI*5GHGHey&=~uGLU;Kw-R~alnjYi(%hYG! zy+qfe;*6x`vyhAn|M6RqFS9bm)lK~|XK5f1W8GsrMh2^yx@T9kPkf&WH~_Cf zOkO!a6ZI4Oabqzu3F2*e&*zP%eYJRtfUDUgqSEhoo@)P+-P;$pQfXS%D#1;{@-NYr zBWVfJWDSXtP0c&Y_MK)y?-DAhszqM{qjgCR-W^#MrVrdp?MsS26nGsx`0N7=@$7*I zd{n7DEbHU#1*c0L)YOA=b8+!IK03#e-~5m76lzq)>7xw>&tU|PChV{Um&8nVy$ALw+2-}nE4TmwxuiB9Q5H>0wh$B_xt zq`sSr8I!*?}y%&II%P72Ue){JRF5j1;ThDd{2-Bft={>AWzj zyZkBqI&U^n{vp5$6t+5B{6J+!!BYS5&DdKpZaKE*Sx1MB{~ZvB+JiVtpG6)?O)-hS zL-P9hRja5wr9oz3WlI-=w0W-AsNHC&NwqFu&SfoSt;a7P9EsfJr*D2?CpBKr^FK{H zzx0oh);ji|Y}8S++3r6bsdLL=dBe+c;VWwAPksJ+;LM+J)T+MP_1jMdrKibikhn@9BZyL)B%(txDbQXGynOP0CysSD_vG=yx z(NY&TBV8EPn3Ws-q&iY9k0Nd!VO?x*x~&^6y6!QSgR$O}FQ#0d7#Q=2syd`GzpyO#xhi({gzn=LImN4ZAD8)KYh=KkAK!1Q7H&s-e)odwGp@|!gBjKrO)nYsPCnZo z?~f>i1vvFze{eO+C(qC6vi0LN9nPpngwJB=$C3P=2GYp~Kk){b_NzA{4>znQj5$?Z zYB$G3YUb0;ja7edY}`Z~)%(;j*x-NY#;x095^|B%ib2YOH}+CBj?{U)*cV!=W{4de zP%#6XWd$7JA)$QRWM5H@$vDz-@jqCbg^Z zZMV$Ak;bfyzqexf-~9b_H&^12I`yc~Ll9kW^Z9a?$)-zM!_r9OvFb<-F-wMD+N_jl zwS6p5NJw=kEy<0K`Xb(mX+_#6hL%OV$!R~7emhlQ=K1WMW0xOvX5RKr)tO%@#ZbRJ z9?F<^*WqB&O-CNniq0pZy%t z&U%DbN#qtpTJ<7LwhMlJ*KgE$ZRU1cFUCx}q#iHFRs>6DNS_7tzo(st1>9WN2Aia@ zjo;7GK0VI0K4$1zbz{>i_8@RXXzv8%b@3(w7JO2YgcQsh_%JFOH7Pnl!S z7<^W1Nlw2x0j?aC8&1&IZ{6M3pqzh=*6_!i`WF~eUifp4XJS^;e6f&_h3?&S+0or~ zTq-87WgFCVudkmr@PSlx+!(mjT2!7^@WaE~@^-iN4XeHp^Q~wDkt&zyhW5AO4~Rql zOD*fZdzs!*CtQF$@2=+9;(^_V?GI-Xs%s8*U(GJCB#d=_Ry(ycoa7HRs-2WidM~Ls z(>kB(^|AX>3U{TA)1bblttPaKIz`j|V^Qm}?)wbS1B(U$KRzbRa@bmL8mtIz< z_{Ta+o#@KJxn%U;^;OIsO?=elwslSZ)pXapZk0z) z4ds`AV}o`*($(KN4J6(xuT(a@`0dc9|LtsvltoDkV($oTU}k{pe9Y`#>NV-61REeM zpWkWI$vcd~v^nNvr{~qHnhn;ECdUeQYo9kb3u-xk&>p4`Do8RU*)R6{8I~<;zM9ui zYYCtO^L)%ONhDAo{j9=al())x?m+bRyIJ~uJU8~wURtamVt(XrZ~WGqZM7eZ&*Upt zpZwzc)_-gKNOl}e6vGaHdN%}U)}a&|?t6Hzro>bQX{A2%5=Q(NOmJ}8GW?NL$ufH7 zoOvbM`I^&>%BhRl@}~;(&Ct%Nl5z>I%yF#(EwWeh$oWFIG&M`2dj*oTeKP}7a?l)7RL?RrwjLTKm@GniT5+d=;zHUNi@}o-`e_Ea_u%guF ze^{9Sb=7Yv)rCFo!~R2%rk!Fa_9F~rhYc1)h|oNh2b{L0KArcS@JuhT1aAt1 zBVz&D(Wuyf?eF4a1GXlGh*0*ISJIcB(<0*v#;Zi1uw93OgXjPtSbMb9;%=^Uw6ab0 zN}s>HEHW1`NC{snAO|a4`EZ5h)QmQFv0TsV3PNjii#<1TpBY$l%9>hCc5bO^zA^k| zuYXwd-$IXLxNKZ|hGcLv+shv%2A^)ud1|_;n>JL>ookPW%eg&n9v9WsB4Bv}K6OhT z4VDPwL(@KoGi9S&dcFy`%SHAvEkYRgpQaAshdaLiZjm}fyW_BlQDuH@<`jWZUhDBP zJqn)^dRj35{czhQQ2%7x&dyZU@GQl3A+lBS7uWU_<& ziYkZx%BX{mOpP>_XdL?L`cN1K0Y#TQFD+%rdFn10HY|!ey-gXmG`y;BBq4mErbZ?j z4rx;jmj{DZ6qXEu?0IgAh1KwYxy5a}>o)>o>gHwGpL*+d>Yu-hMceqfGrqlQFphJd z9|#zl%C0JM`Cd8H-;phT^+3ILn|?=e1#kdGEBD*x)k_mMr(&%a6ab z>fs@-?2PGAK7?mM;OSJx%~TPOlA|240+8?vEmsi=RKy)g7P(|rIOc{fJREl}$^9QA zy!Ptf-XhNcmFemO3T9T;UbiUl%-jP#m`QY?4rbS#mJd2MPDwq)zxZ96z9J^ zY$k9hS>SRlHy0YKqWe%(N&P7am+Dl1aD~%6l=Oiw$*PwLX@)OguvQUAD3tZ;sfp(Z z?Xz02nx;QXf}SuAePZ=`y|lQ&Xx8U-OW<~Gj~NC{=^{hHsJByID)L7xO%g&MpsvzB zb@@D)4e*{@pp<=nU@!dS_1!JE)>B`612dnwrJEC{*2Tm&#SFR^zoX}qW6yg&$ua)0 zOtw7|6OE-H2z#&D)uB=cN{ZhhqK-J>J{k|&7lhv@lNS_UC0Xg9gr=>j*5GPK$wOT8 zi2K#mh2iWny2^J40rHjHrbf?!h(F**kzLzEOAKpP;ic>gp$nIf-z6WAGg5h)<|kE2 zpkZlvdTzRbct}mzuSk8b575%&)|~hA*H}|@2N%`)toh6rnU8VQ^W$G8;v$Fs4c~lF zoc3o(YVuU+&V|4u%aX4f!s-7Xn?C((sJ_GE9yZ174<#o>2{CpxJt;mWK6)kP%r1Jb zfW#*6ANhE81hRW5^qSzNe~%H~7YMjuKG&|EK|J*x@hBmG&y5l9jXNKbu>avONVOcq z*9#39gmP9;rA)QSVMJvCQ3IdW|0G#(D6COzVs}%Dx*K%;)?d%%cmn>)=&AOec z{;nCWmb@>#5G0I`s~MIpU1Gcs)bvT4@%0mw51s6_`B5eQ-Sw(h%FjFQCbj4E8i7&F zl68%vn%z5{Je}3keD|G#{bgug4HP`A_MC>z6R|#efAOec1XAx}*I0hhen)}BN8ySB ze-+WO@^=gUJJ?`P6%3pnS#j9UDg94T&M_%rWRcNn-w7DfTjr=AbeSqb6KkLFue@I; z^y3fJX-quc3|k&KaxL|6`UPQc%)+h0zH#g=F}BK23upWNf2JaLypr|vC$l0FVkf_; z=Nj}ks>2Lp6(4QJeK1Fk=WApHT#1787HgeqQpYy zoz%3wGRJv((@6f}+`y>e>nepX3)a;~*KOlXPYrI#a2I~rpY?MG{CZpv-%jGv=!3RI zH?NvYc9yyOzzj@O%t|*6(KA^T@^kv(j6U+p*hmfT0KJWP(t-voil+3{}+FBR9D ztn}VR*7qL>F8@T%XoDjiMtXg7u6Fxim0!*3<31dJ^r7Efxufse4L=V9kD5l=P z3hm)p&<MV&8S`15HA=e$ zmz|wm6X3Ql540buD4X>ZgG>G8n+0@PY>ogeyrkfT);QH|agDRwrjeX(7M;rv3Io>D zp26i*g6+78Neg zzX$j$WFz;CGcV-1++CaZrjHPbYJ-dC%R+t~wpr4}pi}}xcyn+L#V7eAf8&#V*uE~= zHaLKA;@#?$y@wHQN_h$!|!2C>-ceOq%HN5(hjWwU$+8Jk~e=tIv;6#a25-g=cA0_KSkCcWR9wPDn`9 zZRPop-8b{5(+VQ|^OSVfa??78Rpcs{-6-C4UQM$J^rF4jZFpZ+{ z->T`77(blN+W-gS*?YPtvlNKx`?^!Ofhg<8-8o7IL1iv1Hxhefw`MMOTM52>T)Bn= z3~~4Gyt7LPwVmMdXYLucM=>*@CoGy`ehG3Ky@(_r6**&=dijOFK(G*-mM*u(r3WQ8 z26X?Ry5(d&I5l()&{fPb|9*_^9#|xn&l1&%>o=_*1=`to8A6ztU1-?A()_#hi(fb8 zvEUgrGlNS{H+TtIgn-GZGT9c+kP4Fw;HP!2+!CX&$b!>|hIC$v z25k?=qN!-U-`X>j|Kr@ly1TniDCezojkHgN6`Nb%tD;xCX^w6mi~fJU2+}sns$zY1 z0sEkqeL#m~Wk{Fw*Wk%WhVt6b9H~CZ2*V)k12{uxd^uLfU%tq4zo_$V>rCMS2+1`o3XYm~iO^^ep_nuJ6l)g3{JxLUJ8Gx)ER4S`3-)!Jy3DESC zZ{8dgzqMO07xG2m;5C*9Oro|{rg<-RGizV_^qoohKXH=bzO+rrQtQAZvwhS5f!vsU z=J<#)206z*@_x00-cuRnmHyKvASJnQqz_mE6xKi}z0Wz6=T-F9Y+Zlh;j9DQ4Y92$ ztCoCaQA|k9W8{|G(9|F0V%;qBLc2xW7LdDkl2aezpzBnR<2r9nw&}{EqS7>`rmghx zHBy72>Y|AO$93?`6;1P?PTDDw2!43GBhE1{;QF7FZi<772+>5MsCnkrwcut>=8Ud9 zP>jtlC<5!%=lR1_->M>>~J1L8S6!@_VU@{RS%Me*N3^nlrtN zIUng`bxS1lBr}$3za%=b|Fz=!7+nm{(#c&Gd(AVy=Ahe|Jyuds{fnmX#{S*CXGgQn z`B)^2z5*n*64H~mY{jVW2b1&47~{;Gcq5FzLIoSb+{`GMae z_&jQdk}pl+3YHVRI3NmIKCJzyl9C=|I#dkR1m#Y8^kuDQZ))y5-c)I61lSJ`?1TOd zH2Pcu^WSW&kmXRA4PUI1x@|DFS431vc)BJ--Hv`IWB_Hzk0^`g1Lp`58yRwJ<#7>Q zPqOIOu%6-;DmQtA#N?U%4`kMB@-)9X)@gX5hoJaz!19qz(P>z%6s@;*o+ZGgqd;wv zCDgp67a-Y?`DP?&}akZDLK`B)Rulhlu-QhgaR zmGe0}{=C`Q>{s6hED3!+eFH6+a_>?{C8V^k0Dl`E-XuUe2AgK^Ck*^UYLk-nW6hg} zP2tKEJ^`+99~$I-*3`z197YL1+R*?ybCeN)A=16itGmqpH*P~7UkxUR`0m2x2uh1( z3B|@l)YYAA09+vu*gE&KsOV$QcN6QZUBeWlCI@lt*#Z4o@ftoo7^oObLmOd0@JqPh zI#^EA{X=0fk?G&s0+xF+r^zBxy{&;^&=vE%CQ8#3+T^x&4UCTbz${rhUWE0HJVCugkv;#6Kpbj zVGHlB9`z8x-%*C0jbq*LuGZZPN-^tqbN_OR{8=W}U$WXNq9=240G6^UiUaQD?V_F- zY*P(Wa!Kn)O{}m0=UW?5m7?xl3xPMP+Zb_BVulv$5&--vDRaG1OJHu7lfgrZ`fspT zg4{6#(SvvYYI90u<&uoBWN4_M@@$mR6%{XZ4Wv;$*f4`(gfYxqgZ>*2nU5h;Xki)r zay|^GL&ix^X`7DcknUe%{y+|TfSJZ8``@;g9&%0c4HL%UkE7sdhBw?@<6^c5)DRX@ zgp$Z7^YWA2QC&C~vN*Vc(ak|fTRo8O;q4K?fLixltl<#jS2Ii=KqAkmGOgBvckJxe zAd(>X7Frgv*y*L>$UaeGn}hL}Xu~gVc~3@DU`PjwkW?aG0Mzr-=-^$~E&CXg^!cB;Ie57}rEm}b)^R`bgWq2qW zXs49ZZks#ZgXH5a7&^x}G4HhbOW&tLH~5PP4kxK`Ciz_o)~i+j15KX$7J%FE=O8&5 zK>89YS}D}{Qbsc=QBX{N00~l3HYFqme}=k&722b6a7}=LS3V4& zQG=8OJrQeiUaA!81`|`tg=CCB^a6opb6`w<==dtYrRUI;9H%!%SO!5_flN-4AS0vC zLZ>4fVKF{Vj+vgqgZaq^?gc#$e6fkQja`tCk+8jVr`QPzdtMF!hr(ZIX?*RO4^K`@ znU=ZSqp2h@&WWpOgiHFPTsYQ|nqnVkF6VrYzzWsB(vG2$mqUXd(UJiyWb;32sa^K? zVr5w|0Pk4no9j2)upG4dIGau1oF^i(nSZ1D;y6dRHKeyE@Q>>sw@3#g?E^$^oj1AW z@!fghw}PdK(qCl3m-C0aq7>xL${nsc$pC^vbz)~yU)P%juF6iAg)@qyVUC=buKQle z2l($@IYz5ja>sO7GvyoTpo)FG-k`x*$)CXrp_PZoilSYQsa&sEQ<`p{bgm(zuL7My z`u%g+XI4xcZ*sx%)YwGRmnR+H1n!91@lBNeI-L7%;rdad)4>nMWYVSG0M@n&S}ygw z@s0AQ9f&?3qWibhQF;ICuX)~Ugo3Io0cf?Ku8YZ<0em8SkaNK@+)%OGLJR>vCd#SC zQ*TN|P?M(30b!e=%T`a9MjFCQb06GXuoyP`dh8RjSs=#?V*BL?W_xc~hD_aZ8jqureI&&snDQlHsa}*5kOytwSc4uQa5d>x@iL9N zu1kjQrL{fLqyrRcD;>qkzR_4BSr)^%zs6l!lW6n0Qp?C-!Zf&=R`6zS z*gGs)X~W-6N-4R?S2B9%?iB zVQorS3a*`lw6SqOdW)ZsK>?49m_%g;E2NEdhRPOWq-&vfu~AGY$u};n^8^zDhdKnK zP%!2wdZlQ>FD+-l$*#=j)c-*Le2Wb$GXALh!sMfxyxWMIQ!tL;sr#a@2vOS1c3O2r zj`CAeA4$!}!G!;>ByrP!${+3wR?!h&1BFq28c8Qu65^M$PgE-mSgKoXJ6GoNcqqQ?17K8en^*>ny~bGEW(%E#FzB92>M<-Z ziX@syvA(uZW@fd%(pRpQ{>dUf0v}(cVX*JozPPK-#xWoD0KjVSDhx_J z?Yz+^7hkTCwJ_3gxH!Oip>Tu8L#8(di9N8oRgqV(PSy9V`kVTjvv zN-fji+11Y{4{5{ZbUd}Edsb`MvAAig$DE{twe*3?)~`DnnTI}wds|nX7Dx%ZBxxG? z^A(wV^v;nweIH49!%p7L_0K5d_|CW?v*sHMbo|V*M;!%8?v6!2H{PSu;uaD)9a+-h z>hkknIGV>TXSM}DFR3;Zl~EE7Ip5r#v+hHDmUuK=Z$V!ijg0zh{4S$KR^3KSV6)|C zAa*m-CuMeDY!jQgX;?oDrCL54CjGw6HK2i;Xd@38uFBecdH6o-@9*>b4?KL{dtc6Zo#&JEzHYPY+rqJd3}U+R6-#1WwvugV z^l~5hladuCc(mFxcim;!D*nDACigFv;zmk z;oF^v2k2Szf4CoI)b-T?($PrN|XM0)m9-{bI zrIlgq7b{ic-^wlf6|zSg9vy#8MlK#poRp9Xw_<%CUK`8vEx1>?)OzuJNoZ`(mn1g6 z;`Za;bMF$Q5t5j6#kDivLrQj^@szg`x2`?FuX?hmZi~&!nK>q+VRGMDMmk44W=;x zO6=_6u=QJudc1=Z&G!o(^D`%-)HA8#o9}ByjjE|&P}nwnbq_RP*@mbywP)$vc6E>4*T-2*D^jM9fa1Ev=l z-g65FA7nE(fcDCy64y^^+(K1V3}U%2!n0cHNL$n08>ET!mmtTq<(Oo&%A~Jq#QweX zpa&3G$)d7Eitg;2%*X6lRaIRlVc`Y?G@z=D{$pFy^cCnnwMd9rd~l!+`Cc}E{pxk4 zMiKm}N5+2p$>+h=udh{w51LPbtP`1Q{+o)&d1;eLPg-J*svC+39QZt@1%^5LXC7Nh zZqOq5r?=@h7b`#K{ho%(I47$2yf z1p6rG6fu6+r@0+U{vp33Wz9M@&nkIn)z_a@GJ6P52oz`+W5kjqA00~;1i9_x*L`Ki z>>P3Y(IC9z`ysqq7v32>=yzgy5P~j>{9Soy$>}7~Gu8CaCz)uLR{mh<&3_B0dj7WD z{CVd5t$(x6B^n(Vt!X{7A^oS|%Keq=YhUl-HDqCDA`h&>&!guS&ZWGZEU5`{Y1hd; z({+}sN3i!uf&8}_J2%?lUqpr-r;g; zS?9)s3@7r9l)Upy)u*1wbB2Kr^BYgr+tSg(FvEq}W)@>^|KeBH{+~7PqjH-a%2}cz zXM;;qM_iruH&(q8wtbeb2xe-H_l za@qpYr0|&;-*RH`aZo~msVY_P&Sk%Q+cK9cF=jL8-Db^?=M)~tRyRaL{IzONk=>n&rd}VuAOUJ(n^``Fr0F0Dn%jLyQSk5 zt~&@o2DnOn;(AQ?#QlcDRP{5%hva`~ZiH#@$I9#VZ~tP$>38)__jx#7Yt=Pq+f7K= z6TPtLH*%U|&$wu81&R1VaT8}2<^|sN@P&gaOx!L5Oq_U!9ihrAh`pgVMQ8n0xm{O5 zD&-guLMre;iM}iI+Fl%XKxX&gRU1&lyn1!7T6 zntEO@jB{Wa7k>z+W2&s2Nh_z@4{rc@7dHtclPdRQHQHphBmG)z;y(9#igroBih zq{rETuijfekYU8ENH1`57&$%kfoNUr85eiJ?rwi@im{=LnP+J1Ct=MZPqq2AB$q#- zktoIFwB_%=Dg%a1CZ1_mx+kIpERg#ee82f_tL$j^-cicmv}zrCZ+ou&z&;y0r7~u` zNT8*Lo1{p)n;kO-=&~JB|8;uOv!XP94DNM!j&S*Wv|r9YX?O)6Nznc;Y1U$`k1~T< zmqTJAzVnnWzGw&@$}7d2D|*_FR`~Y)?a|g=xLa8_S7xr1eU{q**>QgdOR%ney3fF0 z)yC6?20n!)y|NyPU5Im8Vgm5jRx%_*?KB0Q`p)TW=qXd;w=Zs{MZvPA!j1~@O0xy_Re(uAGyMZ)RO!4SuKbAkHYXzsDFx~lFYUX&F-CM^={oD;S#LQ{_fyf+6 zTloTXZaFE&Ke^P6KSvisA1fSwj8092Q=v@1>HWdy&mWD5u%l1SjuiHNn2%VdpKG7# z^R2C*-W%z;fU6xE_YK}YV!la<6c93tHI3>kOVPEA+hue7fxU%&vW?p?5$KJtb*~Sw z_S$D?RcM#M5K3x!<=(&6j(BJSehxzZX%SB-IX+;*-e)kD{U(isbG49u_$l8?t*O0p ze;3B2{UnAJml7D>K4Er9#y$|pG7UyL+Vwa`#&bRE6(}DZ^aLMP1`{oK#nwDye$pcdmrPO{2b^1^xNV0*%f)2 zZqLw7{~(bz%+E;Vg;-TwEC{CexHCoueIwJubJ(QIJ`fDQham0)zF=!$z_I#?U2+Tn z4LJT#{@$mI^+{g^AKOIFG?6d7TS|3LCoiikRViZ^(;#r zoPa{wApr&g(Jpw=9TQaBeEE`5Ym}kymG#A!j z9?*WXiL#vW`^xywTM-nz~7 zDCNhHF$qiioHfErK9%G@zIVWfh`J)#5s0!qwEX$z?Fx}o#t^sD%H+tkC27XnnwG{MB?L6hsO#Z|=Lx%4TmTYs6WW8X=Ro0UEPfdDGmiD(43 z=RV_zdEoOL(1%IKpxCB4HIh4g+2Z#9^Q3ivN*@0r>Zoa2R!8Yc+dJ^=mrL;h zL23BcI$Jw$H`9Q&uFxipl^GWA-RTYSOv+80d(Miu^B7dCX4vBH=jdl9<^_6aQM_Ze z^r{%$Yf|8iJ7#B>h33-g}tc`tV}@ z^HSjfUSEfc{##{Tr`@@fF+*V!_gIk5Lkj@ecysrJt;V`$tKGl)DxdEj>=FSBr3iqg zHl&mdTF0BJjqsNvAX{O}H2CrHv#H1T+dn(`JU`ke-cd*l=t<1(oMis8onIHO)xK$b zP%NvN;U0g>W0?X@kt|yDW)viJ1QcR|)|2dqx-Jx**}3^VZGq9AzrKaMdz;^PYub%n zJ-ktP#X->{V<@B+hsa{Qo(Ja1sKZ6KmIze8^DQe28R*xD#7;@dV+CO$)e;E=uMI3; ztq0n1FZ{!;AdZ`qnL&Lk5obCQx_6BgWrQRxZt7(x55XsPKS|xLs&Je8_in_#cwWlU zidsZEHTT76J)jDC#BYE0?xp^uQ^RJ@xzU?&C9tHDSa8G75_HzXai?}?X1lMzuEtkn%CO9I-brLqbm7t+)Xc5Pob43pUd50cSQW?}rbP_ugMfltk?RE-n3>&9Qxiozhx#{?^NvMzb$PJrL9SCH z*C+6U7_hITH2bGPqeNv33}tDJ8w-;8<@~H#e!+`+XH-n$YCkUUj4;ElkLp{wopd`B z8VV2(#3MK8)2iWXS}BJKNNAuTGh8vQOKr=Gpf#v|O-fZ5OH`XSG*p=-k-cr@T7vo% zbKvrE;NJuas?cP5ZjL`oAt&i=?u*(E;f*h94IdZwxA-IrJW{Dxfm_xR`wx_8eMJY`2q$B?gk9Zl?sd1V z`D+jktP6*CPl+!3u^Tm2?%uynLleHa6Y8_64xbrr;t& zpusx<5wokze)rE{23mr_06IMfoaFuUK?siE$JH(oxo>xi=J$&Ca5w?gR8mlrHP9)t zupXvZl7U7Jiyt~m*kKjhxiWHC1u$IDR-iJLe8}D)HZWXgg&?}2*hk5aT+1ujsoAST z@3}tJTLu=!?ArM=a-%`*97VDkX;&QA^V{oGxGt+wuu`uNhlv_ zPQNn~#3jdc>75w3AYJa@STeX*cO!4`R|S84?7sJ^i}y_=4=@x~gd=x=;oor1(>$Lz z!Z&izZx)2JOcQ(u6@*Lb(J=ril@DO}64y!BbKaiZEj)mV4dJlYvK53{N>A`kmhOV)w#mJ>q z=Dr{@F4~>(ABbu`+uo!g{&tpbnL0ZTYocCgFLEq-9Xh71cWR}Eakb#o-H|ON*Zc;? zAI;E6xhL;tyZLPQ)Kr3z+{<2YL6?yrF=A(z5Gl4q_CU>1NE`@zrCTll#34lZk&cnX zIH+B0Tsya0DuO2S>jKOB&oIvmpd(W}fcy8VueNvoV8d9hgJwB3(!2V_r{T<6nfHRH zQlG#gU@GHCUYD{mMrm<;y<_v>q%fo>HwK**2F09vrA3 z$!?wtS^`!$K7_;f$lj}-cxcbeQfqmYW`OlQO7`*jL_P8OWPbuF9tY(gA-`dnN@tyQ z^$elj9iH7f?2uexN%WIe7)yX- z(nG(rX`vJJ42{(8hRFqJBbd5#vvCOvd1eNG2&> zcoY<%#P!U&Gj`50pn#4+Q<)}1MGwY?D8eeDbZ_t2(!T^m$u5IJI1dN1LG z{LW#c^?Q94sf!y%X$WZhJ>n7k(kol^kyZ`BkcMiMp3S(lBjvsx+WW9Uaf0zAJ!Svs zaL7BIty8(EHUu<#@=h&u@RHVh>I3U2>Y3u;xoits`~A|1PXo)8^GBsi{sTo>IcUf9 zeVkosaG`B=4~LtzRQ|A~UmftXPu_R%;9DbDG}|YfRS8aT-b-6N!V<1HTt554u8B!LuGW z{!JSQrF>9Ec5&xZ!prm2mwIdf9H{jN#a5W@x3yD_~q- zurT}JzaRX)lba2ushF1^d`lQQ#^WKS1HpQ~ny>9XZMdHl{_e}B-J~)!<6-!-b1S37NJH$PviQY3+dwb-j|tFunabd^Kg1164n z9>bw^3o*_o7Dg}`56_zNY|3f& zV`V?lVlEc1mGzYKo;x|2P-bik{;3^y9oD!o4}U4A37Uy8JXDrFtH|74NPcL-{H5h8 zKb>H{6jetuE4uEJysn-3bl}?SV;+R7$|yWLULS$yEIdUYnHY(wrd(0!pL4xw0ReIP zgak+6a9fz5al+G2EW?o|ksLBBXBu~SoSWd{0zZ8Ix~I#-!qBPAM@Mb075hc$aIZg9 z4ZE*V@sK*)ICX1Lon!h+P1=eyuKAUE1_Ow(8!*rpMC)y*q_h5rVcX4~<=6rt$$&r! zgvYJ{6widNaq>J!VGvrNgpk>!M1Nfo7J6LD!R6ZGFPU>aHHm0952)m=ozbbsA~TqCtW&2xWb_UA4D9Tx zYus-d;hl;cvM;HK+TlfSr@qpyTOx`~D{G6n0Vxo@;Wp{t?(=wG_7Ok|4!cDa)c#7h z23SETz~VJqTVir>fgzWR61th^k??JeO$7IoJc3AKEV#_f*>Q^ZSVirnY-iWisaoz` zs&AC{gk zy2IY@hkw-lZail!@OjiLj+`J^ut2N}3>O;JN5SDeaYBpY25^Lj+&8x)?SB=R%MnVW zVZ82OAE=}N-6}}mfBhD4azfaLiDO1UWPZ_(a@xAQ?*YT)lxL}=D#gMH*Z2~^8 zun3BW9$DU@2}udaha{VBeN{|3E`L#ASNSNEC4^63lY3um5TcV8fA2#$TOhQQ2-1s8 zZyOb1CZuQ`&Ip_J^^fwO%Fn!HUI{C|KV*Nw)$G)e_RL`RqQs{Jug{<`fccfyid?1T z{LM#;k9}!E@{+A0*4e3T?9GM8I}i8Kd<&R?(oR{qI!GWtlMAC%yF3}Z;K!`SqgBs8 zH^e2x;Yn1RHaHa9s?%9~tYDa@x9LBS(&v&~+)$)D{gqJNrjXi%5`=x$2?&V(H$rz7 z?!%8TPtpTp$~yyg%Z^0e#cQPv^xq8z_R`WrQ%m-^)J@(apV58 zpL_5LP4u8_Oib!3>w}O7!9ph)qZ>=u?833g$N-cgJ|2uQvZhZZv;jb>qumj!FnzQ; zXcY*C-U9_ht{pwd-)orIz210XTn5zz;?!%fvmXMty{m3wM_LV|>u_QG;B|OBlp_dl zxWUrdLVF=wkxkQQlWS3evC1ZjAUBp^0quq$9Rogkfw7~>>W;j>X91v&knL@3F9vch z0?Cq@i^3X*gB6HKq1A4t-SEnBRdV6($@oN3+NZ*wc21vlF3!Dgjl|h^2ve=lf3B+*dMjH~HmP+zU9Zj`5 zOp_m@gXL(+@7ks#;J+1xypT-nys!>!a|Q5Xa6dHI0cYn#jnf6+ZCC!B5g{A`>Cz@D zhjU{kW+Gr*h%y)*3?;vrB^_zsXy^4$X5-m_50!aIK`zJ5D>*QnX^jaGp?9y%Xv>Mh zgrjp$C-F*ZL(9t?p5jXc6xLzS!1%qZ(_qY2K2e1>F(08w9@9;jC4D2Y;+2i3qqIX& zd$(JSPUUStV1Xb(!2T?@hv1WO&o%ad*Rguzoi1^Gv{yY+VP&N926%`-0}e)bRL)X8x5k zr=D(r1<{<5RBj&x%}&eM7Z)okSG~U0&LV2_5AV+0#3+MdPmpMqcFhvqk3=}D4bo?_ zQjm0mJ}|{Ei{=nkH!^T<+-%h~WLFO)CwyDJmO<3{I`oC`2nT@h`dYQfK_n2sVnOp) zT2=mJfY5l7hs4iCEhdMk(gu|`5_89|vgMlbYx2(;=}>owqI#K2hP}_8MUJ?Pj!OR# z0wpb#?&?Q=%ba5A#6dV<2n|*fN^`MrA1l-XTJy{x-i&CMh0JUdC1D1P_A1c9xpc=V;$;yO9=AiN7&3KMngG*3``MRyM-o!?XGMp$Kf|76UQ>0eQyQmPN z%l}5J_ed>&4>|D3L8A$dY*QeL&<)z!SO_;Jqre?l&s`#d$u$-fol?*`E2Cw=w`Fji zvYEcJ@nu?tyGGqU~z>AN^aAKMDnJ5zstQxd^Y{dDf=*9w&skuGDgI_12H z2*0dnRJ#A+5$|mAZ;q7BzGf?(3QDdsEtGiW%9CZb*kbif$fuOYMplWp6Wo=EtPX;$?#9E<5g1V7Q=y$8i^} zd;Oc_8Gw%B{O4l(4_C84f6V@(6ffEvv68=KhS`~(J^iWA-1V)0@we>h?78iw{N~9^ ziL0(M(<`6CK7P6W>2{HXR@c_PXRPq$14SB~r-$3RdW|mgF9Ww#{yIRLKmXx*oVwd? zyEZ_#`yC)0MAoM-Pc14=h5%yI>}Q8ZoIB4hk{g0xA9jm~|5OqU1ujN7KkGWEMT$SF z<|Zv)?|SfIi2p(R(UH;OuJnTI(3Cc6-HEgMo(d&KpcP_3I5Ws;V0!zky>@{&_|L^Z zvm<|!dLv7Uj6D7N@ORUzvxt9sZLJe}bmYGHhqt@Tuk%MJ5IPJ1Z4eaJOk_K$K@Gh;Tez&C`dV)x>&_3MZwpJ{?1ki4C z+e+M(&ofg*X)ptHvL(%FX`FmtQw2_@k)pqa3hL$oT1!Ji3(y)U`y=o~T@y6wFtXUI zKy4tF7*OnHx%Uip>a*BIrd*5_E+B}gl6(`%Q6Ei+8-j#y+0Am3 z86NI^37gR*5GW6+sK?rj6zGlwNWqW97Nb3=a6`I$Sqt`GtWV(2{Mug!Lv$u;|a#k}zrB&kJ$n`Ev%y~}6 zF|K-f#cuXw!$bmbAWB{!Md6}zI3KwH_kJ+fi-zLl157t=H+CHA<|p_Z%RWpnp5?`B z@k6JvyskSwsdy+SEmmJXQjn-ENb;&KOlM?OM3p=E50711ZFeJE0ls79gRh zu&m$zDbv(;>(BahZH#kc(pYs9iX)>S7b8BJ&G=YorG12yZ82jZ!%lW}3Y+ZQ7tW&G zSVfbCwUz?|g>la*3O-)`6b!KFjNyxIGzF`HKem+`&&F_a?jTO7eF#!c;OVEMNSOb$F1A2QqCUMQ6x<`zqd*A8Bz z35i>L#Z7Ok%itbeozt*oXDxaLR!jpCl0{?kZZ3wWmHpJp8WhM zfPdo=k&SvzsTsebPBZ8CDYB0w<#-$+>O*5uNLK%%i2C3&ZT0Qo;r6_d>oI0^UAmmV z5X_#CH?6(X!tz%`j)gbYkz^5B3HTzNElX-9%I{2O#{e^jl5Z zSm^bp$$G;7Ym=W$MKmSPAXcSN=L7XyN8KT9Ts)qcsGJ>N^Qc8VsBfp7%pM|q>?mG%Z z!1@85_49vszJjQ8FgZe??P)`u~!OgJQ6RAZB^;k2nY}c$kV!S)rJb=G0j;mcsZ4X z#sk<`fi}xVI8w-N)MOFd{O;-NTh%FUDfK>g0B-7#qz~Kc)GQJpX3ssb9_<_?aht=aoPu8)UjHpb)5fbQw#Kox1b) zL~K0o^UltY3?gnt9O7$D);z|df@3?A3c}yd{>(ZE-pbsFyT$gnLqLwj{ytzB)P01G zI`(ZL0Noq}##F26>k$ z8a(Y&j9;r2ZR_#}?=6{}$F`qPM&5Eep7m2)^;QXRs|96e3V2UDUz(slS-TBCp5dXY zRw8a=FutKh$a70ER!YiyEOcOzDmY!_HDusvriuBwbVUM-mPTZzOzGc&N3oVX@} zSBX=&rG4}Z3VA?6K~i@Sp1&g(eN%K3sDmGVku&6?v zN@09~$gRJ4ACgnnYVB0z#hJlS^VQ$%`Ix&6q7U@Hg;F1w@pP?;kSg$$HL(^)67154 zx_Pv3L%ED|(X;}mt7+-`!xI0ExJZKvq~Z4obQuazKb4uAj1)m~Uf!9XlF*9>1;QUpXsk4l2C=p)1vrY^UQN4LftR=BhtS!+KKR3@yDmelC^Jgz6U=>Qn%qQ9H; z#q6#{)>SD1*P2jZS%Mm+9PD3x*_^jn~`^A2@ zOLWJZxNkJE;=^|vUzmKU$~bi<(?MTUrp;%B*iYNt@J-P%HySaxJrV26*KQzVdeuHp|Jj+$uNz zm)m4CLHNfa^X@vvME%pSMf=8HNXWwP1=f=%zDd0K#F{gc^m)(o#xm!W4S7R!C=qi! z)Np}xIYxXlS-*}*v;JIFN!IjO9n=+ zk1pw{{!+m<|9x{q)kd02mpGA%t+oC8;$>MWZkn3Ey@*wOj5;L-FHWZ)z7p&hnB-7c zrufxt9PbdyDC(W(%D+99aj`lebMW*5aEJKO3NTnGaU}V5iDQ1mr2U1MdU$rFG@X6TkJc!Ln$otq&p#7ObQN7Zo(N2E*-^c~ts3B)m9{a?; z7|@J`U{h$JeIpA{-bq7o7D3N3H`A8$eBJw1=u}Ol_WfXnh3l!2WqbB!#MvvV!~zVr zY(Br&u5KXr{gC}BzZyA9ci|7(?^|-Rn35{^h7M841@cj^h#86fn5cwi`9lv)O4MDP z3Pjrv$*C)VUAmzeap}rJ$ec4L=XCn5z{;=lf(OP|UOnAK7 z?7CiQ$5l`Ue~-JI8(0W>w*@;jl!#E13?-_>iW~D;-vwNHCBK}Dhqvwox1m7dw&QHJijP`m{gjvaB;@jgCyjIliF#A7O_8V-(kJoXVtZxuY;q`)Z->(ro4x?l9U zZn9l)(XNBc81N6}j~Ch+N_KumhSsH@xHUI9b@sZ0=~8G#h3S7FPuC*G)#RGR!E7O9 zMdFnj&fnY18sZkCmb>!@l5#W*P}1(r4!$onA3VOS|4D!P_`yoV;j9ibfejOQgbWir z6Md#P=gFb-K8;WWUO@2_MDq4$TQpnQO4preN`3j~;kB~Ts?##LcJ1;?Ak#`KU1!RD zbbyK9HWnYyj}3o@T<(8WP@p|R@%{6E z^xxw{-c}X9p&dWXv+~syNaPk=iB{b13Tg*GU!=ia@942_k0nQo>uywcN%-ktbnefL%3lF7 zInyc(sQjH+6!d^&SD^N?)*=`Sa9ya`rmr-?=zSQlBFSTo1r%ewN}|*pBuJ95KM6#KI-F&QzY8FuFURt$8zOK4RWv=G@aeG$9S+ zX>5vx4>Xt^pg(=it%bb~&tZDu#RH=Hw^?yNuI^EDw;PHwu5)WmE>p~-{C55n1@8E# zZA30=FYBQRCOScz|L*vR3pDO*uQc*EXfj-GvTPcjgkNiK6Ql|<-Yw8v26B(MCD4Jp z3Y@x8v%RcB2S#}^eYIz~eSBVk?~pSM1^7J3s$wJnrjpgdB}*RHBDw<;*5Kc^T?5L*Rld?X4D{cj}5% zj|qhcrNsjHAv#2kOhGCD0gfONs}k28Kg|NgWK$oMl2T_>8fmLLd)XhZ zqs8m=F0#6_Z?M49o+2y=P{2Vc1T8G^ZGPxwl~fG=y3FzNUFDYKI9*+3@&k=rJI4tT z+*qG8Fl=8MkYq{NTI2SeE>d)9cwK23$NRmE)WHo~bK`@iqi`fv!Ms4Dpia@v^NK;M zfCh#z#K-O4C=^9tH~BHT_2hvAV(y9`;V_+Lt)&H8|HkJWPP~>Nof#!@bsi-*@SZRp z*)u$B@4f5)`xURECJ$IZRpG9atjg{v)I4}%CbEl?0_MyC#iz+2vd%dLY%&*+zqJC9 zh}FsLT17aDW(5Ykal8~mt<@saK{HN0KWdD(5%P~YWy!IW;i^4!iA%&b(k=1ipb=8Y zEWelSu|jgM7ZH@(q&s=VBQML%$CAGhwY@5@;PzZ|tP@C)f`l!;oRPsSK5mfE5HsOV zxANa|j0&x!OjNc%rNOiW*I47zQARSbUsrf|R)Zgl+PA2q`;s?Svnw1Gz6#~^Wj9NY z62_2%i_rfh^K!3{zRv4)wOKEm$0}ADO6mkt6Z-jaWE3qL zm@p=5@hd^%hFWgS1d_)}J0Axn=zl=bC{A8Eg4H~_Uo$>9_ud9SZ50B*^?~d}oKo4s zAaC6FLUfj{Ew}$eqyxjQd~LaIJ+w#rKhT>lQ9ikv9z!RP)}TylksX6|m|APp6S&-N zP=b|vDnV5^N(aZGz@Bnj@7G2sNC3$eS4y>B(&>yohRwje|3C+il{2U|h0a>K9b;N4 z(lGrlY&(le38EPgBcaw1vDF=HBSO4BFKm{uDXq3IQh))`+0^~EEW#nLHWQ2jEZ_u{ z&9K=nqs0X4`aRd!?S+QFug0lc(?zOrWTPucIg(rCMiZB)bM6RXNDu;!W7La-;V9%B z81l;=P6n;hqx0etXbMYxjPmQJk*xU0P)@RbP#bd(^*3!t)_JEcczkg805I9`zNhXL zIcCw=7=p&J!&(Kn3V@ixXp%v@t7}?Zoi;+ry(jj6G-Uj zX89Rg0L~#*peZc_!$rC)l0`%mvTr1C@wfz9%vD18k82ncR;5oojx4OrA_379-J)7B zni&iM1!8$^G>BrgPNN=u)s@li-5naG9cI2dcS9V&%Ntd)8qw=(AW83(CCx{{bScNr zRru?ng@3O1yPf}1A^r!u^0CVlN`)aoAqHQ_`Y2gLY+Sco^jiq6FT;rgfu85f$Gk(`*<*$> z@6tuNRbuee_zsT3<1S-PhE>OpDjohxERrpDByHy!tN-8nv4*}+Yi9R-FZr^nD$`AC zjC0lyo+dJeP-VDS-BY?AD!gxEtm~0SzxtO8f8Lnf#ZOVnW$3@~>OBHYKF1Cwb$~8v zy|b|}%3B}7WFMUE8RldB5J5$dxB#L;84M@0-DUo2-09wDjA}JPGNFsjqd_SGzZ4WnEC~H-%5655 z=WlF=!?Jcl#E$6@`!rFk229f7gbd2PU*piX)*aKw@L3 zxX`6GYWL#hC?8_)p7-^T8gB-M)$<%s*I@}@*kc35$AAxAI0&ES9GWosf_G}*VejI; zce&?HuD7)cARD2+G)t1(-KsefC@&t=#DNObf+Vp`)4D!vCjRwf0O_#L2n<)i?E{U) zN}PHM*0W+%x~4T477v{AZD`9Jatx`({L-n_Wb8rsVb_-~6R46(3iimK9zfT=jeR7o zO*@X)cezg(3}*BL*(?+bg-#oh%S}$ZaEVfy?h$WjD5N}+ngXs2B9NfLf9t%PqqXcG zR$W?zq`Y@p3=9YmMZy!>)*+4R7uR`FJFmkSk=ouXLe$0i@~_JbOh!a4`7=hXEFs(A z_XfSfP-RcO3eqLv7B2sc4TMjfu)pl$CzW2>pY#lI6H&r1f@N6o5+F&G;K$4EAaM(n zj1E0ISCJ3J;{V2j+{A$PC%BJ-iIFrEpt~JM(VX^u3vT1Jf|{6KXt@Mv8a#*Q!c6N5 z)Jj`Zl#iXsV|pn>dVNN_xxedDqhr(t<7O+?qb@Ix(=9f!+K2J0O{~hB!WPkmATY?Q z2Lw#y3(9cg81Vu-f#Mc2a{%oHu?E@`6k6G-YKQHYeT>1af(eEJfx@af)wBH}IhPmu z7AwYcRJd(0m99vyrB;Yny`d^f66GoQ?_-@OH^ey~SqKh@jGehbtAYvRq*SrQsHIK7 zuB85Gp9B}^S;9$nWZpdDPg5PevD}${f>T^ui0K}Aw#izFE=E+&) zteuM_0NSUKRS`N7b5jFCo)(nkdGHj}U71x_~3sHCR0LN<_eiqoFX zS4%t)~zqR;91(8t{@s@jb5-L+SVa%QQZgye5)J=iH!Zdar8qRoGKrg zkU$` zkjNkEVp0a&ete*EMB6HN6u+V4BGM&n!cv3kL&q>t?rCBs_Za&KB`MCjgJMIc!p#@oA&x)HMdm>P8{rjNfiIPA28+5EuFR#i$WC^dee`q?}W%2shxo3YE8 z(TDtqGT4Uh1Z2GfsvFj!?U9sp^V5I->Z4l(9^HQ{8|ruu>}MA}IAH-({2?!t?){i> zS%jUi%nAF0>iQ!h)97EfOxDUyK%3nu48PQ(5q+xXg+UnQm+br%ch!HYE*$YyoPx5> z=_9a@Ii;eu33(g$JEZC|UcGV{F)WL0_$NJA@pQ3h)mU+a+;dek$K}crMiRq2#@zML zL#K;(oK=_gWmKlrvahxRc3!5O5t_i>Hi{k-rS~D>X>-vDafF8Sn6LC!r5O25ck}+@ zl9vzGQ(9i9`v2qHQK+dp4_1hmB~&TyC+IFMF0>eBAenVH(!a9{P>nJtzh=K{r#q+iXWM0ld@aH zlBplLo2$Q&+$FJxw1n;yefVc2tclH9EJ`|iIZ{VH#M?QhX<52=VMBAIli%Oe$YG%7 zgpsQYeQ|s0PsT^K;+2Btl*KJrY17&vEWs5zvK>66Ac%xn071@>rafoz2%5wCk>2*1 zof?0?xr^WSID4+Ck0OH>Vk7k0m_g($wZ0+?CtT3xMk9*eNk+}m9sVfmqekKwapMJw zX*9W9(!VdSOE|xXwK!??nf966y-qL4{cWPejneX2jjYqyZVH=T2a@1k=rH$0PL9qt zYl^p1r_u@$Xk?N{J@#T=KMY+jN%?eD(BBEr>h0(N9M+YYvyDbWMo2Dgb+&(;n^W;xvani+|yl~7ci zSPQGu$2}j(nI(*YvE=*tqWb@VY{x)~1pOIRQ5mKi^^TG#MqjDQYf#rszPWUvE9G94+&6b~r+YI@(N{CdwZxJ;xh0#C zEx8PHt4%W+#^!GQ&hH=p%){e6oU_k)UtX{0E6(**Tm6QvmKk21T;Q*?xqH*@US_-To#Z#Ie5!@C#~}8*h(8W{*8RG@K0>EOGlVfQ z2JCu)IC0P2Q4!zjtAM1}$N*W+5zlS^;Dq4zh;y{$Xr%0sOF^x6D&1ebpgVC;UDXKYIZZX+ z?1q)>33l}A*rDEdSGh$R47E`UNySa@a^W)1%QA;TYi`Um3@!U!dh`b3>pNKz_;aA^ zf-lRekoJ9Hg>gjs!`bx8_?@^=5HIBo-88;m<+EGTS94)i>=cS%hwTH3tX?GLRezzl3bTFH2_!qSFW(9p4{u0YUA3=gN^TwPG!Dcku z@Usw;x~op{zSbo}K@DTm^oB+=h3bWM-plE{eM=SR3;G33C3gS*1!-?Sgg?*z^lt>v zet>}RGvmcXDOxjP?_J@)?39io>CIml1Cmz~P4$s67q?+j96J;TJ}zYt!9Htl_I%y4 zO?rcEd5&gp`UVK8RL1h^i#GPEFNO6!Ki*{g-7YgNsbmPh!HygjEY}^Ag@d^MN}s*Y zU#dEvpPem`Gx4jLsppS>dukH6mz)(kgwCI1hxX5mi!1|oGa}i_SL-@PQ_ZK5nuN#+ z4~Pol!|Rm2E}qarbEFB*3q}08(-6;5wV27;Xc&l_C>pQ0oAC?fpLbsArr?r=Crq{J zIw$q|1T=M9x%}JD6~F>Cu`ZUe@AgLXu3=|CY5#MzsTnG;t^Y^?sY)zm+8CnSXTHDY zCXOi?dHG@U#$S-ra?j4`FFIQ1x91IzGpd(k0%O7(1>ZMg)4#I5k~;RMn)Sb<+LUN>KQZ@`3TdYC*>*J2_V=VA}esL$VWOW613VJSbG@MD{!vtf{x zy1|hMke9}8*_QUmvLe9!_i5#tjL^#~PGe?a_{`qjTZFHZM{-`v=P!0hFXm%zHjLhW zztB`>SUoTfApcFNSKEKS9S)tMy`OU-g%S*=P^PKJFmYRjf?a?G zBo}R(`fV4Uz)nWW8HHKkTh zV!kWhkXTgWv2H0;OP8xkUv^K#8{-myX+;#-U`=uY@by?kt0++BS?w5QrDZ;=b1zkS z%WZ7uLzT;H8wj#PveTTsHKlZ$=-1?7x%0Y6- z9qLj)V7?FSby1wKy7|1bmb`QCpETBQ^tQSilNb;JejKQ!K;1##BHi_Alc1zj*^V6@ z9sGnThz8j8wGeVX(@JPq12p-*zU#G*tW2)nyD=;~)rkZY-8<5W(LKwLJ&1$c`Rg7U z@?PbtatImTEc=K7<$!6RVBNO@Lh(X~L832hRT1{vAP+wpsicBZuJP!GlMq44C9pYqO&a z+ne%Q>RKS8ITMt6Aq)s#_otfQX5EJ=i%{`)QnknqIJ))2`=3(|mu?i;zKww^>1+rj zman4240ar45RQ}@_V*VKlno#5u6`<59$9lZyZLtGT;an#?-@!K@*wJj<>==!gLo_H zLn;UF8?pSw+n2TX24~!D)r_|az(Jw6F$%FV+pI3uNgt*Dk_o0t1r$L& z0VZ;yMe{pN?BeYwDji@ABQOzTF{{_(OZ|$WUU+utdQ0!68C-Z$b6jX?TsL`19dGdM zbo$q8#cxGRsaFF7D@z-zVq$TzAMd+W8$IycrPGr!C};~9X-UjYsO3Jo8U(t=Pi+gu zp)&<86G-#XcUouiwBm2#iBgb*K%H<^u4_xKl-u)8XG56@ki3NoU4yHD&`vdNcIwKu9=s_Q9$N`dyAfb>=TOLO-j&l$okD-p;XmT04@*-K zPycImEZnbXboXBNdEdOzMR-_Ek5AV3&F1pW0+j5+hqM`8lA-xno!g6q#0f9yAi&hS zAFmU$eWH2z+Rw>pE5Fe7quf+~ZJn=2X(}cbC!`KJnY4D$;jnvgB#Yx6^rwe+#M^yq zgXh#ofIxdwUJxvCQuds_z&v-4+U%QzcLv9kOl;^QmIj20pEB5ILLqrCccu8eZu>89 z6K}0EuPb^xbynelhEe~;Jy-sqnOWHdL)a9YhW?w5^* zBmU+`q^5jX-+O-!!;`O zVxKZ$82Ier*7a{#M#* zYkP(iFAI4ae-<sddc0to7z%X7qO|`q_ zOUB`)U8I~*;#mb7zT3;4&b#+Mx@*tnlJFVV02z`s_oy@|TuZZ`WBLaSQ+)AAMb(^h z_~sVf?O1x-7Ug?&@8-!4s*c5Mn}!STE5>pdDa+KsquIOzoPKlDn9=~&_wjv_)LpZcYd z%D+^{2FOYikY+}O3I^TWN1WnTX!_?ZfMFw0SzTAV_2(xi<7%tl=b&T-5Gp;MhWQc{ z?#?Te@+-4C{}7>l?IA+5@|lfy0oy76CFQ;CQbpfHL{?SKDIU`4M)$YjSjUo5`!tu? zC9{iW?!S6Btg5-?Td{=NZ+Fc>sg`1ujuY3@(};@V^7#;ti=X`Bx)4uQo9M`~odnPaV*f-7}Fc?k5jG!iM!A!pkk>3#do*Z$lC zj74adXwx#*oB#zm3jUXOk>iUKlmnM9ISx1a`88N~cajrx^u)!H#_j$U8lXsB&S zp#A7kJI)9XFM)z$8j=R`?dQ@*QqI_U%wkDiFcnzo5emOQ{4eNG)|I9x;dksBHho-e zvzB^q#~e*XJj1MoO~Q-d)dtru3+XCL%Yfx2NXE`1E!BGT+8m6X)&h~nFD9&dDQ}p6 zDD~nuiW;kGvSLo1x)v67zqzZSe^zkkkN3NATbxu&oS7TGS$97<&P}sO<9Y>yACcqx&)i4P$doW^N{h z?B1AJ;1!#B!391pW8|60m5f;qDg9R%3Z-M*A+dvBin=f;}brTV!d@q*DCKQ*3e3=%v}De9#- z{&*rxjgw-LA$JT?u8gy?IvzIhX;)eib2%Le_}H@$rJ{rKAz&d|Fa3KMn4Ls(_138` znaMpxQF|DAKpp~;Q^O-Kam-vv zI4*}=yRlB#u%EfxYku+#pNyT2Q!A=LchJzrj%Umn2nLd~=9SBzqxuk`2_mWq2FGEg zv2uJWKj4HbWD`ktooTKJSzH>r*h5*2JLx3X*uXE4xIOv{`iJYK3g+ zLs0?BNMK^kBj}}ET=OV?e}4o^N;K#L%z$)eE;FD)dx9Wi03_5QRd_{pBFNyjAII3y z%YSMdKE)LRHhcej<8eASUiTI>xVfGAlE#KB)B1Qb_~3N$OuG&FKYmhg8V&ss6U=Hx zh>Df!AVrk883qm*du+qFn~=>O!+XnQxn8vhRg)Vk&0TAfGMk*P-X`>#S}p-uaFSsL z<>7-92q5rOB<*7Vy#OhQP=Hs11PpS>xU2g*5WpTvD&^f2HjU{#A3XNL&1qPYtYcR4 zT%vx#=c1s`0~!VscL-QX3FIn!OR=hAS=4%raoiezyE|?|{Y?i|7qm3TDmZ(Hr%ASQ z77|*pYyx+wl=#Uet~GG&FDU-rWL$4Od$FdBdzTTrWHy(#_WRjmID0|8FZTM4h0-~- z*9Eb!SNSWEpCStYp^Dr5curUZ6|hsflQ)|U`hpajknKiAWx<38n{f*a*PT-r%&Pb_4AjfHkxAHFhD+0k*Q?!@ioGV zne8@Da$XSt#V+U6TuEmUNLaf+aSE|{NYPU3vM8Sq_%QJvBGGgtGXN)7QQu!c@%&TT z@47zj6gud8!EuAZ_M`Z^HA;T|H*Kwg0%Q`<9N@yTW57@Ph`Xx zRcEcr!wQY}Fd~4J7BPZ8hsVxbfdvDG4yvR1VaymfPu^fGEKTk%)KiMt%T7wQi{^T%ljcZVQo=Z&C1ju* zty|v{p+UhkKZ2Q=pC>+ThOT6sFYfUn3K}W?jfTU2`i~5=Tuz3hH+-rtxn%rj@Bt6G zQ7fV|FU#00F%&V!V1E?!m17ww~bM=s+qh#8WCE-p0^3YF)jTe%jgZDLHY zt1)_bwaVVUG$NK@9L(168fVvSNhJnZ(9V8OO6Y*G7F+26srV8Y#y`$(dRex8ZAcK7bHS9`N;URkL3z!nv}xl|WwpHL z!m6p7A187!&Swu@#vs`nnrSo`EK%2n8Bh}jxkhshlCg~9B{u@{A1;q-s^{~(XeB^m z>HfaD!eCFT@-ZmkK_UjX9tu;!I1pW`1Pd-762?vc7x?xh~Ynzvs|%B(3~VU+IfgBA+uEmNBaKYjEEY4bcxv)xA6f16 z)G6Nm#qX~N9BgXjs`FGzsyQb^{}debUDP%%IMawSJ+b?-@r#!c!>--cb?6WOyndmx z^mFbEeTcdwSv;#?vGtQ&2MwAuvS5Mafw)Bdtw;WXUZWqw!gTeq9WafZ<|^Aa&~!?= znddm$Y{E;BKJic(_{DBliBHB(r<&){kdjJ6vi`h3mwPnHzW2t6^GzEgx<{EeGdSOE z>$c2YqaT(sfOSAc$ktCSL_Ox&v`4D+30|TNuQAfj20=f4w7Os)>F&PL2)YTP`AGV7 zRNCZ=JAHYF?;d67U%hHOCUOkWALAE_n`+Lrgku{%GGr{xIWPI-Mq3~;vN$y!qA8z5 zjR3;|X%Cc#n5|Q~rg^t<(-xa(z;u@qOyjo5Pq%E0EJSiKR?=Kvd=Z>%t^xaiNk*NRU^Zak=Pr_Robd?^8Cj)6H0MNM#1n+2S<*p4 zQesdD{e9;kQ)AhAk%%K?2lpap$PgQ)%y?P4sxT2-8OBKkkcv#yGoN9T(1yjT<_Vqf z#>d_!P7a6PI?NT6mTra(tnIn`=m$1Y28jmns?d-L(z;Y%qvq{Ig@Z^H4JeQN3UFt8 zaz!+xULXiBQU&sN&{D0+2n17e7m4KFi~;T3zD161b{6mu2FJ?*r5W*c1HWRptE$os z9i2lDs=AluSWvoL8RFAj;^q|adMa#K@p)h+eV1p@d;k^ta@ZizoDP+rw?lC~9jf?h zhbsH;xDex4RL-^{Rrq8*0qx9==$2aPG@=21k^DMgM8VQF)-Tm~S=0NLPw?RR!-@7+ zW#Q5(xf&iY72trP(@))Mh+Ye<9*-Sv*s(rbg;$a%=dlV?^|;TM9{23yal8NG6D@lUphqw zbPQJ`rt}_);1oD$aVE7P0j!L!zz5?+YijvHIJFl*be3n-;>-+QQiR}S#h6Bk*D0If zn&D$GGDn4mlwM2;9toY^dT2snl^Q|Ch0v#D8Mf%4h&;0*USG`EXL(}8%-Vl&6lp@@ zwJ@=mM8yKz4H>RfIvK|+r_;e@HWLdtar=o#4ml6176})wr9ynXO(hS2iR2~?41<$+ zi3Zj<4;2_BHAX*p7NajUjh!{$nQAM=>}Dt!FAjPjIOz;)RM4K^Fi+?da+Hc|WdZuK$2$|F6!hX{5Hxr( zEg)XVt~wQOYj>NWsF6lq(FAgs^hm-B9Y`dQ@wAKiM%51FmBxN{apwqdN+~*f)WFi| z48UGjDHxxt5wC!xQZ6nSs{ziTcssbXNJUie#~Q(i2>1_eMJc8gi|9wKT(M*uKA=w| zW3cfiUWhMXDnt_tNCskBsYt5a!~zo3Q&rM1+B~ziaIh+UCM>HuM?3nlycfVB;k=ue z5U(vVuy|63E)W*MW24qQfgii|60S(q5LVUN(h|~hu^?PEgrtN6SVJhULA{?>4}C?-I#@Mjwc$ql2q$Du-KW;tj;%gIACEcJ3I zwvjMA0e9faBjuKf&}GxM1vnu_ukDKjx<~}leGXQ1fQwKf*t2i4^LqFlxk>5Ymyxh{ zyz-fJ+Ljkbtd85zVgY$`8nehecsPHE&S{cs6|e0g1>+Z~20xNXTtIolA(M6yBY~Ja zNF(Sn8O0+dv@n5K;Ls^Wzx3W*<+8I5<+nVrK%iPWD;=NE$4l?v^eJTbwvWT`9%cGA zNR<4Vm=2s>12;zN?jk1KxtuZtdX2j_5&I&5I6hg@9Q$+ACpw42+-?;asJpQ6b+_qN zm772?aG41PfH{~`fa>WfS&li(+2wif$|4?21h!7*W+wr+ZBnAmrWZ?8u5WsoIBo<( zYKCfXF$fJnqpPuP)$Er;5{jG6c?^fdH)1i!7Z@xBh^Kw_UZNB{D$hzbsbcV zAgI68YtE(2vu4u1H(<%dA>hNt(8?9zo+~TboO2o8cU=^wCv?7mqKo^QkN1?w!?v_{ zo;;&qJ(@DC_^4TFV?XEM1(R-*Ta}AP2u8Y}dmc-R!O~nX)lvb+1=(>GzcRPP6a-vu z&$NJPZNqFMIshyn2DZuuQVwFZlC@c}$2JV=vKCuo|LH%Kw?}W+S%c3$JJk+o8M#-t zK$seYpPxMzdrpMI(ccXOM`Tpx~WVJ2xJp`Hq8TemW zjrBIC#N+1z|CF@V3=pl{oJP?z+Ujv*yuhQ3Of|+ z5V5v*tn^C(>Y~?O-&1*(zWyO${|^irtu*)o`c|wT*OVKk%Cv2o2)^1l`F0`T(3SC! zcVe+>^GU2*OIhAu5M-;Quk%Co*unV`9spStfl9P!RuVw(F*xey-E~rCi#eK>tIL26;PA zI-%p|=jRT<9`1u=6gL!S@ar$=N$%EHpN7wQ2kgg6zyIVktG@glrmijT?(@m{jQx_x ze)O0b+AKWWw_*I!tp^pK-y6m`y*o8JT=X!zzqF#n*n5+nw`ouyq&>`I2<~+y2K}2$ zFpdYN9I8Q4SzWa&ITIz=_0gbiJyN0&(7Y0zg9&z5rlL|7bpuzliUg%tsl>Qvv0B-$ z7WEplmGS;93;+7Onv1VPi2)+zmCXh-U%~yFVN-ZSBFVO`Pe1lB93sV#?UBapppH@i|)H47gxZ_ezR=6 zaD1bU((FAx9Bwb|vhlCbsbtoE$2-@Z?2objy-WPXEf&+^AS?A?p%JGnUtQp;Cpi@>k7ZcJ2v1({xACp!)15B)<)oR-C^#2vp!`@DEMG*S z>zu}BoJP^7>m=C+QUvsMQ||^zj}Y>uM=S}2XxxfAukfAC`y!EH!_E9cGj{PIt`;e(IHbRa;Xl?;% z`Y}d}yp=yJ_elO3+r#t0aoaR=^k)SN!T8i}M(mU((ZmD3_mi>BdjIrLBL^7L?O$we zwz~vOTyB0$K5iv`eFX9QK5F*4JC+YdF=zoMS0RnD{%lR{wc3pZ@Dee{hT?grub-*!6C0)ngY}cGau-g_;+Gh*nsUv%at< z(Mp*ymdIMN7Ji*HoML$$H?>co_9Lmn1p!EkK5MC*xYc(vJ)?c}iy*wjw263rw7=2c zLy3H^f6ruF&($FQ<7Z*^I4v!gTT@GH`=Pba55VR$LUM9+Zl9X^$C}Y>Kn)V6q8cl5 z-)W8l8ot$sk@qOTg0_D1EyZZNZ;bvp_MUQ0)>%f_=1hF2)U^H(x}rNeA#idmipKj1w=!aXvEWC@(>HNf0*phrmz)a3cJKI(H5>c(Eamt8M@HW{ z7-Vbls0Y!31b+)hNRtAN54JG3IWSHKt{j649Nrsz6lRNSW1q`oE%$mMK~{-hLp(@( z$k>G5Tas4S6EE|0?w#4kmV79dUO=|O*Yh{tSi37Il~BrogEnU6=~8CAd%W$=R3O~Z zr#L{@kXsB05;g3*6f@3_Ek$_#z^>dGEz7(o@eOEr^}#+4kzaJ{oJr~4m>C_zE8Zdg zH9aAwUVY7gIAS>E`aOea3!&`sB9jwirm|@1J9^`wCCDTg3_bi8B=BE9H(l@!1Jc?(Mq70CT-s_e42W3(zbyWUDWw z0{ArIqe}2gMBCQY_>SPp=uXS;K&JybtE6)1-DK+UsT&^}hkY;Q+-?5(dnr?Xseoet zsiz2+j3_-gJlzf4c&|xS7A=r);HhaGe#7d7X#1nSxgm_)Fv#0lnRXc>bYJjItrNz5 zZ9LwI4#ohX)|uM#(^7qShmNSLT+##Pi)qL&$zP8V!?$vzo=OGR&CA>f!xN54Y7!o1>f3p~*e&S2 zn>Q0M+96?fzjw=YY=HLn=I6e5CO>GM2)jMPhN5cyY#5_wAeAiBvZzgUWu8W>InJIr$Hq~?YdHhdy zb{-gm!4e~A4n>kSQ`rYwLcVG}bbi%S@sLk;E=Q^TcaNu;{bTX?ai;;>jcT9ejjIDQ z=W4Eh=cIcS{s_I1kySe9zq_AZ%65Icco7J|86vn)7K7!+|>^#;r zBKEO!{zSY^{V;ZQ%U(5Q?Gi0%{4B!VI2Cuc8#7@0BWf2iDeAY@1wN zz0fn>+*RbU>ht)g*E2Z#xi;0Fp`4#YMyP<{L@Y}PYyl*4D}@~I1O7kdTeS4_nAZly zEkJl#cd8U+`fV=|DfF+2;r)RR-6@$JXZv1uNLithNZ`eN2u-PF=ASx1={`7LL#Q%Q zjrtm^T60NZ`2O#jO5!(g_~Q}z7K$D=zOGBb-1X9#?)!x!@8}i*v*h~wWv?4z++MTK zMqs*aOqhGUzR&U?EvI!0Z*ttKt)*!OY>Di;j?{}ZRe&x$U5Eh@*I}R1LV}1p1T(BkYIDXvG zcep6}-nYFPIX7zHz zbVYl9@n`i*@B9_twk-Qh@4NDtR^Or_C$_~l%QshG)*kL@rR9~XUs~oc{W-6=jo^4+5_mCOwfC>;TNN%jvBD2t32?)f}DlA|IBK46@6QVE#o2G0v7lq4W5F*#MKA+ir`C&^Bcw| zsm=SWb_@16qsEU8=Mt~u-Icm_VlW1oi~*I6na0<@ksVwG#k+`A^X)8YUau-s{p~d( z>CoY&H!>eeOKjMM?8pr!Gx*6dWQM+ea(ao@x$|1y+NTSb9D3$FpI*m%BryJzt6X8| z%1Hf8&`3y%$JlOpH1mkxr>m-$M3x0{y%ORLrfq#jz*H%Xk1DR&k3r%NX*C>)>tPU? ziwEZOs^+Tm`XDNn6cnVFmbDIaP%SvZe*Rpx+h;69A`T7h&53 z)DSeouO&t2U#Dw;rJ+OvvI4dX`mlqSh<>E#m@ns-oreNazNBO9l$9^r<#r(6fp=P< z2(_9?G$ceL$Y8EjbxP8B;Q`69$B5;7I7D3k>Bo#@YxmJX^+I%Y()aKyq%Ddd5Yl;~ ze-N9|!P!plfXYuy?Bn!_A@ABfN-)5oKGUlqW?r?G=^@6F4r&>W4(Zh5y~4Z51y%?c zUQ5u2F@Ntf&`c3k`i#B3^zIg}D5i9PUG%AO*yDMWqSTmGwhqlnZDVB8$0r!e7<~DLL`FA~6Pe zB@x3ePX%2YJbDj|w)|59asV(rR@nFr9s)(`m#Mqw$HQ)ow}(SL@W70>rPcI5>Up^~ zrBVDoc;a;-HOK;ON|G9px}kEq;K$318CL=us3H{F%lN03aN3PEIPdWVdqY^LtBi6& z8g=2b7u0iSxSA6J$!T;-Zc{S{AFKlP)eVzsfPskT<8c*Rq`(xYI|y{TXMcd}T4+W1r!Zhc{&;V8y?4PMO5kIM zg6!%~f~gQpg*@2-0rueq=wpI9m1Dlg`gw*(A7EE;N&={|;KMJ=lX_zPfJs-P96#mt zi^QP1E}1D?Iq7N;h-YFk)57IEoH{Mw-n-3mhei*%$JHyRT1L6!cSp*%pnVstT~A)ZFsiDWM%V$hKqj<;@n zY{5gfym=*9Z!yHYu7zPVb}gQ8_CTcOe>$WA4e8pgZ!2TX_~s!kmQMa~CRHZOiBx!Y zR}KlEkX)1;pOoCP8=$3Yid2v3v;VCgHi>RN0SFnqPv2u#KaUtTvil3#5;f!RA9M1~ zt$R>{tTI(fa|_1Gg;pk~LTwqG_NhysM0%tu{OXFQ9Y>l@1UG<4Ta-Tev_8N`zt7!b z!4Tx`AtFJbAjRC(C(>K$7O8tqoCo||8Eq5*LiN&9RWE~s0g0ktyRzndT}<5So%q1~ z&cC3ttg1(l*Yw=C@pSLi{jVXvsc2n=Ul`pHcPPoTdK(~RIQ{*8UB>;S`N>DuRIYsI z>LNAWcPq#Rz5qa3DH)UD;FqufJu-K~AEp{qrwk3?|EOnfyXU)ppXwCyOm3)QZr1@W z2nU_;IQY>xRq^=n)lZ)TJ@bE5^q7o}9?1!%gmu1M%_sIOo_^c3G%#QnlaVMFwf z++(3}t*1XLoo;?8nEh9NS7-NU4UK)t3KQ(|{_7rCc7?YlSAA?w=Ip02js4OfMao&0 zv7C^$8OlQ45-&@uE(aK+&52j)i z5T{HgC{TL*&9pX!$KZ6q3=N}Tb^59S6Qp3xu+_t333=tJvP@ea z3ql z5W=b%L2g6tLq1}Lpb$w%E>DMv>9pV^M_o@36%iV_qzX}<8AmeDYxE1oy(Sy8=9-#y z9{YdZG?BPA-Q!A2G0}Rh41GDKGY-lV&Nzkfq!o}VOKUtd6>ZS_&qoaeHAuz;fC9kH zHUqTpjS!mOz&A)s;<@3a0ue8ht+vbbrXyP|2+-2ICVA>mKTpIP*cX$p<2q{J-v8E78 zZx2#-boxQx|_89{mp z<3;AcW=8zJ(>BN!%dVmPQZQhFb7!tTQhOyfW9D{(^=$zK71_T-HS}Oq=?*q$h}`6)>O~ASb%sJ*Sh@O}3SS6FBS~yJ!Uo zwM=e$xZa!M5L&ake7I3nB!~&G5-kp`IY+|2hnVpQMe~3$>{5q14+IcJapk(hG?&=mDaimKx-N>1BaPH>P@mL?u*TppiR<-IqX z%vcL7Ee$UP=nHW#jCv=_Mvc}bQ9JZ^+I@peZpPqxZhTUFw+uYk;u= zg2w@vQ%uBi;Vcg%fhj}9V3;b6;>>}|yzithHMntKmtVO+xzN<))cE1^xSO8xL?}{4 zy%(QTqzq_@@B}-43+9GNq(#Fj2z%zz0X@&n#UVK7C2U?HGAzj}gRskgt22r?m zv4q5kl$MVYQx%Jsn86Hl2D13zI~s_f2rPNXfaF0LEK@MHmh4+P*Lxv)oN0BZ0f5vH zHY0&dZ5SwNa1Zs^d7PSztqc~hliMk)g1F1=PN^Kgy#YeBs2ZeY56!XO&0N15peqw( zf*psXLMRv+8H@t30rquSpYaq)s!lzxTCN%(hdZ*H0~>-G$nm&vBqMl+ML;rL`$pRc z7NQAHcOhWzw-AsY;}4v%#c|~qWP)sFksFO4u}QC%RqJTiNE2A*N64UvH;DhW=^s8> z!XIjEn5m}y8|oA}#@IZ?_hMaG+nuNz2?nkt20@p?$uC2iWD$iV4tgy;CGIQ<*t6;} z|CLU}_L2?gn)04fVnKSZ@|IMxK_3sEilzbyK@=pg>3+M$e-EgYXQpPWS49N}1O4~= z<9r)fRZSK|xmn|MK1&12mB3&i56G!MBmiz)E9NfqSSlRCOO-oF;7h%2NVa~UZh zgXTL8KyR?dRcNkl%@-#K$afBnKZdHBp5G1kovQ+hG4TN#$MrGEQrViHsQJCxO@+w7 zxIkA6AQxTCffcXtmfi^u+?U9(3iY>Y6^&F|%%&k-ihhIASsKC?P}ceu`!6P58epRJ zYLFhVc{g6L)Q`H?tkWErvac*{e%(nefR%A1L1EVF)i!Y7&PF-S`N%&8{g0k!JK|gy zl1s0DsuB9>XPJP$u|aShJGUdPPh!H zAywvV@T22zUcXnfQE~gaexBwy4Y*E^2W+SMzndztI;r zCI8%Kz1N%!bytGFR#?KGxbaOxKG_tGj*@Il(}K0Xelk3MBHzL3zS#q|JL;>tKq1H3 z-2;Y-&CA*Z&{c`C`=5Ww`jD2s_bvU&-8&yt_PzwgN4gBDViT=fPXGRmI3N1XjEk7XeU4cGY)k5}WsYnPbdzBmQUSI@=AfUB66+a}e@jkk>H_yg!1E*oMA zvT*o3I2VXcHRpzF61QF~C8Z9+NZiCoNK$1D+8X^7p7bT|aiCLdPK4u(*OB3do|6?l zLrxVlqx&2*GZ=blHK_POY4=1(tliao9^}YHd@5#0BXJ0lv|P?SZfUEie68<>%hyyu z{!GB&2zh9$v;3=a1~t;;TwX2H78jzq#qQ2c>{&_kjyR)L=S$V1{sOQ1VRi$h4!!@K z_g$^T(q#*zdPG_R&?}69(A3D5)5G^oPt=vCdAuC@wQ7Za1kp&RTBt^es34TugiP!# z0tKeiegzX`wtFEF?Z>L+prLf;*%k;CAVYaI!%)3HMxB~7GwNg7{EMo7@Ee-#&>`V} zM6(j|kE(T-b35}BTwXx8AW%R*7(GgJ>k}PXmZEpekrAq!7M#V2MP}z(>^n3*(K@>o zIsx4xBXeB=p#MvAyhm)PFvlrMcw(g@?1f zjp8AGRA|&3CFjzWX-%?i43b-8yNbdE8RXbrGKd}F6=CVBiU?l3i9%zF$JK+iJo7st z7;~g@%TyEwJB=kRPi%)20g6>TCP)qf<%UZK8St}=V_l;FGRW@JjTy7!$ysU#F>n%= zB!ZwY!M%Opk)3v@_Cv!FuoP!?XZLyIsClgi@v>a^c?hoq@kf?n%q!dhg?f?HFQ(=A z<=EQQ_((%J>@wgniz|eHi_kWO0G>&Ts<^me)tmEe;P7UWdq5+`A`*G2`3 z0UB=5jX=N02hR!hvRBp&CN7aU>}Hf}Bn;)D4)y`VG^O;)jckjw*Z0r2A~ znt&)jVdT4|oeB~PLeMC`Y;8GIeSOS*;BKixlY&<6NJd z5%U0m2#FL59@q59Y4OaGLUFkYLD-zDIA|I<2uH^CTCB!z>SI~>1ajk3xaucG1r59y zrouy8L51HF7&z`C{&uNLsjnk_#&>#dhF2x(3mgD&X?Y1q=@155ub0GyF4AhLidW}N z8zCO#sChfPcg(##>3D1^THko9hF8Lr0sABOvu6lMZyLd*L{Efr;1uOwc~P3p>gOi? zo4cO`ajPxEII1$ieG*Szvsr$pqTQ8|Jya{RqHDA!pVLUHu3jJbdx|ZMa(m7e>VZ;d zzPOmvr6Q)eT54aXgp6inS67VFLs-Rol;4!UAdnelCgv~5 z?9k>aiqkADpCpq0KgcN9)>XmSqlOYII{{5%i&S~6bOcnkd4J2kDIIJWuLaZ}5iL7YnS__`R zhqM+C@)9i}&SDUUY|Ql(x6q)w&H;o0@S3EFL+aDncg_#L(HJ43sVYKA@yHfssy6-e zh1~W~==%;?_9Ij%H@Q((M5oVnoSxl71sdB4#fxhMJyx~8vCx@N;QiUGGsrfIV2nyuVC@u&e^BgxLOTwhZMM=bvQ6ZE;@PUmi$RU7rT4fB1f3y|gV z*7oQqPF&(gpQl>u|J<(e;)0S$S}LeiIhgcBe49yfEM+C-+^q*W^-Ou74Qf?^Cbeot zg$UAr);B*4H_6c^+CW1m8>KX`X*AFh%HiK*Rrko%_7xS5l4M7TYt7Xw#0m$OVMmH> zPRzL5$u^3bgr2dM|Ec~~QWsAa^WUmD=#gpd#0jZsYsXciuj3zIEC*Z9I}%jmukBNW zVL)UH*T-Q?babtHPt{!F#X23od=8)@CR)V|woL5Kf2o0UIE|fOGuqmn)$|)_BI|B( z)qH}itYEBQvQsh7PM>n=WMtJ_)+g^7FW&}V79AQI^hd|D?%lY3x{Zz?Z>X;$hu%C2-~7EA*T9jOH^ly4GsJkqg&gKj;KouILrQD@E~lW zEsnS59r$?XryS8P`t&uVGCVP8sI?X5O_wfTFVvgwM0cJef}Bhq_~La{`^`~F@ofmn zi4R7%sE4OX_RU>UuAKutg2EIx9Y)|E)b4=!h9B#3;cqJhJ+nO}NkG8dxdXsoTV?DQ6Ljd3U$Q-&ee7D@e|8aDt0ZHY5 z7Y8xXGR;<)Kxv?;%yO9w6kKX@sg%;n$-T6!TtaZgU8kIiaG`8NtSpyI%~Ej5Eho_| zu~2cB0z*W_1>AL>`+wf}!Z#?~%l-bo=bXl!$0ym)tQe``p2kB}uhRz9muz zWyVvidE}(qlpUgF4$YHVy)fg#p@+=wK6}HD_SeagL$V_Qfwfs#oVk-vhj_enH%;~xs{32={f_(h>gQx)N(zBElNrcfcur14!wE8 zxp(c=Qr}nE(u$I?VZ+X~vF#zUnO7Ax-u+?jiw5c4Ic18JAFHBo7ct^rQCr1VJ()Kr zb)f6YS{JK`8}rAX|A4KR{>jzU(D=PSBk>p+%DpmRgG@Adb9d^k$^>xcy0UTYHX9qU zsAUS&!*HsWTwiI}BAEc#f@Ja_4~?zjW3hMt{o`Rpc2?Wt{Dg?^n)AKU9(e_Qupm=r z<}3Y)R}~WmG})jbw?4sb(eK8xX_U*Z2j7Bbo@uXUn?3OT%o{=F{D5L%A-6csSJ{Na zn?+Z%?i|^&_FNN+kw$zUHa_hE8QGYud5I)zT)6z(#A-{kX%sAowQZLTf%O31J|0k_ zmhiDMiTtN8f-|0nA9dDTQnv81wU?&PdAPCIpJyWD%$42111|AuK}W6F*?RrE%x|$r zI1E{htR%a8m}RoE;oI+&Elz(!Zv7l|OJYG16Vsh3_E4Abn*bZGFe3yKguqI;{WIkeI#?Q`@zjefzjq(1%jNYbcH>la*U{(Y-gwAW2qqkC3rco2j+h_c z=ta6!27>l(^4F`}YcL3XAx4^I+Ny8T#VwPg%)4+iZj<5+f#B_^MY3(1e(JVeQ}^Ds zpWcR&Y;6T?qC|!!4s13npS~&H&>uZq^UJHd{zz$CZPMPF@LJXNe)rG)MivpIu-LzH zbeJRkpyhuN&v?5Xo9$@Y`cL2KM8RvJO>B^P?bOy6_g)6*etfUi144jPQZmYO-tG7} zSCla#nWFMxh;aD0v7McL!B+=Bdhn{R@iu-I%Ism})+7HBSA9Knb?LCcV{p(TGQKpy zg>$Fo!H1>byoc3+cGXxv$+`tvf6C4v?Zo(_RN;-!##$&5f)RDtH`bB@p0Pn7)_uIy z0`s-OuMg#-aT7jX2^T#|L}-{uQ~&~uuIK_!KY~g`fz+1;&lunBpmLFp==4fVMxuSt zCR;@P)j7dZg;K%2@wx4>WsUVarU!8|=QgEpDR87?(InmgDbkEWZT~z83T{|$kJ*MB zBb!2v?-udo51*s4HG>0+RXHmrJUtG14ouB#A(iUjvz2Ig~`(S;7{MW z)}FYr9}ESNwFm*v&~!1b0bAnu6``0qIVtBbhVw6uvhOT=_XRyz>b0(0sxdGrZ4!4J zt+l=60Bn#l%^pBYku_V+Z~3vje-@5K_=mMLU?AUYn=Qy1e?qT48Qze87Xdomd&2JbkUb*HR(s55wyA&9FXi!r7*9O6{Sxq`_Vt37BR#+5y*2J$a0#B=D_Jd0Ui%JhHtkgM*rap?woJOBf_N9 zQn;K^Ud21cOd@G(U!4es6R|dvZGp9*oyFXQAfJ}ul_c?l^yj^+CYc7r6DV>Nk}vPbN=E=wd&;|y*e3O{k`0herl$-X2;A0!t%U#pm^pV&MShCEf0AReMPKvBV$Oj;EDiwqsA4>eGj zm2SH$^Q_OqXQ&8bT=o3VdMoRzitVH4tMv=s4K!PSle%U>4xCMdUUD|oh>3Wy+1c^n zJrBNOhNGA~m~*H+)wKGTo3eT}n7UvNJm`~82^Oy9?0Gb#ZW zZqAotyWcUvJlugwm^dBAPSklULMU7Dr9H#_H6P9UQqy9OmGl+**RU_x_BdSfd?pfG z+Mp&NDJ*SsMN4)_S8-lAnGCzBzFA`+fIb77L(^xX4W3`b!heib9(jesh6$XGM;ive zkUgJTIlgZ7)jyf#_h0rsiF3JgzJeL(wd1_=w4Ej*bak;&-b#REXyjSeK4p z(nN8Q8ekZ(@C|%E2@)mIm4(?m-eN1Em~Ajorfx?#HWR1z$nN`zLWyXWohzX0IJRN| z3O6md3wt>jpv{G}cN5ef@|}JI^4Pr|(_E)-dmk{2rI0+WMk!35Xu?ck`AYnrJU*z4 zO2$jxLOZm@5j!xVBz6-X#^lF~DjsmTB{#p}KKgHKw(SQP&{!-sQTO5i{WsdcA%J~? zUT}7MEs??zb5i2|WKlXEO0@S(w!=#SP&)6FG`BNB%lgpnvSw2#9Kx`3gktC{@zz@` zg&=MV&8T`}K@s;y8F^662Ia3rQT}2jI{+~mE$KD>?~jD*9a<%1TmBbE{l}mTp%o9N zQCJVfLO_|Ib_XmTyMb*$Ag)GmRZw1%l*jMsRxJ z>HU${g~Eu^xrmxxWrUmRkDEVP+b)ObQfOK28b1 z!)A%T*;e|_p#hU_vnzR3H!qZTG1H-C6hk)&N*uHh`7t{;4oHB{HlT+UX6NGQCGVAw z2uO#!B6qb;#9z)^jf+^Wn|;fvOWOcI2B67NgqzE}YY1&1JNFFX=HwTaA41_lQt^nr z2yOB1Xm4j64A&wuvT5%iK@Chm)MQ>MG$k`8?kB#a-pPO6NgN!FEm(fZnsV$T9RnJy zG|=B)Jaw$O(Ep(L#;X!#my+vLA^Uq!^5ALxzv5S=f!<^7LlLXG$KF3uKT~c^{_8EV zQ8GfdcrA*3xv}2REbPqo{YRe<&Qq-aUhRlR(aG@p{@RBK(ud!NOkbN`h-&$K%Nk(x zQ$A>~if73d!oXltQ#!@}Ks2ZX3ewk9r#6{RmoKvyK3N(T$%ooP<^{zMonL=+yF)s@ zHIwwSw)31KW^A6O;yih6R(9^AWdXcVJ=ofmbCwnQ0JN9?9KC@ZKe=yb{G=90=NW6C z2wa{B0nd^_*h!UK8rOISC1$4Es+$CrVNmJ?kev>g65SKO4k3HFp(&k79}8MhAz0{j z7G0aA>si%kILfa6ESrnqq$z6Gjt5_kyc~EOyOlZOMw8FPD9S#!>0|l_z{w8t+M0M2 zn0ID2ZUAJXyaE2$boN~%=y2zWBb&}nl0T$9^3Q}~6Dco$epoww>J^8zCEW&*Wo-fl zrGs>I*MnO|wUi0qKc(l&^%5m~m{xhFBfzP{Y;x8TW%JZaL5p3%J6`pN%sKX27N5WC zQT(!N2?-0|=3+Fs-1gXTvQL;B@hw(RGqA=>@YPg~#_t$a8?eK~9FA_+m`g9w!eUr@ zJj_ireeani-Vfs!+X%jiq0C7;0Mkn%HD%D(knxS~#a%hK{)n+YOy4uKweQR89eZDH zd=@Y=I1E&MesQl4As`kjZdZ@&z(}7rM~{*4(v<#J@fRQGt3I3z{;b-4WtnPZ)O*cO zrT)VrjCJYzTv%7>%b*uo+?Zk|sf`D@6c7_@$Go zS_qN<&Ts*Y`%2WLrq#3XRnlQk7C_+hR~tb52YS!9%C66U7(IW+#>KLqKN+)Y}m^~2I9KGbXlo?7>10z^s93lWx ziN*n6R(TXB!#(1-uy4b!*VtTce2P3bzBa+SbBOE9ON;^@Df#ebBEGSu8R}x|J zZ?+{!nVk?u_B8KUf62BwLC2h!wK+<`D}mzVG7ocJS_3%_N^<^?lkcp0;ci~-v9ze! z|F=?+7@w$8EX`rMSpjqkwA4G7`;6zw&L4XBoS;OK%`*C{K=Zif7>V!s`~JSZtm$U0 zr5Srjfk-7!@;E+t$mWmJ$_80@0BN58MW@w$g!!2>agIrf&V)?7)F9RB{;!LzvSbhvDCcYx0oA0C!B|!BX}RFeMRX5!WqN?kGH9#yJU5v2A85*D z_0%ByNg%hatu%7&Xbp?CkB5`umqc?s7>w^XL@$-`3#D}q{L&CRs9;ZC#?lgXz!$*6 z00Hsd)=&EoAe+`XP^N`mhH^qUT-Lq6t+?7Jfn7f`f4gqpz35==k>S!&?vO^pBQb7{ zw_xxqKJQK{XvU5@hF^_-QADzCYFpF&@yoJ)B!LF(P<>>wUlIu;{*m=*OQ58btKa() z;|Fgx0jhu(^+riSjB7RT6LBlhAI&6byGeuWZ~T5|TL=!|?~3U30O4D4aqJ{NvUsR^ zZaH(6fwVJ@stBbP_5$DmAh%k5~;CvCNP{0C}_oGpaUYzYr>1JYkLff6A2(zjs z{YrKHy)7Ylp70sp#WcbD5j20R$7}if;U%xgbrMzGlWV|W(|}}~(fz}X#x;3p>)XiH zYxyuSft3kdKxw{2ioI+5Mwkkv*U&1HHIrZ>6<|h4)n7o`J+f|zUaPZ0p2nTMN+#?hn1 zc3l{6)Pgl%z;~hG5Hr+7Q>u_IiERjj>%VR_46Lr@)@55M9#Y2pV}h8q%5Pp6b`8Ly z0>bddTi1CNDCL{EGH%&(=$KXgDpRmez9VjFHeHy7SAT7JpRl(#!fht5^gG9W<%yFl-$ON|m~qO~mZFo= zE&UkOHUukN#1KjMFwunoyuwee7&8$-I~aZ~EigWOj0C&|{W*eyS4In)O>yG>GK6S4 zWuh;8qR1osTZF()QB&{Svcqj5+&u{Jy!>9gQg`kRpM^{KnGwrPOW>7KS=3~EZT zi@+zBoDs$2Pao+aG;zKU{W>F4{JU z11F=S-+XT>$P=)B-Vg7S)mqNvU+%5D_kJ;LwfOLl$TxhomJNSY`EJmy<$rm}Is(V5 z5WeYF2nZpR{TQI^&?6<`qh?H*k~Fd5^-};n=A0;<|6bOp&MIr3bbz4NAcf6=(sCDz za4Dc4MK{~(*WZdNI38$-d?yU8vJW!=lH#w_+1ZdsjMRek?&i~-WH7Z^iPklk|*C@MU1n{>KMaQ zx*lkksOHSz<@Jp7U4w>(dEYBaR1wvR!o~kU%jC`RyFXVQ*jfi$&RAdqBoz~)O&>L3 z&IowFlVT~WcL}aYesZ{9>55gS;(5-edhLo{>BA-qiSGedFL%@x=24+bPf$g7`S8JT zlTX_uZrz5vS&#k$aRdpU+AB}_t(zhm^B`4_YwFtR6p|-%+S!CfWv1{60aZj=s0wKj z?0s*4XRh;0w2SHAalJQQ)c@f=e?KcLGxB^jEwGie!$XT+>T>_pi4(PF=kEJg{k$K5 zJo{q&>D{_{FZkNu_3w5})K49oYni$pmHLDIffJ8?TXD;0dn}n}IdkOx|a$TDU$^5Khf3|)LF!E5DrluO9?3GZ)2S51YJN$p3!-|{#fwtA5 zR(_ji+!GJqir?Q&*!8n^{YXgps)yZ&tnQ!Yp0^lY^zA?UqS}sA11(x_gl_m?);#?_ zWi>RR(JDdomc4HE`Ho`?9@AsNhZ?M57{-Q;*8d*3R5lgKIOwMNHz8AVg;+9ZuJw-j z+vS0gulG6hsh<3=e#YC3xvc2d9TkgfgNMV4&x8YQZ~ywt&77}U)~+$lO*`@A1RJ{+ z+gjwb%nj3@ajPN6FAY)+E0%B9ARX6hNg?V1+GfKG)by>JsPvyNwb!THiV-xjg0JafQ9}cSNJ_RdH8p9418Z&c%?opi z`0TEFQiiPmPj-p0d#0{1wtCRKoYr6bVKy-eRn~|WvO_y(jH7Vs;7>SnEiqIcTHj{o}jPX5Es;)>lte2fNQ zYpRMpG2hKK6|xR7nYe%o&|i>tD_SQL=8_uu+a3c-ewEH9rJS#Pm-?VJYFefQUH z{_zT>?8d)K!Cuaq3Vs`X6DXB7Occ6lTQCB`!lR?UXZWeBy@v!_=|TP<56cJU{vJeT=lcIkUSrvRDzKskpKMNawTwrXH|0 z1W<(4#a7u-#3}oDNAaDz1r4&XV>%5=IA9A#h{RnKGPP%#m3F2P2IqUTVsw5xF;83B z=i!w(5fiw?nCPty9_Fg*DNa3z0HkeubSuc8noN3*43#<5+y*w1#Inu+AVEZ=oi$|X ztTr0XSB_dAU{qoJ(76DK9wEgr>5(n`(ANDFpad&FU|X)E&w1gCS-s2D1}v-r``-cFgmL?^#O}l5?eU>!cY=C7D}+;^(X% zt8$%!1KzoZbd}5jDT>N1=Jqf`0K0CXLC(U?Dbj;Gt8Xz$YTQn4zYRiYi^lP;yY?@DoHaj*)qvkOzh890$ZB!Ep zb!~?ViBN%nwY*9>_+w|BSU9td_sk4}bmF?PFvIiQfEe1bqq!%Eo9T?);E`+wMZi zg)%cbXW7&Syc7p`L_k)xk-;??>6D`>iJC2Z&rLcSno#zmhGxSHCF2vWoos+36JN>8 zGX@paI~4UhaT0DZ+7({0cdOqy8rJTdkmq|T1S6$S6F%ZJY!Q@15tyH@@~*tHk7XD; z$XO!D1Rqj3_hN=q9r2C(ed6Vuf-8CAetp=RxBJfqUP*&Xu)piFGT|^ zljzo;FZH!J2VQ>s5N2tXY{rfr)3U0>HI(|97dC;cQD!T%$@Si3OPA>N5i7Z)rn>p) zN<`?us-yW+$Losu8}kVcJG(0Kx@Rit+n!6>L~=67xP%m!OLSCZ0463I8r$gv0U1(1 z)1Vf2KY}3AOV$CkEnUH@uY12MTONkCl`YR&saO2`oiw-9MFjvKYMsS~Mn^_U4<&S%xQIucs@qo4{@d;rS%09 z!4jpa6;l69O4O~`-(V&vjrF4=z@3qesyTe?YJ!hIeFFF?bZvk5ac%{&UjMN;$N5ns zT)!96f7o>4`Zmd*IC#4jYO}>0fdQ5&+T%8i_lmDhnnFuRo||l8Er^Vij3<%3#2v`i zMl`IUL0a$aNHirK4<8H+sRgX>j~JjRiazzXSpkEjE~0DCc5dm6gzb_xO)*ZC#F-~+ zwv0htg_*=qdg#!G(Az$z!U3ZFAERw6dn<_zQb>tI%kuE4NQKu=_sIc3 zLT#OBc4(#o93ClOXL%FPnI~INvnT6@j*{G4^D^Z{{lQtoLYt7)wdGPC|I6&Pu<+5- zegt1iG=GRlbhe0;{{H^u_f3r7&!ps3nnpLYLUKZfYF$o(s11@CV>=BETY^rHXlZJH zZqGikMFl*;=bq*O2bo<-paz%k|F|%PWdQ>b#!FBWsm2gtGGR1EhzoFkAzC z%yDVH1rF7J;8pIcbJPz?UScLjBW>{z6%IptE;u{o2b0Z`iBU>fGnBym{wVB|?5%bH zOF#el;`{$O=jVwoPJLsOeZ|XRwbfqzKI{}1uej|`jSfj)pRbcY9|^D%0eEC*M^Ad} z2Z=ro3ARdot8HPujBBPg)8?DO$_6=0H5TU}YpvM{!Vv-Ul!>6UvRy|@W4qvVn2i}L z0ya)FcrI@w`2C)i>EYoPDEmG*7iV$s@4-6mOmD<@{!G~jP=EvdtknR)7KQi4WZG#! z@%Z110GNo{qvr9MXk5EiYlDc+Yz5juz4Q7gAO}F3fi;t<9ex?3QSJ7p4eQvZ@u%&e zP~iGP+GE+emHN38A>Bf!-@X|xdAwQ;zwQ*v@v;IuTUPlGIq9GucAAnTCWEFQN|)lH zZwn0U@NIih>{Qm4Oh>*gpFq>&K3Dc0utAhK)BG|uRn3};o>>*JcGhO=*h+DV1r3E4Q1m^cY34nIdmM{||MTVa9I0;;3 z;jJiu#1<#gF}9;^8K;htt})c4g*XVoAEZl&hvErghmXd1HGeZoqV#r zFeJyzJ@WfJ@NL(#h3l5r_Ups&NtSvR_?Q?6K_v;%hzNP3yb=0bY;jd>A1Jo6kw^!}!1oU_651=JK+?3zuSm zW3m-@qLUQozH+YIeO@5xV%SMHd@dkdjBX|cO|+u6j7H(G!kiD4`)c5L)B_Mgk97nf zmSDk*qap;g+p~}D0071!LBQkDS;U-JYd2(9zY8+A$M_~XVy3L-OYtz3xN7U0zLQ?z zD#6JjV18WhbQs1pG;*(HM!JV6B;!x|`aFN;Pp@l#Ohta#{O)8h>H*xb{a66x#udL7 z7?l0*lU3+yj`g)->}d}7`(cmHTQjIK0;Lj;-cYF#l-o}r{n z`aY02Dbs?UQ7+EUh)T5;mfyYES$_BF)034t3q#v4qa^0eLpT@&uAcUYZFn5kdZE1L za2)YBTHa87_~gBd`>7xHW81zJYP*hqM=3YtY8GFMA!p4Ni7peWIOcYgP`V!$g85Q# zKG|g?{P)4m+}FKE!SA~iU3u;e-GwCv5B2mr`{wR?1UlAVEneIHVIm@)t2BrL4iI48 zjaYHciBkdf$kvHY-TXYWe!;exJ!#86u|{2}3m2ykrlBqmz;8@=q`7jAYQ!1isO28;TQg#vA(VRYp&pu`&w@l0m9s)`^!T0#v^OsU9B))?o>VY_-@msE$^RSI5Gr8 z8d{cGM4{|dOcEdYevC*e4f1W=-Sq)fp85M;rWk^n(mcEoy_&dOI}X^#RqnU(=fXy9Z&;{yIUZWsn76w5 zhJDXkiYftd^@(TDtk?0GefWU0XOa|*?D*^$x3AWE*4OKSKL-9p;aSEtDT-y&ZeTX6 zB^Fnj;2^;CU9v90(0Uuta8e4acJH|VG~5_J?C_2fQC!gym`PtRDMM*!YZ${2X^(uL zEFAe%&sAlw%zBPl40abUSq5wmS}JAxxAh7KYVQ|=_dx-yK6i0L(? z)!ia(d2qVA`0ly92Lo4^-@c29xwev1qh;yiy7X$gbV908cKB1yt$9ziFFDsToicRn z;FN)ss_1^8&j}&?_dn2g>c zAGq|WYX?gi~a*L}#0Gk3VL7GOA3p zH>68gr4a`#H#I#&|FXUj8@W&tez)ia)(E!opT@ykL9FdM4fnp#^yuj?GdIS^EZp_X zT$0_I^lC*HV5IEFi>a1XEq$cvEvib*6Axf^Ks)m*cA*zBd?omOu-T9Iw5cK&&pY!@ z=B2@1Zz?=WJXG$zA(tF~d$4W`!dK+S&4-~FJ6LpmOOLnTCRN)FZ)~VE>Qn>a32GX) zQbaiPtt41hr(fH}?$-2+`(CZKbxTqPE3wAr5=D)LV82Z9xfXk9!6;!{cJ1J=$7V(E zE_NT;b)UY!Y!}F{-8i)CAN1kTy0cXkF_gTy@zS-pcyU{9YBni)AEnrfQ_achl1X!8 ztWrO@>2DMoi8numBXz^h`#Pv+T1X-J$afki^`7+Yd2t8%Ccv{0^@v6DQ%|(=W-(hp zVy?oVNzuzcI*m*=TD$+*EArCW%i6~M_g`eBA{z!8-#MP%vO}fYGi+N`>wjnP9A=%n z?jd>&y(%Lq=%6ihcQPvzqUTxf(X>Zw`O#6{1vnK9e$=hj?j12@ZGAC5{_sHY3&Hup z;=u8e{)y)+z*;9a?S9cd$S-wjc0UJrWVy=sj06Ufol_ zdBQNR3q>yq5&1*PAHa?i!YjLST_*4S)jE9TNnmhEH#aa~evqY_8SC79zskRO&inR3 z4Zf6nw+#HsF59-@dXzgPyw&mucOg$89!*AUy3%jD zqVuPGsPFpZ(zT&(#f;ent@f>(oCh+^(kW&cEwW}}we~I8qiObIiE#ri1g{#mhfANg zRs!^TkXE~+6bdJjtX?JqX4-Yv*cTgM-VP10R(xYS6fne5fCK~D{o29#lOx~az0Bo> zEJegzjlet0ZKYBFIgDcMF=h6Q#{612I2K)sw-^n$nRz%Qj5| zi1cVt`KFzb=ydZ;4Kf)FJpV)RB~WMT2ZX8tN+}AxB@t~lmm)Tqr6hfd?4#~IHp4~3 zMJ0~veuaw+XC0GHU=74MLe2>jE`7HZ35;47cNE`%hTFb1dAj-9fU+lmyMQUCyh~g8Xwo739ll zVi`B!M=4q@mjLwX#ygS<+m!jl$+P|-%3l)t+-GK{GlYD$_^hI+V%c40aXg0L@DO`PATj`T3i- z_`|=8CZN01_pLj7>*I_Gb6``0xGli?L*ve~+5v*ysoqjB1&1a`K{-dKz`bv-jg@B1 z{c{_duY*@N+`E(FfCGtgY#Tiu{83!gy;SV#WTd)2S5Z1J)>Jxlbbmk3YfJ5S=RWV{ znj8ML)&=!FF8~MWHN8}$wY2L4#=CBxVLL~HKcw?8{vgdZgF$QXz+#qh663V?y$>tT zW*JgQvI8Jci1_2@a=noT$1C^STt$&jr?d96&3K;^bsztuzKQn>zxri?<`w+oeCw{W z3A#Zgn$rBY$WTUJz3JE7HNlziU%iTIN7ZoYm1Uy!i5Cyw<_R6_kN3W+OFLT|v#9@Z zfF(&v>haf0Vt~h-9UH|^)|J=Xs&;66&$uHGrl3b4&ZV$ZArOw)Fo>Z6=7DDLOKxNj zbbdTo-T`TZW-xFo)80pgk(Yr|CC;sH-vVcPWv?ncxC{L)zAJbPEpp8-C&cj;D2yin z#jNEMYh@qw9rz{G1~`@zv#kH<6E2*Hhx238V&gqkb3e1^-6FX5wZ#?POX2Plb@QtU zUbP!EN!~P?uZ}55W$;Me!rQV-1#gscx!%z{PE2U0(6z&tMxSM6()3qnGtKyUm(MiY zV~KV&H446^-Rf^8!S^iS&baYzac)-aBRjeoc)1^JDVEtInr-+wZqy=CB4XG&n(&4d z5YX=ZW}3-}qlp=K8Bmc*a&_Bhr^7d3c=V)geZ|wfxJ*N2F80If5Pr0{)kF&BH}o!bG~BQu==&maj;s_N(8&1G55L zn|@q<6Cr>T=wg;`{l9$iaEFM!8h!Z9jmz=cbMrWtbnPt6yU(Ga6<=$kArwX zB5#S>eEiI@4yL?gn*B1eMGVy+`dE^G+F8Sd@12tGoRbD+^c16q`u0=+1(@8Nk;VKN zFQeF%>Uith;g0Pwe#0dsL;x0BkCP(zf22tTbp6_Q_WJB+l3zt?#vu5l?nt^ZZJMRB z&UVg@gU;|O3A7l0I;;E6T5V3;_WHOlm+Qr~<3s;}z8e|(`htOhR#lHM;B`b6YB)Qh zk+m8)>2u(BdY^2}*e1dP{trfP+a5sRnv3^JO3wbqvG+BF!ZZGzp?=c1JM7R<82zfvJajL z#}nI4WSvw0lQ_4qG*3Id6h4a&;z;`o~Z&c_dZgIsTq^xxk zBx{+M%2%qXXD_2!Q_(zUHjA$IEavQt6(pQr7oQCroin803r?&$5~TeCRDgnPp`Tq_ zWK%ILV)peNnH7+ZnxWNf_9c>Bs6y7P{J85iQxblj_aDeJVgJ6t#kjVWe?}sEJ=O+i z))b|x`t_P}I!lTNg(EF>h98gatE*e|lXWVkLTk2$1|=XbCK85RXI1>*({~g_g6ASQ{KYI_{Rg(iezJe0*IRMe=_`{d-cFFExyzr zvn(dkX6fMyMzq0c%XMM|5Z7P(Q{vA|T4K#LJY%wB#Atdzn$Iuls+uEnql9W$eQpy-{*N6v(CN5OG18_gqPA8mdUM?A_ zR%!vTL-!yG%gS-?BGVVD6}NwD0|Cy#5A9-MbU92 zR?WX2A7G`$J8MB0QH1FpUy7;IpPZ0+pq+~7{m{MU#^~8|eNKb5LCebbF&DyUV{Q*o z`Z@Wef7vN)8ZaemyvxVQfqBPPlGGWFEdgPGFzUT)C+vg3JhF*^;Z}N#p23Q9KJ{+^ zO#Bx5Odo)Kt;9_|?WL{dOocB-TI@6L^ZMg`D*#@OVsQ7p*UXr}s zH1y83LEfk?G8(rtwGO~&+uN|K_@5~ziKL6nFew;<+P#Tpq5EpbX?BY|SmD$#8T=XGK>+wyG%=>VELN{pAH1$P4d zXUzBlC_4(Zmv=x143pv;jArY@Wr4*OoTc!wBQZrDF*T}+4;8XfQd|4l?>?){KWls~8`~lbh2l?fcoz7%kQ)P>Ip>?(V!}*XyAG|2vH3Eyi+JX_85XXwh zkaOVVEY!tYQKuxj37C9ZYu#-_dBnhjV!@4^f!MWZ^B37dBa3is67vErdlG?s=r!5eSplxqNQD;`aS1jBJ zs$vts^Gukuo){O(h+CfasRpF}&VaQ|PJgjp7Z>UAvHSnxSd@8YZM;X{3B{?;{H(}( zz`cJXuH==@>O|l~AbZGe;$CLW$sYc>x~zyBZz6BR4E5&;e*u)vf~K|YH#-cJ0yqTy z3w;$R7y!3}PH+7Ywb0_v%FgeMgpcCIn5DJwIqbw^?BnU9Q_}SBTapsBB3d9IaRD5o z=B(wpW%>u;Oj2j(vm_A>$`y?mH`nv0Bl`3L1rNMi!({=TGp`*#*BL(ib9!6QldihB zEfqp}?;RW#TL8(kl=!Vc2|6)nJ3O6$UTyPPg6Y3KaD*0&7GgXZfj7Xl4>%Lk8qvi-B}z*Khi#GON? zm)w>EPjXM^j&rdSp>~hBRqF|PYsGcQ*ppL7KBZ~NtZ)nAKZ$0atYBR~7(biNeJ|Pk zYxA4ubhF=c%)7^s4W91pxBoDD5atSu5KkIb-dgLM$Qb#8{2x!26Xq;eYu5gV=M5d; zbjHHp3|zO`R9$s@<(MeW?&pOt;-#K#x{o$&tN5UojQ)^lZxQ>f%$D;Z$lDd}ou|{0 zHS;{s_35|eC-IY{ck?@G1+}F7HtMI{zv1SK-Z8M}tFO5m#@$$M$v0fN?iQTz>~}64 zvt;lvgYSY90bT5q%58hZ{m^f=(y?e9(p%NPrqB##^Pgx4tO4UIMqB59<$EqAJM`Zni=kzJD;4R0rn9My=(p<1JqoU~ zu-9v~@k@6WbNE8UHOugj!9&9L$J3WjB$E)qaQ>H2eu*>G)8Ch^teIvHsPJ+jmLP@_ zfl6|e-f2UGG{RV;Bhrtf0Ym~m&~G_?f=I5h^rfI$%SMDd5u)(;0VECHJpmI*|iQPZ>G zJcIMI@n=g>DUE!hosKvoh?V5aI5>Olw zE6opd+a6-JtD(;Z3IdU-ojNA1uu;pOwf4uS|A<^)cpwGW*xD#X6&jpj4(E|hxN*ZP zO1jtLtTzO9I$P|?F^ww?D+e;FM&@OMDV=IG+7zx;jGR?4s$PC(r!pvJ=~{|`IejtL z_VjUr>)!pJAC3lylQ zIe8sc7dsg#`NxE4y0q`!zd(YOAIgP|YQ%_H5v^Ol@;D^SCTa(5&Y&ri_!bA+i_uw0 zX^uuC0y5-EeeoSjz;yCUc`a@!TBUX>nPl72tl`**= zDTHk+8T+}yw^;pJ4^}!=K(t40bkLNIT2eGoG@T)KD(=%!9D-emG{uEjGWo7776`v} z%F${d49l*u&wjKJj}Mmno|s?0omPZWGc*WZ>6smLY485j1Hp za~xMH`96OAKtj()#ph^3(3ok!zv)*>oJOHjZjI?;Q<9^w08DC_&HJNnS-G0<@{oL~ z^U)TDM$}4_XbVq0vH_vW55YmwzDNrJ%P=jX`~vKUx`&o3y_22!4VRFsXE1yD(HLO zI%%N}+ z6hUf!ULTC`^#?av{q3tKEJNe0R6q&aNVd&ujv7nUn z;tfu$|G1^uWN}MB!$vW@g9DHzSO*;^n2OfM79LdH_21}mlbq8u@$UCsl`EC< zi@akwF(FxVUUM|sI$ex^I?8GV_#usM`%aq*)GpAb3>5+k9=T2oE9X#HKl zjgnj!0}$RKp3GOBY;nyj9voi!mt?~;))${J;5OWV6E=qTJ_3jeVd6<91cOIF`Mo6|5bj{ z(Es4?2gSFpBsNO?0W*2`?c-3Gm}5unha+Zek!C!a4QoqsG@6l8Vj@h`LiqLkO5O9_ zYlnDDH)NSMcVlv50X`f+Yz|Gti9%D@s}^FGeyx*n|2{dN=!};vg^Q-_XMa`@-rCW^ zkoB7_sI2KU&lqkSQnwI4YN=!0l&J~&#RN{VCI2LJ50^9_^U%p&l*^I?GYu*X%{BgW z-GHm^Q*C3K}U0-_sgW_m`$`K9uoQtkBYfew9|Wix(>|`F^9ukw8N_=$>hNB7wRIm z18gzvGZ@yQPE#o%nb)@`#>}RCR*r=>;t`Da-0n2_k|IB^{-2y|Me#)7D03xdto8tP zA}ALRk^p_vJV52HY{vsNOPSY;`oYPc<7iVR0PV$W6gM9d>V^JOldu_}Gor1U;AkTB z7xV;Q$DW9v2dqx>t>aNr0P@wqRo=6bhR^>~NRWc^}%Of183BF)neIR3H+L-~XA$mng^2h_tszWTiYMTwf! zAeYJLZeAEvjBfyIjxgH{Uan6ibbEcOZ1fBp1xe8$@&8eD-VaHwe;hxCNp=m}!41$Z z7PnzJZUzdDx;ZkjY*=b)X_+|@C%El4jBrp^hFF=S;mF+ETM1-=g^CNMz!3Msf#ZJ9 z_b>1V&*41J=ktEQUbrZGl5Obv=*CgrRPU9^<|7Xq<#NW3GQ*TlDl=2>q2 z`LLtEcfZ)LbG5#v=tV<+vAhC&(JPhawo~BJ^TJwF~dGv{Qx*$-0hJAk-rw-P=0oIl*#g%=h(@!z)bp+*#Grx(6Weqj+ z8cg5MP7W8b+lBWtZ}9aG`vq*TaIP;~^{Vq)GF-micJsprw8_+lmtMhin*xuPr?FSI zE; zakPE~llGf8eyHJ;9!QEvW3NyAKwxd)TluRNjZ;m!H3-fX`g^~MHu&))Wp^Q%(d?!ET86QcZA%gKHgnhj>g zcDsN2Z8668P1k?j%B}K?Ed_iT z$-@2d8{*u4zunZRePUw{ncwrw5^AtJ_csLyBAdWUFc9;IJ;c#^W?ybb4C4o-m>pgDzVqbN9U=- zVxh7-ZqMmu&4v8XA8f(tW~h8G4&)qEy(of>QbSzhjSgZ*Tc`e*{Aq92C(YvR#XcXl z#p%BBW<>18tN*_GHtt9EvMKrgp6&|?52sIoQ=jqAuj8Y7p2^b6AFb0rK8ZbkZ{>WJ zrW<|BI!P!LlaxwJd9aau|HbXBi#8b<^;=3^rso{b7EQ>$+ItuX7n{QhurKlayA6D@lvK-bXQoa?B*rTI55S76SM-8pQ&y)^uR-OZ-; zKdQ{^e#Gxlg(s5kHxwkn4c%*0A^#*f>z@{f81KP7~+vid8n7wuZfJiTE98f z78Tb%mt%NTZp%#Dn_8Mj4e9u zvxER)K*%~^49~M*c_7Wz{{yaD1vA!tHi7FdCMMnV-)y_H^ysMnAty`d7o6gn?pUns`@1Ky;)xq5yR%SCZ`yfJ*P6#NOlXC12%eQ_l_ zC^WzwtfizS_+WME$ayslE2pX<4r{~5SBn;IlVhDJ`#FDX+*$&>It4|)oCVOfW6S$G zmLOC6&s;h|yF0ik&*k`e3)2#T`bLW+j9K`YSuozqW6d(D?0wonz24s|w!FMDsW%Tygs030=*ZoDah;S5W&dN@L=2xvYMz)6fg%!0 ztq{5}0E56wlG>KLBy5wpPc95nNU$0--Vzr`3Wn;!BAbYYEcP9a;PPSJ;@zg%f{|-uey#!A z3KhMsiZ|t*_cX76cc_eEKh4b@6=nKfiumSQDtu7AG^`1*ZLf*rEjK(Mu+W9{1aKdw zEv6?t*}8V;DXoK6VE+p)Tl4xzfW&8;ymM{vKabO`Bx{@eClL%%RMVoPZn`U7wT;#K zj`Xh`u-UW-82SLV5rfQ<(_wf>O=jSTL%r;g{hRu_jHOVKQ>Bakxh!T)KyN8kk;e`Q z3_Y0Bdg`v_W6Z^2d_!u+}QlY`zj{A8yNsdSe`7cHD*)k1}0NyCSo44@9(aR zsSj&lzo?-e4tVNR8ZcB`+21)AIA1>*_|RUmIl_Rj<||`IktH6ts%x71Vd7AJwAr`7 z@i6yvS5E(3VimL#^;+`}gPp+`b(YUQ0I%n1SS&iE z^>4;c{ko~71R;IecE|=pj2v>bxa$Fe5I4VE-TeNpx7OyrPHF)0@E7BpsjCSD?Z=70 zV)Cjm^2#Xw=611AeWt~fUELB%II$cK_D~u#C@lWllQ%x# z{*`FKsyO)7n3Wsv(e^Oy(=5+WX)5>!vF3Hx>dpy$ioSI2ct0i_f4}If(n5@DfSKnu zqz^Gl+O8s#pyv6{6?8OtgbgzyTAQW!XBiJX;~QxMJ_s-`C5aexP6;Frg&0}FC1k#} z8fcIG%^@I$3jVrjzdNC5ctcafK7IM9|76`3wxLjo!{UbQB%#s-7QZgU5fTqH>(PCP z&{v2F&WWO(c~FwsX0nJ)to2HuYhAlKq;1tE1t%kO%~xcG5K9FcT44i0j0xL2K6%(r)RcEtbgt<5jkYxw*C}>Q zq#DuKQL}T9kGP)uR4>=f1xS~h!{bJj@q1}hBc2QcWR1#^Rrve z&FkATl@mF3xi2bd<}0JrJ6TY?EDVL`DA?rwx0*Q?pG31@l)7q`tH{Qh@4Ff7wuLS! zStdn|q`blu;-fFZpcBsdz(x`c8O~J?YhL#IJNMVhwxw`;k}9mPHDWbr#;5S@kl_qD z<+P|htOayIOX2d(i&Lop0rrGLkg!5%${~YbKc3CKKX6~3C2-Z3d@${e_-@{?%i z9Y=?4faty?u0r5Qio!O!f^f+5iiVMiOXgG2%B9)fzZ;KGI&OZGPk4sTa*o|`Tr(G$4(-fC@4kEYW6nSt=amJG z2*MvNT)uh8WdpN~I}v8?OL?7*yJ`OcA7alFH&$WIZX-C39>HcY)U&Wfa5IC1h*I34 zXBeiE&=I#I%X;K+=9IK+lM;(TPVr`8Xx)2Iqk@rvcE(5(W}q0SIGelwVvo4eB|6PC zbh%LVzA&61V?1fbsURFM&(tS@KM*S`iep{R#xL04dW%fMqW}jV> zr3j&m|L@{wg~#1qWVWs-V&vw=>>Re5&g#3iBzE>GqrFfN*2N?EOd)5b+3mklS)Mes z5!m(~5&U$-kCAw0WWI)_l*kqMqiJC)gq_2UZ(_3=RK)$6M2AlQc<;g^JTrP0&I=!NP~g@syU>XL96}UGp$(ol50HY!Wik=i<6l=eJU|*(^4#;Wx*<`>Rku*ySn72Gi|&~irRM_zY`<(K zYN90)a#{*0sdpL`rxlSmBk=Gbk!VWk2tE5U=(q3uQSr*8(63C{?HZQt6a4T4NLWaGXdLu*6R zm~8X9_OexHlHlx|(l@$rx~GFF`squZ6^|Vf#Ejw?YD)Dmi@OtiYB;t8@wymn+E4Kf zw2{gdHRK!@TfNN!gu*dFJaK;=T3!^n&Hd<34D|V^*%lFQ)D%QFwEvyy8#=vgLEKik zxV1J&D9^VKAN}kkWey}7n5B3GF6zQQR2c2P;&?2PJOP4sk#uj*Elo;n=JzV1BY8}; z+XexLA`~sS3BG*^SB6AqRn5v6AGKdKBSnOH_v~Wj3g$(6OwAi*|5svosjxT=fgv2J z;*%(|;M^NJ1=*AGbg9eYBxtavGqR7RQUsPaRrCn-%P_sTgW#}|;0Z}%QCKq^^;s;U zsaZ+fkNx$qC}U~3#&xoh5}}&w7ay*e>x&GGM>q7*wMj|&ko;K6Nqvy``&@v7iYi4@ z!z7jxFK0<+;!R-yI)1K+`*K#E#Ce7Q<9nb)fRBUVUkJYKDSXqh{}2(ZQA6KsSLLmk z-6)PTixAP=3CRECdB6CCLS^bzwC&927n@JwNVhE5H%`} z8ZuBD+0g2rXcNeF1Rz4t>ozBaV{r1Mh@!iP{rqCiXEe;07Y_vH#8DbYIz^@70~ISN zw?IHjVqzR|Uj^ijezxMaO4-hMA#@Q*wf`B9D)~42b!#z5)Xp0$RJC1Ce z)VO2`S_`z~`3pWsvPW%W$*5Ya&W#4ID|-)gZQpIDo=!UJwR$lfx7!wb{h)@0rhiMI z?${IOYE-*&7&ogfA#>&PNprh_Xk3RKa77ES8?yXd2?u0r*S<@9-DKGO>r))eR3X^j z|MXHoZeyV!=#Rt0JKvD~IIiLtWXgJS4Q>X|WoAFk&`XaB zRGX*_x7*WTNvsW(;&|rOaBvy_SeN~zxH!(AVDWKj+H!C(&@}7&W}{$jhbm}<&LQ}= zX-I6H4+2mDQR8Hhh?zV_zOl)#zsxf$OSM}yBB!(zPFykEHy2oM6INO_<`;BTNDJ*) zZ_7dOps1*(IhoGsMW=rVbjC6rOq1{|lg2AsEE-yw-UC6utcsz{Rf~QPcR(a4U^CNtBDwk#FChJ1?QD=1U!U- zl8O}3WUl!KWW=lzLYNV%a)IT7-_$XVjwazu z-U6q|eOG%lzS!4!Q=dz}qSC0B`#To4*-`(|m-}<^Qx)fKS-}Z$7j#N?EN}nqUk~`R z@8&y~W2#CgD^orOclShQJ@NdeRHPlD85JbK1bk zefG(Yr+#nl;eXbaXV_xzX4nqieS$){?t0j~_C%^-QnSMCLfwV~E*(pzX$$+TTQyo;gliS%0Bn}pN(W}P3Z_kRy@5O&Wvu^JF@f0-l3cGC{8KIwF>sGOVZcX2x& z<{O%L{h+?g?n>qk;O)CsL}V7I8Gbp%HLqDO4Gif6q4_L{SE3S(_yitGm#w^t6u;lJGpaA+&bU6h)bH@+&ri}&ae1kMBLP_$-9g<}^8Qru zR#t;1$0f|9yZ&tLCvnmJY`J(1aH>lx)m#)0Td1escI+#Xpmck%&QvDx9_N* zN@#)r-VsC%8}ny$Z^jds(J9zV2MeBMr97!Q+V8eSO zG4^y))g)yfvled_12ezOhn|$;Ti1}An^F4@8nRN?0h@4c!qSu4S)pJ{x)J(1+s%%}u-)mp zZ#{!HZPUIbjqcTWy3oH!q#O~pc3j8CY-5Hyee3?K;+tOmky2%6lYaysM99;*^{X-NokCpQ~|Ky#HPnw59H{(|KsVld*C? zPm$_)k|C3*j%U1C`}v?~C&Q4*2e0~2JW<2U3x_CXo#uYH|CxriMS4rox9Kde%9GB= z^F}DHMsM&<#0apT!enh>;8D%I7JCoBS>=q77S&67S@!a&i%CTTqq9*uR1~9LT(t(T zE-!&1_)%bpOwq;6jPwV+GK63|U6pJyPP^b&RluQ-hM%8bDqV-b`YL8EJ~fSrQVlal za72Tct)vUh!;LS=MV0Tk|M^M;W`PtW#Xi; z^6!X`Y3eBcAVCO>w3|(yb}#fBXni#n@jT}`=%Ink}x1_7)IM9Bq;eb%X&K= zgarV^m}Ye##7s)}UgOOh()ekZZc%3#Ph4V!4u|+whF1*L#@THc>$O*nHd-qW>|div zG^HlBYef*P$)cphz0D=GB)U`=jNV!}8CbX!!K^Ki+Q-sCDFGm3a3)hX8-N>4<^)rb zHXtg}gda9hsEP$w;)+Mcv04TIK%1AVQ<^yPAzw#G6=9wT3%16gz!V+Y^el!Lh2R_| z#r5;8K#w8}|4I#H?E~`sBJBbxggB)H9$_G?U~3whD%DHHso3PUHalq7W(xxtRSK8L zf;HCh4sW+P8btu_^U!LfyfWy4kNQs*d7wR|H6IGFSksQEkPzS8II|loJCwpxdQf$( zltDHaRDcVnb3do5=>_sINVJ$MsKSHmzO@F-W+>Pfp|s5?*eu2q*_8c?d3N^9O62qF z6DzULHgtJMKv6OHAsB^&vc;CFF+ zR)d7&NGREsmZ*YDCf_C&hU*&9qiQFzNl(Uv^dtobon>Iyl zRf~@?a)cPcOj$_uOSB~yElbgJO0Sw zaoo-3u+JbvM2ml4p5Y;3M9Ofaw8(K084uR@n&J))n5&d}r`xAtMpO#tB$$Rz5V2_m zK-xkK6x{Yru??u9{9qP?3QjS|qtvMs`S7}YwN&EmOVwER6V6F5xS&dMW_fO6FsRC8 zx_8!o`F0w(tmKo_WZ9>a7)It`-sLOqPhI4U0KpSHN5ZJE94K+aI?XXUoi34s_Zb#> zf_+=Py*9FWL@czB=T#`9PD@5-%?)YG7iJPjJ&{PT2Mk93{ewZl#c<+$ zfZvSh(&5UhIg0vaZn&JTb0*y&#;PT1)HLib`V;j{+$PWsJ1b{AZU$Kmylvh#Li!di z9*{^PkfBOx5t(}$Zr+en5$uS9#lGA$Fff?-@&+-pxABGp zoNvlv&2#cw+r6sIN)0(y4u ziEkQ#NgKu?h^je|;WxZZCIjq<)-gsA8-pzo3XbTH7v6Y2j)wsM3t)tdNe4kA07w_@ zY|XpdP}wbR$SO0+MCa$Df(=Yl9^CInZnkR1ZM&2MRx8vuF~_>dv&*G6ri}cB1YiyU zw$_r8Qey4o>Ss6T{9pP-4{fo?Mn(RANh|7K4|>)-j(b;Jx->i6(1<~`AybNpA$Sm_ z!;*w4M2D>}RAJ!q87|)uQ-x+p+cSGZ;RG~=J`YV`)X5RDX_(q4r!>?5C#BeUXqsqx zV&J<(S^1S(RI7Ae>@B(8Q~7g%=|UWD+}}U+Z-y?kh-8>1njJL_mjzpEco%3y@*v>w z-IJY^4@&R29IL;)Sm`#7wQ1jKqy!1WrpR&IlYQhin3%}pDu>CvlZT^UiI2$YGM?(! z9to_8+7P{ZL%c&dLSa|kC4s{G;>OddP^@mmECRWno2fQKX0h0}5fHuk2?6P)lxP~o zR1C!?K^a-W#CM`XZvkA!$jOVTiH{P4>;^Y2^ghtg`MTzPuSa9~s_(Y?n$U*U4#k2h zT=XcjZ(}4d(=328MGcXB>WuR3-2h8;!^;0_*w`ur-v%kVFh!qTokwSZVPdiX$*A*A z&YN4Dl><|?x>Rzil|0>SGUUcUX3dgnZaMZ?t&4|)NyNu)e+FNIR8c8&7 zmXsX{h9Viq4gH&%I6qA#S|O1N-k1`asmM*R0<<=+m!`4B^>>aG ziqZq~Ja~>?X!hqOH5;@PCl|I)wQDVf8UGP%34!)vaZMPorjCF&OD03AodbI-zYh$~ z44=Py>CI5##F2oSSut@3|I6p6CmEhrry^ihm^?fJL=|#zNJe*2$jk?m8M(~eI?AdI z2FhR8O6iOzqx;)70a)TX9v8=nmQh+XL8Jkr>_1?y<8i6F_Vd;8C)|TO3OpcT1l6f=tT`9e?)a z_krB>h;Nm$`P%aDqb=YRr}L|M<{S6<`mvhsgZGZf4^Jk_H4M|LU|SiM0EqpkgI!Ic zk@44pWt~lYFVqf;Lj+|!M=&k-&gU-#r1Wgdu9JB&GnhsE~FqoAaM4^fVPKw?O4O3MGS|%-Busl zi@;lZ0*iNBtW6UQBHh1e~9eed(3J-*7?pR;z4RZ4f+|O7TAoN=d%;(h;(pJ_l z+q|>7Y`k&jpG|2z*~UmnUjjYdh~goz8Joa%&({AfzY)lUxBM31m1Njw4^tNoOzgaw{t!Qq!T(O(^E2bF_(n#hi+CuO>9X3s#0(Yb7%Wbrk`m9}zP5O8 zv$op0p0k12edTL8V`gi=B&*jxZ|Xx^*1oHS>hFxJl~1D%a(r6emTL>Fu@nKA&Bz~$vfc7A#+Ya`VY!Y6|er#Elu_K*3{?bzFmsl{(hMtU_X>i9IUx? z$z-;Cc_Pk!^l$Gly;~r%0Li4M)uI-MtQ2V+-z$%xfzmV%A)zf4kJv>Gu^o+kE!fHO zO0?v*Xu}nBpFCh3W_Gr%MfR#00!>TR1e3=8lcv)!)65~pEB~hzwb9~+neEEK_YQ$d z-=YkW!+!vAQ~mWXwrY2q1PIXYEgc||S(SNqMZG5~`_3h%RZXs!veL@NdwX>Z{8{u( z?IGK@3#x*nFwa_yY+?;y*0zWyq<3nJnRO*4g-Hei)gdh*>*=r%D>>f65XE`(Pf9Jy zb>;U8k?7LFx8;qmQhMrZ_7oS51^L9xepk7Y#O4q4tAT?3)A1llF#-Ck3Bl7jsHOy9 z4+nZK+`MnO)aO&;Pe;>UA-$={jdt74*p@ABl}NVsS(?3TGPBWTrKOU#?(JRPN2}6@ z|6#J@pwSyT_lS>faAb=?Bpj|6%5do6uk1V7C{8Uwu^(toRd$M!*MD28d-gG^li`>)- zNl0R;{uwn)$v6t=R%rH}O)6X4JY?IV1B_$gy^Iq-`!|2o@=S#T5b-8g&YBJ$$ksk|EBRb9Yzfyb*y;L@-sL;pTQOt{+m5s1mbHX=PronlXl?_?o3KFp|5fLVy*rds35n?3Zpun^<~z7@BAhTXM@jN zEIMGPka^E;PcCh^xVu+0Ve$OX!XBTL-3{qW4qBfsKeXIgxp(&&U6_#_??42kwg8en z#Az0-l~zP&KlQ~c`KBuB8uKaj5WhtVn6o{brCM3=PrY{2GodX*?On4P0~kz@=Qt}5 zNqVu{GdMwiANvnrfI0;2Rsxw(KFPAP-a2(-@5Rqq_`hnWIm%j5U{Ch*!4A|(*zadt zs{CGi_(k{yc7=4V+>Dt7KjeWzCzx$afo8xljNlgj?hAG4h8K3Scncn26 z^%@GzvyRx*L|`vdeRjQalPTfgU2A^G+6w7OS(q)(@T2)>6@_!o7ROZhm6wxxua}K1 zRNWOICK9d5iIxb^Q;QRr&w@WI5Fr$qN*!wa z83&d)lPmq%{;!h=6~Z>J0fr%KOIo{Xy+xiz)_wXTX!r>_=o+_F2&zWtKDnX$ua#h} z*!du_FZOn^qabfz$7_!IzBLR0E5h*|&$NYcA&kebD=U*lb08#Zhu;;CwxhJ@-ppM@XLql8>>$lrav3k1BLTzbwvUy zr==0@_HGIG^fgH{AaAGd<9BXjW=G@g0@V;#V0QaR#4qMH_X-0~IHl8i4vNBk2Ua1j zdRV=(_cz3U^i20UjyzX&hfQ7k{)fGLo^j&ECN2_08p7)NniI*KN7CKN$fsSC8suM| z@rGO|x*7_B7W8TAFr3ZJ7d{o3{bsQ~lHqRfkAL7J-I7H{`=#cPizT4z(m)eYc_h1R z?PudpKeRWt6tV~v5jc1gUz`K5w>@2%c;Ng7y`AGin9W6%Gwu9ZUo=#DSk$lY*cn&- z<{Gn6Z}fZl*tgmD-&b#s68-~_vt5fvz9p1YNOgZ>GQd$2D8G);c6m0SQ`Ytob<{*R zYv}?kUgj0i56DuYrKyfT$3A-K6zPG}(Gmu<^{ML%qsYPJN(^4ER{<|3n27$()+x@v zyX8dZ_M;}!QK6Jl{Q)_4O2ZNQ3=>av`q5JqUKjMDlo{^#sLVa(lE;^F>z5VJoy2`E zF1>GjV@-+vvF(S()N(h+{k*JmQoDZ*%vwWIn?jK5dIFBfj)exI!shypsm&L(l}$)? zvmFm03z1&*!dN@s?6nrxdpj6szaK7n;^e`75ZHv@x1J4Z-15e{5pwf~KZ3eBb2mGR zuT)f*bUe37-4$`m-@1B3)n9-)S z3z9cy$@6Cezq@^}NO6#L)QKycdpHVlBL{__JU*TBHXaQNCj9_!u#PcRg%@HEUoa8Q z$yy?JJyuG=f=)po2~3a!#lKJ5jP94V_NvF6aqjTSdT6Ki`(Z8X6RdI1XKaJMO{rw} z+^b9L78o0&SA5Qg*sQe{SHaLff{G#ex^X1_aSuWEg{r#^G|E}oKq10zP zoM)Gt?|kF5-fv6dz3Ae!&iS0sqAX_jgim1a$oKq~{X2k|3gcA#44wlz4mE61WP!X8 z`st~i;k~NqsOB_hQ4q9V)v1T%+?=o!`m3>qU6u;Oovv#i}>U98Bb^ZUMy|z{TcB7M{HaE zsydA34N0IU25XoW5yK@5Nxv1WAq!608c~v(WHYG%l&%%NZDBduYl>psjujTy9V)KN zC{pO9U37EM`MeYnboYeBv+_%K%Q|RbP%-CHkez2{ZpL$O$#QGN*0%VwMRtcO)9pSp z9?O)6g@lH;PB#o6eor4HM>rgRrI*zcQR8d&2DvTd#?e?v(tn$%i@%3`w+z!QS zaewFd_w!ws!7}|buzqFOq?8l12f^k5NTH~PH%XzG{6=@`*)9RXeBd@7TaBcJ5np4{ zx;&>1Y)Bu{?a+PGrflhA=s-uD`?E~(Tt(*Y*CVvW$_iEK4)fJ22{KJo1mNd5`A++C zz}R^Vh|g6LWE2h#8Gl2VsMgfXn-D!4Hj9|&sZSd_Ebz%f$RrMIELx(bTB3Mw8T+U#TFBWNn=omb(W!wywW$Hy|au0tsDbDE_n(gWF$Q9+w z!kroqiGw~2Dhij2YpubRib)b51dq<7fadtet#^iu)2TCk!Q^y9mK;T4(elA4FQaPN ziVqDsMZ1=jYAf@Ba|)2&Yj7ws#~t{3?FGBCv-R45PhPEWOsvC>($doMLR#;yv4ADw z>JMX9V$Ae9C|+G>Gc7F=`SynIGdA zd+v4!B-!E3%W)w{n+xk-30h!=3VmlA8t%QXS@Z{E%gr7Odp+)*(=8X$o6qHEIA7{o z>xCHVcG`-R+yde)7pqn+<9x+#;)TTPl|J)yfCs2Y0AA0A)OOwhX{gP`ilEi?hox#^ zKWlsA{xa%z>9e(L?z6vaeMF~f$8Y6Uo=x%LiE$58?q@!4k9H1Aw7sZ@(?jJ);Rssk zl3P34HOr(mO9pqA) zY>Fl}JY$>2P$|nx=Q>AT&pP}1)^;3;?M0)??8_T}i}U#9T85~Khjg@i5wy|$=wA=Dwzzrz*vdg5xG_s084g2)Bk#;pk#EQeD zD87=`L2%2}V-Tm5c>e3l!;p^Dj z=XWCRG`F9-epcq&b2>aY)7K<_N7(M~f{wqG7Hvo74y}|Dw3pl?HxZ8ict3ZELi+oj z+jqq6r+y))Hn;9DQYSw;TFX>tH2$&jOw+t;*v#8|wwF;gs@9B`B`kyA$mTWW_pOCe z$2)I5YaU#@=o4 zE46)jQ0~Wcu)QK;{k|}I^n(8-|0Blbc$;pMtUjN0c6-fB-8uut(`y6gRrX>Y5j+Te;!)#-T#PNJp#17-Jt0(J>~f7FAelFuwD z)MB+Hrdn#S7YhML@KHQ8!0JE980y^#p5JW zXh}Q(Bc7dNM}akcFkcvD@vkFZGvyfQ(%96##)J`vl*nR3!(2VCg5^tn>xzdHfdLuW zpEK^+=LVEl+$p6iIjwbtUMwm)3w*) z2z=DQmhTuCYzk?C^?7c3x^Lwj$1U~PMx%9v5Gwj5GN!-mM)_){*taA4t^Uu4Olo(b zNyVc^5<4ZPKeuqSVia+)#3=YeJP4kLha(m(wIX1oHriM0$H#vbNh{B!aZb+%Lrcb( ziGE*%DNk{PcY0o|jG?&NcC9d!?d7|eG^XGFjaE>E61ddJf0k+J;H^|G{hYrL)$i{oNhVHi}1DH57UVQ7$>a8f)RE^RzH zCt;r5Rc&YK`2mVD6sB9rHq$mzxFhXPpC#ht@!BWZETuG$c>9#2dZRL5Ixw~8>)~m? zv-9r^{E-s1W-+6R2YyCaQ|+N2pD5DkuoE+Bd{QtNN(NbxM+=y`o7E&U93^*ldFjk; z^KNdSngywjp1|@dA>sqY>OvRuC2DWcz+K&4?^@d8`sFAMGpPtK?Pu*I-sxq~SgL7L zCX*+ioP@*mrlSDa4A|6di8N<>CqBcQeZm97T!E=WcNblIv!K8vhi++2EG~G z(+;%H%4X#W3GryeEz5~iM+}n15Q8$gX2LofjQUJ3lb+D-?L`QQ8l%g%Htxmgg$=F4 z5{(%*)#%eSPxO!`DHz`pjBmojp%paP3X~vmO4rt9X+Z{xoz#}QyUwqG`AyVSye-pfDDHX7!eim1s+6%$ueJqH6QonQ`PM zC^#gbCrvO1Fa@eJYVt}H$R-LVH;*uI%GpSDc_Tgp;0(H*;zJpH% zeux;GHA%EKfRXlH0&NpW#(GKY1`c|~u$K^jsIabhW!Ez#SwQ>`5VwHtD4BB9Sfp`I zJ&|P2n#Hmbtz)04&qB9K)AVB;J$-z$3xfev&`4kf;769f4YuSUM)9ExhIW7U%HBtn$vU(KRmp5yQH0 zfSwo=Oy-Vcdjy)2n{xlu#v^!=cmTC-SCqQWDFb55Z?}=tj_%r+UOXo-3O6F!y6owh z0bkv0g;|VoB=aNjfM3j!h+4mM6;BIyoG-GeEVATcq3~IvnIyY7wmQcbp_8f`F(*gx zl=6J!j#(sw8qI0*VUQxFm`Q@+OI(ZgDJuv=T11Vvflu%RTi377Ukw-)cXW0J*$h1Y zEzc}9itiZPjZ==We1?3%jV_rbCFq10iZCUp+T_OxykVOlkKsu3DoEvx%Tl7Yx^zk< z*(6M)X;DZ^?&IP^x!}PpY2i1AgUa!a2N@~L5Bqyc-|X^N(Ll==rRLJq$CS?^3_FMCY{kGS(*;E@gFR7&-Bf! zs1?q{{59RRO?jd<;B3%0_kL&l-15dN58f#`B?>`c5<Ce=J?P~2|sAjwr z3QjBJxz}x}KE=`LG0^-r7G<_&EdowyLq|5x;$=uSZLV1*OzP~X`WDp?sRuy|-@I>S z&9@?f^TL~`p=+P(?W8D}VM4PskLDxFqk0)#?k2MvTZOn57|~Fa-1%S}AplL)tRA>^+x>Dm?4nejgF@VAQ;x|Ui3h@#M( zgY%;>mGG_RY=`J_kB<8Fpc48&VE^i^lXqLeBP|dTjN?<-3q#rk6KDIph*t7qNWMFT zK?YTiW6p#4YY2&25}m@g20&#XUrl$~EYk>WE5*SjtYAkXmCXvzUy12lZJ28O7BJM9 z|Lcsm4C&2enFPb4__peD^;BHThNGXW+`RB8s%ln-CfZ@E7b8o%num-BFpO#>`ZjTi z%r`#uPD#+3Z{m|dAcSMwb7cJPyv~uJk(h~vTd%?I#N_%EYLqNCYqSuMiF8mEU%Og2wC>YmHv)D!0aXt%Qhn3)@9QqayIMiu9_JxQRAm6 zYla;ulLIQMnVD^qJXKSowTgq|iSJZxdm0OQ5sZ7Oj*zsZc?OY#(_KT`#IV=oB7k_! zF@atZGv%ZgyLu?U!6d>f8jt}TDkz}L5G!eM;ChMHym<};cleU@Oe#4|SS^vKC3MM@$hqOpI|Q`VJYf=$ zmH@P+)O9#(cViKbFlncAj6qAA@tmd!e-EFj5P>X;%vg6HdbCZ&Kz`reQ`Ve)#`Hld zr5B^8r4^zP0-Z?#5n)>8>BM~tsY9q-#8MRwv$o+JVlliZ%IWN0M6tqy6aM0odHB9{ z*B?){OSIrK~GFnL%cYbpDS=cYcbUk#0}i>`7I6&p}CQN;Q6&_DO^dwGO&hhOidbB#q6kpEG1 z9)3ygZy3ff(eglL15bc-)I(*KqX8<8Iythmth92Lp3F>TI8hY!RHqK%%7!6Yre>wI z+^N`LG$6&qEro@M8*t$0_x}C?Kl%aR_xpXG`?_v$E+ur~qsoZ3FIf#K?80G~$8XZ~ zxz>DvkDG&R%X4KTE0b~eu{Q!?qm4oomcTiVv~_yUhHg(%It2iE2aJPT? zySK%%O7j9Zy9HkJ2(lZ|yr^y*UG`I*xlqN9!B}=MhK7d1hGe?3E5NZ#bim8dlPGin zs=%{eZ$g9`Log1L`kOB@mXo6GPeIySo;RD3VOkJJ}U?Wehxq05oHXL z>E?Y|lh(9`kPPz1K;mr~d#7=Xes|adSCUo zj~#2d`~OA1Oc(6G_Y#zXWd2&UTiDx_?nWTms5@fM7j z`a;Z0&)Ah~r}GL0iQ(bo=q0JQu`Ks+IG7F|1%jUqylXfWQF`$dz&h;;;q^+ORv>r8k!XauzirWVt$hNN-sF(ct8-1O-B{S?H|Ty5 zo3myao;pk^P*hEFxwN+rwc_g+lsk?O92d)Vb4Care21uE5IVNTCx1I<=?fOCF$AuO z;*2|(TNrlf)q4rP-kuj4{;X|kv`D%2Gulxz_TcuurpSk5pCd7~qLZar=bm*qyM{duVq&@9D2?x2y z8gGb?1bYVe|G3zXyw!Q6rZ)UYa>esY6PxeG4;fxQNP$qPwBpYIFc_cBhu-Ddx^>E%4CKV-ei&(vWn zh8{xNzgWUNQJc`*Oc{(yR!lG6nJR$x9mk(}yEpAFe&=sC2(Yz=9RVU1%* z9afhtFk53~ferla?Zv&6u)M{;fRDP=$_fNfL%O-|&VLwFfg3UCY`f50J+}i)LzF%; zBFAO|lvnGpt*>u|m-h!dL$J`sMfS(@+~_0bPpY*S+Z!9wCSx8bVoM(%Q6kwddPZhE zl#$x*OQHeToLRF%v%onyHS>t(qkr`NDXn36X0DDoahknh>0;t8Pp6Ptd#_d7IHK)- zbQuyf?B>`XIZptV&(3pE-I$J{Yc!T-Z;cIn`(tz<4{)$;#h|S(g%~YG&zZRUwpZSZ z9(~vH2Dil;up%+jFOS+UVvMRay_m^2*5b%%UO^`iLmlq#*6t0eCyoADQ4IrRr9X53VjPNX)VSc_lg2XDHeY{tv&P$WFPrN z)3&Sb>rPu1Glbwp%;Dlh)ADS+)nBiWTm%SJwhKC*ml7{SeJ#kXFxGIB_+ZJG&@VaM z@%lYcW=I{*u>I6nD;UF|WZRCHMj_&X64S5E6B5#YBVOcIt{pWwljn7{)*<|Q+q0XN zoEdkF$Q_fSQko(9h$-J`4l)fK~{x?5p#y? z`BH6$m4O;>ai?W!)gNmBlW)oZ&>jAgm%^lzEa**Be;vy`{7-mZ7YmP5k1_gRM4ll; zvEMF3sCx$|A;y-MYT9R~2YQp@nr4*!1ETdgHSU+L0QlTA0O)$@*$ROJ`6tJHlhcts z|J2k-X}rfdnR$FZ#sT`4{RkI5@(c7{`NvI$^8wI9pj`lHQMYlKr*TGbl_snF4j z6PcMjvv9p8i`L)qjk`|)ax@RAVaPh`xp3=WkOF1pGGx)Z=I;xO+e+vEg-ke#jH7iBYwm)= zrpD-DbnSpsKL^jXakcI3(lWX@C8)PZd~#OI7a~*gJ5P3Q@Xzh9Hn#lcfeG&~Pf#sF z2P@B6ejIyDn)w;Oz*uK;r5Rd#H0Q#t?U}R;eTMxnkjUv$dRAxUd#Tgv-j=)2yok*@ z%!kL=h@x+FC~>TpmET1iX|iTQp)iFuBy@dq$q$){q)N|D#gVZJBdE#ns$1I|ehz#M zuj*A+@dZNCz!B}s?a0kXXe$}Ql^{Yqof+2(Mx-W=AM}b<+Bon1!YX=WH#?>PlCTxR z-`Yeb+wc@B4uhn+LL}FZ{Q~KT%)&FsbW|ZP0NQdRWaLC%BePePm-gu9&l=|KhXqTA zdF_|XHy?TBbhLR91wp;mK%Bge`%Oag9$V~qw&i%n$^1jW^sw0tbqAF{Q1oC{=ysN2 zmm2hrKxyOQu{Z^*Ug)BYcc7z~h@K;5?NRn+vkSAsH!8kAUtjup)ypGkNzDVP?vtKH zv}RacHb3^BbHJ7w;cEL{ui#0^oQ4E z3Ph+r>8gdTQdD2oVggRhwFl=gXH9n#fTF{A{1lToj*}_gpD4xcG4~=}n?pTH8&WHCR%0JY$^rd1)1}6`v{UbSZqyLSf?ZL;L z(tqiXOD@tu>{mJr4pry-^`+F@519CK*F6z=O3uuK7m2U??RSVag^k{>zSl;Y{kmMM z688l}-e_w`+^cR(JhLyRzcHOw63Adiy=7a(v)c&F6&PBl~KP4Q2)5 zWGrHDJ@2p)<2Pdni*-j-`$z=II`CzP=|cjUg{}tHua24N!xUhO#U+s$$y9Q>xJ5PL zDW0IrsG3_QzkSNDRC%`?NolxHsRFr<*URq9T2di+h%@oCy_f+DSST8Tm>i}XeTJ9> zIX=u1Gm?00<8j(zQ);w3nxf`XVJi80iDt<@!>i}Qte0Y@Azo2Ay0qh6?_g2PYe4>q z1Bf1>TflMajx|s_c@%Ivp^T5m}amjgrNST zE{`qkJJhM3AGa?XYlx`a?I{#_7cK`X`B(>#ce6br74HTFrbIVG)+Ax@$*4j-B9Mir zMjm_#9C@nTFzn~8i+b2U9~~wb2>swZbY?oxDHl{|CtvY^y5|g#!alNBV`-_T#x*Tm z)Fk(O{P8>wcNFKq(sMeV^F>Od5P9wYp#W4rb`>?_~5&Q0*>Y0l;SMAP$H= znd}6~(Ll>WxnZ{55DO>Z3tELl9sdAs@2I&l~EeXazQ~%b=5@kf8GVZK)c=yuc4C_bA$tw=|p+2YE>>pEicy9 z$_82WrdTN=dy!zbL~y$=a|kas?L~stha1aG5o_GQS>*uoi0Le>_8J+Br{+t(mCi`q z+G4*_dzQ}(ifg`a1+!#d5|kp0ZZbti_sd=M?O1s$ox0_cjlUVY3$zjv{yliEXBjV zXm)g8-Rc{a7BqvNeKwbU+>HUmJKkW?@vFINV*Dq@UQY7Hdo0;Y!8|~AJ!%%{V74)* z-9oVN#7}A7jko-=_;Gi^tv_zYJjl#{)j&#!=&c;6{c5j#endy^)GtS5@t8A;&Pq0* zQiXaOtL5VP@as?i%P9)7{u0M?Y{^nTxoCycB8bW{wNlYu?RRWsaB$W?PF~sUi**tL zb+kcC&Et}t3hBK%(9qrEUKC@G09wkC-SAh&PH3H!-1XV(!wtLp zr@y%iKIEJH(-8mLk2<04_K@UgU8q|iZ(4M5NxGDKXxE!D_d`zcQF#pK)&n%c!`wmB zb>KC`%dIKX-}_5oIE(&WKN+{hqRPgmtb{GWV;d$CDC_*I*U$P;pFS9S?00eEz;w|} zmD%Evj@jrw)ZvQOo|HGM3<>c-nf123X>C#dsT|&Z3S|ui0HcLgE}}gex3QCTi$}kb z4BmRs+|9sS5Z~@itU1Ljd^g0*3*K2j6b7484rXS3WXpo+c|We)dxMO6eNL@lA7o2Y zmOPUw+VTZ$!-#lxFuzx$Ozx`^s5VY8ba<$83?7dK?|v(qAEpqOiDN$2a!F>=g<- z6wU&SvwXF>6mC+4rlmGDiA;;4BRz?=WKAJ4=3;&{#f&hL#4~|fqP9Ye59pb6ww^|M95-N4)H{1YlM&jmSYgs!ie%aK)Ya5iYIXT)`$|@UWt(;vEHbyPad55w!S?A_dCk-9 zBR!)H7V|v%G9sd9ahDl!haYHN?jN*~Bmp9nZJq>yz~>`>IIT(aJ2^S_k(YqD0vfF# zTz~Jq!>U`@x#gwM1(89%zNBl41EXW*pk=3z^V5;{Bo2GdR{DFapLFG(v`}ruCz_79 zA%X6VXFto&91VEUVlkcIAEhk)1wxKDZF6zFz1S%_a;7$4tvH{Wmg|MLuG2zOC%%)J zbR8Dwc+RAYkUHrC0=aM@M-zGC&Zb~)n&GZj5$7AkB@vY`{6F9ZN^tg@bKT4?o9!#} zTA5^F$~^=mO-eKG>sp~@k=sC-9}Ss%DcQfp4p;`-4@Rc2S}@|pPxAr3S^W|AJxeFY zt6#Kunl}{|{OO}NE-Q`+p+Mh-(o>3um?|%0ZhV!#LkMDMNLDedXZ0?9_LS<*?H{09 zIP5Uc;p^f+pFyl0vF8B zCchzRm!(602N1o|VDef;SkX~y!7#ROibbP=KnzzHat^~ptnu31qF3T$Ak~~p#Csc? z{!nC)yuYZwAKr@5rAuLV2p*s?U=&-t23W|zbkqxDsf{}a{L97n*EYnDTIiv4_cp4!YK&l_!9X{2cMdr^8dk5Kt8ZRzLbV?)n-@sPUoIC~-b!Ufn@LSf`?pE^p572L; zX%2?OY%f=9M&0nXC&B*Rsg6Yw((gpcm!yD00A<3&j}+D0qW7pg*4kLg=9&kQ-rBm$O_nJ z(ZDFMWVP}>>ur#W6+IIjOV72jg5mX&Kyq5xYQ|NE1sO7tFP+NCX&rI@403(!A>T~q zA!PMRk<{H7ne1+)OHS|0P2{?P;xG=ts@5wp4@^sfJeSf@Rt7*TU6M8wm%Wvb0nOs) zS}~v^AG{X<_6WRz*cIDqia`)F2zKN?;MBIl8D>1*^@cUxc5#Muz2iH zXqgUhVa3ml*j~T66{}=nO|ID3UY?a9GC-UX^|a1o0|DOc7swwAT#*rRSWS+fF3P|x z)mSiYn@u5sp_$cNgUON>I1cVuj|Mp&#m&4wRKe=vN$Noi8pCcXhYufJ*#dC;M!J~* zx2!el#S^IWOWT}VrR#vjAPY3&B21EXvNo|n;lQ=)ILCnj`)aPES0&= z4G=oai*{>3VP~^25GKRh%PLV0GGy5uMQ$vtY3~iD`pJj4BK2SnGN9re<^?-DPxj{G z1iWT<4 z*tiXGOl%epVm$nQ$Ddt}Jtj(FSo1(CUU?G$J^02`V$Yb14-O9P&L-I#W~3JK9+{Lw z%J+bc7zQQ-Gk8&e992kJo9PuVXF&i1lu9zlDygzb{JejRo=bw^MCb&WF`hUM#W@_^ zgY=(>v3G1}N=*%m8A}I}A3BTkA_o-Zt1A`tUxzp zh{)h=IOcDUSC7RFeiVO-f8iT7Rw@qMI6m;?1pCW%w_^g4F~>|bN{QvPj)}pg;YZMN zEYFP0)Nq}L7UV1gOuCQfpWmrC%{-O1{CZ09|01+2)K)bxJAqP@&(|#1EX8Y#8}Q?{nL47hz6PHz)BkSP79c(&R6`M4g7nr!;T5@_!gJZ z3+{_3gAqHm@d%&}OfNc079QMRKwTHL{6rk|Uz*jKUeS05dz(PIL|MzgTiIBPaS-Hz zRizjSlZ3Zj!r>F)LhJP7jo_kBQ#m3uf-VIN&n&#n_9sSHwDMY0d_7!dj98Ic|70s)>j+<;7Az?% z5m##GXB4qp?XM!Bw&K3HS)7AOduc1q6poWIl7K;O9LCA(P4NsC2Rz+7_Bw-`DeJ7< zO>uW^GeB}?g6Nr$+yOkva$zg(rG349JL>Itcf4P3ZPh~8Su-F)9o;>&5U#?4AFT%} zAsJYu3Sj6$@jM5RhkU&lfSre=MdZPj55z1V=n-U=!*mjs=LGz=4jDMULp$=GXW-7! z+LqGWKl7VI-%5wlIY1*5a|!A^He#EVaK&u8AK!>_7Az(k(x(QB%@|1nNG8xo6S9;V z1ba3U??voGFxR+xjnA0`dD#k+%Ghl&50;A-SFf5?L{)q2t8P$4D%nBueczMM62ooA zL>~xPaK0Q_F95!v;d!|hQ_7jolWV^&;;Od)`8}$<_2{X*>g$VLLqAAZ?83vn?(FW* z``7MyomtW4A%vmxMsc$u+2@qa3xCbU?TW43zxU{YgMY#X>BfqC!CYQ`*9e>H%#Bi@F z+i&K3{FVKhR`>Y>Muo*YbwJ-D`9sKbV_i~nu?CJ|d7#&TxE`Cyv%E3tw-arzBU2T| z-ZrNT_TM{s;#U8S^7#Jy|B4W(lL6nGA&rJl-_agY!gbYH-EdQ5F13N+*uyOGvCeJt zz%-4;HaU6CIN^A0vCrc|Gy$KVJc)=a9iKQq(cM@|HP#0xqal(todg1OGsJW*Wr~0B z?TSrsv$ca|Nr5f>TVvxHzArSyN<;|`nZ%kgU75UZizcO>*NsaP@XowXg z;H>+Q$g1aoe#bU-wgcz)^S5tP_tq4sJL(>$=Yybrk3<1n_U^A%!rKpJh;?pt0O*?>guuX(#V(>wTr7) zEO-o-{TH=Et@7%jSYEnn{YH<6rs3dnc&pGIudk(E{1cM_9iV|=J|1w5l4fPg`iFRU z=ff)hY$DST@J%lE8Rg|t6 zCZ7?QH&XV+vKpEylP#2$4cndz1P(V!YT%PLKtxuN!})YAy9+asGWd3yu0>cmJOkzQ zvbO6H^CvjL`)%B}T!p}AK-qe>@4b!pcfkZgsfR4r@2BVy2aME%Gk@>=E%@7XLsK&) zw|yLlH&hjNwp>}hJa>{oh}W0_M#N@d)Ew>rO_G&9H(asd(oPSaDNeM*?wdO(BuCLW z0X<`!Iz2=q=7YkESNA@H;2>sY549!N5lI&`}<3)B$1`JW~ZM4s=X^A zG+I4;3z3iG>yDYmLqTSl)9Lx!Rt;`F`4P;#%o+7C?iCI^P7-j2R!?6ejdFe~xqtp_ zhBFqbUSid%} zX$WMv_e3->%N4?Ob8?6zz5SsVa z?jcJI*|Ibb_jmd>nb;5`NQ}SKG`6cNZ7- zw>RazjP%^u6F8c7tZ4Gk#1+XI@AO#D?y;1s4GiPw&*<0I><(k*<-X2;lU<(edN9p1 zNUwTL1mQ{gyU1)8b*msIz)(ji&Mf*+)b*s*Dly@W-EU6`NuIwIKHeU(jzA;v%&&3! z=^8mxuA#KYJr}zuY8;s%Ddk1w#-cJvfK0VRzJ3bcAolc1h}qRz-WDVNvSjIUy!246 zXMZ`oG}+=|wS?+dxPSlC*hPis=}gwiwpct{n)RAPU+?= zGgZ)T2ZRPmA^!rsg1qy1H7sAtcmAkz1vfN?Fr*9t*hjhwc0+A){pH)ZyV2ISaiJQB1tDM% zw4~)38!`{ba-p-`-$x#Ze;8_7K7ccub~Z&`6WXKtpsD_ov+o-1I}S#)oyrF7U}i%{ z<&P9}XuqB0v0@ohdpE)I4YG@G_>@{NIxEmcy+-!IFM57&W=D=JYL|Y2id&wvo z&vvYF)6E+u=Hh>Wv~Qok{mNcZl1qFWstY6olUZb*m#u_(s`}MdN22Kdj~Ap8M&fJ` zj*qPh4eF%bn3iP|ue5RvfSN|_biY8Je!PUbt9_x#_rIpvFHrw?shEu}A3wMp?e~Tt z8vq%YmwJzpoyv#@zQCM+aAB~xBoj>UEQYAi_eaK z&gb*Ta&?04V6t&5iSx!&gEGK8c;(Db&*U4!m0P>UH{2{I*|uEJ$h zpTJ+SsmCu0E=j20gzn$FC<5XXgOo~+Al%RNfl z%|tl1?+sa@4;M6T@%hb|zoTZ)obJ&+IRha4MI9|Pha=&pZ!%(W z;5n{47bbz5J{n3FMkb6_EN*zhi&@z}8ejX@*7=`D|6%F18|?Sg<9Z{ebvFDI z?RfXq!)4o{g}`ll$|~#wBVW9n?i5v>N=;N9&!4{p=q>g|X_d*3AcpNPiLy9tsqy@~F;ab|Zwbx|z8P8`EYCV1(SE0=z0k8}7Tq@; z>~%<vM7H=w?^lI zm{9}>DwBX%fKpZ*IZ&QL7Viu@Za#t*9Y-savvtVk!qz{U^ndIbYQ~b&cCu@Oi_Y%t zoVp!U*c|>9O=d!=T7*i;pOLBF{|PHs3iYf95wkomn1r_@)oLy}r1|eY-3*<-b4XCT zY!5kN*}LcGzJx7|TZ+Y7}!*0r}5P6__Bm`M>ttcfMwVx-;_7 zP37+5szKLLZCa3Tc*)&t#MwlxNk@T&{A1C74S$HX-*A;&;n^N!WmcUs`Eo2MZ4Y1* zUl9+C&0n_wQ!9V1g+;~R$%CHDn-+F8j?7SsY<0Tm%<#E-(?_!$J{)zkrDDknr(DG1 z-JVI$=g|!_GrRyuPQ&3%^YHI?!j93?r&%_X^ig1f1`cezQ2nC1VbC)Wh%j8G?pFEx zeLXahyr-@Ah_bIQ^9PUYbAdah|$6E`K zT4D#)MQ(EYoOJ=z$xyC4iPJb;am>g@S&Pu&70S#JZ(|7C>uxavN=a5tXqKA`A06sX z+tr5lD67ittzriQt>R+74csoFrz$A z{6)Kt*ryqDK~Pk@(0MsKfT?9s)?R9upO{mm1!Fp>F;8P2_<9};AF7>5X4@DT$Wd3H zk0)tiY==! zk2e?tW&z@s=&z(`4glYC*e`s<)) ze9dxjX5@?22jhDEBTFl5y<7dCZN;{tp?8P9Lj^wG7{@xGR_4TYogP&gdlx~ig7H+bv%+!xKY1AWcDwMVL7Gz?ah z|J8W0<=ZS$QX35m(8`dFD(&~|%#N_BB2MaQ9ICDrO(J?`iWz+-2L$qRa4nmHZH2JQ zK~x+E5Jo=RR#U00uBuw1q`mDc?5tEoj#m4MHNceKJ_>PF|J{tSB7Hi;ZP+^{ZX%dj zR3o{rmm{^LxKfL|g_*gwO{b|1a$`82BRrCNeZbwcHvii4iX?Ecu9^p+E5>TshPg`M z6pol8JfDpFk?V1_@oq>D4112`4&MSSA5pGeUtE-}E?(8xoiF|iN}XLadHtRDnfKeV z?*8|0|BmnRt#0fe7$0z(PF@I_yEYTZJ?)bJ6Sw)w&r8qJ?u-jPciMjW@xq1oBN-{2 zD0=nCXfL1S5E|{-N z-88t((7h(;gx;ISxR6bjjqwy6dc{!g-s$i8_w^bM+2Lb<-WZcV@b8*=@n<2W?PgNm zee*c#=9@8?u>8W@mV!?CkE}6|%qa_>bJnk(eUR&BbUXZb;r+>lYo~L4o;Yur72;~A zO79|zm2-YyovNXob6FMntKZfTnR!j=J5J@o;JqE>iQrv!36LEI03ikx9kj#sH~Gq)rCF zc#W~HexU+ISgg7|7Te^Y5U`|{EyhgGJi23z<=|}<43G>l!}A)@PMuHy*A8 zT%}SOXdN`|_0ra~;?o+C|6f*VeIN=n$w5biSI)TrdzVzH=)Jd*dp9o9Jiti&^OB66 zvaV?^`Z{FxYH7K4Wm%ehz`-yadlG{V39k*(2P$6Q{-pdoRkTg)o9xv8_QTRbRg-r+ zmhubK6}u}&_T94d)l5OKuqU|sH9P8xmlG;c(JMjZa0zMKK_C`(Q7fy(E}FBq>wfr5=X z_WgOd8lAl(~BLynSGG&KceFXx7nn2FAWV&f7mwLg7O*?3~x9rGaj5b3Z7JK3^<- z(dspXtOX^3n72lg(3(ma_H#tZ3&5pSxg197AK2&9&DC1^%*H&aW;dzh&jfr=F!^`| z@ORq93*=R{tcL~JsPc4Gc*$PCnk@7Vv6V0$hDZQVrWM16AcnMta4Xdch(f_-03M1C`~K+i#-}p_iioCL6?lgUm1pT?r-YwDw3?*;5k2o9iU#TSGTmes z25!cj4RN}o;R~dicdJ@SuoRNB2A>Eq7U@>G04<$6ea(zI7$k2W7jPauQ}kSsZLnM2 zFjhJ?2Mn|bPpk5Cj|97=3KV5an^Pk_{|IqQ)w2OeHx36YYWCnO=^b~?LMA;%2}wd6 zeiG`UDyh`M9ubA@YDj>9cNlXW;Emp*#Ng-FrYOX9JrU!XstBKMTB zU2olf@#4@@d_qr8boA*FpWbJ!x?w}n3-5I38XT`mhYKv-hwYsHZT=YmHEOo;{=Z5V zQ53*rG#_$WM;rxMRuM?U^#;SiD=H5VCbK`h8^gU}PKgf7@;T^`b$VEE&S;~iMLrlA zE2$Hcnrj=|suRj)+k2yclP6F7dn$YVhx%xbq407ExX;9^MA`Q4gLF-zlDSp_Ou8tV zRvA*{gpF`SU$_gdeT2i|;JwUHQy?B)bnoY|MaQe6wPxuqDL>L)6B+g3_-`3l8T+W+ z25QSkRl_3x=8pdAGtGtg-3!fr`1NQ}5CR}?UjO6iTGe9Jh6-=obktvcZ7!eB;AZHVfUoN>X z6SH6e*PVU!Ny*`5jxpci%6VCN6{vg^C(lvjv51mhtVUN}=DOpO6l!mj#XbyuI3>Z# z@FawhLkKMitA&;8F4(av6Wth){~BLIN_!7!N##rh}pl{sB9#@i9=bcX#T^(LB!GocC7 zd~i~=Da0|~>To=E+`5l3@GulWtg$ll)_V204&z?flzGFp!wbV*sRg zvz{w{ z!Htk~>?4v#+Qr)WwJY%|!K_BRoT>PHSV!QHZAXy;--8NcfEh(1bdc!?mY$8!{;9eq;xgHDkAaV~=N4i3Xm-Z2#W;&c?ynf<xbhpxT!U+GR)o zxHT(mQZrdP92D>VEZ+NjopSMc`W#SGAg`F^8*ognjo4`%fN@RgFHoU<9y1i7L5CYV zEZ^nTP*#Dd1&iF3X0r+|%=8hKZ>Ex%W|O;qKalOEXI&J4T3nMTNB)a7#SSmZ=c!({ zbK0WiTEk^iCS8r?0I??%c2HmJ17$G4=&`NwtY08=wrB66W*SZ+N*GD}A;to2h(=LE zz#CSxN}>Vmd)h4;7M;k$Dp=<)#o`&1knm#NT>DsMuD6-$q`(aL35T_?1A{G?^75lb zzSF*kw800XdvkDDC11UaAlKp?$V_=21FEhJ>Ni~Y_hB!WV83bW|W(0UJCwIup$mZuf;Beky%^1sFNPqzS3s))+ zal%=)oYtXqAkxDicByz?k#;`BtN@css3n&%jSO67;a-+M@pp4W6=TNxal?4V;N+oXP69+ z3BE%n9ad&rc4-#Q!})j!jv#m|2kAxv-1-2f4wFDC zRu8cZka*xVTD8*r!o$(=C8sA&bHttxOF zzGlp0YL9(U)xkL783*lrlJGcPoht$`raVPQz?UY#A7=qTKYfKO0T6O2#(;a;yPgEe z-%7TdIL50fsw3#elPA5}5es(;RIZC4OX#s+HbBE32k3CMkc5XEr4U;+rpoJ=y9l@~ zH^V~F@;U|2@s0-n*iv2xME{x^k&ahe%A6qx@rzOWsK};E+S4=MEnYQ)&o9&@Gw#R` zSvRFq*=}Cm&)-|sxHL$~y$Rg~heU6VQ;3@~2n($44l@X9&SG(63 zfYHDo%>#M{@mLwFOXjeZ%)vyAtSI^fYhr3f$a!^i!;FZi>f6!1&5Yp5iO0L1`<^rg z0Gwf%n9+n=KG6;d0x1}MGZPXpSff1o`pZK)g+zcD&zb~GDOorYA67-?2=(-^AXFjO zMT9G_sSK{38D6G1c^~y4n?G(>c79}^7@c_V=eQjduvr8>1nfZQ@bZ9=3}_R%OC@1W zQ{*{cXnHPX5Y!SS0|KFwaHh<>Y%GL+G#Kwzp~%S@_p+bLCh`Ux3jTZPNv*88F`-hl zEUx_6Qtn^%B)Rgnq5pDT)@{>ONe)H~7dRHz zYPN3M`%;U3b+xuOJhdW9UK054#W8cq?eJ)c#6Mv?%{;ia^m=dNgYX`mi1Jk@35RZ< zWi(%Z3NN}N4ckkeKUNXrM*tl);G6!Iy}9c*4h?t&!sVD5zvWf1vZs`HFQQsiW~LX= z&)4BLPr{|!A3=y8_d0Jbd@{xM1%JvWP#7>{$a9ftx(a#+6#brBwsFw!q1rnyu(0uo z+Os@ruj3{>z2v_ihXhhYccQ(YO##G+E{|Ml~c3_cNK9m)VQ9v**C89Xd&eCY6~Tq;&$^1+{IVk}Kq`OqaPVi1 zq*~qC6JV5Ad$Rdj<;kZF5s~rDOALA-vTrS4o?)O1#D}o5=EM<~KeJxZ01zjW$qf73 z)k9VcmqQ?|NS4hrF4TJV3Td;0bn%^bZC5DJWRQJ`q~`(7Hb95T({m(~7>m{iv+@4( zWv|3)%Erp%>I>bL3#B!cO#`>Z{DDpS#cPNRJCgt=%iHnwP=)UIyYi`z2owm(@ZgRz zp$}2kIm+wrjcUk6mk@vz!_|#IWRy1(>3d4iKNv)bE^}I68WzSXyb1>+R(Y28YyGQV zO)IJf;*FyGlY~8Ovx8AN|W!*o8hr!^MVQ+7eLm9Tu{^pp7J}G!y}d)nr(>3-&(M z9I>|)i(~LDD-f@I&+J_CsToN7(KjAa?@LO^Q!s42+5`v$!X&!+K||!~f6kkKL@=#) zcwo$Oc_y~&Y~BJXP?m=(`84CZ9SV8?HDtsQv5C4 zK`U_T_mo)k$tP;xb_pf0XJmYay0N*8l-Iv&UsRy_5HQhD^vrf>Hsc=XKwGD!(|sYZ z*E;C4Bp6zQK}N=%4=kAtV7Wk|LEKYBz|t!M->8>6xEAfWlzun8Pam8J0pODyV0ABa zhnQx=+-t3Mxj$Mr8$-0sifZi+8o+>%`~c6mL}7e&4o**k`3cXdy^Jm(^H#a0!lrsg=^2 zcC)Qr@4}f3K%}Qd>A?=o`$={62KS3yj>5X{n;A0p8mfBB0X_{%4t7a=Gjaab$Yww- z0zfj%HIM)(R;0^{oc?sM)YogQd|RX{sG-|_r+m0-{DCG=tPn@;nzIn87G$_6uko-D zcSD{bR1bC-xUDcss*=G|!sp)>J|;w1WI!?Kf3Q(RGiR z)q%oqjqq5-p`b|vp0RMCP3g4J(!4sswu~^Cbag7+Kp=GQ>k{Z1aiYBi4V{G*is4lg zQRSw$b)!H`nW5*}wsfS>wl4AZe<>#)ceQRGk3(BI>`fR)Pr833m3*Nkgk8_SN-uc1 z;9=gF@FISsYCQTizY3BJbpsK+H#{)7{}dFw^r&e@Pp zKWctDdp^iP=K=TWRZm@^?jgmKke`ru-o||w{ch_;81T>iV;i-tmyiM?)|LU$Cu?5) zZE3&Lz`mCr7slcu+4c5mZ}+I?SvK2?Oke-~p(MGi`bE>z>iCJ5-O(vBnSJ9wuM1B7 zFt25<{gc>7DmP;RZ4-Z!>*C(FH*ZP&&pmAK|2R7DxTN~Ojf0qIw_#-i3)GULvf)Sr z1y|+Bf~J+71*|6NlX z{a0)L!A#Vn#2s|;`+chAb~Oebf#CpGM$Z;S`_s_(pL^BzM-^Rh{zmrqH>IgOavz4= za`A%;`6=J&@$i)P>bW09hfP7&O8RYRWSjOJQyAQg-F5!T#%ZA^d^|~?9uE}%^cgRr zw~X|Ctc-r*y4{W87Hut^!};Mo9nPSt{akf}8;hsDNmisEmUUjO^~-B$yY?2Ex8FZ_ zgDgrBrm2Rh)Aicgu&8Y=Q4Pz7Vw!D&IqUCO{SeK#3!jZ>KLxSaaB|(pIx82v5b0WJgRJNb@zM+e?6D?U--e)pYM^-skc6BGYc;-#_Ct zmTKWp#VW&3N-qzv+_RrIw9l6w z*O2l`-i6hxF*kC0b(lF@Rt~-P(cCn1BkS##AfJC;r)RuxBNs66eEKKbqe>(o=o8vSSUgC~)AuyniwM%mL^7 zHQd8i2>3{48ujFr=<}B@7OwAR_QsH+5i!l*nvi#}dCuL7O~0G&tsFn7zuTz)*mmQx zQ`_U&_kThw49mp`?+zG%dHoKOH#Uw3eOj6xVrzD4`{c~864mwP856ILM7aD&oY4ZuQlEk zy%2x7vmlu2ymH}uhtB)U3rg3R@0p4KmTU#ENoc06TwMeZ>!%kJ{y1yw`n9&> zirDZg4fmzfD`hLn1H?G%_x7_V`XF>yxaZQ)jOp6?xtXFr*E@;}R~cRG8`rw#^ZMeQ zvEHOvfp)US!5SCU>*X&$Z4ukqt3PZ$+W38kq$pB1$lBm>K;GnNa?^Z?>;0~L!+)OK z>UnF{HDH`^z}{7okzV93IsUn6`fR}cd&BlfH+#{Z&QoS*lPoYO+NvE$GcbH_BYDPs zGUn+%+ zvUIs+$Xeb|XIeDw9pZUplCD5;baX0lu3o6fEw~i9WSY~7UziM(n;K>ZTNlz3E2ydI zDAjamY^dNBl`k;*?z+~O*RpFy;~=5`-J*l`VH5Qvf*xfv47`rC@^oydO6{@i+KxZ7 z6Vn!#p2wG5OkiR+w0l8XuRS)-&P~&*)OvjF+OEu?q~co9osGvllGGH1WEiHG@arPw zsR83=li$PoGOk0F-67wVf#sDhqww^5Xv&?ofjr&3w^d(peFc7<6SA^fz%pTS+55!h zj81wj>ccG|n}{x2117b1X*WxSp~T*t7V5-*e=aFX=WblnZ}~@qOhlv(;b5^vYo7~N zRvX*bL<>>o1^HUz&XhsQc-`96Lfv1`EclWg#I<5L#!DIOh!75`uW6z-^I&X$Hm3uU1v za+a)Q8Y+4rlxf4q<1Ls_vzk^AL#+m*WdVL$?KX9CF&f0ka60Lnx9sjb)b7`4CBU{2 zC?GrrjpIuvlWEVDGB8N<5@4{v4>SJ(XTt#E2O<)o25<)Ye2o{rc@0{CV1p!wR zQWKc1@=(0Vg}@*lEt?RO=<7`*{)v91>n@*NNpd~b_~^F0B6C0-kSUcIJEIEsQrR%QAJLeaI&G%VV3foycG?d3IlHXKn9Ji-#nT5ph+>25H99b zsmP@G58qO}^hJdzh6N&!1jI=AsR`%y@qwCjI1WVOxS98iGh{7Ok!}mKPFIQphPlI$ z*+pJ5iZ8HCZi`8OVdh2#x2f77AW1z_efg%d28R308i?GXn)%VlxyOkNwKr`O#1be9 z!VcmhY&?bLFF~t-z3m@K}Uuzz2p6XrH~rtqF|{38H+%20wZT8A74cmxJLtDAXQZI z3p>9zd*Dx?{)uNloAsa!h~O9 z!O^6HcIGB6CJalsFht9ZPLAXQ?`n=;&e#rxznXb;(7|y}jgIO!Yc(tjBq~wTXW)K2 zB4WVYtZ9C1j z44Fu@EiNPC-=0uhxBN~eXwG(vdUeuqq+mMhjJY^{NwB#jTokY7&oWOG`YaIVFGn@0 z$UrZu4n0#m3*EW%@b}6`S7R+)Bp%T&!NZ?RL)ZTW-9kssu4W(3@T!*mn4d-Exz+#t z3o5U7ZNm&YjM!ZXRT^KkwV3Z)R$4=2V zrB3uXX?=Z_E%z;{Upm}yiIbU?TIgI~eC}wq1HG=;1b^zfEoxe2tOi7vwg|*6m@z}P zp*ocol+2wG!2g0!q2lk228KDLmT(r4n2#?P@7#h40~m}ko1+_Q-nH-d^N7HCQ)d|6 zqxc|BLGdod`T5rI#A^oOQ%O)h%*$6vK=n+FuGJj)ARh0^uGpxig9DNQ45($>D6#lV z!^o=fKyatC_rTh=TF0MDJUy(zAL3VnU7;FqY-F?`Kb5fBQ== z?hErT_E`+RTVkgJDFEs;*s*8Mz$X+TFu9F5Xm`pSZ)3c4Hk}-2^N9(9@q z<<=Iw`MtwI`!pT@nKAY*Gup}ByK?e| zUWtjSpj$Kdhc`7k;tNJ065O#Fq^R|2+H7SO4Ek6?k!ow|16L@1327oNxW@sq4(OGc z)HTX={I|i zeYtO!1UvA}BPd|Lpb9~Z0~!kmmHoh$WA z_yE!9W=AJoBcI?Zfamf_Ye#tB@8GUPqpmE?LBh3*rf?D+{9knm6f@qzyWii(@zJrw z`KgzxmTdn39kmo9)H~FF2&DP)mYo&*4-|RREHDemnALEZfcY_Kda!rKD-#}@XESE0RV0E%8Z~&YMBTm zTnfn+aeIJ88vHB9Z96h#*xp&mgDiZG6L=JxI0JtN76Hl&@tiuXKnM>NDh zOFI{x3T&Co_%`Sy%Qj98APLvembMCKzQ}#5iY^rwFOA)J>3ySWY`#)j?lUbOZ=feI zh%Ugz7^~k;7h&0k&5C^CTSEy`1C!Th(dG$FpLBVFFp<$ zjR4w&jE^8?q&%U+8xB;VL7td(@qB8+kJ)gIWD4unn`vySxeY$PQ`(q7N5 z$o)zIiX&5fXyCT|c3SE6?a}qed_qo_*Jy$Ts7(xW)zo+uZLQVJr)ETLRRmqrc3uNr zU=;yS9GNBXAoi6Hsc{`)C}1sy2*WXMG3OYc;P~={Btj4q&JSU-Ko_`Wexrb@ElTbe zWd;0h2HZGSE?k)B@P)1 zQfeK=uuX2f4?~bYH7N=~p>e5Hz6=$@L1Wi}`5U^MabUVvd_T>CMX*-pXpdz0tgYMo z>(nGlc8XKxy0y5;zwlOR#m&LJ!>{g150N2PNOeZS-lhl-`6_4P*zcRxq1zgU8WD29lVOn@kph(71Iy?_`~$SHu2 z;)}ip$864>RQ*j+W4*v~kPjgE2dAX=hpe%k(H;an0_A_uI1Ezlc!z47O^$5shW}v` zqX2Z%8QyqP#)Zp!&0N$INpU$NN)dqZR~pT+fX5}Y@&$bw5CC!BuFhCrq|^*(=VATA zjSaxHijOOZOTo$}6H?iRNj4Y=!~CrBNktK+b>+QbADnF+WgTUL+l8Z}^*8w@&Z(Dt+gOhm^F&Pfj=>htJsb(aJ1qXRHVGE5HTB0mLnre+UxL_TOsN@#Y zJLhU#8&KBu)z=!52P2vW~uvI#Z)c8fj7<~`Ws4Kc=8aiCOwo|G!d`nqF_;|%!YxP z_?Y7fv6jv7HY@<;gPsmqQ|BrIv@PBn7IOJ9sh0tEf0}SgtG#T-9w~9ewE9Wv%ITd zkT>1}oe%8jC2>4O0T+$U!r%0ig^QUYBpDz5934kh&kPiLYM94ChDuZ* zAhP}st;_wX%?F@3$^sm#!H2D=hQ7$2ET_0Ti*vbd^Fz_OD$Om}QL>G{B?eghq5xBG z!sB}YwHAQ#kHTz_7W|NAR*mq&GX@|aK0pGb-YN$Tz?>HxT;@aso0OVE95JQPUWdGh z&eFZvR9wuBY4!TIgRcPPzYhByIWroe6^4ELt$&6EpCB!HMaJmqZ7{KJW1VB@kpbAd zNGFaP8^nXZEg_;uRYvuoL5yg+AhqKI$Z2e-vk8{N-JK-UWvk%AS}1(YRU&EhHkAr6 z06dJ zLJ$W;I}p(zElVD%>&ZYs*&th9uiF*(houFgAX zm~ZNs9+pk8g!C1>7d(Ex*otY!F~a4A*eP*xJelI(3FVkD_`6MhHepXAWAljkoBTss$3lHCVsd5fKoY`9>mv zY}f{@Dq=TvYhJxZip3(lqxSXQdK!9F7&F2Fg2Obv*RLQWA z(o=+NJ27ptV-}=M6TA`ew1wSH`JHK*enq3{851SxIi^*oOVh?I`LPD%2mym&4X_go zOaulIbTScI(<}_;O9ix5BDDB4{fJAB+jDeN6&AksG~WW#1{l&+1-u{AcxCDM$yM`$ z#XAqK=S$jdXO^GheAf--dXsyiZIECIiD5vr0^l_Z$nd=%!~UF1?43Ygy70}9tpbhL zZxe>`5vvx^PU=Si9Tv_8`WAta)DT2WnQkVp`21|I#fzj%HO;M>*%lfYykQb%xr1BY zARia!FR!^iH>h{%`gyCWYII2EGZABCK7Cf}9#4KhC-TjezOS>+k5D&gc;Ty*&;RCX zBlB#&DJjq)yrtoptrh9j85`|2?6wMF@AT{xC2*Z&IzO?V>Y2IL6LXVzFMSQgJ;G1v zur0GOh`kW^aowSKWBp6L3LCf7;9|qqt~dD{>1hFgK~7aK-`+~!th_Bkn7kR8>u;ao zt4=*2!C)>8$4j=#unv2T_SYS9^10lw8Mu8+`E47IY)H)F1QOm|b;@emecNtoUypAJ z(I&6YZ^$)yDKXgjQ1v=%*jg>y0z!)zv(+huYrOkISPSZA*!T))v0%okK0VOqMN=7L z@XGF_Ey2D9WlsaF`DzUbKjxZo36H;|t0)n;$sGa+g5q6Z#WL&0N8M;_Cvx10oZ1E`R3Q$x$OFu|&g3J49xd~z>4me=ZJ(8HT{S$XL z6fe&T~vp~oQ5qHKj)_5if5VRp#E@XfTkHxKb5ce2G-D%j_B)jHNRB$+D zm^gUGDCAdH&^ZBj=qYxh4~j4ly5wxRdNS~cJ9|vc4Hmg+lxz(>;Q)tY zS|&V8z&IcxH%%nq&+L^LrYNaFfkqT?=McPMEj+-T_leT%s_(O|+f(K=B-}*#V&*p0 z*fuy7I*`g0k&hizQ4EIE@KbC&uo{{V0QFs^0~B+Jk0?eOIz_$fP!Y6h(&H93f^MzgXoO%9E^W1=OZ=WQ7qp6V-mfJ)^ymX7x&c zFsB)B?Z&BV+G@TK7RqDOK>||>AWHxOP&ihcoI+Lt>WgnjtX^vxSOYl+J_!Kg_Ir6y zcPMt7>!Sl+LeOxwg@iK4wz>1TYiD&{cHLNpeXvi{ihM3r0!7^*-p(vx6 zX+W1!5OeKw?6F`_Yy`Ze-$Rw5&kjnRgDDw((xVzMYR-}`D)n3T2d)Q>;_ubY{j~V> zUa=G{5#4lqt)7rVbOZG8;QOr*cg2^wt^T$caG=UkdE7$WS-qYXFno8z&9U^v>+;a$ zs-c(cyzle1E{$I)MW_mU*CT`M-r$Cak#)xYB1O^-s_T`hc&c40zawNGOy-L9GO47nprV)e+~Jo_)tYR|K{%m(&gCp z*ng4}(ooZ;e&SSW_?40a@Y6<@Po3eFuG_kSe(NiHzNtRa$a~7C^!NlO5@K}enrQ0| z(v$hH%3<@c!M=-)cG8B5Rg=Y&1(mckue+XJ`ulOJu{CWMe#AmgtBMf8k~;xpvzGRH zNC12?(XFvTpQA(lQ@rS7za!+S#{sG~M5js#JH^s4cM`4ygw0~m+Fn$^k`w`w@`GD! zG)9_CvdGz!xedU~FSKVUX#CHVncusT28Zm#XDcVQo|E>1wak==hvH#S-?`*wK0geS zkl8QUV+}U7)eZzpCs;cz*v|c%T<6QbP15&caXED`GJ!ap81Toao&6%k=7nnbQXPo( z#+1A>l@Wp4A|0Oob+c8OiY!w4(ETc>h3OxK`8{y&Jy}P zQ!Ieiz;TAIi7S>M=mPXR%-mnk4?TPO*4w%2aJb=>bzPhVbTOb$Esr`cmRyAN*;)WLbrh5osj;O7^<(fU1{@1IY{yb#b#XO9u zUwEcqK(=jbV^swboEmi(Us;_r)o#9&^rqKzCS9>y2n>&6oq1dHwuUx@{&e@NSZmt6 z_t%+Xlc6$h*sQ%DWiY;Uoh_etFgw@r=h>OP7o~ml_x=qgLSq9An(nb5;Zat7oGFSWlM-0OtbT+LL}Cz& zZ_BZBaNG$!xH&om&O*?WK0%U{`Ba{+G1X!T=$CAuQT&^m1?aeR7EYj@F2!!kykcB; zNLt02`!H8dEs>4<4CyHfTdS60QZ?F^EcyOOU@&{oM1TY%LeP&Nz0w(BgV>Zb9c~gp zW`c~%*+r}ibwzsS0) z;o!n(qbp_1+sD*xAj>u8429l(p>-6*UtkBtW7+tizF4Ku8YMWo;JorUZAFAGF_pEo zobk)r-i}O2s7S&fBfW1*MX5}-<+p&FUs<554*~1EW>BmiF#izAwiNrBJI{|Vq)VPU zcgYW5swyHpDmI#3rgj3~KrqmU0ih5Aog5aHrSQ(0%?cfO?R5_dJoF(z)*mIOdV-wo z9R}#@K&o_AF9wjCK&4Qq3(PN9Xg%^IOU(aRG}Cz2>1ie4?E5-%YEiaUw_{IK-x7Y? z*M+j^x{@cq-UeVbJgfBr}%~I3(vZUG$>OMI4Y{Z|(-Lm3f|L{d(|5 zyvWJofvLRChS0Ko_3zn#ETyf;Mt^-y6>y11UT^^Fqqo==Z91SNJrlK$h74sE;sRPb zbJIs%C7f)~AI>9PLdlZC?k1`$BT7?dxw_ z5w9FwaGVOu&+g@hwm-sp#@YhG^A>#`O)c6M+s21DrSq!{OoZtg;%3&ewx$J|3wi%i z@k~mnX1bEAE%^E0CqLvsX=CpZ z-5BQJ)al#%kN%pNc(=d}`?-`iM7~(zSHzVh{?TNN5=Vk2Ocd%d71f(w%ywM0S%&~P zXWjv`L?_*ji?4otL{8M%w-2wH8|I|Dw`;AyqTL5(SL%J%Uf&VKjUEp)rJ2l4fW|=D zJ6ya`q5>BI!*ZNX3Be#Ej&{PuEC?J)v(y1(;CwlsbRK4y-7^}lsP);4Rx1#5w=NRh z$J_H(UDs?Tx7{*5x*)E*9eI)f_RKJ4Q9c%$p@h*kSRLsv^Vl0VE+{r1ocZ5 zscXBb0Mad#7@hZHL};zV8X$V8 zx%k{i<$Qwj^7X|mK{7kgqC4v^sF=Zm#A0NuTG6i$C8RbEFk31KqRLuPB53tN=^08u zuK363{qYz)Fjx1BJT@e}USnE2X4vnEnq!crTE`jTTQx!2BK$*fPV@tYo?+sP@25n` zQz=0l4TLv68nGapJI63=MIllsA#LLf8{~sPfT(zMDb+O?fG-t|W#ku&e~kS**%V-0 z;pjensNmUi87>&zgaA_oC593`{T4OLBomt2`@bM>ly}aj7b6)EV0o{(h~iVdY1n!6 zxE;+3nDZ31wo0N5#~B}Ge^Q+N84C`bxBN@XxEC9*yAJv77|rhLZR(nz-Cm$YsF7;t z5Yz}KcWEwa$83xF1YARuNXRMEP$uUa7LZU$AOL$?t+0T+wLBJjM*-N&M^RKgq9O{y z#)}$&X@6bg6W62m(Nh+kw|ow{T&nMLoe!N|(%dHZvcVgTp_%h3B+5?)4K*8Zz(d9RS(5Op^g|oiN_)yz-YAr<{tlk4H5ctXg|^Enn@A`}}`18ntyZii0=zj?K=W(3Tw7asKiL)cbX$;W*~` z*Iwl444nr?c1AySeFuw={pv+=%g5h3@J0;fCC0a2zqAgsE2=fSTr`kh(&y;-Yv3?X z=>EvRkyq?iD_ZzwIBGz&xU9O3?+L*O6h821CYrUtb_Sp=7*JA|xRN}B0nT1)H%EUZ z(-aUu{Vdg5tD@NuPcsNXIqkeRAR4Jp92Vfb&>$~KoQag&K?J~qiDzU^eN|1-uX9I1 z0w`b{Z6tu3`4Ac6aiFg^q!5CKjx!o-F)J#sA#hNr06jYvb8tD(vH*s+6eo^_Luy)x zJRQ*E_V!5kkj`y^-`fJoh`#>`UpGttXpaqhACSj{`5?@fY|lYqjX_RJ!{v98N0 z-~BO0dFuK0;hUfvV1p~30rWdBB&|Ahg-`KJkLazp5?0N4jcBWI&dz3hV$8G=P~WE`~IwuLUynA1W_s4&7ms!@{gt#kb~ zJDUsw^*chCohoCPni#H(tXX z{z?WaW-D_X9IQajKfe`F+f*5jS+HEx$A6H<&brE$>tkHy)T@gkZ8;-W#wzt?eC+V> zm{t+|&pFxX?*3Be<=Bk_7TRQ!)fm`kQoIS!$A(yp5`yT#(iT199U5ck6!8)_f2~Qs zz*}6EGd*C;BSF6r8^agISz0_ehoaxgwmF`VxK?EYh$w3W5BPkB0T^#O8~q%LqcI-f z_C`N2Pc%2i=yWVhm}Fu-d!pK+P46wN;QgzrIGh!ZIAd+YM4}mHCg?AS`#qCN_dL*p z86_fZ;Y-#w8f&6=7oX_5B`NsRd?^te)t!3yh@z7Tfg-$$b)Pr=Ke@*X;e3enSS}?=dJU=#(zJzuCdO2 zO+{{PSz>q3VX$iVBtGWJ-poG2TlwJpncG76id-g00Wvx+ajZqt9A9sw34rwEDQf1* zJxu*0AZVO7gbv~6>jNKBumxnxm*UMnYDPc%3xYlWV=rqgUgdG8@y@2>#r315d6`4* zW>bV$Q4_H2I(eAc$3T;4$m1l{xj1fLfrqJws6*}zi9L*g;8~?e&}18$TZ+V_D(2kb zAI6Hf)6JvM0s>KYVmUu2M#^zaXYj6=DhUBx~DrtX!D z_Bp?!zs46S4N<3vnwA2_%G{!Av?n7nA@0id9|zwYk7d#t{50N_{o@hX(28tB0hM)po7Oa9-{mm;w25>qsJRzUfa;{CfDT2a zdL0UDat#Z$^UrD;@^3sDSCj4r!-)FO8oD%sEerBe2a`7lp$O=H=mK9xcss07^kOfF z701S6e5HtK@-Z(>Jp)PtqAi9^<3s8#fIF~-x?MbgOo2*@a7pP?5sDXh1G#YU;$jj?ml{MV6^t2~cHW2}R z*@h>7f~r9=dt%4H+L{rqF2NiPemn&r0Z&y84KK_u|F`K@?>yH#e?AhhGi?t1X3Iju znR_1csUWp$N?;6Mf@$82qAB;XVk1FVESkRAkoSVqE`6)~$!mtLX>&GQ2b2=AhpZyw z94&z3iHP{_QQKC25M5Om4aMRnn!YZqRn|-$_Su{Hb9SnCtw|`Y{Uw(7S4ocP_rBP8 z+z*Q`vAY)Y5G-Yr+zMVUzTWUWLs9cN2c6uyQic)FK^{*>F}-F@~g$?Ki));Xoe})7?jp$ zO*07?M6;ExZvXuIzqPsQH%N*%N)9Z1KHx5d0=9*(tEpvU6-}Ix8~k5&T_!$bksEd3 zZYE(9fFyMq5rPtQS;mvqtn^@Nrvm{rFl=>PfpzJAu+?QRpw?Ln5*3OtE8(JS=6LMI zRRKf4m5GnQc_v8Bo^tCOCgfE-`v{77QDQULI2mK$0lbEKBd9a?+C=6qsv-QDG%Sur zM5jQbBScsxE4m`?LG+@SvB*02W9=?2H@8-mGQ*C*;~Q3Or9#n`rR|(E^0BI_qN+lP z%2ZzEWaATe^Igo1CPAsRRTT^$(&3F0$}k!QAU!P7ByJq|AN5lRz~9FP1i+!jvp}>2 zfWEtER`WYtxRJ!vU~;OgfyEwnMeWMD#%gYnkAHhqwA+cHB0yZ~G*9^2x0c;&^)`<8 z60s?1Krhk@)&Lxo8C#-V)Z9MGMboP{wUVF(NPNs2VI=pyk{%fk#@FcdX?so!Rex0t z`VTBen>@_~f}A||P$%Ps2{5xU5e7yK^kIZvfEJo{dI30)9h~7YKHvZs6kS17qluIQCrFI03vv!pc@KHpk3$djB zSZteQJJc-OR#Aq7jj|H+?F1#jbf3^Y$-`>w05;}boVOD#B@2@c*?&P>KGxly%1=;k zQHIuHp^0~r)QF!w@eyx!QiXAC^L*7Po1pG6|M0>-Ji!E+i=6-xS8mXJveL;DpEYZA zaA6vPMr-2ol?hAi*q+djLrXpj`r|(jXHCsf)*ADIn%M@>K)h*k8yt&mU0HlPIYn1< z51OKC5>Zs|Cd_-jbXR#QgDwv?zW^|rZJh4T;sFCD3&X}BV@gaw8??LHONR26gPQ`Z zUgrXlj(MFF5|@#Soa2^SUKDE2LJ4%yp){b_ko^$h%{Xie^mFlm9|SL-n;LI6B3S5= zXm_V!`YkY9mbvB9kL{99Szp)C+oh+&zSKD&v(Pq14g|>-q;CzX^X&kdH}JP1ssfBW zjs7((mpK5SF`fVl0#DxGPFM3z-11xAk0GG))qYtM72Tm# zi8eo_VbyMJ?zLAs$Uz)}vY^zn52wm!n2x-y6JaJhyi-iQ7|MLWCyd*8VB(pE4nQnm zj#@&KOgD9V2ocG@UKhkkR1gf9op6q0$>pI_PlQzVP1O5VEH^s2*BshW=DJNRbCM1D z9q|j@UpE^>PZ*D569Pfl31ElYycLW=(@aUDP`H2=Bx@ddX9@9MinN? zv-TyEaz2M5L``m#S+$zt4V2(UPE{2Ua6huB;|w`~m5_jUFS8n{?r6k!Yofm%8EPJh z<)CpP!c+!K$Bl*L=}-@2QX=_*9ZmF1>l#J%vfJ1ZL9;b zDZ7_%eUr$S)`<4O<#U}q0O1dcjt^o)83Ol_HO-FytRq;yb8J26>727lcxBm}9R!$d z3jrF9)rPRNJ)x3+KWS*ZQDxD+R8xSbKiw;tX2>~BO`yhiwZ9lTk?AONeOHoI-x=ZT zdh}5F0_Sv6_>_ExrA^9dV~{7c^h7jL4J5fjy#;{MAtnJ!Ha9Lg=e!Mp5D1O7K)*z` zwfb7zfX4Tc=E#nPD|iebW;n&)c!?)%bmuLp7t6{U$G!9GMsv>WTs>o*0huE4bYclG z3keiRt>|Fhc;&?1*9Ju<1+j3dRTc;;O$A9XbQ8{o1tlc30jqV-VRY$*6ztgT*VRa8 zbm?CZpqk{kSsTY%jK>jxTd-`*wbXB-4sTrTH8tQWUD|Pf98!vtu`${RV9Nl_IZL#- zU6HZx>!n)7jS)KuD&_!uetCu-`tE+s)%p=g0XoM;s(~a-c*oHN$>$`>iuZ+@tM66B zv}dZv_q7SH*B|-h-}e{9XrJ8@kr@?i@0i;&>CcI*Z%heN^&jB;=*y$}ydQijf`6mwa+5#swnk|BnCfB09wrPu^#Xe5 zBZn1Iy7}G*1MSR{tB-x%0?>@d_#zy8fX<7$$kmLPdeVol?#3r<|`6^6=CnU+X8A|WCKTMed*U_m_6CNIXO^T+8 z+=16;?<$T0W@B1X4*Ftd<@|VAXy;gZ3Gb)$N5Zn+o7N2U42$?tpXK%u+@bmW%}yd+ zAM1eEgV~zpf@X%Wz;MmS(jSTiqBzt|iBDz7MQmTUjD160mCATNYA4?>P~5EF5l{Nz z!R59!Y#kiy?TN|w25c|t@E0hRQR!2}@#7nNTojmxmDzj~a56m<$6yLKT3hbU?Bbb{ zci-WwPO_u@A7}^@-9B|>4h@=Y2BQ-_0h?T_n3ZqnnDpjcvrY$v?xk6a@SK5blg>|$ zNX3zruck`ReBUhv_S=majy&%Yx$i1rx3f>0Vuf$?wD}Q)_v*W-sGZo>ws&F&kI*u` zRtPF6Dd=YmE6Eh%_CVhOstx++J#tVXzE;f97*(@w2Lk*Ps(l&GlRrB>6M=SC8 zX;&7UL$Fps0fiL96#c%JqJ-$ovh=42o~a6ZK57aVdl%88jSYGSReV>^|dJ<}`RJ6PmUTs}Emk}<|kX>XoA2@0(- zASJzh2wD$9Nc>qESDRf@>@?asiXFZo`(yP~(1nTu`V0d)6ZwW|_W1DKvzurAb{dfN z{)q$N&*q;A21=%fBG8YGE`NFtgAKy^RRv@b$Sahu1Oi~BIz4Y+t`B{D+x}AIp2#C- zK4w)r7Jk=YlNWunQ%^Y+8RZQuT^P6$>}?(yTBE%Vq62{@&_kzMjt8SaA5+xcuP84P zLuQVD=`snYw)-!ri2ST<(%|7ZtE)#r?|=)+NJ(Nu|PXDhivn;+q4|`Ap53$uB|@Ry*R+V_bY8;_?5%Y#@=JI zgKP7S_b$J?gdq;nCfz1`T6p#2mBmpZv#Y|@Cr#I*ApdD<{c=DafDfGCOWu9)+GijZ zgbTdP7rk$T%x5qe|5W~(e0k#G-j1`Dpmn`^`g8cdvSIpr11=YDE8GwAqg&2j6lh*danjY*-Q#z#B&~w7K(svEt7}hw5o-n9zsuvKQl!c##)v!NM4Vj8(7i0N)lKH5=!QJBGHXgM7M_ee=8ayZ-vFUWk;Vl2!_VKfFxND5@$To`7lyH?c@3a za_-mAU3NOL1~6k$iCR0`;D2Sa&N7&QKI=?{^m|2tT3vucAY`k9EbZDgu;PA{kVc8M z)%Z_@IIO}1%^q+GZJb=HEUxftFbXKC9#}sgwRzdpbaD}YwC_yt2LaFB9$lORycEVnZG8}+1UjovpZrsut2B~c)leEe z8R6_RK&kJ(wBu}Q9icZMI_pqr(b~Ic&pTHeuN=AYZ>z)RvZt!xOQsi*%yc|N>zU+} zAMG|&7@At?B{xDnLdu*5eipC(!674eY)rw=+@2K;Fg_p$4-+|pO_XRgi z2?~=3)_chjDY!w_*$vc2WgxsEfdA7Xr~z61`$^|MTUlqU@PhE(F>fFLI@f~e)jPjN zv&@d|yukRFmQ|TuLVulVcQiZY)}G3ye-2*xsI|3&wXepLI-!_aeGn|z`E0W>KMk=B zmHxbOqqF;P?xW;Z_vaTh5R6N;x~;0)NgHVOv?zO<*^vXbpkoID!Qh9>H5-0D0`!)c z^WVQj9(fSFh?>m^Xir-@ZanmyjKNW3UnCjlWNEZP^DaKU1Z-c_hkmu;CksmC^y$}m zsEPDK-|Q~ViQXnh?;BmkIh%%7)^{lf-EO?;xnP`jfD~&Gwyqzd0M*eM{+bm2NI}p6CNLEgquB^W|01qUknIGQbp@6+{(6t-Nm^VsW!6L7(Dm%`LC$3KiG8y&I*u z63&b*$&K&KiRNBy3dHHmSG<(fJRX@OEt9PmlJy93#qo)jN)NL%9x`4_*^g2=Jz3G`F< z-&sv3b&o|ID__ZQO`C{5R1z!DZXsKPdo4Ne4aspV$a@GaycmNs>n}P1=yxCz&37uy zPhJbIxg_)8P3}cJ_p-HE_9r9e$L5h|H-y1M!9DOTum#c zs-4Fg-P1OQhdkYPf>jNLFtTFd{;~4?d~fQL2BnMVztJbL@Ybb^GLWiV2x)89fSZ?Z zjQ(um`*!X6m;bIq;&b+Cek#BI#Q%8ZL&%7)pIO8ofHzu)H&Yod`3{xAp+Cd~H%7bovj!Pf5W%iTC2n1V9i)ms8RnWbfD9A~0 zs(v6DzT5Zp>)oXYCHb#;kC*=SyY&R5j66`&Bm= zljCZ{s~;mpxs@8X=ek~?WuG5$uI{tHyhPx9D)~lzbJ_b~C@|st?4bZe=iui}=DtK~ z-MzDUq09k>}%4KZrxsW7O`fyZ>8Y@VePjV|@*l!v@Y82`Syz z1tToDy#4nS6M10Jc89IT{b85Q08bDz`eOtcK!!wHv3 ziYcdZsRRX=np`Te-O^l2%ghyU#SL|;nTAj?t-m4KWSW`M;%;s&fLUOnqM}KGA#S*U z3oi3M@7F%`!Gq)ZJF`CD|Gu-JuAdJ!&&U)bug6L*@0oo5b#q!dZS@K(09ERnx`M_+3;^_^}@@3P!8Q9J^Sa{r`-t zbmjCydZWb~<9t^EF`ci+^#zz)oODB)BOl^$$rwBAQY(SPwU*qHB%2jO6e4C2-NL2B zkhhX3Tw)K2{5~x^jN62aUJa?t_G;YPFrLir%r=%jny>^(9fwQN_W8p`e?wNFh6p~a zW2FhSmZTU2Cn07ui-X~D64FSU%nZ>;llv96Nb;Z|C{ZXqz??(1rLH`TQIn(Wy^;NG zwmPrJkA14(vZ}@8yTDgcYF|LW*Gr8YwMmrZC??zqJ4^;{yG05uGU4>9NIeD5P|Zn! z(vzEytsU5R*Gu$u_BACwrQqpf!%-#OnnqLO3KA0n8l6Ai?6)3lMnE>T3QA7Gj}-MP;Sk)0v8_s#)XYeSGS6 zPfSa$<*9jsAH;onvLLnx;eC(@)K8F+ght>rEV!h_PY4pfFrAvfV(uenXmi>iT!S5P zII(CPlJ{gxSs_vhUpDS6XNbIGhWlQhADy25?WKTV-LVNQa8hY-3e|C(SDa1@z+fe^ zYxTzN0XwnrlXZf*h5WlJKm#RLYHBrlx7(q)e4*0G_TB ziFx)*_Jc8b3|AMlAXrXjw7`sa2d|8ZDz>B94dUw($&JmOzJJ!S=uJC~T*v$D~3NAunPAblZT zi-fWRTB&_Y5FOWRrdpy~y2rP)?5$NBMzGs{Z9hhGS5@a9a38N&?rL_p{bNsgecSc^ zM}!scO4et51$(luyK@1Gy@oE`o8E?ZskXp?>tt!^{d8KiaX)#)R}l z2A~3j*d@-MKwoDk9-uU;Wpqm+tI^uGJ($wi7&G0hF3-sE9O}A=sv1yrcPH!{t$DbM zw>DjzJx{mfTW9!@J4t1&Jcs>ij1-2)XZ-M3{b$f4Gbjp-AcJOxDarTL+G!LZYfw^c zgCIflriG`8r8Q5!wK z4BnW77Iye5hd*sTryW1+f;E4STa8N7`^|OOHK3JuaNeiLWd1=PLr41~SSTA{z`TtO zkv3D7dzT+dVG?zF%yi8LDm2vnlinV<9!Uzx+&%)QfV1<=V**6RAb5wrgtJf5m+~AUAyq4BeN z#XuSXA$Lw?l$=aX{V;tdtZ(X{MrFu{(0a9^sWEQ>+dO#wi(PlYas1AIDSab*2KLQ* z1+(0Izn-xX}Y@DqIu3H@ib_ z22-@4OCm0b?2fhV^`>}#@dZ<_Pko1~W`$)c&&96#s16!39n{lU{r^GseM_&7E6z@z zr}x6LShm?2r-Zn(53QL&#d_#k0VKeTotWZvGTr15S-7AtiF*pbo_r@d)mg`)Z-EhNn9FT=*pvMAALw z|3UQsy6@n@Q)A>pyk@1!NMX7g4=*sc7>uQADP&UIFu%?m$C{#LC5-^05 z)+v|WmNHHiTzYEAAsCpILRkqj!WuRt@a!Gn&It;SM+PB@^j%* zlZs1iB07xFqvFR&h+LBgMLEqLs7!I=n;cbh!|RBlSDr%Ak(|!WVOXRDY-A@RA+y?1 zBT44B-*`O4O3@}ljMS)2qnQ~T{IwOg(N;691GW~eQYaYsz57(AS(;ih5;&Z5}PbECpRJ{80^H|*@kasM6hHo9{91;wgEZ^Qp-dOX- z>Q|b@Wg5#iYnUuDUU?ujX0+sBxMu0XG$OYGY|-*(vW|z|`AYq0$swi>8Y0>dQbUxn z)ls|JKDY6TJaO3a{)%O%CEG(q`I!RDY>Gtm1jZdOv&t|z_A7g)Asoz^IE^hpk)IBzC zXczLvt2wB;ao=Fx7q-^#5RMZar_lbwYNFd3Hf$yh40HYKqXJL$*gk1Vf!c zU|B_OIOvDhZQ*+mxi}=%)xpLL7f@^Z+ZDSYGZtnDbf|ICR4`wUw16e_DWj9?E7>F5 zaF6(qYt`PP#d$?@ed68&?mrVhBoMPW$tP{upG8z%?P|;6;EOL=lr#ts3C-|z@LD`m z$({1rFc4){`fsR=X+dKo=?n_IFzZ-F42_}tJ&8LNfYPG7wMa{GlC3eqtKoBmk1Me= zl<fnpv(y9rj?&;Rn-|-{mwko!on(HJ>2EWHe)$XwWD#{A5*6e|J_*2 z)tYpJGNUDwmw1lLL0iS#-h`;>T_;bwa~91@N&>%j&#J4w&e*@XHG$P}lF_+lHNJJm zjdkO9>JdhT{;F{rtAz^s8_Bn`Mt}TbbLZUKYbRkaWfU^`k7>$OrY$RJzeo2K=5K=_ zj6I8+<+T7mE{pZ=^X?H%bT9tRQgczDYET`a4m#6-;X-j)JdS}soXjUV6X{1WOk-Q> z|Ihq&C2AuML^Zr8??i>pS3BAA#2aQn$FiF#ExL3rs1OFkTF8t5A&y0YJvIEbINJ@M zt33L376ho&BgbN2`<$Q@CwWdhspg>9Jh&hWkV*JzMBHg&UCOcfS9Z_pHclZ zO-gFx**9AAkO4nIwAb=Di$YK00$#9XR+@7{ApPF1imLhu_ixpA^TkaC_BAFxnuZ0? zjQ43i?C%Oh+NRd23ch8_|2HfjU7B46mOd3e602x6a(j9_mJ?^(NCXNPa1`s@CxQe- zChR*8ZyP8>F1u|0q5L{Ga^J_e*}frKb;ysTY`iZJP3{7~dbWv^Ks$@6KPQVVvVXrx zDXP$kmqbt4$*Jp(vg)wXjPHC85gx!U)VR_;76vdp_!$a}mH|!DU<*F>Cnd^fugEtq zSd?-gy8)1Et0=Kw>>SY39iSU8n85(K5!>%nUtaR2Qp>1qu7v|pesDM#8xlSstQS_7$1Ee%F~iF#_AB|xKkuoA0Z_f# z6$U(0aUAUDKe)#KvuBb!sZMyf-O{^e4D^t*2X2*>vlB*&z&EDY@20z&2GQlIskDGJ z*l7%h$m;*{q^oJKy4NN|TozH?`sC}va`%4_%W`Hwzl>o39ZiFs$T*RDr{aAyDxG0F z#md(qcfd(H5PamW0DeLi5Kpkt=_3$Ble?ZVMot=#H793U_fuib=mQtkG>UggxX62< zeE-i~v(?W$d>b^Xn$efOM{!JlVir@1+>e#cAfvUB=WIBZU`7(pO^!ERPr{BDP^y0A zI<-RP1ej4iriCBroDj98NGe1{O^{%))c$}{LHM4quYx>{_m}YhAVrO9cJpFm1wvNu zIE^M{*vX-oXI5}KIa5p2qiR8D`};4umGSlLS?SCmn8`jp?jKR9ix(8P_U#Qnb!vwHdf^$0DW81P6FC>)t;Mm-g&z z;qP!aJCX~5qywlWGC8j{yvH=Z7pIou=yiBHS%CdlbUwj+fBm=PpmKPteDAaF0q^GH z2fvDkt72xZ?v4{2rfd+h$Zd0wSzvGZ!OW+SbgZmtlG)K^C%o-1jizY(^o($r5gvg2 z*^Q?%16ew{NV+UbVD^Z|kHg~E?c8Q$pVV;S)X?ZcaQ%#LlF1`CaXR+|2nz#&0sf`n zY1=5XYgg#Bb?1zr*aF)!H=3D-qnt$biK79enRU5HF- zSUR+hew%%U8Ef2M?X1g{kbb%MY&#mcLBx8DRq}={;8=O#6QGGqqJ)(c7j(-?w%1)O z+gV+T-}0>wPnms{WESjUy3yq`!_icKeWW!XcBU0F!Q<_K-J=r5c0-?1WHWujx(&A}TWFd^gUd1m z2t@cEyY+g8sy5If%D6WRq3O#@xu%{=QA-ZqcXshCkjC4~PM*9<7Z387U z;I=7&>j2hBwCr4L0WFZ>acM(lycxR=(K6nVxko2}?rdP#iq)2~2}FVEdKZVdbho1K zXQfc_qZMifVaeb}tC-L{lrlOs)}^kh^zsSm?Ztb#KWAM1d*_M*4WU7_ROk6l!z9dA zD0X;HcK;S0ib^p#44JU%k--fXFUTM4yeDUFj8jR7bGIi`>2QyadIt{&i?lat$)C2! zNLteD%!^bg7HvwsA>PUMvFR4i9$#v87Cii8pfWj$Ql1b}!GHI&!OX!@0{WA!$Skp0 zDs8DqJ(jrkN7cJ^_KNgPjYd>M)DQ_M@q_|X&4#p)?uhWWxB7ZXYclPXSX`!MCIr(G zYH}idM)bkQ(ddxG{OX^lsqyP(_8AOd25x?wwh4^Fd^Vp!cU|x9epS<6_6nShRYl4t zU&EIx$|vU(Ny*ZMFUw7VL3xwVT9X5>CbU;s*OV@tUFB*hj|HRemEAWs7T6v|=YM7` z;O4L+mH>`TzttS<5dLZ=>BX&>P{t?Q%jrQwaxKTUw{#0#9whm<5v=$B&SeY)aSVK2 z5i)o$xXpLlH?LveO7HvPWy2s}YEGCl*Bfv?Qf*Dg zXPDeBh68#HKH{1q7B<=m4uwG>taIk9v3;M<8kB=WXXM5lBwYv(ARJil)q z^37|1wzw&;>_)U+*{^cqr5R8=Wd_8;OasXs#t+Owk z3=LqC1G z)UTV_l;#W&?3{#5D>uB8{1F;6=gI5sJ68+EwwXOO4U|HeK}~kD@8E#2&nI(51re7z zQCTf`+iC0U&H@6#R&89FouCZyTJg|y6lZ(5u+OT;*u`ZjgvNGuq@LigGr`~zy$+$0 z%_w-h;-W!|o%g17zR*~W1U*?`5ZD8#pLau13|+J)hC^ zxM`ivp?K7sFuJ+meonroN1ivZpX=e!zOs%kbkDW&to}v?HCjN&vCu`WKzB5HyL5ke zMqNABv!(jx0F6Y#n!ae0GXqSSHvcF>A2p~^0mX5n0)*UwKyIt}*&X&2;sA_y0<5;a zY-8j$lwA92B-|#UcGtf-MZ%cIMW5^C)5?-hlIIT{5_4iW zK~BXA9O3p?;#z)$2mVeV4nkS|#clxDg~7$m)6JsHV9oM2zI3{PqOEo{w#)%bR=3;Z7m z<~Hl*=#hX^$ta&AdCb%V*M9z`6moxUrWU4O2k_bBK%A2kqB;E^B<(zS|BUWFlrym7 z&#?5a2eO>sEmoybzF&9*HI1t+?l#z{tiRJ`6Z5Tae?I%m(#qr8j}xPOR6}9PlD!YB z6^%{42`Lu~^iZ6K*PQ#~Pe~DAQ;(7w@*o<($q_UN$T`T&RTAm+FqsBevWgFJu(zLf z-4AZlK4NHQ1pfvBxr@31dYsfQq<0_64x;8M=v4U9Y`^t{E1R0v5b~lhr7T?m zmN(ABVEE==qyP4XyGe{2QYEzYPJmMX2v*=VjlXun60ioX`PMZ!I0<%%W;}3X$3sfI zpLg(bOkL>*-(%qZpQ}xO!?1$sC&jhmf-oE_FQ+!`4NT()V@_tMyDc-+NQfb>>tS*G zOY{(`8q386F3Mkz6TQUbk(-K!AW8L_hVn5PdcX*3K~W2 zB>q^nvjJcNj3HLJz&e9!s&7%a-5F!X37J{|lDYibYLZ zSwMKLk~L*Fv%*N^RF@%x@!yUs=00gb^!~ci61ISdLWEjq zNA>CX`=Qp1wX(k*{p=H?_^M0_)l}q}KlpJl{ZyFyjq$)dX^bTb({lLoCwTh`+*=tMoonWfo?8)*{p5{q-=B%{ePZ z^AAFeEp1;(s22`-KJAZ_`O`|J$UylP)%`z{trh>H9aQvV?L%qLbniY`SJnwwp^R1@ z$NN@up98MnCUW+t0%QZEh z{J50W!q*jlIqYxAKLQnXR?0nHdp5Lg=Xb1;4w=`cG7NUc`pbt}7Bb#`+c;l#Ia(GU zJ6ZdyGv-<-aznwr^qY1^_OKeyZnXdN3obUycHihVXo z*+2z5o%VrnoCFHU!mW{vPakzoK5ZGG#-rC3+{<{NZX0&~lCev;6riPBaGh2WGmGhS zMKS8OJ4-CK#pv{#42S|?clL_g*X^+M>EAS+U7Lgc^>zMx<|^lu+nHEwVC6tOdPp9g z-@MoM(P{JRy#sdmt<_#p&3T@}Gvzg3$_F~F0+H*z^<9z6YFaML6m0AqqJ~0*Q6>g` z-w~!~Zki2UlFsX44Ebj**7TDg*n>mA1pO7dG_-Dq)%w!8x?kx7g*Iltx@;%%K#F`8 z5A%9`^+=BC9x8m>5D3mwA2yinjAeL?XJcPe`Djc9yXO1Qqmj$V?WfNV_UVq&frt#VR zW@h1CEnHld&-hPvXyNx;-7vccRD1vA^McZyuBI_9AL8kaHYWwyWMU!0q z8zc?(P@?-?pdVz}dBHw*UUT7!^5(r!e%8X-&o}xqJ`~l31%;J|`{tDa)w{{oM9;~b zC+)|roi@#&KY8BBs7LyDLm) zn)akU%>;&$L!t&|u`ZRg-^D{!Rk8K;O@jr4|Jnx}ijs%ewN+gW`E9&>u6j8l>3)FI z7k_=~z9SYbrlD80B~e3nO7)$<5OBo2|9}bH+x1TQ*6pU$kB>a|*ldL$wQ?4Y-{$-v z)8hC26MOxx;l5RAMf%3pm0{<#Z(n(zd(L$0$JG3C-+}Mrr#s)*f-+WO%SIio!xw0) zaa;P2rG0uH(#w3Z#pr98omeRBDpyU!A2^H68S6{={Cd2ZRlyfL8;I>Ylpb2X-hxwf z$P#hBr;t%b(}%Uew$DSd>Kq-8%-eWWuS2|jx`0`;{)McXEYjXUuZ1zVTO_%*UH1aP zCtmNIV|y(FauR}pUcd5AxgTck+xWeCL!a~T+JDE_T$s>K?Z|Z6o7&>=juw=&tMbpG z=-8c4gs;D~hYdQvd9DoOS2MaURw~1ThJ??&%im}U2;Mzn#EwsiV@Ae~uoqfX1kzvM zAi2_WEsQpfdobI!ecv}dTvj&!)Z2n9wlv_2%=!B4dXsU!-&~4hdFB2`VdH{mWz|x1 zvutHHg+R?>HNF(m6Nt{;;Eh`dJHNEMbEnV3baZ zC!&p#ONMRz3+f426_O$vO6g{=AQ!hjtRL0{7x$^eH6=+q2Y`75hRYJNf9fKmXFo$S zS7l9Db8O`-SB-=+tMd@Z-58W<3tO!WL6(Angkelod{=(lcziLSFfKpt?O+~U<9={VEDj6TY(|HdV6-N+Bc3fh_{-?PH?q*&DM7hjOYF z2_Y$2XJ8__BQkJ?nM8`$4n%HXSUT&B5$9!_DmRIcK?{Mi3k7YcpklaXHqTI@C^%A3 zJXVST$R`yPk}Vn>0n-kbEgAXQUn(_GuLeKPEz<8Y7WRLLU1_*s>70Dq)P$XEtBG!r zNoG!KBY^nLNiJ-1#!5{W*ESqOJEc;qRwN&fFqW)CcwzQ;4a$3^uBP=W3 z)dRVC4Svmk47{ma$t??t5yuGK`(nMr=EqZ9cDKOr&M|5(j$y}opk$RWjU(QRRt=u0 zy+WLBFxIiGWX>)=HnOHIYbmU==vsVNBU@HFl+`P+Uw$M00ZN;_Q3;P32uC@7K_6g7 zZvzQ$2Rui6A-8;_yt?7W^JaL%-)%*+?nmwRc8kOz=+QY7KF~raKXBZSt;1jac(}&e z_LiysZq!RN2&u3J83foS|3P-8AP<^U$KAPlK4y7z+RbbYkwa`?a3hUo+RzSPT$VQb zad!L%;Zjt`WaasUw_ExMLup5xgcIV>dzU(v{%8srT;KnCW2;X+^X7Ij$m!rU zVO(-|lk)fCN9nh6V;aRHgMU;!pKBNyJTj9w@i_nbzM!3Zvh(lzdLqgO%WB+>S0ZjZ z(Jh&i3DQE~t<1q7zNeUQ*9t@m0ZHe^0fbV3X@eEpm#`YiDvtIuT{9yXy5s~{raCUA z{O)Sz7`%uNu!zz7l_p2dpO8e;suu?C*wfE6^fHWGb4!_^2m*_sP5%_O#`|?rC@*F z^0P@U40?8;l6m)7XU4*~;Rqq#P!gpOX*?%N#->Q7^LWyQWpU)=bgJRSOS5Mf9uR0Q z6uoEL5Naj|M5(7p6WpI80%q%vO{Wl2(XRZY-PEVq=lg6lrU zEY0VBjMQs`iD1eUv#)Q~eW8L0O`4u!RMpBe1i6}!Zz~6Ol+X|Q5Bv zYSR$g(B025+vtYBMXX^P%1a&O>;re8$RML67sWWY$(ADQb&c(}Y{hWri2@9|XXbFV zkZvni2rfyp<_I3AQZKamiWaMys%QMz3;kYI*$PobL-a`F*1Vp(sj!+Fm`0+)sErf_ zHsKa=Fc{XM#Lsu>tP;c@G01>IZgOMX5_azT$#;0d_kt4NZ~sB=3lFZt+Ej@5?;mwu zx*LGX{U=GIcGFxJo>!^;r6^j8lUPA-N@szU`lAdC-%>Q#@4t*WXmjrv18A=_#CZ); zj`R;OJ$wC$8@Tfabr4epXmLqr)YIS(Wuuyv)w}olsJh$CuQOt1YS^;v+c5~u3_s;v z?VRSSE+jGz4TEN4r8VEP_;zQ<&ib=F=IWQRKyRGU-e^$@8Y*sFyo+BzMujch9X?QA zwphPEGkHzBOeG9!j2O-saadU=y}hz)WpDP%zw1{eWIluU(*l0l(Mge>hB(pe(2X@> zZOauXue}GZHSG;+pB}0HUI$rjIlF=Snd4?C*JhG&xNrY zPapSu-6!@r7*2aYL4uwn4-(skw_bWlf2YN=h_o#zHVB}x985m9+WN;DMUw1{^OLOb zyN^jEP(dOxTUcm_g#QVpO$m`fkCI2-@%xjurHqo0nGoEhD-Vl7tzb0t2ij_bQ#>wA z#Ik3~)x$|T!Md}iG~;+}IGGj$_zst7Kh7cjS8faYjo(OQGJ4%ls)zfb!E-Aq-QNyZ z*y$UveF^w^e1fsdiC=PD6|{_GJS8$kizZ{n7M--xvTscO9~f^4jGQ5(9*EXHC%%;d zbdVOSSiTNq#3xspzO#9T5{XI5w82xZZ^HS|(N;w3*nss2kqgAUqE%IY2|59d!WTFK zt*q%?#{i`^lL8d4hwbxI`SGU024Q=IZ~~g$bka#cAmFXRXDmSt_N7dbL1LkG5EVGb z&`oe>E88e(jhD*2XXOmHw3P$)3&>20#<=V4i0*OYH#Qx#OaPS5xRijD34@0R&n+i! z-EFr!L?NuM8B{6j(t5>oiWFkts0+&;h8V>?se?N9)Br{P~81NwybnC_$@C zIE{BWYd*zwNbS`Cmgiudk?v?_h|~`;4?91Z|EcWv{Re9kpMN*__;})$L?sEzG1bZ> z`;~bmT7F8s5M&0!a-}^W90}YS*c3#ZPWy$*dv2@jWti2Q)yM$T3||VXXC#Kko@h&` z_H8^UYE*%^%(0t)JTI<$9AaM7fBw#h0{B1h0^W~fQ~k*GajJE>+FA4-SwQoS?7bXB zEXU&%pP;jXg^aMPG2Y93|$PvA&t}V9?7J) z@1N1%nSzv>vHj&%Y@5uu7I&ps6w_4Z5*G8Sp?RRV@nrr(&wsj5n(=?b%Dmd$Hwx=6 z|L>NLl`aQ}*|q}>I+T?hs+QleVLS2T6m;igCD^f;v9xv+uDjQQhML$Q`0-pUE{pC_ z>^hW3fcQIq&qdL4jN&1*tA9bp`9p1O$X%-Hw)lw&woFsCaFcOk_Ei|F=%MKT=dppo zC+&8xfl-rBOij&n#DUeazRBTLhQLO;v8CV*0CHssK69Z)sS{hv%GNjDva$()%6^C=rP@qQrn3_iq91L@^(qWB+VW5c z)IQcglWAd=2|L0eJ0%7HV76>3wPh^Q0BQ=LtWsjj!{*p)Id5{h2OrmBLt>O6y=C4x z-ht(1F<;xy$JBfNRaCR5VthK&mf8YhOOp_@VhR=VvoYlGl-CC1z*Y>HPuCbXC$KQM zNb{ese;uH{m%}1XFgMX#(l8QB!72WpW!B4skJIb!)8LW7LYXRXQgC$Jv=4gChP8Vi z42yMB1djKKhkrT1ejV&{u`0oLIa&6mTr@tu|2^@e*{AekHx0c6%afy_v{f!gd>YHg z&iwXksw5EF0iTy+)lee?k<@4Hhs8BInYUUba|l5|3*H$hrC#C|_uc(*&%eN4$5VR~ zO%f5X|c+Ve3o*xZKgbHBtlZ)pW6mYfAH+4*GBLTd~bF7r>2zcd20GM=KZpL}yQhxi{PDWI+mI^s-87qQ(ox9=#0(PA+2 z8mWK)7OL59HPO*k^_s-0>7^4BD_{FQdnYK1>&5kB?LN+Way%@V>F>{=08W9jV13E^xJCWK-9gh4my!7#XJX&vXrjsY&3jfOCzAabMI zzHZXOw_Ewv=^~>>?h&zxVDxZ|xP4O5)EYDE5hN3y51H{xZaigXF`h>84`3VBNtp7I z&;XouBreh-PF~6%D_#2N8Z=~E4J%|ve- z_+?}H9?ob}kmL-aS`qUuf_-Uou?3OWf==&IgG;CNMe(gs8iQCclS*T<<%~Vjppd?i zx%#e=a`uvm`GuI33f{mg@GAb?DWN<42Wg5^D?|rmp>SOz%IrXDi+Y$S#_zdkVkkH3 zF=iILHz9LVP91ZWWY)@5@&Yz$e-m~%(#q@K=gmbcDcQ>AQ~O7cJFwnctvC2V9)T0v zFiQ=TfNW=HZQxE&aUnn{jJMDK^OY;HZB!+2qAgoyi?YY>JTVJ06V@16a+|A(fJ@i4 zoZ|b~EA%h`E%(bGC!}F;%OoeP(T(SSl3RwYTs1*2B>wbTWc0XMEe5NkbDP8Qw%Gy{ z#QNOTP+3N@xDEn7jVZ6wU=oW(zoz<;uhqFr&60KE5;gb`7aXp9pU!e7GZJFB^>hRK z73P;jNqP@6MKg^VO{E1P;WMtETF4??!HFRJYo@dWZQNTSgIjl~)m%ctCQ-?0yE8Gd zuWk%P#~v@qxj*n?Y&@*5>7VmWL*Ri_Y5qbcOR@#R3gRGc2IQd9?>shzWM}xgXeE*7 z6MMLc@WO`-lCHdT!fq4YcD*IwWQ3E?q3}*J5)5flW~ zXBBXZ;5~xm$0ok8OBywdg=uLmYCzTd&WT)#?*@z9XRo5ln-(kRfoGi(j)g z%W?hzxS)zSv+U6fUt9H~9W-h@tofwguqDmkIFfkx9r9XbpsDPTU8IK-$4xORG&40h zb9Uz*D}(mR4FWt28HSo^gD``tb$4@=u|eVWy}f=3E59Uu*jAx9^t^JWcUe68SY`c$ zrk^Fs8ts^d#IKU!9TcC{D9QMk88)`prrEOr$7wsJhRm@%%%e{A>8uW-*J={ zJE!2{;X1lTFXy{*Jc}bEJr>O{NI4raGYFz{VRrgRDp;@dkesCS1w;!f&GyGLEbn*Q z^#m+NzTHutotld$GF-eiM|;k6g(PjwThfG-hM)IzGcPI+deTUVsF<6+irrjly8i4< z(@aXBegGu9BXvHzWlO%j1!Eg<`e*{U}$&_;sKG<_oXGM_jT z%XfNY0ejR>p%?0>S+`;Mk$5t5Chv*%bB#igEUP=P41!zB8|$mv1*$GX>!6?7@Hotf zt{DnKu)mzvidms%0Co5Qde_CT0RHFwG(k>VQo=n&(}%_MY?3YB!Mak`yGhP{1mm?>d)%In~oF z%}U1_qXh66;vCvZGt_-7iBnq``XUK%OPu^lRt_%TXYcJJ8)Y*-eR^~zXZ2q`AGKPCoHtiHN9uHV|NNXF z*;;z-eG>gBDsUfn7<*+6Eg;hZsxOI#*_XU>H+Kt}S)5IY$%`+r_B8Oye*I6Z=e%E3 zc~rSPcHq*22Ns{Chg#(l!7b$5k&fEU*UG7`Tweo%1vIFDTO6-0Kk}Wxz7d~xQVa8z z8G{)%u%ikdA%E2Uy<|`(&RuSokZ(DoMYuq!o(aMFYevAC>cxa=F7nBgZNff>UEtV)k4dwgoRZ#ay;$o)^xO&)og%x?ie*H(*Dl=m*O2 z)`OL1N1IKi-#UpOY4o)K1=uos47+9DJxzIN)A+W>)%UADL?`8SHJ%Zjd#xz1Xp-8X z{E35uLNORKNe5A9!>AS%kWQyD9HlQ5gDhBL_ru`We{wDDEd?Llv{g7d46PkWRDRl9 z{EhtAC5iM`XDvS5V?atc6@t6uq*v$-$GM?+#||I@l#_rE)YB9r83Y&j~i_+<3=ogZ~b==3pqTG zk`Lh`6Qp7sa-((64~4M6YR=0m;_+a~|Cm*Mqj@6}-+a%jm*#%IVDc@}!jAp`GR1oL z2t9=_dvWLgKV=xXc0dURH7oe>=GxO>)-RpK{#y+R1Op>YO02z<0W-w3vK?Pc?klnH z|6uC#*t8TG#xsRj5&Iz}#R;OCTQ`qxFF#mSb-pWNV8we5yYtv-Mx}RSMR)h5`q>%f z&-(b;N55v0(_3NM$Slx)Kuy9>th%3dbpi3Zx`dvR%NRYSGk{3MgX$#xHO|30+h=Z>NOZfjm9__|&>h5k13iD*;g(S18uN1@e&?Vv6 z?|<3V@vW@;X+fxS319WsbzXIoLn1LyNVpDV-Vm!S(q=en zzYHs@C08;7z}Dq7WHJ`^JDFicsW}0EAR%F~T;E%b!XLuj-E7Mj83$+Dw6ETBJ&h56 ziPRxE!m@o$_Pj*xHp$WsT;+&>nq=T9o}F*oP!GKw@Y(fV-jgEt48fGchrF;Qg1CGi zqpNbZN~!3)sfRSS7>vp!D%0?7YAoON^YvDumDTvQle(?W{vZe5icd9uSj*k@*Qv}4 zhrVaeAf?b3W}QqRlJ5+⪚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 OqPv$*m;U29&;QxGXnfKD literal 0 HcmV?d00001 diff --git a/ss-admin/src/main/resources/static/images/bg.jpg b/ss-admin/src/main/resources/static/images/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d5870f5033f1b0ff98b6e94db9f0a84d253c86d3 GIT binary patch literal 26174 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 G(SHHxA6>Qp literal 0 HcmV?d00001 diff --git a/ss-admin/src/main/resources/static/images/captcha.jpg b/ss-admin/src/main/resources/static/images/captcha.jpg new file mode 100644 index 0000000000000000000000000000000000000000..92b2a33cc7b7c2c5b8e0ec15e0c8ec22eb05737e GIT binary patch literal 2493 zcmbW!dpy(o9|!R7Y_qwW&@hadxh0k`Ovh!*6xt%m<>Z!2>98>rGAhy%6HY}U9XLIN%+ttcZcB_*w*utQE!T~$*< zT@{5w>lowE+C~@@O3y;y$i&pl%uEwUAX?&WjQ5z~zYhUPNJvOaNh4)ska#VW7XE+E z)^h*>2XuiTFi0B^Lx8{t&{i9ux$T64{tEEVfW*KMs5lHRAt|-pP$v(Ffxuuf2p9^5 zK(@ORx8DH>0;-^8YA3#f>JQV7QpB^ei{TjiTAmVZa7kxR06j%QQh6s*MHQ=y)6+LF z+iPxNNw9KoB$4+!QJfFEdmQmR>UAt|ds!i&Vd0GE7-no-{F&7A7cQoyU&`R*T+7YN z|M~ijk~^h$@0FETR6ctAq^_R(w4w3E%eGhT9sJI&*Mc{1-wh4FADNt*o|&B!eiY3w zudJ@EZ+!W6^XqpP2mt@h+OB`Y{=^kJ_P) zXTcTivx{qa5|}--C8YrRpro>n*(7%PJMAyoe+NtXzhwV{{o6GHNP|J!p9e+&`+yDo zcPE{T&Aq0@Lv3!jmwlu zvqj|4f7ccFMDW7rgP;9P3zWj8 zerq~`M(Ms~Y1!NB*UfOE<}}~B+`7K0-nQ{*%-4xJ?Vdr3#_!h(zNSCxI$=IhCdK=G zs$jwL31`%&Bf=&acV%hGIrYp+nKUvgrF3<1kw)q{zQ7z?6`O{D`%GDavWL~SPXR=y1Y59@yR?Q2n}Mj>ot0q z&eU537@r7jS4pJfNV(xY01j9=2^1z~;ah(a)dR4`t zLhlvB(XaC%CqJH%kESSNk3dr`;LIg5Jt~==R956bZ88gbFqUOdK~7f=AX9vs;*h|Z zf^1%UR0478@;RlKyWdwotcIMD-Nev1z_8ZQ(=-XFThdce);KC0ALh5S`9{zAH^%PX z-dSv~vB!0up*q}M+?J+aye=m2H!8R%dKf!d(Y!m0Gv85(s8f zkJNn576S7hkA1R5KS`v$UKv|^(Nk$tPuU?^l#s)N^?c?B&m3P^O;qz8NJ0(s{B15y z(>PkX#nR@pV}VpeDNo5Fa5+e>qpFcT4@wc3W5Wa${1NUS?Jkpvh8U+ zo>4$IY(k{e>56!wx1YW>F+VrB5;MQ*|Mni|X5hZ!qbu}*ZF)Rvxii} z&#AoR%^>GP$Wzv?5eo$~Uhz58M8qaoN}n(jv49W9%7!pcN`XOvFx$An&5*ug(e8b#=6+ar8qWvgc& zcpZ@4`Cz)QZv5qLnQ_~hL;B>;5Z9hclc*Hr^qcJGqJ}$ho(Gmz4a1oK*nz5g zFk4vq<3VBO4@7GXLNC+cTG)L-#HP24Gwp!)jaT`Rd8P=T-0bc^5aV;79MZDgZD2XS z1%36E=j+fjz9ZO-6mDaNbGcoIlq@5sAZSA!uA};ihP}lnMZx%@x~Xf6UD<34pXH&4 zNp8oc1(OfcLReUC-qhYaEcBCbm}C6nIuIo9an(i`)kz?*Z7K{KZ>|aKG4*AXdtpaL zNV(N{xr&IR9h~32iZV?SDKoYG2LlT-9j4xKUjJ&furXYdi_4(6E;uI-PMl3zUC1Qh zRB*&27bXj>UyfLZG3^7v*48RI*vlwJHaifE>^QhSS9kcVV@tR}1NE5)7dV?7iQflu zH27vUUm5$j<8gHo%MwES{iL9a-zui6n<)nGy z@=zKxi6(R>QOzfsc`%s{((+XK$-h9ZudX7!j6X@*o4D|mslJd#B`LL0ToQ^ae5y=~ z>X0R2>X&#lA3e>3rXA{uqUB>%;_%{23h*xky-{1nA6?0C>z@n0@Obl*`q;%*`&oE( z{(6Jad@m#;)yO?r>RM;Vmo&`0)nVO?c#O7ns$yy}96k@{6XTGUn3Sm06iNMVr`272 zF11IQyfS;mi>|`xA48{pvJ|@bs8CmrYXyrC_5{$Ajyq2%h^rx)$mfbw(#UXmsi1Ye{0nDay#pj&mG;mm b;)y?V(rsXJdGpO0)n!edN>V(3ZtMM@RX$9i literal 0 HcmV?d00001 diff --git a/ss-admin/src/main/resources/static/images/donate_qrcode.png b/ss-admin/src/main/resources/static/images/donate_qrcode.png new file mode 100644 index 0000000000000000000000000000000000000000..079ac3d542efcad8389663f054f05de4ede24ae3 GIT binary patch literal 51506 zcmdRVhd0&n|G(|p_uAXN_THPg_u6}wO@z!uLiV`!mdv7SD>Ad^MNtu=tQ4tGvW1M_ z%ja``-|z2V_}z1yrj!ilH=jwQR(Swn&aUSSmWX0i$Vy%PqLhB z2f;u1_sn(B`150;QQ$vhcXe&<;o(uxU47x>6+LFg!yEmir-`x*dHnkcX?U*I>FX9~ zhsw-Q%hS1m09guaS&gAsn!eTE67yF^)@sffLnhU*Q z?bbXWUpR=&suVEVc$;n>Fw)8r(I{$C4M()oxIuF^t^eQYQ zc(KEH{Tg$_BywO+WxI#&?8DgQ*DWVVJeoOIoNSUM<;||)a|MP(K z1nsPHUYd9si0T-495l+@NGJz-_s*Q#WA!Mt$i#ha4O;Sed3v1bpGu^)&m%mHR=`_I z%-y+R-Szi4H8m=u@w0r~tt#5I;5aiu3`*!gi(ZrEsXWJ{SaQNRXz6g{t0K{!GVa@> z2?Y&x7k=c6_%Kw29!$%QUczGsJl<<-tO}P7d=BGLz zr9MKu3f@oMiib!@W1J;-bcj6p-k6r-KIb%JkooF=W)OYL`GC=voBqvz=58}FLhwmV z(=i9%{pe&bE=#yHkUXrjUiQucqoS0F+d zh1mw;*NP8xYB}T$A5g`k*~p!16wTqHZ7HG|Wi|2vM$}$NftjD?u~3F$FU9M^wQX$A z-u*HMBj4br74sRqy|wVtjB+w!cp$@(bdo9D97g_Ox%->St9a*l0S7#FYYLHxuwXN+ zsfPxFl0kD+hsz7Rd`XNFf2qxyJNnHXdJK9!Y(ho0P55QAMZh-sW7r^VFd%?Q+Ae|{qwwJtKDIPG%G zO#a_@F-r=~VswjMzKkbke5$9FTJ6jWm2b;kiTl4>h8|*cz3x!DCU1HXwL{aN$ttHW z{G>5~y6!-f0?I0UY*xG8&rH%H#W$|gG%nG1>=L4P{f4vYGt*TYBVj^jR#xh-H?KCM zrJJO(&s-xysX93E_~EACSe3TTvsFu|5VR=ehpPukRnt-AvZ-uh`4>@>I}u%XY;Tp< z(??N4JYQ0?!n|Lls+HH1^(nxGBqSOPaZfG%ho5Ud;EZ>Ar1vP}8G}&_Uf3!H`asRo zx5&C$H1An9F>yA5GYmamaZm7_aR4`T)5)bJ;yej@R2fXm1i?UtVu>kgo{wH9 zt|y742_QZy(@Oo3XX(a3QklXNy7>A-0i(QGq^Y-Us|Sif-wB@&%INK7dHrz;KQXRM z>ru=7UmrtxY`YQ`JXY+T#vx(r?fU%%F;J82&<5v)JEz=XFPFqBC6aWrUl-<`cqf=b z;-xsk`p3mJwJL;bW1t5ia$*_H|mJB3-X}C zy~?|-mz2XE`_hBoBg4v%)z!nG_CIeZK!!P(@T+gL&W)=66jP&f7HgVIg#Pt#>?4C( zkIH{H!K!YIq_y*$Kn6uESIUHKcH%#lJmY|gR8<2RxfF5>S1T#{&HwCFmuw>R1*gOD zy6>|`3EjVVp^WpzvUL&veZKFGmTs0&Pa****>O2Gf7 zoz7~rulWDGSJT_1P=%WVc%fXV>(h-pzfc}+oue+aa{s$Gnae(i*IXt^pd2rth8v>e zNzi({qJ*~+{Y$a&Skrtof>NI;byylc@nll?&Vu6LF99kO_Umv8)k&a8bMO)gwjzJ1p2I)?{-eTsubaXW&iZKCp*VKIZ7E z*+ZbuQY;)RksiV`tz41E_%+|m;9eY`7%f$!6C-uv!*@rRbTT=6C)WFZ-$d%B`d1)+ z*zP|uaqhZa?jSoA9Px<%^2Fp*-=$ zZ2Ec}$^1X{(nB=CzTikat8IO=eyT`(s<{u&8k;5l_0CKUOjuwGu5D%2Oy}@;Xjaqz zeSVvD_JQ36)%71OB3LL%Wva0yNlj4_TY7j*7f&CyngzDOA9@Yq`LNH?GD-`YfW}hA zOIorEL0KsX)xPo;^s4YKd}s9yr26o>=)l+mp@>myzz#{nSYgU(Ji3?T=&+_l)W#}p zKK@WlQDmj8QC>>_R}-{Qm`Bk4IM;_`UrLpL9blG}<3O`-mmy*Is+vOKbGjXjw?; zI{Tx{XO=IJNuo`QTb`bt8%*Y&MSJ`E5*}nvkCX)jUW-y5(+@>UG#Wa~1g_py)TCVd z{yn*>v$Hc)v1tdMp_u#Ri9>8hDorKQ-Q7K9<+X));4;d_#)cfj$M`6#H1f3eGJXbh zdwJi5wLs-V{DDl#SmI`-fVI&lD#5Hjsus5#+wXjSii+cX|Ic%Cv3+}U_W2=kN#uOH zAJ<~;_laEMQdRT2L%#8%Ii`o$=5}H=O7q zEh9rdFp2B-#ABPz05=V*_AilP0Rhce5zCZB&d|}{{<^X)=81p8^2HtIR&HfpYYW=4 zmDdVy=vXD+``Na5=ikM@ZL{mC?`nsKhcneLm|q^E-7PD>MExJsClFM&Gf!g)cGNW@;_S` zM*edU;{MjlPcG|(KQ_3G;6y@W{K%vt4`yBZdW1#-9%hL(DRZEdkc4uwyG&Wy`=jWL z#2DEaB?cN}DmqY><>9`e2X`$tDw54cCQ)-g2>VsvPC|yOsNf}Vo_9-)3Hm)}=Bg`B z{>TIxAS5gLW+Z2nmQgs_=1?a0kWEoW0B@yxyU&|ZxOJm6>O$#X@~hskzkkdXMPJI$LoxYRIkCS~j6p+OiZP>@nKx%#6VKZJyYO@OTG9%X`UlgS^ax zTBLO-*68PftfAMhv=;ehVk)%t3y1C?N%)NV6eWh21gj=a#VRXFh*;o)VRDAR>Mhn0 zkB*M6FT51d;o`x8hTG)niA+-FG?XVUOg`mm_xtif8-oylVN`j{+G0z0dOF}03itX} zd#w5MCfReHb)g9>Ly4)GP?W9^e1Qq2Ygnd_-kih|7BR!-`0%i6H$r*JNLQXW^m#$h zb~Xn$E9}1wh(PlkDbf0i&+yN+vQ{z~tFAw@#J+L+5Ci3V{XKxe3xX0^2a~u520pw} zcm4TCiT*R3NjnL4Xaz}YM!vWewAq*gQ^W{9ENx#3pzzuS(>t0}t-UezUj6b6eAySN zmPv|QHzH#sXZVcL%kD-aCz_#MH^+Hs;ST_rNCA341sm$lZR31#SVxAJrA+?Fnt$VJ4XUG1L znHg{xWNZ|QK_$Eb~w}`j-%){hQL_+wOdR!*RfkN@@zonrep< zfUUflqm98^`SZD3i^Aob$4cf*+Ntb2)qlTR>~m8o(3BInK#AUWUa52OvSBG|jI@xI zJfsIR&sgUtk88J+QKR&&o(-HMRJ7COz5MWsbvlSxna>mHvhiE5GiqVZEc!$%_dhvU zg+hP)_)%8FM21$iB)}?iQ<7j%Z3{%`2tF!KjJ$zE(7YQSLZ#JF&I`c`Gr!*rh0lDl zAjYL4Kf({Z%AxK2nU$llqhurqp%7?}U1->C-R{PLF3w{XPEPR*)?JRzuD_n9IKQ$O zQcGU^Mle$}Z}+46;TW<0dEr)CyEy!(x1nh~xUoyo35Kuh|NzL8&?$rRoLaiu~h4()=5zSl{s1q!Fe z5~Axa9K#uLU>4{=O3khaYF*d;Un$pga<}0c6k0kuQF~(oJFboVGg)d8r&%yn(1|Mr z8Uq*>+I-nW8|{Xvf3N-g*x=M3yuIvmy7{~zr#4cvBl0}7EunhAM3vPUnYNRxo4lga zOZ&xJzZnmKc}78_q|Jz<(*gD4;lrUj43M`sz@z@V(?*ni@F|)zAS$fi z%%)jG1asAzkeN5b>NUUL;Zvc1!bUZN_VYo$Pjx@j`oJCcrf;eZ%{Xq} z?D@Xr+DM_JzeYsCm|+Ii(;5#$FGq>5<-M+NG3;r`Ki<*i{mIyVpMNY=^LYQgdU>jY zYwYAsSJ2kN&xt3uO8-0Xv(sMV3{sxAWtV|dqc9PIdtAS&8!ieMz(KXn&Bblpea`?fwF+5^m3zC(~r)_m~(xI%SR zRkIy2uKCf33OZV{fU^0K9Hf%lHdK$ZXar4!C>7P{`j(+mhZ>b9!}th`Q#TWnqI-uU zFbVJ;uwCND0QpWeK~STc%;zz-VzE1562AG4Xniy{3x!T6Wog0J+5UtZT2(#{*c-N>kkM|t}GhVDveO)Gj_E!%t48sdg;aHtAGc)T+fB!uI z-wX`%gL*81XNRk}C{iaHD)%smo1ndH(Xlr)`FVikpS9`%`g(1kdqj|9uodbsOslm! zIJ>EGMg@}i-!Wf;2TW{5TRIfW;t{IXAz!Y}nBy1$1z6BV8&PJA+Ln776`OoxJ7~e$ zXgP&xz>?F*N9FS+oFYLDH`XA-v@eHxx44f}p2NViJO|3*lWSpls%CJ}ysNSB!(I8Y zx#f8EHZ3Gt?4^Ru^5rmu&!71gQh8@zU*s=>SdC@X=QNE(XrklcWV+vs7nGc;9m!Py zt(O-$XLW@hdQB0Knb`D4o=4*ohUi;d!g)n)$wLm0zh(aY^V#lzNQ%KKu|(;f_QBcC z$`I$iNESUrg7G{VP8rGNyi?X3`oTy+D$G=OxH6}q@AR3Cs3!E3d|P(lZX+s=M4o3# z4J|}@=0N0ZZT3*3?rXb=AaoOO^SWkMSToJ)KP5*M4ZZ@Vf=1$oY}JLS^1*1+P;MHi zZ%i#`IH+xos`i$-5(B(LDG2h5B+xl_*b-vS6>i9I zl}a-7tQu+EW)7FVQ5ZMLgh%Lm+)|hZnXg*UbrqTN9^ZijC*AB4i4+K=6bTINqH;zu_ zn1sdY!s!jvN%aV@0IwG`#yhE=rF|Q9#(PLvtvzz{1A%u{$VMeHq-p&<2Mn~|&<|Bc ziE`L0DK!5rJLdhhzxMX_?AKO7(ca06OXm)KE7pEyVF7sAKnVcyobuDtl?Kk$uJD;m zh+fSjUG`8}jHFZOM&%6Ob+~9c*f9*MkXm+ESJ%ha!WiQvq@-X@rZaQ&E*9Z9w5#iy z96r`Mj_DSJ@nAn?h zZPBJ17w6kiUmEC^mLL3l0`|5Hp|hk#d1#`-(p`-&eGyYMPpeHHEACoR}!1m>iNO_^5UHIKJFeYnv9M=T5pYpwsZ7m zOIdmO>``*SQ?SXLajoG6cY-SFmSHLHb1vxLvmSbpLYNs1iW>zS{De8W#Ks6P?Vp3# zytu5&xM@D$fK!^2V_pe=oDnp#4Tz7~023lmq^+r$q;qX#c(}3Fs-tPJalPf{?Y*@z z)i5CrYm2&Cvult_s;Ft~Vvf~KTCV`>r-cw{J?EB)e@En)@5o9bgp%mE8rmD0SLaDh zi&>R3cLNx_rvz7=j zXA7AMGy5qlH#nKs|Wt95^C z*c*B{d73#%cAbzf9Q1D&Q9!F?fg1CkaC53WQ7wx;AHW~hSST^s?$+#cD+MDU(`b9$ zy=l5;3kZ=Ie9BHyDP-rVjaE`-CYOvmWjA{11S&{|d7a6{rErJ+WWL&@^kn~M`6C`4 z3Mh9!AQd0_qb|AkA^1rd89~ZV*yaBVR$CXh1gUC-1>YQ|(t0sDkug$2%FD{W%CO_^ z&HMx;Y7dF*zr0Xs*r}qT1RRHyXzI!13V;sBM0I!aLMPoV%6AxFrj|gG+p7l00Nhi; zOoAfbp{&P)4v8;0T<#4!+=d7Z0EMVyEynWr4VbA~wxW*=KR-$NH4Uh~JdFA10|6%2$R$K{xD#ovFyll-i-KSez=F?F z6s8C>86FLZG*wIsJyo4_hBm(!EK({m?fJ@h?M9Pu8JjoVgqUV0k?ve8ke?1zdY&lw zm1xzh7cpo+6Fd!`OH64lA8jpKiIzjK>yH$rKbWMuAVm{QX%9_Oi4d!))GDW3OXP6M zX{bdm5e}$m=HREsV{C>;gGIV3{{c2hjjo(vpH8cxcU>G?SO}O0-vjENvZCo^8W^xT zOxE&sHzBn6kBg(!n`x@Ub;ELXuOHP~T3NE82OcB{u{^2n64M#tF05nB4tG|hrl3(m z$oP9-DSDLyh{8-_;cp(-(kWN4+W%axt+mIwGdv3BnM@tyCftxAKoGxk?;FabQQxQU zgMYFM@tP?^WwSC-m@ywL9*H$KjHW(_dncXw=hO*2>Gi@drcR>JvWRv(?7T87Kr{r1 zw@{2_7C>Ko;{=#foWyyV!uRb;QUtA0%%m*?1*U@A&NUl)5HF$2%@Ugxk?{TRa+pbG z7xxrSB#<)BiWgFOdw0zDxBcpK57!8hhZnGq^sbD1(q@rmC3d2}YR!an>h_JBwc)$~ z%^FCMAeuWsRc2vfIn^6+5t5U;ztrI$4!220F>`Vn%Sc6iuzcxtT}_`XvMejLNs|MyEWlMheO3eTYfE+Wk_~LZZ zPCS$2T%)swPz#xDlS@2-a}5||<$HmKpq@e&$l;dC8}4+-5IL7Ff0L<8f>FEW^-S_U zm*v|8X#c?sB6N_*vc-F|o6x-zU)sxIE$!77sQWekdE-QCj*4Y(NidYk+No(l1Y!lS znHz9Xkz{z!@8-AM;AKz^^sTZ;GtNgO7$9D4&D4IlYXr)t@5efp-%L!HNkERxBA}9| z?5ZIFr4%n}#5LsBj!AL0O5WrD_pCSyAN0dj|-kk{op6_&7xVB_0BI z2HNh!Qo!e&8gIs|xUd}1Y|hl~1I004y7=jhdfQ|p41u$tJ`p0|*R+8IhqUV`n6N0p zcz*99Sx@t!1gdc)q~59DF%VR)hF}8pbJRUGRa7YG%Gjgk4N$thDeB6zksbcuw5Jw% zbTW3vL{GQqlK!d0o*w=Z=+e4I4@(MFbbCWDf4=t6WI5umL(pP{9$ofbaNyBmE*5FC z>v-}QmY2Qvk&RIF4iHk<<4w97q98Y%#`}w~+1(G|qe4ymkdfvl_8h5ZZE$+#QclrUO z(X~4YKiT^}%wYRW_!TkDcgyAtq%KW8>!f!>FMkFTA9S_FP}=yN8Zk~fn+P{;;N=Ro zsGwgP9O)s_WBuw%(aqvWNxVZ!h?dUDu)YP&DNTU$exQwOq-@bUvxt$TAAz@$Ma(t} zX*j>_b` z79yYX;+@;fe5;b7qt52+XSJzjHv@k=#1>D5q>h%B|7ln{b%4xL1!}nuaImu4}b%+pFdR@ zr4wN6SztCWO!&HdT9&4&9Ba5dOOdT2ki)dF@MVCR+P>bX%GIvn1cwY2h=X)<4|U5~B_?pm~Xh?O-SAU@(vrw?O9BpdKM_{~gitE!5TUHqLmH;rpBIAB{ zZ2qM;Q;3FkG||Ao&!5;%(ycjXV2@Opl=kV-SxtN_BD2jrKaOzzic@ltW$~%5AyEj7W z>a5fJF3RO`B8v7Fnby@&^$Gp6q-04Y9iaSVY;5eTu2AMSL0P-k6;gcBv!`FOG9!_v zXJC-Z#QR4(9|>t+6CiN~N|>Ucma|&Gny$V+Ia4)l98?W%{+J+1G&3P$VOWS3lZMxS zMU4TwrZ4%`&|l&hyNOELBvDT--W#-b|CiL)`uSq@dM5$G_IhA8NwIepoWfhHON+)I zXr~|p!!Qqece4{vKj9h za@O94j0l8||J_Jr>E)r6E>6jQsr8`JGGTAi*rzd)$?i0K=BH4cq~TnT0RhB}_3*a* zh6aI(%rgbp<%FDT?S?&c^ZZjLWC(M=9(XoS z-2AUq_gxh0MP;#7lQkI0`I!3r$iMc8zqszY_^-R`5T!_Pw#M+!cZO(sdMp}dW@bRY zG!cLDW8z8J+9<3629c`po@-o*y4Wwh^zvG4+o~>&6z-~wONxk@mb*Q{e#$X?3jR0_ zAVrlc`k?5)I-IF?nj}xE!J!<8yv*TBBp+4rUu^Z10sCFPNa_|zCPzJAOe08Cm|Q!g zKRHaO3s5@u5V$^9sIVH1aCtG z8!}Lk2Z>xKOMMYxjvRy*tgxb(#+){_r0}YNyH@ljE1Fq3#GZ2Q@0k6k($}#@-4{&G zl7VmM2W^o4FtPl%r_Crkd86sKWG=MMwi}H|Rfh8~y zqowc+UpHl0;&x}mMvld^j?MPzb@wJ&y$@nwm{Gx@nanM|@Iz6S4@9vRZJOlOI`(#HaTkn9 zQYK(=KR=kLiC*+WDBgu5b>mlncM8~hA1~Y*aBoIGf!^I$Y=_?q$$1@)46?gGc){G< z{5Y8wf*-j@rM5lS6!+%?M1%t}(wz|nEE^yhlzlQb3ptq5VUln()CRx@K;}BD22Pfk zBoMUFH!(?sF)Q8sVW{kbSx5l_Z9v*F&N7eLNjW>(q8zBT?99VWOFdXYE4Zu==?POB zWGb{st}hgNikUr{mNT^Ppjr%_F_$HEhr32^pafSKztg~5@r2KuUwp$#Nl9_{oUF-H z%oQN?rHLUAG$HS`psf6{#KiUff(!I0L23;u)TmM=@>qa;EE1HCN3q8c=HB683=%#d z8F_a6NXv69hYv80HG`MD&=Qs4JKz+!(#@U#Ew|^8lbD$v)=K~>WyCN#ITh5hg1wvX z;JegeX1^&K3soG1)_WpBKbGuO6Xk>a1cucck%p|&hTfxvBp6Sgn4NYEYH6|E&t%1K zx#xkUZ(v3ekhKZ?NS@ZD} zOwDwG4acTZWfNDm893cVqTfC=E=WS86ji*rkJE~LAZSTilUlQKl0+|XsLkyawM_va z9+kEPI=a-YSCS;quRyET=d#&jp~Vs)lqF;Rc1Wu%Z_gc^{47&^U*DOIHB9LFeP-t>e{Hi8)zA z6-b-~!)_?Z3H<#%ALpui_iJ=(z%2S87f{t-bfqQ#fT6gGwfCG-{8(#|$P+e1rI7UY z0WXxB_wUj@8aG+=F`$!G)zz0|TBbrC@vIQBH}xU^Fu-&9Sdt5D-Omvitz|V7JeMGD zMxF>!YYn$dypvdF+5@Ik%~L};b$esh?^$KCMQh2b;kUi-Z%54H*RvF;S@URys(&%K z6QOs7nBge`zYIWLgG(*ELyh}X53Mov3MD=X7cXLtlzkELk^giYLv!uarvpC^iIHhP(@OuRi6N z4CC5D1eblTbPBK$0knz`(WOXq7a$h;@=(m&+89oPv;IV6Fdb%$N zhX;`NGE%MrW*!H6bqXi{I)>}p>gws=Z4;|+34o=(zSnYoa1fZv5`p|JdgtVxys|2HhNKb^Y5{X^M72x!4h8?jB5l^1n3zm zf$Px9BValVN|NtC30|HDE`*p}o9Xn{Ql|_zciElKUFLIwFF|lBURYzr251QP-d_Vo zLFQN4GZ3)=UXpY&)Bfgunl{GOqJsE5R(XGz&LpYArp>3&hO?YM>Grcn)}hd5h?RQ> zA9Sxbp^PqKM$@A0X@91vJ(F-cWCZU+5)`_}`Z=`bc7ccf>v`rX;mF6J&`DM=P7YWu zsKtn9K+rQm#5f88`pDfHQsMN2N{eb^R49&^7Jb9GNS4f~bLBJ7s>LxX0dC*qGNM6q zO_NcQ85}1kW8(}Pyb89>sr7py?h}u%@&iH2CsV;o{-l|es_|}9hnlJQuKJ$W381t! ziYTZ}QAg}#>>$4~qwCc{`SyNk$^N`ESl3sUd+-}v0!zCH`OkEVrf9u84! zUP*p#T)Iy8)N!LU>A+u+{i!hkBOw;~%p7-NjPD3k0jiyO&~ok^;-Rgb(DBk>CWp^p znCj4@TC@G{mniijfwnZs+{{y!BH?>b?zaOiP<-tBJyw2Cjffpul%UWt49nX>b?D4T zfStF`h^L2Wn60XyBRCD}$e`07k6hi#F~q*Hc#Iz;z^#b2uXhhwplQ4R9^gLAT+cB3$2n&Bc^@?KIm*IDx1{)?+eS@9wzVr>D5)abR`@7!BqF z3$JlX;Y&CV_q|Uq90E1uFkKH8ecN}t6}+K$=9`I=-3wTO+M*JEEa{dqv@!=I+0ksC zd3rssf*BXDZ!I8W@Ki;CV;#TMV~X3Bj$jFxNy68knJPLHO{U;0-rux5snP#VjuHGd z{UDS(41#G*F=T};kjG6{izQ+;9P7+pSIs;Z#)tW`LMoXS_>#IIXmT2vWZsy`yP2da zpW-G30z)=jS^gkWk_TuG8TzU}F%bb+=OMTeZJ|em<9?XYrO0RO%2)b*VB(YjEn5Um zD@=jy?$OF?;GF}S^v35Oh8XfNCkITL>DovBXQK`M7s_H(m7`^;?jIpHiQc8Q4YO_f z#{7dQO$`sDY=|d78m(Y2L7kOa59UeUv(t*ZLC-DIF0?4zXTo5L;I z1|J;bi{3Cm%=AnTPSma{{O-p?$t_jlK*Eh1Vjk}bq*k*#PGN}C8#|Z==s!PatcJkH zL>NJCx=;s-+S<{oIf1p#`ruGIBv_Kzr?7Si)eQ1tBG(R zN7t7{S<0iG=JBD5${z6sV1!KT@g37pb}iB;HvaV|z&Ko)l*DF9J4GBa#6hQ&B2Hz$ z9FS;fYn#_s3EJPEy$;wRf45c`W+FtA>DjIlS*7?L{SlxF)HN^Y2wsV9*TRlOk-FNa zc)C6$kdX)`N_4Lqeb4XTKFtXdl(@zLs>6gP!Cma);Bz9jO`$&@|3PN4i%c<-T}n?T zVq*zT4ULVfhP0HJq+T_!LId(iWr@(CI_ne%fpa3grfiiIkgK$^yA5p}7`+iCgFYvz z=X|r9TDsRrdN(H~Py~_s<$-A(z{jN^;)E?rB~(IHbbpIF-4F=m5j@;UR!-XujHv?W z!P19m$Fx~v3MGSZyrdAct)R@D4S|G!7;!-4pvkTqNdTks&32XGKbqA#@0iIn%*QRo6`0s_6&*dOm{}N0jXs>*- z^O>4?HLcn#=Ge&_A$AB}<8<5TNxNhA%(OJh=&Wlft``S9XrY(*k_1?_zR_4(uBIwv z2u#<<%j~zLi^p6ec7|=boZFBYW^0LV%EIz7SY^>cBJvtc=IGAH_t;6)CSEPjl}`Qc zImj?Y*U``GFNpPVmmMdBQb48GjvXNlV`I{WnzGl*)KM=;T%fFdCN9vFU<<%e1el?? zQn0&0_{;Qfpm6spk zL`Tt!<@i{Ucd8msv_3>xR)-iJ2Y}v9N{G8+BmL(`Y%27b!R;g~OP%+W-2Qa^dI21R zse4$kG720mMtTr{ELQ0IdW5dO+t6aVZ{x>y@^`I_+8tC9}hj>zoV~4UH2> z`(y5D4ARxgDG*_?f`346w|YoxOaai&2W!l|z_sup$H&aPfA?ao~}MDn4C>cmWV7_dj}w0na9}IWAVug)xH&yHPI9&WO(TsZtXfPl-%?}K2cKI*;x^#61`BG4 zD&f-(aP5Hhc>FyrhcNW?jTFQz!z}w%28W8`Q&9cOW2Go0I@fYQ#N*pvR1t8GCe1)9 z4|DnvM8hM`Pp1SPQ?f{7!e22dkI0U~5U-T)s?F)@WUxC!ar~j#5k?qEa3>9w=9dNM ztyuy@2^1ffFIV7q3L8zuu4o$0ScrC21`d~+O1Cw9sm<3eFfb7KaqqZC%;J{A_l=rJ z${wb2DUAa^Um`;e6k8}QIj36p{a*=ZZtYg~{>0n{O2jq!H-FgZ(IZE{3lNv9FHYzwz2runnXTrgTn-ClLx>i#@h0`=tGY+zTz(!DJq0sA8`Qe9>B-2* zuEN_YI=`}Va=0@ZXOkLb$vH6}<4r|lrU6rF>;Pz|vYx;>Ti6etdy^-U$%$owz-qeq z!K%no+w?`~?v`?l=~~`l(j>HrG4OyyJWRTrICd8h=F|%r07jhSv7^siTVakp5xDAZ zNNmut9tZKMc#LUy%0b5DbGsZK`CN1O;W()GMlH?F1LG5?=))mpM%x>oFT`qtxMLA<}ffP1JNJ4DJAo+XhDp`q!&IQ@l!ol$>a6tkrS zQY-M_)V)u&=ptTcN``{lU1MCihVcE{JoS#f%4%wA$MI&|S6T38uUX-vX8`%L{|5ec zW@eL?`D4`w0U%@U3R1dSs}q8`%Fy`p4NxBPw}82WprVSS^8M1sk^aaTe(&DBK`~9E zZ7-mv=z>&vd<&3vz)mmACkDb`#9FpamfT}$5PtY!-$LT-<+UmEUUi5C_*`s}++}&$ z*=B0b%zN`}cn?8cvvHe{mR=3Aok zSS+Q(w)kghlhW1sn`HoFRGo_u;R*_vrk5IY@v?L15@`CW*SA!T)%t=$$4N3H;dc zSXcZHK$eJ{w$*o0-d{6`F~%5?NK8+7Wsv1i4>kXe4hRSs9?nJT{`|}81(pz`ej4aI zGNEoh;0lauAkgUn(?gI-%#xiK19J>VFrSv1N?3UC5pKByf`B%U<%E-wx_ns~%kf`n zHmA~9WY+zYBvcQ`Kj;F`rFBvvkfH-!Y^~SC<4jCsEcgF@zWC+Bo!JNS^#sJts0fpV zC!22RfE6IWM#j4^7)L5(G0M-W?_fThWK5f2G_&3p@o(=?lo4Lh$MZlJhrAKKKJi55 ztxu<8!0CMrC!?^AoRGHV5%Y3M!hDEAKk?6iTn(0#(#ClB_2 zoTTxqdalU=(HIah(*e!w%V8N$#dQ%P^i1iS1$7bVRhSEYmFT8n83RxshJnt#lgENv z4a@$oIUcjp2b})?P@Nev)pHEtWeWYZ&eIaHTcm)2GL%TvB|ZmEAbObhw6QyA%cb=8 zc+qT)8Be6RbkSeGlh!xk+r58rN#ZY=-Z#WTEzXP)+tZb)3u7Eq96!r5PS)O_k0u(On8+Rqtx+2YB?P%>~mn_#8V(o4Maq0ozu1i{s1 z6n|@Dy3$8DW431YN1=JI73YfL??zl1*T}80xomCIzu>w$)wYNgb%SNCbXUPK=Kv-u zHfZ=KkL>M>sKzCSFmfNu7i*<7$(!?pky*9J@3-!$T$}KF6}g|^e-Zzx@a_k2QSB_8 z((AM1<#X7$hJ=d$cwx&^ui5^EKslC_loV-0WXctwAL^J@z+XL)TORNouz&3#o_kHx zD%X~M4`na6IeP?au66wVrYh{b+_H@pl{Dkn;+|e;l*+bAhVd9av>_vT8gU!SsUErX zd%_qHyKImrq%g^b%TgkfXF;@~g&G4v3uPt1XBH_%evC=yKrm;f#5mL35UPjc>$$!J zi0{E!@HJeM>lp3sVL=F<`ZkX&y^(FRTkY`z`_C+zqX6>L(bC0U-wT=$YMiVvyKU+ z!~V2Bi$bNJehJf|?w{u{S6iuk>g=0nw*go1kIyi&p|fA_oJ(r2*C;{uzG*R_285u6G>SVq?wT3n1^n2 zvdqww*?}7&7n)rX;9&ZM{p{bqLERAk^9fbo#p(V~Vo+5z-@?{yncqS|VL6{m3Q9|V z?BkOZ9{)UaS7P@(mg3<_HspBVxg1@4B$0aYK$XSOPdhSF*vH+K*ZXopnSG2?LUrom z!9?dZq2mwVh%3*Y8~k`z?06_~J)82ZBKo@g{^2;`~MO3yAOlsM+CLo?J3r)kyi4hN0~>SJdMtKpEAs?*#()T0*Vb zJKhR&zK743pI?7|1nx-zJt)~n+^$VjN@@x!2`&oD5h7N@UULNFdD1@t#t&iCW`og7 zPe0^#*DrC^Z0cg5yeDkFs|<7;06tG}J~6NJAnbjTv)iWIzSD1P_d5q;g?PMR>)piGsw zKkqkK@4kH!d?Hb&!#iyE4aVXB{h8V-H$-S$&SW!t9~9GlFaFXXHO5VWNPuz|cjtlG z0i2aRh9epGcTZK;$F>Y4dULNXbJU}fBqviHRatx8Uq+PGt<7fatunBzOO##zE<`T$ z1Yav{f1N;LH=5#wOI?wicLuvsPF`g}@>wekT`^T`{E{xZ&ODv z3J+nFa$3!2R&4+0@$oSS=U;4W&pdGk{+~1P<(@moKga&fU2d%Z8A}~t3ciCO?NeG|QF&(6WYlVXkK$NN_H znnUWr*Al#$@=->x~%7M!!-qjtij8}g}y0}xb;jmtE6>J_JY@67KiV+;)O|pkOatQP^b)Y zJbn79OZgO(c-d>Y(@nZ#k6!#9#uP_fB2Qm1afyR`I0CXJH8zGCT>QDj_J{!S3n;1} zrKm?-)^A`;0d8E1ZtvARq-H=Itc1dRhB8jAzj%DbfX??pr&no82_o4V(J89+(%4_ zy(6G%k!=}7P^pT$-7t~v3B$9>j*=nqMJdSVAiE#dF zEq7S_ef;JN5TD}x`Cq+PbeBx=lTo zi}8JOE6(XUcnpt*(47qlhR_@7=U^_VQzo>B`y4BZdrHCwC+MN$K4g#=X(CD;_|BMh z@5{EeRlt12dtBx*v!Om z3rsu<4mJV~BR=b48bWd};oFDXlc8xs_{W**>>8xG_4#$frs1m-YpfzMD)--Gez&f- z4bPjojEF!W;^?Q|PzN7RM0I?ZIuNK-A{tc8*r5J}D8=Utn{z} z&6SUmnKmd;zD);4n97XXY&jp`P6#nv?s^Q2fGNN#`7ABr5e>4w z%K_f#t>g+7A5w1PC-F}h+wFp}D*E>poz^(I`y=$u`Zk_P*xmTG{?_GlQ%i4f=p3=~ybiX(UgI3vR%-a`!LQYbT6+2I@^F<;fsBb_1q14sFaZ#NiMmv)hj<5K!>soWw1@o!%#%YGi-JidC!UZ^)H zZA(jouUY#1_SK9%vlSV<*&Y~UmgCHLaBHndogSOrpMB+c-Oijb-6V?h+`*G<>UL_i zgZJ{p>>*wD;lgkRnp*l*#boND*&i~4SKcTf(3(CwkUncb&xRIB?dfvkg(%{9&tLX_ zo$Im-JnmMYFzh((`Yef{%wkoDm!&id9R^N8&OLgWs*VDc^#4@U)HeC$1zrq16_MvM zG$+^i%f6`C@lo%K5{-i~b@qTYEp|ZM5OU>|ybco`-so^U^8cX&K(9pNVfQfck)WoU_yQYIdaMKLz9k*!52Q(!(gv#QK%?T{Dv2f^j26N4z*6V4S;YO|gD&;h3g1S_k22(GWm@?2~v zu6>2^MAwerHouck)tA?L4}#e?w=KB1dk%@7rH#ymaQ_Nr`@BgB$K4gT)0f@*+x`37 zJv%#Yr!GQh76o!v`8YkQI|l=M>;98lVdM9*)(;Ig+S8X$r{|?}CF6LTBmMPLXWMqR zcHk-l4^xS=T|0_43%9{aHN7S^N~SrqE2EARD_TrVK*|EAN4Do%r5A0$nEY~&{_XXc z?DM9xFuae~a8zg%22ck2q}Cy{0mF8JTj;4{U*O43UKa~LH4FAHkGkeH3wP7RErtT8 z8;S3$ty<pd@hsKMI>ZY*A^cwH4|HAZ4S-qS3}; zbkI*IAwz{t2gqOv<9h__T5oeY5-k`oBWT#2x0ZOOr5J&Vs3k* zs0TyvyW^QJ2V7rI-s{_iuCWZ8HUv?;ZRJ0rXGVH3^`i)K}MXtZ3c9eii}UM{D9bS0bIH;ChU2Ti{w=GO=sofa{lO_|k{VuIu60f~X6|avOsG@;=Wn!17mB5lnaa zk55c|+DVxH;;q*?X=CG`Jq|<&TAZ9ZD+%5x3`v@d&ob)rhb+qSJ8gqAkY~mv|1XLT zY5Z@Q5&VM;kjjAQJy+{s6hXuN0CIy`MH;fWP*GnXzpW5329({pf=HAGT1qB*($}vq z1JvgvWExr7Ga{ix`E1kuk_zSgt~<{4{gPW^&7Q6P2<(h=S;OHm4-L}|L`}&Y|H@5#Q~pZ0 z-B(!YsKl2Q zloci1*qw$JG#f86MSKL;hnL5LoI)qTqy_Pc$IVDde=eM|BCTs^gV{njX4WOf%A6_B zGNZp+x%YUD_@&2^`^mTCkJIji6lHAElJHyU?q`)fRTIWBj5e{I7g5eM~&`s||$ zvBVf$y{4SIAvWQGtg8uP9tV|&3X9{kY%I&Bdh7GX#aLg{laQLOSe&^^9_O}(3#>|S zFUmKib5y0b;#X-#y9>9|we&NpmtIRXpV$&&?y|ll#JTLt$Z53p)KQXa4_;eZZ+c49 z3@TEu73gZp3w->*{}IG=K>U=1qOK$BAW+_xjw!}ttSOkK#cC*vL+cV59p@1B)Lcc$ zv%xfr`eVGjwN`s0>oEHD>6jX;Ja{1FYVq$)Ix24!MXj|p;>rJYaPU|{#bj~NkfGb> z;h<{xI9=J{h|kN)x($>9Jof=Jg|)FJvQrxe)RU^?sv+|NYSkVg%OTO^jFhj-3aSHY zsxB5n`qR@_McbZ5X+oQ$b3!qJ{mM5*npZ{Vf&C@7Q504ha#E%r{1U`AW#rB)-hLj= zGFB7%x}o6y#|-D4mez}FPYOF>UAd?f5>yC`5zJOCw~GWcXb_j}HyHUpPZK=ii5Arl z{>CW#tb{XL3u>6R;H!Nr-eQ$qb~t`St2HHz*Di{DgZc#*157hDx`f*)j+yPXeQoCR1+YZ0*K2EnMgbM{zri z&qkWn6X6}KoXWBi*JN_}UwEmnTyUQ?~hW(ghR5s5U3tGg& z4Qs`0CR`iE#mg!BY3{o4?YD9G-yTbTIy(TOi63n1mxmd`$F_Ui>th(;;SnMvcdPBS z0uM7cT}KYe@YCzvqMv@Vb61nUsBii21}=kq&D?AI2KM&{V_k*3>hHXtdV3#x)lnLV z#$Z^fzLnB)cu=&vGSI(*?@u3Xe;<+%ebL;t+UwYuAhthdc%fT9yr+Ee*=5iiZ)8u& zNl3GDG=}TOW;{^$qv(}ylP9&e^R?H!&5T?T^!D3TCqO;9j9-2+iT}ImA04yrp0$>A z4tWgKt@Q9#JE_AF)hd_34rhV~1?5KWi9t4)>$2h{YXBX6VG(IXiKHIILBzNSe8q!MBgNB5?KYx_KMEd9+l3jE^8Uh}qA9Fx+&K7M5n}84VEg zaf3Ax;RL-ygDT=a!Z$iz=iyN$1lyj4e3fbif~tkWnl6+@q@FhCbLQTv31R}T2=3&p zEVZO8-Tb`l1Lou1IoUQ{y%y4<5MyoIIJ_gqwkv+1i&RN=E@7Bjd* z4u+FX`{Ts!4!#m&_Z55+FGX@E&pD_$^$w4x`KYZ4QtzWrs`sR31sDG|Z?=r+itzqy z>>BA<57TY@H>S8M&f2Z!)UZocIIm}XL1cb~Ns)DH=Qy&i+~<<_Vhw&0d&@2CT9}_9 z$o=8ao3zMR%n$GU!fO;E{*fyQPc@>bPC03{wde=+rlPMS&&{Q~G#&`~*^PP0cvQI+ zkliTLFqDC^E+4W!1N>Sc=pd3K;iqCTwjaJbk}IFbbPrtw9)3_T3EE9@J5K@o4@h>m zz0hF~`U?C^?!3_K2;la1-b=9M;XZmctwTHe}g?eoqy|q$Oo#7f>q_4KR7Gwb5s5D$ z4?TCUHVwAWQy8x3p=4b_@6%xPcJ%(l%aS)}w4D?QdeZTkO2N2;0BYNoV4!%vL_ldW zJ|)TF3YRGBNjq>O_RtS?*}EIci0ba!-tXO8?>Q*Vtep5oQ>dpj8oJGDFy|?TsDC3a zpHvg{d-GvXRm7hk`{Q#8AIF1khi0nO#LO+X0#l5wPx+S*LSqO&mV!nDQkP9-|Fw8@ zk!pv;%=q1x-G>`+wr-`gySw2#5fLveI_*I(*;g}#SFshqd)0#pa zhF`1Z5e%$&vh(T=8`&!9$Z&oe{7`g@jfeY#hi>t$QBYl0)B{7U-^z$7*K_WERb`QK z=hbDR^z#9uPma@Ht21v*H#uW6>zAe?j8seJUCq}UKoMN9FOljdc)v7ct7d<n(yP+w9!@0qQC7RW}vxC5D@wcRAi zuw>$oY}5MMNm@WM>*pJq3Pc9~7*`-0iZUjVZ_b6g-{*C=v)$=jr^L?KSAM5mteRqj zg0Z>jT~dYLWIdc4J)Lh~%l!(fxeLwlbZ#7T;(odt9vXQ)^x9?flZ5y636GIm-+p5D6R$SWl z5@pQ6QW&)HAj~o$Lm*reLX+pJQ|CzAIjs_PI%O6Msy8Ejc*yvl@>mWqHFjI?{gR;% zyvW&}B>3MhK}+sz8BHybHHi0y=9b<91Im~7@q1wbDL*hX%6--X_B>M93#eSAb^t!$ zkdeVmt2htnPd%J9Mr#J%BhGF}8w+l$&Hk0#oxIqC3kmp5v`(?|nHAo-I&R!%CKhzu zS9>g~Mf$^e9+nV{6@30mIu+MzKa5t1ONE>4=8qU{RZABfk2j6f*bP5Tkx}GqiGPZ)U_egl>pds}VBY`xC1+>ZKE54S-)9`5qX9$hM z_fU%?fN0ojc;;02O>p(){R*3?rcxI9Z~C`1>@J?aZvKJX|1?Jc9(^mYOT6V3HsxSt zE#jwPkYL37ryX610Ta(g?H=l#ZZqpcwc@x)%vASyQFRND7YB^#eGKk2kGkr`Ixd9N7L=Et9}0B z-2P6-+4KM_GV)G~raBF~AQC0p52L&JwdW5onBkRHt+4-IdzfZuntdF$E?p8mDgsUI zY;Q-A);&C%-pqPl6>Q@8A0dq^+x?q`wFYzVD{I*J7aeX`0+-Tv#_Ss9rva2uKdESIBLDL zs2`rN4VVZdGsTI^u!{Z3aoNE( z#A)R3dR|HIl1!QQ>vU@L6KNMdmPVBt=i=vVlhJ?Cp~PhhLik+3jW>p60=(V_ZYbm6 z%KTy90W}5`o=43-g7qG2eDj05KJEo$iCHO`6a;r8B}J6}y7(0q^XgUs^E(4$l3V`8 z=y(xq|8?Lzp>W{Lowlm7OCtFN}DU|OPT zpyE1@vioNPT>M>8q$ePMk^mw35BNI3m!5vrKLhv?plIAd15xl|py(#RNwxqT>k?%D z=;&cQdllytjbDl+eYO$m7h@V2uCW*}tTcB--O{|VI_b%L7i zpiBqQ(9d&^ut+vf0OCx981(C{_`=o-U2jmR8wMzUJw--SpgGN2R0p|=J+W%jy&1?N zg;BY%r=I>s0H2Ukc$c=_9G~~mh*53ETn)2RSAevHgX+xH&GyF|oYI-NIve-inyIM7 z%{igcYUx6P$vx2ukG-_N>8fRyXQyR)d_!4hbz)M1am=(=YFcrGu*c*m&QjrZa9*l} z|2+_K9DudtW|*=|Arp@3->wu9@C&d?u>Nj$5F6PIe|y^S2G}g6JE;X7KSv>EX4XMC z7(j~{_%nfXQ{L*uLhA`=L~=Dco>k87A*3?^{hISIK@73BqrhivXa#PVvFtE!sFz7w)&CB>u{Z%O*EasMd?X{ErU4q#(MXm?r(f?c_(L;Z{ zl@!l^BAjq}3uKG>KHTgxp5ms46(F(={U3ip zl^p3>tN^@Q7f*fFy>pD%gQFt3hW*(Hsqrcp6a&teK|66#IY<-uQ*v zSc8~UCnLAPa`>t69+mdQD5Hdd#$LjYcMtfGk)G8aS6eoVTZiYr^7Cd|(_Cx){e34o zjZ)O$!V@YYICnQ}yubRgk;>j+0y0W8K7k2f;AFH;6cTJnDMVVdVjk3+_km2UE|t^D zYNR0X%Mf(`dw=i6r&JbSn&4994=~hV+4*6`Z8adR{MdRan-rr& zKnTI2`-_=FD4SRER+kl10rx2q3?F}#Hm&FML1fV+hWUc+N+T}m=8=DUGVj;yz3;sv z1l$W_GCFcoALo*TF=*9Ye-4}JM8wH#l`A5whNu)_8dXu#*RXssC=--_FHRx}?vgjG zZLOag%`~WY+KkKWaOrmx-=rIQVZLwFGys3IG{AYdiGGWkJ;kB#Fm-^1j);HaNAb-3 zK(Ow-IC#6bX7Ao|8;HBRH*U-O+b8ZmH;cQ-=vXmpefe+r+Um0#c=5B-Nln`8C^}>m z_+GQ-y-sF7vZgCpl9XrV8Yg}YD>046tB~I%=@Ywf)QL+&G!cH1g3ZN1+`vGRSJtM2 zw#CfRqT+S#x28bDilLG9;ncw0+)fNEFL}%xSd$nuI7ou@qQB)%kG{f%M>jZ_^mWQ0 zoM)#hBjc_`J?f-2AeRri8l-5V%HnE1l(iRxb|K~?_==(%6P+)*?Nxn6B5%$?;_KXA z-)FL`U-Q4am~e!vVnQxY)?60>t=g`+UYS&taCIyDWQ5x=RNe) zK`Vf(FFhqeH*W8Y7{#m_{l)1r!P%-N-phVmv}0*`jg!h6Y6YXFR~8!yO-3A3yq;d8 z+KUJ8Pn&OdMVrg;So8Apfs*3FLStEKj@nac$sN)Nyt~WMACOm(ld%qkg)0Dy{3dJV zvoOVfb|fzYeyjk|W@oB`Ug#HSC`R)X0b>7cC|)tBIF86~L8;<(y47;Dl;0igqXPT# z#3R>PPN&RJjH&f|g}evwSe?vamCC@P%D;U1fJrXWX{r-g3K3ZE=Yujy;HXN!6uHtK z9F&1Qm!O*lc*4#w$9D2~M~x}(aYw{4t*sIdIVAWYe60&7EClNY)wc=h_kB^LJm=+k z2gi=rC058ob;%~~!yP+e54JZSQsZPn=}qUs>qr#mXm8kbXXbUulsgUE)(|GDORc>D z05%2v3A`k4^rG&L>C|_j??lVaK4#LAvmq-7W93TrE!$M*-9KF2$K_EuRIx!U4RS=B zZx?biATN)s4RS4>{^i~wd)2HZJNX?M(wm)N8mnHfUZ&3+M?+T~_2Od@V4R?$qOK*D zs&&({Za&nu@ph)Yk@nSC`%^Qo_u@9S#?$IM4MjihRh5rtBkq;UUGUYiq~FwLG-0Rs z$kavrH?G=pny$^E^9}?frC_=1{Pj@teDi5aQ}M(mr2^OKRogP%01-zT7hQV5@%tHi z6hdzp4h_~>a)@WHtW^L>bzHx*r%SFa>wuMnwtkGN$Oa77H^#0heXb z^vV55`7laPAt~5L!V_W^pYu9*uKeC-;fjX~G)buy)FFZ4kj2-@GS(%*WG`Hsnt~Rx ze$&%Wlz8}#Aogc#nnX74QrwtIuPkTu*pkn>mHk1YeG}JWA8WI4FZFI@As8-;C|asv zp^Ogqt;|6q4ha-0*5dSWKaJZhNpfTnsL>(o#+M0p{e59)5PE{u}dHZi*^$lEdqAJNnZQxsOLHAv77xOx7%(v>PaEG zl(%b4(oc={@bW#088XW`QzHh0WSOv>HymkwrEifALFOE6+e-gAY*Lz>o*ucBEM;9A zbOgkQN(+%C;9p@>$?Ff!c%DWYv*~W1_72-TO4Ee!`Un_m5~;mZXrNyAvz&E*4O32n zy{zbDBx8w&mG;8aX{nf6r)f2XL!NJpp4weBDx!-7BiAYek5@B9Tn@B@Y7hCdSgnY`FyX@lxkcJFM zLa>(zT@p7zc3V^&PT!%(-`BZBl#pVxoSn%sEA7$BfzoOV5+bojP+K~l(Rv#j-~}D* zjV4^|^qk03`>ydOCOl&5!{1^f69%Xg9w!o3h*Qqc@A?XDc~2W1ZUoFrSMiCb9xi`| z9>gn@8*k?v2-xXRVp^aCh1S|%0t*4v)5SPSJtNP}0UWlJfo>5WJPJ}AYMfwGcwk`E z^Brx!(~}y(_OVdH}2&A1^y&7;spG;?HO$b!$VhEch?C2%( z{1zERQ6q!4Qyj8IC9gnNVlowks>=I>4x8jpar<`+y3W$ejeIL=#lCZ56wIcU zCklhaXB))VRWTF`bplrNoCht4)<9!!2@-Y;qHELi-~|K}k2dQv_R^Q6#q!c;`|66+ zvs1}7-r_dQX%GKZQ0X?fN0RHmMD(Q#INXC&v!jW8G})&KU90$7a6nBAR;ua~Zzb#yC3M*fFPLKWvn5lvz@5$RTq6^w4KDjc+k!l!gB$aY%2L z_ddVIhh)o<(uU)i244t*hX^Dn(H2Sm&Qr^Sv$+#wGT3lj%dBO$zOwE<;uQh^&iN}C z#sUo1-)w1g%qbA;03GNmZ9Rx;y`XSwCZh7cbwbIo2nI#R3j@)*fa6_d7~Zm^$#-sv zCro`}sjCvZY^T>)zAaBS0#QvIVkY6BW|{B}6(}%wm?!Q&M#XA%{Xlrq8c1OzWhr%7 zE)hq~jzVmC<0G^n`CGzN=MWoJI{tDx==Agy{B62fT(Q$((AcWILi4%5+WbzM#Tj%C z9K@X#G91A9vqz5n0Fc4}LO(F`52UsXff9QR+Kkxjkg?IxIs_vlw2zebS`mZE3hh(( zG=N$&UF)d8h$uP34TL^sXAoV_*i=MDs*vppAKAg_fj+$(&g<{n?m;-WbCpl8Y)JOCS z?j4V=2%{RK)o4^l@V`_++&4d5JY<9exTH-Ik}~X>ESG+6$VjsbR*Qh8GerdZ_z4f2 zXLi;;1X%exo;g|AjdFwJ$ZMPMS1mAroi}>bfj!@WsF4DCKv=bSMmvQ7U{A47%qyZR*v)qzWQ**FdYG(Y_4P zfm$!m(8hp(p`RVH2O72dTf$j@u?O=%O_2xi0wttVdo#lYCj|a>3f$fP_~;RGuNg(( zFl8zye|hro2&w{y7d&hg9NTS|^QzV72aB-*e2g%`M+gUSaX3u@qq30Q{rdX4N~Z7^ zd;^3B4;Qsf5)O_`ScRXK_{v^gpxP_`KE%v%Hj!n8boK*Vn@PZ{8fs+cKdfZ>sJdUG3EE?VIhg7E%-Hna*1MccWM`H*{ ziZfAdj9YvTTG~S0!L;6-YC2IjH6yL|O!EBvt$!)CzK#x_2=A(h{?-r|HoDnAk8Npr z2fAg9T4ezl>#TBNyyZuK51Cv&9&JZ%1{vcHT?VNl%=xCOGFKSXenFH(R#u`%Z1!Nj z0(d2y-m6$=5jBJ#gv~<~y|g&TUq9GI1)eBYo1kDXe9Y4*4zZddcYq=3MU$GiW6`mD z>@|`aXeJ1RwCaXPP7Be)allc-@%{?7hA{BUe2kz4Q7D)qSiTg|XP-w~w0AEYoZL6(4 zZUq1*ax{`@W!T^akYi~JoA1xcQje-ENiSr=-ay`4)(`d*uMQ3uG7!Ggp_;r{ZdAfabr+8B zRsA}bm*Vks%FDU+<2Ik8w}vE)=E$(TFJOSy^M3_JA;f%M(0t*r7A#Z2u-5(l$e|mz zg+NR*p27(Wz3G&dm4WG*z7TYhO(2V(lo9u_ee9bQvRf-klIBof9xF5z0b`aRHhuN&&e_?C3$Br+ZX_+{Hi2%g($1#7*! zKY^&*<^4IR54z3virlUkW53HKW{1O)n=Hn9hs4P>b*wYoo|%Ut)wdY$FEoY2egES@ z(ZZtSA&jt0PQ{>ahR`~K_|c&OYLVsufi^!uI2`ds#<~<;oarALiBzA86dvumQ~)FE z{>-nPlB&U+&+jL#r?WH2@{ywf43jsLjDs-l9c4JR6GI^&9M*oEeIfP=X|(7~7_-pG z@snn$3mFVIn~9R?9yFHMx8x{M6FSyUja1$2YgHZG>n@^G9`0Jsqe-`m7MgCHHP4OR zQhy0Bx;*Sldltz%U#wFuz}-EJ2IHHAZUjK@Whw9VQigq{@9Y}q<`~yIXu&w@0RRQ2RpIs;Wzo=7mapG`S&%Md8Z#JUvp+2eO^Rw*nTNieA2Ot9^c?}Q z_^%%el%L43Usb(?IHCLX7rzNqzv~vuJ;yTvFU^-KTSs<@30q`sv!3L34re zg*L`Hd%>ik97JUSao(eZbDYgl4K@lD3#gKxU@pmt^*Hfu$|Akd>7$LEznZyxUFqe@u2jac`l)8$xniIDUvm0lu=;sz!SV#d=R~kmU zziHx)Qi)}AA(Jv&PdsDQbt4l{*1Vpg(OzMyj&B(uUMvYluWhP`HT*-Rb#sgVV4(AG0i&mF51cs*?WQ-$NbUJ2(~1 zY%IlFO8CqiYXdeeHfQ>y47wy0*3p!Y~Q$=KD$j_ABQ5kQ|gY%j;e` zTWd1#`&IG9E#kvunXQIK!dR2MPv_@85|czjuT>?}ZfeZSAPuM7`Jy*gZ&~R0cgQ%r zGl-tPOT+kb#$z#peIol?+@#)(SvHgNKkjhTnwE%6_VD5C;^?q#LP8(!RGM`ka` zkRaD~rD}wT`#bk00s?=g{He~&=8|%*otrec!|j=WXH;A&J2QT-L6cVxSWW~`1e7fO z*o_jbE=d?>o3^bc%_U+JuYR0{WaS9gS$J|R4uV+YUJ21x+E39l+Djv;iHV6ks7a)& z4k|Et zdo57Y_{*U&9lh38+*szIsJTR0aXO{eMgBZyPe^gLs+Q4$;iKxnR9cmG3lPD$%<>@z7Cs(ibRZTF7R^ zPlM{c-9M6v9iJiQ?y{$j(lUV5BO&pz_3};ViN@v-yxw-QQ@xyl4_Y})*v(g>1{0c1 z!1&Vea^%iyohrL6@=qc@X^D1{eIEvRlPE!zrtd!gNqXfEb`~zrSI|_gW&@TXKBWLE z1z5oWuKwvC|1E5QtqeD0lE{r<{m~XcG3Q+PAGVi+xs?QHfU7*c$+6%KRs);J&Bo7NL3+*ef^nonu|WYDYjnn3&K)Gz1t(oeP* zr8k}j4}Ll+4a{OXB-qzM0Z@sdht}-!=5KMoqVWH-oBFJL4&cYYYOA88WIBCu<&#Q- zQ_%vzB3&~ZNthBqn|-7=zIsd=oxa(cU{O_s0jG8YSQe4xd#>Ae32Itf0b&7Z0+V;2 zGt|1V&MY_h2(sT+SZXn9YS6iM(>s|k{KE}(3-RI7&J3ubV%j7TXkgN(kG+KOT>cYNaJOT z*3!Mfq~mW!a=B2FQILN(-)?8+3k5RxAA6g(;(4`9Woj&OGT+<3>BHlmSb;#A2-u&L zR2*oT%4ewt8zK1^e48#{cmL_#%C1dcfpTiCrR->cuaIsUYFZlVwC+Ml)NR|exKXJD z-(7d<+NrO1<@xU5RI`A~Lsrzg zr{4G4lHey`Q2xM>_!AGvL|^v$I59i8%d{%Aq@-$*NqzVNtekgch|#wXQKdNRSpuIs zfOHcj`o+!NBmCN%n}C+GJz+X7Q9{_4AVPXgz}&}_6$LsSKU`W~*31a8EWo+>(96=y zMNihtUH!)#pE$v3Ued(!{lD|I%$YfRy| z3_hm9+@zlF~64ze0MO!(2dBI+D|fFPCABEhQ>`fWX?4 zad|%Utks&)pM`lDqy}GoU;I<2lxLWm(6f94c0q7ZLWGHb5XyWvS1zIhRW{~`jLtJh z0JE-CS91}u$rdLQ=w~aNFLxfX_URiIrBC9B<#`bszi8*exv%lW!)XR9 zD&0P29{F2kfYGg*$-}W@OYsQwx5{Ngg~g@D%LPEt;TM{)SB-Ip52H)+`2^hdv+=pCv9ABO1V~4(#DRC5PYRMPNp>&jnm#Z zs@zSAlv5V2BYM-k6o|#k$G5JN_d(&{C=j83fPI<{A!m_ckq+3DgdzCJ!WT=!N!%uu zT+gSis(dnyB@O$Q(InNjXahfEtb4~2HdVU-Q3&ox_zM8ZC=JY`C|+d~=HObwfKC8L z?NTEe6Hy~pqR4ZHk}%GT1qR5=>EzHLQQ0mEDl;2G8Ecz28M_dCh;TFg+6hpQ-4fO4 zprl#{5G|Q+Rt$6u-H}0%)dCtXH8)fhCAvK6JSAH`+!h9iQeYC_qt0%yjn>2f?PFm0 z@VCU%<%Ar|_eT0&Hz1HUe#+9M*1DxH{#N@>Sm@}ruh_bZKkfGGzHkFl?2VOl2`Apj zOtR=!*3Y`es@E-(dSmF3GmNa|^8Gm4bmZWkOy_H$y)%e;5G&rsn0-CN8>vv z1T%p^`iQ&Hj;a@jMUEl?Hc|h@S5?uY_D#4yl?$))OqEqEuUA{Y#)ef#1d#{`pVTA! zxq|^o1sFxNLYf~;eK-+dH-O}F&r9|5OmYGHym$G$__Q0I;NM*q-d$|=2XkaGEk5WW z1;#?9SIZ7K$Y{eQ-${N2;7yyW7=UT!4t7jbBMWn6_|Dn4zSA4_QWmTTR>s?4(#c50 zC~}H>3bl~4W|Fu!XvILpovjQu7nVGNbW{BGm3%lyvZ8V6~&JoAmMB?yFnt@m6s4m!J zL7o+%0aIN&1J}pJJ-TV$X6GJvLLmu#n;R zPy*fWwW3ba9%p~GEi#sny<#@_0cd`qLQ5F-nzNokOl+PP%HK_HUzfcLp5D|+l~?au zHA^orieLWVh2)$W)4?s5mRf?q$PExwTtGI3JEY@6me}AF6zNKIh`pNG-S_w%A?p78 zpQ(YY^RjV*+a`H?p-ChkX=sZz1eZESRML-yIS*BWRux7orIImFJQ9);&L=$}nk-Qc1J@V&~Vxary;s5Ily&Ngl=ITY8B3>-nj|>F& z7HJxfsj9M4gatdRjR-2b#r-eE)jqDqwR4ksQRmV><{J6XQC_*X{f_Y=tRv1A3XV8pZ* zvk%II@!+lSaP=@u;n7}+Uacic!H#8!f@Z$7MIC~DlWT1#z2ad|m~(J*6d#n61~Zbb zs+a-l@~R;K3X9Jn&mWvc!J+yw$|?PY5y}TP@7;jY@jY6UpdlNBiE$eueuck}B|d!; z`sK366gha~#Aal1_io~tVf>UKLp`_i8MRuLIRhl-GnNgm1X)3GsBxG5d?Tr+nAgR( z%|5ZnYLEQxm1hWF?u{Sqh954Bk<7^ZCRgh{|UBBcb zV2ziTJ@+pQD_scd_U!X&yJ>s^_up5g9>~MT4zam_x3`(;PL;XQk^aM=@xKsWj^}fr zzu2w3)&1j;U_%nyFHQ+Ss7!GwnWs$iAUjztSV6B0I@_+(Fv(c23osbd+ z34ri3jfOi9z)t#|k1Orx{xCpVnV}qph*UbTL-8Dpt~D^}WV#;LC-nX|3~Yyh1LZ8< z=(^o{v-tQ{CH#rIJ6~}G{EFO~@IfN5%s8mg{h%{1amA>@6m|BOK(h>dsMc{A+J`A4 z@dR^HMrU~`1cM`#8)6co_-r5Y)k3i3^#Jc$^ORXmAVwsODlAKobn^Ogl`E?8+|cQV zh`EoSNDzH)v~bMKR5&*Js1(slLZ^iO*S7?bp+i4e+BEVPL`^9S*yX*j!TkQ8G>3^I z%x(K0smT>m<|+gkjN_9vORW)~TCDsiQnvuC;KZknm|YMYH4$szB-*+z0}C9-em+r! zCgv(sR#t+Y-z}5Ogmf@tuO`FeXW>+U#HwqR8B7Ry#*|4oYlC*U3PKJ^g*@v~c;l+^ z>OAYmu}~Ozl|BN$n{1fFun%h(x2cZDQUp@Vx9$up4L!9HQw8*1nUUj2X=i6%l5vem z7JV?3L;ad}3Gg>Rz-pNpi(PP%Z3)$nG8~$Ni{dK=8$|>o^uPY%KhAP2n~s(Pyl#9@ z#u)`5-SawNn#o4~pw0h`2BA6&ubA(GEAunKcp)o=-=VPX1aC$zg<^2uD?$hDHlHZM z{;#*Mii*08-lZAR8M=j`JCzWLVQ7S*q@`1&ML- z#2{2K&*uBzoV#-_&N{PP%eA~fX6E7y*>3qL{9dq^LiE@zCsDebMN%-{qp zu%KObVgxl7)8FW`*}1tdVBIcurl6!$^};JQ?bT(5SHgf&Vs%pD+1H&|gdC6kf=*fa z6YAuNWe-X)+^$+Q9I#l=6Arx`YtWNtxNFLPy$?^dm)Zo&6hcV-sjuFVQum068*zcF zR`&~|KjhocOEDV^D;?vy5|TqPe{JEBpfSEpQbL;VPxc!~|3+aVgwvY zo*RzQmI3JO%Rb&B7+R|aEOtZiHX|(>dm*;~kyF|Yoh)kE3@_lB#9!jCE2@nX#Nm$#}|+A z%O_Vx#iU^Tl?D3ecFlWA;9~P~pu@Oj7Ev-S`YXroc06>EniDN7+A9B>Gqg#bq-4y7w0k zl*wJa(1dZJL6eYl)+Fx>NrXCJZ*oP4#4_`1*i_NjxZ|ja(+q0#G4MRW%JpL^4`mft@#=O%y|q(rsh61X$F>Mtf`aaLsFGw@ z?CR*nL70!Fa+I(Az4A(UpY4RIu6L$!dH8Y^ddOUarrPRKwkXQVcyx&RS0K3X1_jBj zyTiuZ<&NK0MH#)2Fcc-?beRk*Q)gepDntIq{Vg1COLzU*yM0lM zG8CjkuO;@lLxp>lH3}E5LX*P(`|>~^*Ey>7QYoTU4jQ9!l`;IKiso(W>LdTf*BBr}NG^Rm3-qcmjY_1DL(O^xgbUYlfkGu(ge!a)cpurjItv*;P9rIk zC;qI&eFPO-r8H}4rP%+S&*JaigY@>=5uc8NjB1;*i-nnvu#~V8+ zjtO8CMPrbOfg)U-1)}pZ3_eD|FmQL`MfyB?)g@6VDMbmay*Ev^Z3?3NtSS9A_PMy` z&ND_a%x*u{s4+0>Eu*8FY)tKq4Ah7VP z+fc$ux!|$cozJHB4}MY2rDmKNwO$+1=So6MUdE5H)HjrE&Q9Xn3ZHn?6JePARkl0n;D#j(5WL>NHI(B;8)W>Y9rss3ts&Ug{xF2?slr zHb!&uMb^?6AE_0sMPT&eQt`vx5<4@c8Um98W5-|=`lNFYm$C}s$Bs^_KV6H|9wpuA^AeUkOJI5LXtOuv4{SS--a@$6?s|`tAg1bwrSCyGo-1!i zQ?p}D88?w-L1E;bNgnkUAR4}zl`ku5FzY&3oAZ+jXa%Ck_y;|t%^)*kVwrd^z3}Sy zg@;4E#MyT+E9(xtX){h`7yJgWuDE^}L_*zxn^uIa#y-^*juJ*c!@kL_7YZx<-oA zxCi#B<;(*2)DwQ387vWKrNvDpg8qI2Q2Zlniu<`A*b$S5r-#-$;LA;=eYL<|c&g7pKSss?6^Ms0(BJ`+^y})O^xON#@qMQ#&~84 zYLr#mnh`#dXQ>S8Bp;3g-9|}3{vqC;ho{;047MG(@!>ULA{a!bVS}g}@v8eL)o>lR_wNWp#;6XbZr+FOAneyuBNNq60AzJFLBt16i_xB;8|HWhi4 zVUqcYDdoHFukLR`MH#^jCgdcAGLX$Av4chYyaCOP zaiGYIfSYC;TZ649Hq9myr^A{&51-%orbC93qCq&&UTV&u@)7F;aM>U!<-~PA_$6t9 z&n$$oc%vZCTG}A3KlgBP!G;BPSihL_ebK9k$~$j8`bjGKOw>Twn0dmeDWr4lUe{-h z1pyHhM&M{3x%ThZyVZYy?HyMSTdk()Nytc$bLq@r{rMBDg_ng21^x15<8>D{Va^{J z9W7PU#lV67H$bKdNkx0|*A5x(Hv;?UK7_r)+OYT)8CJqn_my955;)f1$f8kL^^T06 z16Gf2?7tLBf$fGiQ#6(Yb~V58Ot1!7pl0A`_s<7e6}Y!;%-7!P_-p)(>>QJA(!cLU~!Ma?tmv{p}{1k~+#iUfd%bCE|X!T233Gv8a@r5*i~o(fij?`GZdt>1whC#Kvd_}q zrz%gm<#Y&m{v=$_#&g3aHCum4ZRa%DH-Sy{t*ag%#s-hkBsx>IP`E$LlP4nIL8~|Z zfIMpP&~1Yp>=6w9NivZJgmmxyjTxojmN=Nk$iJEZdJ8l= zD{E`Thy*ntwKT*tL59xL;m7`2h9@`ZuKj+0yi%IS5QcCyH*m&Nob`IYZN%(hW**r0 zmKpJ@m-hIG<`d`+1E&PC!@(3)$?K-yjP*!RC3xLzTN4dC3^yb@O={<@2Go?UzrD`z ztN7n5>1fL!Z28>+?JI7_ zMaojGD+XJ%X3KJe!q2csNR`RFrT%Z1&dccw5Va%kUtd2O=lD@lV74sF!@?i0^{H(R z%prQD>UOFi8J>oxJgTD6k{ZVN4|}ia^snC?Y}|J<@Ux?D!9DFgvM0|vt3Qv$53dN6 zQVq~ruQSNC_e4v$%Am@YHr{MoDY7mr%FcgDhE9k}8lK83_~X_78!Y|{A#`j(MU}GO z;+36mI=O0-!y%wgCxhQQvn)dsC{o_XmNHo`tZ&xzvaQo4g^_Wi;H_s2VmnnVvoyctejkd>X~V6nD%^O9+E}C3bQHNG=rxDalIa`ASK$^N@;a$Z=sL zLx|HQ0_9LRd@Q}whtW~_i}7zJ$xpAzg+uwN?n~S zxbFOm#sb7m{x_^b=ZZxz{-x(wN{79gT`1;YkPPY>a5Kcmwc););hELWVeJEV?&KO+ zeuZ$Bmz8D2CYHE}v@ixSN<7I$K(Y72!^NSAUX6CT4e2i(>jDdEM*Jtgm3rmn{;2mK zpVqBS%WAV>mE!!E&@0H2BfP+a;jMPKmgd~jbV|lEmpuO|p~-Ng*-@2L?MQaE^X?mA zY+Fe{Bgx~G@aCN78?^^cMQM2|<42pRZcPTeZoj?LnDCRDL-aXfeO8G)WUsFE(12!F zVDY#5&H(EUQ@)3I%bh;UKj2>#_1^E|*Rv3W1?)W#5M*BY{O-wdtWkY*59C%oj@Yys z|1E(v;=C;3uagD$n=Co9)J5{~!3qO+B&^_Ob9irdNO_U#;{7VKxv!KDH<_B(a#M%2 zFi2!(W-5lQjsPq39TTeTp3#{zm2oxSAw>mWzXr6&q10(P_HNvFBIYjeUkV+chZ?~6 zu%FrxahrhK+Dhf{<~OSzVS!`1crVw+*AQQ^=V-Z0fzD>ER`95hm`KxNdB^63&UTD| zajDBW%;06Y;jz(@$jf-tEp(^R@2Ki9wzQ<{jh*2VR=XbNqAc2{`Z>8pGdUTmoW=v^ zl47QKKU^D2it#dzJm+IjaXm%LJB=ltrw4{j*H-eE-X-zmG!=8;z6*AeqvG;l!JziTOBA>9=?r{zQ7%mx^^7|(wE}MS_16oCob`173pMO#X9CWM~32X14)6w7lS*`tt&Uqx4Y4yfQ*WxG;t3En+Z=sqZ32|g3 ztw66X*=fLgGEgmY+n$@_YUd$K!t6nZ^Y8bt*7JsM&eJ0MwkS=2_Md&$;d`kk;BV`$ zw&_E)H^O*U&6i2GTTkpu_t-w!)?jA^gsQ5+m-&GyW{c-851Ubq6&4Ztb6ESY?)NpY zo?iihs+^)?<~xp;((3B@sSko77wLTi^rc0wX?b?wN?VBi14*i|G@EMllWSuzY6Nn4 zC#Vp-UsI49g>UWFu%|HrjVyV6RU9gQi~QN=o~M)dThuQ{u!7h)Ot23nY=G-sX8pVH z^^xdE2Ge>7oQGVONbcKNhQ*@d;lP~G&frdG)#p|6LafD?wY(N?8vviX4)=bV@i%2} z#mw@0#4c(kyR?DBS<>lg0iku*Uf`n}-O>k$pW-?L#28ZT-gQS43@LR9cn@zwA7E{;#&)jnYxR{5c&mr^^Z0k+^5Y-0n03_#SxERdOr)~ z#0=?ZJX0gArA{mPc#ls{4e56z%Fi1%G(ojLY80*npk;({#fx2+p7hYb?Bo{QQ+`t` z1_sPqM?SiY(`ZP#70S9+!&=8L0Nh@j=OlxVY0 z?eB2{bgoPd`n&La36#(c-l$iNIIiw6hJWL(e_MPed8Wt^yv7--zYl<9DziuDmVVic zn9*RNmYood&wiHdQo<(*f2udlp0qxNnFs1E z5G3t-?N83`1Blvyk#y8R&bDFs7l;;IeJKXbs<&8HJ|d5jetk>8Tpmns1fL#|8#hmg zlWA#1VmA~cB>=W*hCtao*EB1%nUgCx^A60v8GB zGnIa8DPw5SBEdj>>);F#!BA9j!4BJVv z0#CJxlwOf9TrQ0!`a)y*Yk(fP`57Lf?U$J=SP|&dFF9za7^;|5BpFG}KuqFfOH+k@ z6HvZa=U9+mpmA@`Q$(>Sv_WuIwe0zFxKFY*)~M*3*{xeQiU8gKVokfvS%2F02Z0M& z5m*O`s2Acyu*%VErPJZCS6)VcooLu3FkPHm=i{QNbqw41?2vmLyT*Q(l; z6rw>{``{hfpvzLkDHjaZe(X2KN*_hmQ8?A2gAxmL<^QV{BwRhxE+!)G6aw zZlXJ3zcsiq;4S*}&Z%6Pd8hBx5w{9%4Yi9XE8mhfgyTBYEQU#OU=`9mqFqIkV?)z8 zTrNs-mTVd&eiN8;3A@=oDRxaF;~{%~7{GFGi2GcxFOu9P9XoY{C2i=cq~m~~#J17n zfADoVjD5r*Leeoe$IQ_7lZUk&-X&@|$;&LRgxJ)rb1xQFo;T7(N%F4Djw_4UAK1K{ zoTSDDIrFve4?U9op=@tEIM&cE?L9ARpCpS-6*yfWdpd^`<>Tvn&!vl`oY=c|r0=a~ zZ-kJ7ma;me&@SV56B84PU?G|-!O$~pXX{g=vX-0yV}hwegmS+J&>;UrF?eTd`oxj) zd1HwP=}ByqS;n!+)9n%Z<%P<=>3e5W_@l(Lf>)%mT#_j)pWZg_Dl2Cfl$O_Jk+OHk zG%P0+cDh<^OmwyaWm*kGck#Tn=h2!5CAo6n7z7wpz>?>!Fl=IG1xnS;+oDgQ8!Xux zVn<4~6>sQ7ql89i*4C^dKD}a}_nV?DYH;q@h4La+OpmIns)F0`#!-=Xw$M6U1+-@g z$PHC-W2rc)=G{ED;~=8ELg1>KG1@aduuoWdDBMToX^<3~zc%K1Z@-t-?mg9fg99tp zzH>r2yUgPg3`-9t!X*jF)U~}s42^_T`t^AcrGqJ&HFD9cKMd=#uvHH;*ueE$8ltn= z&EFk`Xq%P~Gyju{xrr;~8^4}H>npy7xoS+DR&wk#+)xnCZV?71X}MitIzOuAk3Kbk z&n+UDIO4SDh7BdE@!X?=LN<^#py*&Alcb36Ia*LWx%Mx1m>DMhB<_p!;Cj1Zr7`n@jm% ziif12=dCe){~fI3bmd3ZH(F?qA5${LQAS%D<;h{fgFms{ty1GtV&UbYPhOT_$CIN` zPeD?&J*$5@Vslo%v9=}c2AtWxoX>$xAEDKs>f)JM0aU8@t`5}E1Y*WprQ$RV5*7 zbVtVN0b^S6dvX+nUK5^9kKV|e!oCCx9s=Xau&P(u88LQK{D_qAFPP|BG5Ep@zmGzH z#QNw#5f(Xsv$9uWT5u`DvZMD0(m2B!`}Ae03xwBAH~dzPRx6bC9TRnx)(gZ8;U_>k zwO_v9h6`ri1x4?;snISzeON_Ug|&3`q%Zn6BrJ(JSjUU??IwxzfiKJQAUqBqZ!5XI zYV!x@L5iQwDXrUZCxJDsDn_`&l?>~b{|T0{=x@Ik$+Ma7a{I@ zY#u22t-vaj0|VnBSWzro+?Xys$`2R)0Z4-mG6Q*NLqHlUpvu0V40@w>`Fr3%T=2of z)RdSwsBeFK16gkPgClP6JOheGG<@i5f7o7&QrQ@bdvtG>3m-wDS4CKc8uhC3qf)(( zz_;wfx~_agdHRd*l8Du_Q-|sDD60v0wwS?a;^HekDbHZPvz;#KSU++867)EwYn;l& z`RM&*)xWTuM}P8o^-NDB=xTye_z<_RV13w(QL^pd$FTl~4yDrNJIpT@c?$8gxj-UU zj8_JV9+iJ-5k*V4#7>@PV|Psp)+nvKDxP&Lt{`+?A^>IFocS6Os&>tWv?qalGEhYS zt0He93q?3uM@9_c<@O{`-H6~CXvB`q$ZuL#VYp63$_$M}x*z^d?>PDOD%_7dsYvX` z66+#f1T*?rV6Jus&^*tIiF>J5?k}=f+>P9Tjtdu)I%W!ybGl--_cTfhU*Sgz6~u(U zjHje^^r2~XPmW2L?zlG~_^-t$--8^z8i&QpNgKWumLVY){YcH4GJpq9)hNku-F=0H z$Ld12rO`~5Qe2`daGA|avG_2m+`K%5Hdt4k3((894%}zrtr3RQ>9J~s@oF4=_0K1;gyx<37t#7kb@48xlA^np#9z-1TgyoSyqK!cL zCH?-aA6n)VkoBtRO=*2UvW_jIk`OLah{*_;=*EA;0DvzaJ=yQ~ZX65U9cy19yv)Lh$AnGH zX?yFRtG}@gGV`7ZMr``H4*?(AWOAMPq(rt75Z=s_y+p((4Yk3a1F$xObW-tO@&W@# zzuPtedE(gjvB>K{u01CkBG$Jyp8F62N%D3n1O9kcJ!k<=D4LT~Su?OYz1-2fTx_LVZxab-0G;&Jur^psGYzrX(~D<%|% zM(fZF>C~o~_w2V>y|@y|UY)3B(QRqRMos1Y>YuuI8d8O18Z4%>%JUKIUtKh;?E5hUnt1X zIgh+;QAVv?E$!Er`k;3kR#8WIsb*m`=1TBAd-Q5+=7()#{Vo4G53B)}W$<_{)BpBJ ze?aC8SQQuH2nvDs)+r*S<-g2ra;Xxylre3A%&>@YGPYC-R$@av@LrI0$wx>6!6Sws zZ^w4q_=hq^q!Wspz*ng|ZqVm`+QRjV@)3@Vx__u8*h)Kx4zj`P|=k2g+tU{enQd3jg+S(Fnk5#F!l#mltf4mnJ?SrSyh(Qz|Y&ONC z;zza<^s-6l@jD<=m{V)R+C)O=%KGZ+l28)0!q0kWnJFm|r@$&oZDEbOwntf%oRLRm z#QTv@zr++^6sF{v9QZRu>)2d;gb>RI$1GkE0`0vx(=+jtb-d zjYC~HTM%8LSg-DrtDnJYebadJ0Tq1|>@Z=e3scO|I~}Qo+PiTaL?XK{Rze`k(Gzzz zg&?jLws&??ZamOL&Xn}*4LJKxE zk=#`_M^oHCC@gR6Tp}Y+(qctYVpbsE&n0rf+vL%VtG^RU7re)WW6Y`f)Iv%Q=Os*0 zF&Q4NRFs+*IxdtSDg1rB;G2GJ)}x1baP+vt6IJCgHeWZ7m3ZgUjP+CHmf}Y~tIR#; z7=Yeq8@6AykwNXI;z(1c=cIo!TcUHZ5_2ZgQqQGi_z1}08;pBm_KWMvlr}%$p$VS= zJ^EK}-}2<90bXJ-_n1KZ3k7xdpvVZ7LOULZ50l)=iMHqYa6ZfC5DNV+hJCb1W~p%S4--fqzULx9*v)G+vk zM@^}(N39rkL0a@rIDE~9ho!Jl_WO!#d$mV-i5L4CXar^u`Tahn5Z@*3>_I)(Zs zCME!!E*&n3gOCw>pxzOR70zHqHlintFTpGa&j6?|Dh`Ck!SLlwuAIvVyC{!l)K{mI zI_};!aPv2b^`$W9VmD~KMf#4mIB(9vcIo*cM(R0B3QK7!2i7llndf`*7nis*fKS7yycXxqGv( zcVlwR*M}fyIP;!MJxt`{WZr-N)opsj^#g;w9CDCd5vgjSOoc=J@q6y{-iXb})bxFS z@j>RDJ89Rq_n=v4KIOaND);1f*sF6Fq~iF{do2P(H;-Gyer0+A-zHG3)3V7c66ChQ zjix_bR3Kqbu4Fb1R;QzFX(l?Cnj$|rX5X31^3G+4BLNV6YK;kWx=cCXvJH(%_)A}B;^L=T=O!M)Xhp`-Vg6`I@p zQj4vp-VDNBnl?~S@!agLI2_v;_;$KasVsq2=u3V+5%(Zu{0Tj0!5<@Z1W4n4UlfEQ z`37(sV|2FoH@1;=X}iX5fIn020L_0k6&Vet3cs{-u_K*c>i$QDQp1^u&A#G5on2=R zRO#Ya#cH+D4DUy);XGwj*zjtzW6wSpLzB|Q=hx0OKGob~?Bt?dXyuc<&43PuZ^X)- zX)FG$iL7;RKlE)~4r<=$Y~dYPgzI&)v)pfBx?1{p```}o$SMhB#``B|g4&m9+E&4L z@^9eLK5S#ULqFbf`Yy&av#|+BQpI7| z8d+_g{1CmA3K!n1waLaaXhcCV8`Ig&Gk+HlHcW7}&S(BwN<0?!Am=h(NnORrzw|G_ zFnP%(FQu?lY ziDCRx`?^KJ7>3ns7`syj-)F>li+G+*gTn`h{?k%Qs8`UO$CzxuVTPY6qe`TS z22UsfYjoh7_9K{GHrF-}A(;$b!zSqLX#j4;Fz2(A5Hp`V+z#+PfXDv@nbZ|$jNk~k zt+Ypc;QlXI1%LX$hlRQWY||u;?Wa9XWtSo)0IQ<~I3;4^g%(Ac-0wyV;1N^L0oN9G z53|@McZe)*>5^nXRaI1If^R-Rb0sbR-XH(BbSOubPW5kD-6XBZ(X~cic&yALjf`9O z7eLK^;z0HhtUlT=J3R~n#)qB%4hSY$Np?+wvD2q6u7OT)+on@m5`BMF~q zGtdfQuM)=cnTQl_efTc+ax@>{XNfWjd(VJp35c-a$(oUtSs0!Z3wqh|Dax8aQ5g#~ zSqIpRclbcxrvfJQkeGXGJ}|udg%h z++rNs#@aqcb_1STS+|hdGJ2e}vQ9!5_ftMag|p1oMwph95vIL!qz3o%0-fQ}$w~dB zWH#Hn4tgEkqD9U#{oIks(UyDX?y1i4S8$8@_IGnVUR_(WlrY2T2%RZVsr4nBbQ{Z- zd=oTNT7FGj+>3GXbTN-D0eN^0))4Bi$&9l1hSr-9Vg78Mry^vssbY@;SGO1P5o_+; zh+w$?KMux6nX9j{P4OapfStQ>Zz3m|nW<7|Mq-Ko(wkmBv0MXkV|>kj`*h%2v26kK zY|xD&Q9p&1oIkK}MwfS76_MXpFL_nD&Iryx8o<`~ci}o~4&gAxlei@qPzHmGk*cFP z=?Hc9+@n@=tjFEJz7uhWh%2k$+(IdCO5T9Xq#$7AMV0~|98wH6E^=~dMm2@u1|3=_ z-~qgWJ5uGZ7`}wAd9;ay9SM8Z;Gj&U8Kkr@M`TY&0B@hgkjzb?#+mF$HLMxP?S=b0aPN z^H5o=bqIF-+{Cq{pDoBz%w^4=GX9$E$Y%sZ^bl_Q_6>s5r+w@UML_lW>_iE7BBByu zjNS&h_`FY`=<$MeFDu_#Dr3ykqSK2HEk)PcOh!>zlF?P8$72t43yOfX*iBY%liShc zli~iBXT>VTdp5fgj*YjEPiLw_c|``8^30YS-YoLggFInD*Svw;Yy=dMv^aTQ9Zk1} z@G14{uMC=%`(W8OqohpOg8V|y&>mHLFX*{pgV3XjXV(8P6gkLl2T*ek#R~1~$33bk zbG6pu=^TlzsLyeszCf?`p7eYLAZa()8)ZF(IR)(~r8Shq)y)jiS%pWW_*6u#|Cx^Xrr{vu$ZWna5Pn_ zv19?c!77>m!dXJbEz;1+BCC5^S%LS&YDKnPs7sSu{B|6l)ee{8FA-EhZltM=G7tUg zY|XHmwpHYGL9{V313$xOoZ!A?B(+Go?%iJd(%WFBlgxo(s2TbRsFEP95v+ z)zzt_UL+q?SFv>bEe@U#6n|I-U16cG5DIz@{g!M0{vHkd&;csj$qSHT{MoE+9nM|7 z*@W&h!-x4d%jn$h0_^hi&h70fpFEM(`Lyr#6Z{Xmx6GB?79NN&WLb1^3+bEIc}?tu zFp`dK9s)*^%`J4dIYW99!5>99MUj8n!ueX748f%`|1|QK2J-Iq?I`PM=ZTskK@zta z-g$kE0l5sRsh_^ZOd8)NPO}6NriBi`{VlLMme63q<`mL+JT}2Z`UmH7Nd)g2HA?Ei zw&ZJ&J8+jCsT<&ECL3`zjm$XLq7YOB1l?!gYDRSVMXH?47RJ)B3Z?B9hNEST1RckB zWL%aK>-7S|=8cW56-PJWBG+2WwpQx{AOZ1+g%&72u|R>6xg}P$o?_)}+{&mN)coum zJ$jYf-O;fioS$^Ya=q7Y_k>Sjqd@fPR3-P+HlA{|))H7Ow3@pk z!jW6ob?{6)D!44`p=&4bMcP9k?K}7R?o<|HlfSa6Dgm)}mvQQx1M|2Htm#OOtnT{2 zbLJTueR{sJqe@?$ylo3ruLuRKr&Up}RSde1d=RO=fzl;DONK*fT;!NbK!-Y#Il(6xEx z1MsYUW|!o~CmFEVd4Hc6Lm044UAYVteVE|dWF#M7-ro>9L)%`AiedaC3<=xi>K}l9 z02Ui_Wc3b-zy&WRn*!aR8g zwqCj1J%q_H140dqI)A@Ee3Da!E2#_%h8lU7@(DU@e#kr5tzB`Tl1RWhD)`CC$Gi0Td5k5@tZ2HHOE%o}G|Daf9H&SEGGR$G~ zb<>3=VBj9Rfmv6wPsSAI^%V)RZ~$qg?JPklcI~U9L>ygN#3P9RICfmiIk0T(E@Qap z6}Ve{P9!_qhg5V+wu7u(c}lI^9<3s8EE&SJeZGAFkY`1?Uf#nm&E!L7vvrA7uU;0N zzN|1WeKHG%1&<0YMjA=MS3+XpgUOC=Zcyh*AJ)9?_ngxRMSDVTb!Ri`h{N`XyE|8sKp@`K9HhGID-+y%%JJ( zoi%EWtoO|h5omZQbHX)yjslX#5^5AKD!)!&kANxleDt$BWax?U@m90k&o6GN&a-Sh zw|ZN{wriBGejWR8``?ole7dRqW2^?P<%tSAJ-u>gTqU8Yq+|(#aA-NfnD4&baZ|y+ zu;;6EIM>%ljhj41lsSsDY` zJ^^O+{w}Aei%Is?1Wwr;1QOd*aipG>;kG<$_0!~j)uRpcU0MGN^OEf_Y!vwFi0H!nl^H0xs3J@pYhp5z@ zP(i^j?B{25-VZ%L4X>K#)7Y9)cv;>pB_91Cy>drA*3x8n8Qh1V;s53br3L}%e5WsI z_!Q?b(;>|m7o8OHnbDKExw*<)yLRNxrY?tFmp-jvcP@V$%c;C!_&yI9w4{3}$Ijqq z1b{U3_SBc(MUrI~gNP3m`r0I|1p?xH0#hfWgaar!Y*Ihvq!0=qgub_t>>x!ffU{K%pH@bH*-ro8d3srJC;4g zc6WKSA~t@N8_GMhjVuerd+XKeAr!oF{-J3&#Fg1}*WMLUG1Ntrt=Bxt?Toym=}w_# zlmFo@_Wi+sZ_gxt%Lp&RK6U)S60;L!A{Q}DHd&dfYqHGRuZPEo9NgeAWBM6ICxuVx z5?G~w;(6NW*Y^<-?}=S^m2{Yd6OY!Fr%2FB8j*V?gyM!%z3v^E^+q+pZ|KU9sh`0g#jjzmRyRr0m(4XoB(kVPPpr&-tcl zgBh!wc!gI$F&vk)5^1Xw&eh7kD3FqW?UqGM`=AIT8%bNqkwQuSA=2-Jfy3qID~MW& z2d%g2<=S4B&5P6V)=_I`(61QAW*-v|;IR2w?LdVjhWn1xM}stjl+gyTVZbHnDpQOmpgHnbk8I{ z;0*r53BH&)<^&$6{hRXBb6efng*7u-*}eSYTTNXSoxIr&< zp?-;1@^5zld#sJS?p^HkuKx6{EfKd!#65QW`%$pQ(v!-NQjbS8pZZzY!3P7}p}fb^ zlR^5r6>Ps(*73+P(gnM+7BWT8ZnF~x$5~De-gd!ANOo4lU;UNk6?BsSyERqL6m^D0 zzQn!d>}E9{@9QM_@ukW{(!F=I1qf4_ng}J?02v3j4fxQTDLmK+~T zF+e4;$CVp&RhK%X$3rJ!u@vSPbq*bp%wCq)WfD%SQse)W7dL)(=FYI#)Kl|Mx_pRx9{ry0TG<#QYM zy%nxJqVB>5?hv0e{HSE?1h=nl($^kks!=)Z2<_3?T6;m6ifmOEzm1gHg>Q(E`>BQ~ zo79rSv+`Pb+)dIIY_%mHb`mwHz0NV))judXi}pK&KXq96Py9OmI5m{a_95;Y(drH! zQ#tY1RO$QQjhXo=KRQCiqApHScGtkJ+@v|elXk>H^7)@kCdtZdJ{PYdP4|QaZKdE# z5ob^~TW1dvMZ9#f`RPjK-E?z!xon+q((pe1=Nz2}O+~W)=ZBB^sdCcuM<*#sZM13q z!B==*>w@k)1|h%Eb-Y>1iGqu)fHQsLL4%&HJti3wwh@Elcx7r>mhn=()mJ*VY}+dI zNkqS|#L{(+$+~BR|Lwf=z0)z}-j|eTY9)CZI6juQ)a2stnz0_#`RmV~^qsCI^!6oA zz97L4ay0e{6+75Kdb6Mg`2z}wqJSbwZ$Yu3 zA{Im`wx0q@1nDBZmk>%wZvNlz?rm6(yUXtNyWHe6xvjIa@B8M>dvD&%N|KDfj0_3? zqooF=WT}cINez&3hzFJ9+*Eed4gLQJ?1XdCqk+Z)VeE?@_QYIEVf@4Rhk2mr@j$r! z7d_1N?L3Ts7=QABo+rZFMTZ`t-2P$px}8`?D7OcVK*9cw3f3i}uIBs5H}suby!E6V z<=f0SRy}3T>4vHE&c&rIxX?LmVP4;~%={OSN2h06CZ=Ut-oW1Q?IC)%JD1_AL>FJRPQ+7qA%*n2owjlTR z^vwJ*!1kl`MV2+`i^LY>{m3Vf&m-p}3p<&|bCJ&=A4A@UjC)Z=rezU$$1SVX5Syl^k@nF*YJ0bYBM&m!By*WF_l zlzSR^2cESY{4g$c{`u6TX$LAd9=Is7^Ewf%ybuid%L47Z*$ZDsCeJ)k6SDeIVEzfP z*p7S-*~q2_$#<4PTd;?ovjPx?K05z z2r^}`xA5~+xp}DLF7WCM=#g=8uWu+7;Cv8h_)CfJ?Tdnpe-OC;2wJkw^%OR~EQh>$ z2z;;*dO}kC8yht~2(*47Q1F-HC;VL!v`Po=-+*@1!+nXDH=lJBcIK>)rb7Y(Q3o~y#7y5zax6}o>w>BTKl71zB%L4!4U#z$c{ir$G{HMS@lw`e8o;d

E#v0;kW4y+_xbcrB^6kcLDtWE!%+~<$y2omy)I(EC;?H0o>_h z4Mj{{d8e&x53wUx`=dYb75)-*yz1chS-?FI{Wq@Q=E-}GW87i{+Q*eXmIXe+ALD6_ zfIaQHVDRC15?3>2odXZNgK@`-R#1FlA9x#oIpLk%6(I8`0(<)FY2R^-Cd>!+`#1z+0f$_WsPret~>g{diIHpG(7-RRhr7g@KhmeNDIGUjIa=8hJ3vDe5*d-Ek99V_!r=#U1;;m^WLbN^4uC7`brfWcaU3-U01rz zjN{iLj;keXr3XQm4?v&4kf~2xKsKXi1=F>8c-M&ulXsT%5}h?TFKe5X>U5G5dhL!% z8FZ#e+Th$<(uU;TmOA)+V(Or?H>C_jd|dw%HQV$(Ts7h8|0=Y6WNqn&9i|m8Tj_ea zYW*%+ncA->ctqick`=F!7z+}cv7$uM`-iHg&OO@{W5joZMvM(0KO9F6HTjSYed(DS z`pqu}f?kG`o5wVa^ySJeA6;KEZODag>BBGvI}H8sFzD>V5Nk6`WFsF%-iN#cISbeP zio6_oQTkBCR1VGSl{z>#J$2BTX2}Ci#U%APRHfyk>q^HYj%5Ay$z8rsc;fMV#0Cxj zrntfn^Uk#ZtsVzIECwI!Kn@k(@?pH!T~^}hv2u4?!$T`aMtd%mJ{0k>!^A0M;X=;C zJ!g=QAn!u{3%v0icw<)D(EPz^gU_d@49scNrtgtz@jW+|ZP0GAJ-*QDW9C<`&@f4P zpO$0SmR8~eVQavq9tA%59ho*pFw2H4=tK=D|B%ek#o4u&;h#1n?;&93D)xo(OFqiZ zK|X-I5q$9j_+k!ZMxWHd=i-z5pNww(q1I4r3#_qlw9H|)|JO{tYpjusqYxueQtI;!JIphjuGcaHu?`eEpDUY(^ zB=T0Z|Hz*JJ+x!;fb2Sy5%t?nD%PgoQLX-F_(72kk7f%gZv0<}BR>@bJF}Bjhuj(j zyznpVpk^NG2Q>Ocusq1&L7=xKK=8N6Gt?{o13#>WjCh|qYRbUuy77;1zOr`Q@QC_p z6Zt-7c!BLlYWJ~_ZXWe>3HYLFffw!oFU$rX{D&NveFXH|Hq(!mb>UrY$+zy~8^)p*K2g5$)7WLLm;D^s3%lg50abxSJc9yS~ zGCrd5?F;#;M(M@tl+X3a$#P7j92^&J~)MJrqA})wd>&@b~lz#drgHGV3*ZY z=@*pv+wv%N%7fsAHINOj(sz~g%z?@`-nlq3zQ-oMw<%tT>Gnzl=lC$58#d(x@BqiH z{MkRiH<H(!OwHYslV={67^{OgUd}(fA2NaSQ|Nc}Ry%iA?pBPc)^$S{yaa!?3CPQ`pwVQ| zDmTPqsA zSS_R$qkbu_*pi%|x(I%)MX;lNBNMiz&dIsXMHyfZe}xAi8zWN&WY>kPydApK)8K~; z(C7ou>M*jtErrrHeII{P{=pZLlGtl+#oDc3COw#p@PbsKQ5!jN>b{DY6WrG7Ut%1C zH{+c!PMn`nvRq}OeZKxW_01gnR+aN@hn$rL{wk!@!DnMZANp=X33Es90^gJ6SMdFd z(2K8+e=O??Ya27d2l5cuQ?1_or!>YWo55$tF$neznE&AwJz+!2ESGG7!tgKPm0Gcb zilJS+QADuU^91dPz2Jo}k8< zJj#C9g+9P2{u0LgtAh@I7eV~>yufkrztIjRVQivxt0%V72ghVYCP+=5`#geiEWipn zf}k(KgX@)8mc){D#sTQ*QB=2SPhx!AvJCda{fu#d z@0m1Ya!N~_m!t1`QBHdQa24wq)c4>6PsAzgPMw?6(4-7teVLrrxk=}bO5k1R74f$3 zh}UU9tW))b?0T{H|5(Ck-$25{r&JMR4tGIUT<#_x(+}ZVcn^RPUvp z@Gts?>F_lsVT_Ver_J^51fRAQ!*#4Dq;UO0| zE^s=Gzf=76^5Gcd<<}gaOzOR_Vuc!s#Ml@gOgl(ExW_s-!faf^HjGu&QV?~5sSa=J zrH=8h(x5B#{wco1J}q?YOZXWrKf!;}n|4FP4(}S#5mb5b{-Mgy6CZ*sSc`1bZaf3t zxnm{tH66wd+qMS2lWXO~-g_$od&GDe=6!uTaJo&LQ-`X#Ew(#6FT}0Gg}CiSAv(Sw zMEmE2P_BV7ordeYQ3oHDc^=Q%Kpg=wv2~i=vrLO`bB2xFpvT)BZ=k&}5In%xl)}fL zGcE5#HAr+;uKt|H0{UYG+tejs=QKdwVgGuL{=|}*IQN_ J7AUiP~XKW!A^&+S5F z{VT*DTZLG;L5NS+2=US^A?_ce@(1}Ph~>it&~ZD)*xrCn)v#&TrH1$*cErkJh)1{% z`W@%ab3IdMV?rwvChasjkJu^xOI5qCGwMvc*X{O4+=zSE{}W>3Cqk?T*2l7i$jb+( zIZ5Yph1hpQh#&qG;@J;`==7p0GdxizKb67QHt34^ufxY)uW{$aS`2hS+p{B+rT8~D z6=xhPY=t@C0Y~EtJ5%Q5)CM_;t+VoYPD_rilgX=|pb^_`C&>2KKN4d5J|QmTIRV_s zsnchL_+^t2{iX=f_SvBC7sv-Y&@YT(ztH&h%tHBqxVE1BZy6@_&4pcq$Kp0Pu<0z*gyE15Z|vC;vCwtC(_YVLcI5-Dhnu6+^wUZ@2Bm! z1$>Z!82DQC+f5-p&g=#Gs%9M|!~j--ZtygCfVzP;#$>^qNoY)N&nQzAjDVy6XLEBK`#e1{-u7f34AaN_CmF&YZD5y8|4MbF5?AL+j;Y|ye>Wg26 zxc%jj;Q{gjVs9*KF&C$2V(k{iEW%>g;;mXd^qcZM5&&n5zqT(o=s8KgvUW3V-`TH2{67Q!@LzTXE$O>3 zRd4qB&x3)o&pJZOJIDXrq1u)qpbt8t_d)n#C&E^!9Ub?4VY-1c+_iHK@drYj57Y

jmR=ODY5cw_;a$KjhTZv{}p)9kNP{9*f# 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 Ybzh2>tbAhKm&FNQtzEBf`(*$B0dR&FJ^%m! literal 0 HcmV?d00001 diff --git a/ss-admin/src/main/resources/static/images/favicon2.ico b/ss-admin/src/main/resources/static/images/favicon2.ico new file mode 100644 index 0000000000000000000000000000000000000000..afa0548e37ba8e8b23d81d23bc8f421bfc79888c GIT binary patch literal 67646 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 J7AUiP~XKW!A^&+S5F z{VT*DTZLG;L5NS+2=US^A?_ce@(1}Ph~>it&~ZD)*xrCn)v#&TrH1$*cErkJh)1{% z`W@%ab3IdMV?rwvChasjkJu^xOI5qCGwMvc*X{O4+=zSE{}W>3Cqk?T*2l7i$jb+( zIZ5Yph1hpQh#&qG;@J;`==7p0GdxizKb67QHt34^ufxY)uW{$aS`2hS+p{B+rT8~D z6=xhPY=t@C0Y~EtJ5%Q5)CM_;t+VoYPD_rilgX=|pb^_`C&>2KKN4d5J|QmTIRV_s zsnchL_+^t2{iX=f_SvBC7sv-Y&@YT(ztH&h%tHBqxVE1BZy6@_&4pcq$Kp0Pu<0z*gyE15Z|vC;vCwtC(_YVLcI5-Dhnu6+^wUZ@2Bm! z1$>Z!82DQC+f5-p&g=#Gs%9M|!~j--ZtygCfVzP;#$>^qNoY)N&nQzAjDVy6XLEBK`#e1{-u7f34AaN_CmF&YZD5y8|4MbF5?AL+j;Y|ye>Wg26 zxc%jj;Q{gjVs9*KF&C$2V(k{iEW%>g;;mXd^qcZM5&&n5zqT(o=s8KgvUW3V-`TH2{67Q!@LzTXE$O>3 zRd4qB&x3)o&pJZOJIDXrq1u)qpbt8t_d)n#C&E^!9Ub?4VY-1c+_iHK@drYj57Y

jmR=ODY5cw_;a$KjhTZv{}p)9kNP{9*f# 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 Ybzh2>tbAhKm&FNQtzEBf`(*$B0dR&FJ^%m! literal 0 HcmV?d00001 diff --git a/ss-admin/src/main/resources/static/images/home.png b/ss-admin/src/main/resources/static/images/home.png new file mode 100644 index 0000000000000000000000000000000000000000..348ff2745beb8bf6946be005e27cb6962a841934 GIT binary patch literal 149782 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%0Ds1xS{U9LbzlC*VHT#VW=|1N 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

jesNW1oZnN!6sWhb=&^5FW$Fa$TC3m-V@ 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%0ARx3e#^u} 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


gxSeue`TOqSxn1Fc! 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

S7_5}NdP=(gJcakr_b`@Gl$zm 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 literal 0 HcmV?d00001 diff --git a/ss-admin/src/main/resources/static/images/logo/logo.png b/ss-admin/src/main/resources/static/images/logo/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..50b706dccb727f6fa1af00ae96d6e2da58571f90 GIT binary patch literal 36886 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 literal 0 HcmV?d00001 diff --git a/ss-admin/src/main/resources/static/images/logo/logo2.ico b/ss-admin/src/main/resources/static/images/logo/logo2.ico new file mode 100644 index 0000000000000000000000000000000000000000..37c881ae8a047de1e378c7181f091e49ffada497 GIT binary patch literal 9919 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 literal 0 HcmV?d00001 diff --git a/ss-admin/src/main/resources/static/images/logo/logo2.png b/ss-admin/src/main/resources/static/images/logo/logo2.png new file mode 100644 index 0000000000000000000000000000000000000000..37c881ae8a047de1e378c7181f091e49ffada497 GIT binary patch literal 9919 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 literal 0 HcmV?d00001 diff --git a/ss-admin/src/main/resources/static/images/logo2.png b/ss-admin/src/main/resources/static/images/logo2.png new file mode 100644 index 0000000000000000000000000000000000000000..fb2062e43b04d4c1333b05bf81af1a2f61293010 GIT binary patch literal 32143 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 literal 0 HcmV?d00001 diff --git a/ss-admin/src/main/resources/static/js/jquery-1.10.2.min.js b/ss-admin/src/main/resources/static/js/jquery-1.10.2.min.js new file mode 100644 index 0000000..76d21a4 --- /dev/null +++ b/ss-admin/src/main/resources/static/js/jquery-1.10.2.min.js @@ -0,0 +1,6 @@ +/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery-1.10.2.min.map +*/ +(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="

",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
t
",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t +}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
","
"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); +u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("'); + }, + + /** + * 初始化缓存地址 + * @param clearUrl + */ + renderClear: function (clearUrl) { + $('.layuimini-clear').attr('data-href',clearUrl); + }, + + /** + * 初始化iframe窗口动画 + * @param anim + */ + renderAnim: function (anim) { + if (anim) { + $('#layuimini-bg-color').after(''); + } + }, + + fullScreen: function () { + var el = document.documentElement; + var rfs = el.requestFullScreen || el.webkitRequestFullScreen; + if (typeof rfs != "undefined" && rfs) { + rfs.call(el); + } else if (typeof window.ActiveXObject != "undefined") { + var wscript = new ActiveXObject("WScript.Shell"); + if (wscript != null) { + wscript.SendKeys("{F11}"); + } + } else if (el.msRequestFullscreen) { + el.msRequestFullscreen(); + } else if (el.oRequestFullscreen) { + el.oRequestFullscreen(); + } else if (el.webkitRequestFullscreen) { + el.webkitRequestFullscreen(); + } else if (el.mozRequestFullScreen) { + el.mozRequestFullScreen(); + } else { + miniAdmin.error('浏览器不支持全屏调用!'); + } + }, + + /** + * 退出全屏 + */ + exitFullScreen: function () { + var el = document; + var cfs = el.cancelFullScreen || el.webkitCancelFullScreen || el.exitFullScreen; + if (typeof cfs != "undefined" && cfs) { + cfs.call(el); + } else if (typeof window.ActiveXObject != "undefined") { + var wscript = new ActiveXObject("WScript.Shell"); + if (wscript != null) { + wscript.SendKeys("{F11}"); + } + } else if (el.msExitFullscreen) { + el.msExitFullscreen(); + } else if (el.oRequestFullscreen) { + el.oCancelFullScreen(); + }else if (el.mozCancelFullScreen) { + el.mozCancelFullScreen(); + } else if (el.webkitCancelFullScreen) { + el.webkitCancelFullScreen(); + } else { + miniAdmin.error('浏览器不支持全屏调用!'); + } + }, + + /** + * 初始化设备端 + */ + renderDevice: function () { + if (miniAdmin.checkMobile()) { + $('.layuimini-tool i').attr('data-side-fold', 1); + $('.layuimini-tool i').attr('class', 'fa fa-outdent'); + $('.layui-layout-body').removeClass('layuimini-mini'); + $('.layui-layout-body').addClass('layuimini-all'); + } + }, + + + /** + * 初始化加载时间 + * @param loadingTime + */ + deleteLoader: function (loadingTime) { + setTimeout(function () { + $('.layuimini-loader').fadeOut(); + }, loadingTime * 1000) + }, + + /** + * 成功 + * @param title + * @returns {*} + */ + success: function (title) { + return layer.msg(title, {icon: 1, shade: this.shade, scrollbar: false, time: 2000, shadeClose: true}); + }, + + /** + * 失败 + * @param title + * @returns {*} + */ + error: function (title) { + return layer.msg(title, {icon: 2, shade: this.shade, scrollbar: false, time: 3000, shadeClose: true}); + }, + + /** + * 判断是否为手机 + * @returns {boolean} + */ + checkMobile: function () { + var ua = navigator.userAgent.toLocaleLowerCase(); + var pf = navigator.platform.toLocaleLowerCase(); + var isAndroid = (/android/i).test(ua) || ((/iPhone|iPod|iPad/i).test(ua) && (/linux/i).test(pf)) + || (/ucweb.*linux/i.test(ua)); + var isIOS = (/iPhone|iPod|iPad/i).test(ua) && !isAndroid; + var isWinPhone = (/Windows Phone|ZuneWP7/i).test(ua); + var clientWidth = document.documentElement.clientWidth; + if (!isAndroid && !isIOS && !isWinPhone && clientWidth > 1024) { + return false; + } else { + return true; + } + }, + + /** + * 监听 + */ + listen: function () { + + /** + * 清理 + */ + $('body').on('click', '[data-clear]', function () { + var loading = layer.load(0, {shade: false, time: 2 * 1000}); + sessionStorage.clear(); + + // 判断是否清理服务端 + var clearUrl = $(this).attr('data-href'); + if (clearUrl != undefined && clearUrl != '' && clearUrl != null) { + $.getJSON(clearUrl, function (data, status) { + layer.close(loading); + if (data.code != 1) { + return miniAdmin.error(data.msg); + } else { + return miniAdmin.success(data.msg); + } + }).fail(function () { + layer.close(loading); + return miniAdmin.error('清理缓存接口有误'); + }); + } else { + layer.close(loading); + return miniAdmin.success('清除缓存成功'); + } + }); + + /** + * 刷新 + */ + $('body').on('click', '[data-refresh]', function () { + $(".layui-tab-item.layui-show").find("iframe")[0].contentWindow.location.reload(); + miniAdmin.success('刷新成功'); + }); + + /** + * 监听提示信息 + */ + $("body").on("mouseenter", ".layui-nav-tree .menu-li", function () { + if (miniAdmin.checkMobile()) { + return false; + } + var classInfo = $(this).attr('class'), + tips = $(this).prop("innerHTML"), + isShow = $('.layuimini-tool i').attr('data-side-fold'); + if (isShow == 0 && tips) { + tips = "
  • "+tips+"
" ; + window.openTips = layer.tips(tips, $(this), { + tips: [2, '#2f4056'], + time: 300000, + skin:"popup-tips", + success:function (el) { + var left = $(el).position().left - 10 ; + $(el).css({ left:left }); + element.render(); + } + }); + } + }); + + $("body").on("mouseleave", ".popup-tips", function () { + if (miniAdmin.checkMobile()) { + return false; + } + var isShow = $('.layuimini-tool i').attr('data-side-fold'); + if (isShow == 0) { + try { + layer.close(window.openTips); + } catch (e) { + console.log(e.message); + } + } + }); + + + /** + * 全屏 + */ + $('body').on('click', '[data-check-screen]', function () { + var check = $(this).attr('data-check-screen'); + if (check == 'full') { + miniAdmin.fullScreen(); + $(this).attr('data-check-screen', 'exit'); + $(this).html(''); + } else { + miniAdmin.exitFullScreen(); + $(this).attr('data-check-screen', 'full'); + $(this).html(''); + } + }); + + /** + * 点击遮罩层 + */ + $('body').on('click', '.layuimini-make', function () { + miniAdmin.renderDevice(); + }); + + } + }; + + + exports("miniAdmin", miniAdmin); +}); diff --git a/ss-admin/src/main/resources/static/js/lay-module/layuimini/miniMenu.js b/ss-admin/src/main/resources/static/js/lay-module/layuimini/miniMenu.js new file mode 100644 index 0000000..507eae3 --- /dev/null +++ b/ss-admin/src/main/resources/static/js/lay-module/layuimini/miniMenu.js @@ -0,0 +1,250 @@ +/** + * date:2020/02/27 + * author:Mr.Chung + * version:2.0 + * description:layuimini 菜单框架扩展 + */ +layui.define(["element","laytpl" ,"jquery"], function (exports) { + var element = layui.element, + $ = layui.$, + laytpl = layui.laytpl, + layer = layui.layer; + + var miniMenu = { + + /** + * 菜单初始化 + * @param options.menuList 菜单数据信息 + * @param options.multiModule 是否开启多模块 + * @param options.menuChildOpen 是否展开子菜单 + */ + render: function (options) { + options.menuList = options.menuList || []; + options.multiModule = options.multiModule || false; + options.menuChildOpen = options.menuChildOpen || false; + if (options.multiModule) { + miniMenu.renderMultiModule(options.menuList, options.menuChildOpen); + } else { + miniMenu.renderSingleModule(options.menuList, options.menuChildOpen); + } + miniMenu.listen(); + }, + + /** + * 单模块 + * @param menuList 菜单数据 + * @param menuChildOpen 是否默认展开 + */ + renderSingleModule: function (menuList, menuChildOpen) { + menuList = menuList || []; + var leftMenuHtml = '', + childOpenClass = '', + leftMenuCheckDefault = 'layui-this'; + var me = this ; + if (menuChildOpen) childOpenClass = ' layui-nav-itemed'; + leftMenuHtml = this.renderLeftMenu(menuList,{ childOpenClass:childOpenClass }) ; + $('.layui-layout-body').addClass('layuimini-single-module'); //单模块标识 + $('.layuimini-header-menu').remove(); + $('.layuimini-menu-left').html(leftMenuHtml); + + element.init(); + }, + + /** + * 渲染一级菜单 + */ + compileMenu: function(menu,isSub){ + var menuHtml = '' ; + if(isSub){ + menuHtml = '' + } + return laytpl(menuHtml).render(menu); + }, + compileMenuContainer :function(menu,isSub){ + var wrapperHtml = '
    {{d.children}}
' ; + if(isSub){ + wrapperHtml = '
{{d.children}}
' ; + } + if(!menu.children){ + return ""; + } + return laytpl(wrapperHtml).render(menu); + }, + + each:function(list,callback){ + var _list = []; + for(var i = 0 ,length = list.length ; i= options.maxTabNum) { + layer.msg('Tab窗口已达到限定数量,请先关闭部分Tab'); + return false; + } + var ele = element; + if (options.isIframe) ele = parent.layui.element; + ele.tabAdd('layuiminiTab', { + title: '' + options.title + '' //用于演示 + , content: '' + , id: options.tabId + }); + $('.layuimini-menu-left').attr('layuimini-tab-tag', 'add'); + sessionStorage.setItem('layuiminimenu_' + options.tabId, options.title); + }, + + + /** + * 切换选项卡 + * @param tabId + */ + change: function (tabId) { + element.tabChange('layuiminiTab', tabId); + }, + + /** + * 删除tab窗口 + * @param tabId + * @param isParent + */ + delete: function (tabId, isParent) { + // 未知BUG,不知道是不是layui问题,必须先删除元素 + $(".layuimini-tab .layui-tab-title .layui-unselect.layui-tab-bar").remove(); + + if (isParent === true) { + parent.layui.element.tabDelete('layuiminiTab', tabId); + } else { + element.tabDelete('layuiminiTab', tabId); + } + }, + + /** + * 在iframe层打开新tab方法 + */ + openNewTabByIframe: function (options) { + options.href = options.href || null; + options.title = options.title || null; + var loading = parent.layer.load(0, {shade: false, time: 2 * 1000}); + if (options.href === null || options.href === undefined) options.href = new Date().getTime(); + var checkTab = miniTab.check(options.href, true); + if (!checkTab) { + miniTab.create({ + tabId: options.href, + href: options.href, + title: options.title, + isIframe: true, + }); + } + parent.layui.element.tabChange('layuiminiTab', options.href); + parent.layer.close(loading); + }, + + /** + * 在iframe层关闭当前tab方法 + */ + deleteCurrentByIframe: function () { + var ele = $(".layuimini-tab .layui-tab-title li.layui-this", parent.document); + if (ele.length > 0) { + var layId = $(ele[0]).attr('lay-id'); + miniTab.delete(layId, true); + } + }, + + /** + * 判断tab窗口 + */ + check: function (tabId, isIframe) { + // 判断选项卡上是否有 + var checkTab = false; + if (isIframe === undefined || isIframe === false) { + $(".layui-tab-title li").each(function () { + var checkTabId = $(this).attr('lay-id'); + if (checkTabId != null && checkTabId === tabId) { + checkTab = true; + } + }); + } else { + parent.layui.$(".layui-tab-title li").each(function () { + var checkTabId = $(this).attr('lay-id'); + if (checkTabId != null && checkTabId === tabId) { + checkTab = true; + } + }); + } + return checkTab; + }, + + /** + * 开启tab右键菜单 + * @param tabId + * @param left + */ + openTabRignMenu: function (tabId, left) { + miniTab.closeTabRignMenu(); + var menuHtml = '
\n' + + '
\n' + + '
关闭当前
\n' + + '
关闭其他
\n' + + '
关闭全部
\n' + + '
\n' + + '
'; + var makeHtml = '
'; + $('.layuimini-tab .layui-tab-title').after(menuHtml); + $('.layuimini-tab .layui-tab-content').after(makeHtml); + }, + + /** + * 关闭tab右键菜单 + */ + closeTabRignMenu: function () { + $('.layuimini-tab-mousedown').remove(); + $('.layuimini-tab-make').remove(); + }, + + /** + * 查询菜单信息 + * @param href + * @param menuList + */ + searchMenu: function (href, menuList) { + var menu; + for (key in menuList) { + var item = menuList[key]; + if (item.href === href) { + menu = item; + break; + } + if (item.child) { + newMenu = miniTab.searchMenu(href, item.child); + if (newMenu) { + menu = newMenu; + break; + } + } + } + return menu; + }, + + /** + * 监听 + * @param options + */ + listen: function (options) { + options = options || {}; + options.maxTabNum = options.maxTabNum || 20; + + /** + * 打开新窗口 + */ + $('body').on('click', '[layuimini-href]', function () { + var loading = layer.load(0, {shade: false, time: 2 * 1000}); + var tabId = $(this).attr('layuimini-href'), + href = $(this).attr('layuimini-href'), + title = $(this).text(), + target = $(this).attr('target'); + + var el = $("[layuimini-href='" + href + "']", ".layuimini-menu-left"); + layer.close(window.openTips); + if (el.length) { + $(el).closest(".layui-nav-tree").find(".layui-this").removeClass("layui-this"); + $(el).parent().addClass("layui-this"); + } + + if (target === '_blank') { + layer.close(loading); + window.open(href, "_blank"); + return false; + } + + if (tabId === null || tabId === undefined) tabId = new Date().getTime(); + var checkTab = miniTab.check(tabId); + if (!checkTab) { + miniTab.create({ + tabId: tabId, + href: href, + title: title, + isIframe: false, + maxTabNum: options.maxTabNum, + }); + } + element.tabChange('layuiminiTab', tabId); + layer.close(loading); + }); + + /** + * 在iframe子菜单上打开新窗口 + */ + $('body').on('click', '[layuimini-content-href]', function () { + var loading = parent.layer.load(0, {shade: false, time: 2 * 1000}); + var tabId = $(this).attr('layuimini-content-href'), + href = $(this).attr('layuimini-content-href'), + title = $(this).attr('data-title'), + target = $(this).attr('target'); + if (target === '_blank') { + parent.layer.close(loading); + window.open(href, "_blank"); + return false; + } + if (tabId === null || tabId === undefined) tabId = new Date().getTime(); + var checkTab = miniTab.check(tabId, true); + if (!checkTab) { + miniTab.create({ + tabId: tabId, + href: href, + title: title, + isIframe: true, + maxTabNum: options.maxTabNum, + }); + } + parent.layui.element.tabChange('layuiminiTab', tabId); + parent.layer.close(loading); + }); + + /** + * 关闭选项卡 + **/ + $('body').on('click', '.layuimini-tab .layui-tab-title .layui-tab-close', function () { + var loading = layer.load(0, {shade: false, time: 2 * 1000}); + var $parent = $(this).parent(); + var tabId = $parent.attr('lay-id'); + if (tabId !== undefined || tabId !== null) { + miniTab.delete(tabId); + } + layer.close(loading); + }); + + /** + * 选项卡操作 + */ + $('body').on('click', '[layuimini-tab-close]', function () { + var loading = layer.load(0, {shade: false, time: 2 * 1000}); + var closeType = $(this).attr('layuimini-tab-close'); + $(".layuimini-tab .layui-tab-title li").each(function () { + var tabId = $(this).attr('lay-id'); + var id = $(this).attr('id'); + var isCurrent = $(this).hasClass('layui-this'); + if (id !== 'layuiminiHomeTabId') { + if (closeType === 'all') { + miniTab.delete(tabId); + } else { + if (closeType === 'current' && isCurrent) { + miniTab.delete(tabId); + } else if (closeType === 'other' && !isCurrent) { + miniTab.delete(tabId); + } + } + } + }); + layer.close(loading); + }); + + /** + * 禁用网页右键 + */ + $(".layuimini-tab .layui-tab-title").unbind("mousedown").bind("contextmenu", function (e) { + e.preventDefault(); + return false; + }); + + /** + * 注册鼠标右键 + */ + $('body').on('mousedown', '.layuimini-tab .layui-tab-title li', function (e) { + var left = $(this).offset().left - $('.layuimini-tab ').offset().left + ($(this).width() / 2), + tabId = $(this).attr('lay-id'); + if (e.which === 3) { + miniTab.openTabRignMenu(tabId, left); + } + }); + + /** + * 关闭tab右键菜单 + */ + $('body').on('click', '.layui-body,.layui-header,.layuimini-menu-left,.layuimini-tab-make', function () { + miniTab.closeTabRignMenu(); + }); + + /** + * tab右键选项卡操作 + */ + $('body').on('click', '[layuimini-tab-menu-close]', function () { + var loading = layer.load(0, {shade: false, time: 2 * 1000}); + var closeType = $(this).attr('layuimini-tab-menu-close'), + currentTabId = $('.layuimini-tab-mousedown').attr('data-tab-id'); + $(".layuimini-tab .layui-tab-title li").each(function () { + var tabId = $(this).attr('lay-id'); + var id = $(this).attr('id'); + if (id !== 'layuiminiHomeTabId') { + if (closeType === 'all') { + miniTab.delete(tabId); + } else { + if (closeType === 'current' && currentTabId === tabId) { + miniTab.delete(tabId); + } else if (closeType === 'other' && currentTabId !== tabId) { + miniTab.delete(tabId); + } + } + } + }); + miniTab.closeTabRignMenu(); + layer.close(loading); + }); + }, + + /** + * 监听tab切换 + * @param options + */ + listenSwitch: function (options) { + options.filter = options.filter || null; + options.multiModule = options.multiModule || false; + options.urlHashLocation = options.urlHashLocation || false; + options.listenSwichCallback = options.listenSwichCallback || function () { + + }; + element.on('tab(' + options.filter + ')', function (data) { + var tabId = $(this).attr('lay-id'); + if (options.urlHashLocation) { + location.hash = '/' + tabId; + } + if (typeof options.listenSwichCallback === 'function') { + options.listenSwichCallback(); + } + // 判断是否为新增窗口 + if ($('.layuimini-menu-left').attr('layuimini-tab-tag') === 'add') { + $('.layuimini-menu-left').attr('layuimini-tab-tag', 'no') + } else { + $("[layuimini-href]").parent().removeClass('layui-this'); + if (options.multiModule) { + miniTab.listenSwitchMultiModule(tabId); + } else { + miniTab.listenSwitchSingleModule(tabId); + } + } + miniTab.rollPosition(); + }); + }, + + /** + * 监听hash变化 + * @param options + * @returns {boolean} + */ + listenHash: function (options) { + options.urlHashLocation = options.urlHashLocation || false; + options.maxTabNum = options.maxTabNum || 20; + options.homeInfo = options.homeInfo || {}; + options.menuList = options.menuList || []; + if (!options.urlHashLocation) return false; + var tabId = location.hash.replace(/^#\//, ''); + if (tabId === null || tabId === undefined || tabId ==='') return false; + + // 判断是否为首页 + if(tabId ===options.homeInfo.href) return false; + + // 判断是否为右侧菜单 + var menu = miniTab.searchMenu(tabId, options.menuList); + if (menu !== undefined) { + miniTab.create({ + tabId: tabId, + href: tabId, + title: menu.title, + isIframe: false, + maxTabNum: options.maxTabNum, + }); + $('.layuimini-menu-left').attr('layuimini-tab-tag', 'no'); + element.tabChange('layuiminiTab', tabId); + return false; + } + + // 判断是否为快捷菜单 + var isSearchMenu = false; + $("[layuimini-content-href]").each(function () { + if ($(this).attr("layuimini-content-href") === tabId) { + var title = $(this).attr("data-title"); + miniTab.create({ + tabId: tabId, + href: tabId, + title: title, + isIframe: false, + maxTabNum: options.maxTabNum, + }); + $('.layuimini-menu-left').attr('layuimini-tab-tag', 'no'); + element.tabChange('layuiminiTab', tabId); + isSearchMenu = true; + return false; + } + }); + if (isSearchMenu) return false; + + // 既不是右侧菜单、快捷菜单,就直接打开 + var title = sessionStorage.getItem('layuiminimenu_' + tabId) === null ? tabId : sessionStorage.getItem('layuiminimenu_' + tabId); + miniTab.create({ + tabId: tabId, + href: tabId, + title: title, + isIframe: false, + maxTabNum: options.maxTabNum, + }); + element.tabChange('layuiminiTab', tabId); + return false; + }, + + /** + * 监听滚动 + */ + listenRoll: function () { + $(".layuimini-tab-roll-left").click(function () { + miniTab.rollClick("left"); + }); + $(".layuimini-tab-roll-right").click(function () { + miniTab.rollClick("right"); + }); + }, + + /** + * 单模块切换 + * @param tabId + */ + listenSwitchSingleModule: function (tabId) { + $("[layuimini-href]").each(function () { + if ($(this).attr("layuimini-href") === tabId) { + // 自动展开菜单栏 + var addMenuClass = function ($element, type) { + if (type === 1) { + $element.addClass('layui-this'); + if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-this')) { + $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); + } else { + addMenuClass($element.parent().parent(), 2); + } + } else { + $element.addClass('layui-nav-itemed'); + if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-nav-itemed')) { + $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); + } else { + addMenuClass($element.parent().parent(), 2); + } + } + }; + addMenuClass($(this).parent(), 1); + return false; + } + }); + }, + + /** + * 多模块切换 + * @param tabId + */ + listenSwitchMultiModule: function (tabId) { + $("[layuimini-href]").each(function () { + if ($(this).attr("layuimini-href") === tabId) { + + // 自动展开菜单栏 + var addMenuClass = function ($element, type) { + if (type === 1) { + $element.addClass('layui-this'); + if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-this')) { + var moduleId = $element.parent().attr('id'); + $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); + $("#" + moduleId + "HeaderId").addClass("layui-this"); + $(".layuimini-menu-left .layui-nav.layui-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide'); + $("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this'); + } else { + addMenuClass($element.parent().parent(), 2); + } + } else { + $element.addClass('layui-nav-itemed'); + if ($element.hasClass('layui-nav-item') && $element.hasClass('layui-nav-itemed')) { + var moduleId = $element.parent().attr('id'); + $(".layuimini-header-menu li").attr('class', 'layui-nav-item'); + $("#" + moduleId + "HeaderId").addClass("layui-this"); + $(".layuimini-menu-left .layui-nav.layui-nav-tree").attr('class', 'layui-nav layui-nav-tree layui-hide'); + $("#" + moduleId).attr('class', 'layui-nav layui-nav-tree layui-this'); + } else { + addMenuClass($element.parent().parent(), 2); + } + } + }; + addMenuClass($(this).parent(), 1); + return false; + } + }); + }, + + /** + * 自动定位 + */ + rollPosition: function () { + var $tabTitle = $('.layuimini-tab .layui-tab-title'); + var autoLeft = 0; + $tabTitle.children("li").each(function () { + if ($(this).hasClass('layui-this')) { + return false; + } else { + autoLeft += $(this).outerWidth(); + } + }); + $tabTitle.animate({ + scrollLeft: autoLeft - $tabTitle.width() / 3 + }, 200); + }, + + /** + * 点击滚动 + * @param direction + */ + rollClick: function (direction) { + var $tabTitle = $('.layuimini-tab .layui-tab-title'); + var left = $tabTitle.scrollLeft(); + if ('left' === direction) { + $tabTitle.animate({ + scrollLeft: left - 450 + }, 200); + } else { + $tabTitle.animate({ + scrollLeft: left + 450 + }, 200); + } + } + + }; + + exports("miniTab", miniTab); +}); diff --git a/ss-admin/src/main/resources/static/js/lay-module/layuimini/miniTheme.js b/ss-admin/src/main/resources/static/js/lay-module/layuimini/miniTheme.js new file mode 100644 index 0000000..6c19e6b --- /dev/null +++ b/ss-admin/src/main/resources/static/js/lay-module/layuimini/miniTheme.js @@ -0,0 +1,475 @@ +/** + * date:2020/02/28 + * author:Mr.Chung + * version:2.0 + * description:layuimini tab框架扩展 + */ +layui.define(["jquery", "layer"], function (exports) { + var $ = layui.$, + layer = layui.layer; + + var miniTheme = { + + /** + * 主题配置项 + * @param bgcolorId + * @returns {{headerLogo, menuLeftHover, headerRight, menuLeft, headerRightThis, menuLeftThis}|*|*[]} + */ + config: function (bgcolorId) { + var bgColorConfig = [ + { + headerRightBg: '#ffffff', //头部右侧背景色 + headerRightBgThis: '#e4e4e4', //头部右侧选中背景色, + headerRightColor: 'rgba(107, 107, 107, 0.7)', //头部右侧字体颜色, + headerRightChildColor: 'rgba(107, 107, 107, 0.7)', //头部右侧下拉字体颜色, + headerRightColorThis: '#565656', //头部右侧鼠标选中, + headerRightNavMore: 'rgba(160, 160, 160, 0.7)', //头部右侧更多下拉颜色, + headerRightNavMoreBg: '#034f86', //头部右侧更多下拉列表选中背景色, + headerRightNavMoreColor: '#ffffff', //头部右侧更多下拉列表字体色, + headerRightToolColor: '#565656', //头部缩放按钮样式, + headerLogoBg: '#ffffff', //logo背景颜色, + headerLogoColor: 'rgb(191, 187, 187)', //logo字体颜色, + leftMenuNavMore: 'rgb(191, 187, 187)', //左侧菜单更多下拉样式, + leftMenuBg: '#ffffff', //左侧菜单背景, + leftMenuBgThis: '#1E9FFF', //左侧菜单选中背景, + leftMenuChildBg: '#ffffff', //左侧菜单子菜单背景, + leftMenuColor: 'rgb(40, 31, 31)', //左侧菜单字体颜色, + leftMenuColorThis: '#ffffff', //左侧菜单选中字体颜色, + tabActiveColor: '#c2bb34', //tab选项卡选中颜色, + }, + { + headerRightBg: '#23262e', //头部右侧背景色 + headerRightBgThis: '#0c0c0c', //头部右侧选中背景色, + headerRightColor: 'rgba(255,255,255,.7)', //头部右侧字体颜色, + headerRightChildColor: '#676767', //头部右侧下拉字体颜色, + headerRightColorThis: '#ffffff', //头部右侧鼠标选中, + headerRightNavMore: 'rgba(255,255,255,.7)', //头部右侧更多下拉颜色, + headerRightNavMoreBg: '#1aa094', //头部右侧更多下拉列表选中背景色, + headerRightNavMoreColor: '#ffffff', //头部右侧更多下拉列表字体色, + headerRightToolColor: '#bbe3df', //头部缩放按钮样式, + headerLogoBg: '#0c0c0c', //logo背景颜色, + headerLogoColor: '#ffffff', //logo字体颜色, + leftMenuNavMore: 'rgb(191, 187, 187)', //左侧菜单更多下拉样式, + leftMenuBg: '#23262e', //左侧菜单背景, + leftMenuBgThis: '#737373', //左侧菜单选中背景, + leftMenuChildBg: 'rgba(0,0,0,.3)', //左侧菜单子菜单背景, + leftMenuColor: 'rgb(191, 187, 187)', //左侧菜单字体颜色, + leftMenuColorThis: '#ffffff', //左侧菜单选中字体颜色, + tabActiveColor: '#23262e', //tab选项卡选中颜色, + }, + { + headerRightBg: '#ffa4d1', //头部右侧背景色 + headerRightBgThis: '#bf7b9d', //头部右侧选中背景色, + headerRightColor: 'rgba(255,255,255,.7)', //头部右侧字体颜色, + headerRightChildColor: '#676767', //头部右侧下拉字体颜色, + headerRightColorThis: '#ffffff', //头部右侧鼠标选中, + headerRightNavMore: 'rgba(255,255,255,.7)', //头部右侧更多下拉颜色, + headerRightNavMoreBg: '#ffa4d1', //头部右侧更多下拉列表选中背景色, + headerRightNavMoreColor: '#ffffff', //头部右侧更多下拉列表字体色, + headerRightToolColor: '#bbe3df', //头部缩放按钮样式, + headerLogoBg: '#e694bd', //logo背景颜色, + headerLogoColor: '#ffffff', //logo字体颜色, + leftMenuNavMore: 'rgb(191, 187, 187)', //左侧菜单更多下拉样式, + leftMenuBg: '#1f1f1f', //左侧菜单背景, + leftMenuBgThis: '#737373', //左侧菜单选中背景, + leftMenuChildBg: 'rgba(0,0,0,.3)', //左侧菜单子菜单背景, + leftMenuColor: 'rgb(191, 187, 187)', //左侧菜单字体颜色, + leftMenuColorThis: '#ffffff', //左侧菜单选中字体颜色, + tabActiveColor: '#ffa4d1', //tab选项卡选中颜色, + }, + { + headerRightBg: '#1aa094', //头部右侧背景色 + headerRightBgThis: '#197971', //头部右侧选中背景色, + headerRightColor: 'rgba(255,255,255,.7)', //头部右侧字体颜色, + headerRightChildColor: '#676767', //头部右侧下拉字体颜色, + headerRightColorThis: '#ffffff', //头部右侧鼠标选中, + headerRightNavMore: 'rgba(255,255,255,.7)', //头部右侧更多下拉颜色, + headerRightNavMoreBg: '#1aa094', //头部右侧更多下拉列表选中背景色, + headerRightNavMoreColor: '#ffffff', //头部右侧更多下拉列表字体色, + headerRightToolColor: '#bbe3df', //头部缩放按钮样式, + headerLogoBg: '#0c0c0c', //logo背景颜色, + headerLogoColor: '#ffffff', //logo字体颜色, + leftMenuNavMore: 'rgb(191, 187, 187)', //左侧菜单更多下拉样式, + leftMenuBg: '#23262e', //左侧菜单背景, + leftMenuBgThis: '#1aa094', //左侧菜单选中背景, + leftMenuChildBg: 'rgba(0,0,0,.3)', //左侧菜单子菜单背景, + leftMenuColor: 'rgb(191, 187, 187)', //左侧菜单字体颜色, + leftMenuColorThis: '#ffffff', //左侧菜单选中字体颜色, + tabActiveColor: '#1aa094', //tab选项卡选中颜色, + }, + { + headerRightBg: '#1e9fff', //头部右侧背景色 + headerRightBgThis: '#0069b7', //头部右侧选中背景色, + headerRightColor: 'rgba(255,255,255,.7)', //头部右侧字体颜色, + headerRightChildColor: '#676767', //头部右侧下拉字体颜色, + headerRightColorThis: '#ffffff', //头部右侧鼠标选中, + headerRightNavMore: 'rgba(255,255,255,.7)', //头部右侧更多下拉颜色, + headerRightNavMoreBg: '#1e9fff', //头部右侧更多下拉列表选中背景色, + headerRightNavMoreColor: '#ffffff', //头部右侧更多下拉列表字体色, + headerRightToolColor: '#bbe3df', //头部缩放按钮样式, + headerLogoBg: '#0c0c0c', //logo背景颜色, + headerLogoColor: '#ffffff', //logo字体颜色, + leftMenuNavMore: 'rgb(191, 187, 187)', //左侧菜单更多下拉样式, + leftMenuBg: '#1f1f1f', //左侧菜单背景, + leftMenuBgThis: '#1e9fff', //左侧菜单选中背景, + leftMenuChildBg: 'rgba(0,0,0,.3)', //左侧菜单子菜单背景, + leftMenuColor: 'rgb(191, 187, 187)', //左侧菜单字体颜色, + leftMenuColorThis: '#ffffff', //左侧菜单选中字体颜色, + tabActiveColor: '#1e9fff', //tab选项卡选中颜色, + }, + { + headerRightBg: '#ffb800', //头部右侧背景色 + headerRightBgThis: '#d09600', //头部右侧选中背景色, + headerRightColor: 'rgba(255,255,255,.7)', //头部右侧字体颜色, + headerRightChildColor: '#676767', //头部右侧下拉字体颜色, + headerRightColorThis: '#ffffff', //头部右侧鼠标选中, + headerRightNavMore: 'rgba(255,255,255,.7)', //头部右侧更多下拉颜色, + headerRightNavMoreBg: '#d09600', //头部右侧更多下拉列表选中背景色, + headerRightNavMoreColor: '#ffffff', //头部右侧更多下拉列表字体色, + headerRightToolColor: '#bbe3df', //头部缩放按钮样式, + headerLogoBg: '#243346', //logo背景颜色, + headerLogoColor: '#ffffff', //logo字体颜色, + leftMenuNavMore: 'rgb(191, 187, 187)', //左侧菜单更多下拉样式, + leftMenuBg: '#2f4056', //左侧菜单背景, + leftMenuBgThis: '#8593a7', //左侧菜单选中背景, + leftMenuChildBg: 'rgba(0,0,0,.3)', //左侧菜单子菜单背景, + leftMenuColor: 'rgb(191, 187, 187)', //左侧菜单字体颜色, + leftMenuColorThis: '#ffffff', //左侧菜单选中字体颜色, + tabActiveColor: '#ffb800', //tab选项卡选中颜色, + }, + { + headerRightBg: '#e82121', //头部右侧背景色 + headerRightBgThis: '#ae1919', //头部右侧选中背景色, + headerRightColor: 'rgba(255,255,255,.7)', //头部右侧字体颜色, + headerRightChildColor: '#676767', //头部右侧下拉字体颜色, + headerRightColorThis: '#ffffff', //头部右侧鼠标选中, + headerRightNavMore: 'rgba(255,255,255,.7)', //头部右侧更多下拉颜色, + headerRightNavMoreBg: '#ae1919', //头部右侧更多下拉列表选中背景色, + headerRightNavMoreColor: '#ffffff', //头部右侧更多下拉列表字体色, + headerRightToolColor: '#bbe3df', //头部缩放按钮样式, + headerLogoBg: '#0c0c0c', //logo背景颜色, + headerLogoColor: '#ffffff', //logo字体颜色, + leftMenuNavMore: 'rgb(191, 187, 187)', //左侧菜单更多下拉样式, + leftMenuBg: '#1f1f1f', //左侧菜单背景, + leftMenuBgThis: '#3b3f4b', //左侧菜单选中背景, + leftMenuChildBg: 'rgba(0,0,0,.3)', //左侧菜单子菜单背景, + leftMenuColor: 'rgb(191, 187, 187)', //左侧菜单字体颜色, + leftMenuColorThis: '#ffffff', //左侧菜单选中字体颜色, + tabActiveColor: '#e82121', //tab选项卡选中颜色, + }, + { + headerRightBg: '#963885', //头部右侧背景色 + headerRightBgThis: '#772c6a', //头部右侧选中背景色, + headerRightColor: 'rgba(255,255,255,.7)', //头部右侧字体颜色, + headerRightChildColor: '#676767', //头部右侧下拉字体颜色, + headerRightColorThis: '#ffffff', //头部右侧鼠标选中, + headerRightNavMore: 'rgba(255,255,255,.7)', //头部右侧更多下拉颜色, + headerRightNavMoreBg: '#772c6a', //头部右侧更多下拉列表选中背景色, + headerRightNavMoreColor: '#ffffff', //头部右侧更多下拉列表字体色, + headerRightToolColor: '#bbe3df', //头部缩放按钮样式, + headerLogoBg: '#243346', //logo背景颜色, + headerLogoColor: '#ffffff', //logo字体颜色, + leftMenuNavMore: 'rgb(191, 187, 187)', //左侧菜单更多下拉样式, + leftMenuBg: '#2f4056', //左侧菜单背景, + leftMenuBgThis: '#586473', //左侧菜单选中背景, + leftMenuChildBg: 'rgba(0,0,0,.3)', //左侧菜单子菜单背景, + leftMenuColor: 'rgb(191, 187, 187)', //左侧菜单字体颜色, + leftMenuColorThis: '#ffffff', //左侧菜单选中字体颜色, + tabActiveColor: '#963885', //tab选项卡选中颜色, + }, + { + headerRightBg: '#2D8CF0', //头部右侧背景色 + headerRightBgThis: '#0069b7', //头部右侧选中背景色, + headerRightColor: 'rgba(255,255,255,.7)', //头部右侧字体颜色, + headerRightChildColor: '#676767', //头部右侧下拉字体颜色, + headerRightColorThis: '#ffffff', //头部右侧鼠标选中, + headerRightNavMore: 'rgba(255,255,255,.7)', //头部右侧更多下拉颜色, + headerRightNavMoreBg: '#0069b7', //头部右侧更多下拉列表选中背景色, + headerRightNavMoreColor: '#ffffff', //头部右侧更多下拉列表字体色, + headerRightToolColor: '#bbe3df', //头部缩放按钮样式, + headerLogoBg: '#0069b7', //logo背景颜色, + headerLogoColor: '#ffffff', //logo字体颜色, + leftMenuNavMore: 'rgb(191, 187, 187)', //左侧菜单更多下拉样式, + leftMenuBg: '#1f1f1f', //左侧菜单背景, + leftMenuBgThis: '#2D8CF0', //左侧菜单选中背景, + leftMenuChildBg: 'rgba(0,0,0,.3)', //左侧菜单子菜单背景, + leftMenuColor: 'rgb(191, 187, 187)', //左侧菜单字体颜色, + leftMenuColorThis: '#ffffff', //左侧菜单选中字体颜色, + tabActiveColor: '#2d8cf0', //tab选项卡选中颜色, + }, + { + headerRightBg: '#ffb800', //头部右侧背景色 + headerRightBgThis: '#d09600', //头部右侧选中背景色, + headerRightColor: 'rgba(255,255,255,.7)', //头部右侧字体颜色, + headerRightChildColor: '#676767', //头部右侧下拉字体颜色, + headerRightColorThis: '#ffffff', //头部右侧鼠标选中, + headerRightNavMore: 'rgba(255,255,255,.7)', //头部右侧更多下拉颜色, + headerRightNavMoreBg: '#d09600', //头部右侧更多下拉列表选中背景色, + headerRightNavMoreColor: '#ffffff', //头部右侧更多下拉列表字体色, + headerRightToolColor: '#bbe3df', //头部缩放按钮样式, + headerLogoBg: '#d09600', //logo背景颜色, + headerLogoColor: '#ffffff', //logo字体颜色, + leftMenuNavMore: 'rgb(191, 187, 187)', //左侧菜单更多下拉样式, + leftMenuBg: '#2f4056', //左侧菜单背景, + leftMenuBgThis: '#3b3f4b', //左侧菜单选中背景, + leftMenuChildBg: 'rgba(0,0,0,.3)', //左侧菜单子菜单背景, + leftMenuColor: 'rgb(191, 187, 187)', //左侧菜单字体颜色, + leftMenuColorThis: '#ffffff', //左侧菜单选中字体颜色, + tabActiveColor: '#ffb800', //tab选项卡选中颜色, + }, + { + headerRightBg: '#e82121', //头部右侧背景色 + headerRightBgThis: '#ae1919', //头部右侧选中背景色, + headerRightColor: 'rgba(255,255,255,.7)', //头部右侧字体颜色, + headerRightChildColor: '#676767', //头部右侧下拉字体颜色, + headerRightColorThis: '#ffffff', //头部右侧鼠标选中, + headerRightNavMore: 'rgba(255,255,255,.7)', //头部右侧更多下拉颜色, + headerRightNavMoreBg: '#ae1919', //头部右侧更多下拉列表选中背景色, + headerRightNavMoreColor: '#ffffff', //头部右侧更多下拉列表字体色, + headerRightToolColor: '#bbe3df', //头部缩放按钮样式, + headerLogoBg: '#d91f1f', //logo背景颜色, + headerLogoColor: '#ffffff', //logo字体颜色, + leftMenuNavMore: 'rgb(191, 187, 187)', //左侧菜单更多下拉样式, + leftMenuBg: '#1f1f1f', //左侧菜单背景, + leftMenuBgThis: '#3b3f4b', //左侧菜单选中背景, + leftMenuChildBg: 'rgba(0,0,0,.3)', //左侧菜单子菜单背景, + leftMenuColor: 'rgb(191, 187, 187)', //左侧菜单字体颜色, + leftMenuColorThis: '#ffffff', //左侧菜单选中字体颜色, + tabActiveColor: '#e82121', //tab选项卡选中颜色, + }, + { + headerRightBg: '#963885', //头部右侧背景色 + headerRightBgThis: '#772c6a', //头部右侧选中背景色, + headerRightColor: 'rgba(255,255,255,.7)', //头部右侧字体颜色, + headerRightChildColor: '#676767', //头部右侧下拉字体颜色, + headerRightColorThis: '#ffffff', //头部右侧鼠标选中, + headerRightNavMore: 'rgba(255,255,255,.7)', //头部右侧更多下拉颜色, + headerRightNavMoreBg: '#772c6a', //头部右侧更多下拉列表选中背景色, + headerRightNavMoreColor: '#ffffff', //头部右侧更多下拉列表字体色, + headerRightToolColor: '#bbe3df', //头部缩放按钮样式, + headerLogoBg: '#772c6a', //logo背景颜色, + headerLogoColor: '#ffffff', //logo字体颜色, + leftMenuNavMore: 'rgb(191, 187, 187)', //左侧菜单更多下拉样式, + leftMenuBg: '#2f4056', //左侧菜单背景, + leftMenuBgThis: '#626f7f', //左侧菜单选中背景, + leftMenuChildBg: 'rgba(0,0,0,.3)', //左侧菜单子菜单背景, + leftMenuColor: 'rgb(191, 187, 187)', //左侧菜单字体颜色, + leftMenuColorThis: '#ffffff', //左侧菜单选中字体颜色, + tabActiveColor: '#963885', //tab选项卡选中颜色, + } + ]; + if (bgcolorId === undefined) { + return bgColorConfig; + } else { + return bgColorConfig[bgcolorId]; + } + }, + + /** + * 初始化 + * @param options + */ + render: function (options) { + options.bgColorDefault = options.bgColorDefault || false; + options.listen = options.listen || false; + var bgcolorId = sessionStorage.getItem('layuiminiBgcolorId'); + if (bgcolorId === null || bgcolorId === undefined || bgcolorId === '') { + bgcolorId = options.bgColorDefault; + } + miniTheme.buildThemeCss(bgcolorId); + if (options.listen) miniTheme.listen(options); + }, + + /** + * 构建主题样式 + * @param bgcolorId + * @returns {boolean} + */ + buildThemeCss: function (bgcolorId) { + if (!bgcolorId) { + return false; + } + var bgcolorData = miniTheme.config(bgcolorId); + var styleHtml = '/*头部右侧背景色 headerRightBg */\n' + + '.layui-layout-admin .layui-header {\n' + + ' background-color: ' + bgcolorData.headerRightBg + ' !important;\n' + + '}\n' + + '\n' + + '/*头部右侧选中背景色 headerRightBgThis */\n' + + '.layui-layout-admin .layui-header .layuimini-header-content > ul > .layui-nav-item.layui-this, .layuimini-tool i:hover {\n' + + ' background-color: ' + bgcolorData.headerRightBgThis + ' !important;\n' + + '}\n' + + '\n' + + '/*头部右侧字体颜色 headerRightColor */\n' + + '.layui-layout-admin .layui-header .layui-nav .layui-nav-item a {\n' + + ' color: ' + bgcolorData.headerRightColor + ';\n' + + '}\n' + + '/**头部右侧下拉字体颜色 headerRightChildColor */\n' + + '.layui-layout-admin .layui-header .layui-nav .layui-nav-item .layui-nav-child a {\n' + + ' color: ' + bgcolorData.headerRightChildColor + '!important;\n' + + '}\n'+ + '\n' + + '/*头部右侧鼠标选中 headerRightColorThis */\n' + + '.layui-header .layuimini-menu-header-pc.layui-nav .layui-nav-item a:hover, .layui-header .layuimini-header-menu.layuimini-pc-show.layui-nav .layui-this a {\n' + + ' color: ' + bgcolorData.headerRightColorThis + ' !important;\n' + + '}\n' + + '\n' + + '/*头部右侧更多下拉颜色 headerRightNavMore */\n' + + '.layui-header .layui-nav .layui-nav-more {\n' + + ' border-top-color: ' + bgcolorData.headerRightNavMore + ' !important;\n' + + '}\n' + + '\n' + + '/*头部右侧更多下拉颜色 headerRightNavMore */\n' + + '.layui-header .layui-nav .layui-nav-mored, .layui-header .layui-nav-itemed > a .layui-nav-more {\n' + + ' border-color: transparent transparent ' + bgcolorData.headerRightNavMore + ' !important;\n' + + '}\n' + + '\n' + + '/**头部右侧更多下拉配置色 headerRightNavMoreBg headerRightNavMoreColor */\n' + + '.layui-header .layui-nav .layui-nav-child dd.layui-this a, .layui-header .layui-nav-child dd.layui-this, .layui-layout-admin .layui-header .layui-nav .layui-nav-item .layui-nav-child .layui-this a {\n' + + ' background-color: ' + bgcolorData.headerRightNavMoreBg + ' !important;\n' + + ' color:' + bgcolorData.headerRightNavMoreColor + ' !important;\n' + + '}\n' + + '\n' + + '/*头部缩放按钮样式 headerRightToolColor */\n' + + '.layui-layout-admin .layui-header .layuimini-tool i {\n' + + ' color: ' + bgcolorData.headerRightToolColor + ';\n' + + '}\n' + + '\n' + + '/*logo背景颜色 headerLogoBg */\n' + + '.layui-layout-admin .layuimini-logo {\n' + + ' background-color: ' + bgcolorData.headerLogoBg + ' !important;\n' + + '}\n' + + '\n' + + '/*logo字体颜色 headerLogoColor */\n' + + '.layui-layout-admin .layuimini-logo h1 {\n' + + ' color: ' + bgcolorData.headerLogoColor + ';\n' + + '}\n' + + '\n' + + '/*左侧菜单更多下拉样式 leftMenuNavMore */\n' + + '.layuimini-menu-left .layui-nav .layui-nav-more,.layuimini-menu-left-zoom.layui-nav .layui-nav-more {\n' + + ' border-top-color: ' + bgcolorData.leftMenuNavMore + ';\n' + + '}\n' + + '\n' + + '/*左侧菜单更多下拉样式 leftMenuNavMore */\n' + + '.layuimini-menu-left .layui-nav .layui-nav-mored, .layuimini-menu-left .layui-nav-itemed > a .layui-nav-more, .layuimini-menu-left-zoom.layui-nav .layui-nav-mored, .layuimini-menu-left-zoom.layui-nav-itemed > a .layui-nav-more {\n' + + ' border-color: transparent transparent ' + bgcolorData.leftMenuNavMore + ' !important;\n' + + '}\n' + + '\n' + + '/*左侧菜单背景 leftMenuBg */\n' + + '.layui-side.layui-bg-black, .layui-side.layui-bg-black > .layuimini-menu-left > ul, .layuimini-menu-left-zoom > ul {\n' + + ' background-color: ' + bgcolorData.leftMenuBg + ' !important;\n' + + '}\n' + + '\n' + + '/*左侧菜单选中背景 leftMenuBgThis */\n' + + '.layuimini-menu-left .layui-nav-tree .layui-this, .layuimini-menu-left .layui-nav-tree .layui-this > a, .layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this, .layuimini-menu-left .layui-nav-tree .layui-nav-child dd.layui-this a, .layuimini-menu-left-zoom.layui-nav-tree .layui-this, .layuimini-menu-left-zoom.layui-nav-tree .layui-this > a, .layuimini-menu-left-zoom.layui-nav-tree .layui-nav-child dd.layui-this, .layuimini-menu-left-zoom.layui-nav-tree .layui-nav-child dd.layui-this a {\n' + + ' background-color: ' + bgcolorData.leftMenuBgThis + ' !important\n' + + '}\n' + + '\n' + + '/*左侧菜单子菜单背景 leftMenuChildBg */\n' + + '.layuimini-menu-left .layui-nav-itemed > .layui-nav-child{\n' + + ' background-color: ' + bgcolorData.leftMenuChildBg + ' !important;\n' + + '}\n' + + '\n' + + '/*左侧菜单字体颜色 leftMenuColor */\n' + + '.layuimini-menu-left .layui-nav .layui-nav-item a, .layuimini-menu-left-zoom.layui-nav .layui-nav-item a {\n' + + ' color: ' + bgcolorData.leftMenuColor + ' !important;\n' + + '}\n' + + '\n' + + '/*左侧菜单选中字体颜色 leftMenuColorThis */\n' + + '.layuimini-menu-left .layui-nav , .layuimini-menu-left .layui-nav .layui-this a, .layuimini-menu-left-zoom.layui-nav , .layuimini-menu-left-zoom.layui-nav .layui-this a {\n' + + ' color:' + bgcolorData.leftMenuColorThis + ' !important;\n' + + '}\n' + + '\n' + + '/**tab选项卡选中颜色 tabActiveColor */\n' + + '.layuimini-tab .layui-tab-title .layui-this .layuimini-tab-active {\n' + + ' background-color: ' + bgcolorData.tabActiveColor + ';\n' + + '}\n'; + + $('#layuimini-bg-color').html(styleHtml); + }, + + /** + * 构建主题选择html + * @param options + * @returns {string} + */ + buildBgColorHtml: function (options) { + options.bgColorDefault = options.bgColorDefault || 0; + var bgcolorId = parseInt(sessionStorage.getItem('layuiminiBgcolorId')); + if (isNaN(bgcolorId)) bgcolorId = options.bgColorDefault; + var bgColorConfig = miniTheme.config(); + var html = ''; + $.each(bgColorConfig, function (key, val) { + if (key === bgcolorId) { + html += '
  • \n'; + } else { + html += '
  • \n'; + } + html += '\n' + + '
    \n' + + '
    \n' + + '
    \n' + + '
  • '; + }); + return html; + }, + + /** + * 监听 + * @param options + */ + listen: function (options) { + $('body').on('click', '[data-bgcolor]', function () { + var loading = layer.load(0, {shade: false, time: 2 * 1000}); + var clientHeight = (document.documentElement.clientHeight) - 60; + var bgColorHtml = miniTheme.buildBgColorHtml(options); + var html = '
    \n' + + '
    \n' + + '配色方案\n' + + '
    \n' + + '
    \n' + + '
      \n' + bgColorHtml + '
    \n' + + '
    \n' + + '
    \n' + + ' 开发文档\n' + + ' 开源地址\n' + + ' 官方网站\n' + + '
    ' + + '
    '; + layer.open({ + type: 1, + title: false, + closeBtn: 0, + shade: 0.2, + anim: 2, + shadeClose: true, + id: 'layuiminiBgColor', + area: ['340px', clientHeight + 'px'], + offset: 'rb', + content: html, + success: function (index, layero) { + }, + end: function () { + $('.layuimini-select-bgcolor').removeClass('layui-this'); + } + }); + layer.close(loading); + }); + + $('body').on('click', '[data-select-bgcolor]', function () { + var bgcolorId = $(this).attr('data-select-bgcolor'); + $('.layuimini-color .color-content ul .layui-this').attr('class', ''); + $(this).attr('class', 'layui-this'); + sessionStorage.setItem('layuiminiBgcolorId', bgcolorId); + miniTheme.render({ + bgColorDefault: bgcolorId, + listen: false, + }); + }); + } + }; + + exports("miniTheme", miniTheme); + +}) +; diff --git a/ss-admin/src/main/resources/static/js/lay-module/layuimini/miniTongji.js b/ss-admin/src/main/resources/static/js/lay-module/layuimini/miniTongji.js new file mode 100644 index 0000000..f0ca101 --- /dev/null +++ b/ss-admin/src/main/resources/static/js/lay-module/layuimini/miniTongji.js @@ -0,0 +1,40 @@ +/** + * date:2020/03/01 + * author:Mr.Chung + * version:2.0 + * description:layuimini 统计框架扩展 + */ +layui.define(["jquery"], function (exports) { + var $ = layui.$; + + var miniTongji = { + + /** + * 初始化 + * @param options + */ + render: function (options) { + options.specific = options.specific || false; + options.domains = options.domains || []; + var domain = window.location.hostname; + if (options.specific === false || (options.specific === true && options.domains.indexOf(domain) >=0)) { + miniTongji.listen(); + } + }, + + /** + * 监听统计代码 + */ + listen: function () { + var _hmt = _hmt || []; + (function () { + var hm = document.createElement("script"); + hm.src = "https://hm.baidu.com/hm.js?d97abf6d61c21d773f97835defbdef4e"; + var s = document.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(hm, s); + })(); + } + }; + + exports("miniTongji", miniTongji); +}); \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/js/lay-module/step-lay/step.css b/ss-admin/src/main/resources/static/js/lay-module/step-lay/step.css new file mode 100644 index 0000000..cc5e2ce --- /dev/null +++ b/ss-admin/src/main/resources/static/js/lay-module/step-lay/step.css @@ -0,0 +1,79 @@ +.lay-step { + font-size: 0; + width: 400px; + margin: 0 auto; + max-width: 100%; + padding-left: 200px; +} + +.step-item { + display: inline-block; + line-height: 26px; + position: relative; + font-size: 14px; +} + +.step-item-tail { + width: 100%; + padding: 0 10px; + position: absolute; + left: 0; + top: 13px; +} + +.step-item-tail i { + display: inline-block; + width: 100%; + height: 1px; + vertical-align: top; + background: #c2c2c2; + position: relative; +} + +.step-item-tail .step-item-tail-done { + background: #009688; +} + +.step-item-head { + position: relative; + display: inline-block; + height: 26px; + width: 26px; + text-align: center; + vertical-align: top; + color: #009688; + border: 1px solid #009688; + border-radius: 50%; + background: #ffffff; +} + +.step-item-head.step-item-head-active { + background: #009688; + color: #ffffff; +} + +.step-item-main { + display: block; + position: relative; + margin-left: -50%; + margin-right: 50%; + padding-left: 26px; + text-align: center; +} + +.step-item-main-title { + font-weight: bolder; + color: #555555; +} + +.step-item-main-desc { + color: #aaaaaa; +} + +.lay-step + [carousel-item]:before { + display: none; +} + +.lay-step + [carousel-item] > * { + background-color: transparent; +} \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/js/lay-module/step-lay/step.js b/ss-admin/src/main/resources/static/js/lay-module/step-lay/step.js new file mode 100644 index 0000000..baa015b --- /dev/null +++ b/ss-admin/src/main/resources/static/js/lay-module/step-lay/step.js @@ -0,0 +1,101 @@ +layui.define(['layer', 'carousel'], function (exports) { + var $ = layui.jquery; + var layer = layui.layer; + var carousel = layui.carousel; + + // 添加步骤条dom节点 + var renderDom = function (elem, stepItems, postion) { + var stepDiv = '
    '; + for (var i = 0; i < stepItems.length; i++) { + stepDiv += '
    '; + // 线 + if (i < (stepItems.length - 1)) { + if (i < postion) { + stepDiv += '
    '; + } else { + stepDiv += '
    '; + } + } + + // 数字 + var number = stepItems[i].number; + if (!number) { + number = i + 1; + } + if (i == postion) { + stepDiv += '
    ' + number + '
    '; + } else if (i < postion) { + stepDiv += '
    '; + } else { + stepDiv += '
    ' + number + '
    '; + } + + // 标题和描述 + var title = stepItems[i].title; + var desc = stepItems[i].desc; + if (title || desc) { + stepDiv += '
    '; + if (title) { + stepDiv += '
    ' + title + '
    '; + } + if (desc) { + stepDiv += '
    ' + desc + '
    '; + } + stepDiv += '
    '; + } + stepDiv += '
    '; + } + stepDiv += '
    '; + + $(elem).prepend(stepDiv); + + // 计算每一个条目的宽度 + var bfb = 100 / stepItems.length; + $('.step-item').css('width', bfb + '%'); + }; + + var step = { + // 渲染步骤条 + render: function (param) { + param.indicator = 'none'; // 不显示指示器 + param.arrow = 'always'; // 始终显示箭头 + param.autoplay = false; // 关闭自动播放 + if (!param.stepWidth) { + param.stepWidth = '400px'; + } + + // 渲染轮播图 + carousel.render(param); + + // 渲染步骤条 + var stepItems = param.stepItems; + renderDom(param.elem, stepItems, 0); + $('.lay-step').css('width', param.stepWidth); + + //监听轮播切换事件 + carousel.on('change(' + param.filter + ')', function (obj) { + $(param.elem).find('.lay-step').remove(); + renderDom(param.elem, stepItems, obj.index); + $('.lay-step').css('width', param.stepWidth); + }); + + // 隐藏左右箭头按钮 + $(param.elem).find('.layui-carousel-arrow').css('display', 'none'); + + // 去掉轮播图的背景颜色 + $(param.elem).css('background-color', 'transparent'); + }, + // 下一步 + next: function (elem) { + $(elem).find('.layui-carousel-arrow[lay-type=add]').trigger('click'); + }, + // 上一步 + pre: function (elem) { + $(elem).find('.layui-carousel-arrow[lay-type=sub]').trigger('click'); + } + }; + + layui.link(layui.cache.base + 'step-lay/step.css'); + + exports('step', step); +}); diff --git a/ss-admin/src/main/resources/static/js/lay-module/tableSelect/tableSelect.js b/ss-admin/src/main/resources/static/js/lay-module/tableSelect/tableSelect.js new file mode 100644 index 0000000..84acc3d --- /dev/null +++ b/ss-admin/src/main/resources/static/js/lay-module/tableSelect/tableSelect.js @@ -0,0 +1,272 @@ +layui.define(['table', 'jquery', 'form'], function (exports) { + "use strict"; + + var MOD_NAME = 'tableSelect', + $ = layui.jquery, + table = layui.table, + form = layui.form; + var tableSelect = function () { + this.v = '1.1.0'; + }; + + /** + * 初始化表格选择器 + */ + tableSelect.prototype.render = function (opt) { + var elem = $(opt.elem); + var tableDone = opt.table.done || function(){}; + + //默认设置 + opt.searchKey = opt.searchKey || 'keyword'; + opt.searchPlaceholder = opt.searchPlaceholder || '关键词搜索'; + opt.checkedKey = opt.checkedKey; + opt.table.page = opt.table.page || true; + opt.table.height = opt.height || 315; + + //最小宽度 + opt.width = opt.width || '530'; + + //多搜索条件 + opt.searchType = opt.searchType || 'one'; + opt.searchList = opt.searchList || [{key: opt.searchKey, placeholder: opt.searchPlaceholder}]; + + elem.off('click').on('click', function(e) { + e.stopPropagation(); + + if($('div.tableSelect').length >= 1){ + return false; + } + + var t = elem.offset().top + elem.outerHeight()+"px"; + var l = elem.offset().left +"px"; + var tableName = "tableSelect_table_" + new Date().getTime(); + var tableBox = '
    '; + tableBox += '
    '; + tableBox += '
    '; + + //判断是否多搜索条件 + if(opt.searchType == 'more'){ + $.each(opt.searchList, function (index, item) { + tableBox += ''; + }); + }else{ + tableBox += ''; + } + + tableBox += ''; + tableBox += ''; + tableBox += ''; + tableBox += '
    '; + tableBox += '
    '; + tableBox += ''; + tableBox = $(tableBox); + $('body').append(tableBox); + + //数据缓存 + var checkedData = []; + + //渲染TABLE + opt.table.elem = "#"+tableName; + opt.table.id = tableName; + opt.table.done = function(res, curr, count){ + defaultChecked(res, curr, count); + setChecked(res, curr, count); + tableDone(res, curr, count); + }; + var tableSelect_table = table.render(opt.table); + + //分页选中保存数组 + table.on('radio('+tableName+')', function(obj){ + if(opt.checkedKey){ + checkedData = table.checkStatus(tableName).data + } + updataButton(table.checkStatus(tableName).data.length) + }) + table.on('checkbox('+tableName+')', function(obj){ + if(opt.checkedKey){ + if(obj.checked){ + for (var i=0;i $(window).height(); + var overWidth = (elem.offset().left + tableBox.outerWidth()) > $(window).width(); + overHeight && tableBox.css({'top':'auto','bottom':'0px'}); + overWidth && tableBox.css({'left':'auto','right':'5px'}) + + //关键词搜索 + form.on('submit(tableSelect_btn_search)', function(data){ + tableSelect_table.reload({ + where: data.field, + page: { + curr: 1 + } + }); + return false; + }); + + //双击行选中 + table.on('rowDouble('+tableName+')', function(obj){ + var checkStatus = {data:[obj.data]}; + selectDone(checkStatus); + }) + + //按钮选中 + tableBox.find('.tableSelect_btn_select').on('click', function() { + var checkStatus = table.checkStatus(tableName); + if(checkedData.length > 1){ + checkStatus.data = checkedData; + } + selectDone(checkStatus); + }) + + //写值回调和关闭 + function selectDone (checkStatus){ + if(opt.checkedKey){ + var selected = []; + for(var i=0;i i { + color: #999; + font-size: 30px; +} + +.ew-tree-table .ew-tree-table-loading.ew-loading-float { + position: absolute; + top: 0; + left: 0; + right: 0; +} + +/** 空数据 */ +.ew-tree-table .ew-tree-table-empty { + color: #666; + font-size: 14px; + padding: 18px 0; + text-align: center; + display: none; +} + +/** 单元格 */ +.ew-tree-table-cell.ew-tree-tips-open { + position: absolute; + top: 0; + left: 0; + padding: 0; + z-index: 19891015; + background-color: #fff; + box-shadow: 3px 3px 8px rgba(0, 0, 0, .15); +} + +thead .ew-tree-table-cell.ew-tree-tips-open { + background-color: #f2f2f2; +} + +.ew-tree-table-cell.ew-tree-tips-open.ew-show-left { + right: 0; + left: auto; + box-shadow: -3px 3px 8px rgba(0, 0, 0, .15); +} + +.ew-tree-table-cell.ew-tree-tips-open.ew-show-bottom { + bottom: 0; + top: auto; + box-shadow: 3px -3px 8px rgba(0, 0, 0, .15); +} + +.ew-tree-table-cell.ew-tree-tips-open.ew-show-left.ew-show-bottom { + box-shadow: -3px -3px 8px rgba(0, 0, 0, .15); +} + +.ew-tree-table-cell > .ew-tree-tips-c { + position: absolute; + right: -6px; + top: -3px; + width: 22px; + height: 22px; + line-height: 22px; + font-size: 16px; + color: #fff; + background-color: #666; + border-radius: 50%; + text-align: center; + cursor: pointer; + display: none; +} + +table tr:first-child .ew-tree-table-cell > .ew-tree-tips-c { + top: 0; +} + +.ew-tree-table-cell.ew-tree-tips-open > .ew-tree-tips-c { + display: block; +} + +.ew-tree-table-cell.ew-tree-tips-open.ew-show-left > .ew-tree-tips-c { + left: -6px; + right: auto; +} + +.ew-tree-table-cell > .ew-tree-table-cell-content { + padding: 5px 15px; + line-height: 28px; +} + +[lay-size="lg"] .ew-tree-table-cell > .ew-tree-table-cell-content { + line-height: 40px; +} + +[lay-size="sm"] .ew-tree-table-cell > .ew-tree-table-cell-content { + padding: 1px 15px; +} + +.ew-tree-table-cell.single-line > .ew-tree-table-cell-content { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.ew-tree-table-cell.ew-tree-tips-open > .ew-tree-table-cell-content { + overflow: auto; + padding: 9px 15px; + height: auto; + min-height: 100%; + max-height: 110px; + line-height: inherit; + max-width: 260px; + width: 200px; + width: max-content; + width: -moz-max-content; + box-sizing: border-box; + white-space: normal; +} + +.ew-tree-table-cell > .layui-table-grid-down { + box-sizing: border-box; +} + +/** 图标列 */ +.ew-tree-table .ew-tree-pack { + cursor: pointer; + line-height: 16px; +} + +.ew-tree-table .ew-tree-pack > .layui-icon, .ew-tree-table .ew-tree-pack > .ew-tree-icon { + margin-right: 5px; +} + +.ew-tree-table .ew-tree-pack > * { + vertical-align: middle; +} + +/* 缩进 */ +.ew-tree-table .ew-tree-table-indent { + margin-right: 5px; + padding-left: 16px; +} + +/* 箭头 */ +.ew-tree-table .ew-tree-table-arrow:before { + content: "\e623"; +} + +.ew-tree-table .ew-tree-table-open .ew-tree-table-arrow:before { + content: "\e625"; +} + +.ew-tree-table .ew-tree-table-arrow.arrow2 { + font-size: 12px; + font-weight: 600; + line-height: 16px; + height: 16px; + width: 16px; + display: inline-block; + text-align: center; + color: #888; +} + +.ew-tree-table .ew-tree-table-arrow.arrow2:before { + content: "\e602"; +} + +.ew-tree-table .ew-tree-table-open .ew-tree-table-arrow.arrow2:before { + content: "\e61a"; +} + +.ew-tree-table-arrow.ew-tree-table-arrow-hide { + visibility: hidden; +} + +/* 箭头变加载中状态 */ +.ew-tree-table .ew-tree-table-loading > td .ew-tree-table-arrow:before { + content: "\e63d" !important; +} + +.ew-tree-table .ew-tree-table-loading > td .ew-tree-table-arrow { + margin-right: 0; +} + +.ew-tree-table .ew-tree-table-loading > td .ew-tree-table-arrow + * { + margin-left: 5px; +} + +.ew-tree-table .ew-tree-table-loading * { + pointer-events: none !important; +} + +/** 折叠行 */ +.ew-tree-table .ew-tree-tb-hide { + display: none; +} + +/** 特殊列调整 */ +.ew-tree-table td[data-type="numbers"] > .ew-tree-table-cell, +.ew-tree-table th[data-type="numbers"] > .ew-tree-table-cell, +.ew-tree-table td[data-type="checkbox"] > .ew-tree-table-cell, +.ew-tree-table th[data-type="checkbox"] > .ew-tree-table-cell, +.ew-tree-table td[data-type="radio"] > .ew-tree-table-cell, +.ew-tree-table th[data-type="radio"] > .ew-tree-table-cell, +.ew-tree-table td[data-type="space"] > .ew-tree-table-cell, +.ew-tree-table th[data-type="space"] > .ew-tree-table-cell { + padding-left: 0; + padding-right: 0; +} + +/* 单元格内表单元素样式调整 */ +.ew-tree-table .layui-form-switch, +.ew-tree-table .layui-form-radio { + margin: 0; +} + +/* checkbox列调整 */ +.ew-tree-table-checkbox + .layui-form-checkbox { + padding: 0; +} + +.ew-tree-table-checkbox + .layui-form-checkbox > .layui-icon { + font-weight: 600; + color: transparent; + transition: background-color .1s linear; + -webkit-transition: background-color .1s linear; +} + +.ew-tree-table-checkbox + .layui-form-checkbox.layui-form-checked > .layui-icon { + color: #fff; +} + +/* checkbox半选状态 */ +.ew-form-indeterminate + .layui-form-checkbox .layui-icon:before { + content: ""; + width: 10px; + height: 2px; + background-color: #f1f1f1; + position: absolute; + top: 50%; + left: 50%; + margin: -1px 0 0 -5px; +} + +/* radio列调整 */ +.ew-tree-table-radio + .layui-form-radio { + padding: 0; + height: 20px; + line-height: 20px; +} + +.ew-tree-table-radio + .layui-form-radio > i { + margin: 0; + height: 20px; + font-size: 20px; + line-height: 20px; +} + +/** 单元格编辑 */ +.ew-tree-table .layui-table td[data-edit] { + cursor: text; +} + +.ew-tree-table .ew-tree-table-edit { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + border-radius: 0; + box-shadow: 1px 1px 20px rgba(0, 0, 0, .15); +} + +.ew-tree-table .ew-tree-table-edit:focus { + border-color: #5FB878 !important; +} + +.ew-tree-table .ew-tree-table-edit.layui-form-danger { + border-color: #FF5722 !important; +} + +/** 搜索数据隐藏行 */ +.ew-tree-table tr.ew-tree-table-filter-hide { + display: none !important; +} + +/** 头部工具栏 */ +.ew-tree-table .ew-tree-table-tool { + min-height: 50px; + line-height: 30px; + padding: 10px 15px; + box-sizing: border-box; + background-color: #f2f2f2; + border-bottom: 1px solid #e6e6e6; +} + +.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-right { + float: right; +} + +.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-item { + position: relative; + color: #333; + width: 26px; + height: 26px; + line-height: 26px; + text-align: center; + margin-left: 10px; + display: inline-block; + border: 1px solid #ccc; + box-sizing: border-box; + vertical-align: middle; + -webkit-transition: .3s all; + transition: .3s all; + cursor: pointer; +} + +.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-item:first-child { + margin-left: 0; +} + +.ew-tree-table .ew-tree-table-tool .ew-tree-table-tool-item:hover { + border-color: #999; +} + +.ew-tree-table .ew-tree-table-tool-right .layui-table-tool-panel { + left: auto; + right: -1px; + z-index: 9999; +} + +/* 列宽拖拽调整 */ +.ew-tree-table .ew-tb-resize { + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 10px; + cursor: col-resize; +} + +.ew-tree-table-resizing { + cursor: col-resize; + -ms-user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + user-select: none; +} + +/* 辅助样式 */ +.ew-tree-table .layui-form-switch { + margin: 0; +} + +.ew-tree-table .pd-tb-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.ew-tree-table .break-all { + word-break: break-all !important; +} + +/** 扩展图标 */ +.ew-tree-table .ew-tree-icon-folder:after, .ew-tree-table .ew-tree-icon-file:after { + content: ""; + padding: 2px 10px; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; + background-repeat: no-repeat; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAE6UlEQVR4Xu2ZPYhcVRiGny9hC0FsTEBCGkFTWIQE/IlpgmKpWAiLyR0XLbYTxEKxkCAEhRCxEOwsjJnJioKIYClWKgqiskIIaCoLYyASVJT87JGspN37LrOXvec777Tzzrnvz7Nn2dnAr6YbiKbTOzwGoHEIDIABaLyBxuP7BjAAjTfQeHzfAAag8QYaj+8bwAA03kDj8X0DGIDGG2g8/lw3QFlhD9fZN7oOF7gYT3NudL5GaGjTAJQP2c1VXgIOExyGkf4/oXCe4I3oeH+EvY/G0qYAKFOWCV4Hdo8mQb+RL7jBE7HE3/3S9hQyAGXGCeDVSiv6lqscief4t1L/g9mWAChTHiD4ZrTXvVbPu9GxrEnbUWkAzPgeOJCglsXo+ChBji2L0AtAmfEgrP/0Z3hdZoF7Y5HLGcJsRQYFgLeAF7fiYSM540x0LI3Ey7bb6AdgytcEh7bd6VYa2MGhOJrmVpurmX4AZlwCds31lPF9+AI32O8/DYUvccqUKwR3jG/DuR29Gd36F1pNv/pvgKwAFK5RuC+e4eeWCWgXgJurFz6LCY8bgA0aSPwr4P/UhVNc43ir3xK2fQPcAr/wO/AewU/Ar6xRqroVdvAnC6zGIlc369sAbLax8er/ofAJOzkVR9e/uZVeBkCqqTrRyeh4RXFtAJSWatQUno0Jp/usG4C+hup9/yJ72BuPcH2jCAag3oEV50vRccYAKFXl1LwdHS8YgJzj9qcqfBoTnjQA/VVlVXwXHfcbgKzz9uf6IToOGoD+orIqDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzGUAxKKyygxA1mXFXAZALCqrzABkXVbMZQDEorLKDEDWZcVcBkAsKqvMAGRdVsxlAMSissoMQNZlxVwGQCwqq8wAZF1WzLUFAMy4BOwSH2jZmBoorMaE/RtZij6/ZcoFgrv7dH5/lA38Eh33zAfAjM+BR0cZz6Y2bqDwY0w4MB8AU04SvOyuq2zg4+h4aj4AzvIwha+qjN+66cLzMeGduQC4+eEy4zywr/U+K8t/hQX2xiJ/zQ/ACgdZ40vgtspKaNducCyOsdJXQO9fAbcOKGc5whofENzVd6jf3/YGTkTHccWFDMD6r4LT3MlOloHHCB4CblceYs3gDfxB4TeCcxReiwmr6hM3BYB6qHX1NGAA6tlqEKcGYJBa6znUANSz1SBODcAgtdZzqAGoZ6tBnBqAQWqt51ADUM9Wgzg1AIPUWs+hBqCerQZxagAGqbWeQw1APVsN4tQADFJrPYcagHq2GsTpf+KxwJB5Cd5mAAAAAElFTkSuQmCC"); +} + +.ew-tree-table tr.ew-tree-table-open > td .ew-tree-icon-folder:after { + background-image: url("data:image/png;base64,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") +} + +.ew-tree-table .ew-tree-icon-file:after { + background-image: url("data:image/png;base64,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") +} diff --git a/ss-admin/src/main/resources/static/js/lay-module/treetable-lay-3.x/treeTable.js b/ss-admin/src/main/resources/static/js/lay-module/treetable-lay-3.x/treeTable.js new file mode 100644 index 0000000..33be9d6 --- /dev/null +++ b/ss-admin/src/main/resources/static/js/lay-module/treetable-lay-3.x/treeTable.js @@ -0,0 +1,2267 @@ +/** 树形表格3.x Created by wangfan on 2020-05-12 https://gitee.com/whvse/treetable-lay */ + +layui.define(['laytpl', 'form', 'util'], function (exports) { + var $ = layui.jquery; + var laytpl = layui.laytpl; + var form = layui.form; + var util = layui.util; + var device = layui.device(); + var MOD_NAME = 'treeTable'; // 模块名 + var _instances = {}; // 记录所有实例 + + /* 表格默认参数 */ + var defaultOption = { + elem: undefined, // 容器 + cols: undefined, // 列参数 + url: undefined, // url模式请求 + method: undefined, // url模式请求方式 + where: undefined, // url模式请求条件 + contentType: undefined, // url模式请求类型 + headers: undefined, // url模式请求headers + parseData: undefined, // url模式处理请求数据 + request: {pidName: 'pid'}, // url模式请求字段自定义 + toolbar: undefined, // 表头工具栏 + defaultToolbar: undefined, // 表头工具栏右侧按钮 + width: undefined, // 容器宽度 + height: undefined, // 容器高度 + cellMinWidth: 90, // 单元格最小宽度 + done: undefined, // 数据处理完回调 + data: undefined, // 直接赋值数据 + title: undefined, // 定义table大标题,文件导出会用到 + skin: undefined, // 表格风格 + even: undefined, // 是否开启隔行变色 + size: undefined, // 表格尺寸 + statusCode: 0, // 数据返回值代码 + text: { + none: '无数据' // 空数据提示 + }, + reqData: undefined, // 自定义加载数据方法 + useAdmin: false, // 是否使用admin.ajax + tree: { + idName: 'id', // id的字段名 + pidName: 'pid', // pid的字段名 + childName: 'children', // children的字段名 + haveChildName: 'haveChild', // 是否有children标识的字段名 + haveChildReverse: false, // 是否将children标识的字段取反 + openName: 'open', // 是否默认展开的字段名 + iconIndex: 0, // 图标列的索引 + arrowType: undefined, // 折叠箭头类型 + onlyIconControl: undefined, // 仅点击图标控制展开折叠 + getIcon: function (d) { // 自定义图标 + var haveChild = d[this.haveChildName]; + if (haveChild !== undefined) { + haveChild = haveChild === true || haveChild === 'true'; + if (this.haveChildReverse) haveChild = !haveChild; + } + else if (d[this.childName]) haveChild = d[this.childName].length > 0; + if (haveChild) return ''; + else return ''; + } + } + }; + /* 列默认参数 */ + var colDefaultOption = { + field: undefined, // 字段名 + title: undefined, // 标题 + width: undefined, // 宽度 + minWidth: undefined, // 最小宽度 + type: 'normal', // 列类型 + fixed: undefined, // 固定列 + hide: undefined, // 是否初始隐藏列 + unresize: undefined, // 禁用拖拽列宽 + style: undefined, // 单元格样式 + align: undefined, // 对齐方式 + colspan: undefined, // 单元格所占的列数 + rowspan: undefined, // 单元格所占的行数 + templet: undefined, // 自定义模板 + toolbar: undefined, // 工具列 + 'class': undefined, // 单元格class + singleLine: undefined // 是否一行显示 + }; + + /** TreeTable类构造方法 */ + var TreeTable = function (options) { + _instances[options.elem.substring(1)] = this; + this.reload(options); + }; + + /** + * 根据ID查找数据 + * @param id 数据条目的ID + */ + TreeTable.prototype.findDataById = function (id) { + var options = this.options; + function each(data) { + for (var i = 0; i < data.length; i++) { + if (data[i][options.tree.idName] === id) return data[i]; + if (data[i][options.tree.childName]) { + var res = each(data[i][options.tree.childName]); + if (res) return res; + } + } + } + return each(options.data); + } + + /** 参数设置 */ + TreeTable.prototype.initOptions = function (opt) { + var that = this; + + // 处理特殊列 + function initCol(item) { + if (!item.INIT_OK) item = $.extend({INIT_OK: true}, colDefaultOption, item); + // 特殊列处理 + if (item.type === 'space') { // 空列 + if (!item.width) item.width = 15; + item.minWidth = item.width; + } else if (item.type === 'numbers') { // 序号列 + if (!item.width) item.width = 40; + item.minWidth = item.width; + if (!item.singleLine) item.singleLine = false; + if (!item.unresize) item.unresize = true; + if (!item.align) item.align = 'center'; + } else if (item.type === 'checkbox' || item.type === 'radio') { // 复/单选框列 + if (!item.width) item.width = 48; + item.minWidth = item.width; + if (!item.singleLine) item.singleLine = false; + if (!item.unresize) item.unresize = true; + if (!item.align) item.align = 'center'; + } + if (item.toolbar) item.type = 'tool'; + return item; + } + + // 初始化列参数 + if ('Array' !== isClass(opt.cols[0])) opt.cols = [opt.cols]; + + // 恢复cols参数初始状态 + for (var m = 0; m < opt.cols.length; m++) { + for (var n = 0; n < opt.cols[m].length; n++) { + opt.cols[m][n].INIT_OK = undefined; + opt.cols[m][n].key = undefined; + opt.cols[m][n].colGroup = undefined; + opt.cols[m][n].HAS_PARENT = undefined; + opt.cols[m][n].parentKey = undefined; + opt.cols[m][n].PARENT_COL_INDEX = undefined; + } + } + + // cols参数处理 + var colArrays = [], colIndex = 0; + for (var i1 = 0; i1 < opt.cols.length; i1++) { + var item1 = opt.cols[i1]; + for (var i2 = 0; i2 < item1.length; i2++) { + var item2 = item1[i2]; + if (!item2) { + item1.splice(i2, 1); + continue; + } + item2 = initCol(item2); + // 合并单元格处理 + item2.key = i1 + '-' + i2; + var CHILD_COLS = undefined; + if (item2.colGroup || item2.colspan > 1) { + item2.colGroup = true; + item2.type = 'group'; + CHILD_COLS = []; + colIndex++; + var childIndex = 0; + for (var i22 = 0; i22 < opt.cols[i1 + 1].length; i22++) { + var item22 = $.extend({INIT_OK: true}, colDefaultOption, opt.cols[i1 + 1][i22]); + if (item22.HAS_PARENT || (childIndex > 1 && childIndex == item2.colspan)) { + opt.cols[i1 + 1][i22] = item22; + continue; + } + item22.HAS_PARENT = true; + item22.parentKey = i1 + '-' + i2; + item22.key = (i1 + 1) + '-' + i22; + item22.PARENT_COL_INDEX = colIndex; + item22 = initCol(item22); + CHILD_COLS.push(item22); + childIndex = childIndex + parseInt(item22.colspan > 1 ? item22.colspan : 1); + opt.cols[i1 + 1][i22] = item22; + } + } + item2.CHILD_COLS = CHILD_COLS; + if (!item2.PARENT_COL_INDEX) colArrays.push(item2); + opt.cols[i1][i2] = item2; + } + } + this.options = $.extend(true, {}, defaultOption, opt); + this.options.colArrays = colArrays; + + // url加载模式转为reqData模式 + if (this.options.url) { + this.options.reqData = function (data, callback) { + if (!that.options.where) that.options.where = {}; + if (data) that.options.where[that.options.request.pidName] = data[that.options.tree.idName]; + (that.options.useAdmin ? layui.admin : $).ajax({ + url: that.options.url, + data: that.options.contentType && that.options.contentType.indexOf('application/json') === 0 ? JSON.stringify(that.options.where) : that.options.where, + headers: that.options.headers, + type: that.options.method, + dataType: 'json', + contentType: that.options.contentType, + success: function (res) { + if (that.options.parseData) res = that.options.parseData(res); + if (res.code == that.options.statusCode) callback(res.data); + else callback(res.msg || '加载失败'); + }, + error: function (xhr) { + callback(xhr.status + ' - ' + xhr.statusText); + } + }); + }; + } else if (this.options.data && this.options.data.length > 0 && this.options.tree.isPidData) { // pid形式数据转children形式 + this.options.data = tt.pidToChildren(this.options.data, this.options.tree.idName, this.options.tree.pidName, this.options.tree.childName); + } + + // toolbar参数处理 + if ('default' === this.options.toolbar) { + this.options.toolbar = [ + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ' + ].join(''); + } + if (this.options.defaultToolbar === undefined) this.options.defaultToolbar = ['filter', 'exports', 'print']; + + // 自定义图标参数处理 + if (typeof this.options.tree.getIcon === 'string') { + var icon = this.options.tree.getIcon; + this.options.tree.getIcon = function (d) { + if (icon !== 'ew-tree-icon-style2') return icon; + var haveChild = d[this.haveChildName]; + if (haveChild !== undefined) { + haveChild = haveChild === true || haveChild === 'true'; + if (this.haveChildReverse) haveChild = !haveChild; + } + else if (d[this.childName]) haveChild = d[this.childName].length > 0; + if (haveChild) return ''; + else return ''; + } + } + }; + /** 初始化表格 */ + TreeTable.prototype.init = function () { + var options = this.options; + var $elem = $(options.elem); // 原始表格 + var tbFilter = options.elem.substring(1); // 表格的filter + // 第一次生成树表格dom + $elem.removeAttr('lay-filter'); + if ($elem.next('.ew-tree-table').length === 0) { + $elem.css('display', 'none'); + $elem.after([ + '
    ', + ' ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ', options.text.none || '', '
    ', + '
    ', + '
    ' + ].join('')); + } + // 获取各个组件 + var components = this.getComponents(); + + // 基础参数设置 + if (options.skin) components.$table.attr('lay-skin', options.skin); + if (options.size) components.$table.attr('lay-size', options.size); + if (options.even) components.$table.attr('lay-even', options.even); + + // 头部工具栏 + components.$toolbar.empty(); + if (options.toolbar === false || options.toolbar === undefined) { + components.$toolbar.hide(); + } else { + components.$toolbar.show(); + if (typeof options.toolbar === 'string') { + laytpl($(options.toolbar).html()).render({}, function (html) { + components.$toolbar.html('
    ' + html + '
    '); + }); + } + var tbRights = ['
    ']; + for (var i = 0; i < options.defaultToolbar.length; i++) { + var tbItem; + if ('filter' === options.defaultToolbar[i]) { + tbItem = {title: '筛选', layEvent: 'LAYTABLE_COLS', icon: 'layui-icon-cols'}; + } else if ('exports' === options.defaultToolbar[i]) { + tbItem = {title: '导出', layEvent: 'LAYTABLE_EXPORT', icon: 'layui-icon-export'}; + } else if ('print' === options.defaultToolbar[i]) { + tbItem = {title: '打印', layEvent: 'LAYTABLE_PRINT', icon: 'layui-icon-print'}; + } else { + tbItem = options.defaultToolbar[i]; + } + if (tbItem) { + tbRights.push('
    '); + tbRights.push('
    '); + } + } + components.$toolbar.append(tbRights.join('') + '
    '); + } + + // 固定宽度 + if (options.width) { + components.$view.css('width', options.width); + components.$tHeadGroup.css('width', options.width); + components.$tBodyGroup.css('width', options.width); + } + // 表格尺寸设置 + var colgroupHtml = this.resize(true); + // 生成thead + var headHtml = '' + this.renderBodyTh() + ''; + + // 渲染表头及空的表主体的结构 + components.$tBodyGroup.children('style').remove(); + if (options.height) { // 固定表头 + components.$tHead.html(colgroupHtml + headHtml); + components.$tBody.html(colgroupHtml + ''); + if (options.height.indexOf('full-') === 0) { // 差值高度 + var h = parseFloat(options.height.substring(5)) + components.$toolbar.outerHeight() + + components.$tHeadGroup.outerHeight() + 1; + components.$tBodyGroup.append([ + '' + ].join('')); + components.$tBodyGroup.data('full', h); + components.$tBodyGroup.css('height', ''); + } else { // 固定高度 + components.$tBodyGroup.css('height', options.height); + components.$tBodyGroup.data('full', ''); + } + components.$tHeadGroup.show(); + } else { + components.$tHeadGroup.hide(); + var trH = {lg: 50, sm: 30, md: 38}; + components.$tBodyGroup.append([ + '' + ].join('')); + components.$tBody.html(colgroupHtml + headHtml + ''); + } + form.render('checkbox', tbFilter); // 渲染表头的表单元素 + + // 默认隐藏列修正colspan + function patchHide($tr) { + var parentKey = $tr.data('parent'), pCol; + if (!parentKey) return; + var $parent = components.$table.children('thead').children('tr').children('[data-key="' + parentKey + '"]'); + var colspan = $parent.attr('colspan') - 1; + $parent.attr('colspan', colspan); + if (colspan === 0) $parent.addClass('layui-hide'); + patchHide($parent); + } + + components.$table.children('thead').children('tr').children('th.layui-hide').each(function () { + patchHide($(this)); + }); + + // 渲染数据 + if (options.reqData) { // 异步加载 + this.options.data = undefined; + this.renderBodyAsync(); + } else if (options.data && options.data.length > 0) { + this.renderBodyData(options.data); + } else { + components.$loading.hide(); + components.$empty.show(); + } + }; + + /** 绑定各项事件 */ + TreeTable.prototype.bindEvents = function () { + var that = this; + var options = this.options; + var components = this.getComponents(); + var $allBody = components.$table.children('tbody'); + + /* 行事件公共返回对象 */ + var member = function (ext) { + // 获取行dom + var $tr = $(this); + if (!$tr.is('tr')) { + var $temp = $tr.parent('tr'); + if ($temp.length > 0) $tr = $temp; + else $tr = $tr.parentsUntil('tr').last().parent(); + } + var data = that.getDataByTr($tr); // 行对应数据 + var obj = { + tr: $tr, + data: data, + del: function () { // 删除行 + var index = $tr.data('index'); + var indent = parseInt($tr.data('indent')); + // 删除子级 + $tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= indent) return false; + $(this).remove(); + }); + // 更新后面同辈的index + var indexLength = (typeof index === 'number' ? 1 : index.split('-').length); + $tr.nextAll('tr').each(function () { + var $this = $(this); + if (parseInt($this.data('indent')) < indent) return false; + var _index = $this.data('index').toString().split('-'); + _index[indexLength - 1] = parseInt(_index[indexLength - 1]) - 1; + $this.data('index', _index.join('-')); + }); + // 删除当前行 + var $pTr = $tr.prevAll('tr'); + that.del(undefined, index); + $tr.remove(); + that.renderNumberCol(); // 渲染序号列 + // 联动父级多选框 + $pTr.each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd >= indent) return true; + that.checkParentCB($(this)); + indent = tInd; + }); + that.checkChooseAllCB(); // 联动全选框 + if (options.data.length === 0) components.$empty.show(); + updateFixedTbHead(components.$view); // 更新滚动条补丁 + }, + update: function (fields) { // 修改行 + data = $.extend(true, data, fields); + var indent = parseInt($tr.data('indent')); + that.renderBodyTr(data, indent, undefined, $tr); // 更新界面 + form.render(null, components.filter); // 渲染表单元素 + that.renderNumberCol(); // 渲染序号列 + // 联动父级多选框 + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd >= indent) return true; + that.checkParentCB($(this)); + indent = tInd; + }); + that.checkChooseAllCB(); // 联动全选框 + } + }; + return $.extend(obj, ext); + }; + + // 绑定折叠展开事件 + $allBody.off('click.fold').on('click.fold', '.ew-tree-pack', function (e) { + layui.stope(e); + var $tr = $(this).parentsUntil('tr').last().parent(); + if ($tr.hasClass('ew-tree-table-loading')) return; // 已是加载中 + var haveChild = $tr.data('have-child'); + if (haveChild !== true && haveChild !== 'true') return; // 子节点 + var open = $tr.hasClass('ew-tree-table-open'); + var data = that.getDataByTr($tr); + if (!open && !data[options.tree.childName]) { + that.renderBodyAsync(data, $tr); + } else { + data[options.tree.openName] = toggleRow($tr); + } + }); + + // 绑定lay-event事件 + $allBody.off('click.tool').on('click.tool', '*[lay-event]', function (e) { + layui.stope(e); + var $this = $(this); + layui.event.call(this, MOD_NAME, 'tool(' + components.filter + ')', member.call(this, { + event: $this.attr('lay-event') + })); + }); + + // 绑定单选框事件 + form.on('radio(' + components.radioFilter + ')', function (data) { + var d = that.getDataByTr($(data.elem).parentsUntil('tr').last().parent()); + that.removeAllChecked(); + d.LAY_CHECKED = true; // 同时更新数据 + d.LAY_INDETERMINATE = false; + layui.event.call(this, MOD_NAME, 'checkbox(' + components.filter + ')', + {checked: true, data: d, type: 'one'}); + }); + + // 绑定复选框事件 + form.on('checkbox(' + components.checkboxFilter + ')', function (data) { + var checked = data.elem.checked; + var $cb = $(data.elem); + var $layCb = $cb.next('.layui-form-checkbox'); + // 如果是半选状态,点击全选 + if (!checked && $cb.hasClass('ew-form-indeterminate')) { + checked = true; + $cb.prop('checked', checked); + $layCb.addClass('layui-form-checked'); + $cb.removeClass('ew-form-indeterminate'); + } + var $tr = $cb.parentsUntil('tr').last().parent(); + var d = that.getDataByTr($tr); + d.LAY_CHECKED = checked; // 同时更新数据 + d.LAY_INDETERMINATE = false; + // 联动操作 + if (d[options.tree.childName] && d[options.tree.childName].length > 0) { + that.checkSubCB($tr, checked); // 联动子级 + } + var indent = parseInt($tr.data('indent')); + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < indent) { + that.checkParentCB($(this)); // 联动父级 + indent = tInd; + } + }); + that.checkChooseAllCB(); // 联动全选框 + // 回调事件 + layui.event.call(this, MOD_NAME, 'checkbox(' + components.filter + ')', + {checked: checked, data: d, type: 'more'}); + }); + + // 绑定全选复选框事件 + form.on('checkbox(' + components.chooseAllFilter + ')', function (data) { + var checked = data.elem.checked; + var $cb = $(data.elem); + var $layCb = $cb.next('.layui-form-checkbox'); + if (!options.data || options.data.length === 0) { // 如果数据为空 + $cb.prop('checked', false); + $layCb.removeClass('layui-form-checked'); + $cb.removeClass('ew-form-indeterminate'); + return; + } + // 如果是半选状态,点击全选 + if (!checked && $cb.hasClass('ew-form-indeterminate')) { + checked = true; + $cb.prop('checked', checked); + $layCb.addClass('layui-form-checked'); + $cb.removeClass('ew-form-indeterminate'); + } + layui.event.call(this, MOD_NAME, 'checkbox(' + components.filter + ')', {checked: checked, type: 'all'}); + that.checkSubCB(components.$tBody.children('tbody'), checked); // 联动操作 + }); + + // 绑定行单击事件 + $allBody.off('click.row').on('click.row', 'tr', function () { + layui.event.call(this, MOD_NAME, 'row(' + components.filter + ')', member.call(this, {})); + }); + + // 绑定行双击事件 + $allBody.off('dblclick.rowDouble').on('dblclick.rowDouble', 'tr', function () { + layui.event.call(this, MOD_NAME, 'rowDouble(' + components.filter + ')', member.call(this, {})); + }); + + // 绑定单元格点击事件 + $allBody.off('click.cell').on('click.cell', 'td', function (e) { + var $td = $(this); + var type = $td.data('type'); + // 判断是否是复选框、单选框列 + if (type === 'checkbox' || type === 'radio') return layui.stope(e); + var edit = $td.data('edit'); + var field = $td.data('field'); + if (edit) { // 开启了单元格编辑 + layui.stope(e); + if ($allBody.find('.ew-tree-table-edit').length > 0) return; + var index = $td.data('index'); + var indent = $td.find('.ew-tree-table-indent').length; + var d = that.getDataByTr($td.parent()); + if ('text' === edit || 'number' === edit) { // 文本框 + var $input = $(''); + $input[0].value = d[field]; + $td.append($input); + $input.focus(); + $input.blur(function () { + var value = $(this).val(); + if (value == d[field]) return $(this).remove(); + var rs = layui.event.call(this, MOD_NAME, 'edit(' + components.filter + ')', member.call(this, + {value: value, field: field})); + if (rs === false) { + $(this).addClass('layui-form-danger'); + $(this).focus(); + } else { + d[field] = value; // 同步更新数据 + var keys = $td.data('key').split('-'); + that.renderBodyTd(d, indent, index, $td, options.cols[keys[0]][keys[1]]); // 更新单元格 + } + }); + } else { + console.error('不支持的单元格编辑类型:' + edit); + } + } else { // 回调单元格点击事件 + var rs = layui.event.call(this, MOD_NAME, 'cell(' + components.filter + ')', member.call(this, + {td: $td, field: field})); + if (rs === false) layui.stope(e); + } + }); + + // 绑定单元格双击事件 + $allBody.off('dblclick.cellDouble').on('dblclick.cellDouble', 'td', function (e) { + var $td = $(this); + var type = $td.data('type'); + // 判断是否是复选框、单选框列 + if (type === 'checkbox' || type === 'radio') return layui.stope(e); + var edit = $td.data('edit'); + var field = $td.data('field'); + if (edit) return layui.stope(e); // 开启了单元格编辑 + // 回调单元格双击事件 + var rs = layui.event.call(this, MOD_NAME, 'cellDouble(' + components.filter + ')', member.call(this, + {td: $td, field: field})); + if (rs === false) layui.stope(e); + }); + + // 绑定头部工具栏事件 + components.$toolbar.off('click.toolbar').on('click.toolbar', '*[lay-event]', function (e) { + layui.stope(e); + var $this = $(this); + var event = $this.attr('lay-event'); + if ('LAYTABLE_COLS' === event) that.toggleCol(); + else if ('LAYTABLE_EXPORT' === event) that.exportData('show'); + else if ('LAYTABLE_PRINT' === event) that.printTable(); + else layui.event.call(this, MOD_NAME, 'toolbar(' + components.filter + ')', {event: event, elem: $this}); + }); + + // 同步滚动条 + components.$tBodyGroup.on('scroll', function () { + var $this = $(this); + components.$tHeadGroup.scrollLeft($this.scrollLeft()); + }); + + // 导出数据 + components.$toolbar.off('click.export').on('click.export', '.layui-table-tool-panel>[data-type]', function () { + var type = $(this).data('type'); + if ('csv' === type || 'xls' === type) that.exportData(type); + }); + components.$toolbar.off('click.panel').on('click.panel', '.layui-table-tool-panel', function (e) { + layui.stope(e); + }); + + // 筛选列 + form.on('checkbox(' + components.colsToggleFilter + ')', function (data) { + that.toggleCol(data.elem.checked, undefined, data.value); + }); + + }; + + /** 获取各个组件 */ + TreeTable.prototype.getComponents = function () { + var $view = $(this.options.elem).next('.ew-tree-table'); // 容器 + var filter = $view.attr('lay-filter'); // 容器filter + var $tHeadGroup = $view.children('.ew-tree-table-head'); // 表头部分容器 + var $tBodyGroup = $view.children('.ew-tree-table-box'); // 主体部分容器 + return { + $view: $view, + filter: filter, + $tHeadGroup: $tHeadGroup, + $tBodyGroup: $tBodyGroup, + $tHead: $tHeadGroup.children('.layui-table'), // 表头表格 + $tBody: $tBodyGroup.children('.layui-table'), // 主体表格 + $table: $view.find('.layui-table'), // 所有表格 + $toolbar: $view.children('.ew-tree-table-tool'), // 头部工具栏 + $empty: $tBodyGroup.children('.ew-tree-table-empty'), // 空视图 + $loading: $tBodyGroup.children('.ew-tree-table-loading'), // 加载视图 + checkboxFilter: 'ew_tb_checkbox_' + filter, // 复选框filter + radioFilter: 'ew_tb_radio_' + filter, // 单选框filter + chooseAllFilter: 'ew_tb_choose_all_' + filter, // 全选按钮filter + colsToggleFilter: 'ew_tb_toggle_cols' + filter // 筛选列的filter + }; + }; + + /** + * 遍历表头 + * @param callback + * @param obj + */ + TreeTable.prototype.eachCols = function (callback, obj) { + if (!obj) obj = this.options.colArrays; + for (var i = 0; i < obj.length; i++) { + var item = obj[i]; + callback && callback(i, item); + if (item.CHILD_COLS) this.eachCols(callback, item.CHILD_COLS); + } + }; + + /** + * 遍历数据 + * @param callback + * @param data + */ + TreeTable.prototype.eachData = function (callback, data) { + if (!data) data = this.options.data; + for (var i = 0; i < data.length; i++) { + var item = data[i]; + callback && callback(i, item); + if (item[this.options.tree.childName]) this.eachData(callback, item[this.options.tree.childName]); + } + }; + + /** + * 异步加载渲染 + * @param d 父级数据 + * @param $tr 父级dom + */ + TreeTable.prototype.renderBodyAsync = function (d, $tr) { + var that = this; + var options = this.options; + var components = this.getComponents(); + // 显示loading + if ($tr) { + $tr.addClass('ew-tree-table-loading'); + $tr.find('.ew-tree-pack').children('.ew-tree-table-arrow').addClass('layui-anim layui-anim-rotate layui-anim-loop'); + } else { + components.$empty.hide(); + if (options.data && options.data.length > 0) components.$loading.addClass('ew-loading-float'); + components.$loading.show(); + } + // 请求数据 + options.reqData(d, function (data) { + if (typeof data !== 'string' && data && data.length > 0 && options.tree.isPidData) { + data = tt.pidToChildren(data, options.tree.idName, options.tree.pidName, options.tree.childName); + } + that.renderBodyData(data, d, $tr); // 渲染内容 + }); + }; + + /** + * 根据数据渲染body + * @param data 数据集合 + * @param d 父级数据 + * @param $tr 父级dom + */ + TreeTable.prototype.renderBodyData = function (data, d, $tr) { + var msg; + if (typeof data === 'string') { + msg = data; + data = []; + } + var that = this; + var options = this.options; + var components = this.getComponents(); + // 更新到数据 + if (d === undefined) options.data = data; + else d[options.tree.childName] = data; + var indent; + if (d && $tr) { + indent = parseInt($tr.data('indent')) + 1; + d[options.tree.openName] = true; + } + var htmlStr = this.renderBody(data, indent, d); + if (d && $tr) { + // 移除旧dom + $tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= (indent - 1)) return false; + $(this).remove(); + }); + // 渲染新dom + $tr.after(htmlStr).addClass('ew-tree-table-open'); + } else { + components.$tBody.children('tbody').html(htmlStr); + } + form.render(null, components.filter); // 渲染表单元素 + this.renderNumberCol(); // 渲染序号列 + if (d && $tr) { + // 更新父级复选框状态 + this.checkParentCB($tr); + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < (indent - 1)) { + that.checkParentCB($(this)); + indent = tInd + 1; + } + }); + // 移除loading + $tr.removeClass('ew-tree-table-loading'); + var $arrow = $tr.find('.ew-tree-pack').children('.ew-tree-table-arrow'); + $arrow.removeClass('layui-anim layui-anim-rotate layui-anim-loop'); + if (msg) { // 加载失败 + $tr.removeClass('ew-tree-table-open'); + } else if (data && data.length === 0) { // 无子集 + d[options.tree.haveChildName] = !!options.tree.haveChildReverse; + $tr.data('have-child', false); + $arrow.addClass('ew-tree-table-arrow-hide'); + $arrow.next('.ew-tree-icon').after(options.tree.getIcon(d)).remove(); + } + } else { + // 移除loading + components.$loading.hide(); + components.$loading.removeClass('ew-loading-float'); + // 显示空视图 + if (data && data.length > 0) { + components.$empty.hide(); + } else { + components.$empty.show(); + if (msg) components.$empty.text(msg); + else components.$empty.html(options.text.none); + } + } + this.checkChooseAllCB(); // 联动全选框 + updateFixedTbHead(components.$view); // 滚动条补丁 + options.done && options.done(data); + }; + + /** + * 递归渲染表格主体部分 + * @param data 数据列表 + * @param indent 缩进大小 + * @param parent 父级 + * @param h 父级是否隐藏 + * @returns {string} + */ + TreeTable.prototype.renderBody = function (data, indent, parent, h) { + var options = this.options; + if (!indent) indent = 0; + var html = ''; + if (!data || data.length === 0) return html; + var hide = parent ? !parent[options.tree.openName] : undefined; + if (h) hide = h;//当所有父级存在隐藏时,隐藏所有子集 + for (var i = 0; i < data.length; i++) { + var d = data[i]; + d.LAY_INDEX = (parent ? parent.LAY_INDEX + '-' : '') + i; + html += this.renderBodyTr(d, indent, hide); + // 递归渲染子集 + html += this.renderBody(d[options.tree.childName], indent + 1, d, h); + } + return html; + }; + + /** + * 渲染每一行数据 + * @param d 行数据 + * @param indent 缩进大小 + * @param hide 是否隐藏 + * @param $tr + * @returns {string} + */ + TreeTable.prototype.renderBodyTr = function (d, indent, hide, $tr) { + var that = this; + var options = this.options; + if (!indent) indent = 0; + var haveChild = d[options.tree.haveChildName]; + if (options.tree.haveChildReverse) haveChild = !haveChild; + if (haveChild === undefined) haveChild = d[options.tree.childName] && d[options.tree.childName].length > 0; + if ($tr) { + $tr.data('have-child', haveChild ? 'true' : 'false'); + $tr.data('indent', indent); + $tr.removeClass('ew-tree-table-loading'); + } + var html = ''); + var index = 0; + this.eachCols(function (i, col) { + if (col.colGroup) return; + html += that.renderBodyTd(d, indent, index, $tr ? $tr.children('td').eq(index) : undefined, col); + index++; + }); + html += ''; + return html; + }; + + /** + * 渲染每一个单元格数据 + * @param d 行数据 + * @param indent 缩进大小 + * @param index 第几列 + * @param $td + * @param col + * @returns {string} + */ + TreeTable.prototype.renderBodyTd = function (d, indent, index, $td, col) { + if (!col||col.colGroup) return ''; + var options = this.options; + var components = this.getComponents(); + if (!indent) indent = 0; + // 内容填充 + var content = '', cell = '', icon = ''; + if (col.type === 'numbers') { // 序号列 + content = ''; + } else if (col.type === 'checkbox') { // 复选框列 + content = [ + '' + ].join(''); + } else if (col.type === 'radio') { // 单选框列 + content = [ + '' + ].join(''); + } else if (col.templet) { // 自定义模板 + if (typeof col.templet === 'function') { + content = col.templet(d); + } else if (typeof col.templet === 'string') { + laytpl($(col.templet).html()).render(d, function (html) { + content = html; + }); + } + } else if (col.toolbar) { // 操作列 + if (typeof col.toolbar === 'function') { + content = col.toolbar(d); + } else if (typeof col.toolbar === 'string') { + laytpl($(col.toolbar).html()).render(d, function (html) { + content = html; + }); + } + } else if (col.field && d[col.field] !== undefined && d[col.field] !== null) { // 普通字段 + content = util.escape(d[col.field] === 0 ? '0' : d[col.field]); + } + // 图标列处理 + if (index === options.tree.iconIndex) { + // 缩进 + for (var i = 0; i < indent; i++) icon += ''; + icon += ''; + // 加箭头 + var haveChild = d[options.tree.haveChildName]; + if (options.tree.haveChildReverse) haveChild = !haveChild; + if (haveChild === undefined) haveChild = d[options.tree.childName] && d[options.tree.childName].length > 0; + icon += (''); + // 加图标 + icon += options.tree.getIcon(d); + content = '' + content + ''; + if (options.tree.onlyIconControl) content = icon + '' + content; + else content = icon + content + ''; + } + cell = [ + '
    ', + '
    ', content, '
    ', + ' ', + ' ', + '
    ' + ].join(''); + + if ($td) $td.html(cell); + + var html = '' + cell + ''); + return html; + }; + + /** + * 渲染表头 + * @returns {string} + */ + TreeTable.prototype.renderBodyTh = function () { + var options = this.options; + var components = this.getComponents(); + var html = []; + $.each(options.cols, function (i1, item1) { + html.push(''); + $.each(item1, function (i2, item2) { + html.push(''); + html.push('
    '); + html.push('
    '); + // 标题 + var ca = ''; + if (item2.type === 'checkbox') html.push(ca); + else html.push(item2.title || ''); + html.push('
    '); + html.push('
    '); + // 列宽拖拽 + if (!item2.colGroup && !item2.unresize) html.push(''); + html.push(''); + }); + html.push(''); + }); + return html.join(''); + }; + + /** 重置表格尺寸 */ + TreeTable.prototype.resize = function (returnColgroup) { + // 计算表格宽度、最小宽度、百分比宽度 + var options = this.options; + var components = this.getComponents(); + var minWidth = 1, width = 1, needSetWidth = true, mwPercent = 0; + this.eachCols(function (i, item) { + if (item.colGroup || item.hide) return; + if (item.width) { + width += (item.width + 1); + if (item.minWidth) { + if (item.width < item.minWidth) item.width = item.minWidth; + } else if (item.width < options.cellMinWidth) item.width = options.cellMinWidth; + } else needSetWidth = false; + if (item.width) minWidth += (item.width + 1); + else if (item.minWidth) { + minWidth += (item.minWidth + 1); + mwPercent += item.minWidth; + } else { + minWidth += (options.cellMinWidth + 1); + mwPercent += options.cellMinWidth; + } + }); + if (minWidth) { + components.$tHead.css('min-width', minWidth); + components.$tBody.css('min-width', minWidth); + } else { + components.$tHead.css('min-width', 'auto'); + components.$tBody.css('min-width', 'auto'); + } + if (needSetWidth) { + components.$tHead.css('width', width); + components.$tBody.css('width', width); + } else { + components.$tHead.css('width', '100%'); + components.$tBody.css('width', '100%'); + } + + // 生成colgroup + var colgroupHtml = []; + this.eachCols(function (i, item) { + if (item.colGroup || item.hide) return; + colgroupHtml.push(''); + }); + colgroupHtml = colgroupHtml.join(''); + if (returnColgroup) return '' + colgroupHtml + ''; + components.$table.children('colgroup').html(colgroupHtml); + }; + + /** 获取行对应数据 */ + TreeTable.prototype.getDataByTr = function ($tr) { + var data, index; + if (typeof $tr !== 'string' && typeof $tr !== 'number') { + if ($tr) index = $tr.data('index'); + } else index = $tr; + if (index === undefined) return; + if (typeof index === 'number') index = [index]; + else index = index.split('-'); + for (var i = 0; i < index.length; i++) { + if (data) data = data[this.options.tree.childName][index[i]]; + else data = this.options.data[index[i]]; + } + return data; + }; + + /** + * 联动子级复选框状态 + * @param $tr 当前tr的dom + * @param checked + */ + TreeTable.prototype.checkSubCB = function ($tr, checked) { + var that = this; + var components = this.getComponents(); + var indent = -1, $trList; + if ($tr.is('tbody')) { + $trList = $tr.children('tr'); + } else { + indent = parseInt($tr.data('indent')); + $trList = $tr.nextAll('tr'); + } + $trList.each(function () { + if (parseInt($(this).data('indent')) <= indent) return false; + var $cb = $(this).children('td').find('input[lay-filter="' + components.checkboxFilter + '"]'); + $cb.prop('checked', checked); + $cb.removeClass('ew-form-indeterminate'); + if (checked) $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + else $cb.next('.layui-form-checkbox').removeClass('layui-form-checked'); + var d = that.getDataByTr($(this)); + d.LAY_CHECKED = checked; // 同步更新数据 + d.LAY_INDETERMINATE = false; + }); + }; + + /** + * 联动父级复选框状态 + * @param $tr 父级的dom + */ + TreeTable.prototype.checkParentCB = function ($tr) { + var options = this.options; + var components = this.getComponents(); + var d = this.getDataByTr($tr); + var ckNum = 0, unCkNum = 0; + if (d[options.tree.childName]) { + function checkNum(data) { + for (var i = 0; i < data.length; i++) { + if (data[i].LAY_CHECKED) ckNum++; + else unCkNum++; + if (data[i][options.tree.childName]) checkNum(data[i][options.tree.childName]); + } + } + + checkNum(d[options.tree.childName]); + } + var $cb = $tr.children('td').find('input[lay-filter="' + components.checkboxFilter + '"]'); + if (ckNum > 0 && unCkNum === 0) { // 全选 + $cb.prop('checked', true); + $cb.removeClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + d.LAY_CHECKED = true; // 同步更新数据 + d.LAY_INDETERMINATE = false; + } else if (ckNum === 0 && unCkNum > 0) { // 全不选 + $cb.prop('checked', false); + $cb.removeClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').removeClass('layui-form-checked'); + d.LAY_CHECKED = false; // 同步更新数据 + d.LAY_INDETERMINATE = false; + } else if (ckNum > 0 && unCkNum > 0) { // 半选 + $cb.prop('checked', true); + $cb.data('indeterminate', 'true'); + $cb.addClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + d.LAY_CHECKED = true; // 同步更新数据 + d.LAY_INDETERMINATE = true; + } + }; + + /** 联动全选复选框 */ + TreeTable.prototype.checkChooseAllCB = function () { + var options = this.options; + var components = this.getComponents(); + var ckNum = 0, unCkNum = 0; + + function checkNum(data) { + for (var i = 0; i < data.length; i++) { + if (data[i].LAY_CHECKED) ckNum++; + else unCkNum++; + if (data[i][options.tree.childName]) checkNum(data[i][options.tree.childName]); + } + } + + checkNum(options.data); + + var $cb = components.$view.find('input[lay-filter="' + components.chooseAllFilter + '"]'); + if (ckNum > 0 && unCkNum === 0) { // 全选 + $cb.prop('checked', true); + $cb.removeClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + } else if ((ckNum === 0 && unCkNum > 0) || (ckNum === 0 && unCkNum === 0)) { // 全不选 + $cb.prop('checked', false); + $cb.removeClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').removeClass('layui-form-checked'); + } else if (ckNum > 0 && unCkNum > 0) { // 半选 + $cb.prop('checked', true); + $cb.addClass('ew-form-indeterminate'); + $cb.next('.layui-form-checkbox').addClass('layui-form-checked'); + } + }; + + /** 填充序号列 */ + TreeTable.prototype.renderNumberCol = function () { + this.getComponents().$tBody.children('tbody').children('tr').each(function (i) { + $(this).children('td').find('.ew-tree-table-numbers').text(i + 1); + }); + }; + + /** 根据id获取tr的index */ + TreeTable.prototype.getIndexById = function (id) { + var options = this.options; + + function each(data, pi) { + for (var i = 0; i < data.length; i++) { + if (data[i][options.tree.idName] === id) return pi !== undefined ? pi + '-' + i : i; + if (data[i][options.tree.childName]) { + var res = each(data[i][options.tree.childName], pi !== undefined ? pi + '-' + i : i); + //值不为undefined才return + if (res) return res; + } + } + } + + return each(options.data); + }; + + /** 展开指定行 */ + TreeTable.prototype.expand = function (id, cascade) { + var components = this.getComponents(); + var $tr = components.$table.children('tbody').children('tr[data-index="' + this.getIndexById(id) + '"]'); + if (!$tr.hasClass('ew-tree-table-open')) $tr.children('td').find('.ew-tree-pack').trigger('click'); + if (cascade === false) return; + // 联动父级 + var indent = parseInt($tr.data('indent')); + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < indent) { + if (!$(this).hasClass('ew-tree-table-open')) { + $(this).children('td').find('.ew-tree-pack').trigger('click'); + } + indent = tInd; + } + }); + }; + + /** 折叠指定行 */ + TreeTable.prototype.fold = function (id) { + var components = this.getComponents(); + var $tr = components.$table.children('tbody').children('tr[data-index="' + this.getIndexById(id) + '"]'); + if ($tr.hasClass('ew-tree-table-open')) $tr.children('td').find('.ew-tree-pack').trigger('click'); + }; + + /** 全部展开 */ + TreeTable.prototype.expandAll = function () { + this.getComponents().$table.children('tbody').children('tr').each(function () { + if (!$(this).hasClass('ew-tree-table-open')) $(this).children('td').find('.ew-tree-pack').trigger('click'); + }); + }; + + /** 全部折叠 */ + TreeTable.prototype.foldAll = function () { + this.getComponents().$table.children('tbody').children('tr').each(function () { + if ($(this).hasClass('ew-tree-table-open')) $(this).children('td').find('.ew-tree-pack').trigger('click'); + }); + }; + + /** 获取当前数据 */ + TreeTable.prototype.getData = function () { + return this.options.data; + }; + + /** 重载表格 */ + TreeTable.prototype.reload = function (opt) { + this.initOptions(this.options ? $.extend(true, this.options, opt) : opt); + this.init(); // 初始化表格 + this.bindEvents(); // 绑定事件 + }; + + /** 获取当前选中行 */ + TreeTable.prototype.checkStatus = function (needIndeterminate) { + if (needIndeterminate === undefined) needIndeterminate = true; + var list = []; + this.eachData(function (i, item) { + if ((needIndeterminate || !item.LAY_INDETERMINATE) && item.LAY_CHECKED) + list.push($.extend({isIndeterminate: item.LAY_INDETERMINATE}, item)); + }); + return list; + }; + + /** 设置复/单选框选中 */ + TreeTable.prototype.setChecked = function (ids) { + var that = this; + var components = this.getComponents(); + var $radio = components.$table.find('input[lay-filter="' + components.radioFilter + '"]'); + if ($radio.length > 0) { // 开启了单选框 + $radio.each(function () { + var d = that.getDataByTr($(this).parentsUntil('tr').parent()); + if (d && ids[ids.length - 1] == d[that.options.tree.idName]) { + $(this).next('.layui-form-radio').trigger('click'); + return false; + } + }); + } else { // 开启了复选框 + components.$table.find('input[lay-filter="' + components.checkboxFilter + '"]').each(function () { + var $cb = $(this); + var $layCb = $cb.next('.layui-form-checkbox'); + var checked = $cb.prop('checked'); + var indeterminate = $cb.hasClass('ew-form-indeterminate'); + var d = that.getDataByTr($cb.parentsUntil('tr').parent()); + for (var i = 0; i < ids.length; i++) { + if (d && ids[i] == d[that.options.tree.idName]) { + if (d[that.options.tree.childName] && d[that.options.tree.childName].length > 0) continue; + if (!checked || indeterminate) $layCb.trigger('click'); + } + } + }); + } + }; + + /** 移除全部选中 */ + TreeTable.prototype.removeAllChecked = function () { + this.checkSubCB(this.getComponents().$table.children('tbody'), false); + }; + + /** 导出 */ + TreeTable.prototype.exportData = function (type) { + var components = this.getComponents(); + if ('show' === type) { + components.$toolbar.find('.layui-table-tool-panel').remove(); + components.$toolbar.find('[lay-event="LAYTABLE_EXPORT"]').append([ + '
      ', + '
    • 导出到 Csv 文件
    • ', + '
    • 导出到 Excel 文件
    • ', + '
    ' + ].join('')); + } else { + if (device.ie) return layer.msg('不支持ie导出'); + if (!type) type = 'xls'; + var head = [], body = []; + this.eachCols(function (i, item) { + if (item.type !== 'normal' || item.hide) return; + head.push(item.title || ''); + }); + components.$tBody.children('tbody').children('tr').each(function () { + var items = []; + $(this).children('td').each(function () { + var $this = $(this); + if ($this.data('type') !== 'normal' || $this.hasClass('layui-hide')) return true; + items.push($this.text().trim().replace(/,/g, ',')); + }); + body.push(items.join(',')); + }); + // 创建下载文件的a标签 + var alink = document.createElement('a'); + var content = encodeURIComponent(head.join(',') + '\r\n' + body.join('\r\n')); + var contentType = ({csv: 'text/csv', xls: 'application/vnd.ms-excel'})[type]; + alink.href = 'data:' + contentType + ';charset=utf-8,\ufeff' + content; + alink.download = (this.options.title || 'table') + '.' + type; + document.body.appendChild(alink); + alink.click(); + document.body.removeChild(alink); + } + }; + + /** 打印 */ + TreeTable.prototype.printTable = function () { + var components = this.getComponents(); + var head = components.$tHead.children('thead').html(); + if (!head) head = components.$tBody.children('thead').html(); + var body = components.$tBody.children('tbody').html(); + var colgroup = components.$tBody.children('colgroup').html(); + var $html = $([ + '', + ' ', colgroup, '', + ' ', head, '', + ' ', body, '', + '
    ' + ].join('')); + + // 隐藏特殊列 + $html.find('col[data-type="checkbox"],col[data-type="radio"],col[data-type="tool"]').remove(); + $html.find('td[data-type="checkbox"],td[data-type="radio"],td[data-type="tool"],.layui-hide').remove(); + + function hideCol($temp) { + var parentKey = $temp.data('parent'), pCol; + if (!parentKey) return; + var $parent = $html.children('thead').children('tr').children('[data-key="' + parentKey + '"]'); + var colspan = parseInt($parent.attr('colspan')) - 1; + $parent.attr('colspan', colspan); + if (colspan === 0) $parent.remove(); + hideCol($parent); + } + + $html.find('th[data-type="checkbox"],th[data-type="radio"],th[data-type="tool"]').each(function () { + hideCol($(this)); + }).remove(); + + // 打印内容样式 + var style = [ + '' + ].join(''); + var pWindow = window.open('', '_blank'); + pWindow.focus(); + var pDocument = pWindow.document; + pDocument.open(); + pDocument.write($html[0].outerHTML + style); + pDocument.close(); + pWindow.print(); + pWindow.close(); + }; + + /** 筛选列 */ + TreeTable.prototype.toggleCol = function (show, field, key) { + var components = this.getComponents(); + if (show === undefined) { + components.$toolbar.find('.layui-table-tool-panel').remove(); + var cols = ['
      ']; + this.eachCols(function (i, item) { + if (item.type !== 'normal') return; + cols.push('
    • '); + }); + components.$toolbar.find('[lay-event="LAYTABLE_COLS"]').append(cols.join('') + '
    '); + form.render('checkbox', components.filter); + } else { + if (key) { + var $td = components.$table.children('tbody').children('tr').children('[data-key="' + key + '"]'); + var $th = components.$table.children('thead').children('tr').children('[data-key="' + key + '"]'); + if (show) { + $td.removeClass('layui-hide'); + $th.removeClass('layui-hide'); + } else { + $td.addClass('layui-hide'); + $th.addClass('layui-hide'); + } + // 同步更新数据 + var ks = key.split('-'); + var col = this.options.cols[ks[0]][ks[1]]; + col.hide = !show; + + // 更新colspan数据 + function changeParent($temp) { + var parentKey = $temp.data('parent'), pCol; + if (!parentKey) return; + var $parent = components.$table.children('thead').children('tr').children('[data-key="' + parentKey + '"]'); + var colspan = $parent.attr('colspan'); + show ? colspan++ : colspan--; + $parent.attr('colspan', colspan); + if (colspan === 0) $parent.addClass('layui-hide'); + else $parent.removeClass('layui-hide'); + changeParent($parent); + } + + changeParent($th); + + // 同步eachCols数据 + this.eachCols(function (i, item) { + if (item.key === key) item.hide = col.hide; + }); + this.resize(); // 更新表格尺寸 + } + } + }; + + /** + * 搜索数据 + * @param ids 关键字或数据id集合 + */ + TreeTable.prototype.filterData = function (ids) { + var components = this.getComponents(); + components.$loading.show(); + if (this.options.data.length > 0) components.$loading.addClass('ew-loading-float'); + var $trList = components.$table.children('tbody').children('tr'); + var indexList = []; + if (typeof ids === 'string') { // 关键字 + $trList.each(function () { + var index = $(this).data('index'); + $(this).children('td').each(function () { + if ($(this).text().indexOf(ids) !== -1) { + indexList.push(index); + return false; + } + }); + }); + } else { + for (var i = 0; i < ids.length; i++) { + indexList.push(this.getIndexById(ids[i])); + } + } + $trList.addClass('ew-tree-table-filter-hide'); + for (var j = 0; j < indexList.length; j++) { + var $tr = $trList.filter('[data-index="' + indexList[j] + '"]'); + $tr.removeClass('ew-tree-table-filter-hide'); + var indent = parseInt($tr.data('indent')); + // 联动子级 + $tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= indent) return false; + $(this).removeClass('ew-tree-table-filter-hide'); + }); + if ($tr.hasClass('ew-tree-table-open')) toggleRow($tr); + // 联动父级 + $tr.prevAll('tr').each(function () { + var tInd = parseInt($(this).data('indent')); + if (tInd < indent) { + $(this).removeClass('ew-tree-table-filter-hide'); + if (!$(this).hasClass('ew-tree-table-open')) toggleRow($(this)); + indent = tInd; + } + }); + } + // 最后再检查一遍 + /*$trList.not('.ew-tree-table-filter-hide').not('.ew-tree-tb-hide').each(function () { + var index = $(this).data('index'), hide = true; + for (var k = 0; k < indexList.length; k++) { + if (indexList[k] === index) hide = false; + } + if (hide) $(this).addClass('ew-tree-table-filter-hide'); + });*/ + components.$loading.hide(); + components.$loading.removeClass('ew-loading-float'); + if (indexList.length === 0) components.$empty.show(); + updateFixedTbHead(components.$view); // 更新滚动条补丁 + }; + + /** 重置搜索 */ + TreeTable.prototype.clearFilter = function () { + var components = this.getComponents(); + components.$table.children('tbody').children('tr').removeClass('ew-tree-table-filter-hide'); + if (this.options.data.length > 0) components.$empty.hide(); + updateFixedTbHead(components.$view); // 更新滚动条补丁 + }; + + /** + * 刷新指定父级下的节点 + * @param id 父级id,空则全部刷新 + * @param data 非异步模式替换的数据 + */ + TreeTable.prototype.refresh = function (id, data) { + if (isClass(id) === 'Array') { + data = id; + id = undefined; + } + var components = this.getComponents(); + var d, $tr; + if (id !== undefined) { + $tr = components.$table.children('tbody').children('tr[data-index="' + this.getIndexById(id) + '"]'); + d = this.getDataByTr($tr); + } + if (data) { // 数据模式 + if (data.length > 0) components.$loading.addClass('ew-loading-float'); + components.$loading.show(); + if (data.length > 0 && this.options.tree.isPidData) { // pid形式数据 + this.renderBodyData(tt.pidToChildren(data, this.options.tree.idName, this.options.tree.pidName, this.options.tree.childName), d, $tr); + } else { + this.renderBodyData(data, d, $tr); + } + } else { // 异步模式 + this.renderBodyAsync(d, $tr); + } + }; + + /** 删除数据 */ + TreeTable.prototype.del = function (id, index) { + if (index === undefined) index = this.getIndexById(id); + var indexList = (typeof index === 'number' ? [index] : index.split('-')); + var d = this.options.data; + if (indexList.length > 1) { + for (var i = 0; i < indexList.length - 1; i++) { + d = d[parseInt(indexList[i])][this.options.tree.childName]; + } + } + d.splice(indexList[indexList.length - 1], 1); + }; + + /** 更新数据 */ + TreeTable.prototype.update = function (id, fields) { + $.extend(true, this.getDataByTr(this.getIndexById(id)), fields); + }; + + /** 折叠/展开行 */ + function toggleRow($tr) { + var indent = parseInt($tr.data('indent')); + var open = $tr.hasClass('ew-tree-table-open'); + if (open) { // 折叠 + $tr.removeClass('ew-tree-table-open'); + $tr.nextAll('tr').each(function () { + if (parseInt($(this).data('indent')) <= indent) return false; + $(this).addClass('ew-tree-tb-hide'); + }); + } else { // 展开 + $tr.addClass('ew-tree-table-open'); + var hideInd; + $tr.nextAll('tr').each(function () { + var ind = parseInt($(this).data('indent')); + if (ind <= indent) return false; + if (hideInd !== undefined && ind > hideInd) return true; + $(this).removeClass('ew-tree-tb-hide'); + if (!$(this).hasClass('ew-tree-table-open')) hideInd = parseInt($(this).data('indent')); + else hideInd = undefined; + }); + } + updateFixedTbHead($tr.parentsUntil('.ew-tree-table').last().parent()); + return open; + } + + /** 固定表头滚动条补丁 */ + function updateFixedTbHead($view) { + var $headBox = $view.children('.ew-tree-table-head'); + var $tbBox = $view.children('.ew-tree-table-box'); + //修复滚动条出现时,表头宽度不对的问题 + var sWidth = $headBox.width() - $tbBox.prop('clientWidth'); + $headBox.css('border-right', (sWidth > 0 ? sWidth : 0) + 'px solid #f2f2f2'); + } + + // 监听窗口大小改变 + $(window).resize(function () { + $('.ew-tree-table').each(function () { + updateFixedTbHead($(this)); + var $tbBox = $(this).children('.ew-tree-table-box'); + var full = $tbBox.data('full'); + if (full && device.ie && device.ie < 10) { + $tbBox.css('height', getPageHeight() - full); + } + }); + }); + + /** 表格溢出点击展开功能 */ + $(document).on('mouseenter', '.ew-tree-table-cell.single-line', function () { + var $content = $(this).children('.ew-tree-table-cell-content'); + if ($content.prop('scrollWidth') > $content.outerWidth()) $(this).children('.layui-table-grid-down').show(); + }).on('mouseleave', '.ew-tree-table-cell.single-line', function () { + $(this).children('.layui-table-grid-down').hide(); + }); + // 点击箭头展开 + $(document).on('click', '.ew-tree-table-cell>.layui-table-grid-down', function (e) { + e.stopPropagation(); + hideAllTdTips(); + var $cell = $(this).parent(); + $cell.addClass('ew-tree-tips-open'); + $cell.children('.layui-table-grid-down').hide(); + var tw = $cell.parent().outerWidth() + 4; + if ($cell.outerWidth() < tw) $cell.children('.ew-tree-table-cell-content').css({'width': tw, 'max-width': tw}); + var $box = $cell.parents().filter('.ew-tree-table-box'); + if ($box.length === 0) $box = $cell.parents().filter('.ew-tree-table-head'); + if ($box.length === 0) return; + if (($cell.outerWidth() + $cell.offset().left) + 20 > $box.offset().left + $box.outerWidth()) { + $cell.addClass('ew-show-left'); + } + if (($cell.outerHeight() + $cell.offset().top + 10) > $box.offset().top + $box.outerHeight()) { + $cell.addClass('ew-show-bottom'); + } + }); + // 点击关闭按钮关闭 + $(document).on('click', '.ew-tree-table-cell>.ew-tree-tips-c', function () { + hideAllTdTips(); + }); + // 点击空白部分关闭 + $(document).on('click', function () { + hideAllTdTips(); + $('.ew-tree-table .layui-table-tool-panel').remove(); + }); + $(document).on('click', '.ew-tree-table-cell.ew-tree-tips-open', function (e) { + e.stopPropagation(); + }); + + /* 关闭所有单元格溢出提示框 */ + function hideAllTdTips() { + $('.ew-tree-table-cell').removeClass('ew-tree-tips-open ew-show-left ew-show-bottom'); + $('.ew-tree-table-cell>.ew-tree-table-cell-content').css({'width': '', 'max-width': ''}); + } + + /** 拖拽调整列宽 */ + $(document).on('mousedown', '.ew-tb-resize', function (e) { + layui.stope(e); + var $this = $(this); + $this.attr('move', 'true'); + var key = $this.parent().data('key'); + $this.data('x', e.clientX); + var w = $this.parent().parent().parent().parent().children('colgroup').children('col[data-key="' + key + '"]').attr('width'); + if (!w || w.toString().indexOf('%') !== -1) w = $this.parent().outerWidth(); + $this.data('width', w); + $('body').addClass('ew-tree-table-resizing'); + }).on('mousemove', function (e) { + var $rs = $('.ew-tree-table .ew-tb-resize[move="true"]'); + if ($rs.length === 0) return; + layui.stope(e); + var x = $rs.data('x'); + var w = $rs.data('width'); + var nw = parseFloat(w) + e.clientX - parseFloat(x); + if (nw <= 0) nw = 1; + // 更新实例options中的宽度 + var ins = _instances[$rs.parentsUntil('.ew-tree-table').last().parent().attr('lay-filter')]; + var key = $rs.parent().data('key'); + var ks = key.split('-'); + ins.options.cols[ks[0]][ks[1]].width = nw; + ins.eachCols(function (i, item) { + if (item.key === key) item.width = nw; + }); + ins.resize(); + }).on('mouseup', function (e) { + $('.ew-tree-table .ew-tb-resize[move="true"]').attr('move', 'false'); + $('body').removeClass('ew-tree-table-resizing'); + }).on('mouseleave', function (e) { + $('.ew-tree-table .ew-tb-resize[move="true"]').attr('move', 'false'); + $('body').removeClass('ew-tree-table-resizing'); + }); + + /** 获取顶级的pId */ + function getPids(data, idName, pidName) { + var pids = []; + for (var i = 0; i < data.length; i++) { + var hasPid = false; + for (var j = 0; j < data.length; j++) { + if (data[i][pidName] == data[j][idName]) { + hasPid = true; + break; + } + } + if (!hasPid) pids.push(data[i][pidName]); + } + return pids; + } + + /** 判断pId是否相等 */ + function pidEquals(pId, pIds) { + if (isClass(pIds) === 'Array') { + for (var i = 0; i < pIds.length; i++) + if (pId == pIds[i]) return true; + } + return pId == pIds; + } + + /** 获取变量类型 */ + function isClass(o) { + if (o === null) return 'Null'; + if (o === undefined) return 'Undefined'; + return Object.prototype.toString.call(o).slice(8, -1); + } + + /** 获取浏览器高度 */ + function getPageHeight() { + return document.documentElement.clientHeight || document.body.clientHeight; + } + + /** 对外提供的方法 */ + var tt = { + /* 渲染 */ + render: function (options) { + return new TreeTable(options); + }, + /* 重载 */ + reload: function (id, opt) { + _instances[id].reload(opt); + }, + /* 事件监听 */ + on: function (events, callback) { + return layui.onevent.call(this, MOD_NAME, events, callback); + }, + /* pid转children形式 */ + pidToChildren: function (data, idName, pidName, childName, pId) { + if (!childName) childName = 'children'; + var newList = []; + for (var i = 0; i < data.length; i++) { + if (data[i][idName] == data[i][pidName]) + return console.error('第' + i + '条数据的' + idName + '与' + pidName + '相同', data[i]); + if (pId === undefined) pId = getPids(data, idName, pidName); + if (pidEquals(data[i][pidName], pId)) { + var children = this.pidToChildren(data, idName, pidName, childName, data[i][idName]); + if (children.length > 0) data[i][childName] = children; + newList.push(data[i]); + } + } + return newList; + } + }; + + /** 添加样式 */ + $('head').append([ + '' + ].join('')); + + exports('treeTable', tt); +}); diff --git a/ss-admin/src/main/resources/static/js/lay-module/treetable-lay-3.x/treeTable2.js b/ss-admin/src/main/resources/static/js/lay-module/treetable-lay-3.x/treeTable2.js new file mode 100644 index 0000000..17d641d --- /dev/null +++ b/ss-admin/src/main/resources/static/js/lay-module/treetable-lay-3.x/treeTable2.js @@ -0,0 +1,2 @@ +/** 树形表格3.x Created by wangfan on 2020-05-12 https://gitee.com/whvse/treetable-lay */ +layui.define(["laytpl","form","util"],function(s){var g=layui.jquery;var d=layui.laytpl;var c=layui.form;var b=layui.util;var o=layui.device();var h="treeTable";var k={};var e={elem:undefined,cols:undefined,url:undefined,method:undefined,where:undefined,contentType:undefined,headers:undefined,parseData:undefined,request:{pidName:"pid"},toolbar:undefined,defaultToolbar:undefined,width:undefined,height:undefined,cellMinWidth:90,done:undefined,data:undefined,title:undefined,skin:undefined,even:undefined,size:undefined,text:{none:"无数据"},reqData:undefined,useAdmin:false,tree:{idName:"id",pidName:"pid",childName:"children",haveChildName:"haveChild",openName:"open",iconIndex:0,arrowType:undefined,onlyIconControl:undefined,getIcon:function(u){var t=u[this.haveChildName];if(t!==undefined){t=t===true||t==="true"}else{if(u[this.childName]){t=u[this.childName].length>0}}if(t){return''}else{return''}}}};var r={field:undefined,title:undefined,width:undefined,minWidth:undefined,type:"normal",fixed:undefined,hide:undefined,unresize:undefined,style:undefined,align:undefined,colspan:undefined,rowspan:undefined,templet:undefined,toolbar:undefined,"class":undefined,singleLine:undefined};var p=function(t){k[t.elem.substring(1)]=this;this.reload(t)};p.prototype.initOptions=function(t){var D=this;function B(J){if(!J.INIT_OK){J=g.extend({INIT_OK:true},r,J)}if(J.type==="space"){if(!J.width){J.width=15}J.minWidth=J.width}else{if(J.type==="numbers"){if(!J.width){J.width=40}J.minWidth=J.width;if(!J.singleLine){J.singleLine=false}if(!J.unresize){J.unresize=true}if(!J.align){J.align="center"}}else{if(J.type==="checkbox"||J.type==="radio"){if(!J.width){J.width=48}J.minWidth=J.width;if(!J.singleLine){J.singleLine=false}if(!J.unresize){J.unresize=true}if(!J.align){J.align="center"}}}}if(J.toolbar){J.type="tool"}return J}if("Array"!==l(t.cols[0])){t.cols=[t.cols]}for(var w=0;w1){A.colGroup=true;A.type="group";I=[];G++;var z=0;for(var v=0;v1&&z==A.colspan)){t.cols[y+1][v]=H;continue}H.HAS_PARENT=true;H.parentKey=y+"-"+x;H.key=(y+1)+"-"+v;H.PARENT_COL_INDEX=G;H=B(H);I.push(H);z=z+parseInt(H.colspan>1?H.colspan:1);t.cols[y+1][v]=H}}A.CHILD_COLS=I;if(!A.PARENT_COL_INDEX){F.push(A)}t.cols[y][x]=A}}this.options=g.extend(true,{},e,t);this.options.colArrays=F;if(this.options.url){this.options.reqData=function(J,K){if(!D.options.where){D.options.where={}}if(J){D.options.where[D.options.request.pidName]=J[D.options.tree.idName]}(D.options.useAdmin?layui.admin:g).ajax({url:D.options.url,data:D.options.contentType&&D.options.contentType.indexOf("application/json")===0?JSON.stringify(D.options.where):D.options.where,headers:D.options.headers,type:D.options.method,dataType:"json",contentType:D.options.contentType,success:function(L){if(D.options.parseData){L=D.options.parseData(L)}if(L.code==0){K(L.data)}else{K(L.msg||"加载失败")}},error:function(L){K(L.status+" - "+L.statusText)}})}}else{if(this.options.data&&this.options.data.length>0&&this.options.tree.isPidData){this.options.data=a.pidToChildren(this.options.data,this.options.tree.idName,this.options.tree.pidName,this.options.tree.childName)}}if("default"===this.options.toolbar){this.options.toolbar=["
    ",'
    ',' ',"
    ",'
    ',' ',"
    ",'
    ',' ',"
    ","
    "].join("")}if(this.options.defaultToolbar===undefined){this.options.defaultToolbar=["filter","exports","print"]}if(typeof this.options.tree.getIcon==="string"){var E=this.options.tree.getIcon;this.options.tree.getIcon=function(K){if(E!=="ew-tree-icon-style2"){return E}var J=K[this.haveChildName];if(J!==undefined){J=J===true||J==="true"}else{if(K[this.childName]){J=K[this.childName].length>0}}if(J){return''}else{return''}}}};p.prototype.init=function(){var E=this.options;var u=g(E.elem);var B=E.elem.substring(1);u.removeAttr("lay-filter");if(u.next(".ew-tree-table").length===0){u.css("display","none");u.after(['
    ',' ','
    ','
    ',"
    ",'
    ','
    ','
    ',' ',"
    ",'
    ',E.text.none||"","
    ","
    ","
    "].join(""))}var A=this.getComponents();if(E.skin){A.$table.attr("lay-skin",E.skin)}if(E.size){A.$table.attr("lay-size",E.size)}if(E.even){A.$table.attr("lay-even",E.even)}A.$toolbar.empty();if(E.toolbar===false||E.toolbar===undefined){A.$toolbar.hide()}else{A.$toolbar.show();if(typeof E.toolbar==="string"){d(g(E.toolbar).html()).render({},function(F){A.$toolbar.html('
    '+F+"
    ")})}var C=['
    '];for(var y=0;y');C.push('
    ')}}A.$toolbar.append(C.join("")+"")}if(E.width){A.$view.css("width",E.width);A.$tHeadGroup.css("width",E.width);A.$tBodyGroup.css("width",E.width)}var v=this.resize(true);var D=""+this.renderBodyTh()+"";A.$tBodyGroup.children("style").remove();if(E.height){A.$tHead.html(v+D);A.$tBody.html(v+"");if(E.height.indexOf("full-")===0){var z=parseFloat(E.height.substring(5))+A.$toolbar.outerHeight()+A.$tHeadGroup.outerHeight()+1;A.$tBodyGroup.append(['"].join(""));A.$tBodyGroup.data("full",z);A.$tBodyGroup.css("height","")}else{A.$tBodyGroup.css("height",E.height);A.$tBodyGroup.data("full","")}A.$tHeadGroup.show()}else{A.$tHeadGroup.hide();var x={lg:50,sm:30,md:38};A.$tBodyGroup.append(['"].join(""));A.$tBody.html(v+D+"")}c.render("checkbox",B);function t(H){var F=H.data("parent"),G;if(!F){return}var I=A.$table.children("thead").children("tr").children('[data-key="'+F+'"]');var J=I.attr("colspan")-1;I.attr("colspan",J);if(J===0){I.addClass("layui-hide")}t(I)}A.$table.children("thead").children("tr").children("th.layui-hide").each(function(){t(g(this))});if(E.reqData){this.options.data=undefined;this.renderBodyAsync()}else{if(E.data&&E.data.length>0){this.renderBodyData(E.data)}else{A.$loading.hide();A.$empty.show()}}};p.prototype.bindEvents=function(){var v=this;var t=this.options;var u=this.getComponents();var w=u.$table.children("tbody");var x=function(y){var z=g(this);if(!z.is("tr")){var C=z.parent("tr");if(C.length>0){z=C}else{z=z.parentsUntil("tr").last().parent()}}var A=v.getDataByTr(z);var B={tr:z,data:A,del:function(){var F=z.data("index");var D=parseInt(z.data("indent"));z.nextAll("tr").each(function(){if(parseInt(g(this).data("indent"))<=D){return false}g(this).remove()});var G=(typeof F==="number"?1:F.split("-").length);z.nextAll("tr").each(function(){var H=g(this);if(parseInt(H.data("indent"))=D){return true}v.checkParentCB(g(this));D=H});v.checkChooseAllCB();if(t.data.length===0){u.$empty.show()}f(u.$view)},update:function(E){A=g.extend(true,A,E);var D=parseInt(z.data("indent"));v.renderBodyTr(A,D,undefined,z);c.render(null,u.filter);v.renderNumberCol();z.prevAll("tr").each(function(){var F=parseInt(g(this).data("indent"));if(F>=D){return true}v.checkParentCB(g(this));D=F});v.checkChooseAllCB()}};return g.extend(B,y)};w.off("click.fold").on("click.fold",".ew-tree-pack",function(C){layui.stope(C);var A=g(this).parentsUntil("tr").last().parent();if(A.hasClass("ew-tree-table-loading")){return}var y=A.data("have-child");if(y!==true&&y!=="true"){return}var z=A.hasClass("ew-tree-table-open");var B=v.getDataByTr(A);if(!z&&!B[t.tree.childName]){v.renderBodyAsync(B,A)}else{B[t.tree.openName]=i(A)}});w.off("click.tool").on("click.tool","*[lay-event]",function(z){layui.stope(z);var y=g(this);layui.event.call(this,h,"tool("+u.filter+")",x.call(this,{event:y.attr("lay-event")}))});c.on("radio("+u.radioFilter+")",function(y){var z=v.getDataByTr(g(y.elem).parentsUntil("tr").last().parent());v.removeAllChecked();z.LAY_CHECKED=true;z.LAY_INDETERMINATE=false;layui.event.call(this,h,"checkbox("+u.filter+")",{checked:true,data:z,type:"one"})});c.on("checkbox("+u.checkboxFilter+")",function(C){var B=C.elem.checked;var E=g(C.elem);var z=E.next(".layui-form-checkbox");if(!B&&E.hasClass("ew-form-indeterminate")){B=true;E.prop("checked",B);z.addClass("layui-form-checked");E.removeClass("ew-form-indeterminate")}var A=E.parentsUntil("tr").last().parent();var D=v.getDataByTr(A);D.LAY_CHECKED=B;D.LAY_INDETERMINATE=false;if(D[t.tree.childName]&&D[t.tree.childName].length>0){v.checkSubCB(A,B)}var y=parseInt(A.data("indent"));A.prevAll("tr").each(function(){var F=parseInt(g(this).data("indent"));if(F0){return}var B=y.data("index");var z=y.find(".ew-tree-table-indent").length;var D=v.getDataByTr(y.parent());if("text"===H||"number"===H){var F=g('');F[0].value=D[G];y.append(F);F.focus();F.blur(function(){var K=g(this).val();if(K==D[G]){return g(this).remove()}var I=layui.event.call(this,h,"edit("+u.filter+")",x.call(this,{value:K,field:G}));if(I===false){g(this).addClass("layui-form-danger");g(this).focus()}else{D[G]=K;var J=y.data("key").split("-");v.renderBodyTd(D,z,B,y,t.cols[J[0]][J[1]])}})}else{console.error("不支持的单元格编辑类型:"+H)}}else{var A=layui.event.call(this,h,"cell("+u.filter+")",x.call(this,{td:y,field:G}));if(A===false){layui.stope(C)}}});w.off("dblclick.cellDouble").on("dblclick.cellDouble","td",function(C){var D=g(this);var z=D.data("type");if(z==="checkbox"||z==="radio"){return layui.stope(C)}var A=D.data("edit");var B=D.data("field");if(A){return layui.stope(C)}var y=layui.event.call(this,h,"cellDouble("+u.filter+")",x.call(this,{td:D,field:B}));if(y===false){layui.stope(C)}});u.$toolbar.off("click.toolbar").on("click.toolbar","*[lay-event]",function(A){layui.stope(A);var z=g(this);var y=z.attr("lay-event");if("LAYTABLE_COLS"===y){v.toggleCol()}else{if("LAYTABLE_EXPORT"===y){v.exportData("show")}else{if("LAYTABLE_PRINT"===y){v.printTable()}else{layui.event.call(this,h,"toolbar("+u.filter+")",{event:y,elem:z})}}}});u.$tBodyGroup.on("scroll",function(){var y=g(this);u.$tHeadGroup.scrollLeft(y.scrollLeft())});u.$toolbar.off("click.export").on("click.export",".layui-table-tool-panel>[data-type]",function(){var y=g(this).data("type");if("csv"===y||"xls"===y){v.exportData(y)}});u.$toolbar.off("click.panel").on("click.panel",".layui-table-tool-panel",function(y){layui.stope(y)});c.on("checkbox("+u.colsToggleFilter+")",function(y){v.toggleCol(y.elem.checked,undefined,y.value)})};p.prototype.getComponents=function(){var v=g(this.options.elem).next(".ew-tree-table");var t=v.attr("lay-filter");var w=v.children(".ew-tree-table-head");var u=v.children(".ew-tree-table-box");return{$view:v,filter:t,$tHeadGroup:w,$tBodyGroup:u,$tHead:w.children(".layui-table"),$tBody:u.children(".layui-table"),$table:v.find(".layui-table"),$toolbar:v.children(".ew-tree-table-tool"),$empty:u.children(".ew-tree-table-empty"),$loading:u.children(".ew-tree-table-loading"),checkboxFilter:"ew_tb_checkbox_"+t,radioFilter:"ew_tb_radio_"+t,chooseAllFilter:"ew_tb_choose_all_"+t,colsToggleFilter:"ew_tb_toggle_cols"+t}};p.prototype.eachCols=function(w,v){if(!v){v=this.options.colArrays}for(var t=0;t0){u.$loading.addClass("ew-loading-float")}u.$loading.show()}t.reqData(x,function(y){if(typeof y!=="string"&&y&&y.length>0&&t.tree.isPidData){y=a.pidToChildren(y,t.tree.idName,t.tree.pidName,t.tree.childName)}v.renderBodyData(y,x,w)})};p.prototype.renderBodyData=function(w,A,x){var u;if(typeof w==="string"){u=w;w=[]}var z=this;var C=this.options;var y=this.getComponents();if(A===undefined){C.data=w}else{A[C.tree.childName]=w}var v;if(x){v=parseInt(x.data("indent"))+1;A[C.tree.openName]=true}var t=this.renderBody(w,v,A);if(x){x.nextAll("tr").each(function(){if(parseInt(g(this).data("indent"))<=(v-1)){return false}g(this).remove()});x.after(t).addClass("ew-tree-table-open")}else{y.$tBody.children("tbody").html(t)}c.render(null,y.filter);this.renderNumberCol();if(x){this.checkParentCB(x);x.prevAll("tr").each(function(){var D=parseInt(g(this).data("indent"));if(D<(v-1)){z.checkParentCB(g(this));v=D+1}});x.removeClass("ew-tree-table-loading");var B=x.find(".ew-tree-pack").children(".ew-tree-table-arrow");B.removeClass("layui-anim layui-anim-rotate layui-anim-loop");if(u){x.removeClass("ew-tree-table-open")}else{if(w&&w.length===0){A[C.tree.haveChildName]=false;x.data("have-child",false);B.addClass("ew-tree-table-arrow-hide");B.next(".ew-tree-icon").after(C.tree.getIcon(A)).remove()}}}else{y.$loading.hide();y.$loading.removeClass("ew-loading-float");if(w&&w.length>0){y.$empty.hide()}else{y.$empty.show();if(u){y.$empty.text(u)}else{y.$empty.html(C.text.none)}}}this.checkChooseAllCB();f(y.$view);C.done&&C.done(w)};p.prototype.renderBody=function(z,t,y){var u=this.options;if(!t){t=0}var x="";if(!z||z.length===0){return x}var w=y?!y[u.tree.openName]:undefined;for(var v=0;v0}if(w){w.data("have-child",A?"true":"false");w.data("indent",u);w.removeClass("ew-tree-table-loading")}var v="');var y=0;this.eachCols(function(E,D){if(D.colGroup){return}v+=z.renderBodyTd(B,u,y,w?w.children("td").eq(y):undefined,D);y++});v+="";return v};p.prototype.renderBodyTd=function(C,v,A,t,u){if(u.colGroup){return""}var F=this.options;var y=this.getComponents();if(!v){v=0}var B="",E="",D="";if(u.type==="numbers"){B=''}else{if(u.type==="checkbox"){B=[''].join("")}else{if(u.type==="radio"){B=[''].join("")}else{if(u.templet){if(typeof u.templet==="function"){B=u.templet(C)}else{if(typeof u.templet==="string"){d(g(u.templet).html()).render(C,function(G){B=G})}}}else{if(u.toolbar){if(typeof u.toolbar==="function"){B=u.toolbar(C)}else{if(typeof u.toolbar==="string"){d(g(u.toolbar).html()).render(C,function(G){B=G})}}}else{if(u.field&&C[u.field]!==undefined&&C[u.field]!==null){B=b.escape(C[u.field]===0?"0":C[u.field])}}}}}}if(A===F.tree.iconIndex){for(var w=0;w'}D+='';var z=C[F.tree.haveChildName];if(z===undefined){z=C[F.tree.childName]&&C[F.tree.childName].length>0}D+=('');D+=F.tree.getIcon(C);B=""+B+"";if(F.tree.onlyIconControl){B=D+""+B}else{B=D+B+""}}E=['
    ",'
    ',B,"
    ",' ',' ',"
    "].join("");if(t){t.html(E)}var x=""+E+"");return x};p.prototype.renderBodyTh=function(){var t=this.options;var v=this.getComponents();var u=[];g.each(t.cols,function(x,w){u.push("");g.each(w,function(A,z){u.push("");u.push('
    ");u.push('
    ');var y='';if(z.type==="checkbox"){u.push(y)}else{u.push(z.title||"")}u.push('
    ');u.push('
    ');if(!z.colGroup&&!z.unresize){u.push('')}u.push("")});u.push("")});return u.join("")};p.prototype.resize=function(z){var t=this.options;var x=this.getComponents();var v=1,u=1,A=true,w=0;this.eachCols(function(B,C){if(C.colGroup||C.hide){return}if(C.width){u+=(C.width+1);if(C.minWidth){if(C.width")});y=y.join("");if(z){return""+y+""}x.$table.children("colgroup").html(y)};p.prototype.getDataByTr=function(v){var w,t;if(typeof v!=="string"&&typeof v!=="number"){if(v){t=v.data("index")}}else{t=v}if(t===undefined){return}if(typeof t==="number"){t=[t]}else{t=t.split("-")}for(var u=0;u0&&v===0){A.prop("checked",true);A.removeClass("ew-form-indeterminate");A.next(".layui-form-checkbox").addClass("layui-form-checked");z.LAY_CHECKED=true;z.LAY_INDETERMINATE=false}else{if(y===0&&v>0){A.prop("checked",false);A.removeClass("ew-form-indeterminate");A.next(".layui-form-checkbox").removeClass("layui-form-checked");z.LAY_CHECKED=false;z.LAY_INDETERMINATE=false}else{if(y>0&&v>0){A.prop("checked",true);A.data("indeterminate","true");A.addClass("ew-form-indeterminate");A.next(".layui-form-checkbox").addClass("layui-form-checked");z.LAY_CHECKED=true;z.LAY_INDETERMINATE=true}}}};p.prototype.checkChooseAllCB=function(){var u=this.options;var w=this.getComponents();var x=0,v=0;function t(A){for(var z=0;z0&&v===0){y.prop("checked",true);y.removeClass("ew-form-indeterminate");y.next(".layui-form-checkbox").addClass("layui-form-checked")}else{if((x===0&&v>0)||(x===0&&v===0)){y.prop("checked",false);y.removeClass("ew-form-indeterminate");y.next(".layui-form-checkbox").removeClass("layui-form-checked")}else{if(x>0&&v>0){y.prop("checked",true);y.addClass("ew-form-indeterminate");y.next(".layui-form-checkbox").addClass("layui-form-checked")}}}};p.prototype.renderNumberCol=function(){this.getComponents().$tBody.children("tbody").children("tr").each(function(t){g(this).children("td").find(".ew-tree-table-numbers").text(t+1)})};p.prototype.getIndexById=function(v){var t=this.options;function u(x,y){for(var w=0;w0){t.each(function(){var x=w.getDataByTr(g(this).parentsUntil("tr").parent());if(x&&u[u.length-1]==x[w.options.tree.idName]){g(this).next(".layui-form-radio").trigger("click");return false}})}else{v.$table.find('input[lay-filter="'+v.checkboxFilter+'"]').each(function(){var C=g(this);var y=C.next(".layui-form-checkbox");var z=C.prop("checked");var B=C.hasClass("ew-form-indeterminate");var A=w.getDataByTr(C.parentsUntil("tr").parent());for(var x=0;x0){continue}if(!z||B){y.trigger("click")}}}})}};p.prototype.removeAllChecked=function(){this.checkSubCB(this.getComponents().$table.children("tbody"),false)};p.prototype.exportData=function(w){var y=this.getComponents();if("show"===w){y.$toolbar.find(".layui-table-tool-panel").remove();y.$toolbar.find('[lay-event="LAYTABLE_EXPORT"]').append(['
      ','
    • 导出到 Csv 文件
    • ','
    • 导出到 Excel 文件
    • ',"
    "].join(""))}else{if(o.ie){return layer.msg("不支持ie导出")}if(!w){w="xls"}var u=[],t=[];this.eachCols(function(A,B){if(B.type!=="normal"||B.hide){return}u.push(B.title||"")});y.$tBody.children("tbody").children("tr").each(function(){var A=[];g(this).children("td").each(function(){var B=g(this);if(B.data("type")!=="normal"||B.hasClass("layui-hide")){return true}A.push(B.text().trim().replace(/,/g,","))});t.push(A.join(","))});var v=document.createElement("a");var x=encodeURIComponent(u.join(",")+"\r\n"+t.join("\r\n"));var z=({csv:"text/csv",xls:"application/vnd.ms-excel"})[w];v.href="data:"+z+";charset=utf-8,\ufeff"+x;v.download=(this.options.title||"table")+"."+w;document.body.appendChild(v);v.click();document.body.removeChild(v)}};p.prototype.printTable=function(){var w=this.getComponents();var z=w.$tHead.children("thead").html();if(!z){z=w.$tBody.children("thead").html()}var x=w.$tBody.children("tbody").html();var v=w.$tBody.children("colgroup").html();var u=g([''," ",v,""," ",z,""," ",x,"","
    "].join(""));u.find('col[data-type="checkbox"],col[data-type="radio"],col[data-type="tool"]').remove();u.find('td[data-type="checkbox"],td[data-type="radio"],td[data-type="tool"],.layui-hide').remove();function A(F){var C=F.data("parent"),D;if(!C){return}var E=u.children("thead").children("tr").children('[data-key="'+C+'"]');var G=parseInt(E.attr("colspan"))-1;E.attr("colspan",G);if(G===0){E.remove()}A(E)}u.find('th[data-type="checkbox"],th[data-type="radio"],th[data-type="tool"]').each(function(){A(g(this))}).remove();var t=[""].join("");var y=window.open("","_blank");y.focus();var B=y.document;B.open();B.write(u[0].outerHTML+t);B.close();y.print();y.close()};p.prototype.toggleCol=function(A,z,B){var w=this.getComponents();if(A===undefined){w.$toolbar.find(".layui-table-tool-panel").remove();var x=['
      '];this.eachCols(function(D,E){if(E.type!=="normal"){return}x.push('
    • ")});w.$toolbar.find('[lay-event="LAYTABLE_COLS"]').append(x.join("")+"
    ");c.render("checkbox",w.filter)}else{if(B){var u=w.$table.children("tbody").children("tr").children('[data-key="'+B+'"]');var C=w.$table.children("thead").children("tr").children('[data-key="'+B+'"]');if(A){u.removeClass("layui-hide");C.removeClass("layui-hide")}else{u.addClass("layui-hide");C.addClass("layui-hide")}var y=B.split("-");var v=this.options.cols[y[0]][y[1]];v.hide=!A;function t(G){var D=G.data("parent"),E;if(!D){return}var F=w.$table.children("thead").children("tr").children('[data-key="'+D+'"]');var H=F.attr("colspan");A?H++:H--;F.attr("colspan",H);if(H===0){F.addClass("layui-hide")}else{F.removeClass("layui-hide")}t(F)}t(C);this.eachCols(function(D,E){if(E.key===B){E.hide=v.hide}});this.resize()}}};p.prototype.filterData=function(y){var A=this.getComponents();A.$loading.show();if(this.options.data.length>0){A.$loading.addClass("ew-loading-float")}var x=A.$table.children("tbody").children("tr");var u=[];if(typeof y==="string"){x.each(function(){var B=g(this).data("index");g(this).children("td").each(function(){if(g(this).text().indexOf(y)!==-1){u.push(B);return false}})})}else{for(var w=0;w0){t.$empty.hide()}f(t.$view)};p.prototype.refresh=function(x,v){if(l(x)==="Array"){v=x;x=undefined}var u=this.getComponents();var w,t;if(x!==undefined){t=u.$table.children("tbody").children('tr[data-index="'+this.getIndexById(x)+'"]');w=this.getDataByTr(t)}if(v){if(this.data.length>0){u.$loading.addClass("ew-loading-float")}u.$loading.show();if(v.length>0&&this.options.tree.isPidData){this.renderBodyData(a.pidToChildren(v,this.options.tree.idName,this.options.tree.pidName,this.options.tree.childName),w,t)}else{this.renderBodyData(v,w,t)}}else{this.renderBodyAsync(w,t)}};p.prototype.del=function(x,u){if(u===undefined){u=this.getIndexById(x)}var t=(typeof u==="number"?[u]:u.split("-"));var w=this.options.data;if(t.length>1){for(var v=0;vw){return true}g(this).removeClass("ew-tree-tb-hide");if(!g(this).hasClass("ew-tree-table-open")){w=parseInt(g(this).data("indent"))}else{w=undefined}})}f(v.parentsUntil(".ew-tree-table").last().parent());return u}function f(w){var t=w.children(".ew-tree-table-head");var u=w.children(".ew-tree-table-box");var v=u.width()-u.prop("clientWidth");t.css("border-right",(v>0?v:0)+"px solid #f2f2f2")}g(window).resize(function(){g(".ew-tree-table").each(function(){f(g(this));var u=g(this).children(".ew-tree-table-box");var t=u.data("full");if(t&&o.ie&&o.ie<10){u.css("height",m()-t)}})});g(document).on("mouseenter",".ew-tree-table-cell.single-line",function(){var t=g(this).children(".ew-tree-table-cell-content");if(t.prop("scrollWidth")>t.outerWidth()){g(this).children(".layui-table-grid-down").show()}}).on("mouseleave",".ew-tree-table-cell.single-line",function(){g(this).children(".layui-table-grid-down").hide()});g(document).on("click",".ew-tree-table-cell>.layui-table-grid-down",function(w){w.stopPropagation();j();var u=g(this).parent();u.addClass("ew-tree-tips-open");u.children(".layui-table-grid-down").hide();var t=u.parent().outerWidth()+4;if(u.outerWidth()v.offset().left+v.outerWidth()){u.addClass("ew-show-left")}if((u.outerHeight()+u.offset().top+10)>v.offset().top+v.outerHeight()){u.addClass("ew-show-bottom")}});g(document).on("click",".ew-tree-table-cell>.ew-tree-tips-c",function(){j()});g(document).on("click",function(){j();g(".ew-tree-table .layui-table-tool-panel").remove()});g(document).on("click",".ew-tree-table-cell.ew-tree-tips-open",function(t){t.stopPropagation()});function j(){g(".ew-tree-table-cell").removeClass("ew-tree-tips-open ew-show-left ew-show-bottom");g(".ew-tree-table-cell>.ew-tree-table-cell-content").css({"width":"","max-width":""})}g(document).on("mousedown",".ew-tb-resize",function(x){layui.stope(x);var v=g(this);v.attr("move","true");var u=v.parent().data("key");v.data("x",x.clientX);var t=v.parent().parent().parent().parent().children("colgroup").children('col[data-key="'+u+'"]').attr("width");if(!t||t.toString().indexOf("%")!==-1){t=v.parent().outerWidth()}v.data("width",t);g("body").addClass("ew-tree-table-resizing")}).on("mousemove",function(B){var y=g('.ew-tree-table .ew-tb-resize[move="true"]');if(y.length===0){return}layui.stope(B);var t=y.data("x");var v=y.data("width");var u=parseFloat(v)+B.clientX-parseFloat(t);if(u<=0){u=1}var z=k[y.parentsUntil(".ew-tree-table").last().parent().attr("lay-filter")];var A=y.parent().data("key");var C=A.split("-");z.options.cols[C[0]][C[1]].width=u;z.eachCols(function(w,x){if(x.key===A){x.width=u}});z.resize()}).on("mouseup",function(t){g('.ew-tree-table .ew-tb-resize[move="true"]').attr("move","false");g("body").removeClass("ew-tree-table-resizing")}).on("mouseleave",function(t){g('.ew-tree-table .ew-tb-resize[move="true"]').attr("move","false");g("body").removeClass("ew-tree-table-resizing")});function q(x,u,z){var y=[];for(var w=0;w0){z[w][t]=v}y.push(z[w])}}return y}};g("head").append(['"].join(""));s("treeTable",a)}); \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/js/lay-module/treetable-lay/treetable.css b/ss-admin/src/main/resources/static/js/lay-module/treetable-lay/treetable.css new file mode 100644 index 0000000..584b2f8 --- /dev/null +++ b/ss-admin/src/main/resources/static/js/lay-module/treetable-lay/treetable.css @@ -0,0 +1,18 @@ +.treeTable-empty { + width: 20px; + display: inline-block; +} + +.treeTable-icon { + cursor: pointer; +} + +.treeTable-icon .layui-icon-triangle-d:before { + content: "\e623"; +} + +.treeTable-icon.open .layui-icon-triangle-d:before { + content: "\e625"; + background-color: transparent; +} + diff --git a/ss-admin/src/main/resources/static/js/lay-module/treetable-lay/treetable.js b/ss-admin/src/main/resources/static/js/lay-module/treetable-lay/treetable.js new file mode 100644 index 0000000..e38a5e1 --- /dev/null +++ b/ss-admin/src/main/resources/static/js/lay-module/treetable-lay/treetable.js @@ -0,0 +1,206 @@ +layui.define(['layer', 'table'], function (exports) { + var $ = layui.jquery; + var layer = layui.layer; + var table = layui.table; + + var treetable = { + // 渲染树形表格 + render: function (param) { + // 检查参数 + if (!treetable.checkParam(param)) { + return; + } + // 获取数据 + if (param.data) { + treetable.init(param, param.data); + } else { + $.getJSON(param.url, param.where, function (res) { + treetable.init(param, res.data); + }); + } + }, + // 渲染表格 + init: function (param, data) { + var mData = []; + var doneCallback = param.done; + var tNodes = data; + // 补上id和pid字段 + for (var i = 0; i < tNodes.length; i++) { + var tt = tNodes[i]; + if (!tt.id) { + if (!param.treeIdName) { + layer.msg('参数treeIdName不能为空', {icon: 5}); + return; + } + tt.id = tt[param.treeIdName]; + } + if (!tt.pid) { + if (!param.treePidName) { + layer.msg('参数treePidName不能为空', {icon: 5}); + return; + } + tt.pid = tt[param.treePidName]; + } + } + + // 对数据进行排序 + var sort = function (s_pid, data) { + for (var i = 0; i < data.length; i++) { + if (data[i].pid == s_pid) { + var len = mData.length; + if (len > 0 && mData[len - 1].id == s_pid) { + mData[len - 1].isParent = true; + } + mData.push(data[i]); + sort(data[i].id, data); + } + } + }; + sort(param.treeSpid, tNodes); + + // 重写参数 + param.url = undefined; + param.data = mData; + param.page = { + count: param.data.length, + limit: param.data.length + }; + param.cols[0][param.treeColIndex].templet = function (d) { + var mId = d.id; + var mPid = d.pid; + var isDir = d.isParent; + var emptyNum = treetable.getEmptyNum(mPid, mData); + var iconHtml = ''; + for (var i = 0; i < emptyNum; i++) { + iconHtml += ''; + } + if (isDir) { + iconHtml += ' '; + } else { + iconHtml += ''; + } + iconHtml += '  '; + var ttype = isDir ? 'dir' : 'file'; + var vg = ''; + return vg + iconHtml + d[param.cols[0][param.treeColIndex].field] + '' + }; + + param.done = function (res, curr, count) { + $(param.elem).next().addClass('treeTable'); + $('.treeTable .layui-table-page').css('display', 'none'); + $(param.elem).next().attr('treeLinkage', param.treeLinkage); + // 绑定事件换成对body绑定 + /*$('.treeTable .treeTable-icon').click(function () { + treetable.toggleRows($(this), param.treeLinkage); + });*/ + if (param.treeDefaultClose) { + treetable.foldAll(param.elem); + } + if (doneCallback) { + doneCallback(res, curr, count); + } + }; + + // 渲染表格 + table.render(param); + }, + // 计算缩进的数量 + getEmptyNum: function (pid, data) { + var num = 0; + if (!pid) { + return num; + } + var tPid; + for (var i = 0; i < data.length; i++) { + if (pid == data[i].id) { + num += 1; + tPid = data[i].pid; + break; + } + } + return num + treetable.getEmptyNum(tPid, data); + }, + // 展开/折叠行 + toggleRows: function ($dom, linkage) { + var type = $dom.attr('lay-ttype'); + if ('file' == type) { + return; + } + var mId = $dom.attr('lay-tid'); + var isOpen = $dom.hasClass('open'); + if (isOpen) { + $dom.removeClass('open'); + } else { + $dom.addClass('open'); + } + $dom.closest('tbody').find('tr').each(function () { + var $ti = $(this).find('.treeTable-icon'); + var pid = $ti.attr('lay-tpid'); + var ttype = $ti.attr('lay-ttype'); + var tOpen = $ti.hasClass('open'); + if (mId == pid) { + if (isOpen) { + $(this).hide(); + if ('dir' == ttype && tOpen == isOpen) { + $ti.trigger('click'); + } + } else { + $(this).show(); + if (linkage && 'dir' == ttype && tOpen == isOpen) { + $ti.trigger('click'); + } + } + } + }); + }, + // 检查参数 + checkParam: function (param) { + if (!param.treeSpid && param.treeSpid != 0) { + layer.msg('参数treeSpid不能为空', {icon: 5}); + return false; + } + + if (!param.treeColIndex && param.treeColIndex != 0) { + layer.msg('参数treeColIndex不能为空', {icon: 5}); + return false; + } + return true; + }, + // 展开所有 + expandAll: function (dom) { + $(dom).next('.treeTable').find('.layui-table-body tbody tr').each(function () { + var $ti = $(this).find('.treeTable-icon'); + var ttype = $ti.attr('lay-ttype'); + var tOpen = $ti.hasClass('open'); + if ('dir' == ttype && !tOpen) { + $ti.trigger('click'); + } + }); + }, + // 折叠所有 + foldAll: function (dom) { + $(dom).next('.treeTable').find('.layui-table-body tbody tr').each(function () { + var $ti = $(this).find('.treeTable-icon'); + var ttype = $ti.attr('lay-ttype'); + var tOpen = $ti.hasClass('open'); + if ('dir' == ttype && tOpen) { + $ti.trigger('click'); + } + }); + } + }; + + layui.link(layui.cache.base + 'treetable-lay/treetable.css'); + + // 给图标列绑定事件 + $('body').on('click', '.treeTable .treeTable-icon', function () { + var treeLinkage = $(this).parents('.treeTable').attr('treeLinkage'); + if ('true' == treeLinkage) { + treetable.toggleRows($(this), true); + } else { + treetable.toggleRows($(this), false); + } + }); + + exports('treetable', treetable); +}); diff --git a/ss-admin/src/main/resources/static/js/lay-module/wangEditor/fonts/w-e-icon.woff b/ss-admin/src/main/resources/static/js/lay-module/wangEditor/fonts/w-e-icon.woff new file mode 100644 index 0000000000000000000000000000000000000000..6dc5b5a33ab856629748dba686540870da73e89f GIT binary patch literal 6224 zcmb7IeQX@Zb)VV2+r97G<=yU)Jo0qM<$aOj*WK+MCGle&NwjHEG$lu}h5Cb(OiOYk zQj+Odb|YgEB!N-?5y5Q@7-?amEf50*niz>Kw*`!C>*kNdfAo(g`NM5P#f1^dMQaCj zVj#R_f3v%kjvo||$-n@D9=FOY;-rlnhOid9=P}=86*lB(2eW&ukgF_WUXaHmL ztj62ozEkHHE&z8174xXCf7+&}7oG-=I|mv@%c^wx+;dL?w?atU$E?2ar|OY2iwjQ> zqM(vGtI~H5_nrX~xIaU`msRmy{`#5oE0=+@(EkRjmqq@+&Mlt;oq7O$r`~hlLHqo| zWvr{d2wc{wyUANi3+ESsdmXZUi`7@}5B~1L^3#x`efTCF4~XaggI*u#IWhLvpomBvJVT{3Dcr&Ul;v>I8TL+zw zsK8~{h4tuq+xorhPp&_^{Xy`I$0g1_gB5(-J<&aU0593hQ8j;frOgSoxnXt|3Z1<3Hb+aPQC5v6S);^Q;{ou*D0DW7LxuO6OEKDfo5^ZfFhz)CKpumP zk}=3qC}N`ptw)SeQNY6*C7H_5l!}Kn)k}Utf9Wk>(oIie0dM z;AZd!&MZxe*oV6TPx6uBR$2KiRVqn=BVXFL_o0rCO676|1+R{dhxYFK(%gj$bEv%K zb}wJK^4>it?_Ifa*_~h$hX6!aj0xbJY5&cY#iE=mPS9$_(V3ET^_kkHG>s#ArSeF* zti3|btNKfGa|fr+W-`HGPkVdjSSgzwh(t=ImmYicDc%f)i|H=y72CX88_Q(QP92=< zFO{dWxz2g5zyD;tzUQe&AA6}(YLTUnkc4+|4fj;_nxh67QA*6o;?roWhkw9a?o?4w7HKCfx!@L(Vj;^-F=5F!x6^A|i35#eOgP0EDib4pJ3YEjm7 zO;0FQMbjIAs)_;Stzx-VQjChuw!&Kv9x} z|AjPp1&#}?p34WRCTlV%Hk@k0XX9zk(=5%dnTBD(gA(kYX6?02jIhFy%;tOiFZmym zDtUt4vO*D0tx=z(?3OX-q$WinPK6$zCuyDeC9Q`cl58YKHQf7~bLtf!ov{pNg9+#v zH=sQ}m_XkSB?4L-ie_miMn+C(Zs+0n?sz=@aJihUc6C*gR=FIH!&ctDD?z+py2Xkf z2#CD{1CI?1^jbane2)h|BuVjpFkUGq6$N}(%9tev>=*A&5s%;E#dL)X!?TGrX^;oW zXaHclotK;YeTqPxI+?o>gjYLB{79yNmFvpJ(kZ zV+RF6k)-7Qy?c+hcXYHL-@A8zQj!!w_^lTcz34fLJZ+o)_A_g1je}kQ^fbwPer(IP zw)*>oSQJxYs*!3G8^5>^PCMS1-)YC(>eg(q!7W-ueEbgLBRmss&rJhR ztAiAoMPpbLIK+D;m#8+hhI1<#G0JBToSC}#;Fr&Lrl;={qKo%S(xI`j6LkFCk9PmO zHgK#kIM?1i&VOIZbT3Ry-g9_gxX^fYnZNRa{m<`iu#&RVt|Nae|}3!azIs_cgPt?(uT!7dA& z41%xD{4#`hvkEtpFw^Z_)1}gMS9{tfEC%qVJwH~{XVp|noz-h&bk&~EjHcSt>GsrU z#$Gkqx^R$K7qsk)iYgj))JHWP+OwfF!=wgAkpdb9l0eX-I62C=L!Y702=j_?iZFmG zvP~qL$Ti`hkpa3k;d)k(Y8XIH%81mIk9?%4`ta_H6B8GA59{Wo+1X2%W^F=ub3Qt( ze{N*oQa=*n?t6OllfAiK{7&k%nVDK`#-Kb!=XP{%7es}@Y>R7gWa4S2;RHfx12x~$ z@(EZiD&=#$hRTA6WjQg#Z6v8lq^!i5Qqz!l1~yFzLTwcesXRpvPt6U&@^zMx5)!(p zGdHd?8B&mfopceB$T^wnIi;KCbPD6uP+7cp;y&=~tf5T>YHz|~SR{i%yA9_dHk_9A zSTfI>O~`F{wr(NfGx048nYsme;Mct~yd@7|F_k@AnFedI;)Y{N%$&BuEDXaiaerVJ zcr#Wz@=JOAc&~N%SvT{OojC5u&+qZs%1Ru5w^9!KE;3RwNhY}uxev*1cnlV@wVok- zldw0wh$iu|!ru5Y+J&zX_Qq9@<1=Dtu7E zJ0L;P1ksQ01u$S!w4B2m?xZkIofR0Rv(7F!6|6?{f;G@6A{6=TGVCM_zbi-xvMkxUKuBB8pSo%Je;M(kK?g*WB zSNwv${Rdok^MhzO#N-Kuqui7G{T$~%)*BG~%@2lqu)QHJ>lfGt{PPOZs<<)_$>CQ; zGRrB+m!hq{@-B(KY%UbL=Z$_h|B`n zp|A%c0G$KAo4QAf<8=hwfn2WXc#4>{^=vU@hl^ALHtlg>pW`lD$6lPJ*d(_4?ZhG^ zz=ykQUa2h({6BP5E1eycYDY9621C(^EQQ*rsMs&4P-Czy5sO8_q8Ll-dT0B{NPAQi zgTZh_iU->$M>!sr6KIp8(GVl*WJJRw?J*FAB2h^SB&isuS7RbghEl0G@G&gc(J?a8 z0XP(jMkP6rOa^5+=5iqHb3YP}%fTR}JnxSjSc~{s`>#i$0u~Ge+TxL@LllY0fgmK{ z{n3Lt`Y&8G8VJNo-@B(cijYi^fAb{CIWbUnqNU0ckYc2v3K~z0%9tq`y=mX6U z4@3lxqrrfTQ71>)yvA?x*Wl~-;K*IoAv5xh1)hfDNa1E&lyd+;IM>*@#hxkf-zjA> zo$t&v4&GO*>GXWA-25z6C=O9>X66s?t=DroN%kd>g0{)QR3P4#P?YZOOs33VOLvxf ztM;o?u#4&GVR~p+^Ns#pyP~D%56^U_2Z#3VJ;29f;czIV=F^?B918n<9Bk7mpMLZ| zA3Yu)`;>%zPXA}``W|M0+iqUN*SLi)yI*c$X_STk6ycH)aW{SJOKf||xtv@io5uPr z)oOtm-e~D(THr+wX7sF@En}n==JR9{mGJKn5qOPv|9NEbI7u>OhWrWnjMnMb=s$9G zZiRb?`xXC!FXMaB_ha9${Wbpu|BL=Lp+|U1cv<*6;XlQaxEAOOb_FjxJIj$Dx^exc z23mI;BY)%VpThsJ8_x>!Me`oaB5&P;eSn|wU_bIO#e)Ul4|#A1{_Bqj{)P1gfr(+n zg*m{dJ(veP?!i95U-Mu;^4hEi3&0=s;1K>b{HwF4md`IQFOjq46j>(cQJ2Zm@x@C| zpIu(cjtmZy<7AOsB2R+=1K=|PKRSHJS$9MpT|E8FxrIwubP<9+L(Y)}a_NqgQ_D*$ z+0%= 0 && matches.item(i) !== this) {} + return i > -1; + }; + } +}; + +/* + DOM 操作 API +*/ + +// 根据 html 代码片段创建 dom 对象 +function createElemByHTML(html) { + var div = void 0; + div = document.createElement('div'); + div.innerHTML = html; + return div.children; +} + +// 是否是 DOM List +function isDOMList(selector) { + if (!selector) { + return false; + } + if (selector instanceof HTMLCollection || selector instanceof NodeList) { + return true; + } + return false; +} + +// 封装 document.querySelectorAll +function querySelectorAll(selector) { + var result = document.querySelectorAll(selector); + if (isDOMList(result)) { + return result; + } else { + return [result]; + } +} + +// 记录所有的事件绑定 +var eventList = []; + +// 创建构造函数 +function DomElement(selector) { + if (!selector) { + return; + } + + // selector 本来就是 DomElement 对象,直接返回 + if (selector instanceof DomElement) { + return selector; + } + + this.selector = selector; + var nodeType = selector.nodeType; + + // 根据 selector 得出的结果(如 DOM,DOM List) + var selectorResult = []; + if (nodeType === 9) { + // document 节点 + selectorResult = [selector]; + } else if (nodeType === 1) { + // 单个 DOM 节点 + selectorResult = [selector]; + } else if (isDOMList(selector) || selector instanceof Array) { + // DOM List 或者数组 + selectorResult = selector; + } else if (typeof selector === 'string') { + // 字符串 + selector = selector.replace('/\n/mg', '').trim(); + if (selector.indexOf('<') === 0) { + // 如
    "].join("")})}},a=l.code,n=function(e){return"function"==typeof l.codeParse?l.codeParse(e,l):e},"reloadCode"===e?o.children(".layui-code-wrap").html(w(n(a)).html):(d=layui.code.index=++R,o.attr("lay-code-index",d),(M=A.CDDE_DATA_CLASS in o.data())&&o.attr("class",o.data(A.CDDE_DATA_CLASS)||""),M||o.data(A.CDDE_DATA_CLASS,o.attr("class")),c={copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var t=D.unescape(n(l.code)),a="function"==typeof l.onCopy;lay.clipboard.writeText({text:t,done:function(){if(a&&!1===l.onCopy(t,!0))return;W.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){if(a&&!1===l.onCopy(t,!1))return;W.msg("\u590d\u5236\u5931\u8d25",{icon:2})}})}}},function b(){var e=o.parent("."+A.ELEM_PREVIEW),t=e.children("."+A.ELEM_TAB),a=e.children("."+A.ELEM_ITEM+"-preview");return t.remove(),a.remove(),e[0]&&o.unwrap(),b}(),l.preview&&(M="LAY-CODE-DF-"+d,f=l.layout||["code","preview"],s="iframe"===l.preview,E=x('
    '),C=x('
    '),r=x('
    '),_=x('
    '),u=x('
    '),l.id&&E.attr("id",l.id),E.addClass(l.className),C.attr("lay-filter",M),layui.each(f,function(e,t){var a=x('
  • ');0===e&&a.addClass("layui-this"),a.html(l.text[t]),r.append(a)}),x.extend(c,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,t=e.closest("."+A.ELEM_PREVIEW),a="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=x("html,body"),n="layui-scrollbar-hide";e.hasClass(a)?(t.addClass(A.ELEM_FULL),e.removeClass(a).addClass(i),e.attr("title",l[1]),o.addClass(n)):(t.removeClass(A.ELEM_FULL),e.removeClass(i).addClass(a),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){D.openWin({content:n(l.code)})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=x(this),t=e.data("type"),e={elem:e,type:t,options:l,rawCode:l.code,finalCode:D.unescape(n(l.code))};c[t]&&"function"==typeof c[t].event&&c[t].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&l.tools&&(l.tools=[].concat(l.tools,l.addTools)),layui.each(l.tools,function(e,t){var a="object"==typeof t,i=a?t:c[t]||{className:t,title:[t]},l=i.className||i.type,o=i.title||[""],a=a?i.type||l:t;a&&(c[a]||((t={})[a]=i,x.extend(c,t)),u.append(''))}),o.addClass(A.ELEM_ITEM).wrap(E),C.append(r),l.tools&&C.append(u),o.before(C),s&&_.html(''),y=function(e){var t=e.children("iframe")[0];s&&t?t.srcdoc=n(l.code):e.html(l.code),setTimeout(function(){"function"==typeof l.done&&l.done({container:e,options:l,render:function(){N.render(e.find(".layui-form")),S.render(),I.render({elem:["."+A.ELEM_PREVIEW,".layui-tabs"].join(" ")})}})},3)},"preview"===f[0]?(_.addClass(A.ELEM_SHOW),o.before(_),y(_)):o.addClass(A.ELEM_SHOW).after(_),l.previewStyle=[l.style,l.previewStyle].join(""),_.attr("style",l.previewStyle),S.on("tab("+M+")",function(e){var t=x(this),a=x(e.elem).closest("."+A.ELEM_PREVIEW).find("."+A.ELEM_ITEM),e=a.eq(e.index);a.removeClass(A.ELEM_SHOW),e.addClass(A.ELEM_SHOW),"preview"===t.attr("lay-id")&&y(e),L()})),p=x(''),o.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),(C=l.theme||l.skin)&&(o.removeClass("layui-code-theme-dark layui-code-theme-light"),o.addClass("layui-code-theme-"+C)),l.highlighter&&o.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),f=w(l.encode?D.escape(n(a)):a),h=f.lines,o.html(p.html(f.html)),l.ln&&o.append('
    '),l.height&&p.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&p.attr("style",function(e,t){return(t||"")+l.codeStyle}),v=[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,t){e.style["padding-left"]=t+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,t){e.style.width=t+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,t){e.style.width=t+"px"}}],m=lay.style({target:o[0],id:"DF-code-"+d,text:x.map(x.map(v,function(e){return e.selector}),function(e,t){return['.layui-code-view[lay-code-index="'+d+'"]',e].join(" ")}).join("")}),L=function b(){var e,i;return l.ln&&(e=Math.floor(h.length/100),i=p.children("."+A.ELEM_LINE).last().children("."+A.ELEM_LINE_NUM).outerWidth(),o.addClass(A.ELEM_LN_MODE),e)&&A.LINE_RAW_WIDTH
  • ')).html(l.title||l.text.code),o.prepend(_)),M=x('
    '),l.copy&&!l.preview&&((C=x(['','',""].join(""))).on("click",function(){c.copy.event()}),M.append(C)),l.langMarker&&M.append(''+l.lang+""),l.about&&M.append(l.about),o.append(M),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+d&&"function"==typeof l.allDone&&l.allDone())),g})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss"); \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/layui.css b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/layui.css new file mode 100644 index 0000000..7d0659d --- /dev/null +++ b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/layui.css @@ -0,0 +1,5787 @@ +.layui-inline, img { + display: inline-block; + vertical-align: middle +} + +h1, h2, h3, h4, h5, h6 { + font-weight: 400 +} + +a, body { + color: #333 +} + +.layui-edge, .layui-header, .layui-inline, .layui-main { + position: relative +} + +.layui-edge, hr { + height: 0; + overflow: hidden +} + +.layui-layout-body, .layui-side, .layui-side-scroll { + overflow-x: hidden +} + +.layui-btn, .layui-edge, .layui-inline, img { + vertical-align: middle +} + +.layui-btn, .layui-disabled, .layui-icon, .layui-unselect { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none +} + +.layui-elip, .layui-form-checkbox span, .layui-form-pane .layui-form-label { + text-overflow: ellipsis; + white-space: nowrap +} + +.layui-edge, .layui-elip, hr { + overflow: hidden +} + +blockquote, body, button, dd, div, dl, dt, form, h1, h2, h3, h4, h5, h6, input, li, ol, p, pre, td, textarea, th, ul { + margin: 0; + padding: 0; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0) +} + +a:active, a:hover { + outline: 0 +} + +img { + border: none +} + +li { + list-style: none +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +h4, h5, h6 { + font-size: 100% +} + +button, input, optgroup, option, select, textarea { + font-family: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + outline: 0 +} + +pre { + white-space: pre-wrap; + white-space: -moz-pre-wrap; + white-space: -pre-wrap; + white-space: -o-pre-wrap; + word-wrap: break-word +} + +body { + line-height: 1.6; + color: rgba(0, 0, 0, .85); + font: 14px Helvetica Neue, Helvetica, PingFang SC, Tahoma, Arial, sans-serif +} + +hr { + line-height: 0; + margin: 10px 0; + padding: 0; + border: none !important; + border-bottom: 1px solid #eee !important; + clear: both; + background: 0 0 +} + +a { + text-decoration: none +} + +a:hover { + color: #777 +} + +a cite { + font-style: normal; + *cursor: pointer +} + +.layui-border-box, .layui-border-box * { + box-sizing: border-box +} + +.layui-box, .layui-box * { + box-sizing: content-box +} + +.layui-clear { + clear: both; + *zoom: 1 +} + +.layui-clear:after { + content: '\20'; + clear: both; + *zoom: 1; + display: block; + height: 0 +} + +.layui-inline { + *display: inline; + *zoom: 1 +} + +.layui-edge { + display: inline-block; + width: 0; + border-width: 6px; + border-style: dashed; + border-color: transparent +} + +.layui-edge-top { + top: -4px; + border-bottom-color: #999; + border-bottom-style: solid +} + +.layui-edge-right { + border-left-color: #999; + border-left-style: solid +} + +.layui-edge-bottom { + top: 2px; + border-top-color: #999; + border-top-style: solid +} + +.layui-edge-left { + border-right-color: #999; + border-right-style: solid +} + +.layui-disabled, .layui-disabled:hover { + color: #d2d2d2 !important; + cursor: not-allowed !important +} + +.layui-circle { + border-radius: 100% +} + +.layui-show { + display: block !important +} + +.layui-hide { + display: none !important +} + +.layui-show-v { + visibility: visible !important +} + +.layui-hide-v { + visibility: hidden !important +} + +@font-face { + font-family: layui-icon; + src: url(../font/iconfont.eot?v=256); + src: url(../font/iconfont.eot?v=256#iefix) format('embedded-opentype'), url(../font/iconfont.woff2?v=256) format('woff2'), url(../font/iconfont.woff?v=256) format('woff'), url(../font/iconfont.ttf?v=256) format('truetype'), url(../font/iconfont.svg?v=256#layui-icon) format('svg') +} + +.layui-icon { + font-family: layui-icon !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +.layui-icon-reply-fill:before { + content: "\e611" +} + +.layui-icon-set-fill:before { + content: "\e614" +} + +.layui-icon-menu-fill:before { + content: "\e60f" +} + +.layui-icon-search:before { + content: "\e615" +} + +.layui-icon-share:before { + content: "\e641" +} + +.layui-icon-set-sm:before { + content: "\e620" +} + +.layui-icon-engine:before { + content: "\e628" +} + +.layui-icon-close:before { + content: "\1006" +} + +.layui-icon-close-fill:before { + content: "\1007" +} + +.layui-icon-chart-screen:before { + content: "\e629" +} + +.layui-icon-star:before { + content: "\e600" +} + +.layui-icon-circle-dot:before { + content: "\e617" +} + +.layui-icon-chat:before { + content: "\e606" +} + +.layui-icon-release:before { + content: "\e609" +} + +.layui-icon-list:before { + content: "\e60a" +} + +.layui-icon-chart:before { + content: "\e62c" +} + +.layui-icon-ok-circle:before { + content: "\1005" +} + +.layui-icon-layim-theme:before { + content: "\e61b" +} + +.layui-icon-table:before { + content: "\e62d" +} + +.layui-icon-right:before { + content: "\e602" +} + +.layui-icon-left:before { + content: "\e603" +} + +.layui-icon-cart-simple:before { + content: "\e698" +} + +.layui-icon-face-cry:before { + content: "\e69c" +} + +.layui-icon-face-smile:before { + content: "\e6af" +} + +.layui-icon-survey:before { + content: "\e6b2" +} + +.layui-icon-tree:before { + content: "\e62e" +} + +.layui-icon-ie:before { + content: "\e7bb" +} + +.layui-icon-upload-circle:before { + content: "\e62f" +} + +.layui-icon-add-circle:before { + content: "\e61f" +} + +.layui-icon-download-circle:before { + content: "\e601" +} + +.layui-icon-templeate-1:before { + content: "\e630" +} + +.layui-icon-util:before { + content: "\e631" +} + +.layui-icon-face-surprised:before { + content: "\e664" +} + +.layui-icon-edit:before { + content: "\e642" +} + +.layui-icon-speaker:before { + content: "\e645" +} + +.layui-icon-down:before { + content: "\e61a" +} + +.layui-icon-file:before { + content: "\e621" +} + +.layui-icon-layouts:before { + content: "\e632" +} + +.layui-icon-rate-half:before { + content: "\e6c9" +} + +.layui-icon-add-circle-fine:before { + content: "\e608" +} + +.layui-icon-prev-circle:before { + content: "\e633" +} + +.layui-icon-read:before { + content: "\e705" +} + +.layui-icon-404:before { + content: "\e61c" +} + +.layui-icon-carousel:before { + content: "\e634" +} + +.layui-icon-help:before { + content: "\e607" +} + +.layui-icon-code-circle:before { + content: "\e635" +} + +.layui-icon-windows:before { + content: "\e67f" +} + +.layui-icon-water:before { + content: "\e636" +} + +.layui-icon-username:before { + content: "\e66f" +} + +.layui-icon-find-fill:before { + content: "\e670" +} + +.layui-icon-about:before { + content: "\e60b" +} + +.layui-icon-location:before { + content: "\e715" +} + +.layui-icon-up:before { + content: "\e619" +} + +.layui-icon-pause:before { + content: "\e651" +} + +.layui-icon-date:before { + content: "\e637" +} + +.layui-icon-layim-uploadfile:before { + content: "\e61d" +} + +.layui-icon-delete:before { + content: "\e640" +} + +.layui-icon-play:before { + content: "\e652" +} + +.layui-icon-top:before { + content: "\e604" +} + +.layui-icon-firefox:before { + content: "\e686" +} + +.layui-icon-friends:before { + content: "\e612" +} + +.layui-icon-refresh-3:before { + content: "\e9aa" +} + +.layui-icon-ok:before { + content: "\e605" +} + +.layui-icon-layer:before { + content: "\e638" +} + +.layui-icon-face-smile-fine:before { + content: "\e60c" +} + +.layui-icon-dollar:before { + content: "\e659" +} + +.layui-icon-group:before { + content: "\e613" +} + +.layui-icon-layim-download:before { + content: "\e61e" +} + +.layui-icon-picture-fine:before { + content: "\e60d" +} + +.layui-icon-link:before { + content: "\e64c" +} + +.layui-icon-diamond:before { + content: "\e735" +} + +.layui-icon-log:before { + content: "\e60e" +} + +.layui-icon-key:before { + content: "\e683" +} + +.layui-icon-rate-solid:before { + content: "\e67a" +} + +.layui-icon-fonts-del:before { + content: "\e64f" +} + +.layui-icon-unlink:before { + content: "\e64d" +} + +.layui-icon-fonts-clear:before { + content: "\e639" +} + +.layui-icon-triangle-r:before { + content: "\e623" +} + +.layui-icon-circle:before { + content: "\e63f" +} + +.layui-icon-radio:before { + content: "\e643" +} + +.layui-icon-align-center:before { + content: "\e647" +} + +.layui-icon-align-right:before { + content: "\e648" +} + +.layui-icon-align-left:before { + content: "\e649" +} + +.layui-icon-loading-1:before { + content: "\e63e" +} + +.layui-icon-return:before { + content: "\e65c" +} + +.layui-icon-fonts-strong:before { + content: "\e62b" +} + +.layui-icon-upload:before { + content: "\e67c" +} + +.layui-icon-dialogue:before { + content: "\e63a" +} + +.layui-icon-video:before { + content: "\e6ed" +} + +.layui-icon-headset:before { + content: "\e6fc" +} + +.layui-icon-cellphone-fine:before { + content: "\e63b" +} + +.layui-icon-add-1:before { + content: "\e654" +} + +.layui-icon-face-smile-b:before { + content: "\e650" +} + +.layui-icon-fonts-html:before { + content: "\e64b" +} + +.layui-icon-screen-full:before { + content: "\e622" +} + +.layui-icon-form:before { + content: "\e63c" +} + +.layui-icon-cart:before { + content: "\e657" +} + +.layui-icon-camera-fill:before { + content: "\e65d" +} + +.layui-icon-tabs:before { + content: "\e62a" +} + +.layui-icon-heart-fill:before { + content: "\e68f" +} + +.layui-icon-fonts-code:before { + content: "\e64e" +} + +.layui-icon-ios:before { + content: "\e680" +} + +.layui-icon-at:before { + content: "\e687" +} + +.layui-icon-fire:before { + content: "\e756" +} + +.layui-icon-set:before { + content: "\e716" +} + +.layui-icon-fonts-u:before { + content: "\e646" +} + +.layui-icon-triangle-d:before { + content: "\e625" +} + +.layui-icon-tips:before { + content: "\e702" +} + +.layui-icon-picture:before { + content: "\e64a" +} + +.layui-icon-more-vertical:before { + content: "\e671" +} + +.layui-icon-bluetooth:before { + content: "\e689" +} + +.layui-icon-flag:before { + content: "\e66c" +} + +.layui-icon-loading:before { + content: "\e63d" +} + +.layui-icon-fonts-i:before { + content: "\e644" +} + +.layui-icon-refresh-1:before { + content: "\e666" +} + +.layui-icon-rmb:before { + content: "\e65e" +} + +.layui-icon-addition:before { + content: "\e624" +} + +.layui-icon-home:before { + content: "\e68e" +} + +.layui-icon-time:before { + content: "\e68d" +} + +.layui-icon-user:before { + content: "\e770" +} + +.layui-icon-notice:before { + content: "\e667" +} + +.layui-icon-chrome:before { + content: "\e68a" +} + +.layui-icon-edge:before { + content: "\e68b" +} + +.layui-icon-login-weibo:before { + content: "\e675" +} + +.layui-icon-voice:before { + content: "\e688" +} + +.layui-icon-upload-drag:before { + content: "\e681" +} + +.layui-icon-login-qq:before { + content: "\e676" +} + +.layui-icon-snowflake:before { + content: "\e6b1" +} + +.layui-icon-heart:before { + content: "\e68c" +} + +.layui-icon-logout:before { + content: "\e682" +} + +.layui-icon-file-b:before { + content: "\e655" +} + +.layui-icon-template:before { + content: "\e663" +} + +.layui-icon-transfer:before { + content: "\e691" +} + +.layui-icon-auz:before { + content: "\e672" +} + +.layui-icon-console:before { + content: "\e665" +} + +.layui-icon-app:before { + content: "\e653" +} + +.layui-icon-prev:before { + content: "\e65a" +} + +.layui-icon-website:before { + content: "\e7ae" +} + +.layui-icon-next:before { + content: "\e65b" +} + +.layui-icon-component:before { + content: "\e857" +} + +.layui-icon-android:before { + content: "\e684" +} + +.layui-icon-more:before { + content: "\e65f" +} + +.layui-icon-login-wechat:before { + content: "\e677" +} + +.layui-icon-shrink-right:before { + content: "\e668" +} + +.layui-icon-spread-left:before { + content: "\e66b" +} + +.layui-icon-camera:before { + content: "\e660" +} + +.layui-icon-note:before { + content: "\e66e" +} + +.layui-icon-refresh:before { + content: "\e669" +} + +.layui-icon-female:before { + content: "\e661" +} + +.layui-icon-male:before { + content: "\e662" +} + +.layui-icon-screen-restore:before { + content: "\e758" +} + +.layui-icon-password:before { + content: "\e673" +} + +.layui-icon-senior:before { + content: "\e674" +} + +.layui-icon-theme:before { + content: "\e66a" +} + +.layui-icon-tread:before { + content: "\e6c5" +} + +.layui-icon-praise:before { + content: "\e6c6" +} + +.layui-icon-star-fill:before { + content: "\e658" +} + +.layui-icon-rate:before { + content: "\e67b" +} + +.layui-icon-template-1:before { + content: "\e656" +} + +.layui-icon-vercode:before { + content: "\e679" +} + +.layui-icon-service:before { + content: "\e626" +} + +.layui-icon-cellphone:before { + content: "\e678" +} + +.layui-icon-print:before { + content: "\e66d" +} + +.layui-icon-cols:before { + content: "\e610" +} + +.layui-icon-wifi:before { + content: "\e7e0" +} + +.layui-icon-export:before { + content: "\e67d" +} + +.layui-icon-rss:before { + content: "\e808" +} + +.layui-icon-slider:before { + content: "\e714" +} + +.layui-icon-email:before { + content: "\e618" +} + +.layui-icon-subtraction:before { + content: "\e67e" +} + +.layui-icon-mike:before { + content: "\e6dc" +} + +.layui-icon-light:before { + content: "\e748" +} + +.layui-icon-gift:before { + content: "\e627" +} + +.layui-icon-mute:before { + content: "\e685" +} + +.layui-icon-reduce-circle:before { + content: "\e616" +} + +.layui-icon-music:before { + content: "\e690" +} + +.layui-main { + width: 1140px; + margin: 0 auto +} + +.layui-header { + z-index: 1000; + height: 60px +} + +.layui-header a:hover { + transition: all .5s; + -webkit-transition: all .5s +} + +.layui-side { + position: fixed; + left: 0; + top: 0; + bottom: 0; + z-index: 999; + width: 200px +} + +.layui-side-scroll { + position: relative; + width: 220px; + height: 100% +} + +.layui-body { + position: relative; + left: 200px; + right: 0; + top: 0; + bottom: 0; + z-index: 900; + width: auto; + box-sizing: border-box +} + +.layui-layout-admin .layui-header { + position: fixed; + top: 0; + left: 0; + right: 0; + background-color: #23262E +} + +.layui-layout-admin .layui-side { + top: 60px; + width: 200px; + overflow-x: hidden +} + +.layui-layout-admin .layui-body { + position: absolute; + top: 60px; + padding-bottom: 10px +} + +.layui-layout-admin .layui-main { + width: auto; + margin: 0 15px +} + +.layui-layout-admin .layui-footer { + position: fixed; + left: 200px; + right: 0; + bottom: 0; + z-index: 990; + height: 44px; + line-height: 44px; + padding: 0 15px; + box-shadow: -1px 0 4px rgb(0 0 0 / 12%); + background-color: #FAFAFA +} + +.layui-layout-admin .layui-logo { + position: absolute; + left: 0; + top: 0; + width: 200px; + height: 100%; + line-height: 60px; + text-align: center; + color: #009688; + font-size: 16px +} + +.layui-layout-admin .layui-header .layui-nav { + background: 0 0 +} + +.layui-layout-left { + position: absolute !important; + left: 200px; + top: 0 +} + +.layui-layout-right { + position: absolute !important; + right: 0; + top: 0 +} + +.layui-container { + position: relative; + margin: 0 auto; + padding: 0 15px; + box-sizing: border-box +} + +.layui-fluid { + position: relative; + margin: 0 auto; + padding: 0 15px +} + +.layui-row:after, .layui-row:before { + content: ""; + display: block; + clear: both +} + +.layui-col-lg1, .layui-col-lg10, .layui-col-lg11, .layui-col-lg12, .layui-col-lg2, .layui-col-lg3, .layui-col-lg4, .layui-col-lg5, .layui-col-lg6, .layui-col-lg7, .layui-col-lg8, .layui-col-lg9, .layui-col-md1, .layui-col-md10, .layui-col-md11, .layui-col-md12, .layui-col-md2, .layui-col-md3, .layui-col-md4, .layui-col-md5, .layui-col-md6, .layui-col-md7, .layui-col-md8, .layui-col-md9, .layui-col-sm1, .layui-col-sm10, .layui-col-sm11, .layui-col-sm12, .layui-col-sm2, .layui-col-sm3, .layui-col-sm4, .layui-col-sm5, .layui-col-sm6, .layui-col-sm7, .layui-col-sm8, .layui-col-sm9, .layui-col-xs1, .layui-col-xs10, .layui-col-xs11, .layui-col-xs12, .layui-col-xs2, .layui-col-xs3, .layui-col-xs4, .layui-col-xs5, .layui-col-xs6, .layui-col-xs7, .layui-col-xs8, .layui-col-xs9 { + position: relative; + display: block; + box-sizing: border-box +} + +.layui-col-xs1, .layui-col-xs10, .layui-col-xs11, .layui-col-xs12, .layui-col-xs2, .layui-col-xs3, .layui-col-xs4, .layui-col-xs5, .layui-col-xs6, .layui-col-xs7, .layui-col-xs8, .layui-col-xs9 { + float: left +} + +.layui-col-xs1 { + width: 8.33333333% +} + +.layui-col-xs2 { + width: 16.66666667% +} + +.layui-col-xs3 { + width: 25% +} + +.layui-col-xs4 { + width: 33.33333333% +} + +.layui-col-xs5 { + width: 41.66666667% +} + +.layui-col-xs6 { + width: 50% +} + +.layui-col-xs7 { + width: 58.33333333% +} + +.layui-col-xs8 { + width: 66.66666667% +} + +.layui-col-xs9 { + width: 75% +} + +.layui-col-xs10 { + width: 83.33333333% +} + +.layui-col-xs11 { + width: 91.66666667% +} + +.layui-col-xs12 { + width: 100% +} + +.layui-col-xs-offset1 { + margin-left: 8.33333333% +} + +.layui-col-xs-offset2 { + margin-left: 16.66666667% +} + +.layui-col-xs-offset3 { + margin-left: 25% +} + +.layui-col-xs-offset4 { + margin-left: 33.33333333% +} + +.layui-col-xs-offset5 { + margin-left: 41.66666667% +} + +.layui-col-xs-offset6 { + margin-left: 50% +} + +.layui-col-xs-offset7 { + margin-left: 58.33333333% +} + +.layui-col-xs-offset8 { + margin-left: 66.66666667% +} + +.layui-col-xs-offset9 { + margin-left: 75% +} + +.layui-col-xs-offset10 { + margin-left: 83.33333333% +} + +.layui-col-xs-offset11 { + margin-left: 91.66666667% +} + +.layui-col-xs-offset12 { + margin-left: 100% +} + +@media screen and (max-width: 768px) { + .layui-hide-xs { + display: none !important + } + + .layui-show-xs-block { + display: block !important + } + + .layui-show-xs-inline { + display: inline !important + } + + .layui-show-xs-inline-block { + display: inline-block !important + } +} + +@media screen and (min-width: 768px) { + .layui-container { + width: 750px + } + + .layui-hide-sm { + display: none !important + } + + .layui-show-sm-block { + display: block !important + } + + .layui-show-sm-inline { + display: inline !important + } + + .layui-show-sm-inline-block { + display: inline-block !important + } + + .layui-col-sm1, .layui-col-sm10, .layui-col-sm11, .layui-col-sm12, .layui-col-sm2, .layui-col-sm3, .layui-col-sm4, .layui-col-sm5, .layui-col-sm6, .layui-col-sm7, .layui-col-sm8, .layui-col-sm9 { + float: left + } + + .layui-col-sm1 { + width: 8.33333333% + } + + .layui-col-sm2 { + width: 16.66666667% + } + + .layui-col-sm3 { + width: 25% + } + + .layui-col-sm4 { + width: 33.33333333% + } + + .layui-col-sm5 { + width: 41.66666667% + } + + .layui-col-sm6 { + width: 50% + } + + .layui-col-sm7 { + width: 58.33333333% + } + + .layui-col-sm8 { + width: 66.66666667% + } + + .layui-col-sm9 { + width: 75% + } + + .layui-col-sm10 { + width: 83.33333333% + } + + .layui-col-sm11 { + width: 91.66666667% + } + + .layui-col-sm12 { + width: 100% + } + + .layui-col-sm-offset1 { + margin-left: 8.33333333% + } + + .layui-col-sm-offset2 { + margin-left: 16.66666667% + } + + .layui-col-sm-offset3 { + margin-left: 25% + } + + .layui-col-sm-offset4 { + margin-left: 33.33333333% + } + + .layui-col-sm-offset5 { + margin-left: 41.66666667% + } + + .layui-col-sm-offset6 { + margin-left: 50% + } + + .layui-col-sm-offset7 { + margin-left: 58.33333333% + } + + .layui-col-sm-offset8 { + margin-left: 66.66666667% + } + + .layui-col-sm-offset9 { + margin-left: 75% + } + + .layui-col-sm-offset10 { + margin-left: 83.33333333% + } + + .layui-col-sm-offset11 { + margin-left: 91.66666667% + } + + .layui-col-sm-offset12 { + margin-left: 100% + } +} + +@media screen and (min-width: 992px) { + .layui-container { + width: 970px + } + + .layui-hide-md { + display: none !important + } + + .layui-show-md-block { + display: block !important + } + + .layui-show-md-inline { + display: inline !important + } + + .layui-show-md-inline-block { + display: inline-block !important + } + + .layui-col-md1, .layui-col-md10, .layui-col-md11, .layui-col-md12, .layui-col-md2, .layui-col-md3, .layui-col-md4, .layui-col-md5, .layui-col-md6, .layui-col-md7, .layui-col-md8, .layui-col-md9 { + float: left + } + + .layui-col-md1 { + width: 8.33333333% + } + + .layui-col-md2 { + width: 16.66666667% + } + + .layui-col-md3 { + width: 25% + } + + .layui-col-md4 { + width: 33.33333333% + } + + .layui-col-md5 { + width: 41.66666667% + } + + .layui-col-md6 { + width: 50% + } + + .layui-col-md7 { + width: 58.33333333% + } + + .layui-col-md8 { + width: 66.66666667% + } + + .layui-col-md9 { + width: 75% + } + + .layui-col-md10 { + width: 83.33333333% + } + + .layui-col-md11 { + width: 91.66666667% + } + + .layui-col-md12 { + width: 100% + } + + .layui-col-md-offset1 { + margin-left: 8.33333333% + } + + .layui-col-md-offset2 { + margin-left: 16.66666667% + } + + .layui-col-md-offset3 { + margin-left: 25% + } + + .layui-col-md-offset4 { + margin-left: 33.33333333% + } + + .layui-col-md-offset5 { + margin-left: 41.66666667% + } + + .layui-col-md-offset6 { + margin-left: 50% + } + + .layui-col-md-offset7 { + margin-left: 58.33333333% + } + + .layui-col-md-offset8 { + margin-left: 66.66666667% + } + + .layui-col-md-offset9 { + margin-left: 75% + } + + .layui-col-md-offset10 { + margin-left: 83.33333333% + } + + .layui-col-md-offset11 { + margin-left: 91.66666667% + } + + .layui-col-md-offset12 { + margin-left: 100% + } +} + +@media screen and (min-width: 1200px) { + .layui-container { + width: 1170px + } + + .layui-hide-lg { + display: none !important + } + + .layui-show-lg-block { + display: block !important + } + + .layui-show-lg-inline { + display: inline !important + } + + .layui-show-lg-inline-block { + display: inline-block !important + } + + .layui-col-lg1, .layui-col-lg10, .layui-col-lg11, .layui-col-lg12, .layui-col-lg2, .layui-col-lg3, .layui-col-lg4, .layui-col-lg5, .layui-col-lg6, .layui-col-lg7, .layui-col-lg8, .layui-col-lg9 { + float: left + } + + .layui-col-lg1 { + width: 8.33333333% + } + + .layui-col-lg2 { + width: 16.66666667% + } + + .layui-col-lg3 { + width: 25% + } + + .layui-col-lg4 { + width: 33.33333333% + } + + .layui-col-lg5 { + width: 41.66666667% + } + + .layui-col-lg6 { + width: 50% + } + + .layui-col-lg7 { + width: 58.33333333% + } + + .layui-col-lg8 { + width: 66.66666667% + } + + .layui-col-lg9 { + width: 75% + } + + .layui-col-lg10 { + width: 83.33333333% + } + + .layui-col-lg11 { + width: 91.66666667% + } + + .layui-col-lg12 { + width: 100% + } + + .layui-col-lg-offset1 { + margin-left: 8.33333333% + } + + .layui-col-lg-offset2 { + margin-left: 16.66666667% + } + + .layui-col-lg-offset3 { + margin-left: 25% + } + + .layui-col-lg-offset4 { + margin-left: 33.33333333% + } + + .layui-col-lg-offset5 { + margin-left: 41.66666667% + } + + .layui-col-lg-offset6 { + margin-left: 50% + } + + .layui-col-lg-offset7 { + margin-left: 58.33333333% + } + + .layui-col-lg-offset8 { + margin-left: 66.66666667% + } + + .layui-col-lg-offset9 { + margin-left: 75% + } + + .layui-col-lg-offset10 { + margin-left: 83.33333333% + } + + .layui-col-lg-offset11 { + margin-left: 91.66666667% + } + + .layui-col-lg-offset12 { + margin-left: 100% + } +} + +.layui-col-space1 { + margin: -.5px +} + +.layui-col-space1 > * { + padding: .5px +} + +.layui-col-space2 { + margin: -1px +} + +.layui-col-space2 > * { + padding: 1px +} + +.layui-col-space4 { + margin: -2px +} + +.layui-col-space4 > * { + padding: 2px +} + +.layui-col-space5 { + margin: -2.5px +} + +.layui-col-space5 > * { + padding: 2.5px +} + +.layui-col-space6 { + margin: -3px +} + +.layui-col-space6 > * { + padding: 3px +} + +.layui-col-space8 { + margin: -4px +} + +.layui-col-space8 > * { + padding: 4px +} + +.layui-col-space10 { + margin: -5px +} + +.layui-col-space10 > * { + padding: 5px +} + +.layui-col-space12 { + margin: -6px +} + +.layui-col-space12 > * { + padding: 6px +} + +.layui-col-space14 { + margin: -7px +} + +.layui-col-space14 > * { + padding: 7px +} + +.layui-col-space15 { + margin: -7.5px +} + +.layui-col-space15 > * { + padding: 7.5px +} + +.layui-col-space16 { + margin: -8px +} + +.layui-col-space16 > * { + padding: 8px +} + +.layui-col-space18 { + margin: -9px +} + +.layui-col-space18 > * { + padding: 9px +} + +.layui-col-space20 { + margin: -10px +} + +.layui-col-space20 > * { + padding: 10px +} + +.layui-col-space22 { + margin: -11px +} + +.layui-col-space22 > * { + padding: 11px +} + +.layui-col-space24 { + margin: -12px +} + +.layui-col-space24 > * { + padding: 12px +} + +.layui-col-space25 { + margin: -12.5px +} + +.layui-col-space25 > * { + padding: 12.5px +} + +.layui-col-space26 { + margin: -13px +} + +.layui-col-space26 > * { + padding: 13px +} + +.layui-col-space28 { + margin: -14px +} + +.layui-col-space28 > * { + padding: 14px +} + +.layui-col-space30 { + margin: -15px +} + +.layui-col-space30 > * { + padding: 15px +} + +.layui-btn, .layui-input, .layui-select, .layui-textarea, .layui-upload-button { + outline: 0; + -webkit-appearance: none; + transition: all .3s; + -webkit-transition: all .3s; + box-sizing: border-box +} + +.layui-elem-quote { + margin-bottom: 10px; + padding: 15px; + line-height: 1.6; + border-left: 5px solid #5FB878; + border-radius: 0 2px 2px 0; + background-color: #FAFAFA +} + +.layui-quote-nm { + border-style: solid; + border-width: 1px 1px 1px 5px; + background: 0 0 +} + +.layui-elem-field { + margin-bottom: 10px; + padding: 0; + border-width: 1px; + border-style: solid +} + +.layui-elem-field legend { + margin-left: 20px; + padding: 0 10px; + font-size: 20px; + font-weight: 300 +} + +.layui-field-title { + margin: 10px 0 20px; + border-width: 1px 0 0 +} + +.layui-field-box { + padding: 15px +} + +.layui-field-title .layui-field-box { + padding: 10px 0 +} + +.layui-progress { + position: relative; + height: 6px; + border-radius: 20px; + background-color: #eee +} + +.layui-progress-bar { + position: absolute; + left: 0; + top: 0; + width: 0; + max-width: 100%; + height: 6px; + border-radius: 20px; + text-align: right; + background-color: #5FB878; + transition: all .3s; + -webkit-transition: all .3s +} + +.layui-progress-big, .layui-progress-big .layui-progress-bar { + height: 18px; + line-height: 18px +} + +.layui-progress-text { + position: relative; + top: -20px; + line-height: 18px; + font-size: 12px; + color: #666 +} + +.layui-progress-big .layui-progress-text { + position: static; + padding: 0 10px; + color: #fff +} + +.layui-collapse { + border-width: 1px; + border-style: solid; + border-radius: 2px +} + +.layui-colla-content, .layui-colla-item { + border-top-width: 1px; + border-top-style: solid +} + +.layui-colla-item:first-child { + border-top: none +} + +.layui-colla-title { + position: relative; + height: 42px; + line-height: 42px; + padding: 0 15px 0 35px; + color: #333; + background-color: #FAFAFA; + cursor: pointer; + font-size: 14px; + overflow: hidden +} + +.layui-colla-content { + display: none; + padding: 10px 15px; + line-height: 1.6; + color: #666 +} + +.layui-colla-icon { + position: absolute; + left: 15px; + top: 0; + font-size: 14px +} + +.layui-card { + margin-bottom: 15px; + border-radius: 2px; + background-color: #fff; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05) +} + +.layui-card:last-child { + margin-bottom: 0 +} + +.layui-card-header { + position: relative; + height: 42px; + line-height: 42px; + padding: 0 15px; + border-bottom: 1px solid #f6f6f6; + color: #333; + border-radius: 2px 2px 0 0; + font-size: 14px +} + +.layui-card-body { + position: relative; + padding: 10px 15px; + line-height: 24px +} + +.layui-card-body[pad15] { + padding: 15px +} + +.layui-card-body[pad20] { + padding: 20px +} + +.layui-card-body .layui-table { + margin: 5px 0 +} + +.layui-card .layui-tab { + margin: 0 +} + +.layui-panel { + position: relative; + border-width: 1px; + border-style: solid; + border-radius: 2px; + box-shadow: 1px 1px 4px rgb(0 0 0 / 8%); + background-color: #fff; + color: #666 +} + +.layui-bg-black, .layui-bg-blue, .layui-bg-cyan, .layui-bg-green, .layui-bg-orange, .layui-bg-red { + color: #fff !important +} + +.layui-panel-window { + position: relative; + padding: 15px; + border-radius: 0; + border-top: 5px solid #eee; + background-color: #fff +} + +.layui-border, .layui-border-black, .layui-border-blue, .layui-border-cyan, .layui-border-green, .layui-border-orange, .layui-border-red { + border-width: 1px; + border-style: solid +} + +.layui-auxiliar-moving { + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100%; + height: 100%; + background: 0 0; + z-index: 9999999999 +} + +.layui-form-label, .layui-form-mid, .layui-form-select, .layui-input-block, .layui-input-inline, .layui-textarea { + position: relative +} + +.layui-bg-red { + background-color: #FF5722 !important +} + +.layui-bg-orange { + background-color: #FFB800 !important +} + +.layui-bg-green { + background-color: #009688 !important +} + +.layui-bg-cyan { + background-color: #2F4056 !important +} + +.layui-bg-blue { + background-color: #1E9FFF !important +} + +.layui-bg-black { + background-color: #393D49 !important +} + +.layui-bg-gray { + background-color: #FAFAFA !important; + color: #666 !important +} + +.layui-badge-rim, .layui-border, .layui-colla-content, .layui-colla-item, .layui-collapse, .layui-elem-field, .layui-form-pane .layui-form-item[pane], .layui-form-pane .layui-form-label, .layui-input, .layui-layedit, .layui-layedit-tool, .layui-panel, .layui-quote-nm, .layui-select, .layui-tab-bar, .layui-tab-card, .layui-tab-title, .layui-tab-title .layui-this:after, .layui-textarea { + border-color: #eee +} + +.layui-border { + color: #666 !important +} + +.layui-border-red { + border-color: #FF5722 !important; + color: #FF5722 !important +} + +.layui-border-orange { + border-color: #FFB800 !important; + color: #FFB800 !important +} + +.layui-border-green { + border-color: #009688 !important; + color: #009688 !important +} + +.layui-border-cyan { + border-color: #2F4056 !important; + color: #2F4056 !important +} + +.layui-border-blue { + border-color: #1E9FFF !important; + color: #1E9FFF !important +} + +.layui-border-black { + border-color: #393D49 !important; + color: #393D49 !important +} + +.layui-timeline-item:before { + background-color: #eee +} + +.layui-text { + line-height: 1.6; + font-size: 14px; + color: #666 +} + +.layui-text h1, .layui-text h2, .layui-text h3 { + font-weight: 500; + color: #333 +} + +.layui-text h1 { + font-size: 30px +} + +.layui-text h2 { + font-size: 24px +} + +.layui-text h3 { + font-size: 18px +} + +.layui-text a:not(.layui-btn) { + color: #01AAED +} + +.layui-text a:not(.layui-btn):hover { + text-decoration: underline +} + +.layui-text ul { + padding: 5px 0 5px 15px +} + +.layui-text ul li { + margin-top: 5px; + list-style-type: disc +} + +.layui-text em, .layui-word-aux { + color: #999 !important; + padding-left: 5px !important; + padding-right: 5px !important +} + +.layui-font-12 { + font-size: 12px +} + +.layui-font-14 { + font-size: 14px +} + +.layui-font-16 { + font-size: 16px +} + +.layui-font-18 { + font-size: 18px +} + +.layui-font-20 { + font-size: 20px +} + +.layui-font-red { + color: #FF5722 !important +} + +.layui-font-orange { + color: #FFB800 !important +} + +.layui-font-green { + color: #009688 !important +} + +.layui-font-cyan { + color: #2F4056 !important +} + +.layui-font-blue { + color: #01AAED !important +} + +.layui-font-black { + color: #000 !important +} + +.layui-font-gray { + color: #c2c2c2 !important +} + +.layui-btn { + display: inline-block; + height: 38px; + line-height: 38px; + padding: 0 18px; + border: 1px solid transparent; + background-color: #009688; + color: #fff; + white-space: nowrap; + text-align: center; + font-size: 14px; + border-radius: 2px; + cursor: pointer +} + +.layui-btn:hover { + opacity: .8; + filter: alpha(opacity=80); + color: #fff +} + +.layui-btn:active { + opacity: 1; + filter: alpha(opacity=100) +} + +.layui-btn + .layui-btn { + margin-left: 10px +} + +.layui-btn-container { + font-size: 0 +} + +.layui-btn-container .layui-btn { + margin-right: 10px; + margin-bottom: 10px +} + +.layui-btn-container .layui-btn + .layui-btn { + margin-left: 0 +} + +.layui-table .layui-btn-container .layui-btn { + margin-bottom: 9px +} + +.layui-btn-radius { + border-radius: 100px +} + +.layui-btn .layui-icon { + padding: 0 2px; + vertical-align: middle \9; + vertical-align: bottom +} + +.layui-btn-primary { + border-color: #d2d2d2; + background: 0 0; + color: #666 +} + +.layui-btn-primary:hover { + border-color: #009688; + color: #333 +} + +.layui-btn-normal { + background-color: #1E9FFF +} + +.layui-btn-warm { + background-color: #FFB800 +} + +.layui-btn-danger { + background-color: #FF5722 +} + +.layui-btn-checked { + background-color: #5FB878 +} + +.layui-btn-disabled, .layui-btn-disabled:active, .layui-btn-disabled:hover { + border-color: #eee; + background-color: #FBFBFB; + color: #d2d2d2; + cursor: not-allowed; + opacity: 1 +} + +.layui-btn-lg { + height: 44px; + line-height: 44px; + padding: 0 25px; + font-size: 16px +} + +.layui-btn-sm { + height: 30px; + line-height: 30px; + padding: 0 10px; + font-size: 12px +} + +.layui-btn-xs { + height: 22px; + line-height: 22px; + padding: 0 5px; + font-size: 12px +} + +.layui-btn-xs i { + font-size: 12px !important +} + +.layui-btn-group { + display: inline-block; + vertical-align: middle; + font-size: 0 +} + +.layui-btn-group .layui-btn { + margin-left: 0 !important; + margin-right: 0 !important; + border-left: 1px solid rgba(255, 255, 255, .5); + border-radius: 0 +} + +.layui-btn-group .layui-btn-primary { + border-left: none +} + +.layui-btn-group .layui-btn-primary:hover { + border-color: #d2d2d2; + color: #009688 +} + +.layui-btn-group .layui-btn:first-child { + border-left: none; + border-radius: 2px 0 0 2px +} + +.layui-btn-group .layui-btn-primary:first-child { + border-left: 1px solid #d2d2d2 +} + +.layui-btn-group .layui-btn:last-child { + border-radius: 0 2px 2px 0 +} + +.layui-btn-group .layui-btn + .layui-btn { + margin-left: 0 +} + +.layui-btn-group + .layui-btn-group { + margin-left: 10px +} + +.layui-btn-fluid { + width: 100% +} + +.layui-input, .layui-select, .layui-textarea { + height: 38px; + line-height: 1.3; + line-height: 38px \9; + border-width: 1px; + border-style: solid; + background-color: #fff; + border-radius: 2px +} + +.layui-input::-webkit-input-placeholder, .layui-select::-webkit-input-placeholder, .layui-textarea::-webkit-input-placeholder { + line-height: 1.3 +} + +.layui-input, .layui-textarea { + display: block; + width: 100%; + padding-left: 10px +} + +.layui-input:hover, .layui-textarea:hover { + border-color: #eee !important +} + +.layui-input:focus, .layui-textarea:focus { + border-color: #d2d2d2 !important +} + +.layui-textarea { + min-height: 100px; + height: auto; + line-height: 20px; + padding: 6px 10px; + resize: vertical +} + +.layui-select { + padding: 0 10px +} + +.layui-form input[type=checkbox], .layui-form input[type=radio], .layui-form select { + display: none +} + +.layui-form [lay-ignore] { + display: initial +} + +.layui-form-item { + margin-bottom: 15px; + clear: both; + *zoom: 1 +} + +.layui-form-item:after { + content: '\20'; + clear: both; + *zoom: 1; + display: block; + height: 0 +} + +.layui-form-label { + float: left; + display: block; + padding: 9px 15px; + width: 80px; + font-weight: 400; + line-height: 20px; + text-align: right +} + +.layui-form-label-col { + display: block; + float: none; + padding: 9px 0; + line-height: 20px; + text-align: left +} + +.layui-form-item .layui-inline { + margin-bottom: 5px; + margin-right: 10px +} + +.layui-input-block { + margin-left: 110px; + min-height: 36px +} + +.layui-input-inline { + display: inline-block; + vertical-align: middle +} + +.layui-form-item .layui-input-inline { + float: left; + width: 190px; + margin-right: 10px +} + +.layui-form-text .layui-input-inline { + width: auto +} + +.layui-form-mid { + float: left; + display: block; + padding: 9px 0 !important; + line-height: 20px; + margin-right: 10px +} + +.layui-form-danger + .layui-form-select .layui-input, .layui-form-danger:focus { + border-color: #FF5722 !important +} + +.layui-form-select .layui-input { + padding-right: 30px; + cursor: pointer +} + +.layui-form-select .layui-edge { + position: absolute; + right: 10px; + top: 50%; + margin-top: -3px; + cursor: pointer; + border-width: 6px; + border-top-color: #c2c2c2; + border-top-style: solid; + transition: all .3s; + -webkit-transition: all .3s +} + +.layui-form-select dl { + display: none; + position: absolute; + left: 0; + top: 42px; + padding: 5px 0; + z-index: 899; + min-width: 100%; + border: 1px solid #d2d2d2; + max-height: 300px; + overflow-y: auto; + background-color: #fff; + border-radius: 2px; + box-shadow: 0 2px 4px rgba(0, 0, 0, .12); + box-sizing: border-box +} + +.layui-form-select dl dd, .layui-form-select dl dt { + padding: 0 10px; + line-height: 36px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis +} + +.layui-form-select dl dt { + font-size: 12px; + color: #999 +} + +.layui-form-select dl dd { + cursor: pointer +} + +.layui-form-select dl dd:hover { + background-color: #F6F6F6; + -webkit-transition: .5s all; + transition: .5s all +} + +.layui-form-select .layui-select-group dd { + padding-left: 20px +} + +.layui-form-select dl dd.layui-select-tips { + padding-left: 10px !important; + color: #999 +} + +.layui-form-select dl dd.layui-this { + background-color: #5FB878; + color: #fff +} + +.layui-form-checkbox, .layui-form-select dl dd.layui-disabled { + background-color: #fff +} + +.layui-form-selected dl { + display: block +} + +.layui-form-checkbox, .layui-form-checkbox *, .layui-form-switch { + display: inline-block; + vertical-align: middle +} + +.layui-form-selected .layui-edge { + margin-top: -9px; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + margin-top: -3px \9 +} + +:root .layui-form-selected .layui-edge { + margin-top: -9px \0/ IE9 +} + +.layui-form-selectup dl { + top: auto; + bottom: 42px +} + +.layui-select-none { + margin: 5px 0; + text-align: center; + color: #999 +} + +.layui-select-disabled .layui-disabled { + border-color: #eee !important +} + +.layui-select-disabled .layui-edge { + border-top-color: #d2d2d2 +} + +.layui-form-checkbox { + position: relative; + height: 30px; + line-height: 30px; + margin-right: 10px; + padding-right: 30px; + cursor: pointer; + font-size: 0; + -webkit-transition: .1s linear; + transition: .1s linear; + box-sizing: border-box +} + +.layui-form-checkbox span { + padding: 0 10px; + height: 100%; + font-size: 14px; + border-radius: 2px 0 0 2px; + background-color: #d2d2d2; + color: #fff; + overflow: hidden +} + +.layui-form-checkbox:hover span { + background-color: #c2c2c2 +} + +.layui-form-checkbox i { + position: absolute; + right: 0; + top: 0; + width: 30px; + height: 28px; + border: 1px solid #d2d2d2; + border-left: none; + border-radius: 0 2px 2px 0; + color: #fff; + font-size: 20px; + text-align: center +} + +.layui-form-checkbox:hover i { + border-color: #c2c2c2; + color: #c2c2c2 +} + +.layui-form-checked, .layui-form-checked:hover { + border-color: #5FB878 +} + +.layui-form-checked span, .layui-form-checked:hover span { + background-color: #5FB878 +} + +.layui-form-checked i, .layui-form-checked:hover i { + color: #5FB878 +} + +.layui-form-item .layui-form-checkbox { + margin-top: 4px +} + +.layui-form-checkbox[lay-skin=primary] { + height: auto !important; + line-height: normal !important; + min-width: 18px; + min-height: 18px; + border: none !important; + margin-right: 0; + padding-left: 28px; + padding-right: 0; + background: 0 0 +} + +.layui-form-checkbox[lay-skin=primary] span { + padding-left: 0; + padding-right: 15px; + line-height: 18px; + background: 0 0; + color: #666 +} + +.layui-form-checkbox[lay-skin=primary] i { + right: auto; + left: 0; + width: 16px; + height: 16px; + line-height: 16px; + border: 1px solid #d2d2d2; + font-size: 12px; + border-radius: 2px; + background-color: #fff; + -webkit-transition: .1s linear; + transition: .1s linear +} + +.layui-form-checkbox[lay-skin=primary]:hover i { + border-color: #5FB878; + color: #fff +} + +.layui-form-checked[lay-skin=primary] i { + border-color: #5FB878 !important; + background-color: #5FB878; + color: #fff +} + +.layui-checkbox-disbaled[lay-skin=primary] span { + background: 0 0 !important; + color: #c2c2c2 !important +} + +.layui-checkbox-disbaled[lay-skin=primary]:hover i { + border-color: #d2d2d2 +} + +.layui-form-item .layui-form-checkbox[lay-skin=primary] { + margin-top: 10px +} + +.layui-form-switch { + position: relative; + height: 22px; + line-height: 22px; + min-width: 35px; + padding: 0 5px; + margin-top: 8px; + border: 1px solid #d2d2d2; + border-radius: 20px; + cursor: pointer; + background-color: #fff; + -webkit-transition: .1s linear; + transition: .1s linear +} + +.layui-form-switch i { + position: absolute; + left: 5px; + top: 3px; + width: 16px; + height: 16px; + border-radius: 20px; + background-color: #d2d2d2; + -webkit-transition: .1s linear; + transition: .1s linear +} + +.layui-form-switch em { + position: relative; + top: 0; + width: 25px; + margin-left: 21px; + padding: 0 !important; + text-align: center !important; + color: #999 !important; + font-style: normal !important; + font-size: 12px +} + +.layui-form-onswitch { + border-color: #5FB878; + background-color: #5FB878 +} + +.layui-checkbox-disbaled, .layui-checkbox-disbaled i { + border-color: #eee !important +} + +.layui-form-onswitch i { + left: 100%; + margin-left: -21px; + background-color: #fff +} + +.layui-form-onswitch em { + margin-left: 5px; + margin-right: 21px; + color: #fff !important +} + +.layui-checkbox-disbaled span { + background-color: #eee !important +} + +.layui-checkbox-disbaled em { + color: #d2d2d2 !important +} + +.layui-checkbox-disbaled:hover i { + color: #fff !important +} + +[lay-radio] { + display: none +} + +.layui-form-radio, .layui-form-radio * { + display: inline-block; + vertical-align: middle +} + +.layui-form-radio { + line-height: 28px; + margin: 6px 10px 0 0; + padding-right: 10px; + cursor: pointer; + font-size: 0 +} + +.layui-form-radio * { + font-size: 14px +} + +.layui-form-radio > i { + margin-right: 8px; + font-size: 22px; + color: #c2c2c2 +} + +.layui-form-radio:hover *, .layui-form-radioed, .layui-form-radioed > i { + color: #5FB878 +} + +.layui-radio-disbaled > i { + color: #eee !important +} + +.layui-radio-disbaled * { + color: #c2c2c2 !important +} + +.layui-form-pane .layui-form-label { + width: 110px; + padding: 8px 15px; + height: 38px; + line-height: 20px; + border-width: 1px; + border-style: solid; + border-radius: 2px 0 0 2px; + text-align: center; + background-color: #FBFBFB; + overflow: hidden; + box-sizing: border-box +} + +.layui-form-pane .layui-input-inline { + margin-left: -1px +} + +.layui-form-pane .layui-input-block { + margin-left: 110px; + left: -1px +} + +.layui-form-pane .layui-input { + border-radius: 0 2px 2px 0 +} + +.layui-form-pane .layui-form-text .layui-form-label { + float: none; + width: 100%; + border-radius: 2px; + box-sizing: border-box; + text-align: left +} + +.layui-form-pane .layui-form-text .layui-input-inline { + display: block; + margin: 0; + top: -1px; + clear: both +} + +.layui-form-pane .layui-form-text .layui-input-block { + margin: 0; + left: 0; + top: -1px +} + +.layui-form-pane .layui-form-text .layui-textarea { + min-height: 100px; + border-radius: 0 0 2px 2px +} + +.layui-form-pane .layui-form-checkbox { + margin: 4px 0 4px 10px +} + +.layui-form-pane .layui-form-radio, .layui-form-pane .layui-form-switch { + margin-top: 6px; + margin-left: 10px +} + +.layui-form-pane .layui-form-item[pane] { + position: relative; + border-width: 1px; + border-style: solid +} + +.layui-form-pane .layui-form-item[pane] .layui-form-label { + position: absolute; + left: 0; + top: 0; + height: 100%; + border-width: 0 1px 0 0 +} + +.layui-form-pane .layui-form-item[pane] .layui-input-inline { + margin-left: 110px +} + +@media screen and (max-width: 450px) { + .layui-form-item .layui-form-label { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap + } + + .layui-form-item .layui-inline { + display: block; + margin-right: 0; + margin-bottom: 20px; + clear: both + } + + .layui-form-item .layui-inline:after { + content: '\20'; + clear: both; + display: block; + height: 0 + } + + .layui-form-item .layui-input-inline { + display: block; + float: none; + left: -3px; + width: auto; + margin: 0 0 10px 112px + } + + .layui-form-item .layui-input-inline + .layui-form-mid { + margin-left: 110px; + top: -5px; + padding: 0 + } + + .layui-form-item .layui-form-checkbox { + margin-right: 5px; + margin-bottom: 5px + } +} + +.layui-layedit { + border-width: 1px; + border-style: solid; + border-radius: 2px +} + +.layui-layedit-tool { + padding: 3px 5px; + border-bottom-width: 1px; + border-bottom-style: solid; + font-size: 0 +} + +.layedit-tool-fixed { + position: fixed; + top: 0; + border-top: 1px solid #eee +} + +.layui-layedit-tool .layedit-tool-mid, .layui-layedit-tool .layui-icon { + display: inline-block; + vertical-align: middle; + text-align: center; + font-size: 14px +} + +.layui-layedit-tool .layui-icon { + position: relative; + width: 32px; + height: 30px; + line-height: 30px; + margin: 3px 5px; + color: #777; + cursor: pointer; + border-radius: 2px +} + +.layui-layedit-tool .layui-icon:hover { + color: #393D49 +} + +.layui-layedit-tool .layui-icon:active { + color: #000 +} + +.layui-layedit-tool .layedit-tool-active { + background-color: #eee; + color: #000 +} + +.layui-layedit-tool .layui-disabled, .layui-layedit-tool .layui-disabled:hover { + color: #d2d2d2; + cursor: not-allowed +} + +.layui-layedit-tool .layedit-tool-mid { + width: 1px; + height: 18px; + margin: 0 10px; + background-color: #d2d2d2 +} + +.layedit-tool-html { + width: 50px !important; + font-size: 30px !important +} + +.layedit-tool-b, .layedit-tool-code, .layedit-tool-help { + font-size: 16px !important +} + +.layedit-tool-d, .layedit-tool-face, .layedit-tool-image, .layedit-tool-unlink { + font-size: 18px !important +} + +.layedit-tool-image input { + position: absolute; + font-size: 0; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: .01; + filter: Alpha(opacity=1); + cursor: pointer +} + +.layui-layedit-iframe iframe { + display: block; + width: 100% +} + +#LAY_layedit_code { + overflow: hidden +} + +.layui-laypage { + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; + margin: 10px 0; + font-size: 0 +} + +.layui-laypage > a:first-child, .layui-laypage > a:first-child em { + border-radius: 2px 0 0 2px +} + +.layui-laypage > a:last-child, .layui-laypage > a:last-child em { + border-radius: 0 2px 2px 0 +} + +.layui-laypage > :first-child { + margin-left: 0 !important +} + +.layui-laypage > :last-child { + margin-right: 0 !important +} + +.layui-laypage a, .layui-laypage button, .layui-laypage input, .layui-laypage select, .layui-laypage span { + border: 1px solid #eee +} + +.layui-laypage a, .layui-laypage span { + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; + padding: 0 15px; + height: 28px; + line-height: 28px; + margin: 0 -1px 5px 0; + background-color: #fff; + color: #333; + font-size: 12px +} + +.layui-flow-more a *, .layui-laypage input, .layui-table-view select[lay-ignore] { + display: inline-block +} + +.layui-laypage a:hover { + color: #009688 +} + +.layui-laypage em { + font-style: normal +} + +.layui-laypage .layui-laypage-spr { + color: #999; + font-weight: 700 +} + +.layui-laypage a { + text-decoration: none +} + +.layui-laypage .layui-laypage-curr { + position: relative +} + +.layui-laypage .layui-laypage-curr em { + position: relative; + color: #fff +} + +.layui-laypage .layui-laypage-curr .layui-laypage-em { + position: absolute; + left: -1px; + top: -1px; + padding: 1px; + width: 100%; + height: 100%; + background-color: #009688 +} + +.layui-laypage-em { + border-radius: 2px +} + +.layui-laypage-next em, .layui-laypage-prev em { + font-family: Sim sun; + font-size: 16px +} + +.layui-laypage .layui-laypage-count, .layui-laypage .layui-laypage-limits, .layui-laypage .layui-laypage-refresh, .layui-laypage .layui-laypage-skip { + margin-left: 10px; + margin-right: 10px; + padding: 0; + border: none +} + +.layui-laypage .layui-laypage-limits, .layui-laypage .layui-laypage-refresh { + vertical-align: top +} + +.layui-laypage .layui-laypage-refresh i { + font-size: 18px; + cursor: pointer +} + +.layui-laypage select { + height: 22px; + padding: 3px; + border-radius: 2px; + cursor: pointer +} + +.layui-laypage .layui-laypage-skip { + height: 30px; + line-height: 30px; + color: #999 +} + +.layui-laypage button, .layui-laypage input { + height: 30px; + line-height: 30px; + border-radius: 2px; + vertical-align: top; + background-color: #fff; + box-sizing: border-box +} + +.layui-laypage input { + width: 40px; + margin: 0 10px; + padding: 0 3px; + text-align: center +} + +.layui-laypage input:focus, .layui-laypage select:focus { + border-color: #009688 !important +} + +.layui-laypage button { + margin-left: 10px; + padding: 0 10px; + cursor: pointer +} + +.layui-table, .layui-table-view { + margin: 10px 0 +} + +.layui-flow-more { + margin: 10px 0; + text-align: center; + color: #999; + font-size: 14px +} + +.layui-flow-more a { + height: 32px; + line-height: 32px +} + +.layui-flow-more a * { + vertical-align: top +} + +.layui-flow-more a cite { + padding: 0 20px; + border-radius: 3px; + background-color: #eee; + color: #333; + font-style: normal +} + +.layui-flow-more a cite:hover { + opacity: .8 +} + +.layui-flow-more a i { + font-size: 30px; + color: #737383 +} + +.layui-table { + width: 100%; + background-color: #fff; + color: #666 +} + +.layui-table tr { + transition: all .3s; + -webkit-transition: all .3s +} + +.layui-table th { + text-align: left; + font-weight: 400 +} + +.layui-table tbody tr:hover, .layui-table thead tr, .layui-table-click, .layui-table-header, .layui-table-hover, .layui-table-mend, .layui-table-patch, .layui-table-tool, .layui-table-total, .layui-table-total tr, .layui-table[lay-even] tr:nth-child(even) { + background-color: #FAFAFA +} + +.layui-table td, .layui-table th, .layui-table-col-set, .layui-table-fixed-r, .layui-table-grid-down, .layui-table-header, .layui-table-page, .layui-table-tips-main, .layui-table-tool, .layui-table-total, .layui-table-view, .layui-table[lay-skin=line], .layui-table[lay-skin=row] { + border-width: 1px; + border-style: solid; + border-color: #eee +} + +.layui-table td, .layui-table th { + position: relative; + padding: 9px 15px; + min-height: 20px; + line-height: 20px; + font-size: 14px +} + +.layui-table[lay-skin=line] td, .layui-table[lay-skin=line] th { + border-width: 0 0 1px +} + +.layui-table[lay-skin=row] td, .layui-table[lay-skin=row] th { + border-width: 0 1px 0 0 +} + +.layui-table[lay-skin=nob] td, .layui-table[lay-skin=nob] th { + border: none +} + +.layui-table img { + max-width: 100px +} + +.layui-table[lay-size=lg] td, .layui-table[lay-size=lg] th { + padding: 15px 30px +} + +.layui-table-view .layui-table[lay-size=lg] .layui-table-cell { + height: 40px; + line-height: 40px +} + +.layui-table[lay-size=sm] td, .layui-table[lay-size=sm] th { + font-size: 12px; + padding: 5px 10px +} + +.layui-table-view .layui-table[lay-size=sm] .layui-table-cell { + height: 20px; + line-height: 20px +} + +.layui-table[lay-data] { + display: none +} + +.layui-table-box { + position: relative; + overflow: hidden +} + +.layui-table-view .layui-table { + position: relative; + width: auto; + margin: 0 +} + +.layui-table-view .layui-table[lay-skin=line] { + border-width: 0 1px 0 0 +} + +.layui-table-view .layui-table[lay-skin=row] { + border-width: 0 0 1px +} + +.layui-table-view .layui-table td, .layui-table-view .layui-table th { + padding: 5px 0; + border-top: none; + border-left: none +} + +.layui-table-view .layui-table th.layui-unselect .layui-table-cell span { + cursor: pointer +} + +.layui-table-view .layui-table td { + cursor: default +} + +.layui-table-view .layui-table td[data-edit=text] { + cursor: text +} + +.layui-table-view .layui-form-checkbox[lay-skin=primary] i { + width: 18px; + height: 18px +} + +.layui-table-view .layui-form-radio { + line-height: 0; + padding: 0 +} + +.layui-table-view .layui-form-radio > i { + margin: 0; + font-size: 20px +} + +.layui-table-init { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + text-align: center; + z-index: 110 +} + +.layui-table-init .layui-icon { + position: absolute; + left: 50%; + top: 50%; + margin: -15px 0 0 -15px; + font-size: 30px; + color: #c2c2c2 +} + +.layui-table-header { + border-width: 0 0 1px; + overflow: hidden +} + +.layui-table-header .layui-table { + margin-bottom: -1px +} + +.layui-table-tool .layui-inline[lay-event] { + position: relative; + width: 26px; + height: 26px; + padding: 5px; + line-height: 16px; + margin-right: 10px; + text-align: center; + color: #333; + border: 1px solid #ccc; + cursor: pointer; + -webkit-transition: .5s all; + transition: .5s all +} + +.layui-table-tool .layui-inline[lay-event]:hover { + border: 1px solid #999 +} + +.layui-table-tool-temp { + padding-right: 120px +} + +.layui-table-tool-self { + position: absolute; + right: 17px; + top: 10px +} + +.layui-table-tool .layui-table-tool-self .layui-inline[lay-event] { + margin: 0 0 0 10px +} + +.layui-table-tool-panel { + position: absolute; + top: 29px; + left: -1px; + padding: 5px 0; + min-width: 150px; + min-height: 40px; + border: 1px solid #d2d2d2; + text-align: left; + overflow-y: auto; + background-color: #fff; + box-shadow: 0 2px 4px rgba(0, 0, 0, .12) +} + +.layui-table-cell, .layui-table-tool-panel li { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap +} + +.layui-table-tool-panel li { + padding: 0 10px; + line-height: 30px; + -webkit-transition: .5s all; + transition: .5s all +} + +.layui-menu li, .layui-menu-body-title a:hover, .layui-menu-body-title > .layui-icon:hover { + transition: all .3s +} + +.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] { + width: 100%; + padding-left: 28px +} + +.layui-table-tool-panel li:hover { + background-color: #F6F6F6 +} + +.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i { + position: absolute; + left: 0; + top: 0 +} + +.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span { + padding: 0 +} + +.layui-table-tool .layui-table-tool-self .layui-table-tool-panel { + left: auto; + right: -1px +} + +.layui-table-col-set { + position: absolute; + right: 0; + top: 0; + width: 20px; + height: 100%; + border-width: 0 0 0 1px; + background-color: #fff +} + +.layui-table-sort { + width: 10px; + height: 20px; + margin-left: 5px; + cursor: pointer !important +} + +.layui-table-sort .layui-edge { + position: absolute; + left: 5px; + border-width: 5px +} + +.layui-table-sort .layui-table-sort-asc { + top: 3px; + border-top: none; + border-bottom-style: solid; + border-bottom-color: #b2b2b2 +} + +.layui-table-sort .layui-table-sort-asc:hover { + border-bottom-color: #666 +} + +.layui-table-sort .layui-table-sort-desc { + bottom: 5px; + border-bottom: none; + border-top-style: solid; + border-top-color: #b2b2b2 +} + +.layui-table-sort .layui-table-sort-desc:hover { + border-top-color: #666 +} + +.layui-table-sort[lay-sort=asc] .layui-table-sort-asc { + border-bottom-color: #000 +} + +.layui-table-sort[lay-sort=desc] .layui-table-sort-desc { + border-top-color: #000 +} + +.layui-table-cell { + height: 28px; + line-height: 28px; + padding: 0 15px; + position: relative; + box-sizing: border-box +} + +.layui-table-cell .layui-form-checkbox[lay-skin=primary] { + top: -1px; + padding: 0 +} + +.layui-table-cell .layui-table-link { + color: #01AAED +} + +.laytable-cell-checkbox, .laytable-cell-numbers, .laytable-cell-radio, .laytable-cell-space { + padding: 0; + text-align: center +} + +.layui-table-body { + position: relative; + overflow: auto; + margin-right: -1px; + margin-bottom: -1px +} + +.layui-table-body .layui-none { + line-height: 26px; + padding: 15px; + text-align: center; + color: #999 +} + +.layui-table-fixed { + position: absolute; + left: 0; + top: 0; + z-index: 101 +} + +.layui-table-fixed .layui-table-body { + overflow: hidden +} + +.layui-table-fixed-l { + box-shadow: 0 -1px 8px rgba(0, 0, 0, .08) +} + +.layui-table-fixed-r { + left: auto; + right: -1px; + border-width: 0 0 0 1px; + box-shadow: -1px 0 8px rgba(0, 0, 0, .08) +} + +.layui-table-fixed-r .layui-table-header { + position: relative; + overflow: visible +} + +.layui-table-mend { + position: absolute; + right: -49px; + top: 0; + height: 100%; + width: 50px +} + +.layui-table-tool { + position: relative; + z-index: 890; + width: 100%; + min-height: 50px; + line-height: 30px; + padding: 10px 15px; + border-width: 0 0 1px +} + +.layui-table-tool .layui-btn-container { + margin-bottom: -10px +} + +.layui-table-page, .layui-table-total { + border-width: 1px 0 0; + margin-bottom: -1px; + overflow: hidden +} + +.layui-table-page { + position: relative; + width: 100%; + padding: 7px 7px 0; + height: 41px; + font-size: 12px; + white-space: nowrap +} + +.layui-table-page > div { + height: 26px +} + +.layui-table-page .layui-laypage { + margin: 0 +} + +.layui-table-page .layui-laypage a, .layui-table-page .layui-laypage span { + height: 26px; + line-height: 26px; + margin-bottom: 10px; + border: none; + background: 0 0 +} + +.layui-table-page .layui-laypage a, .layui-table-page .layui-laypage span.layui-laypage-curr { + padding: 0 12px +} + +.layui-table-page .layui-laypage span { + margin-left: 0; + padding: 0 +} + +.layui-table-page .layui-laypage .layui-laypage-prev { + margin-left: -7px !important +} + +.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em { + left: 0; + top: 0; + padding: 0 +} + +.layui-table-page .layui-laypage button, .layui-table-page .layui-laypage input { + height: 26px; + line-height: 26px +} + +.layui-table-page .layui-laypage input { + width: 40px +} + +.layui-table-page .layui-laypage button { + padding: 0 10px +} + +.layui-table-page select { + height: 18px +} + +.layui-table-patch .layui-table-cell { + padding: 0; + width: 30px +} + +.layui-table-edit { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + padding: 0 14px 1px; + border-radius: 0; + box-shadow: 1px 1px 20px rgba(0, 0, 0, .15) +} + +.layui-table-edit:focus { + border-color: #5FB878 !important +} + +select.layui-table-edit { + padding: 0 0 0 10px; + border-color: #d2d2d2 +} + +.layui-table-view .layui-form-checkbox, .layui-table-view .layui-form-radio, .layui-table-view .layui-form-switch { + top: 0; + margin: 0; + box-sizing: content-box +} + +.layui-colorpicker-alpha-slider, .layui-colorpicker-side-slider, .layui-menu, .layui-menu *, .layui-nav { + box-sizing: border-box +} + +.layui-table-view .layui-form-checkbox { + top: -1px; + height: 26px; + line-height: 26px +} + +.layui-table-view .layui-form-checkbox i { + height: 26px +} + +.layui-table-grid .layui-table-cell { + overflow: visible +} + +.layui-table-grid-down { + position: absolute; + top: 0; + right: 0; + width: 26px; + height: 100%; + padding: 5px 0; + border-width: 0 0 0 1px; + text-align: center; + background-color: #fff; + color: #999; + cursor: pointer +} + +.layui-table-grid-down .layui-icon { + position: absolute; + top: 50%; + left: 50%; + margin: -8px 0 0 -8px +} + +.layui-table-grid-down:hover { + background-color: #fbfbfb +} + +body .layui-table-tips .layui-layer-content { + background: 0 0; + padding: 0; + box-shadow: 0 1px 6px rgba(0, 0, 0, .12) +} + +.layui-table-tips-main { + margin: -44px 0 0 -1px; + max-height: 150px; + padding: 8px 15px; + font-size: 14px; + overflow-y: scroll; + background-color: #fff; + color: #666 +} + +.layui-table-tips-c { + position: absolute; + right: -3px; + top: -13px; + width: 20px; + height: 20px; + padding: 3px; + cursor: pointer; + background-color: #666; + border-radius: 50%; + color: #fff +} + +.layui-table-tips-c:hover { + background-color: #777 +} + +.layui-table-tips-c:before { + position: relative; + right: -2px +} + +.layui-upload-file { + display: none !important; + opacity: .01; + filter: Alpha(opacity=1) +} + +.layui-upload-drag, .layui-upload-form, .layui-upload-wrap { + display: inline-block +} + +.layui-upload-list { + margin: 10px 0 +} + +.layui-upload-choose { + padding: 0 10px; + color: #999 +} + +.layui-upload-drag { + position: relative; + padding: 30px; + border: 1px dashed #e2e2e2; + background-color: #fff; + text-align: center; + cursor: pointer; + color: #999 +} + +.layui-upload-drag .layui-icon { + font-size: 50px; + color: #009688 +} + +.layui-upload-drag[lay-over] { + border-color: #009688 +} + +.layui-upload-iframe { + position: absolute; + width: 0; + height: 0; + border: 0; + visibility: hidden +} + +.layui-upload-wrap { + position: relative; + vertical-align: middle +} + +.layui-upload-wrap .layui-upload-file { + display: block !important; + position: absolute; + left: 0; + top: 0; + z-index: 10; + font-size: 100px; + width: 100%; + height: 100%; + opacity: .01; + filter: Alpha(opacity=1); + cursor: pointer +} + +.layui-menu { + position: relative; + margin: 5px 0; + background-color: #fff +} + +.layui-menu li, .layui-menu-body-title a { + padding: 5px 15px +} + +.layui-menu li { + position: relative; + margin: 1px 0; + width: calc(100% + 1px); + line-height: 22px; + color: rgba(0, 0, 0, .8); + font-size: 14px; + white-space: nowrap; + cursor: pointer +} + +.layui-menu li:hover { + background-color: #F6F6F6 +} + +.layui-menu-item-parent:hover > .layui-menu-body-panel { + display: block; + animation-name: layui-fadein; + animation-duration: .3s; + animation-fill-mode: both; + animation-delay: .2s +} + +.layui-menu-item-group .layui-menu-body-title, .layui-menu-item-parent .layui-menu-body-title { + padding-right: 25px +} + +.layui-menu .layui-menu-item-divider:hover, .layui-menu .layui-menu-item-group:hover, .layui-menu .layui-menu-item-none:hover { + background: 0 0; + cursor: default +} + +.layui-menu .layui-menu-item-group > ul { + margin: 5px 0 -5px +} + +.layui-menu .layui-menu-item-group > .layui-menu-body-title { + color: rgba(0, 0, 0, .35); + user-select: none +} + +.layui-menu .layui-menu-item-none { + color: rgba(0, 0, 0, .35); + cursor: default; + text-align: center +} + +.layui-menu .layui-menu-item-divider { + margin: 5px 0; + padding: 0; + height: 0; + line-height: 0; + border-bottom: 1px solid #eee; + overflow: hidden +} + +.layui-menu .layui-menu-item-down:hover, .layui-menu .layui-menu-item-up:hover { + cursor: pointer +} + +.layui-menu .layui-menu-item-up > .layui-menu-body-title { + color: rgba(0, 0, 0, .8) +} + +.layui-menu .layui-menu-item-up > ul { + visibility: hidden; + height: 0; + overflow: hidden +} + +.layui-menu .layui-menu-item-down:hover > .layui-menu-body-title > .layui-icon, .layui-menu .layui-menu-item-up > .layui-menu-body-title:hover > .layui-icon { + color: rgba(0, 0, 0, 1) +} + +.layui-menu .layui-menu-item-down > ul { + visibility: visible; + height: auto +} + +.layui-breadcrumb, .layui-tree-btnGroup { + visibility: hidden +} + +.layui-menu .layui-menu-item-checked, .layui-menu .layui-menu-item-checked2 { + background-color: #F6F6F6 !important; + color: #5FB878 +} + +.layui-menu .layui-menu-item-checked a, .layui-menu .layui-menu-item-checked2 a { + color: #5FB878 +} + +.layui-menu .layui-menu-item-checked:after { + position: absolute; + right: 0; + top: 0; + bottom: 0; + border-right: 3px solid #5FB878; + content: "" +} + +.layui-menu-body-title { + position: relative; + overflow: hidden; + text-overflow: ellipsis +} + +.layui-menu-body-title a { + display: block; + margin: -5px -15px; + color: rgba(0, 0, 0, .8) +} + +.layui-menu-body-title > .layui-icon { + position: absolute; + right: 0; + top: 0; + font-size: 14px +} + +.layui-menu-body-title > .layui-icon-right { + right: -1px +} + +.layui-menu-body-panel { + display: none; + position: absolute; + top: -7px; + left: 100%; + z-index: 1000; + margin-left: 13px; + padding: 5px 0 +} + +.layui-transfer-active, .layui-transfer-box { + display: inline-block; + vertical-align: middle +} + +.layui-menu-body-panel:before { + content: ""; + position: absolute; + width: 20px; + left: -16px; + top: 0; + bottom: 0 +} + +.layui-menu-body-panel-left { + left: auto; + right: 100%; + margin: 0 13px +} + +.layui-menu-body-panel-left:before { + left: auto; + right: -16px +} + +.layui-menu-lg li { + line-height: 32px +} + +.layui-menu-lg .layui-menu-body-title a:hover, .layui-menu-lg li:hover { + background: 0 0; + color: #5FB878 +} + +.layui-menu-lg li .layui-menu-body-panel { + margin-left: 14px +} + +.layui-menu-lg li .layui-menu-body-panel-left { + margin: 0 15px +} + +.layui-dropdown { + position: absolute; + left: -999999px; + top: -999999px; + z-index: 66666666; + margin: 5px 0; + min-width: 100px +} + +.layui-dropdown:before { + content: ""; + position: absolute; + width: 100%; + height: 6px; + left: 0; + top: -6px +} + +.layui-transfer-box, .layui-transfer-header, .layui-transfer-search { + border-width: 0; + border-style: solid; + border-color: #eee +} + +.layui-transfer-box { + position: relative; + border-width: 1px; + width: 200px; + height: 360px; + border-radius: 2px; + background-color: #fff +} + +.layui-transfer-box .layui-form-checkbox { + width: 100%; + margin: 0 !important +} + +.layui-transfer-header { + height: 38px; + line-height: 38px; + padding: 0 10px; + border-bottom-width: 1px +} + +.layui-transfer-search { + position: relative; + padding: 10px; + border-bottom-width: 1px +} + +.layui-transfer-search .layui-input { + height: 32px; + padding-left: 30px; + font-size: 12px +} + +.layui-transfer-search .layui-icon-search { + position: absolute; + left: 20px; + top: 50%; + margin-top: -8px; + color: #666 +} + +.layui-transfer-active { + margin: 0 15px +} + +.layui-transfer-active .layui-btn { + display: block; + margin: 0; + padding: 0 15px; + background-color: #5FB878; + border-color: #5FB878; + color: #fff +} + +.layui-transfer-active .layui-btn-disabled { + background-color: #FBFBFB; + border-color: #eee; + color: #d2d2d2 +} + +.layui-transfer-active .layui-btn:first-child { + margin-bottom: 15px +} + +.layui-transfer-active .layui-btn .layui-icon { + margin: 0; + font-size: 14px !important +} + +.layui-transfer-data { + padding: 5px 0; + overflow: auto +} + +.layui-transfer-data li { + height: 32px; + line-height: 32px; + padding: 0 10px +} + +.layui-transfer-data li:hover { + background-color: #F6F6F6; + transition: .5s all +} + +.layui-transfer-data .layui-none { + padding: 15px 10px; + text-align: center; + color: #999 +} + +.layui-nav { + position: relative; + padding: 0 20px; + background-color: #393D49; + color: #fff; + border-radius: 2px; + font-size: 0 +} + +.layui-nav * { + font-size: 14px +} + +.layui-nav .layui-nav-item { + position: relative; + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; + line-height: 60px +} + +.layui-nav .layui-nav-item a { + display: block; + padding: 0 20px; + color: #fff; + color: rgba(255, 255, 255, .7); + transition: all .3s; + -webkit-transition: all .3s +} + +.layui-nav .layui-this:after, .layui-nav-bar, .layui-nav-tree .layui-nav-itemed:after { + position: absolute; + left: 0; + top: 0; + width: 0; + height: 5px; + background-color: #5FB878; + transition: all .2s; + -webkit-transition: all .2s +} + +.layui-nav-bar { + z-index: 1000 +} + +.layui-nav .layui-nav-item a:hover, .layui-nav .layui-this a { + color: #fff +} + +.layui-nav .layui-this:after { + content: ""; + top: auto; + bottom: 0; + width: 100% +} + +.layui-nav-img { + width: 30px; + height: 30px; + margin-right: 10px; + border-radius: 50% +} + +.layui-nav .layui-nav-more { + content: ""; + width: 0; + height: 0; + border-style: solid dashed dashed; + border-color: #fff transparent transparent; + overflow: hidden; + cursor: pointer; + transition: all .2s; + -webkit-transition: all .2s; + position: absolute; + top: 50%; + right: 3px; + margin-top: -4px; + border-width: 6px; + border-top-color: rgba(255, 255, 255, .7) +} + +.layui-nav .layui-nav-mored, .layui-nav-itemed > a .layui-nav-more { + margin-top: -9px; + border-style: dashed dashed solid; + border-color: transparent transparent #fff +} + +.layui-nav-child { + display: none; + position: absolute; + left: 0; + top: 65px; + min-width: 100%; + line-height: 36px; + padding: 5px 0; + box-shadow: 0 2px 4px rgba(0, 0, 0, .12); + border: 1px solid #d2d2d2; + background-color: #fff; + z-index: 100; + border-radius: 2px; + white-space: nowrap +} + +.layui-nav .layui-nav-child a { + color: #333 +} + +.layui-nav .layui-nav-child a:hover { + background-color: #F6F6F6; + color: #5FB878 +} + +.layui-nav-child dd { + position: relative +} + +.layui-nav .layui-nav-child dd.layui-this a, .layui-nav-child dd.layui-this { + background-color: #5FB878; + color: #fff +} + +.layui-nav-child dd.layui-this:after { + display: none +} + +.layui-nav-tree { + width: 200px; + padding: 0 +} + +.layui-nav-tree .layui-nav-item { + display: block; + width: 100%; + line-height: 45px +} + +.layui-nav-tree .layui-nav-item a { + position: relative; + height: 45px; + line-height: 45px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap +} + +.layui-nav-tree .layui-nav-item a:hover { + background-color: #4E5465 +} + +.layui-nav-tree .layui-nav-bar { + width: 5px; + height: 0; + background-color: #009688 +} + +.layui-nav-tree .layui-nav-child dd.layui-this, .layui-nav-tree .layui-nav-child dd.layui-this a, .layui-nav-tree .layui-this, .layui-nav-tree .layui-this > a, .layui-nav-tree .layui-this > a:hover { + background-color: #009688; + color: #fff +} + +.layui-nav-tree .layui-this:after { + display: none +} + +.layui-nav-itemed > a, .layui-nav-tree .layui-nav-title a, .layui-nav-tree .layui-nav-title a:hover { + color: #fff !important +} + +.layui-nav-tree .layui-nav-child { + position: relative; + z-index: 0; + top: 0; + border: none; + box-shadow: none +} + +.layui-nav-tree .layui-nav-child a { + height: 40px; + line-height: 40px; + color: #fff; + color: rgba(255, 255, 255, .7) +} + +.layui-nav-tree .layui-nav-child, .layui-nav-tree .layui-nav-child a:hover { + background: 0 0; + color: #fff +} + +.layui-nav-tree .layui-nav-more { + right: 10px +} + +.layui-nav-itemed > .layui-nav-child { + display: block; + padding: 0; + background-color: rgba(0, 0, 0, .3) !important +} + +.layui-nav-itemed > .layui-nav-child > .layui-this > .layui-nav-child { + display: block +} + +.layui-nav-side { + position: fixed; + top: 0; + bottom: 0; + left: 0; + overflow-x: hidden; + z-index: 999 +} + +.layui-bg-blue .layui-nav-bar, .layui-bg-blue .layui-nav-itemed:after, .layui-bg-blue .layui-this:after { + background-color: #93D1FF +} + +.layui-bg-blue .layui-nav-child dd.layui-this { + background-color: #1E9FFF +} + +.layui-bg-blue .layui-nav-itemed > a, .layui-nav-tree.layui-bg-blue .layui-nav-title a, .layui-nav-tree.layui-bg-blue .layui-nav-title a:hover { + background-color: #007DDB !important +} + +.layui-breadcrumb { + font-size: 0 +} + +.layui-breadcrumb > * { + font-size: 14px +} + +.layui-breadcrumb a { + color: #999 !important +} + +.layui-breadcrumb a:hover { + color: #5FB878 !important +} + +.layui-breadcrumb a cite { + color: #666; + font-style: normal +} + +.layui-breadcrumb span[lay-separator] { + margin: 0 10px; + color: #999 +} + +.layui-tab { + margin: 10px 0; + text-align: left !important +} + +.layui-tab[overflow] > .layui-tab-title { + overflow: hidden +} + +.layui-tab-title { + position: relative; + left: 0; + height: 40px; + white-space: nowrap; + font-size: 0; + border-bottom-width: 1px; + border-bottom-style: solid; + transition: all .2s; + -webkit-transition: all .2s +} + +.layui-tab-title li { + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; + font-size: 14px; + transition: all .2s; + -webkit-transition: all .2s; + position: relative; + line-height: 40px; + min-width: 65px; + padding: 0 15px; + text-align: center; + cursor: pointer +} + +.layui-tab-title li a { + display: block +} + +.layui-tab-title .layui-this { + color: #000 +} + +.layui-tab-title .layui-this:after { + position: absolute; + left: 0; + top: 0; + content: ""; + width: 100%; + height: 41px; + border-width: 1px; + border-style: solid; + border-bottom-color: #fff; + border-radius: 2px 2px 0 0; + box-sizing: border-box; + pointer-events: none +} + +.layui-tab-bar { + position: absolute; + right: 0; + top: 0; + z-index: 10; + width: 30px; + height: 39px; + line-height: 39px; + border-width: 1px; + border-style: solid; + border-radius: 2px; + text-align: center; + background-color: #fff; + cursor: pointer +} + +.layui-tab-bar .layui-icon { + position: relative; + display: inline-block; + top: 3px; + transition: all .3s; + -webkit-transition: all .3s +} + +.layui-tab-item { + display: none +} + +.layui-tab-more { + padding-right: 30px; + height: auto !important; + white-space: normal !important +} + +.layui-tab-more li.layui-this:after { + border-bottom-color: #eee; + border-radius: 2px +} + +.layui-tab-more .layui-tab-bar .layui-icon { + top: -2px; + top: 3px \9; + -webkit-transform: rotate(180deg); + transform: rotate(180deg) +} + +:root .layui-tab-more .layui-tab-bar .layui-icon { + top: -2px \0/ IE9 +} + +.layui-tab-content { + padding: 15px 0 +} + +.layui-tab-title li .layui-tab-close { + position: relative; + display: inline-block; + width: 18px; + height: 18px; + line-height: 20px; + margin-left: 8px; + top: 1px; + text-align: center; + font-size: 14px; + color: #c2c2c2; + transition: all .2s; + -webkit-transition: all .2s +} + +.layui-tab-title li .layui-tab-close:hover { + border-radius: 2px; + background-color: #FF5722; + color: #fff +} + +.layui-tab-brief > .layui-tab-title .layui-this { + color: #009688 +} + +.layui-tab-brief > .layui-tab-more li.layui-this:after, .layui-tab-brief > .layui-tab-title .layui-this:after { + border: none; + border-radius: 0; + border-bottom: 2px solid #5FB878 +} + +.layui-tab-brief[overflow] > .layui-tab-title .layui-this:after { + top: -1px +} + +.layui-tab-card { + border-width: 1px; + border-style: solid; + border-radius: 2px; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .1) +} + +.layui-tab-card > .layui-tab-title { + background-color: #FAFAFA +} + +.layui-tab-card > .layui-tab-title li { + margin-right: -1px; + margin-left: -1px +} + +.layui-tab-card > .layui-tab-title .layui-this { + background-color: #fff +} + +.layui-tab-card > .layui-tab-title .layui-this:after { + border-top: none; + border-width: 1px; + border-bottom-color: #fff +} + +.layui-tab-card > .layui-tab-title .layui-tab-bar { + height: 40px; + line-height: 40px; + border-radius: 0; + border-top: none; + border-right: none +} + +.layui-tab-card > .layui-tab-more .layui-this { + background: 0 0; + color: #5FB878 +} + +.layui-tab-card > .layui-tab-more .layui-this:after { + border: none +} + +.layui-timeline { + padding-left: 5px +} + +.layui-timeline-item { + position: relative; + padding-bottom: 20px +} + +.layui-timeline-axis { + position: absolute; + left: -5px; + top: 0; + z-index: 10; + width: 20px; + height: 20px; + line-height: 20px; + background-color: #fff; + color: #5FB878; + border-radius: 50%; + text-align: center; + cursor: pointer +} + +.layui-timeline-axis:hover { + color: #FF5722 +} + +.layui-timeline-item:before { + content: ""; + position: absolute; + left: 5px; + top: 0; + z-index: 0; + width: 1px; + height: 100% +} + +.layui-timeline-item:first-child:before { + display: block +} + +.layui-timeline-item:last-child:before { + display: none +} + +.layui-timeline-content { + padding-left: 25px +} + +.layui-timeline-title { + position: relative; + margin-bottom: 10px; + line-height: 22px +} + +.layui-badge, .layui-badge-dot, .layui-badge-rim { + position: relative; + display: inline-block; + padding: 0 6px; + font-size: 12px; + text-align: center; + background-color: #FF5722; + color: #fff; + border-radius: 2px +} + +.layui-badge { + height: 18px; + line-height: 18px +} + +.layui-badge-dot { + width: 8px; + height: 8px; + padding: 0; + border-radius: 50% +} + +.layui-badge-rim { + height: 18px; + line-height: 18px; + border-width: 1px; + border-style: solid; + background-color: #fff; + color: #666 +} + +.layui-btn .layui-badge, .layui-btn .layui-badge-dot { + margin-left: 5px +} + +.layui-nav .layui-badge, .layui-nav .layui-badge-dot { + position: absolute; + top: 50%; + margin: -5px 6px 0 +} + +.layui-nav .layui-badge { + margin-top: -10px +} + +.layui-tab-title .layui-badge, .layui-tab-title .layui-badge-dot { + left: 5px; + top: -2px +} + +.layui-carousel { + position: relative; + left: 0; + top: 0; + background-color: #f8f8f8 +} + +.layui-carousel > [carousel-item] { + position: relative; + width: 100%; + height: 100%; + overflow: hidden +} + +.layui-carousel > [carousel-item]:before { + position: absolute; + content: '\e63d'; + left: 50%; + top: 50%; + width: 100px; + line-height: 20px; + margin: -10px 0 0 -50px; + text-align: center; + color: #c2c2c2; + font-family: layui-icon !important; + font-size: 30px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +.layui-carousel > [carousel-item] > * { + display: none; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: #f8f8f8; + transition-duration: .3s; + -webkit-transition-duration: .3s +} + +.layui-carousel-updown > * { + -webkit-transition: .3s ease-in-out up; + transition: .3s ease-in-out up +} + +.layui-carousel-arrow { + display: none \9; + opacity: 0; + position: absolute; + left: 10px; + top: 50%; + margin-top: -18px; + width: 36px; + height: 36px; + line-height: 36px; + text-align: center; + font-size: 20px; + border: 0; + border-radius: 50%; + background-color: rgba(0, 0, 0, .2); + color: #fff; + -webkit-transition-duration: .3s; + transition-duration: .3s; + cursor: pointer +} + +.layui-carousel-arrow[lay-type=add] { + left: auto !important; + right: 10px +} + +.layui-carousel:hover .layui-carousel-arrow[lay-type=add], .layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add] { + right: 20px +} + +.layui-carousel[lay-arrow=always] .layui-carousel-arrow { + opacity: 1; + left: 20px +} + +.layui-carousel[lay-arrow=none] .layui-carousel-arrow { + display: none +} + +.layui-carousel-arrow:hover, .layui-carousel-ind ul:hover { + background-color: rgba(0, 0, 0, .35) +} + +.layui-carousel:hover .layui-carousel-arrow { + display: block \9; + opacity: 1; + left: 20px +} + +.layui-carousel-ind { + position: relative; + top: -35px; + width: 100%; + line-height: 0 !important; + text-align: center; + font-size: 0 +} + +.layui-carousel[lay-indicator=outside] { + margin-bottom: 30px +} + +.layui-carousel[lay-indicator=outside] .layui-carousel-ind { + top: 10px +} + +.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul { + background-color: rgba(0, 0, 0, .5) +} + +.layui-carousel[lay-indicator=none] .layui-carousel-ind { + display: none +} + +.layui-carousel-ind ul { + display: inline-block; + padding: 5px; + background-color: rgba(0, 0, 0, .2); + border-radius: 10px; + -webkit-transition-duration: .3s; + transition-duration: .3s +} + +.layui-carousel-ind li { + display: inline-block; + width: 10px; + height: 10px; + margin: 0 3px; + font-size: 14px; + background-color: #eee; + background-color: rgba(255, 255, 255, .5); + border-radius: 50%; + cursor: pointer; + -webkit-transition-duration: .3s; + transition-duration: .3s +} + +.layui-carousel-ind li:hover { + background-color: rgba(255, 255, 255, .7) +} + +.layui-carousel-ind li.layui-this { + background-color: #fff +} + +.layui-carousel > [carousel-item] > .layui-carousel-next, .layui-carousel > [carousel-item] > .layui-carousel-prev, .layui-carousel > [carousel-item] > .layui-this { + display: block +} + +.layui-carousel > [carousel-item] > .layui-this { + left: 0 +} + +.layui-carousel > [carousel-item] > .layui-carousel-prev { + left: -100% +} + +.layui-carousel > [carousel-item] > .layui-carousel-next { + left: 100% +} + +.layui-carousel > [carousel-item] > .layui-carousel-next.layui-carousel-left, .layui-carousel > [carousel-item] > .layui-carousel-prev.layui-carousel-right { + left: 0 +} + +.layui-carousel > [carousel-item] > .layui-this.layui-carousel-left { + left: -100% +} + +.layui-carousel > [carousel-item] > .layui-this.layui-carousel-right { + left: 100% +} + +.layui-carousel[lay-anim=updown] .layui-carousel-arrow { + left: 50% !important; + top: 20px; + margin: 0 0 0 -18px +} + +.layui-carousel[lay-anim=updown] > [carousel-item] > *, .layui-carousel[lay-anim=fade] > [carousel-item] > * { + left: 0 !important +} + +.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add] { + top: auto !important; + bottom: 20px +} + +.layui-carousel[lay-anim=updown] .layui-carousel-ind { + position: absolute; + top: 50%; + right: 20px; + width: auto; + height: auto +} + +.layui-carousel[lay-anim=updown] .layui-carousel-ind ul { + padding: 3px 5px +} + +.layui-carousel[lay-anim=updown] .layui-carousel-ind li { + display: block; + margin: 6px 0 +} + +.layui-carousel[lay-anim=updown] > [carousel-item] > .layui-this { + top: 0 +} + +.layui-carousel[lay-anim=updown] > [carousel-item] > .layui-carousel-prev { + top: -100% +} + +.layui-carousel[lay-anim=updown] > [carousel-item] > .layui-carousel-next { + top: 100% +} + +.layui-carousel[lay-anim=updown] > [carousel-item] > .layui-carousel-next.layui-carousel-left, .layui-carousel[lay-anim=updown] > [carousel-item] > .layui-carousel-prev.layui-carousel-right { + top: 0 +} + +.layui-carousel[lay-anim=updown] > [carousel-item] > .layui-this.layui-carousel-left { + top: -100% +} + +.layui-carousel[lay-anim=updown] > [carousel-item] > .layui-this.layui-carousel-right { + top: 100% +} + +.layui-carousel[lay-anim=fade] > [carousel-item] > .layui-carousel-next, .layui-carousel[lay-anim=fade] > [carousel-item] > .layui-carousel-prev { + opacity: 0 +} + +.layui-carousel[lay-anim=fade] > [carousel-item] > .layui-carousel-next.layui-carousel-left, .layui-carousel[lay-anim=fade] > [carousel-item] > .layui-carousel-prev.layui-carousel-right { + opacity: 1 +} + +.layui-carousel[lay-anim=fade] > [carousel-item] > .layui-this.layui-carousel-left, .layui-carousel[lay-anim=fade] > [carousel-item] > .layui-this.layui-carousel-right { + opacity: 0 +} + +.layui-fixbar { + position: fixed; + right: 15px; + bottom: 15px; + z-index: 999999 +} + +.layui-fixbar li { + width: 50px; + height: 50px; + line-height: 50px; + margin-bottom: 1px; + text-align: center; + cursor: pointer; + font-size: 30px; + background-color: #9F9F9F; + color: #fff; + border-radius: 2px; + opacity: .95 +} + +.layui-fixbar li:hover { + opacity: .85 +} + +.layui-fixbar li:active { + opacity: 1 +} + +.layui-fixbar .layui-fixbar-top { + display: none; + font-size: 40px +} + +body .layui-util-face { + border: none; + background: 0 0 +} + +body .layui-util-face .layui-layer-content { + padding: 0; + background-color: #fff; + color: #666; + box-shadow: none +} + +.layui-util-face .layui-layer-TipsG { + display: none +} + +.layui-util-face ul { + position: relative; + width: 372px; + padding: 10px; + border: 1px solid #D9D9D9; + background-color: #fff; + box-shadow: 0 0 20px rgba(0, 0, 0, .2) +} + +.layui-util-face ul li { + cursor: pointer; + float: left; + border: 1px solid #e8e8e8; + height: 22px; + width: 26px; + overflow: hidden; + margin: -1px 0 0 -1px; + padding: 4px 2px; + text-align: center +} + +.layui-util-face ul li:hover { + position: relative; + z-index: 2; + border: 1px solid #eb7350; + background: #fff9ec +} + +.layui-code { + position: relative; + margin: 10px 0; + padding: 15px; + line-height: 20px; + border: 1px solid #eee; + border-left-width: 6px; + background-color: #FAFAFA; + color: #333; + font-family: Courier New; + font-size: 12px +} + +.layui-rate, .layui-rate * { + display: inline-block; + vertical-align: middle +} + +.layui-rate { + padding: 10px 5px 10px 0; + font-size: 0 +} + +.layui-rate li i.layui-icon { + font-size: 20px; + color: #FFB800; + margin-right: 5px; + transition: all .3s; + -webkit-transition: all .3s +} + +.layui-rate li i:hover { + cursor: pointer; + transform: scale(1.12); + -webkit-transform: scale(1.12) +} + +.layui-rate[readonly] li i:hover { + cursor: default; + transform: scale(1) +} + +.layui-colorpicker { + width: 26px; + height: 26px; + border: 1px solid #eee; + padding: 5px; + border-radius: 2px; + line-height: 24px; + display: inline-block; + cursor: pointer; + transition: all .3s; + -webkit-transition: all .3s +} + +.layui-colorpicker:hover { + border-color: #d2d2d2 +} + +.layui-colorpicker.layui-colorpicker-lg { + width: 34px; + height: 34px; + line-height: 32px +} + +.layui-colorpicker.layui-colorpicker-sm { + width: 24px; + height: 24px; + line-height: 22px +} + +.layui-colorpicker.layui-colorpicker-xs { + width: 22px; + height: 22px; + line-height: 20px +} + +.layui-colorpicker-trigger-bgcolor { + display: block; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); + border-radius: 2px +} + +.layui-colorpicker-trigger-span { + display: block; + height: 100%; + box-sizing: border-box; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 2px; + text-align: center +} + +.layui-colorpicker-trigger-i { + display: inline-block; + color: #FFF; + font-size: 12px +} + +.layui-colorpicker-trigger-i.layui-icon-close { + color: #999 +} + +.layui-colorpicker-main { + position: absolute; + z-index: 66666666; + width: 280px; + padding: 7px; + background: #FFF; + border: 1px solid #d2d2d2; + border-radius: 2px; + box-shadow: 0 2px 4px rgba(0, 0, 0, .12) +} + +.layui-colorpicker-main-wrapper { + height: 180px; + position: relative +} + +.layui-colorpicker-basis { + width: 260px; + height: 100%; + position: relative +} + +.layui-colorpicker-basis-white { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + background: linear-gradient(90deg, #FFF, hsla(0, 0%, 100%, 0)) +} + +.layui-colorpicker-basis-black { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + background: linear-gradient(0deg, #000, transparent) +} + +.layui-colorpicker-basis-cursor { + width: 10px; + height: 10px; + border: 1px solid #FFF; + border-radius: 50%; + position: absolute; + top: -3px; + right: -3px; + cursor: pointer +} + +.layui-colorpicker-side { + position: absolute; + top: 0; + right: 0; + width: 12px; + height: 100%; + background: linear-gradient(red, #FF0, #0F0, #0FF, #00F, #F0F, red) +} + +.layui-colorpicker-side-slider { + width: 100%; + height: 5px; + box-shadow: 0 0 1px #888; + background: #FFF; + border-radius: 1px; + border: 1px solid #f0f0f0; + cursor: pointer; + position: absolute; + left: 0 +} + +.layui-colorpicker-main-alpha { + display: none; + height: 12px; + margin-top: 7px; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) +} + +.layui-colorpicker-alpha-bgcolor { + height: 100%; + position: relative +} + +.layui-colorpicker-alpha-slider { + width: 5px; + height: 100%; + box-shadow: 0 0 1px #888; + background: #FFF; + border-radius: 1px; + border: 1px solid #f0f0f0; + cursor: pointer; + position: absolute; + top: 0 +} + +.layui-colorpicker-main-pre { + padding-top: 7px; + font-size: 0 +} + +.layui-colorpicker-pre { + width: 20px; + height: 20px; + border-radius: 2px; + display: inline-block; + margin-left: 6px; + margin-bottom: 7px; + cursor: pointer +} + +.layui-colorpicker-pre:nth-child(11n+1) { + margin-left: 0 +} + +.layui-colorpicker-pre-isalpha { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) +} + +.layui-colorpicker-pre.layui-this { + box-shadow: 0 0 3px 2px rgba(0, 0, 0, .15) +} + +.layui-colorpicker-pre > div { + height: 100%; + border-radius: 2px +} + +.layui-colorpicker-main-input { + text-align: right; + padding-top: 7px +} + +.layui-colorpicker-main-input .layui-btn-container .layui-btn { + margin: 0 0 0 10px +} + +.layui-colorpicker-main-input div.layui-inline { + float: left; + margin-right: 10px; + font-size: 14px +} + +.layui-colorpicker-main-input input.layui-input { + width: 150px; + height: 30px; + color: #666 +} + +.layui-slider { + height: 4px; + background: #eee; + border-radius: 3px; + position: relative; + cursor: pointer +} + +.layui-slider-bar { + border-radius: 3px; + position: absolute; + height: 100% +} + +.layui-slider-step { + position: absolute; + top: 0; + width: 4px; + height: 4px; + border-radius: 50%; + background: #FFF; + -webkit-transform: translateX(-50%); + transform: translateX(-50%) +} + +.layui-slider-wrap { + width: 36px; + height: 36px; + position: absolute; + top: -16px; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + z-index: 10; + text-align: center +} + +.layui-slider-wrap-btn { + width: 12px; + height: 12px; + border-radius: 50%; + background: #FFF; + display: inline-block; + vertical-align: middle; + cursor: pointer; + transition: .3s +} + +.layui-slider-wrap:after { + content: ""; + height: 100%; + display: inline-block; + vertical-align: middle +} + +.layui-slider-wrap-btn.layui-slider-hover, .layui-slider-wrap-btn:hover { + transform: scale(1.2) +} + +.layui-slider-wrap-btn.layui-disabled:hover { + transform: scale(1) !important +} + +.layui-slider-tips { + position: absolute; + top: -42px; + z-index: 66666666; + white-space: nowrap; + display: none; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + color: #FFF; + background: #000; + border-radius: 3px; + height: 25px; + line-height: 25px; + padding: 0 10px +} + +.layui-slider-tips:after { + content: ""; + position: absolute; + bottom: -12px; + left: 50%; + margin-left: -6px; + width: 0; + height: 0; + border-width: 6px; + border-style: solid; + border-color: #000 transparent transparent +} + +.layui-slider-input { + width: 70px; + height: 32px; + border: 1px solid #eee; + border-radius: 3px; + font-size: 16px; + line-height: 32px; + position: absolute; + right: 0; + top: -14px +} + +.layui-slider-input-btn { + position: absolute; + top: 0; + right: 0; + width: 20px; + height: 100%; + border-left: 1px solid #eee +} + +.layui-slider-input-btn i { + cursor: pointer; + position: absolute; + right: 0; + bottom: 0; + width: 20px; + height: 50%; + font-size: 12px; + line-height: 16px; + text-align: center; + color: #999 +} + +.layui-slider-input-btn i:first-child { + top: 0; + border-bottom: 1px solid #eee +} + +.layui-slider-input-txt { + height: 100%; + font-size: 14px +} + +.layui-slider-input-txt input { + height: 100%; + border: none +} + +.layui-slider-input-btn i:hover { + color: #009688 +} + +.layui-slider-vertical { + width: 4px; + margin-left: 33px +} + +.layui-slider-vertical .layui-slider-bar { + width: 4px +} + +.layui-slider-vertical .layui-slider-step { + top: auto; + left: 0; + -webkit-transform: translateY(50%); + transform: translateY(50%) +} + +.layui-slider-vertical .layui-slider-wrap { + top: auto; + left: -16px; + -webkit-transform: translateY(50%); + transform: translateY(50%) +} + +.layui-slider-vertical .layui-slider-tips { + top: auto; + left: 2px +} + +@media \0screen { + .layui-slider-wrap-btn { + margin-left: -20px + } + + .layui-slider-vertical .layui-slider-wrap-btn { + margin-left: 0; + margin-bottom: -20px + } + + .layui-slider-vertical .layui-slider-tips { + margin-left: -8px + } + + .layui-slider > span { + margin-left: 8px + } +} + +.layui-tree { + line-height: 22px +} + +.layui-tree .layui-form-checkbox { + margin: 0 !important +} + +.layui-tree-set { + width: 100%; + position: relative +} + +.layui-tree-pack { + display: none; + padding-left: 20px; + position: relative +} + +.layui-tree-iconClick, .layui-tree-main { + display: inline-block; + vertical-align: middle +} + +.layui-tree-line .layui-tree-pack { + padding-left: 27px +} + +.layui-tree-line .layui-tree-set .layui-tree-set:after { + content: ""; + position: absolute; + top: 14px; + left: -9px; + width: 17px; + height: 0; + border-top: 1px dotted #c0c4cc +} + +.layui-tree-entry { + position: relative; + padding: 3px 0; + height: 20px; + white-space: nowrap +} + +.layui-tree-entry:hover { + background-color: #eee +} + +.layui-tree-line .layui-tree-entry:hover { + background-color: rgba(0, 0, 0, 0) +} + +.layui-tree-line .layui-tree-entry:hover .layui-tree-txt { + color: #999; + text-decoration: underline; + transition: .3s +} + +.layui-tree-main { + cursor: pointer; + padding-right: 10px +} + +.layui-tree-line .layui-tree-set:before { + content: ""; + position: absolute; + top: 0; + left: -9px; + width: 0; + height: 100%; + border-left: 1px dotted #c0c4cc +} + +.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before { + height: 13px +} + +.layui-tree-line .layui-tree-set.layui-tree-setHide:before { + height: 0 +} + +.layui-tree-iconClick { + position: relative; + height: 20px; + line-height: 20px; + margin: 0 10px; + color: #c0c4cc +} + +.layui-tree-icon { + height: 12px; + line-height: 12px; + width: 12px; + text-align: center; + border: 1px solid #c0c4cc +} + +.layui-tree-iconClick .layui-icon { + font-size: 18px +} + +.layui-tree-icon .layui-icon { + font-size: 12px; + color: #666 +} + +.layui-tree-iconArrow { + padding: 0 5px +} + +.layui-tree-iconArrow:after { + content: ""; + position: absolute; + left: 4px; + top: 3px; + z-index: 100; + width: 0; + height: 0; + border-width: 5px; + border-style: solid; + border-color: transparent transparent transparent #c0c4cc; + transition: .5s +} + +.layui-tree-btnGroup, .layui-tree-editInput { + position: relative; + vertical-align: middle; + display: inline-block +} + +.layui-tree-spread > .layui-tree-entry > .layui-tree-iconClick > .layui-tree-iconArrow:after { + transform: rotate(90deg) translate(3px, 4px) +} + +.layui-tree-txt { + display: inline-block; + vertical-align: middle; + color: #555 +} + +.layui-tree-search { + margin-bottom: 15px; + color: #666 +} + +.layui-tree-btnGroup .layui-icon { + display: inline-block; + vertical-align: middle; + padding: 0 2px; + cursor: pointer +} + +.layui-tree-btnGroup .layui-icon:hover { + color: #999; + transition: .3s +} + +.layui-tree-entry:hover .layui-tree-btnGroup { + visibility: visible +} + +.layui-tree-editInput { + height: 20px; + line-height: 20px; + padding: 0 3px; + border: none; + background-color: rgba(0, 0, 0, .05) +} + +.layui-tree-emptyText { + text-align: center; + color: #999 +} + +.layui-anim { + -webkit-animation-duration: .2s; + -webkit-animation-fill-mode: both; + animation-duration: .2s; + animation-fill-mode: both +} + +.layui-anim.layui-icon { + display: inline-block +} + +.layui-anim-loop { + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite +} + +.layui-trans, .layui-trans a { + transition: all .2s; + -webkit-transition: all .2s +} + +@-webkit-keyframes layui-rotate { + from { + -webkit-transform: rotate(0) + } + to { + -webkit-transform: rotate(360deg) + } +} + +@keyframes layui-rotate { + from { + transform: rotate(0) + } + to { + transform: rotate(360deg) + } +} + +.layui-anim-rotate { + -webkit-animation-name: layui-rotate; + animation-name: layui-rotate; + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-timing-function: linear; + animation-timing-function: linear +} + +@-webkit-keyframes layui-up { + from { + -webkit-transform: translate3d(0, 100%, 0); + opacity: .3 + } + to { + -webkit-transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +@keyframes layui-up { + from { + transform: translate3d(0, 100%, 0); + opacity: .3 + } + to { + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +.layui-anim-up { + -webkit-animation-name: layui-up; + animation-name: layui-up +} + +@-webkit-keyframes layui-upbit { + from { + -webkit-transform: translate3d(0, 15px, 0); + opacity: .3 + } + to { + -webkit-transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +@keyframes layui-upbit { + from { + transform: translate3d(0, 15px, 0); + opacity: .3 + } + to { + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +.layui-anim-upbit { + -webkit-animation-name: layui-upbit; + animation-name: layui-upbit +} + +@keyframes layui-down { + 0% { + opacity: .3; + transform: translate3d(0, -100%, 0) + } + 100% { + opacity: 1; + transform: translate3d(0, 0, 0) + } +} + +.layui-anim-down { + animation-name: layui-down +} + +@keyframes layui-downbit { + 0% { + opacity: .3; + transform: translate3d(0, -5px, 0) + } + 100% { + opacity: 1; + transform: translate3d(0, 0, 0) + } +} + +.layui-anim-downbit { + animation-name: layui-downbit +} + +@-webkit-keyframes layui-scale { + 0% { + opacity: .3; + -webkit-transform: scale(.5) + } + 100% { + opacity: 1; + -webkit-transform: scale(1) + } +} + +@keyframes layui-scale { + 0% { + opacity: .3; + -ms-transform: scale(.5); + transform: scale(.5) + } + 100% { + opacity: 1; + -ms-transform: scale(1); + transform: scale(1) + } +} + +.layui-anim-scale { + -webkit-animation-name: layui-scale; + animation-name: layui-scale +} + +@-webkit-keyframes layui-scale-spring { + 0% { + opacity: .5; + -webkit-transform: scale(.5) + } + 80% { + opacity: .8; + -webkit-transform: scale(1.1) + } + 100% { + opacity: 1; + -webkit-transform: scale(1) + } +} + +@keyframes layui-scale-spring { + 0% { + opacity: .5; + transform: scale(.5) + } + 80% { + opacity: .8; + transform: scale(1.1) + } + 100% { + opacity: 1; + transform: scale(1) + } +} + +.layui-anim-scaleSpring { + -webkit-animation-name: layui-scale-spring; + animation-name: layui-scale-spring +} + +@keyframes layui-scalesmall { + 0% { + opacity: .3; + transform: scale(1.5) + } + 100% { + opacity: 1; + transform: scale(1) + } +} + +.layui-anim-scalesmall { + animation-name: layui-scalesmall +} + +@keyframes layui-scalesmall-spring { + 0% { + opacity: .3; + transform: scale(1.5) + } + 80% { + opacity: .8; + transform: scale(.9) + } + 100% { + opacity: 1; + transform: scale(1) + } +} + +.layui-anim-scalesmall-spring { + animation-name: layui-scalesmall-spring +} + +@-webkit-keyframes layui-fadein { + 0% { + opacity: 0 + } + 100% { + opacity: 1 + } +} + +@keyframes layui-fadein { + 0% { + opacity: 0 + } + 100% { + opacity: 1 + } +} + +.layui-anim-fadein { + -webkit-animation-name: layui-fadein; + animation-name: layui-fadein +} + +@-webkit-keyframes layui-fadeout { + 0% { + opacity: 1 + } + 100% { + opacity: 0 + } +} + +@keyframes layui-fadeout { + 0% { + opacity: 1 + } + 100% { + opacity: 0 + } +} + +.layui-anim-fadeout { + -webkit-animation-name: layui-fadeout; + animation-name: layui-fadeout +} diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/code.css b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/code.css new file mode 100644 index 0000000..0fee0c5 --- /dev/null +++ b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/code.css @@ -0,0 +1 @@ +html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #eee;border-left-width:6px;background-color:#FAFAFA;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:40px;line-height:40px;border-bottom:1px solid #eee}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 10px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view .layui-code-ol li:first-child{padding-top:10px}.layui-code-view .layui-code-ol li:last-child{padding-bottom:10px}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}.layui-code-demo .layui-code{visibility:visible!important;margin:-15px;border-top:none;border-right:none;border-bottom:none}.layui-code-demo .layui-tab-content{padding:15px;border-top:none} \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/laydate/default/laydate.css b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/laydate/default/laydate.css new file mode 100644 index 0000000..9f3064b --- /dev/null +++ b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/laydate/default/laydate.css @@ -0,0 +1 @@ +.laydate-set-ym,.layui-laydate,.layui-laydate *,.layui-laydate-list{box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate{position:absolute;z-index:66666666;margin:5px 0;border-radius:2px;font-size:14px;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;animation-name:laydate-downbit}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon,.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.laydate-set-ym span,.layui-laydate-header i{padding:0 5px;cursor:pointer}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;color:#999;font-size:18px}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:5px;text-align:center}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;height:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px 20px}.layui-laydate-footer span{margin-right:15px;display:inline-block;cursor:pointer;font-size:12px}.layui-laydate-footer span:hover{color:#5FB878}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{height:26px;line-height:26px;margin:0 0 0 -1px;padding:0 10px;border:1px solid #C9C9C9;background-color:#fff;white-space:nowrap;vertical-align:top;border-radius:2px}.layui-laydate-list>li,.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle}.layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;background-color:#fff}.layui-laydate-list>li{position:relative;width:33.3%;height:36px;line-height:36px;margin:3px 0;text-align:center;cursor:pointer}.laydate-month-list>li{width:25%;margin:17px 0}.laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.laydate-time-list p{position:relative;top:-4px;line-height:29px}.laydate-time-list ol{height:181px;overflow:hidden}.laydate-time-list>li:hover ol{overflow-y:auto}.laydate-time-list ol li{width:130%;padding-left:33px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px}.layui-laydate-range{width:546px}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#666}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#5FB878}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{font-weight:400;color:#333}.layui-laydate-content td{color:#666}.layui-laydate-content td.laydate-selected{background-color:#B5FFF8}.laydate-selected:hover{background-color:#00F7DE!important}.layui-laydate-content td:hover,.layui-laydate-list li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.laydate-selected.laydate-day-next,.laydate-selected.laydate-day-prev{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#FF5722}.laydate-day-mark::after{background-color:#5FB878}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#5FB878}.layui-laydate .layui-this{background-color:#009688!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#009688}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead,.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-selected,.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#009688!important}.laydate-theme-grid .laydate-selected.laydate-day-next,.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px} \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/icon-ext.png b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/icon-ext.png new file mode 100644 index 0000000000000000000000000000000000000000..bbbb669bb311514baa5db3a6a00b4644d0e280f1 GIT binary patch literal 5911 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 bWW^%>x7XlHV^#Q1uOX^B?ki3(VEg|7!QHuF literal 0 HcmV?d00001 diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/loading-1.gif b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/css/modules/layer/default/loading-1.gif new file mode 100644 index 0000000000000000000000000000000000000000..db3a483e4b74971fbfb1cc0fb6499852cedfe650 GIT binary patch literal 701 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 NqtXTTr(IH0bTL$Q#&Rt$( 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 WEo6sg2$g9lKpdZ$$_>);_x}MD5#CJz literal 0 HcmV?d00001 diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.svg b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.svg new file mode 100644 index 0000000..999ca1f --- /dev/null +++ b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.svg @@ -0,0 +1,554 @@ + + + + + +Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.ttf b/ss-admin/src/main/resources/static/lib/layui-v2.6.3/font/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..06e30f9e2a856cbfefff25111ceb4b9c034f35fd GIT binary patch literal 46508 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
    + selectorResult = createElemByHTML(selector); + } else { + // 如 #id .class + selectorResult = querySelectorAll(selector); + } + } + + var length = selectorResult.length; + if (!length) { + // 空数组 + return this; + } + + // 加入 DOM 节点 + var i = void 0; + for (i = 0; i < length; i++) { + this[i] = selectorResult[i]; + } + this.length = length; +} + +// 修改原型 +DomElement.prototype = { + constructor: DomElement, + + // 类数组,forEach + forEach: function forEach(fn) { + var i = void 0; + for (i = 0; i < this.length; i++) { + var elem = this[i]; + var result = fn.call(elem, elem, i); + if (result === false) { + break; + } + } + return this; + }, + + // clone + clone: function clone(deep) { + var cloneList = []; + this.forEach(function (elem) { + cloneList.push(elem.cloneNode(!!deep)); + }); + return $(cloneList); + }, + + // 获取第几个元素 + get: function get(index) { + var length = this.length; + if (index >= length) { + index = index % length; + } + return $(this[index]); + }, + + // 第一个 + first: function first() { + return this.get(0); + }, + + // 最后一个 + last: function last() { + var length = this.length; + return this.get(length - 1); + }, + + // 绑定事件 + on: function on(type, selector, fn) { + // selector 不为空,证明绑定事件要加代理 + if (!fn) { + fn = selector; + selector = null; + } + + // type 是否有多个 + var types = []; + types = type.split(/\s+/); + + return this.forEach(function (elem) { + types.forEach(function (type) { + if (!type) { + return; + } + + // 记录下,方便后面解绑 + eventList.push({ + elem: elem, + type: type, + fn: fn + }); + + if (!selector) { + // 无代理 + elem.addEventListener(type, fn); + return; + } + + // 有代理 + elem.addEventListener(type, function (e) { + var target = e.target; + if (target.matches(selector)) { + fn.call(target, e); + } + }); + }); + }); + }, + + // 取消事件绑定 + off: function off(type, fn) { + return this.forEach(function (elem) { + elem.removeEventListener(type, fn); + }); + }, + + // 获取/设置 属性 + attr: function attr(key, val) { + if (val == null) { + // 获取值 + return this[0].getAttribute(key); + } else { + // 设置值 + return this.forEach(function (elem) { + elem.setAttribute(key, val); + }); + } + }, + + // 添加 class + addClass: function addClass(className) { + if (!className) { + return this; + } + return this.forEach(function (elem) { + var arr = void 0; + if (elem.className) { + // 解析当前 className 转换为数组 + arr = elem.className.split(/\s/); + arr = arr.filter(function (item) { + return !!item.trim(); + }); + // 添加 class + if (arr.indexOf(className) < 0) { + arr.push(className); + } + // 修改 elem.class + elem.className = arr.join(' '); + } else { + elem.className = className; + } + }); + }, + + // 删除 class + removeClass: function removeClass(className) { + if (!className) { + return this; + } + return this.forEach(function (elem) { + var arr = void 0; + if (elem.className) { + // 解析当前 className 转换为数组 + arr = elem.className.split(/\s/); + arr = arr.filter(function (item) { + item = item.trim(); + // 删除 class + if (!item || item === className) { + return false; + } + return true; + }); + // 修改 elem.class + elem.className = arr.join(' '); + } + }); + }, + + // 修改 css + css: function css(key, val) { + var currentStyle = key + ':' + val + ';'; + return this.forEach(function (elem) { + var style = (elem.getAttribute('style') || '').trim(); + var styleArr = void 0, + resultArr = []; + if (style) { + // 将 style 按照 ; 拆分为数组 + styleArr = style.split(';'); + styleArr.forEach(function (item) { + // 对每项样式,按照 : 拆分为 key 和 value + var arr = item.split(':').map(function (i) { + return i.trim(); + }); + if (arr.length === 2) { + resultArr.push(arr[0] + ':' + arr[1]); + } + }); + // 替换或者新增 + resultArr = resultArr.map(function (item) { + if (item.indexOf(key) === 0) { + return currentStyle; + } else { + return item; + } + }); + if (resultArr.indexOf(currentStyle) < 0) { + resultArr.push(currentStyle); + } + // 结果 + elem.setAttribute('style', resultArr.join('; ')); + } else { + // style 无值 + elem.setAttribute('style', currentStyle); + } + }); + }, + + // 显示 + show: function show() { + return this.css('display', 'block'); + }, + + // 隐藏 + hide: function hide() { + return this.css('display', 'none'); + }, + + // 获取子节点 + children: function children() { + var elem = this[0]; + if (!elem) { + return null; + } + + return $(elem.children); + }, + + // 获取子节点(包括文本节点) + childNodes: function childNodes() { + var elem = this[0]; + if (!elem) { + return null; + } + + return $(elem.childNodes); + }, + + // 增加子节点 + append: function append($children) { + return this.forEach(function (elem) { + $children.forEach(function (child) { + elem.appendChild(child); + }); + }); + }, + + // 移除当前节点 + remove: function remove() { + return this.forEach(function (elem) { + if (elem.remove) { + elem.remove(); + } else { + var parent = elem.parentElement; + parent && parent.removeChild(elem); + } + }); + }, + + // 是否包含某个子节点 + isContain: function isContain($child) { + var elem = this[0]; + var child = $child[0]; + return elem.contains(child); + }, + + // 尺寸数据 + getSizeData: function getSizeData() { + var elem = this[0]; + return elem.getBoundingClientRect(); // 可得到 bottom height left right top width 的数据 + }, + + // 封装 nodeName + getNodeName: function getNodeName() { + var elem = this[0]; + return elem.nodeName; + }, + + // 从当前元素查找 + find: function find(selector) { + var elem = this[0]; + return $(elem.querySelectorAll(selector)); + }, + + // 获取当前元素的 text + text: function text(val) { + if (!val) { + // 获取 text + var elem = this[0]; + return elem.innerHTML.replace(/<.*?>/g, function () { + return ''; + }); + } else { + // 设置 text + return this.forEach(function (elem) { + elem.innerHTML = val; + }); + } + }, + + // 获取 html + html: function html(value) { + var elem = this[0]; + if (value == null) { + return elem.innerHTML; + } else { + elem.innerHTML = value; + return this; + } + }, + + // 获取 value + val: function val() { + var elem = this[0]; + return elem.value.trim(); + }, + + // focus + focus: function focus() { + return this.forEach(function (elem) { + elem.focus(); + }); + }, + + // parent + parent: function parent() { + var elem = this[0]; + return $(elem.parentElement); + }, + + // parentUntil 找到符合 selector 的父节点 + parentUntil: function parentUntil(selector, _currentElem) { + var results = document.querySelectorAll(selector); + var length = results.length; + if (!length) { + // 传入的 selector 无效 + return null; + } + + var elem = _currentElem || this[0]; + if (elem.nodeName === 'BODY') { + return null; + } + + var parent = elem.parentElement; + var i = void 0; + for (i = 0; i < length; i++) { + if (parent === results[i]) { + // 找到,并返回 + return $(parent); + } + } + + // 继续查找 + return this.parentUntil(selector, parent); + }, + + // 判断两个 elem 是否相等 + equal: function equal($elem) { + if ($elem.nodeType === 1) { + return this[0] === $elem; + } else { + return this[0] === $elem[0]; + } + }, + + // 将该元素插入到某个元素前面 + insertBefore: function insertBefore(selector) { + var $referenceNode = $(selector); + var referenceNode = $referenceNode[0]; + if (!referenceNode) { + return this; + } + return this.forEach(function (elem) { + var parent = referenceNode.parentNode; + parent.insertBefore(elem, referenceNode); + }); + }, + + // 将该元素插入到某个元素后面 + insertAfter: function insertAfter(selector) { + var $referenceNode = $(selector); + var referenceNode = $referenceNode[0]; + if (!referenceNode) { + return this; + } + return this.forEach(function (elem) { + var parent = referenceNode.parentNode; + if (parent.lastChild === referenceNode) { + // 最后一个元素 + parent.appendChild(elem); + } else { + // 不是最后一个元素 + parent.insertBefore(elem, referenceNode.nextSibling); + } + }); + } +}; + +// new 一个对象 +function $(selector) { + return new DomElement(selector); +} + +// 解绑所有事件,用于销毁编辑器 +$.offAll = function () { + eventList.forEach(function (item) { + var elem = item.elem; + var type = item.type; + var fn = item.fn; + // 解绑 + elem.removeEventListener(type, fn); + }); +}; + +/* + 配置信息 +*/ + +var config = { + + // 默认菜单配置 + menus: ['head', 'bold', 'fontSize', 'fontName', 'italic', 'underline', 'strikeThrough', 'foreColor', 'backColor', 'link', 'list', 'justify', 'quote', 'emoticon', 'image', 'table', 'video', 'code', 'undo', 'redo'], + + fontNames: ['宋体', '微软雅黑', 'Arial', 'Tahoma', 'Verdana'], + + colors: ['#000000', '#eeece0', '#1c487f', '#4d80bf', '#c24f4a', '#8baa4a', '#7b5ba1', '#46acc8', '#f9963b', '#ffffff'], + + // // 语言配置 + // lang: { + // '设置标题': 'title', + // '正文': 'p', + // '链接文字': 'link text', + // '链接': 'link', + // '插入': 'insert', + // '创建': 'init' + // }, + + // 表情 + emotions: [{ + // tab 的标题 + title: '默认', + // type -> 'emoji' / 'image' + type: 'image', + // content -> 数组 + content: [{ + alt: '[坏笑]', + src: 'http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/50/pcmoren_huaixiao_org.png' + }, { + alt: '[舔屏]', + src: 'http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/40/pcmoren_tian_org.png' + }, { + alt: '[污]', + src: 'http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/3c/pcmoren_wu_org.png' + }] + }, { + // tab 的标题 + title: '新浪', + // type -> 'emoji' / 'image' + type: 'image', + // content -> 数组 + content: [{ + src: 'http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/7a/shenshou_thumb.gif', + alt: '[草泥马]' + }, { + src: 'http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/60/horse2_thumb.gif', + alt: '[神马]' + }, { + src: 'http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/bc/fuyun_thumb.gif', + alt: '[浮云]' + }] + }, { + // tab 的标题 + title: 'emoji', + // type -> 'emoji' / 'image' + type: 'emoji', + // content -> 数组 + content: '😀 😃 😄 😁 😆 😅 😂 😊 😇 🙂 🙃 😉 😓 😪 😴 🙄 🤔 😬 🤐'.split(/\s/) + }], + + // 编辑区域的 z-index + zIndex: 10000, + + // 是否开启 debug 模式(debug 模式下错误会 throw error 形式抛出) + debug: false, + + // 插入链接时候的格式校验 + linkCheck: function linkCheck(text, link) { + // text 是插入的文字 + // link 是插入的链接 + return true; // 返回 true 即表示成功 + // return '校验失败' // 返回字符串即表示失败的提示信息 + }, + + // 插入网络图片的校验 + linkImgCheck: function linkImgCheck(src) { + // src 即图片的地址 + return true; // 返回 true 即表示成功 + // return '校验失败' // 返回字符串即表示失败的提示信息 + }, + + // 粘贴过滤样式,默认开启 + pasteFilterStyle: true, + + // 粘贴内容时,忽略图片。默认关闭 + pasteIgnoreImg: false, + + // 对粘贴的文字进行自定义处理,返回处理后的结果。编辑器会将处理后的结果粘贴到编辑区域中。 + // IE 暂时不支持 + pasteTextHandle: function pasteTextHandle(content) { + // content 即粘贴过来的内容(html 或 纯文本),可进行自定义处理然后返回 + return content; + }, + + // onchange 事件 + // onchange: function (html) { + // // html 即变化之后的内容 + // console.log(html) + // }, + + // 是否显示添加网络图片的 tab + showLinkImg: true, + + // 插入网络图片的回调 + linkImgCallback: function linkImgCallback(url) { + // console.log(url) // url 即插入图片的地址 + }, + + // 默认上传图片 max size: 5M + uploadImgMaxSize: 5 * 1024 * 1024, + + // 配置一次最多上传几个图片 + // uploadImgMaxLength: 5, + + // 上传图片,是否显示 base64 格式 + uploadImgShowBase64: false, + + // 上传图片,server 地址(如果有值,则 base64 格式的配置则失效) + // uploadImgServer: '/upload', + + // 自定义配置 filename + uploadFileName: '', + + // 上传图片的自定义参数 + uploadImgParams: { + // token: 'abcdef12345' + }, + + // 上传图片的自定义header + uploadImgHeaders: { + // 'Accept': 'text/x-json' + }, + + // 配置 XHR withCredentials + withCredentials: false, + + // 自定义上传图片超时时间 ms + uploadImgTimeout: 10000, + + // 上传图片 hook + uploadImgHooks: { + // customInsert: function (insertLinkImg, result, editor) { + // console.log('customInsert') + // // 图片上传并返回结果,自定义插入图片的事件,而不是编辑器自动插入图片 + // const data = result.data1 || [] + // data.forEach(link => { + // insertLinkImg(link) + // }) + // }, + before: function before(xhr, editor, files) { + // 图片上传之前触发 + + // 如果返回的结果是 {prevent: true, msg: 'xxxx'} 则表示用户放弃上传 + // return { + // prevent: true, + // msg: '放弃上传' + // } + }, + success: function success(xhr, editor, result) { + // 图片上传并返回结果,图片插入成功之后触发 + }, + fail: function fail(xhr, editor, result) { + // 图片上传并返回结果,但图片插入错误时触发 + }, + error: function error(xhr, editor) { + // 图片上传出错时触发 + }, + timeout: function timeout(xhr, editor) { + // 图片上传超时时触发 + } + }, + + // 是否上传七牛云,默认为 false + qiniu: false + +}; + +/* + 工具 +*/ + +// 和 UA 相关的属性 +var UA = { + _ua: navigator.userAgent, + + // 是否 webkit + isWebkit: function isWebkit() { + var reg = /webkit/i; + return reg.test(this._ua); + }, + + // 是否 IE + isIE: function isIE() { + return 'ActiveXObject' in window; + } +}; + +// 遍历对象 +function objForEach(obj, fn) { + var key = void 0, + result = void 0; + for (key in obj) { + if (obj.hasOwnProperty(key)) { + result = fn.call(obj, key, obj[key]); + if (result === false) { + break; + } + } + } +} + +// 遍历类数组 +function arrForEach(fakeArr, fn) { + var i = void 0, + item = void 0, + result = void 0; + var length = fakeArr.length || 0; + for (i = 0; i < length; i++) { + item = fakeArr[i]; + result = fn.call(fakeArr, item, i); + if (result === false) { + break; + } + } +} + +// 获取随机数 +function getRandom(prefix) { + return prefix + Math.random().toString().slice(2); +} + +// 替换 html 特殊字符 +function replaceHtmlSymbol(html) { + if (html == null) { + return ''; + } + return html.replace(//gm, '>').replace(/"/gm, '"').replace(/(\r\n|\r|\n)/g, '
    '); +} + +// 返回百分比的格式 + + +// 判断是不是 function +function isFunction(fn) { + return typeof fn === 'function'; +} + +/* + bold-menu +*/ +// 构造函数 +function Bold(editor) { + this.editor = editor; + this.$elem = $('
    \n \n
    '); + this.type = 'click'; + + // 当前是否 active 状态 + this._active = false; +} + +// 原型 +Bold.prototype = { + constructor: Bold, + + // 点击事件 + onClick: function onClick(e) { + // 点击菜单将触发这里 + + var editor = this.editor; + var isSeleEmpty = editor.selection.isSelectionEmpty(); + + if (isSeleEmpty) { + // 选区是空的,插入并选中一个“空白” + editor.selection.createEmptyRange(); + } + + // 执行 bold 命令 + editor.cmd.do('bold'); + + if (isSeleEmpty) { + // 需要将选取折叠起来 + editor.selection.collapseRange(); + editor.selection.restoreSelection(); + } + }, + + // 试图改变 active 状态 + tryChangeActive: function tryChangeActive(e) { + var editor = this.editor; + var $elem = this.$elem; + if (editor.cmd.queryCommandState('bold')) { + this._active = true; + $elem.addClass('w-e-active'); + } else { + this._active = false; + $elem.removeClass('w-e-active'); + } + } +}; + +/* + 替换多语言 + */ + +var replaceLang = function (editor, str) { + var langArgs = editor.config.langArgs || []; + var result = str; + + langArgs.forEach(function (item) { + var reg = item.reg; + var val = item.val; + + if (reg.test(result)) { + result = result.replace(reg, function () { + return val; + }); + } + }); + + return result; +}; + +/* + droplist +*/ +var _emptyFn = function _emptyFn() {}; + +// 构造函数 +function DropList(menu, opt) { + var _this = this; + + // droplist 所依附的菜单 + var editor = menu.editor; + this.menu = menu; + this.opt = opt; + // 容器 + var $container = $('
    '); + + // 标题 + var $title = opt.$title; + var titleHtml = void 0; + if ($title) { + // 替换多语言 + titleHtml = $title.html(); + titleHtml = replaceLang(editor, titleHtml); + $title.html(titleHtml); + + $title.addClass('w-e-dp-title'); + $container.append($title); + } + + var list = opt.list || []; + var type = opt.type || 'list'; // 'list' 列表形式(如“标题”菜单) / 'inline-block' 块状形式(如“颜色”菜单) + var onClick = opt.onClick || _emptyFn; + + // 加入 DOM 并绑定事件 + var $list = $('
      '); + $container.append($list); + list.forEach(function (item) { + var $elem = item.$elem; + + // 替换多语言 + var elemHtml = $elem.html(); + elemHtml = replaceLang(editor, elemHtml); + $elem.html(elemHtml); + + var value = item.value; + var $li = $('
    • '); + if ($elem) { + $li.append($elem); + $list.append($li); + $li.on('click', function (e) { + onClick(value); + + // 隐藏 + _this.hideTimeoutId = setTimeout(function () { + _this.hide(); + }, 0); + }); + } + }); + + // 绑定隐藏事件 + $container.on('mouseleave', function (e) { + _this.hideTimeoutId = setTimeout(function () { + _this.hide(); + }, 0); + }); + + // 记录属性 + this.$container = $container; + + // 基本属性 + this._rendered = false; + this._show = false; +} + +// 原型 +DropList.prototype = { + constructor: DropList, + + // 显示(插入DOM) + show: function show() { + if (this.hideTimeoutId) { + // 清除之前的定时隐藏 + clearTimeout(this.hideTimeoutId); + } + + var menu = this.menu; + var $menuELem = menu.$elem; + var $container = this.$container; + if (this._show) { + return; + } + if (this._rendered) { + // 显示 + $container.show(); + } else { + // 加入 DOM 之前先定位位置 + var menuHeight = $menuELem.getSizeData().height || 0; + var width = this.opt.width || 100; // 默认为 100 + $container.css('margin-top', menuHeight + 'px').css('width', width + 'px'); + + // 加入到 DOM + $menuELem.append($container); + this._rendered = true; + } + + // 修改属性 + this._show = true; + }, + + // 隐藏(移除DOM) + hide: function hide() { + if (this.showTimeoutId) { + // 清除之前的定时显示 + clearTimeout(this.showTimeoutId); + } + + var $container = this.$container; + if (!this._show) { + return; + } + // 隐藏并需改属性 + $container.hide(); + this._show = false; + } +}; + +/* + menu - header +*/ +// 构造函数 +function Head(editor) { + var _this = this; + + this.editor = editor; + this.$elem = $('
      '); + this.type = 'droplist'; + + // 当前是否 active 状态 + this._active = false; + + // 初始化 droplist + this.droplist = new DropList(this, { + width: 100, + $title: $('

      设置标题

      '), + type: 'list', // droplist 以列表形式展示 + list: [{ $elem: $('

      H1

      '), value: '

      ' }, { $elem: $('

      H2

      '), value: '

      ' }, { $elem: $('

      H3

      '), value: '

      ' }, { $elem: $('

      H4

      '), value: '

      ' }, { $elem: $('

      H5
      '), value: '
      ' }, { $elem: $('

      正文

      '), value: '

      ' }], + onClick: function onClick(value) { + // 注意 this 是指向当前的 Head 对象 + _this._command(value); + } + }); +} + +// 原型 +Head.prototype = { + constructor: Head, + + // 执行命令 + _command: function _command(value) { + var editor = this.editor; + + var $selectionElem = editor.selection.getSelectionContainerElem(); + if (editor.$textElem.equal($selectionElem)) { + // 不能选中多行来设置标题,否则会出现问题 + // 例如选中的是

      xxx

      yyy

      来设置标题,设置之后会成为

      xxx
      yyy

      不符合预期 + return; + } + + editor.cmd.do('formatBlock', value); + }, + + // 试图改变 active 状态 + tryChangeActive: function tryChangeActive(e) { + var editor = this.editor; + var $elem = this.$elem; + var reg = /^h/i; + var cmdValue = editor.cmd.queryCommandValue('formatBlock'); + if (reg.test(cmdValue)) { + this._active = true; + $elem.addClass('w-e-active'); + } else { + this._active = false; + $elem.removeClass('w-e-active'); + } + } +}; + +/* + menu - fontSize +*/ + +// 构造函数 +function FontSize(editor) { + var _this = this; + + this.editor = editor; + this.$elem = $('
      '); + this.type = 'droplist'; + + // 当前是否 active 状态 + this._active = false; + + // 初始化 droplist + this.droplist = new DropList(this, { + width: 160, + $title: $('

      字号

      '), + type: 'list', // droplist 以列表形式展示 + list: [{ $elem: $('x-small'), value: '1' }, { $elem: $('small'), value: '2' }, { $elem: $('normal'), value: '3' }, { $elem: $('large'), value: '4' }, { $elem: $('x-large'), value: '5' }, { $elem: $('xx-large'), value: '6' }], + onClick: function onClick(value) { + // 注意 this 是指向当前的 FontSize 对象 + _this._command(value); + } + }); +} + +// 原型 +FontSize.prototype = { + constructor: FontSize, + + // 执行命令 + _command: function _command(value) { + var editor = this.editor; + editor.cmd.do('fontSize', value); + } +}; + +/* + menu - fontName +*/ + +// 构造函数 +function FontName(editor) { + var _this = this; + + this.editor = editor; + this.$elem = $('
      '); + this.type = 'droplist'; + + // 当前是否 active 状态 + this._active = false; + + // 获取配置的字体 + var config = editor.config; + var fontNames = config.fontNames || []; + + // 初始化 droplist + this.droplist = new DropList(this, { + width: 100, + $title: $('

      字体

      '), + type: 'list', // droplist 以列表形式展示 + list: fontNames.map(function (fontName) { + return { $elem: $('' + fontName + ''), value: fontName }; + }), + onClick: function onClick(value) { + // 注意 this 是指向当前的 FontName 对象 + _this._command(value); + } + }); +} + +// 原型 +FontName.prototype = { + constructor: FontName, + + _command: function _command(value) { + var editor = this.editor; + editor.cmd.do('fontName', value); + } +}; + +/* + panel +*/ + +var emptyFn = function emptyFn() {}; + +// 记录已经显示 panel 的菜单 +var _isCreatedPanelMenus = []; + +// 构造函数 +function Panel(menu, opt) { + this.menu = menu; + this.opt = opt; +} + +// 原型 +Panel.prototype = { + constructor: Panel, + + // 显示(插入DOM) + show: function show() { + var _this = this; + + var menu = this.menu; + if (_isCreatedPanelMenus.indexOf(menu) >= 0) { + // 该菜单已经创建了 panel 不能再创建 + return; + } + + var editor = menu.editor; + var $body = $('body'); + var $textContainerElem = editor.$textContainerElem; + var opt = this.opt; + + // panel 的容器 + var $container = $('
      '); + var width = opt.width || 300; // 默认 300px + $container.css('width', width + 'px').css('margin-left', (0 - width) / 2 + 'px'); + + // 添加关闭按钮 + var $closeBtn = $(''); + $container.append($closeBtn); + $closeBtn.on('click', function () { + _this.hide(); + }); + + // 准备 tabs 容器 + var $tabTitleContainer = $('
        '); + var $tabContentContainer = $('
        '); + $container.append($tabTitleContainer).append($tabContentContainer); + + // 设置高度 + var height = opt.height; + if (height) { + $tabContentContainer.css('height', height + 'px').css('overflow-y', 'auto'); + } + + // tabs + var tabs = opt.tabs || []; + var tabTitleArr = []; + var tabContentArr = []; + tabs.forEach(function (tab, tabIndex) { + if (!tab) { + return; + } + var title = tab.title || ''; + var tpl = tab.tpl || ''; + + // 替换多语言 + title = replaceLang(editor, title); + tpl = replaceLang(editor, tpl); + + // 添加到 DOM + var $title = $('
      • ' + title + '
      • '); + $tabTitleContainer.append($title); + var $content = $(tpl); + $tabContentContainer.append($content); + + // 记录到内存 + $title._index = tabIndex; + tabTitleArr.push($title); + tabContentArr.push($content); + + // 设置 active 项 + if (tabIndex === 0) { + $title._active = true; + $title.addClass('w-e-active'); + } else { + $content.hide(); + } + + // 绑定 tab 的事件 + $title.on('click', function (e) { + if ($title._active) { + return; + } + // 隐藏所有的 tab + tabTitleArr.forEach(function ($title) { + $title._active = false; + $title.removeClass('w-e-active'); + }); + tabContentArr.forEach(function ($content) { + $content.hide(); + }); + + // 显示当前的 tab + $title._active = true; + $title.addClass('w-e-active'); + $content.show(); + }); + }); + + // 绑定关闭事件 + $container.on('click', function (e) { + // 点击时阻止冒泡 + e.stopPropagation(); + }); + $body.on('click', function (e) { + _this.hide(); + }); + + // 添加到 DOM + $textContainerElem.append($container); + + // 绑定 opt 的事件,只有添加到 DOM 之后才能绑定成功 + tabs.forEach(function (tab, index) { + if (!tab) { + return; + } + var events = tab.events || []; + events.forEach(function (event) { + var selector = event.selector; + var type = event.type; + var fn = event.fn || emptyFn; + var $content = tabContentArr[index]; + $content.find(selector).on(type, function (e) { + e.stopPropagation(); + var needToHide = fn(e); + // 执行完事件之后,是否要关闭 panel + if (needToHide) { + _this.hide(); + } + }); + }); + }); + + // focus 第一个 elem + var $inputs = $container.find('input[type=text],textarea'); + if ($inputs.length) { + $inputs.get(0).focus(); + } + + // 添加到属性 + this.$container = $container; + + // 隐藏其他 panel + this._hideOtherPanels(); + // 记录该 menu 已经创建了 panel + _isCreatedPanelMenus.push(menu); + }, + + // 隐藏(移除DOM) + hide: function hide() { + var menu = this.menu; + var $container = this.$container; + if ($container) { + $container.remove(); + } + + // 将该 menu 记录中移除 + _isCreatedPanelMenus = _isCreatedPanelMenus.filter(function (item) { + if (item === menu) { + return false; + } else { + return true; + } + }); + }, + + // 一个 panel 展示时,隐藏其他 panel + _hideOtherPanels: function _hideOtherPanels() { + if (!_isCreatedPanelMenus.length) { + return; + } + _isCreatedPanelMenus.forEach(function (menu) { + var panel = menu.panel || {}; + if (panel.hide) { + panel.hide(); + } + }); + } +}; + +/* + menu - link +*/ +// 构造函数 +function Link(editor) { + this.editor = editor; + this.$elem = $('
        '); + this.type = 'panel'; + + // 当前是否 active 状态 + this._active = false; +} + +// 原型 +Link.prototype = { + constructor: Link, + + // 点击事件 + onClick: function onClick(e) { + var editor = this.editor; + var $linkelem = void 0; + + if (this._active) { + // 当前选区在链接里面 + $linkelem = editor.selection.getSelectionContainerElem(); + if (!$linkelem) { + return; + } + // 将该元素都包含在选取之内,以便后面整体替换 + editor.selection.createRangeByElem($linkelem); + editor.selection.restoreSelection(); + // 显示 panel + this._createPanel($linkelem.text(), $linkelem.attr('href')); + } else { + // 当前选区不在链接里面 + if (editor.selection.isSelectionEmpty()) { + // 选区是空的,未选中内容 + this._createPanel('', ''); + } else { + // 选中内容了 + this._createPanel(editor.selection.getSelectionText(), ''); + } + } + }, + + // 创建 panel + _createPanel: function _createPanel(text, link) { + var _this = this; + + // panel 中需要用到的id + var inputLinkId = getRandom('input-link'); + var inputTextId = getRandom('input-text'); + var btnOkId = getRandom('btn-ok'); + var btnDelId = getRandom('btn-del'); + + // 是否显示“删除链接” + var delBtnDisplay = this._active ? 'inline-block' : 'none'; + + // 初始化并显示 panel + var panel = new Panel(this, { + width: 300, + // panel 中可包含多个 tab + tabs: [{ + // tab 的标题 + title: '链接', + // 模板 + tpl: '
        \n \n \n
        \n \n \n
        \n
        ', + // 事件绑定 + events: [ + // 插入链接 + { + selector: '#' + btnOkId, + type: 'click', + fn: function fn() { + // 执行插入链接 + var $link = $('#' + inputLinkId); + var $text = $('#' + inputTextId); + var link = $link.val(); + var text = $text.val(); + _this._insertLink(text, link); + + // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 + return true; + } + }, + // 删除链接 + { + selector: '#' + btnDelId, + type: 'click', + fn: function fn() { + // 执行删除链接 + _this._delLink(); + + // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 + return true; + } + }] + } // tab end + ] // tabs end + }); + + // 显示 panel + panel.show(); + + // 记录属性 + this.panel = panel; + }, + + // 删除当前链接 + _delLink: function _delLink() { + if (!this._active) { + return; + } + var editor = this.editor; + var $selectionELem = editor.selection.getSelectionContainerElem(); + if (!$selectionELem) { + return; + } + var selectionText = editor.selection.getSelectionText(); + editor.cmd.do('insertHTML', '' + selectionText + ''); + }, + + // 插入链接 + _insertLink: function _insertLink(text, link) { + var editor = this.editor; + var config = editor.config; + var linkCheck = config.linkCheck; + var checkResult = true; // 默认为 true + if (linkCheck && typeof linkCheck === 'function') { + checkResult = linkCheck(text, link); + } + if (checkResult === true) { + editor.cmd.do('insertHTML', '' + text + ''); + } else { + alert(checkResult); + } + }, + + // 试图改变 active 状态 + tryChangeActive: function tryChangeActive(e) { + var editor = this.editor; + var $elem = this.$elem; + var $selectionELem = editor.selection.getSelectionContainerElem(); + if (!$selectionELem) { + return; + } + if ($selectionELem.getNodeName() === 'A') { + this._active = true; + $elem.addClass('w-e-active'); + } else { + this._active = false; + $elem.removeClass('w-e-active'); + } + } +}; + +/* + italic-menu +*/ +// 构造函数 +function Italic(editor) { + this.editor = editor; + this.$elem = $('
        \n \n
        '); + this.type = 'click'; + + // 当前是否 active 状态 + this._active = false; +} + +// 原型 +Italic.prototype = { + constructor: Italic, + + // 点击事件 + onClick: function onClick(e) { + // 点击菜单将触发这里 + + var editor = this.editor; + var isSeleEmpty = editor.selection.isSelectionEmpty(); + + if (isSeleEmpty) { + // 选区是空的,插入并选中一个“空白” + editor.selection.createEmptyRange(); + } + + // 执行 italic 命令 + editor.cmd.do('italic'); + + if (isSeleEmpty) { + // 需要将选取折叠起来 + editor.selection.collapseRange(); + editor.selection.restoreSelection(); + } + }, + + // 试图改变 active 状态 + tryChangeActive: function tryChangeActive(e) { + var editor = this.editor; + var $elem = this.$elem; + if (editor.cmd.queryCommandState('italic')) { + this._active = true; + $elem.addClass('w-e-active'); + } else { + this._active = false; + $elem.removeClass('w-e-active'); + } + } +}; + +/* + redo-menu +*/ +// 构造函数 +function Redo(editor) { + this.editor = editor; + this.$elem = $('
        \n \n
        '); + this.type = 'click'; + + // 当前是否 active 状态 + this._active = false; +} + +// 原型 +Redo.prototype = { + constructor: Redo, + + // 点击事件 + onClick: function onClick(e) { + // 点击菜单将触发这里 + + var editor = this.editor; + + // 执行 redo 命令 + editor.cmd.do('redo'); + } +}; + +/* + strikeThrough-menu +*/ +// 构造函数 +function StrikeThrough(editor) { + this.editor = editor; + this.$elem = $('
        \n \n
        '); + this.type = 'click'; + + // 当前是否 active 状态 + this._active = false; +} + +// 原型 +StrikeThrough.prototype = { + constructor: StrikeThrough, + + // 点击事件 + onClick: function onClick(e) { + // 点击菜单将触发这里 + + var editor = this.editor; + var isSeleEmpty = editor.selection.isSelectionEmpty(); + + if (isSeleEmpty) { + // 选区是空的,插入并选中一个“空白” + editor.selection.createEmptyRange(); + } + + // 执行 strikeThrough 命令 + editor.cmd.do('strikeThrough'); + + if (isSeleEmpty) { + // 需要将选取折叠起来 + editor.selection.collapseRange(); + editor.selection.restoreSelection(); + } + }, + + // 试图改变 active 状态 + tryChangeActive: function tryChangeActive(e) { + var editor = this.editor; + var $elem = this.$elem; + if (editor.cmd.queryCommandState('strikeThrough')) { + this._active = true; + $elem.addClass('w-e-active'); + } else { + this._active = false; + $elem.removeClass('w-e-active'); + } + } +}; + +/* + underline-menu +*/ +// 构造函数 +function Underline(editor) { + this.editor = editor; + this.$elem = $('
        \n \n
        '); + this.type = 'click'; + + // 当前是否 active 状态 + this._active = false; +} + +// 原型 +Underline.prototype = { + constructor: Underline, + + // 点击事件 + onClick: function onClick(e) { + // 点击菜单将触发这里 + + var editor = this.editor; + var isSeleEmpty = editor.selection.isSelectionEmpty(); + + if (isSeleEmpty) { + // 选区是空的,插入并选中一个“空白” + editor.selection.createEmptyRange(); + } + + // 执行 underline 命令 + editor.cmd.do('underline'); + + if (isSeleEmpty) { + // 需要将选取折叠起来 + editor.selection.collapseRange(); + editor.selection.restoreSelection(); + } + }, + + // 试图改变 active 状态 + tryChangeActive: function tryChangeActive(e) { + var editor = this.editor; + var $elem = this.$elem; + if (editor.cmd.queryCommandState('underline')) { + this._active = true; + $elem.addClass('w-e-active'); + } else { + this._active = false; + $elem.removeClass('w-e-active'); + } + } +}; + +/* + undo-menu +*/ +// 构造函数 +function Undo(editor) { + this.editor = editor; + this.$elem = $('
        \n \n
        '); + this.type = 'click'; + + // 当前是否 active 状态 + this._active = false; +} + +// 原型 +Undo.prototype = { + constructor: Undo, + + // 点击事件 + onClick: function onClick(e) { + // 点击菜单将触发这里 + + var editor = this.editor; + + // 执行 undo 命令 + editor.cmd.do('undo'); + } +}; + +/* + menu - list +*/ +// 构造函数 +function List(editor) { + var _this = this; + + this.editor = editor; + this.$elem = $('
        '); + this.type = 'droplist'; + + // 当前是否 active 状态 + this._active = false; + + // 初始化 droplist + this.droplist = new DropList(this, { + width: 120, + $title: $('

        设置列表

        '), + type: 'list', // droplist 以列表形式展示 + list: [{ $elem: $(' 有序列表'), value: 'insertOrderedList' }, { $elem: $(' 无序列表'), value: 'insertUnorderedList' }], + onClick: function onClick(value) { + // 注意 this 是指向当前的 List 对象 + _this._command(value); + } + }); +} + +// 原型 +List.prototype = { + constructor: List, + + // 执行命令 + _command: function _command(value) { + var editor = this.editor; + var $textElem = editor.$textElem; + editor.selection.restoreSelection(); + if (editor.cmd.queryCommandState(value)) { + return; + } + editor.cmd.do(value); + + // 验证列表是否被包裹在

        之内 + var $selectionElem = editor.selection.getSelectionContainerElem(); + if ($selectionElem.getNodeName() === 'LI') { + $selectionElem = $selectionElem.parent(); + } + if (/^ol|ul$/i.test($selectionElem.getNodeName()) === false) { + return; + } + if ($selectionElem.equal($textElem)) { + // 证明是顶级标签,没有被

        包裹 + return; + } + var $parent = $selectionElem.parent(); + if ($parent.equal($textElem)) { + // $parent 是顶级标签,不能删除 + return; + } + + $selectionElem.insertAfter($parent); + $parent.remove(); + }, + + // 试图改变 active 状态 + tryChangeActive: function tryChangeActive(e) { + var editor = this.editor; + var $elem = this.$elem; + if (editor.cmd.queryCommandState('insertUnOrderedList') || editor.cmd.queryCommandState('insertOrderedList')) { + this._active = true; + $elem.addClass('w-e-active'); + } else { + this._active = false; + $elem.removeClass('w-e-active'); + } + } +}; + +/* + menu - justify +*/ +// 构造函数 +function Justify(editor) { + var _this = this; + + this.editor = editor; + this.$elem = $('

        '); + this.type = 'droplist'; + + // 当前是否 active 状态 + this._active = false; + + // 初始化 droplist + this.droplist = new DropList(this, { + width: 100, + $title: $('

        对齐方式

        '), + type: 'list', // droplist 以列表形式展示 + list: [{ $elem: $(' 靠左'), value: 'justifyLeft' }, { $elem: $(' 居中'), value: 'justifyCenter' }, { $elem: $(' 靠右'), value: 'justifyRight' }], + onClick: function onClick(value) { + // 注意 this 是指向当前的 List 对象 + _this._command(value); + } + }); +} + +// 原型 +Justify.prototype = { + constructor: Justify, + + // 执行命令 + _command: function _command(value) { + var editor = this.editor; + editor.cmd.do(value); + } +}; + +/* + menu - Forecolor +*/ +// 构造函数 +function ForeColor(editor) { + var _this = this; + + this.editor = editor; + this.$elem = $('
        '); + this.type = 'droplist'; + + // 获取配置的颜色 + var config = editor.config; + var colors = config.colors || []; + + // 当前是否 active 状态 + this._active = false; + + // 初始化 droplist + this.droplist = new DropList(this, { + width: 120, + $title: $('

        文字颜色

        '), + type: 'inline-block', // droplist 内容以 block 形式展示 + list: colors.map(function (color) { + return { $elem: $(''), value: color }; + }), + onClick: function onClick(value) { + // 注意 this 是指向当前的 ForeColor 对象 + _this._command(value); + } + }); +} + +// 原型 +ForeColor.prototype = { + constructor: ForeColor, + + // 执行命令 + _command: function _command(value) { + var editor = this.editor; + editor.cmd.do('foreColor', value); + } +}; + +/* + menu - BackColor +*/ +// 构造函数 +function BackColor(editor) { + var _this = this; + + this.editor = editor; + this.$elem = $('
        '); + this.type = 'droplist'; + + // 获取配置的颜色 + var config = editor.config; + var colors = config.colors || []; + + // 当前是否 active 状态 + this._active = false; + + // 初始化 droplist + this.droplist = new DropList(this, { + width: 120, + $title: $('

        背景色

        '), + type: 'inline-block', // droplist 内容以 block 形式展示 + list: colors.map(function (color) { + return { $elem: $(''), value: color }; + }), + onClick: function onClick(value) { + // 注意 this 是指向当前的 BackColor 对象 + _this._command(value); + } + }); +} + +// 原型 +BackColor.prototype = { + constructor: BackColor, + + // 执行命令 + _command: function _command(value) { + var editor = this.editor; + editor.cmd.do('backColor', value); + } +}; + +/* + menu - quote +*/ +// 构造函数 +function Quote(editor) { + this.editor = editor; + this.$elem = $('
        \n \n
        '); + this.type = 'click'; + + // 当前是否 active 状态 + this._active = false; +} + +// 原型 +Quote.prototype = { + constructor: Quote, + + onClick: function onClick(e) { + var editor = this.editor; + var $selectionElem = editor.selection.getSelectionContainerElem(); + var nodeName = $selectionElem.getNodeName(); + + if (!UA.isIE()) { + if (nodeName === 'BLOCKQUOTE') { + // 撤销 quote + editor.cmd.do('formatBlock', '

        '); + } else { + // 转换为 quote + editor.cmd.do('formatBlock', '

        '); + } + return; + } + + // IE 中不支持 formatBlock
        ,要用其他方式兼容 + var content = void 0, + $targetELem = void 0; + if (nodeName === 'P') { + // 将 P 转换为 quote + content = $selectionElem.text(); + $targetELem = $('
        ' + content + '
        '); + $targetELem.insertAfter($selectionElem); + $selectionElem.remove(); + return; + } + if (nodeName === 'BLOCKQUOTE') { + // 撤销 quote + content = $selectionElem.text(); + $targetELem = $('

        ' + content + '

        '); + $targetELem.insertAfter($selectionElem); + $selectionElem.remove(); + } + }, + + tryChangeActive: function tryChangeActive(e) { + var editor = this.editor; + var $elem = this.$elem; + var reg = /^BLOCKQUOTE$/i; + var cmdValue = editor.cmd.queryCommandValue('formatBlock'); + if (reg.test(cmdValue)) { + this._active = true; + $elem.addClass('w-e-active'); + } else { + this._active = false; + $elem.removeClass('w-e-active'); + } + } +}; + +/* + menu - code +*/ +// 构造函数 +function Code(editor) { + this.editor = editor; + this.$elem = $('
        \n \n
        '); + this.type = 'panel'; + + // 当前是否 active 状态 + this._active = false; +} + +// 原型 +Code.prototype = { + constructor: Code, + + onClick: function onClick(e) { + var editor = this.editor; + var $startElem = editor.selection.getSelectionStartElem(); + var $endElem = editor.selection.getSelectionEndElem(); + var isSeleEmpty = editor.selection.isSelectionEmpty(); + var selectionText = editor.selection.getSelectionText(); + var $code = void 0; + + if (!$startElem.equal($endElem)) { + // 跨元素选择,不做处理 + editor.selection.restoreSelection(); + return; + } + if (!isSeleEmpty) { + // 选取不是空,用 包裹即可 + $code = $('' + selectionText + ''); + editor.cmd.do('insertElem', $code); + editor.selection.createRangeByElem($code, false); + editor.selection.restoreSelection(); + return; + } + + // 选取是空,且没有夸元素选择,则插入
        
        +        if (this._active) {
        +            // 选中状态,将编辑内容
        +            this._createPanel($startElem.html());
        +        } else {
        +            // 未选中状态,将创建内容
        +            this._createPanel();
        +        }
        +    },
        +
        +    _createPanel: function _createPanel(value) {
        +        var _this = this;
        +
        +        // value - 要编辑的内容
        +        value = value || '';
        +        var type = !value ? 'new' : 'edit';
        +        var textId = getRandom('texxt');
        +        var btnId = getRandom('btn');
        +
        +        var panel = new Panel(this, {
        +            width: 500,
        +            // 一个 Panel 包含多个 tab
        +            tabs: [{
        +                // 标题
        +                title: '插入代码',
        +                // 模板
        +                tpl: '
        \n \n
        \n \n
        \n
        ', + // 事件绑定 + events: [ + // 插入代码 + { + selector: '#' + btnId, + type: 'click', + fn: function fn() { + var $text = $('#' + textId); + var text = $text.val() || $text.html(); + text = replaceHtmlSymbol(text); + if (type === 'new') { + // 新插入 + _this._insertCode(text); + } else { + // 编辑更新 + _this._updateCode(text); + } + + // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 + return true; + } + }] + } // first tab end + ] // tabs end + }); // new Panel end + + // 显示 panel + panel.show(); + + // 记录属性 + this.panel = panel; + }, + + // 插入代码 + _insertCode: function _insertCode(value) { + var editor = this.editor; + editor.cmd.do('insertHTML', '
        ' + value + '


        '); + }, + + // 更新代码 + _updateCode: function _updateCode(value) { + var editor = this.editor; + var $selectionELem = editor.selection.getSelectionContainerElem(); + if (!$selectionELem) { + return; + } + $selectionELem.html(value); + editor.selection.restoreSelection(); + }, + + // 试图改变 active 状态 + tryChangeActive: function tryChangeActive(e) { + var editor = this.editor; + var $elem = this.$elem; + var $selectionELem = editor.selection.getSelectionContainerElem(); + if (!$selectionELem) { + return; + } + var $parentElem = $selectionELem.parent(); + if ($selectionELem.getNodeName() === 'CODE' && $parentElem.getNodeName() === 'PRE') { + this._active = true; + $elem.addClass('w-e-active'); + } else { + this._active = false; + $elem.removeClass('w-e-active'); + } + } +}; + +/* + menu - emoticon +*/ +// 构造函数 +function Emoticon(editor) { + this.editor = editor; + this.$elem = $('
        \n \n
        '); + this.type = 'panel'; + + // 当前是否 active 状态 + this._active = false; +} + +// 原型 +Emoticon.prototype = { + constructor: Emoticon, + + onClick: function onClick() { + this._createPanel(); + }, + + _createPanel: function _createPanel() { + var _this = this; + + var editor = this.editor; + var config = editor.config; + // 获取表情配置 + var emotions = config.emotions || []; + + // 创建表情 dropPanel 的配置 + var tabConfig = []; + emotions.forEach(function (emotData) { + var emotType = emotData.type; + var content = emotData.content || []; + + // 这一组表情最终拼接出来的 html + var faceHtml = ''; + + // emoji 表情 + if (emotType === 'emoji') { + content.forEach(function (item) { + if (item) { + faceHtml += '' + item + ''; + } + }); + } + // 图片表情 + if (emotType === 'image') { + content.forEach(function (item) { + var src = item.src; + var alt = item.alt; + if (src) { + // 加一个 data-w-e 属性,点击图片的时候不再提示编辑图片 + faceHtml += '' + alt + ''; + } + }); + } + + tabConfig.push({ + title: emotData.title, + tpl: '
        ' + faceHtml + '
        ', + events: [{ + selector: 'span.w-e-item', + type: 'click', + fn: function fn(e) { + var target = e.target; + var $target = $(target); + var nodeName = $target.getNodeName(); + + var insertHtml = void 0; + if (nodeName === 'IMG') { + // 插入图片 + insertHtml = $target.parent().html(); + } else { + // 插入 emoji + insertHtml = '' + $target.html() + ''; + } + + _this._insert(insertHtml); + // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 + return true; + } + }] + }); + }); + + var panel = new Panel(this, { + width: 300, + height: 200, + // 一个 Panel 包含多个 tab + tabs: tabConfig + }); + + // 显示 panel + panel.show(); + + // 记录属性 + this.panel = panel; + }, + + // 插入表情 + _insert: function _insert(emotHtml) { + var editor = this.editor; + editor.cmd.do('insertHTML', emotHtml); + } +}; + +/* + menu - table +*/ +// 构造函数 +function Table(editor) { + this.editor = editor; + this.$elem = $('
        '); + this.type = 'panel'; + + // 当前是否 active 状态 + this._active = false; +} + +// 原型 +Table.prototype = { + constructor: Table, + + onClick: function onClick() { + if (this._active) { + // 编辑现有表格 + this._createEditPanel(); + } else { + // 插入新表格 + this._createInsertPanel(); + } + }, + + // 创建插入新表格的 panel + _createInsertPanel: function _createInsertPanel() { + var _this = this; + + // 用到的 id + var btnInsertId = getRandom('btn'); + var textRowNum = getRandom('row'); + var textColNum = getRandom('col'); + + var panel = new Panel(this, { + width: 250, + // panel 包含多个 tab + tabs: [{ + // 标题 + title: '插入表格', + // 模板 + tpl: '
        \n

        \n \u521B\u5EFA\n \n \u884C\n \n \u5217\u7684\u8868\u683C\n

        \n
        \n \n
        \n
        ', + // 事件绑定 + events: [{ + // 点击按钮,插入表格 + selector: '#' + btnInsertId, + type: 'click', + fn: function fn() { + var rowNum = parseInt($('#' + textRowNum).val()); + var colNum = parseInt($('#' + textColNum).val()); + + if (rowNum && colNum && rowNum > 0 && colNum > 0) { + // form 数据有效 + _this._insert(rowNum, colNum); + } + + // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 + return true; + } + }] + } // first tab end + ] // tabs end + }); // panel end + + // 展示 panel + panel.show(); + + // 记录属性 + this.panel = panel; + }, + + // 插入表格 + _insert: function _insert(rowNum, colNum) { + // 拼接 table 模板 + var r = void 0, + c = void 0; + var html = ''; + for (r = 0; r < rowNum; r++) { + html += ''; + if (r === 0) { + for (c = 0; c < colNum; c++) { + html += ''; + } + } else { + for (c = 0; c < colNum; c++) { + html += ''; + } + } + html += ''; + } + html += '
          


        '; + + // 执行命令 + var editor = this.editor; + editor.cmd.do('insertHTML', html); + + // 防止 firefox 下出现 resize 的控制点 + editor.cmd.do('enableObjectResizing', false); + editor.cmd.do('enableInlineTableEditing', false); + }, + + // 创建编辑表格的 panel + _createEditPanel: function _createEditPanel() { + var _this2 = this; + + // 可用的 id + var addRowBtnId = getRandom('add-row'); + var addColBtnId = getRandom('add-col'); + var delRowBtnId = getRandom('del-row'); + var delColBtnId = getRandom('del-col'); + var delTableBtnId = getRandom('del-table'); + + // 创建 panel 对象 + var panel = new Panel(this, { + width: 320, + // panel 包含多个 tab + tabs: [{ + // 标题 + title: '编辑表格', + // 模板 + tpl: '
        \n
        \n \n \n \n \n
        \n
        \n \n \n
        ', + // 事件绑定 + events: [{ + // 增加行 + selector: '#' + addRowBtnId, + type: 'click', + fn: function fn() { + _this2._addRow(); + // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 + return true; + } + }, { + // 增加列 + selector: '#' + addColBtnId, + type: 'click', + fn: function fn() { + _this2._addCol(); + // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 + return true; + } + }, { + // 删除行 + selector: '#' + delRowBtnId, + type: 'click', + fn: function fn() { + _this2._delRow(); + // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 + return true; + } + }, { + // 删除列 + selector: '#' + delColBtnId, + type: 'click', + fn: function fn() { + _this2._delCol(); + // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 + return true; + } + }, { + // 删除表格 + selector: '#' + delTableBtnId, + type: 'click', + fn: function fn() { + _this2._delTable(); + // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 + return true; + } + }] + }] + }); + // 显示 panel + panel.show(); + }, + + // 获取选中的单元格的位置信息 + _getLocationData: function _getLocationData() { + var result = {}; + var editor = this.editor; + var $selectionELem = editor.selection.getSelectionContainerElem(); + if (!$selectionELem) { + return; + } + var nodeName = $selectionELem.getNodeName(); + if (nodeName !== 'TD' && nodeName !== 'TH') { + return; + } + + // 获取 td index + var $tr = $selectionELem.parent(); + var $tds = $tr.children(); + var tdLength = $tds.length; + $tds.forEach(function (td, index) { + if (td === $selectionELem[0]) { + // 记录并跳出循环 + result.td = { + index: index, + elem: td, + length: tdLength + }; + return false; + } + }); + + // 获取 tr index + var $tbody = $tr.parent(); + var $trs = $tbody.children(); + var trLength = $trs.length; + $trs.forEach(function (tr, index) { + if (tr === $tr[0]) { + // 记录并跳出循环 + result.tr = { + index: index, + elem: tr, + length: trLength + }; + return false; + } + }); + + // 返回结果 + return result; + }, + + // 增加行 + _addRow: function _addRow() { + // 获取当前单元格的位置信息 + var locationData = this._getLocationData(); + if (!locationData) { + return; + } + var trData = locationData.tr; + var $currentTr = $(trData.elem); + var tdData = locationData.td; + var tdLength = tdData.length; + + // 拼接即将插入的字符串 + var newTr = document.createElement('tr'); + var tpl = '', + i = void 0; + for (i = 0; i < tdLength; i++) { + tpl += ' '; + } + newTr.innerHTML = tpl; + // 插入 + $(newTr).insertAfter($currentTr); + }, + + // 增加列 + _addCol: function _addCol() { + // 获取当前单元格的位置信息 + var locationData = this._getLocationData(); + if (!locationData) { + return; + } + var trData = locationData.tr; + var tdData = locationData.td; + var tdIndex = tdData.index; + var $currentTr = $(trData.elem); + var $trParent = $currentTr.parent(); + var $trs = $trParent.children(); + + // 遍历所有行 + $trs.forEach(function (tr) { + var $tr = $(tr); + var $tds = $tr.children(); + var $currentTd = $tds.get(tdIndex); + var name = $currentTd.getNodeName().toLowerCase(); + + // new 一个 td,并插入 + var newTd = document.createElement(name); + $(newTd).insertAfter($currentTd); + }); + }, + + // 删除行 + _delRow: function _delRow() { + // 获取当前单元格的位置信息 + var locationData = this._getLocationData(); + if (!locationData) { + return; + } + var trData = locationData.tr; + var $currentTr = $(trData.elem); + $currentTr.remove(); + }, + + // 删除列 + _delCol: function _delCol() { + // 获取当前单元格的位置信息 + var locationData = this._getLocationData(); + if (!locationData) { + return; + } + var trData = locationData.tr; + var tdData = locationData.td; + var tdIndex = tdData.index; + var $currentTr = $(trData.elem); + var $trParent = $currentTr.parent(); + var $trs = $trParent.children(); + + // 遍历所有行 + $trs.forEach(function (tr) { + var $tr = $(tr); + var $tds = $tr.children(); + var $currentTd = $tds.get(tdIndex); + // 删除 + $currentTd.remove(); + }); + }, + + // 删除表格 + _delTable: function _delTable() { + var editor = this.editor; + var $selectionELem = editor.selection.getSelectionContainerElem(); + if (!$selectionELem) { + return; + } + var $table = $selectionELem.parentUntil('table'); + if (!$table) { + return; + } + $table.remove(); + }, + + // 试图改变 active 状态 + tryChangeActive: function tryChangeActive(e) { + var editor = this.editor; + var $elem = this.$elem; + var $selectionELem = editor.selection.getSelectionContainerElem(); + if (!$selectionELem) { + return; + } + var nodeName = $selectionELem.getNodeName(); + if (nodeName === 'TD' || nodeName === 'TH') { + this._active = true; + $elem.addClass('w-e-active'); + } else { + this._active = false; + $elem.removeClass('w-e-active'); + } + } +}; + +/* + menu - video +*/ +// 构造函数 +function Video(editor) { + this.editor = editor; + this.$elem = $('
        '); + this.type = 'panel'; + + // 当前是否 active 状态 + this._active = false; +} + +// 原型 +Video.prototype = { + constructor: Video, + + onClick: function onClick() { + this._createPanel(); + }, + + _createPanel: function _createPanel() { + var _this = this; + + // 创建 id + var textValId = getRandom('text-val'); + var btnId = getRandom('btn'); + + // 创建 panel + var panel = new Panel(this, { + width: 350, + // 一个 panel 多个 tab + tabs: [{ + // 标题 + title: '插入视频', + // 模板 + tpl: '
        \n \n
        \n \n
        \n
        ', + // 事件绑定 + events: [{ + selector: '#' + btnId, + type: 'click', + fn: function fn() { + var $text = $('#' + textValId); + var val = $text.val().trim(); + + // 测试用视频地址 + // + + if (val) { + // 插入视频 + _this._insert(val); + } + + // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 + return true; + } + }] + } // first tab end + ] // tabs end + }); // panel end + + // 显示 panel + panel.show(); + + // 记录属性 + this.panel = panel; + }, + + // 插入视频 + _insert: function _insert(val) { + var editor = this.editor; + editor.cmd.do('insertHTML', val + '


        '); + } +}; + +/* + menu - img +*/ +// 构造函数 +function Image(editor) { + this.editor = editor; + var imgMenuId = getRandom('w-e-img'); + this.$elem = $('
        '); + editor.imgMenuId = imgMenuId; + this.type = 'panel'; + + // 当前是否 active 状态 + this._active = false; +} + +// 原型 +Image.prototype = { + constructor: Image, + + onClick: function onClick() { + var editor = this.editor; + var config = editor.config; + if (config.qiniu) { + return; + } + if (this._active) { + this._createEditPanel(); + } else { + this._createInsertPanel(); + } + }, + + _createEditPanel: function _createEditPanel() { + var editor = this.editor; + + // id + var width30 = getRandom('width-30'); + var width50 = getRandom('width-50'); + var width100 = getRandom('width-100'); + var delBtn = getRandom('del-btn'); + + // tab 配置 + var tabsConfig = [{ + title: '编辑图片', + tpl: '
        \n
        \n \u6700\u5927\u5BBD\u5EA6\uFF1A\n \n \n \n
        \n
        \n \n \n
        ', + events: [{ + selector: '#' + width30, + type: 'click', + fn: function fn() { + var $img = editor._selectedImg; + if ($img) { + $img.css('max-width', '30%'); + } + // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 + return true; + } + }, { + selector: '#' + width50, + type: 'click', + fn: function fn() { + var $img = editor._selectedImg; + if ($img) { + $img.css('max-width', '50%'); + } + // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 + return true; + } + }, { + selector: '#' + width100, + type: 'click', + fn: function fn() { + var $img = editor._selectedImg; + if ($img) { + $img.css('max-width', '100%'); + } + // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 + return true; + } + }, { + selector: '#' + delBtn, + type: 'click', + fn: function fn() { + var $img = editor._selectedImg; + if ($img) { + $img.remove(); + } + // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 + return true; + } + }] + }]; + + // 创建 panel 并显示 + var panel = new Panel(this, { + width: 300, + tabs: tabsConfig + }); + panel.show(); + + // 记录属性 + this.panel = panel; + }, + + _createInsertPanel: function _createInsertPanel() { + var editor = this.editor; + var uploadImg = editor.uploadImg; + var config = editor.config; + + // id + var upTriggerId = getRandom('up-trigger'); + var upFileId = getRandom('up-file'); + var linkUrlId = getRandom('link-url'); + var linkBtnId = getRandom('link-btn'); + + // tabs 的配置 + var tabsConfig = [{ + title: '上传图片', + tpl: '
        \n
        \n \n
        \n
        \n \n
        \n
        ', + events: [{ + // 触发选择图片 + selector: '#' + upTriggerId, + type: 'click', + fn: function fn() { + var $file = $('#' + upFileId); + var fileElem = $file[0]; + if (fileElem) { + fileElem.click(); + } else { + // 返回 true 可关闭 panel + return true; + } + } + }, { + // 选择图片完毕 + selector: '#' + upFileId, + type: 'change', + fn: function fn() { + var $file = $('#' + upFileId); + var fileElem = $file[0]; + if (!fileElem) { + // 返回 true 可关闭 panel + return true; + } + + // 获取选中的 file 对象列表 + var fileList = fileElem.files; + if (fileList.length) { + uploadImg.uploadImg(fileList); + } + + // 返回 true 可关闭 panel + return true; + } + }] + }, // first tab end + { + title: '网络图片', + tpl: '
        \n \n
        \n \n
        \n
        ', + events: [{ + selector: '#' + linkBtnId, + type: 'click', + fn: function fn() { + var $linkUrl = $('#' + linkUrlId); + var url = $linkUrl.val().trim(); + + if (url) { + uploadImg.insertLinkImg(url); + } + + // 返回 true 表示函数执行结束之后关闭 panel + return true; + } + }] + } // second tab end + ]; // tabs end + + // 判断 tabs 的显示 + var tabsConfigResult = []; + if ((config.uploadImgShowBase64 || config.uploadImgServer || config.customUploadImg) && window.FileReader) { + // 显示“上传图片” + tabsConfigResult.push(tabsConfig[0]); + } + if (config.showLinkImg) { + // 显示“网络图片” + tabsConfigResult.push(tabsConfig[1]); + } + + // 创建 panel 并显示 + var panel = new Panel(this, { + width: 300, + tabs: tabsConfigResult + }); + panel.show(); + + // 记录属性 + this.panel = panel; + }, + + // 试图改变 active 状态 + tryChangeActive: function tryChangeActive(e) { + var editor = this.editor; + var $elem = this.$elem; + if (editor._selectedImg) { + this._active = true; + $elem.addClass('w-e-active'); + } else { + this._active = false; + $elem.removeClass('w-e-active'); + } + } +}; + +/* + 所有菜单的汇总 +*/ + +// 存储菜单的构造函数 +var MenuConstructors = {}; + +MenuConstructors.bold = Bold; + +MenuConstructors.head = Head; + +MenuConstructors.fontSize = FontSize; + +MenuConstructors.fontName = FontName; + +MenuConstructors.link = Link; + +MenuConstructors.italic = Italic; + +MenuConstructors.redo = Redo; + +MenuConstructors.strikeThrough = StrikeThrough; + +MenuConstructors.underline = Underline; + +MenuConstructors.undo = Undo; + +MenuConstructors.list = List; + +MenuConstructors.justify = Justify; + +MenuConstructors.foreColor = ForeColor; + +MenuConstructors.backColor = BackColor; + +MenuConstructors.quote = Quote; + +MenuConstructors.code = Code; + +MenuConstructors.emoticon = Emoticon; + +MenuConstructors.table = Table; + +MenuConstructors.video = Video; + +MenuConstructors.image = Image; + +/* + 菜单集合 +*/ +// 构造函数 +function Menus(editor) { + this.editor = editor; + this.menus = {}; +} + +// 修改原型 +Menus.prototype = { + constructor: Menus, + + // 初始化菜单 + init: function init() { + var _this = this; + + var editor = this.editor; + var config = editor.config || {}; + var configMenus = config.menus || []; // 获取配置中的菜单 + + // 根据配置信息,创建菜单 + configMenus.forEach(function (menuKey) { + var MenuConstructor = MenuConstructors[menuKey]; + if (MenuConstructor && typeof MenuConstructor === 'function') { + // 创建单个菜单 + _this.menus[menuKey] = new MenuConstructor(editor); + } + }); + + // 添加到菜单栏 + this._addToToolbar(); + + // 绑定事件 + this._bindEvent(); + }, + + // 添加到菜单栏 + _addToToolbar: function _addToToolbar() { + var editor = this.editor; + var $toolbarElem = editor.$toolbarElem; + var menus = this.menus; + var config = editor.config; + // config.zIndex 是配置的编辑区域的 z-index,菜单的 z-index 得在其基础上 +1 + var zIndex = config.zIndex + 1; + objForEach(menus, function (key, menu) { + var $elem = menu.$elem; + if ($elem) { + // 设置 z-index + $elem.css('z-index', zIndex); + $toolbarElem.append($elem); + } + }); + }, + + // 绑定菜单 click mouseenter 事件 + _bindEvent: function _bindEvent() { + var menus = this.menus; + var editor = this.editor; + objForEach(menus, function (key, menu) { + var type = menu.type; + if (!type) { + return; + } + var $elem = menu.$elem; + var droplist = menu.droplist; + var panel = menu.panel; + + // 点击类型,例如 bold + if (type === 'click' && menu.onClick) { + $elem.on('click', function (e) { + if (editor.selection.getRange() == null) { + return; + } + menu.onClick(e); + }); + } + + // 下拉框,例如 head + if (type === 'droplist' && droplist) { + $elem.on('mouseenter', function (e) { + if (editor.selection.getRange() == null) { + return; + } + // 显示 + droplist.showTimeoutId = setTimeout(function () { + droplist.show(); + }, 200); + }).on('mouseleave', function (e) { + // 隐藏 + droplist.hideTimeoutId = setTimeout(function () { + droplist.hide(); + }, 0); + }); + } + + // 弹框类型,例如 link + if (type === 'panel' && menu.onClick) { + $elem.on('click', function (e) { + e.stopPropagation(); + if (editor.selection.getRange() == null) { + return; + } + // 在自定义事件中显示 panel + menu.onClick(e); + }); + } + }); + }, + + // 尝试修改菜单状态 + changeActive: function changeActive() { + var menus = this.menus; + objForEach(menus, function (key, menu) { + if (menu.tryChangeActive) { + setTimeout(function () { + menu.tryChangeActive(); + }, 100); + } + }); + } +}; + +/* + 粘贴信息的处理 +*/ + +// 获取粘贴的纯文本 +function getPasteText(e) { + var clipboardData = e.clipboardData || e.originalEvent && e.originalEvent.clipboardData; + var pasteText = void 0; + if (clipboardData == null) { + pasteText = window.clipboardData && window.clipboardData.getData('text'); + } else { + pasteText = clipboardData.getData('text/plain'); + } + + return replaceHtmlSymbol(pasteText); +} + +// 获取粘贴的html +function getPasteHtml(e, filterStyle, ignoreImg) { + var clipboardData = e.clipboardData || e.originalEvent && e.originalEvent.clipboardData; + var pasteText = void 0, + pasteHtml = void 0; + if (clipboardData == null) { + pasteText = window.clipboardData && window.clipboardData.getData('text'); + } else { + pasteText = clipboardData.getData('text/plain'); + pasteHtml = clipboardData.getData('text/html'); + } + if (!pasteHtml && pasteText) { + pasteHtml = '

        ' + replaceHtmlSymbol(pasteText) + '

        '; + } + if (!pasteHtml) { + return; + } + + // 过滤word中状态过来的无用字符 + var docSplitHtml = pasteHtml.split(''); + if (docSplitHtml.length === 2) { + pasteHtml = docSplitHtml[0]; + } + + // 过滤无用标签 + pasteHtml = pasteHtml.replace(/<(meta|script|link).+?>/igm, ''); + // 去掉注释 + pasteHtml = pasteHtml.replace(//mg, ''); + // 过滤 data-xxx 属性 + pasteHtml = pasteHtml.replace(/\s?data-.+?=('|").+?('|")/igm, ''); + + if (ignoreImg) { + // 忽略图片 + pasteHtml = pasteHtml.replace(//igm, ''); + } + + if (filterStyle) { + // 过滤样式 + pasteHtml = pasteHtml.replace(/\s?(class|style)=('|").*?('|")/igm, ''); + } else { + // 保留样式 + pasteHtml = pasteHtml.replace(/\s?class=('|").*?('|")/igm, ''); + } + + return pasteHtml; +} + +// 获取粘贴的图片文件 +function getPasteImgs(e) { + var result = []; + var txt = getPasteText(e); + if (txt) { + // 有文字,就忽略图片 + return result; + } + + var clipboardData = e.clipboardData || e.originalEvent && e.originalEvent.clipboardData || {}; + var items = clipboardData.items; + if (!items) { + return result; + } + + objForEach(items, function (key, value) { + var type = value.type; + if (/image/i.test(type)) { + result.push(value.getAsFile()); + } + }); + + return result; +} + +/* + 编辑区域 +*/ + +// 获取一个 elem.childNodes 的 JSON 数据 +function getChildrenJSON($elem) { + var result = []; + var $children = $elem.childNodes() || []; // 注意 childNodes() 可以获取文本节点 + $children.forEach(function (curElem) { + var elemResult = void 0; + var nodeType = curElem.nodeType; + + // 文本节点 + if (nodeType === 3) { + elemResult = curElem.textContent; + elemResult = replaceHtmlSymbol(elemResult); + } + + // 普通 DOM 节点 + if (nodeType === 1) { + elemResult = {}; + + // tag + elemResult.tag = curElem.nodeName.toLowerCase(); + // attr + var attrData = []; + var attrList = curElem.attributes || {}; + var attrListLength = attrList.length || 0; + for (var i = 0; i < attrListLength; i++) { + var attr = attrList[i]; + attrData.push({ + name: attr.name, + value: attr.value + }); + } + elemResult.attrs = attrData; + // children(递归) + elemResult.children = getChildrenJSON($(curElem)); + } + + result.push(elemResult); + }); + return result; +} + +// 构造函数 +function Text(editor) { + this.editor = editor; +} + +// 修改原型 +Text.prototype = { + constructor: Text, + + // 初始化 + init: function init() { + // 绑定事件 + this._bindEvent(); + }, + + // 清空内容 + clear: function clear() { + this.html('


        '); + }, + + // 获取 设置 html + html: function html(val) { + var editor = this.editor; + var $textElem = editor.$textElem; + var html = void 0; + if (val == null) { + html = $textElem.html(); + // 未选中任何内容的时候点击“加粗”或者“斜体”等按钮,就得需要一个空的占位符 ​ ,这里替换掉 + html = html.replace(/\u200b/gm, ''); + return html; + } else { + $textElem.html(val); + + // 初始化选取,将光标定位到内容尾部 + editor.initSelection(); + } + }, + + // 获取 JSON + getJSON: function getJSON() { + var editor = this.editor; + var $textElem = editor.$textElem; + return getChildrenJSON($textElem); + }, + + // 获取 设置 text + text: function text(val) { + var editor = this.editor; + var $textElem = editor.$textElem; + var text = void 0; + if (val == null) { + text = $textElem.text(); + // 未选中任何内容的时候点击“加粗”或者“斜体”等按钮,就得需要一个空的占位符 ​ ,这里替换掉 + text = text.replace(/\u200b/gm, ''); + return text; + } else { + $textElem.text('

        ' + val + '

        '); + + // 初始化选取,将光标定位到内容尾部 + editor.initSelection(); + } + }, + + // 追加内容 + append: function append(html) { + var editor = this.editor; + var $textElem = editor.$textElem; + $textElem.append($(html)); + + // 初始化选取,将光标定位到内容尾部 + editor.initSelection(); + }, + + // 绑定事件 + _bindEvent: function _bindEvent() { + // 实时保存选取 + this._saveRangeRealTime(); + + // 按回车建时的特殊处理 + this._enterKeyHandle(); + + // 清空时保留


        + this._clearHandle(); + + // 粘贴事件(粘贴文字,粘贴图片) + this._pasteHandle(); + + // tab 特殊处理 + this._tabHandle(); + + // img 点击 + this._imgHandle(); + + // 拖拽事件 + this._dragHandle(); + }, + + // 实时保存选取 + _saveRangeRealTime: function _saveRangeRealTime() { + var editor = this.editor; + var $textElem = editor.$textElem; + + // 保存当前的选区 + function saveRange(e) { + // 随时保存选区 + editor.selection.saveRange(); + // 更新按钮 ative 状态 + editor.menus.changeActive(); + } + // 按键后保存 + $textElem.on('keyup', saveRange); + $textElem.on('mousedown', function (e) { + // mousedown 状态下,鼠标滑动到编辑区域外面,也需要保存选区 + $textElem.on('mouseleave', saveRange); + }); + $textElem.on('mouseup', function (e) { + saveRange(); + // 在编辑器区域之内完成点击,取消鼠标滑动到编辑区外面的事件 + $textElem.off('mouseleave', saveRange); + }); + }, + + // 按回车键时的特殊处理 + _enterKeyHandle: function _enterKeyHandle() { + var editor = this.editor; + var $textElem = editor.$textElem; + + function insertEmptyP($selectionElem) { + var $p = $('


        '); + $p.insertBefore($selectionElem); + editor.selection.createRangeByElem($p, true); + editor.selection.restoreSelection(); + $selectionElem.remove(); + } + + // 将回车之后生成的非

        的顶级标签,改为

        + function pHandle(e) { + var $selectionElem = editor.selection.getSelectionContainerElem(); + var $parentElem = $selectionElem.parent(); + + if ($parentElem.html() === '
        ') { + // 回车之前光标所在一个

        .....

        ,忽然回车生成一个空的


        + // 而且继续回车跳不出去,因此只能特殊处理 + insertEmptyP($selectionElem); + return; + } + + if (!$parentElem.equal($textElem)) { + // 不是顶级标签 + return; + } + + var nodeName = $selectionElem.getNodeName(); + if (nodeName === 'P') { + // 当前的标签是 P ,不用做处理 + return; + } + + if ($selectionElem.text()) { + // 有内容,不做处理 + return; + } + + // 插入

        ,并将选取定位到

        ,删除当前标签 + insertEmptyP($selectionElem); + } + + $textElem.on('keyup', function (e) { + if (e.keyCode !== 13) { + // 不是回车键 + return; + } + // 将回车之后生成的非

        的顶级标签,改为

        + pHandle(e); + }); + + //

        回车时 特殊处理 + function codeHandle(e) { + var $selectionElem = editor.selection.getSelectionContainerElem(); + if (!$selectionElem) { + return; + } + var $parentElem = $selectionElem.parent(); + var selectionNodeName = $selectionElem.getNodeName(); + var parentNodeName = $parentElem.getNodeName(); + + if (selectionNodeName !== 'CODE' || parentNodeName !== 'PRE') { + // 不符合要求 忽略 + return; + } + + if (!editor.cmd.queryCommandSupported('insertHTML')) { + // 必须原生支持 insertHTML 命令 + return; + } + + // 处理:光标定位到代码末尾,联系点击两次回车,即跳出代码块 + if (editor._willBreakCode === true) { + // 此时可以跳出代码块 + // 插入

        ,并将选取定位到

        + var $p = $('


        '); + $p.insertAfter($parentElem); + editor.selection.createRangeByElem($p, true); + editor.selection.restoreSelection(); + + // 修改状态 + editor._willBreakCode = false; + + e.preventDefault(); + return; + } + + var _startOffset = editor.selection.getRange().startOffset; + + // 处理:回车时,不能插入
        而是插入 \n ,因为是在 pre 标签里面 + editor.cmd.do('insertHTML', '\n'); + editor.selection.saveRange(); + if (editor.selection.getRange().startOffset === _startOffset) { + // 没起作用,再来一遍 + editor.cmd.do('insertHTML', '\n'); + } + + var codeLength = $selectionElem.html().length; + if (editor.selection.getRange().startOffset + 1 === codeLength) { + // 说明光标在代码最后的位置,执行了回车操作 + // 记录下来,以便下次回车时候跳出 code + editor._willBreakCode = true; + } + + // 阻止默认行为 + e.preventDefault(); + } + + $textElem.on('keydown', function (e) { + if (e.keyCode !== 13) { + // 不是回车键 + // 取消即将跳转代码块的记录 + editor._willBreakCode = false; + return; + } + //
        回车时 特殊处理 + codeHandle(e); + }); + }, + + // 清空时保留


        + _clearHandle: function _clearHandle() { + var editor = this.editor; + var $textElem = editor.$textElem; + + $textElem.on('keydown', function (e) { + if (e.keyCode !== 8) { + return; + } + var txtHtml = $textElem.html().toLowerCase().trim(); + if (txtHtml === '


        ') { + // 最后剩下一个空行,就不再删除了 + e.preventDefault(); + return; + } + }); + + $textElem.on('keyup', function (e) { + if (e.keyCode !== 8) { + return; + } + var $p = void 0; + var txtHtml = $textElem.html().toLowerCase().trim(); + + // firefox 时用 txtHtml === '
        ' 判断,其他用 !txtHtml 判断 + if (!txtHtml || txtHtml === '
        ') { + // 内容空了 + $p = $('


        '); + $textElem.html(''); // 一定要先清空,否则在 firefox 下有问题 + $textElem.append($p); + editor.selection.createRangeByElem($p, false, true); + editor.selection.restoreSelection(); + } + }); + }, + + // 粘贴事件(粘贴文字 粘贴图片) + _pasteHandle: function _pasteHandle() { + var editor = this.editor; + var config = editor.config; + var pasteFilterStyle = config.pasteFilterStyle; + var pasteTextHandle = config.pasteTextHandle; + var ignoreImg = config.pasteIgnoreImg; + var $textElem = editor.$textElem; + + // 粘贴图片、文本的事件,每次只能执行一个 + // 判断该次粘贴事件是否可以执行 + var pasteTime = 0; + function canDo() { + var now = Date.now(); + var flag = false; + if (now - pasteTime >= 100) { + // 间隔大于 100 ms ,可以执行 + flag = true; + } + pasteTime = now; + return flag; + } + function resetTime() { + pasteTime = 0; + } + + // 粘贴文字 + $textElem.on('paste', function (e) { + if (UA.isIE()) { + return; + } else { + // 阻止默认行为,使用 execCommand 的粘贴命令 + e.preventDefault(); + } + + // 粘贴图片和文本,只能同时使用一个 + if (!canDo()) { + return; + } + + // 获取粘贴的文字 + var pasteHtml = getPasteHtml(e, pasteFilterStyle, ignoreImg); + var pasteText = getPasteText(e); + pasteText = pasteText.replace(/\n/gm, '
        '); + + var $selectionElem = editor.selection.getSelectionContainerElem(); + if (!$selectionElem) { + return; + } + var nodeName = $selectionElem.getNodeName(); + + // code 中只能粘贴纯文本 + if (nodeName === 'CODE' || nodeName === 'PRE') { + if (pasteTextHandle && isFunction(pasteTextHandle)) { + // 用户自定义过滤处理粘贴内容 + pasteText = '' + (pasteTextHandle(pasteText) || ''); + } + editor.cmd.do('insertHTML', '

        ' + pasteText + '

        '); + return; + } + + // 先放开注释,有问题再追查 ———— + // // 表格中忽略,可能会出现异常问题 + // if (nodeName === 'TD' || nodeName === 'TH') { + // return + // } + + if (!pasteHtml) { + // 没有内容,可继续执行下面的图片粘贴 + resetTime(); + return; + } + try { + // firefox 中,获取的 pasteHtml 可能是没有
          包裹的
        • + // 因此执行 insertHTML 会报错 + if (pasteTextHandle && isFunction(pasteTextHandle)) { + // 用户自定义过滤处理粘贴内容 + pasteHtml = '' + (pasteTextHandle(pasteHtml) || ''); + } + editor.cmd.do('insertHTML', pasteHtml); + } catch (ex) { + // 此时使用 pasteText 来兼容一下 + if (pasteTextHandle && isFunction(pasteTextHandle)) { + // 用户自定义过滤处理粘贴内容 + pasteText = '' + (pasteTextHandle(pasteText) || ''); + } + editor.cmd.do('insertHTML', '

          ' + pasteText + '

          '); + } + }); + + // 粘贴图片 + $textElem.on('paste', function (e) { + if (UA.isIE()) { + return; + } else { + e.preventDefault(); + } + + // 粘贴图片和文本,只能同时使用一个 + if (!canDo()) { + return; + } + + // 获取粘贴的图片 + var pasteFiles = getPasteImgs(e); + if (!pasteFiles || !pasteFiles.length) { + return; + } + + // 获取当前的元素 + var $selectionElem = editor.selection.getSelectionContainerElem(); + if (!$selectionElem) { + return; + } + var nodeName = $selectionElem.getNodeName(); + + // code 中粘贴忽略 + if (nodeName === 'CODE' || nodeName === 'PRE') { + return; + } + + // 上传图片 + var uploadImg = editor.uploadImg; + uploadImg.uploadImg(pasteFiles); + }); + }, + + // tab 特殊处理 + _tabHandle: function _tabHandle() { + var editor = this.editor; + var $textElem = editor.$textElem; + + $textElem.on('keydown', function (e) { + if (e.keyCode !== 9) { + return; + } + if (!editor.cmd.queryCommandSupported('insertHTML')) { + // 必须原生支持 insertHTML 命令 + return; + } + var $selectionElem = editor.selection.getSelectionContainerElem(); + if (!$selectionElem) { + return; + } + var $parentElem = $selectionElem.parent(); + var selectionNodeName = $selectionElem.getNodeName(); + var parentNodeName = $parentElem.getNodeName(); + + if (selectionNodeName === 'CODE' && parentNodeName === 'PRE') { + //
           里面
          +                editor.cmd.do('insertHTML', '    ');
          +            } else {
          +                // 普通文字
          +                editor.cmd.do('insertHTML', '    ');
          +            }
          +
          +            e.preventDefault();
          +        });
          +    },
          +
          +    // img 点击
          +    _imgHandle: function _imgHandle() {
          +        var editor = this.editor;
          +        var $textElem = editor.$textElem;
          +
          +        // 为图片增加 selected 样式
          +        $textElem.on('click', 'img', function (e) {
          +            var img = this;
          +            var $img = $(img);
          +
          +            if ($img.attr('data-w-e') === '1') {
          +                // 是表情图片,忽略
          +                return;
          +            }
          +
          +            // 记录当前点击过的图片
          +            editor._selectedImg = $img;
          +
          +            // 修改选区并 restore ,防止用户此时点击退格键,会删除其他内容
          +            editor.selection.createRangeByElem($img);
          +            editor.selection.restoreSelection();
          +        });
          +
          +        // 去掉图片的 selected 样式
          +        $textElem.on('click  keyup', function (e) {
          +            if (e.target.matches('img')) {
          +                // 点击的是图片,忽略
          +                return;
          +            }
          +            // 删除记录
          +            editor._selectedImg = null;
          +        });
          +    },
          +
          +    // 拖拽事件
          +    _dragHandle: function _dragHandle() {
          +        var editor = this.editor;
          +
          +        // 禁用 document 拖拽事件
          +        var $document = $(document);
          +        $document.on('dragleave drop dragenter dragover', function (e) {
          +            e.preventDefault();
          +        });
          +
          +        // 添加编辑区域拖拽事件
          +        var $textElem = editor.$textElem;
          +        $textElem.on('drop', function (e) {
          +            e.preventDefault();
          +            var files = e.dataTransfer && e.dataTransfer.files;
          +            if (!files || !files.length) {
          +                return;
          +            }
          +
          +            // 上传图片
          +            var uploadImg = editor.uploadImg;
          +            uploadImg.uploadImg(files);
          +        });
          +    }
          +};
          +
          +/*
          +    命令,封装 document.execCommand
          +*/
          +
          +// 构造函数
          +function Command(editor) {
          +    this.editor = editor;
          +}
          +
          +// 修改原型
          +Command.prototype = {
          +    constructor: Command,
          +
          +    // 执行命令
          +    do: function _do(name, value) {
          +        var editor = this.editor;
          +
          +        // 使用 styleWithCSS
          +        if (!editor._useStyleWithCSS) {
          +            document.execCommand('styleWithCSS', null, true);
          +            editor._useStyleWithCSS = true;
          +        }
          +
          +        // 如果无选区,忽略
          +        if (!editor.selection.getRange()) {
          +            return;
          +        }
          +
          +        // 恢复选取
          +        editor.selection.restoreSelection();
          +
          +        // 执行
          +        var _name = '_' + name;
          +        if (this[_name]) {
          +            // 有自定义事件
          +            this[_name](value);
          +        } else {
          +            // 默认 command
          +            this._execCommand(name, value);
          +        }
          +
          +        // 修改菜单状态
          +        editor.menus.changeActive();
          +
          +        // 最后,恢复选取保证光标在原来的位置闪烁
          +        editor.selection.saveRange();
          +        editor.selection.restoreSelection();
          +
          +        // 触发 onchange
          +        editor.change && editor.change();
          +    },
          +
          +    // 自定义 insertHTML 事件
          +    _insertHTML: function _insertHTML(html) {
          +        var editor = this.editor;
          +        var range = editor.selection.getRange();
          +
          +        if (this.queryCommandSupported('insertHTML')) {
          +            // W3C
          +            this._execCommand('insertHTML', html);
          +        } else if (range.insertNode) {
          +            // IE
          +            range.deleteContents();
          +            range.insertNode($(html)[0]);
          +        } else if (range.pasteHTML) {
          +            // IE <= 10
          +            range.pasteHTML(html);
          +        }
          +    },
          +
          +    // 插入 elem
          +    _insertElem: function _insertElem($elem) {
          +        var editor = this.editor;
          +        var range = editor.selection.getRange();
          +
          +        if (range.insertNode) {
          +            range.deleteContents();
          +            range.insertNode($elem[0]);
          +        }
          +    },
          +
          +    // 封装 execCommand
          +    _execCommand: function _execCommand(name, value) {
          +        document.execCommand(name, false, value);
          +    },
          +
          +    // 封装 document.queryCommandValue
          +    queryCommandValue: function queryCommandValue(name) {
          +        return document.queryCommandValue(name);
          +    },
          +
          +    // 封装 document.queryCommandState
          +    queryCommandState: function queryCommandState(name) {
          +        return document.queryCommandState(name);
          +    },
          +
          +    // 封装 document.queryCommandSupported
          +    queryCommandSupported: function queryCommandSupported(name) {
          +        return document.queryCommandSupported(name);
          +    }
          +};
          +
          +/*
          +    selection range API
          +*/
          +
          +// 构造函数
          +function API(editor) {
          +    this.editor = editor;
          +    this._currentRange = null;
          +}
          +
          +// 修改原型
          +API.prototype = {
          +    constructor: API,
          +
          +    // 获取 range 对象
          +    getRange: function getRange() {
          +        return this._currentRange;
          +    },
          +
          +    // 保存选区
          +    saveRange: function saveRange(_range) {
          +        if (_range) {
          +            // 保存已有选区
          +            this._currentRange = _range;
          +            return;
          +        }
          +
          +        // 获取当前的选区
          +        var selection = window.getSelection();
          +        if (selection.rangeCount === 0) {
          +            return;
          +        }
          +        var range = selection.getRangeAt(0);
          +
          +        // 判断选区内容是否在编辑内容之内
          +        var $containerElem = this.getSelectionContainerElem(range);
          +        if (!$containerElem) {
          +            return;
          +        }
          +
          +        // 判断选区内容是否在不可编辑区域之内
          +        if ($containerElem.attr('contenteditable') === 'false' || $containerElem.parentUntil('[contenteditable=false]')) {
          +            return;
          +        }
          +
          +        var editor = this.editor;
          +        var $textElem = editor.$textElem;
          +        if ($textElem.isContain($containerElem)) {
          +            // 是编辑内容之内的
          +            this._currentRange = range;
          +        }
          +    },
          +
          +    // 折叠选区
          +    collapseRange: function collapseRange(toStart) {
          +        if (toStart == null) {
          +            // 默认为 false
          +            toStart = false;
          +        }
          +        var range = this._currentRange;
          +        if (range) {
          +            range.collapse(toStart);
          +        }
          +    },
          +
          +    // 选中区域的文字
          +    getSelectionText: function getSelectionText() {
          +        var range = this._currentRange;
          +        if (range) {
          +            return this._currentRange.toString();
          +        } else {
          +            return '';
          +        }
          +    },
          +
          +    // 选区的 $Elem
          +    getSelectionContainerElem: function getSelectionContainerElem(range) {
          +        range = range || this._currentRange;
          +        var elem = void 0;
          +        if (range) {
          +            elem = range.commonAncestorContainer;
          +            return $(elem.nodeType === 1 ? elem : elem.parentNode);
          +        }
          +    },
          +    getSelectionStartElem: function getSelectionStartElem(range) {
          +        range = range || this._currentRange;
          +        var elem = void 0;
          +        if (range) {
          +            elem = range.startContainer;
          +            return $(elem.nodeType === 1 ? elem : elem.parentNode);
          +        }
          +    },
          +    getSelectionEndElem: function getSelectionEndElem(range) {
          +        range = range || this._currentRange;
          +        var elem = void 0;
          +        if (range) {
          +            elem = range.endContainer;
          +            return $(elem.nodeType === 1 ? elem : elem.parentNode);
          +        }
          +    },
          +
          +    // 选区是否为空
          +    isSelectionEmpty: function isSelectionEmpty() {
          +        var range = this._currentRange;
          +        if (range && range.startContainer) {
          +            if (range.startContainer === range.endContainer) {
          +                if (range.startOffset === range.endOffset) {
          +                    return true;
          +                }
          +            }
          +        }
          +        return false;
          +    },
          +
          +    // 恢复选区
          +    restoreSelection: function restoreSelection() {
          +        var selection = window.getSelection();
          +        selection.removeAllRanges();
          +        selection.addRange(this._currentRange);
          +    },
          +
          +    // 创建一个空白(即 ​ 字符)选区
          +    createEmptyRange: function createEmptyRange() {
          +        var editor = this.editor;
          +        var range = this.getRange();
          +        var $elem = void 0;
          +
          +        if (!range) {
          +            // 当前无 range
          +            return;
          +        }
          +        if (!this.isSelectionEmpty()) {
          +            // 当前选区必须没有内容才可以
          +            return;
          +        }
          +
          +        try {
          +            // 目前只支持 webkit 内核
          +            if (UA.isWebkit()) {
          +                // 插入 ​
          +                editor.cmd.do('insertHTML', '​');
          +                // 修改 offset 位置
          +                range.setEnd(range.endContainer, range.endOffset + 1);
          +                // 存储
          +                this.saveRange(range);
          +            } else {
          +                $elem = $('');
          +                editor.cmd.do('insertElem', $elem);
          +                this.createRangeByElem($elem, true);
          +            }
          +        } catch (ex) {
          +            // 部分情况下会报错,兼容一下
          +        }
          +    },
          +
          +    // 根据 $Elem 设置选区
          +    createRangeByElem: function createRangeByElem($elem, toStart, isContent) {
          +        // $elem - 经过封装的 elem
          +        // toStart - true 开始位置,false 结束位置
          +        // isContent - 是否选中Elem的内容
          +        if (!$elem.length) {
          +            return;
          +        }
          +
          +        var elem = $elem[0];
          +        var range = document.createRange();
          +
          +        if (isContent) {
          +            range.selectNodeContents(elem);
          +        } else {
          +            range.selectNode(elem);
          +        }
          +
          +        if (typeof toStart === 'boolean') {
          +            range.collapse(toStart);
          +        }
          +
          +        // 存储 range
          +        this.saveRange(range);
          +    }
          +};
          +
          +/*
          +    上传进度条
          +*/
          +
          +function Progress(editor) {
          +    this.editor = editor;
          +    this._time = 0;
          +    this._isShow = false;
          +    this._isRender = false;
          +    this._timeoutId = 0;
          +    this.$textContainer = editor.$textContainerElem;
          +    this.$bar = $('
          '); +} + +Progress.prototype = { + constructor: Progress, + + show: function show(progress) { + var _this = this; + + // 状态处理 + if (this._isShow) { + return; + } + this._isShow = true; + + // 渲染 + var $bar = this.$bar; + if (!this._isRender) { + var $textContainer = this.$textContainer; + $textContainer.append($bar); + } else { + this._isRender = true; + } + + // 改变进度(节流,100ms 渲染一次) + if (Date.now() - this._time > 100) { + if (progress <= 1) { + $bar.css('width', progress * 100 + '%'); + this._time = Date.now(); + } + } + + // 隐藏 + var timeoutId = this._timeoutId; + if (timeoutId) { + clearTimeout(timeoutId); + } + timeoutId = setTimeout(function () { + _this._hide(); + }, 500); + }, + + _hide: function _hide() { + var $bar = this.$bar; + $bar.remove(); + + // 修改状态 + this._time = 0; + this._isShow = false; + this._isRender = false; + } +}; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; +} : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; +}; + +/* + 上传图片 +*/ + +// 构造函数 +function UploadImg(editor) { + this.editor = editor; +} + +// 原型 +UploadImg.prototype = { + constructor: UploadImg, + + // 根据 debug 弹出不同的信息 + _alert: function _alert(alertInfo, debugInfo) { + var editor = this.editor; + var debug = editor.config.debug; + var customAlert = editor.config.customAlert; + + if (debug) { + throw new Error('wangEditor: ' + (debugInfo || alertInfo)); + } else { + if (customAlert && typeof customAlert === 'function') { + customAlert(alertInfo); + } else { + alert(alertInfo); + } + } + }, + + // 根据链接插入图片 + insertLinkImg: function insertLinkImg(link) { + var _this2 = this; + + if (!link) { + return; + } + var editor = this.editor; + var config = editor.config; + + // 校验格式 + var linkImgCheck = config.linkImgCheck; + var checkResult = void 0; + if (linkImgCheck && typeof linkImgCheck === 'function') { + checkResult = linkImgCheck(link); + if (typeof checkResult === 'string') { + // 校验失败,提示信息 + alert(checkResult); + return; + } + } + + editor.cmd.do('insertHTML', ''); + + // 验证图片 url 是否有效,无效的话给出提示 + var img = document.createElement('img'); + img.onload = function () { + var callback = config.linkImgCallback; + if (callback && typeof callback === 'function') { + callback(link); + } + + img = null; + }; + img.onerror = function () { + img = null; + // 无法成功下载图片 + _this2._alert('插入图片错误', 'wangEditor: \u63D2\u5165\u56FE\u7247\u51FA\u9519\uFF0C\u56FE\u7247\u94FE\u63A5\u662F "' + link + '"\uFF0C\u4E0B\u8F7D\u8BE5\u94FE\u63A5\u5931\u8D25'); + return; + }; + img.onabort = function () { + img = null; + }; + img.src = link; + }, + + // 上传图片 + uploadImg: function uploadImg(files) { + var _this3 = this; + + if (!files || !files.length) { + return; + } + + // ------------------------------ 获取配置信息 ------------------------------ + var editor = this.editor; + var config = editor.config; + var uploadImgServer = config.uploadImgServer; + var uploadImgShowBase64 = config.uploadImgShowBase64; + + var maxSize = config.uploadImgMaxSize; + var maxSizeM = maxSize / 1024 / 1024; + var maxLength = config.uploadImgMaxLength || 10000; + var uploadFileName = config.uploadFileName || ''; + var uploadImgParams = config.uploadImgParams || {}; + var uploadImgParamsWithUrl = config.uploadImgParamsWithUrl; + var uploadImgHeaders = config.uploadImgHeaders || {}; + var hooks = config.uploadImgHooks || {}; + var timeout = config.uploadImgTimeout || 3000; + var withCredentials = config.withCredentials; + if (withCredentials == null) { + withCredentials = false; + } + var customUploadImg = config.customUploadImg; + + if (!customUploadImg) { + // 没有 customUploadImg 的情况下,需要如下两个配置才能继续进行图片上传 + if (!uploadImgServer && !uploadImgShowBase64) { + return; + } + } + + // ------------------------------ 验证文件信息 ------------------------------ + var resultFiles = []; + var errInfo = []; + arrForEach(files, function (file) { + var name = file.name; + var size = file.size; + + // chrome 低版本 name === undefined + if (!name || !size) { + return; + } + + if (/\.(jpg|jpeg|png|bmp|gif|webp)$/i.test(name) === false) { + // 后缀名不合法,不是图片 + errInfo.push('\u3010' + name + '\u3011\u4E0D\u662F\u56FE\u7247'); + return; + } + if (maxSize < size) { + // 上传图片过大 + errInfo.push('\u3010' + name + '\u3011\u5927\u4E8E ' + maxSizeM + 'M'); + return; + } + + // 验证通过的加入结果列表 + resultFiles.push(file); + }); + // 抛出验证信息 + if (errInfo.length) { + this._alert('图片验证未通过: \n' + errInfo.join('\n')); + return; + } + if (resultFiles.length > maxLength) { + this._alert('一次最多上传' + maxLength + '张图片'); + return; + } + + // ------------------------------ 自定义上传 ------------------------------ + if (customUploadImg && typeof customUploadImg === 'function') { + customUploadImg(resultFiles, this.insertLinkImg.bind(this)); + + // 阻止以下代码执行 + return; + } + + // 添加图片数据 + var formdata = new FormData(); + arrForEach(resultFiles, function (file) { + var name = uploadFileName || file.name; + formdata.append(name, file); + }); + + // ------------------------------ 上传图片 ------------------------------ + if (uploadImgServer && typeof uploadImgServer === 'string') { + // 添加参数 + var uploadImgServerArr = uploadImgServer.split('#'); + uploadImgServer = uploadImgServerArr[0]; + var uploadImgServerHash = uploadImgServerArr[1] || ''; + objForEach(uploadImgParams, function (key, val) { + // 因使用者反应,自定义参数不能默认 encode ,由 v3.1.1 版本开始注释掉 + // val = encodeURIComponent(val) + + // 第一,将参数拼接到 url 中 + if (uploadImgParamsWithUrl) { + if (uploadImgServer.indexOf('?') > 0) { + uploadImgServer += '&'; + } else { + uploadImgServer += '?'; + } + uploadImgServer = uploadImgServer + key + '=' + val; + } + + // 第二,将参数添加到 formdata 中 + formdata.append(key, val); + }); + if (uploadImgServerHash) { + uploadImgServer += '#' + uploadImgServerHash; + } + + // 定义 xhr + var xhr = new XMLHttpRequest(); + xhr.open('POST', uploadImgServer); + + // 设置超时 + xhr.timeout = timeout; + xhr.ontimeout = function () { + // hook - timeout + if (hooks.timeout && typeof hooks.timeout === 'function') { + hooks.timeout(xhr, editor); + } + + _this3._alert('上传图片超时'); + }; + + // 监控 progress + if (xhr.upload) { + xhr.upload.onprogress = function (e) { + var percent = void 0; + // 进度条 + var progressBar = new Progress(editor); + if (e.lengthComputable) { + percent = e.loaded / e.total; + progressBar.show(percent); + } + }; + } + + // 返回数据 + xhr.onreadystatechange = function () { + var result = void 0; + if (xhr.readyState === 4) { + if (xhr.status < 200 || xhr.status >= 300) { + // hook - error + if (hooks.error && typeof hooks.error === 'function') { + hooks.error(xhr, editor); + } + + // xhr 返回状态错误 + _this3._alert('上传图片发生错误', '\u4E0A\u4F20\u56FE\u7247\u53D1\u751F\u9519\u8BEF\uFF0C\u670D\u52A1\u5668\u8FD4\u56DE\u72B6\u6001\u662F ' + xhr.status); + return; + } + + result = xhr.responseText; + if ((typeof result === 'undefined' ? 'undefined' : _typeof(result)) !== 'object') { + try { + result = JSON.parse(result); + } catch (ex) { + // hook - fail + if (hooks.fail && typeof hooks.fail === 'function') { + hooks.fail(xhr, editor, result); + } + + _this3._alert('上传图片失败', '上传图片返回结果错误,返回结果是: ' + result); + return; + } + } + if (!hooks.customInsert && result.errno != '0') { + // hook - fail + if (hooks.fail && typeof hooks.fail === 'function') { + hooks.fail(xhr, editor, result); + } + + // 数据错误 + _this3._alert('上传图片失败', '上传图片返回结果错误,返回结果 errno=' + result.errno); + } else { + if (hooks.customInsert && typeof hooks.customInsert === 'function') { + // 使用者自定义插入方法 + hooks.customInsert(_this3.insertLinkImg.bind(_this3), result, editor); + } else { + // 将图片插入编辑器 + var data = result.data || []; + data.forEach(function (link) { + _this3.insertLinkImg(link); + }); + } + + // hook - success + if (hooks.success && typeof hooks.success === 'function') { + hooks.success(xhr, editor, result); + } + } + } + }; + + // hook - before + if (hooks.before && typeof hooks.before === 'function') { + var beforeResult = hooks.before(xhr, editor, resultFiles); + if (beforeResult && (typeof beforeResult === 'undefined' ? 'undefined' : _typeof(beforeResult)) === 'object') { + if (beforeResult.prevent) { + // 如果返回的结果是 {prevent: true, msg: 'xxxx'} 则表示用户放弃上传 + this._alert(beforeResult.msg); + return; + } + } + } + + // 自定义 headers + objForEach(uploadImgHeaders, function (key, val) { + xhr.setRequestHeader(key, val); + }); + + // 跨域传 cookie + xhr.withCredentials = withCredentials; + + // 发送请求 + xhr.send(formdata); + + // 注意,要 return 。不去操作接下来的 base64 显示方式 + return; + } + + // ------------------------------ 显示 base64 格式 ------------------------------ + if (uploadImgShowBase64) { + arrForEach(files, function (file) { + var _this = _this3; + var reader = new FileReader(); + reader.readAsDataURL(file); + reader.onload = function () { + _this.insertLinkImg(this.result); + }; + }); + } + } +}; + +/* + 编辑器构造函数 +*/ + +// id,累加 +var editorId = 1; + +// 构造函数 +function Editor(toolbarSelector, textSelector) { + if (toolbarSelector == null) { + // 没有传入任何参数,报错 + throw new Error('错误:初始化编辑器时候未传入任何参数,请查阅文档'); + } + // id,用以区分单个页面不同的编辑器对象 + this.id = 'wangEditor-' + editorId++; + + this.toolbarSelector = toolbarSelector; + this.textSelector = textSelector; + + // 自定义配置 + this.customConfig = {}; +} + +// 修改原型 +Editor.prototype = { + constructor: Editor, + + // 初始化配置 + _initConfig: function _initConfig() { + // _config 是默认配置,this.customConfig 是用户自定义配置,将它们 merge 之后再赋值 + var target = {}; + this.config = Object.assign(target, config, this.customConfig); + + // 将语言配置,生成正则表达式 + var langConfig = this.config.lang || {}; + var langArgs = []; + objForEach(langConfig, function (key, val) { + // key 即需要生成正则表达式的规则,如“插入链接” + // val 即需要被替换成的语言,如“insert link” + langArgs.push({ + reg: new RegExp(key, 'img'), + val: val + + }); + }); + this.config.langArgs = langArgs; + }, + + // 初始化 DOM + _initDom: function _initDom() { + var _this = this; + + var toolbarSelector = this.toolbarSelector; + var $toolbarSelector = $(toolbarSelector); + var textSelector = this.textSelector; + + var config$$1 = this.config; + var zIndex = config$$1.zIndex; + + // 定义变量 + var $toolbarElem = void 0, + $textContainerElem = void 0, + $textElem = void 0, + $children = void 0; + + if (textSelector == null) { + // 只传入一个参数,即是容器的选择器或元素,toolbar 和 text 的元素自行创建 + $toolbarElem = $('
          '); + $textContainerElem = $('
          '); + + // 将编辑器区域原有的内容,暂存起来 + $children = $toolbarSelector.children(); + + // 添加到 DOM 结构中 + $toolbarSelector.append($toolbarElem).append($textContainerElem); + + // 自行创建的,需要配置默认的样式 + $toolbarElem.css('background-color', '#f1f1f1').css('border', '1px solid #ccc'); + $textContainerElem.css('border', '1px solid #ccc').css('border-top', 'none').css('height', '300px'); + } else { + // toolbar 和 text 的选择器都有值,记录属性 + $toolbarElem = $toolbarSelector; + $textContainerElem = $(textSelector); + // 将编辑器区域原有的内容,暂存起来 + $children = $textContainerElem.children(); + } + + // 编辑区域 + $textElem = $('
          '); + $textElem.attr('contenteditable', 'true').css('width', '100%').css('height', '100%'); + + // 初始化编辑区域内容 + if ($children && $children.length) { + $textElem.append($children); + } else { + $textElem.append($('


          ')); + } + + // 编辑区域加入DOM + $textContainerElem.append($textElem); + + // 设置通用的 class + $toolbarElem.addClass('w-e-toolbar'); + $textContainerElem.addClass('w-e-text-container'); + $textContainerElem.css('z-index', zIndex); + $textElem.addClass('w-e-text'); + + // 添加 ID + var toolbarElemId = getRandom('toolbar-elem'); + $toolbarElem.attr('id', toolbarElemId); + var textElemId = getRandom('text-elem'); + $textElem.attr('id', textElemId); + + // 记录属性 + this.$toolbarElem = $toolbarElem; + this.$textContainerElem = $textContainerElem; + this.$textElem = $textElem; + this.toolbarElemId = toolbarElemId; + this.textElemId = textElemId; + + // 记录输入法的开始和结束 + var compositionEnd = true; + $textContainerElem.on('compositionstart', function () { + // 输入法开始输入 + compositionEnd = false; + }); + $textContainerElem.on('compositionend', function () { + // 输入法结束输入 + compositionEnd = true; + }); + + // 绑定 onchange + $textContainerElem.on('click keyup', function () { + // 输入法结束才出发 onchange + compositionEnd && _this.change && _this.change(); + }); + $toolbarElem.on('click', function () { + this.change && this.change(); + }); + + //绑定 onfocus 与 onblur 事件 + if (config$$1.onfocus || config$$1.onblur) { + // 当前编辑器是否是焦点状态 + this.isFocus = false; + + $(document).on('click', function (e) { + //判断当前点击元素是否在编辑器内 + var isChild = $textElem.isContain($(e.target)); + + //判断当前点击元素是否为工具栏 + var isToolbar = $toolbarElem.isContain($(e.target)); + var isMenu = $toolbarElem[0] == e.target ? true : false; + + if (!isChild) { + //若为选择工具栏中的功能,则不视为成blur操作 + if (isToolbar && !isMenu) { + return; + } + + if (_this.isFocus) { + _this.onblur && _this.onblur(); + } + _this.isFocus = false; + } else { + if (!_this.isFocus) { + _this.onfocus && _this.onfocus(); + } + _this.isFocus = true; + } + }); + } + }, + + // 封装 command + _initCommand: function _initCommand() { + this.cmd = new Command(this); + }, + + // 封装 selection range API + _initSelectionAPI: function _initSelectionAPI() { + this.selection = new API(this); + }, + + // 添加图片上传 + _initUploadImg: function _initUploadImg() { + this.uploadImg = new UploadImg(this); + }, + + // 初始化菜单 + _initMenus: function _initMenus() { + this.menus = new Menus(this); + this.menus.init(); + }, + + // 添加 text 区域 + _initText: function _initText() { + this.txt = new Text(this); + this.txt.init(); + }, + + // 初始化选区,将光标定位到内容尾部 + initSelection: function initSelection(newLine) { + var $textElem = this.$textElem; + var $children = $textElem.children(); + if (!$children.length) { + // 如果编辑器区域无内容,添加一个空行,重新设置选区 + $textElem.append($('


          ')); + this.initSelection(); + return; + } + + var $last = $children.last(); + + if (newLine) { + // 新增一个空行 + var html = $last.html().toLowerCase(); + var nodeName = $last.getNodeName(); + if (html !== '
          ' && html !== '' || nodeName !== 'P') { + // 最后一个元素不是


          ,添加一个空行,重新设置选区 + $textElem.append($('


          ')); + this.initSelection(); + return; + } + } + + this.selection.createRangeByElem($last, false, true); + this.selection.restoreSelection(); + }, + + // 绑定事件 + _bindEvent: function _bindEvent() { + // -------- 绑定 onchange 事件 -------- + var onChangeTimeoutId = 0; + var beforeChangeHtml = this.txt.html(); + var config$$1 = this.config; + + // onchange 触发延迟时间 + var onchangeTimeout = config$$1.onchangeTimeout; + onchangeTimeout = parseInt(onchangeTimeout, 10); + if (!onchangeTimeout || onchangeTimeout <= 0) { + onchangeTimeout = 200; + } + + var onchange = config$$1.onchange; + if (onchange && typeof onchange === 'function') { + // 触发 change 的有三个场景: + // 1. $textContainerElem.on('click keyup') + // 2. $toolbarElem.on('click') + // 3. editor.cmd.do() + this.change = function () { + // 判断是否有变化 + var currentHtml = this.txt.html(); + + if (currentHtml.length === beforeChangeHtml.length) { + // 需要比较每一个字符 + if (currentHtml === beforeChangeHtml) { + return; + } + } + + // 执行,使用节流 + if (onChangeTimeoutId) { + clearTimeout(onChangeTimeoutId); + } + onChangeTimeoutId = setTimeout(function () { + // 触发配置的 onchange 函数 + onchange(currentHtml); + beforeChangeHtml = currentHtml; + }, onchangeTimeout); + }; + } + + // -------- 绑定 onblur 事件 -------- + var onblur = config$$1.onblur; + if (onblur && typeof onblur === 'function') { + this.onblur = function () { + var currentHtml = this.txt.html(); + onblur(currentHtml); + }; + } + + // -------- 绑定 onfocus 事件 -------- + var onfocus = config$$1.onfocus; + if (onfocus && typeof onfocus === 'function') { + this.onfocus = function () { + onfocus(); + }; + } + }, + + // 创建编辑器 + create: function create() { + // 初始化配置信息 + this._initConfig(); + + // 初始化 DOM + this._initDom(); + + // 封装 command API + this._initCommand(); + + // 封装 selection range API + this._initSelectionAPI(); + + // 添加 text + this._initText(); + + // 初始化菜单 + this._initMenus(); + + // 添加 图片上传 + this._initUploadImg(); + + // 初始化选区,将光标定位到内容尾部 + this.initSelection(true); + + // 绑定事件 + this._bindEvent(); + }, + + // 解绑所有事件(暂时不对外开放) + _offAllEvent: function _offAllEvent() { + $.offAll(); + } +}; + +// 检验是否浏览器环境 +try { + document; +} catch (ex) { + throw new Error('请在浏览器环境下运行'); +} + +// polyfill +polyfill(); + +// 这里的 `inlinecss` 将被替换成 css 代码的内容,详情可去 ./gulpfile.js 中搜索 `inlinecss` 关键字 +var inlinecss = '.w-e-toolbar,.w-e-text-container,.w-e-menu-panel { padding: 0; margin: 0; box-sizing: border-box;}.w-e-toolbar *,.w-e-text-container *,.w-e-menu-panel * { padding: 0; margin: 0; box-sizing: border-box;}.w-e-clear-fix:after { content: ""; display: table; clear: both;}.w-e-toolbar .w-e-droplist { position: absolute; left: 0; top: 0; background-color: #fff; border: 1px solid #f1f1f1; border-right-color: #ccc; border-bottom-color: #ccc;}.w-e-toolbar .w-e-droplist .w-e-dp-title { text-align: center; color: #999; line-height: 2; border-bottom: 1px solid #f1f1f1; font-size: 13px;}.w-e-toolbar .w-e-droplist ul.w-e-list { list-style: none; line-height: 1;}.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item { color: #333; padding: 5px 0;}.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item:hover { background-color: #f1f1f1;}.w-e-toolbar .w-e-droplist ul.w-e-block { list-style: none; text-align: left; padding: 5px;}.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item { display: inline-block; *display: inline; *zoom: 1; padding: 3px 5px;}.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item:hover { background-color: #f1f1f1;}@font-face { font-family: \'w-e-icon\'; src: url(data:application/x-font-woff;charset=utf-8;base64,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) format(\'truetype\'); font-weight: normal; font-style: normal;}[class^="w-e-icon-"],[class*=" w-e-icon-"] { /* use !important to prevent issues with browser extensions that change fonts */ font-family: \'w-e-icon\' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}.w-e-icon-close:before { content: "\\f00d";}.w-e-icon-upload2:before { content: "\\e9c6";}.w-e-icon-trash-o:before { content: "\\f014";}.w-e-icon-header:before { content: "\\f1dc";}.w-e-icon-pencil2:before { content: "\\e906";}.w-e-icon-paint-brush:before { content: "\\f1fc";}.w-e-icon-image:before { content: "\\e90d";}.w-e-icon-play:before { content: "\\e912";}.w-e-icon-location:before { content: "\\e947";}.w-e-icon-undo:before { content: "\\e965";}.w-e-icon-redo:before { content: "\\e966";}.w-e-icon-quotes-left:before { content: "\\e977";}.w-e-icon-list-numbered:before { content: "\\e9b9";}.w-e-icon-list2:before { content: "\\e9bb";}.w-e-icon-link:before { content: "\\e9cb";}.w-e-icon-happy:before { content: "\\e9df";}.w-e-icon-bold:before { content: "\\ea62";}.w-e-icon-underline:before { content: "\\ea63";}.w-e-icon-italic:before { content: "\\ea64";}.w-e-icon-strikethrough:before { content: "\\ea65";}.w-e-icon-table2:before { content: "\\ea71";}.w-e-icon-paragraph-left:before { content: "\\ea77";}.w-e-icon-paragraph-center:before { content: "\\ea78";}.w-e-icon-paragraph-right:before { content: "\\ea79";}.w-e-icon-terminal:before { content: "\\f120";}.w-e-icon-page-break:before { content: "\\ea68";}.w-e-icon-cancel-circle:before { content: "\\ea0d";}.w-e-icon-font:before { content: "\\ea5c";}.w-e-icon-text-heigh:before { content: "\\ea5f";}.w-e-toolbar { display: -webkit-box; display: -ms-flexbox; display: flex; padding: 0 5px; /* flex-wrap: wrap; */ /* 单个菜单 */}.w-e-toolbar .w-e-menu { position: relative; text-align: center; padding: 5px 10px; cursor: pointer;}.w-e-toolbar .w-e-menu i { color: #999;}.w-e-toolbar .w-e-menu:hover i { color: #333;}.w-e-toolbar .w-e-active i { color: #1e88e5;}.w-e-toolbar .w-e-active:hover i { color: #1e88e5;}.w-e-text-container .w-e-panel-container { position: absolute; top: 0; left: 50%; border: 1px solid #ccc; border-top: 0; box-shadow: 1px 1px 2px #ccc; color: #333; background-color: #fff; /* 为 emotion panel 定制的样式 */ /* 上传图片的 panel 定制样式 */}.w-e-text-container .w-e-panel-container .w-e-panel-close { position: absolute; right: 0; top: 0; padding: 5px; margin: 2px 5px 0 0; cursor: pointer; color: #999;}.w-e-text-container .w-e-panel-container .w-e-panel-close:hover { color: #333;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-title { list-style: none; display: -webkit-box; display: -ms-flexbox; display: flex; font-size: 14px; margin: 2px 10px 0 10px; border-bottom: 1px solid #f1f1f1;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-title .w-e-item { padding: 3px 5px; color: #999; cursor: pointer; margin: 0 3px; position: relative; top: 1px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-title .w-e-active { color: #333; border-bottom: 1px solid #333; cursor: default; font-weight: 700;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content { padding: 10px 15px 10px 15px; font-size: 16px; /* 输入框的样式 */ /* 按钮的样式 */}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input:focus,.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea:focus,.w-e-text-container .w-e-panel-container .w-e-panel-tab-content button:focus { outline: none;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea { width: 100%; border: 1px solid #ccc; padding: 5px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea:focus { border-color: #1e88e5;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text] { border: none; border-bottom: 1px solid #ccc; font-size: 14px; height: 20px; color: #333; text-align: left;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text].small { width: 30px; text-align: center;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text].block { display: block; width: 100%; margin: 10px 0;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text]:focus { border-bottom: 2px solid #1e88e5;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button { font-size: 14px; color: #1e88e5; border: none; padding: 5px 10px; background-color: #fff; cursor: pointer; border-radius: 3px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.left { float: left; margin-right: 10px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.right { float: right; margin-left: 10px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.gray { color: #999;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.red { color: #c24f4a;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button:hover { background-color: #f1f1f1;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container:after { content: ""; display: table; clear: both;}.w-e-text-container .w-e-panel-container .w-e-emoticon-container .w-e-item { cursor: pointer; font-size: 18px; padding: 0 3px; display: inline-block; *display: inline; *zoom: 1;}.w-e-text-container .w-e-panel-container .w-e-up-img-container { text-align: center;}.w-e-text-container .w-e-panel-container .w-e-up-img-container .w-e-up-btn { display: inline-block; *display: inline; *zoom: 1; color: #999; cursor: pointer; font-size: 60px; line-height: 1;}.w-e-text-container .w-e-panel-container .w-e-up-img-container .w-e-up-btn:hover { color: #333;}.w-e-text-container { position: relative;}.w-e-text-container .w-e-progress { position: absolute; background-color: #1e88e5; bottom: 0; left: 0; height: 1px;}.w-e-text { padding: 0 10px; overflow-y: scroll;}.w-e-text p,.w-e-text h1,.w-e-text h2,.w-e-text h3,.w-e-text h4,.w-e-text h5,.w-e-text table,.w-e-text pre { margin: 10px 0; line-height: 1.5;}.w-e-text ul,.w-e-text ol { margin: 10px 0 10px 20px;}.w-e-text blockquote { display: block; border-left: 8px solid #d0e5f2; padding: 5px 10px; margin: 10px 0; line-height: 1.4; font-size: 100%; background-color: #f1f1f1;}.w-e-text code { display: inline-block; *display: inline; *zoom: 1; background-color: #f1f1f1; border-radius: 3px; padding: 3px 5px; margin: 0 3px;}.w-e-text pre code { display: block;}.w-e-text table { border-top: 1px solid #ccc; border-left: 1px solid #ccc;}.w-e-text table td,.w-e-text table th { border-bottom: 1px solid #ccc; border-right: 1px solid #ccc; padding: 3px 5px;}.w-e-text table th { border-bottom: 2px solid #ccc; text-align: center;}.w-e-text:focus { outline: none;}.w-e-text img { cursor: pointer;}.w-e-text img:hover { box-shadow: 0 0 5px #333;}'; + +// 将 css 代码添加到 "].join(""),a=f(o.layHeader.html());a.append(o.layMain.find("table").html()),a.append(o.layTotal.find("table").html()),a.find("th.layui-table-patch").remove(),a.find("thead>tr>th."+F).filter(function(e,t){return!f(t).children("."+u).length}).remove(),a.find("tbody>tr>td."+F).remove(),t.document.write(e+a.prop("outerHTML")),t.document.close(),layui.device("edg").edg?(t.onafterprint=t.close,t.print()):(t.print(),t.close())}}});"object"==typeof e.defaultToolbar&&(l=[],e.defaultToolbar=f.map(e.defaultToolbar,function(e,t){var a="string"==typeof e,i=a?n[e]:e;return i&&(!(i=i.name&&n[i.name]?f.extend({},n[i.name],i):i).name&&a&&(i.name=e),l.push('
          ')),i}),o.layTool.find(".layui-table-tool-self").html(l.join("")))},n.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=f('
          ');t.pagebar&&((e=f(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},n.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](W),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},n.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},n.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+u)).css("width",0),layui.each(e.get().reverse(),function(){var e=f(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){f(this).hasClass(W)||0o.layMain.prop("clientHeight")&&(e.style.width=parseFloat(e.style.width)-i+"px")}),!p&&h?y.width(o.getContentWidth(l)):y.width("auto"),o.setGroupWidth()},n.prototype.resize=function(){var e=this;e.layMain&&("isConnected"in e.layMain[0]?e.layMain[0].isConnected:f.contains(document.body,e.layMain[0]))&&(e.fullSize(),e.setColsWidth(),e.scrollPatch())},n.prototype.reload=function(e,t,a){var i=this;e=e||{},delete i.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete i.config[e]}),i.config=f.extend(t,{},i.config,e),"reloadData"!==a&&(layui.each(i.config.cols,function(e,t){layui.each(t,function(e,t){delete t.colspan2})}),delete i.config.HAS_SET_COLS_PATCH),i.render(a)},n.prototype.errorView=function(e){var t=this,a=t.layMain.find("."+h),e=f('
          '+(e||"Error")+"
          ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(W),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(P).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth(),t.loading(!1)},n.prototype.page=1,n.prototype.pullData=function(i,l){var e,t,n=this,o=n.config,a=(o.HAS_SET_COLS_PATCH||n.setColsPatch(),o.HAS_SET_COLS_PATCH=!0,o.request),d=o.response,r=function(){"object"==typeof o.initSort&&n.sort({field:o.initSort.field,type:o.initSort.type,reloadType:l.type})},c=function(e,t){n.setColsWidth(),n.loading(!1),"function"==typeof o.done&&o.done(e,i,e[d.countName],t)};l=l||{},"function"==typeof o.before&&o.before(o),n.startTime=(new Date).getTime(),l.renderData?((e={})[d.dataName]=k.cache[n.key],e[d.countName]=o.url?"object"===layui.type(o.page)?o.page.count:e[d.dataName].length:o.data.length,"object"==typeof o.totalRow&&(e[d.totalRowName]=f.extend({},n.totalRow)),n.renderData({res:e,curr:i,count:e[d.countName],type:l.type,sort:!0}),c(e,"renderData")):o.url?(t={},o.page&&(t[a.pageName]=i,t[a.limitName]=o.limit),a=f.extend(t,o.where),o.contentType&&0==o.contentType.indexOf("application/json")&&(a=JSON.stringify(a)),n.loading(!0),n._xhr&&4!==n._xhr.readyState&&(n._xhrAbort=!0,n._xhr.abort()),n._xhr=f.ajax({type:o.method||"get",url:o.url,contentType:o.contentType,data:a,dataType:o.dataType||"json",jsonpCallback:o.jsonpCallback,headers:o.headers||{},complete:"function"==typeof o.complete?o.complete:undefined,success:function(e){var t,a;(e="function"==typeof o.parseData?o.parseData(e)||e:e)[d.statusName]!=d.statusCode?n.errorView(e[d.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+d.statusName+'": '+d.statusCode):(t=e[d.countName],(a=Math.ceil(t/o.limit)||1)','
          "+function(){var e,t=f.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(f(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
          "].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&d.push(e),"right"===l.fixed&&r.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+A+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+d.join("")+""),p.push(""+r.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:p}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},n.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,d=t[i.response.dataName]||[],t=t[i.response.totalRowName],r=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(d,o,l,{trs:r,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(r.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,g.close(a.tipsIndex)};return k.cache[a.key]=d,a.layTotal[0==d.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](W),a.layPage.find(P)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](y),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(W),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(W),void(i.page&&(i.page=f.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,p.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},n.prototype.renderTotal=function(e,o){var d,r=this,c=r.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||r.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),r.dataTotal=[],d=[],r.eachCols(function(e,t){var e=t.field||e,a=o&&o[t.field],i="totalRowDecimals"in t?t.totalRowDecimals:2,i=s[e]?parseFloat(s[e]||0).toFixed(i):"",i=(n=t.totalRowText||"",(l={LAY_COL:t})[e]=i,l=t.totalRow&&T.call(r,{item3:t,content:i,tplData:l})||n,a||l),l="string"==typeof(n=t.totalRow||c.totalRow)?m(n).render(f.extend({TOTAL_NUMS:a||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):i,n=(t.field&&r.dataTotal.push({field:t.field,total:f("
          "+l+"
          ").text()}),['','
          "+l,"
          "].join(""));d.push(n)}),e=r.layTotal.find(".layui-table-patch"),r.layTotal.find("tbody").html(""+d.join("")+(e.length?e.get(0).outerHTML:"")+""))},n.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},n.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");i.render(e,t)},n.prototype.renderFormByElem=function(a){layui.each(["input","select"],function(e,t){i.render(a.find(t))})},n.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}))},n.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},n.prototype.setRowChecked=function(i){var a,e,l,t,n,o,d,r=this,c=r.config,s="all"===i.index,u="array"===layui.type(i.index),y=s||u;c.tree&&c.tree.view||y&&(r.layBox.addClass(O),"radio"===i.type)||(u&&(a={},layui.each(i.index,function(e,t){a[t]=!0}),i.index=a),e=r.layBody.children(".layui-table").children("tbody"),d=y?"tr":'tr[data-index="'+i.index+'"]',d=e.children(d),e=s?d:d.filter(u?function(){var e=f(this).data("index");return i.index[e]}:'[data-index="'+i.index+'"]'),i=f.extend({type:"checkbox"},i),l=k.cache[r.key],t="checked"in i,n=function(e){return"radio"===i.type||(t?i.checked:!e)},e.each(function(){var e=f(this),t=e.attr("data-index"),a=l[t];t&&"array"!==layui.type(a)&&!a[c.disabledName]&&(a=a[c.checkName]=n(e.hasClass(A)),e.toggleClass(A,!!a),"radio"===i.type)&&(o=t,e.siblings().removeClass(A))}),o&&layui.each(l,function(e,t){Number(o)!==Number(e)&&delete t[c.checkName]}),d=(u=(s=e.children("td").children(".layui-table-cell").children('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[i.type]||"checkbox")+'"]:not(:disabled)')).last()).closest(I),("radio"===i.type&&d.hasClass(W)?s.first():s).prop("checked",n(u.prop("checked"))),r.syncCheckAll(),y&&setTimeout(function(){r.layBox.removeClass(O)},100))},n.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(d=l.field,t.layHeader.find("th").each(function(e,t){var a=f(this),i=a.data("field");if(i===l.field)return l.field=a,d=i,!1}));try{var d=d||l.field.data("field"),r=l.field.data("key");if(t.sortKey&&!l.pull&&d===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+r).find(L);t.layHeader.find("th").find(L).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){b.error("Table modules: sort field '"+d+"' not matched")}t.sortKey={field:d,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,d,null,!0):"desc"===l.type?e=layui.sort(o,d,!0,!0):(e=layui.sort(o,k.config.initIndexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:d,type:l.type},layui.event.call(l.field,R,"sort("+n+")",f.extend({config:i},i.initSort)))},n.prototype.loading=function(e){this.config.loading&&this.layBox.find(".layui-table-init").toggleClass(W,!e)},n.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];r.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),!0})},n.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=d.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap?(l=f(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135):i.customHeightFunc&&(l=i.customHeightFunc())<135&&(l=135),1
          ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(D).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0
        ');a.html(t),s.height&&a.css("max-height",s.height-(c.layTool.outerHeight()||50)),i.find("."+S)[0]||i.append(a),c.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};layui.stope(e),z.trigger("table.tool.panel.remove"),g.close(c.tipsIndex),layui.each(s.defaultToolbar,function(e,t){if(t.layEvent===a)return"function"==typeof t.onClick&&t.onClick({data:l,config:s,openPanel:n,elem:i}),!0}),layui.event.call(this,R,"toolbar("+o+")",f.extend({event:a,config:s},{}))}),c.layHeader.on("click","*[lay-event]",function(e){var t=f(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=c.col(t);layui.event.call(this,R,"colTool("+o+")",f.extend({event:a,config:s,col:t},{}))}),c.layPagebar.on("click","*[lay-event]",function(e){var t=f(this).attr("lay-event");layui.event.call(this,R,"pagebar("+o+")",f.extend({event:t,config:s},{}))}),e.on("mousemove",function(e){var t=f(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(r.allowResize=t.width()-e<=10,d.css("cursor",r.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||(r.allowResize=!1,d.css("cursor",""))}).on("mousedown",function(e){var t,a=f(this);r.allowResize&&(t=a.data("key"),e.preventDefault(),r.offset=[e.clientX,e.clientY],c.cssRules(t,function(e){var t=e.style.width||a.outerWidth();r.rule=e,r.ruleWidth=parseFloat(t),r.minWidth=a.data("minwidth")||s.cellMinWidth,r.maxWidth=a.data("maxwidth")||s.cellMaxWidth}),a.data(j,r),w.eventMoveElem=a)}),w.docEvent||z.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(j)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+_).attr(N),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),g.close(c.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+_).attr(N),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),r={},d.css("cursor",""),a.scrollPatch(),t.removeData(j),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],R,"colResized("+n+")",{col:l,config:a.config})}))}),w.docEvent=!0,e.on("click",function(e){var t=f(this),a=t.find(L),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");c.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(L+" .layui-edge ").on("click",function(e){var t=f(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?c.sort({field:t,type:"asc",fromEvent:!0}):c.sort({field:t,type:"desc",fromEvent:!0})}),c.commonMember=function(e){var a=f(this).parents("tr").eq(0).data("index"),t=c.layBody.find('tr[data-index="'+a+'"]'),i=(k.cache[c.key]||[])[a]||{},l={tr:t,config:s,data:k.clearCacheKey(i),dataCache:i,index:a,del:function(){k.cache[c.key][a]=[],t.remove(),c.scrollPatch()},update:function(e,t){c.updateRow({index:a,data:e=e||{},related:t},function(e,t){l.data[e]=t})},setRowChecked:function(e){c.setRowChecked(f.extend({index:a},e))}};return f.extend(l,e)}),t=(c.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=(c.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?c.setRowChecked({index:"all",checked:l}):c.setRowChecked({index:i,checked:l}),layui.stope(e),layui.event.call(t[0],R,"checkbox("+o+")",y.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return c.col(a.data("key"))}})))}),c.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;c.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],R,"radio("+o+")",y.call(t[0],{checked:i,getCol:function(){return c.col(a.data("key"))}}))}),c.layBody.on("mouseenter","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").addClass(M)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").removeClass(M)}).on("click","tr",function(e){t.call(this,"row",e)}).on("dblclick","tr",function(e){t.call(this,"rowDouble",e)}).on("contextmenu","tr",function(e){s.defaultContextmenu||e.preventDefault(),t.call(this,"rowContextmenu",e)}),function(e,t){var a=f(this);if(!a.data("off")){if("rowContextmenu"!==e){var i=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");if(f(t.target).is(i)||f(t.target).closest(i)[0])return}layui.event.call(this,R,e+"("+o+")",y.call(a.children("td")[0],{e:t}))}}),n=function(e,t){var a,i,l;(e=f(e)).data("off")||(l=e.data("field"),i=e.data("key"),i=c.col(i),a=e.closest("tr").data("index"),a=k.cache[c.key][a],e.children(u),(i="function"==typeof i.edit?i.edit(a):i.edit)&&((i=f("textarea"===i?'':''))[0].value=(l=e.data("content")||a[l])===undefined||null===l?"":l,e.find("."+E)[0]||e.append(i),i.focus(),t)&&layui.stope(t))},i=(c.layBody.on("change","."+E,function(){var e=f(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[c.key][e],l=y.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return c.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],R,"edit("+o+")",l)}).on("blur","."+E,function(){f(this).remove()}),c.layBody.on(s.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){a.call(this)}).on("mouseleave","td",function(){a.call(this,"hide")}),c.layTotal.on("mouseenter","td",function(){a.call(this)}).on("mouseleave","td",function(){a.call(this,"hide")}),"layui-table-grid-down"),a=function(e){var t=f(this),a=t.children(u);t.data("off")||t.parent().hasClass(H)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.prop("clientWidth")||0
        '))},l=function(e,t){var a=f(this),i=a.parent(),l=i.data("key"),n=c.col(l),o=i.parent().data("index"),d=i.children(u),i="layui-table-cell-c",r=f('');"tips"===(t=t||n.expandedMode||s.cellExpandedMode)?c.tipsIndex=g.tips(['
        ',d.html(),"
        ",''].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:x.ios||x.android?300:c.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){g.close(t)})}}):(c.elem.find("."+i).trigger("click"),c.cssRules(l,function(e){var t=e.style.width,a=n.expandedWidth||s.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],f(this).children().each(function(e){var t=f(this),a=t.attr("lay-data"),a=r.options(this,{attr:a?"lay-data":null,errorText:d+(a||t.attr("lay-options"))}),t=f.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=f(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),c(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')):t.field&&"normal"!==t.type&&0==i&&(u[t.field]=!0)}),c.push(n.join(","))}),o&&layui.each(o.dataTotal,function(e,t){u[t.field]||s.push('"'+(t.total||"")+'"')}),r.join(",")+"\r\n"+c.join("\r\n")+"\r\n"+s.join(","))),d.download=(a.title||l.title||"table_"+(l.index||""))+"."+i,document.body.appendChild(d),d.click(),document.body.removeChild(d)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](W),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l)&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](W),n.setParentCol(i,t))})})),f("."+S).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return(e=C(e)).reload(t,a,i),w.call(e)},k.reloadData=function(){var a=f.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new n(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=f.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.initIndexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),s(R,k)});layui.define(["table"],function(e){"use strict";var P=layui.$,h=layui.form,B=layui.table,y=layui.hint(),j={config:{},on:B.on,eachCols:B.eachCols,index:B.index,set:function(e){var t=this;return t.config=P.extend({},t.config,e),t},resize:B.resize,getOptions:B.getOptions,hideCol:B.hideCol,renderData:B.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){j.reloadData(n,e,t)}}},F=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},L="lay-table-id",q="layui-hide",s=".layui-table-body",R=".layui-table-main",Y=".layui-table-fixed-l",z=".layui-table-fixed-r",l="layui-table-checked",m="layui-table-tree",H="LAY_DATA_INDEX",b="LAY_DATA_INDEX_HISTORY",p="LAY_PARENT_INDEX",g="LAY_CHECKBOX_HALF",X="LAY_EXPAND",V="LAY_HAS_EXPANDED",U="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=/<[^>]+?>/,f=["flexIconClose","flexIconOpen","iconClose","iconOpen","iconLeaf","icon"],a=function(e){var t=this;t.index=++j.index,t.config=P.extend(!0,{},t.config,j.config,e),t.init(),t.render()},x=function(n,i,e){var l=B.cache[n];layui.each(e||l,function(e,t){var a=t[H]||"";-1!==a.indexOf("-")&&(l[a]=t),t[i]&&x(n,i,t[i])})},d=function(d,a,e){var r=F(d),o=("reloadData"!==e&&(r.status={expand:{}}),P.extend(!0,{},r.getOptions(),a)),n=o.tree,c=n.customName.children,i=n.customName.id,l=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,B.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},o.cols),a.parseData),u=a.done;"reloadData"===e&&"fixed"===o.scrollPos&&(r.scrollTopCache=r.config.elem.next().find(s).scrollTop()),o.url?e&&(!l||l.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(l)&&(a=l.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=r.flatToTree(a[t])),N(a[t],function(e){e[X]=X in e?e[X]:e[i]!==undefined&&r.status.expand[e[i]]},c),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),r.initData(a[t]),a},a.parseData.mod=!0):a.data!==undefined&&(a.data=a.data||[],n.data.isSimpleData&&(a.data=r.flatToTree(a.data)),r.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n="renderData"===a,i=(n||delete r.isExpandAll,this.elem.next()),l=(r.updateStatus(null,{LAY_HAS_EXPANDED:!1}),x(d,c),i.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(l.length&&(e=j.checkStatus(d),l.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!n&&o.autoSort&&o.initSort&&o.initSort.type&&j.sort(d),r.renderTreeTable(i),"reloadData"===a&&"fixed"===this.scrollPos&&i.find(s).scrollTop(r.scrollTopCache),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0),a&&a.tree&&a.tree.view&&layui.each(f,function(e,t){a.tree.view[t]!==undefined&&(a.tree.view[t]=r.normalizedIcon(a.tree.view[t]))})};a.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),B.render(P.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},a.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},a.prototype.normalizedIcon=function(e){return e?t.test(e)?e:'':""},a.prototype.getOptions=function(){return this.tableIns?B.getOptions(this.tableIns.config.id):this.config},a.prototype.flatToTree=function(e){var n,i,l,d,r,o,c,u,t=this.getOptions(),a=t.tree,s=a.customName,t=t.id;return e=e||B.cache[t],t=e,n=s.id,i=s.pid,l=s.children,d=a.data.rootPid,n=n||"id",i=i||"parentId",l=l||"children",c={},u=[],layui.each(t,function(e,t){r=n+t[n],o=n+t[i],c[r]||(c[r]={},c[r][l]=[]);var a={};a[l]=c[r][l],c[r]=P.extend({},t,a),((d?c[r][i]===d:!c[r][i])?u:(c[o]||(c[o]={},c[o][l]=[]),c[o][l])).push(c[r])}),u},a.prototype.treeToFlat=function(e,n,i){var l=this,d=l.getOptions().tree.customName,r=d.children,o=d.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=P.extend({},t);a[o]="undefined"!=typeof t[o]?t[o]:n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},a.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[H],getParentNode:function(){return n.getNodeByIndex(e[p])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},a.prototype.getNodeByIndex=function(t){var a,e,n=this,i=n.getNodeDataByIndex(t);return i?((e=n.getOptions()).tree.customName.parent,a=e.id,(e={data:i,dataIndex:i[H],getParentNode:function(){return n.getNodeByIndex(i[p])},update:function(e){return j.updateNode(a,t,e)},remove:function(){return j.removeNode(a,t)},expand:function(e){return j.expandNode(a,P.extend({},e,{index:t}))},setChecked:function(e){return j.setRowChecked(a,P.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},a.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=j.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[H],!0}),i)return this.getNodeByIndex(i)},a.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=B.cache[n],l=n[e];if("delete"!==a&&l)return P.extend(l,a),t?P.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o
        '),I=function(e){p[U]="success",p[f.children]=e,u.initData(p[f.children],p[H]),K(t,!0,!x&&n,i,l,d)},D=b.format,"function"===layui.type(D)?D(p,c,I):(C=P.extend({},b.where||c.where),D=b.autoParam,layui.each(D,function(e,t){t=t.split("=");C[t[0].trim()]=p[(t[1]||t[0]).trim()]}),(D=b.contentType||c.contentType)&&0==D.indexOf("application/json")&&(C=JSON.stringify(C)),S=b.method||c.method,T=b.dataType||c.dataType,_=b.jsonpCallback||c.jsonpCallback,k=b.headers||c.headers,w=b.parseData||c.parseData,O=b.response||c.response,P.ajax({type:S||"get",url:g,contentType:D,data:C,dataType:T||"json",jsonpCallback:_,headers:k||{},success:function(e){(e="function"==typeof w?w.call(c,e)||e:e)[O.statusName]!=O.statusCode?(p[U]="error",p[X]=!1,v.html('')):I(e[O.dataName])},error:function(e,t){p[U]="error",p[X]=!1,"function"==typeof c.error&&c.error(e,t)}})),m;p[V]=!0,N.length&&(!c.initSort||c.url&&!c.autoSort||((b=c.initSort).type?layui.sort(N,b.field,"desc"===b.type,!0):layui.sort(N,B.config.indexName,null,!0)),u.initData(p[f.children],p[H]),S=B.getTrHtml(o,N,null,null,e),E={trs:P(S.trs.join("")),trs_fixed:P(S.trs_fixed.join("")),trs_fixed_r:P(S.trs_fixed_r.join(""))},A=(e.split("-").length-1||0)+1,layui.each(N,function(e,t){E.trs.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":A}).data("index",t[H]),E.trs_fixed.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":A}).data("index",t[H]),E.trs_fixed_r.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":A}).data("index",t[H])}),r.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(E.trs),r.find(Y).find('tbody tr[lay-data-index="'+e+'"]').after(E.trs_fixed),r.find(z).find('tbody tr[lay-data-index="'+e+'"]').after(E.trs_fixed_r),u.renderTreeTable(E.trs,A),n)&&!x&&layui.each(N,function(e,t){K({dataIndex:t[H],trElem:r.find('tr[lay-data-index="'+t[H]+'"]').first(),tableViewElem:r,tableId:o,options:c},a,n,i,l,d)})}else u.isExpandAll=!1,(n&&!x?(layui.each(N,function(e,t){K({dataIndex:t[H],trElem:r.find('tr[lay-data-index="'+t[H]+'"]').first(),tableViewElem:r,tableId:o,options:c},a,n,i,l,d)}),r.find(N.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(","))):(g=u.treeToFlat(N,p[f.id],e),r.find(g.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")))).addClass(q);J("resize-"+o,function(){j.resize(o)},0)(),l&&"loading"!==p[U]&&(D=s.callback.onExpand,"function"===layui.type(D))&&D(o,p,h),"function"===layui.type(d)&&"loading"!==p[U]&&d(o,p,h)}return m},v=(j.expandNode=function(e,t){var a,n,i,l,e=F(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,l=t.callbackFlag,e=e.getOptions().elem.next(),K({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,l,t.done)},j.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=F(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),d=i.customName.isParent,r=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=j.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[U])return!(c=!1)}),!c)return void layui.each(j.getData(a),function(e,t){j.expandNode(a,{index:t[H],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[V])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[d]||o)&&(e[X]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),l.find('tbody tr[data-level!="0"]').removeClass(q),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[d]||o)&&(e[X]=!0,e[V]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return j.sort(a);var s,n=B.getTrHtml(a,e),f={trs:P(n.trs.join("")),trs_fixed:P(n.trs_fixed.join("")),trs_fixed_r:P(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[H].split("-").length-1;s={"data-index":t[H],"lay-data-index":t[H],"data-level":a},f.trs.eq(e).attr(s).data("index",t[H]),f.trs_fixed.eq(e).attr(s).data("index",t[H]),f.trs_fixed_r.eq(e).attr(s).data("index",t[H])}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[d]||o)&&(e[X]=!1,e[r]!==undefined)&&(t.status.expand[e[r]]=!1)}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(q),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);j.resize(a)}},a.prototype.updateNodeIcon=function(e){var t=this.getOptions().tree||{},a=e.scopeEl,n=e.isExpand,e=e.isParent;a.find(".layui-table-tree-flexIcon").css("visibility",e||t.view.showFlexIconIfNotParent?"visible":"hidden").html(n?t.view.flexIconOpen:t.view.flexIconClose),t.view.showIcon&&(a=a.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom)"),n=e?n?t.view.iconOpen:t.view.iconClose:t.view.iconLeaf,a.toggleClass("layui-table-tree-iconLeaf",!e).html(n))},a.prototype.renderTreeTable=function(e,t,a){var l=this,n=l.getOptions(),d=n.elem.next(),i=(d.hasClass(m)||d.addClass(m),n.id),r=n.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(d.attr("lay-filter"),l),f=n.data.length,y=((t=t||0)||(d.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(B.cache[i],function(e,t){f&&(t[H]=String(e));t=t[H];d.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t),d.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t),d.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t)})),null),p=c.name,x=o.indent||14;if(layui.each(e.find('td[data-field="'+p+'"]'),function(e,t){var a,n,i=(t=P(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=d.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[X]&&a[u]&&((y=y||{})[n]=!0),a[g]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+p+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
        ',a[X]?o.flexIconOpen:o.flexIconClose,"
        ",o.showIcon?'
        '+(l.normalizedIcon(a[c.icon])||o.icon||(a[u]?a[X]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
        ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),K({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&l.isExpandAll===undefined)return j.expandAll(i,!0);(!1!==a&&y?(layui.each(y,function(e,t){e=d.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),K({trElem:e.first()},!0)}),J("renderTreeTable2-"+i,function(){h.render(P(".layui-table-tree["+L+'="'+i+'"]'))},0)):J("renderTreeTable-"+i,function(){n.hasNumberCol&&v(l),h.render(P(".layui-table-tree["+L+'="'+i+'"]'))},0))()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),d=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(B.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[H]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),d.eq(e).find(".laytable-cell-numbers").html(n))})}),N=(a.prototype.render=function(e){var t=this;t.tableIns=B["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,P.extend(!0,{},t.config)),t.config=t.tableIns.config},a.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),d(n.getOptions().id,e,a||!0),n.config=P.extend(t,{},n.config,e),n.render(a)},j.reloadData=function(){var e=P.extend(!0,[],arguments);return e[3]="reloadData",j.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):P.extend(t,a),l.push(P.extend({},t)),i||(l=l.concat(N(t[n],a,n,i)))}),l}),o=(a.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||B.cache[n.id],N(e,t,i.customName.children,a)},a.prototype.getTableData=function(){var e=this.getOptions();return B.cache[e.id]},j.updateStatus=function(e,t,a){var e=F(e),n=e.getOptions();return a=a||(n.url?B.cache[n.id]:n.data),e.updateStatus(a,t)},j.sort=function(e){var t,a,i,l,n,d=F(e);d&&(n=(t=d.getOptions()).tree,a=j.getData(e),i=n.customName.children,l=function(e,a,n){layui.sort(e,a,n,!0),layui.each(e,function(e,t){l(t[i]||[],a,n)})},t.autoSort)&&((n=t.initSort).type?l(a,n.field,"desc"===n.type):l(a,B.config.indexName,null),B.cache[e]=a,d.initData(a),j.renderData(e))},function(n){var t=n.config.id,i=F(t),a=n.data=j.getNodeDataByIndex(t,n.index),l=a[H],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(P.extend(i.getNodeDataByIndex(l),e[0]),d.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){j.removeNode(t,a)},n.setRowChecked=function(e){j.setRowChecked(t,{index:a,checked:e})}}),u=(j.updateNode=function(e,a,t){var n,i,l,d,r,o=F(e);o&&((d=o.getOptions()).tree,d=(n=d.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=d.attr("data-index"),l=d.attr("data-level"),t)&&(d=o.getNodeDataByIndex(a,!1,t),r=B.getTrHtml(e,[d]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(P(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}).data("index",i))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},j.removeNode=function(e,t,a){var n=F(e);if(n){var i,l=n.getOptions(),d=l.tree,r=d.customName.isParent,o=d.customName.children,c=l.elem.next(),u=[],s=B.cache[e],t=n.getNodeDataByIndex("string"===layui.type(t)?t:t[H],!1,"delete"),f=n.getNodeDataByIndex(t[p]),d=(n.updateCheckStatus(f),n.treeToFlat([t],t[d.customName.pid],t[p])),t=(layui.each(d,function(e,t){t=t[H];u.push('tr[lay-data-index="'+t+'"]'),-1!==t.indexOf("-")&&delete s[t]}),c.find(u.join(",")).remove(),n.initData());for(i in s)-1!==i.indexOf("-")&&i!==s[i][H]&&delete s[i];layui.each(n.treeToFlat(t),function(e,t){t[b]&&t[b]!==t[H]&&c.find('tr[lay-data-index="'+t[b]+'"]').attr({"data-index":t[H],"lay-data-index":t[H]}).data("index",t[H])}),layui.each(s,function(e,t){c.find('tr[data-level="0"][lay-data-index="'+t[H]+'"]').attr("data-index",e).data("index",e)}),l.hasNumberCol&&v(n),f&&(d=c.find('tr[lay-data-index="'+f[H]+'"]'),a||(f[r]=!(!f[o]||!f[o].length)),n.updateNodeIcon({scopeEl:d,isExpand:f[X],isParent:f[r]})),j.resize(e)}},j.addNodes=function(e,t){var a=F(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=B.config.checkName,r=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,o="number"===layui.type(o)?o:-1,c=P.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){d in t||!u||(t[d]=u[d])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[V]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")).remove(),a.initData(),u[V]=!1,u[U]="local",K({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=B.cache[e].splice(-1===o?B.cache[e].length:o);if(B.cache[e]=B.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(B.cache[e]))):n.data=B.cache[e]),a.initData(),l.find(".layui-none").length)return B.renderData(e),c;var x,f=B.getTrHtml(e,c),h={trs:P(f.trs.join("")),trs_fixed:P(f.trs_fixed.join("")),trs_fixed_r:P(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[H],"lay-data-index":t[H],"data-level":"0"},h.trs.eq(e).attr(x).data("index",t[H]),h.trs_fixed.eq(e).attr(x).data("index",t[H]),h.trs_fixed_r.eq(e).attr(x).data("index",t[H])}),parseInt(c[0][H])-1),y=l.find(R),n=l.find(Y),f=l.find(z);-1==r?y.find('tr[data-level="0"][data-index="0"]')[0]?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):(y.find("tbody").prepend(h.trs),n.find("tbody").prepend(h.trs_fixed),f.find("tbody").prepend(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(r=p[0][b],y.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed_r)),layui.each(B.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[H]+'"]').attr("data-index",e).data("index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")))}return a.updateCheckStatus(u),u&&(o=l.find('tr[lay-data-index="'+u[H]+'"]'),a.updateNodeIcon({scopeEl:o,isExpand:u[X],isParent:u[s]})),j.resize(e),t&&l.find(R).find('tr[lay-data-index="'+c[0][H]+'"]').get(0).scrollIntoViewIfNeeded(),c}},j.checkStatus=function(e,n){var i,t,a,l=F(e);if(l)return l=l.getOptions().tree,i=B.config.checkName,t=j.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[g]}),a=!0,layui.each("all"===l.data.cascade?B.cache[e]:j.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},j.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(m)&&j.sort(e)}),j.on("row",function(e){e.config.elem.next().hasClass(m)&&o(e)}),j.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&(o(e),(t.tree||{}).view.dblClickExpand)&&K({trElem:e.tr.first()},null,null,null,!0)}),j.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&o(e)}),j.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&o(e)}),j.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(m)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),j.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(m)&&(a=F(t),o(e),u.call(a,e.tr,e.checked))}),a.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=P(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},a.prototype.updateCheckStatus=function(e,t){var a,n,i,l,d,r,o,c=this,u=c.getOptions();return!!u.hasChecboxCol&&(a=u.tree,n=u.id,i=u.elem.next(),l=B.config.checkName,"all"!==(d=a.data.cascade)&&"parent"!==d||!e||(d=c.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(d,function(e,t){var a=i.find('tr[lay-data-index="'+t[H]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),a.prop({checked:n,indeterminate:t[g]})})),o=!(r=!0),0<(e=(e="all"===a.data.cascade?B.cache[n]:j.getData(n,!0)).filter(function(e){return!e[u.disabledName]})).length?layui.each(e,function(e,t){if((t[l]||t[g])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}):r=!1,o=o&&!r,i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o}),r)},a.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=B.config.checkName,t=t.customName.children,d=[];return!(a[g]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[g]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[g])return a[g]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[g]=!n&&0li"],n.bodyElem=["."+C.CONST.BODY+":eq(0)",">."+C.CONST.ITEM],n.getContainer=function(){var e=n.documentElem||t.elem;return{header:{elem:e.find(n.headerElem[0]),items:e.find(n.headerElem.join(""))},body:{elem:e.find(n.bodyElem[0]),items:e.find(n.bodyElem.join(""))}}},"array"===layui.type(t.header)?"string"==typeof t.header[0]?(n.headerElem=t.header.concat(),n.documentElem=p(document)):(n.elemView=p('
        '),t.className&&n.elemView.addClass(t.className),a=p('
          '),i=p('
          '),layui.each(t.header,function(e,t){t=n.renderHeaderItem(t);a.append(t)}),layui.each(t.body,function(e,t){t=n.renderBodyItem(t);i.append(t)}),n.elemView.append(a).append(i),t.elem.html(n.elemView)):n.renderClose(),"array"===layui.type(t.body)&&"string"==typeof t.body[0]&&(n.documentElem=p(document),n.bodyElem=t.body.concat()),n.data());"index"in t&&e.index!=t.index?n.change(n.findHeaderItem(t.index),!0):-1===e.index&&n.change(n.findHeaderItem(0),!0),n.roll("auto"),t.elem.hasClass(C.CONST.CLASS_HIDEV)&&t.elem.removeClass(C.CONST.CLASS_HIDEV),"function"==typeof t.afterRender&&t.afterRender(e),layui.event.call(t.elem[0],C.CONST.MOD_NAME,"afterRender("+t.id+")",e)},events:function(){var e,t=this,a=t.config,i=t.getContainer(),n=C.CONST.MOD_NAME,i=(t.documentElem?i.header:a).elem,a=a.trigger+(".lay_"+n+"_trigger"),n=t.documentElem?t.headerElem[1]:t.headerElem.join("");i.off(a).on(a,n,function(){t.change(p(this))}),r.onresize||(p(window).on("resize",function(){clearTimeout(e),e=setTimeout(function(){layui.each(C.cache.id,function(e){e=C.getInst(e);e&&e.roll("init")})},50)}),r.onresize=!0)}}),r={},t=C.Class;t.prototype.add=function(e){var t,a,i=this,n=(i.config,i.getContainer()),r=i.renderHeaderItem(e),d=i.renderBodyItem(e),o=i.data();e=p.extend({active:!0},e),/(before|after)/.test(e.mode)?(a=(t=e.hasOwnProperty("index"))?i.findHeaderItem(e.index):o.thisHeaderItem,t=t?i.findBodyItem(e.index):o.thisHeaderItem,a[e.mode](r),t[e.mode](d)):(a={prepend:"prepend",append:"append"}[e.mode||"append"]||"append",n.header.elem[a](r),n.body.elem[a](d)),e.active?i.change(r,!0):i.roll("auto"),"function"==typeof e.done&&e.done(p.extend(o,{headerItem:r,bodyItem:d}))},t.prototype.close=function(e,t){if(e&&e[0]){var a=this,i=a.config,n=e.attr("lay-id"),r=e.index();if("false"!==e.attr("lay-closable")){var d=a.data();if(!t)if(!1===layui.event.call(e[0],C.CONST.MOD_NAME,"beforeClose("+i.id+")",p.extend(d,{index:r})))return;e.hasClass(C.CONST.CLASS_THIS)&&(e.next()[0]?a.change(e.next(),!0):e.prev()[0]&&a.change(e.prev(),!0)),a.findBodyItem(n||r).remove(),e.remove(),a.roll("auto",r);d=a.data();layui.event.call(d.thisHeaderItem[0],C.CONST.MOD_NAME,"afterClose("+i.id+")",d)}}},t.prototype.closeMult=function(i,e){var n=this,t=n.config,a=n.getContainer(),r=n.data(),d=a.header.items,a=(a.body.items,'[lay-closable="false"]'),o=(e=e===undefined?r.index:e,n.findHeaderItem(e)),l=(n.findBodyItem(e),o.index()),r=("false"!==r.thisHeaderItem.attr("lay-closable")&&("all"!==i&&i?e!==r.index&&n.change(o,!0):(e=d.filter(":gt("+r.index+")"+a).eq(0),o=p(d.filter(":lt("+r.index+")"+a).get().reverse()).eq(0),e[0]?n.change(e,!0):o[0]&&n.change(o,!0))),d.each(function(e){var t=p(this),a=t.attr("lay-id"),a=n.findBodyItem(a||e);"false"!==t.attr("lay-closable")&&("other"===i&&e!==l||"right"===i&&l");return t.html(e.title||"New Tab").attr("lay-id",e.id),this.appendClose(t,e),t},t.prototype.renderBodyItem=function(e){var t=this.config,t=p(e.bodyItem||t.bodyItem||'
          ');return t.html(e.content||"").attr("lay-id",e.id),t},t.prototype.appendClose=function(e,t){var a=this;a.config.closable&&(0==(t=t||{}).closable&&e.attr("lay-closable","false"),"false"===e.attr("lay-closable")||e.find("."+C.CONST.CLOSE)[0]||((t=p('')).on("click",function(){return a.close(p(this).parent()),!1}),e.append(t)))},t.prototype.renderClose=function(){var t=this,a=t.config;t.getContainer().header.items.each(function(){var e=p(this);a.closable?t.appendClose(e):e.find("."+C.CONST.CLOSE).remove()})},t.prototype.roll=function(e,i){var n=this,t=n.config,a=n.getContainer(),r=a.header.elem,d=a.header.items,a=r.prop("scrollWidth"),o=Math.ceil(r.outerWidth()),l=r.data("left")||0,s="scroll"===t.headerMode,c="layui-tabs-scroll",f="layui-tabs-bar",u=["layui-icon-prev","layui-icon-next"],m={elem:p('
          '),bar:p(['
          ','','',"
          "].join(""))};if("normal"!==t.headerMode){var h,y=r.parent("."+c);if(s||!s&&o=o-l)return r.css("left",-a).data("left",-a),!1}),l=r.data("left")||0,y.find("."+u[0])[l<0?"removeClass":"addClass"](C.CONST.CLASS_DISABLED),y.find("."+u[1])[0
          ')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
          '+i.text.none+"
          "),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(T),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(T)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(r,e){var d=this,s=d.config,o=s.customName,e=e||s.data;layui.each(e,function(e,i){var a,n,t=i[o.children]&&0
          "),c=p(['
          ','
          ','
          ',s.showLine?t?'':'':'',s.showCheckbox?'':"",s.isJump&&i.href?''+(i[o.title]||i.label||s.text.defaultNodeName)+"":''+(i[o.title]||i.label||s.text.defaultNodeName)+"","
          ",s.edit?(a={add:'',update:'',del:''},n=['
          '],!0===s.edit&&(s.edit=["update","del"]),"object"==typeof s.edit?(layui.each(s.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
          "):void 0):"","
          "].join(""));t&&(c.append(l),d.tree(l,i[o.children])),r.append(c),c.prev("."+k)[0]&&c.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),t||c.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),d.spread(c,i),s.showCheckbox&&(i.checked&&d.checkids.push(i[o.id]),d.checkClick(c,i)),s.edit&&d.operate(c,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+b),i=e.children("."+g),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+C),e=e.find("."+w),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+N),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(F)?(n.removeClass(F),i.slideUp(200),a.removeClass(x).addClass(v),l.updateFieldValue(t,"spread",!1)):(n.addClass(F),i.slideDown(200),a.addClass(x).removeClass(v),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+k)).removeClass(F),i.children("."+N).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(x).addClass(v))):s="normal"}),e.on("click",function(){p(this).hasClass(u)||(s=n.hasClass(F)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+N)[0]||e.find("."+N).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+k)[0]&&(a=(e=e.parent("."+N)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+b).children("."+g).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+b),h=e.children("."+g);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+N),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+C).addClass("layui-tree-icon"),h.find("."+C).children(".layui-icon").addClass(v).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(m),r.append('
          '));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+N),[c]),o.showLine&&(n[0]?(n.hasClass(S)||n.addClass(S),r.find("."+N).each(function(){p(this).children("."+k).last().addClass(T)}),(n.children("."+k).last().prev().hasClass(T)?n.children("."+k).last().prev():n.children("."+k).last()).removeClass(T),!r.parent("."+N)[0]&&r.next()[0]&&n.children("."+k).last().removeClass(T)):(l=r.siblings("."+k),a=1,c=r.parent("."+N),layui.each(l,function(e,i){p(i).children("."+N)[0]||(a=0)}),(1==a?(l.children("."+N).addClass(L),l.children("."+N).children("."+k).removeClass(T),r.children("."+N).addClass(L),c.removeClass(S),c.children("."+k).last().children("."+N).children("."+k).last()):r.children("."+N).children("."+k)).addClass(T))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+N).children("."+k).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+w).html(),h.children("."+w).html(""),h.append(''),h.children(".layui-tree-editInput").val(f.unescape(l)).focus(),i=function(e){var i=f.escape(e.val().trim())||o.text.defaultNodeName;e.remove(),h.children("."+w).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d[u.title]||"")+'" \u5417\uff1f',function(e){var l,a,i;o.operate&&o.operate(t),t.status="remove",y.close(e),r.prev("."+k)[0]||r.next("."+k)[0]||r.parent("."+N)[0]?(r.siblings("."+k).children("."+b)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+k)[0]&&(i=e.siblings("."+k).children("."+b),a=(e=e.parent("."+N).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked)&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n)&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+k)))})(r),o.showLine&&(e=r.siblings("."+k),a=1,i=r.parent("."+N),layui.each(e,function(e,i){p(i).children("."+N)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(S),e.children("."+N).addClass(L),e.children("."+N).children("."+k).removeClass(T)),(r.next()[0]?i.children("."+k).last():r.prev()).children("."+N).children("."+k).last().addClass(T),r.next()[0]||r.parents("."+k)[1]||r.parents("."+k).eq(0).next()[0]||r.prev("."+k).addClass(T)):!r.next()[0]&&r.hasClass(T)&&r.prev().addClass(T))):(e=r.parent("."+N).prev(),o.showLine?(e.find("."+C).removeClass("layui-tree-icon"),e.find("."+C).children(".layui-icon").removeClass(x).addClass("layui-icon-file"),(i=e.parents("."+N).eq(0)).addClass(S),i.children("."+k).each(function(){p(this).children("."+N).children("."+k).last().addClass(T)})):e.find(".layui-tree-iconArrow").addClass(m),r.parents("."+k).eq(0).removeClass(F),r.parent("."+N).remove()),r.remove()):(r.remove(),s.elem.append(s.elemNone))})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+w).each(function(){var i,e=p(this).parents("."+b);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+N)[0]&&i(e.parent("."+N).parent("."+k))})(e.parent("."+k)))}),e.find("."+b).each(function(){var e=p(this).parent("."+k);e.hasClass("layui-tree-searchShow")||e.addClass(m)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+b).each(function(){p(this).parent("."+k).removeClass("layui-tree-searchShow "+m)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+k).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+b).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var d=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=d.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},s="layui-hide",u="layui-btn-disabled",c="layui-none",r="layui-transfer-box",h="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
          ','
          ','","
          ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
            ',"
            "].join("")},p=['
            ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
            ','",'","
            ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
            "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=d.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=d.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=d(n(p,{open:"{{",close:"}}",tagStyle:"legacy"}).render({data:t,index:e.index})),i=t.elem=d(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+r),e.layHeader=e.elem.find("."+h),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
          • ",'',"
          • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(c){var r=this,o=r.config;c=c||{},r.layBox.each(function(e){var t=d(this),a=t.find("."+f),t=t.find("."+h).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=d(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),r.layBtn.eq(e)[l?"removeClass":"addClass"](u),c.stopNone||(i=a.children("li:not(."+s+")").length,r.noneView(a,i?"":o.text.none))}),r.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=d('

            '+(t||"")+"

            ");e.find("."+c)[0]&&e.find("."+c).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){d(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=d.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),c=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+r).find("."+f).append(t.clone()),t.remove(),c.push(a[0].value),i.setValue()):l.each(function(e){d(this).find("."+f).children("li").each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+r).find("."+f).append(e.clone()),e.remove(),c.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+r).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(c),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=d(this).prev(),t=e[0].checked,a=e.parents("."+r).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=d(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent().data("index");a[0].disabled||!1!==("function"==typeof l.dblclick?l.dblclick({elem:t,data:n.getData([a[0].value])[0],index:i}):null)&&n.transfer(i,t)}),n.layBtn.on("click",function(){var e=d(this),t=e.data("index");e.hasClass(u)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=d(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](s),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+s).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var o=layui.$,l=layui.lay,t=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=o.extend({},n.config,e),n},on:function(e,n){return layui.onevent.call(this,r,e,n)}}),r="carousel",s="layui-this",u="layui-carousel-left",c="layui-carousel-right",m="layui-carousel-prev",h="layui-carousel-next",a="layui-carousel-arrow",d="layui-carousel-ind",n=function(e){var n=this;n.config=o.extend({},n.config,t.config,e),n.render()};n.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},n.prototype.render=function(){var e=this,n=e.config,i=o(n.elem);if(1*[carousel-item]>*"),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(s),e.indicator(),e.arrow(),e.autoplay(),1=this.elemItem.length?0:e},n.prototype.addIndex=function(e){var n=this.config;n.index=n.index+(e=e||1),n.index>=this.elemItem.length&&(n.index=0)},n.prototype.subIndex=function(e){var n=this.config;n.index=n.index-(e=e||1),n.index<0&&(n.index=this.elemItem.length-1)},n.prototype.autoplay=function(){var e=this,n=e.config,i=e.elemItem.length;n.autoplay&&(clearInterval(e.timer),1',''].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+a)[0]&&e.elem.find("."+a).remove(),1i.index?n.slide("add",e-i.index):e
              ',(n=[],layui.each(e.elemItem,function(e){n.push("")}),n.join("")),"
            "].join(""));i.elem.attr("lay-indicator",i.indicator),i.elem.find("."+d)[0]&&i.elem.find("."+d).remove(),1t[a?"height":"width"]()/3)&&o.slide(0a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
              "),i=1;i<=a.length;i++){var n='
            • ";a.half&&parseInt(a.value)!==a.value&&i==Math.ceil(a.value)?t=t+'
            • ":t+=n}t+="
            ",a.text&&(t+=''+a.value+"");var s=a.elem,o=s.next("."+c.ELEM);o[0]&&o.remove(),e.elemTemplate=u(t),a.span=e.elemTemplate.next("span"),a.setText&&a.setText(a.value),s.html(e.elemTemplate),s.addClass("layui-inline"),a.readonly||e.action()},extendsInstance:function(){var a=this,l=a.config;return{setvalue:function(e){l.value=e,a.render()}}}}),c=l.CONST;l.Class.prototype.action=function(){var n=this.config,t=this.elemTemplate,i=t.find("i").width(),l=t.children("li");l.each(function(e){var a=e+1,l=u(this);l.on("click",function(e){n.value=a,n.half&&e.pageX-u(this).offset().left<=i/2&&(n.value=n.value-.5),n.text&&t.next("span").text(n.value),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value)}),l.on("mousemove",function(e){t.find("i").each(function(){u(this).addClass(c.ICON_RATE).removeClass(c.ICON_SOLID_HALF)}),t.find("i:lt("+a+")").each(function(){u(this).addClass(c.ICON_RATE_SOLID).removeClass(c.ICON_HALF_RATE)}),n.half&&e.pageX-u(this).offset().left<=i/2&&l.children("i").addClass(c.ICON_RATE_HALF).removeClass(c.ICON_RATE_SOLID)}),l.on("mouseleave",function(){t.find("i").each(function(){u(this).addClass(c.ICON_RATE).removeClass(c.ICON_SOLID_HALF)}),t.find("i:lt("+Math.floor(n.value)+")").each(function(){u(this).addClass(c.ICON_RATE_SOLID).removeClass(c.ICON_HALF_RATE)}),n.half&&parseInt(n.value)!==n.value&&t.children("li:eq("+Math.floor(n.value)+")").children("i").addClass(c.ICON_RATE_HALF).removeClass(c.ICON_SOLID_RATE)})}),a.touchSwipe(t,{onTouchMove:function(e,a){var i;Date.now()-a.timeStart<=200||(a=e.touches[0].pageX,e=t.width()/n.length,a=(a-t.offset().left)/e,(i=(i=(e=a%1)<=.5&&n.half?.5+(a-e):Math.ceil(a))>n.length?n.length:i)<0&&(i=0),l.each(function(e){var a=u(this).children("i"),l=Math.ceil(i)-e==1,t=Math.ceil(i)>e,e=i-e==.5;t?(a.addClass(c.ICON_RATE_SOLID).removeClass(c.ICON_HALF_RATE),n.half&&e&&a.addClass(c.ICON_RATE_HALF).removeClass(c.ICON_RATE_SOLID)):a.addClass(c.ICON_RATE).removeClass(c.ICON_SOLID_HALF),a.toggleClass("layui-rate-hover",l)}),n.value=i,n.text&&t.next("span").text(n.value),n.setText&&n.setText(n.value))},onTouchEnd:function(e,a){Date.now()-a.timeStart<=200||(t.find("i").removeClass("layui-rate-hover"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value))}})},e(c.MOD_NAME,l)});layui.define("jquery",function(o){"use strict";var w=layui.$,l=function(o){};l.prototype.load=function(o){var i,n,r,l,c,m,e,t,a,f,s,u,p,d,y,g=this,h=0,v=w((o=o||{}).elem);if(v[0])return c=w(o.scrollElem||document),m="mb"in o?o.mb:50,e=!("isAuto"in o)||o.isAuto,t=o.moreText||"\u52a0\u8f7d\u66f4\u591a",a=o.end||"\u6ca1\u6709\u66f4\u591a\u4e86",f="top"===(o.direction||"bottom"),g._cleanup(v,c),s=o.scrollElem&&o.scrollElem!==document,p=w('"),v.find(".layui-flow-more")[0]||v[f?"prepend":"append"](p),d=function(o,l){var e=s?c.prop("scrollHeight"):document.documentElement.scrollHeight,t=c.scrollTop();o=w(o),p[f?"after":"before"](o),(l=0==l||null)?p.html(a):p.find("a").html(u),n=l,i=null,r&&r(),f&&(o=s?c.prop("scrollHeight"):document.documentElement.scrollHeight,1===h?c.scrollTop(o):1
            '),"function"==typeof o.done&&o.done(++h,d)})(),p.find("a").on("click.flow",function(){w(this);n||i||y()}),o.isLazyimg&&(r=g.lazyimg({elem:o.elem+" img",scrollElem:o.scrollElem,direction:o.direction})),e&&c.on("scroll.flow",function(){var e=w(this),t=e.scrollTop();l&&clearTimeout(l),!n&&v.width()&&(l=setTimeout(function(){var o=(s?e:w(window)).height(),l=s?e.prop("scrollHeight"):document.documentElement.scrollHeight;(f?t<=m:l-t-o<=m)&&!i&&y()},100))}),g},l.prototype.lazyimg=function(o){var l,m=this,a=0,f=w((o=o||{}).scrollElem||document),s=o.elem||"img",n="top"===(o.direction||"bottom"),u=o.scrollElem&&o.scrollElem!==document,p=function(l,o){var e,t=f.scrollTop(),o=t+o,i=u?l.offset().top-f.offset().top+t:l.offset().top;(n?i+l.height():i)>=t&&i<=o&&l.attr("lay-src")&&(e=l.attr("lay-src"),layui.img(e,function(){var o=m.lazyimg.elem.eq(a);l.attr("src",e).removeAttr("lay-src"),o[0]&&r(o),a++},function(){m.lazyimg.elem.eq(a);l.removeAttr("lay-src")}))},r=function(o,l){var e=(u?l||f:w(window)).height(),t=f.scrollTop(),i=t+e;if(m.lazyimg.elem=w(s),o)p(o,e);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},R=layui.code?layui.code.index+1e4:0,j=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var o,i,t,a,n,d,c,s,r,u,y,p,E,f,h,v,m,L,_,M,C,g={config:l=x.extend(!0,{},T,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,x.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},w=x(l.elem);return 1',l.ln?['
            ',D.digit(t+1)+".","
            "].join(""):"",'
            ',e||" ","
            ","

            xEI_A>a+UQ^8#Y-xOj4d< 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 D7CfxR literal 0 HcmV?d00001 diff --git a/ss-admin/src/main/resources/static/images/ic_404.png b/ss-admin/src/main/resources/static/images/ic_404.png new file mode 100644 index 0000000000000000000000000000000000000000..e2eb6835274f121ba98d70c0a6d13228b1946af6 GIT binary patch literal 26221 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 literal 0 HcmV?d00001 diff --git a/ss-admin/src/main/resources/static/images/icon-login.png b/ss-admin/src/main/resources/static/images/icon-login.png new file mode 100644 index 0000000000000000000000000000000000000000..1db2f96207806cbec7ea333c6d253d323a982777 GIT binary patch literal 2791 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 z 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%0Aun3C+C72SH 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�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

            _X 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"interactive"===n[o].readyState){t=n[o].src;break}return t||n[r].src}();return t.substring(0,t.lastIndexOf("/")+1)}(),a=function(e,n){n=n||"log",t.console&&console[n]&&console[n]("layui error hint: "+e)},i="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),u=n.builtin={lay:"lay",layer:"layer",laydate:"laydate",laypage:"laypage",laytpl:"laytpl",layedit:"layedit",form:"form",upload:"upload",dropdown:"dropdown",transfer:"transfer",tree:"tree",table:"table",element:"element",rate:"rate",colorpicker:"colorpicker",slider:"slider",carousel:"carousel",flow:"flow",util:"util",code:"code",jquery:"jquery",all:"all","layui.all":"layui.all"};r.prototype.cache=n,r.prototype.define=function(t,e){var r=this,o="function"==typeof t,a=function(){var t=function(t,e){layui[t]=e,n.status[t]=!0};return"function"==typeof e&&e(function(r,o){t(r,o),n.callback[r]=function(){e(t)}}),this};return o&&(e=t,t=[]),r.use(t,a),r},r.prototype.use=function(t,r,l){function c(t,e){var r="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===t.type||r.test((t.currentTarget||t.srcElement).readyState))&&(n.modules[d]=e,y.removeChild(m),function o(){return++v>1e3*n.timeout/4?a(d+" is not a valid module","error"):void(n.status[d]?s():setTimeout(o,4))}())}function s(){l.push(layui[d]),t.length>1?p.use(t.slice(1),r,l):"function"==typeof r&&function(){return layui.jquery&&"function"==typeof layui.jquery?layui.jquery(function(){r.apply(layui,l)}):void r.apply(layui,l)}()}var p=this,f=n.dir=n.dir?n.dir:o,y=e.getElementsByTagName("head")[0];t=function(){return"string"==typeof t?[t]:"function"==typeof t?(r=t,["all"]):t}();var d=t[0],v=0;if(l=l||[],n.host=n.host||(f.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===t.length||layui["layui.all"]&&u[d])return s(),p;var h=(u[d]?f+"modules/":/^\{\/\}/.test(p.modules[d])?"":n.base||"")+(p.modules[d]||d)+".js";if(h=h.replace(/^\{\/\}/,""),!n.modules[d]&&layui[d]&&(n.modules[d]=h),n.modules[d])!function g(){return++v>1e3*n.timeout/4?a(d+" is not a valid module","error"):void("string"==typeof n.modules[d]&&n.status[d]?s():setTimeout(g,4))}();else{var m=e.createElement("script");m.async=!0,m.charset="utf-8",m.src=h+function(){var t=n.version===!0?n.v||(new Date).getTime():n.version||"";return t?"?v="+t:""}(),y.appendChild(m),!m.attachEvent||m.attachEvent.toString&&m.attachEvent.toString().indexOf("[native code")<0||i?m.addEventListener("load",function(t){c(t,h)},!1):m.attachEvent("onreadystatechange",function(t){c(t,h)}),n.modules[d]=h}return p},r.prototype.getStyle=function(e,n){var r=e.currentStyle?e.currentStyle:t.getComputedStyle(e,null);return r[r.getPropertyValue?"getPropertyValue":"getAttribute"](n)},r.prototype.link=function(t,r,o){var i=this,u=e.createElement("link"),l=e.getElementsByTagName("head")[0];"string"==typeof r&&(o=r);var c=(o||t).replace(/\.|\//g,""),s=u.id="layuicss-"+c,p=0;return u.rel="stylesheet",u.href=t+(n.debug?"?v="+(new Date).getTime():""),u.media="all",e.getElementById(s)||l.appendChild(u),"function"!=typeof r?i:(function f(){return++p>1e3*n.timeout/100?a(t+" timeout"):void(1989===parseInt(i.getStyle(e.getElementById(s),"width"))?function(){r()}():setTimeout(f,100))}(),i)},n.callback={},r.prototype.factory=function(t){if(layui[t])return"function"==typeof n.callback[t]?n.callback[t]:null},r.prototype.addcss=function(t,e,r){return layui.link(n.dir+"css/"+t,e,r)},r.prototype.img=function(t,e,n){var r=new Image;return r.src=t,r.complete?e(r):(r.onload=function(){r.onload=null,"function"==typeof e&&e(r)},void(r.onerror=function(t){r.onerror=null,"function"==typeof n&&n(t)}))},r.prototype.config=function(t){t=t||{};for(var e in t)n[e]=t[e];return this},r.prototype.modules=function(){var t={};for(var e in u)t[e]=u[e];return t}(),r.prototype.extend=function(t){var e=this;t=t||{};for(var n in t)e[n]||e.modules[n]?a(n+" Module already exists","error"):e.modules[n]=t[n];return e},r.prototype.router=function(t){var e=this,t=t||location.hash,n={path:[],search:{},hash:(t.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)?(t=t.replace(/^#\//,""),n.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],e.each(t,function(t,e){/^\w+=/.test(e)?function(){e=e.split("="),n.search[e[0]]=e[1]}():n.path.push(e)}),n):n},r.prototype.url=function(t){var e=this,n={pathname:function(){var e=t?function(){var e=(t.match(/\.[^.]+?\/.+/)||[])[0]||"";return e.replace(/^[^\/]+/,"").replace(/\?.+/,"")}():location.pathname;return e.replace(/^\//,"").split("/")}(),search:function(){var n={},r=(t?function(){var e=(t.match(/\?.+/)||[])[0]||"";return e.replace(/\#.+/,"")}():location.search).replace(/^\?+/,"").split("&");return e.each(r,function(t,e){var r=e.indexOf("="),o=function(){return r<0?e.substr(0,e.length):0!==r&&e.substr(0,r)}();o&&(n[o]=r>0?e.substr(r+1):null)}),n}(),hash:e.router(function(){return t?(t.match(/#.+/)||[])[0]||"":location.hash}())};return n},r.prototype.data=function(e,n,r){if(e=e||"layui",r=r||localStorage,t.JSON&&t.JSON.parse){if(null===n)return delete r[e];n="object"==typeof n?n:{key:n};try{var o=JSON.parse(r[e])}catch(a){var o={}}return"value"in n&&(o[n.key]=n.value),n.remove&&delete o[n.key],r[e]=JSON.stringify(o),n.key?o[n.key]:o}},r.prototype.sessionData=function(t,e){return this.data(t,e,sessionStorage)},r.prototype.device=function(e){var n=navigator.userAgent.toLowerCase(),r=function(t){var e=new RegExp(t+"/([^\\s\\_\\-]+)");return t=(n.match(e)||[])[1],t||!1},o={os:function(){return/windows/.test(n)?"windows":/linux/.test(n)?"linux":/iphone|ipod|ipad|ios/.test(n)?"ios":/mac/.test(n)?"mac":void 0}(),ie:function(){return!!(t.ActiveXObject||"ActiveXObject"in t)&&((n.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:r("micromessenger")};return e&&!o[e]&&(o[e]=r(e)),o.android=/android/.test(n),o.ios="ios"===o.os,o.mobile=!(!o.android&&!o.ios),o},r.prototype.hint=function(){return{error:a}},r.prototype.each=function(t,e){var n,r=this;if("function"!=typeof e)return r;if(t=t||[],t.constructor===Object){for(n in t)if(e.call(t[n],n,t[n]))break}else for(n=0;na?1:o0;o--)if("interactive"===n[o].readyState){t=n[o].src;break}return t||n[r].src}();return t.substring(0,t.lastIndexOf("/")+1)},n.stope=function(t){t=t||window.event,t.stopPropagation?t.stopPropagation():t.cancelBubble=!0},n.each=function(t,e){var n,r=this;if("function"!=typeof e)return r;if(t=t||[],t.constructor===Object){for(n in t)if(e.call(t[n],n,t[n]))break}else for(n=0;n80?window.console&&console.error(u+".css: Invalid"):void(1989===parseInt(n.getStyle(e.getElementById(a),"width"))?r():setTimeout(l,100))}()},n.hasScrollbar=function(){return e.body.scrollHeight>(window.innerHeight||e.documentElement.clientHeight)},n.position=function(t,r,o){if(r){o=o||{},t!==e&&t!==n("body")[0]||(o.clickType="right");var i="right"===o.clickType?function(){var t=o.e||window.event||{};return{left:t.clientX,top:t.clientY,right:t.clientX,bottom:t.clientY}}():t.getBoundingClientRect(),c=r.offsetWidth,u=r.offsetHeight,a=function(t){return t=t?"scrollLeft":"scrollTop",e.body[t]|e.documentElement[t]},s=function(t){return e.documentElement[t?"clientWidth":"clientHeight"]},l=5,f=i.left,p=i.bottom;f+c+l>s("width")&&(f=s("width")-c-l),p+u+l>s()&&(i.top>u+l?p=i.top-u-2*l:"right"===o.clickType&&(p=s()-u-2*l,p<0&&(p=0)));var h=o.position;if(h&&(r.style.position=h),r.style.left=f+("fixed"===h?0:a(1))+"px",r.style.top=p+("fixed"===h?0:a())+"px",!n.hasScrollbar()){var d=r.getBoundingClientRect();!o.SYSTEM_RELOAD&&d.bottom+l>s()&&(o.SYSTEM_RELOAD=!0,setTimeout(function(){n.position(t,r,o)},50))}}},n.options=function(t,e){var r=n(t),o=e||"lay-options";try{return new Function("return "+(r.attr(o)||"{}"))()}catch(i){return hint.error("parseerror:"+i,"error"),{}}},n.isTopElem=function(t){var r=[e,n("body")[0]],o=!1;return n.each(r,function(e,n){if(n===t)return o=!0}),o},r.addStr=function(t,e){return t=t.replace(/\s+/," "),e=e.replace(/\s+/," ").split(" "),n.each(e,function(e,n){new RegExp("\\b"+n+"\\b").test(t)||(t=t+" "+n)}),t.replace(/^\s|\s$/,"")},r.removeStr=function(t,e){return t=t.replace(/\s+/," "),e=e.replace(/\s+/," ").split(" "),n.each(e,function(e,n){var r=new RegExp("\\b"+n+"\\b");r.test(t)&&(t=t.replace(r,""))}),t.replace(/\s+/," ").replace(/^\s|\s$/,"")},r.prototype.find=function(t){var e=this,r=0,o=[],i="object"==typeof t;return this.each(function(n,c){for(var u=i?[t]:c.querySelectorAll(t||null);r0)return r[0].style[t]}():r.each(function(r,i){"object"==typeof t?n.each(t,function(t,e){i.style[t]=o(e)}):i.style[t]=o(e)})},r.prototype.width=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].offsetWidth}():e.each(function(n,r){e.css("width",t)})},r.prototype.height=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].offsetHeight}():e.each(function(n,r){e.css("height",t)})},r.prototype.attr=function(t,e){var n=this;return void 0===e?function(){if(n.length>0)return n[0].getAttribute(t)}():n.each(function(n,r){r.setAttribute(t,e)})},r.prototype.removeAttr=function(t){return this.each(function(e,n){n.removeAttribute(t)})},r.prototype.html=function(t){return this.each(function(e,n){n.innerHTML=t})},r.prototype.val=function(t){return this.each(function(e,n){n.value=t})},r.prototype.append=function(t){return this.each(function(e,n){"object"==typeof t?n.appendChild(t):n.innerHTML=n.innerHTML+t})},r.prototype.remove=function(t){return this.each(function(e,n){t?n.removeChild(t):n.parentNode.removeChild(n)})},r.prototype.on=function(t,e){return this.each(function(n,r){r.attachEvent?r.attachEvent("on"+t,function(t){t.target=t.srcElement,e.call(r,t)}):r.addEventListener(t,e,!1)})},r.prototype.off=function(t,e){return this.each(function(n,r){r.detachEvent?r.detachEvent("on"+t,e):r.removeEventListener(t,e,!1)})},window.lay=n,window.layui&&layui.define&&layui.define(function(e){e(t,n)})}();layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error: ";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)});layui.define(function(e){"use strict";var a=document,t="getElementById",n="getElementsByTagName",i="laypage",r="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups="groups"in a?0|a.groups:5;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?''+a.prev+"":""}(),page:function(){var e=[];if(a.count<1)return"";n>1&&a.first!==!1&&0!==t&&e.push(''+(a.first||1)+"");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r2&&e.push('');r<=u;r++)r===a.curr?e.push('"+r+""):e.push(''+r+"");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1…'),0!==t&&e.push(''+(a.last||a.pages)+"")),e.join("")}(),next:function(){return a.next?''+a.next+"":""}(),count:'共 '+a.count+" 条",limit:function(){var e=['"}(),refresh:['','',""].join(""),skip:function(){return['到第','','页',""].join("")}()};return['
            ',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join("")}(),"
            "].join("")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n]("button")[0],l=e[n]("input")[0],p=e[n]("select")[0],c=function(){var e=0|l.value.replace(/\s|\D/g,"");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;oi.pages||(i.curr=e,t.render())});p&&s.on(p,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,"click",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n]("input")[0];t&&s.on(t,"keyup",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\D/.test(n)&&(this.value=n.replace(/\D/,"")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t]("layui-laypage-"+i.index);n.jump(s),i.hash&&!e&&(location.hash="!"+i.hash+"="+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)});!function(e){"use strict";var t=e.layui&&layui.define,a={getPath:e.lay&&lay.getPath?lay.getPath():"",link:function(t,a,l){n.path&&e.lay&&lay.link&&lay.link(n.path+t,a,l)}},n={v:"5.2.1",config:{},index:e.laydate&&e.laydate.v?1e5:0,path:a.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var l="laydate",i="",r=(t?"modules/laydate/":"theme/")+"default/laydate.css?v="+n.v+i;return t?layui.addcss(r,e,l):a.link(r,e,l),this}},l=function(){var e=this;return{hint:function(t){e.hint.call(e,t)},config:e.config}},i="laydate",r=".layui-laydate",o="layui-this",s="laydate-disabled",y=[100,2e5],d="layui-laydate-static",m="layui-laydate-list",c="laydate-selected",u="layui-laydate-hint",h="layui-laydate-footer",f=".laydate-btns-confirm",p="laydate-time-text",g=".laydate-btns-time",v=function(e){var t=this;t.index=++n.index,t.config=lay.extend({},t.config,n.config,e),n.ready(function(){t.init()})};v.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},v.prototype.config={type:"date",range:!1,format:"yyyy-MM-dd",value:null,isInitValue:!0,min:"1900-1-1",max:"2099-12-31",trigger:"click",show:!1,showBottom:!0,btns:["clear","now","confirm"],lang:"cn",theme:"default",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},v.prototype.lang=function(){var e=this,t=e.config,a={cn:{weeks:["日","一","二","三","四","五","六"],time:["时","分","秒"],timeTips:"选择时间",startTime:"开始时间",endTime:"结束时间",dateTips:"返回日期",month:["一","二","三","四","五","六","七","八","九","十","十一","十二"],tools:{confirm:"确定",clear:"清空",now:"现在"},timeout:"结束时间不能早于开始时间
            请重新选择",invalidDate:"不在有效日期或时间范围内",formatError:["日期格式不合法
            必须遵循下述格式:
            ","
            已为你重置"]},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
            Please re-select",invalidDate:"Invalid date",formatError:["The date format error
            Must be followed:
            ","
            It has been reset"]}};return a[t.lang]||a.cn},v.prototype.init=function(){var t=this,a=t.config,n="yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s",l="static"===a.position,i={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};a.elem=lay(a.elem),a.eventElem=lay(a.eventElem),a.elem[0]&&(a.range===!0&&(a.range="-"),i[a.type]||(e.console&&console.error&&console.error("laydate type error:'"+a.type+"' is not supported"),a.type="date"),a.format===i.date&&(a.format=i[a.type]||i.date),t.format=a.format.match(new RegExp(n+"|.","g"))||[],t.EXP_IF="",t.EXP_SPLIT="",lay.each(t.format,function(e,a){var l=new RegExp(n).test(a)?"\\d{"+function(){return new RegExp(n).test(t.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?"1,4":/^y$/.test(a)?"1,308":"1,2"}()+"}":"\\"+a;t.EXP_IF=t.EXP_IF+l,t.EXP_SPLIT=t.EXP_SPLIT+"("+l+")"}),t.EXP_IF=new RegExp("^"+(a.range?t.EXP_IF+"\\s\\"+a.range+"\\s"+t.EXP_IF:t.EXP_IF)+"$"),t.EXP_SPLIT=new RegExp("^"+t.EXP_SPLIT+"$",""),t.isInput(a.elem[0])||"focus"===a.trigger&&(a.trigger="click"),a.elem.attr("lay-key")||(a.elem.attr("lay-key",t.index),a.eventElem.attr("lay-key",t.index)),a.mark=lay.extend({},a.calendar&&"cn"===a.lang?{"0-1-1":"元旦","0-2-14":"情人","0-3-8":"妇女","0-3-12":"植树","0-4-1":"愚人","0-5-1":"劳动","0-5-4":"青年","0-6-1":"儿童","0-9-10":"教师","0-9-18":"国耻","0-10-1":"国庆","0-12-25":"圣诞"}:{},a.mark),lay.each(["min","max"],function(e,t){var n=[],l=[];if("number"==typeof a[t]){var i=a[t],r=(new Date).getTime(),o=864e5,s=new Date(i?i0)return!0;var n=lay.elem("div",{"class":"layui-laydate-header"}),l=[function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-prev-y"});return e.innerHTML="",e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="",e}(),function(){var e=lay.elem("div",{"class":"laydate-set-ym"}),t=lay.elem("span"),a=lay.elem("span");return e.appendChild(t),e.appendChild(a),e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-next-m"});return e.innerHTML="",e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="",e}()],y=lay.elem("div",{"class":"layui-laydate-content"}),d=lay.elem("table"),m=lay.elem("thead"),c=lay.elem("tr");lay.each(l,function(e,t){n.appendChild(t)}),m.appendChild(c),lay.each(new Array(6),function(e){var t=d.insertRow(0);lay.each(new Array(7),function(n){if(0===e){var l=lay.elem("th");l.innerHTML=a.weeks[n],c.appendChild(l)}t.insertCell(n)})}),d.insertBefore(m,d.children[0]),y.appendChild(d),i[e]=lay.elem("div",{"class":"layui-laydate-main laydate-main-list-"+e}),i[e].appendChild(n),i[e].appendChild(y),r.push(l),o.push(y),s.push(d)}),lay(y).html(function(){var e=[],l=[];return"datetime"===t.type&&e.push(''+a.timeTips+""),lay.each(t.btns,function(e,i){var r=a.tools[i]||"btn";t.range&&"now"===i||(n&&"clear"===i&&(r="cn"===t.lang?"重置":"Reset"),l.push(''+r+""))}),e.push('"),e.join("")}()),lay.each(i,function(e,t){l.appendChild(t)}),t.showBottom&&l.appendChild(y),/^#/.test(t.theme)){var m=lay.elem("style"),c=["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} .layui-this{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,t.theme);"styleSheet"in m?(m.setAttribute("type","text/css"),m.styleSheet.cssText=c):m.innerHTML=c,lay(l).addClass("laydate-theme-molv"),l.appendChild(m)}e.remove(v.thisElemDate),n?t.elem.append(l):(document.body.appendChild(l),e.position()),e.checkDate().calendar(null,0,"init"),e.changeEvent(),v.thisElemDate=e.elemID,"function"==typeof t.ready&&t.ready(lay.extend({},t.dateTime,{month:t.dateTime.month+1}))},v.prototype.remove=function(e){var t=this,a=(t.config,lay("#"+(e||t.elemID)));return a[0]?(a.hasClass(d)||t.checkDate(function(){a.remove(),delete t.endDate}),t):t},v.prototype.position=function(){var e=this,t=e.config;return lay.position(e.bindElem||t.elem[0],e.elem,{position:t.position}),e},v.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":u}));t.elem&&(a.innerHTML=e||"",lay(t.elem).find("."+u).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+u).remove()},3e3))},v.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},v.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},v.prototype.checkDate=function(e){var t,a,l=this,i=(new Date,l.config),r=l.lang(),o=i.dateTime=i.dateTime||l.systemDate(),s=l.bindElem||i.elem[0],d=(l.isInput(s)?"val":"html",l.isInput(s)?s.value:"static"===i.position?"":s.innerHTML),m=function(e){e.year>y[1]&&(e.year=y[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=n.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},c=function(e,t,n){var r=["startTime","endTime"];t=(t.match(l.EXP_SPLIT)||[]).slice(1),n=n||0,i.range&&(l[r[n]]=l[r[n]]||{}),lay.each(l.format,function(o,s){var d=parseFloat(t[o]);t[o].length'+a+""),n},v.prototype.limit=function(e,t,a,n){var l,i=this,r=i.config,o={},y=r[a>41?"endDate":"dateTime"],d=lay.extend({},y,t||{});return lay.each({now:d,min:r.min,max:r.max},function(e,t){o[e]=i.newDate(lay.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return lay.each(n,function(a,n){e[n]=t[n]}),e}())).getTime()}),l=o.nowo.max,e&&e[l?"addClass":"removeClass"](s),l},v.prototype.thisDateTime=function(e){var t=this,a=t.config;return e?t.endDate:a.dateTime},v.prototype.calendar=function(e,t,a){var l,i,r,s=this,d=s.config,t=t?1:0,m=e||s.thisDateTime(t),c=new Date,u=s.lang(),h="date"!==d.type&&"datetime"!==d.type,p=lay(s.table[t]).find("td"),g=lay(s.elemHeader[t][2]).find("span");return m.yeary[1]&&(m.year=y[1],s.hint(u.invalidDate)),s.firstDate||(s.firstDate=lay.extend({},m)),c.setFullYear(m.year,m.month,1),l=c.getDay(),i=n.getEndDate(m.month||12,m.year),r=n.getEndDate(m.month+1,m.year),lay.each(p,function(e,t){var a=[m.year,m.month],n=0;t=lay(t),t.removeAttr("class"),e=l&&e=a.firstDate.year&&(i.month=n.max.month,i.date=n.max.date),a.limit(lay(l),i,t),C++}),lay(c[v?0:1]).attr("lay-ym",C-8+"-"+D[1]).html(w+T+" - "+(C-1+T))}else if("month"===e)lay.each(new Array(12),function(e){var l=lay.elem("li",{"lay-ym":e}),r={year:D[0],month:e};e+1==D[1]&&lay(l).addClass(o),l.innerHTML=i.month[e]+(v?"月":""),y.appendChild(l),D[0]=a.firstDate.year&&(r.date=n.max.date),a.limit(lay(l),r,t)}),lay(c[v?0:1]).attr("lay-ym",D[0]+"-"+D[1]).html(D[0]+T);else if("time"===e){var k=function(){lay(y).find("ol").each(function(e,n){lay(n).find("li").each(function(n,l){a.limit(lay(l),[{hours:n},{hours:a[x].hours,minutes:n},{hours:a[x].hours,minutes:a[x].minutes,seconds:n}][e],t,[["hours"],["hours","minutes"],["hours","minutes","seconds"]][e])})}),n.range||a.limit(lay(a.footer).find(f),a[x],0,["hours","minutes","seconds"])};n.range?a[x]||(a[x]={hours:0,minutes:0,seconds:0}):a[x]=l,lay.each([24,60,60],function(e,t){var n=lay.elem("li"),l=["

            "+i.time[e]+"

              "];lay.each(new Array(t),function(t){l.push(""+lay.digit(t,2)+"")}),n.innerHTML=l.join("")+"
            ",y.appendChild(n)}),k()}if(h&&u.removeChild(h),u.appendChild(y),"year"===e||"month"===e)lay(a.elemMain[t]).addClass("laydate-ym-show"),lay(y).find("li").on("click",function(){var i=0|lay(this).attr("lay-ym");if(!lay(this).hasClass(s)){0===t?(l[e]=i,a.limit(lay(a.footer).find(f),null,0)):a.endDate[e]=i;var d="year"===n.type||"month"===n.type;d?(lay(y).find("."+o).removeClass(o),lay(this).addClass(o),"month"===n.type&&"year"===e&&(a.listYM[t][0]=i,r&&(t?l.year=i:a.endDate.year=i),a.list("month",t))):(a.checkDate("limit").calendar(null,t),a.closeList()),a.setBtnStatus(),n.range||(("month"===n.type&&"month"===e||"year"===n.type&&"year"===e)&&a.setValue(a.parse()).remove().done(),a.done(null,"change")),lay(a.footer).find(g).removeClass(s)}});else{var E=lay.elem("span",{"class":p}),b=function(){lay(y).find("ol").each(function(e){var t=this,n=lay(t).find("li");t.scrollTop=30*(a[x][M[e]]-2),t.scrollTop<=0&&n.each(function(e,a){if(!lay(this).hasClass(s))return t.scrollTop=30*(e-2),!0})})},H=lay(d[2]).find("."+p);b(),E.innerHTML=n.range?[i.startTime,i.endTime][t]:i.timeTips,lay(a.elemMain[t]).addClass("laydate-time-show"),H[0]&&H.remove(),d[2].appendChild(E),lay(y).find("ol").each(function(e){var t=this;lay(t).find("li").on("click",function(){var i=0|this.innerHTML;lay(this).hasClass(s)||(n.range?a[x][M[e]]=i:l[M[e]]=i,lay(t).find("."+o).removeClass(o),lay(this).addClass(o),k(),b(),(a.endDate||"time"===n.type)&&a.done(null,"change"),a.setBtnStatus())})})}return a},v.prototype.listYM=[],v.prototype.closeList=function(){var e=this;e.config;lay.each(e.elemCont,function(t,a){lay(this).find("."+m).remove(),lay(e.elemMain[t]).removeClass("laydate-ym-show laydate-time-show")}),lay(e.elem).find("."+p).remove()},v.prototype.setBtnStatus=function(e,t,a){var n,l=this,i=l.config,r=l.lang(),o=lay(l.footer).find(f);i.range&&"time"!==i.type&&(t=t||i.dateTime,a=a||l.endDate,n=l.newDate(t).getTime()>l.newDate(a).getTime(),l.limit(null,t)||l.limit(null,a)?o.addClass(s):o[n?"addClass":"removeClass"](s),e&&n&&l.hint("string"==typeof e?r.timeout.replace(/日期/g,e):r.timeout))},v.prototype.parse=function(e,t){var a=this,n=a.config,l=t||(e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},n.dateTime,a.startTime):n.dateTime),i=a.format.concat();return lay.each(i,function(e,t){/yyyy|y/.test(t)?i[e]=lay.digit(l.year,t.length):/MM|M/.test(t)?i[e]=lay.digit(l.month+1,t.length):/dd|d/.test(t)?i[e]=lay.digit(l.date,t.length):/HH|H/.test(t)?i[e]=lay.digit(l.hours,t.length):/mm|m/.test(t)?i[e]=lay.digit(l.minutes,t.length):/ss|s/.test(t)&&(i[e]=lay.digit(l.seconds,t.length))}),n.range&&!e?i.join("")+" "+n.range+" "+a.parse(1):i.join("")},v.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},v.prototype.setValue=function(e){var t=this,a=t.config,n=t.bindElem||a.elem[0],l=t.isInput(n)?"val":"html";return"static"===a.position||lay(n)[l](e||""),this},v.prototype.stampRange=function(e,t){var a,n,l=this,i=l.config;i.range&&(a=l.newDate(i.dateTime).getTime(),n=l.newDate(l.endDate).getTime(),lay.each(t,function(t,i){var r=lay(i).attr("lay-ymd").split("-"),o=l.newDate({year:r[0],month:r[1]-1,date:r[2]}).getTime();0==e?o>a&&lay(i).addClass(c):o0&&t-1 in e)}function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return pe.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ce.test(t))return pe.filter(t,e,n);t=pe.filter(t,e)}return pe.grep(e,function(e){return pe.inArray(e,t)>-1!==n})}function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]=!0}),t}function a(){re.addEventListener?(re.removeEventListener("DOMContentLoaded",s),e.removeEventListener("load",s)):(re.detachEvent("onreadystatechange",s),e.detachEvent("onload",s))}function s(){(re.addEventListener||"load"===e.event.type||"complete"===re.readyState)&&(a(),pe.ready())}function u(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace(_e,"-$1").toLowerCase();if(n=e.getAttribute(r),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:qe.test(n)?pe.parseJSON(n):n)}catch(i){}pe.data(e,t,n)}else n=void 0}return n}function l(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.cache:e,l=s?e[a]:e[a]&&a;if(l&&u[l]&&(r||u[l].data)||void 0!==n||"string"!=typeof t)return l||(l=s?e[a]=ne.pop()||pe.guid++:a),u[l]||(u[l]=s?{}:{toJSON:pe.noop}),"object"!=typeof t&&"function"!=typeof t||(r?u[l]=pe.extend(u[l],t):u[l].data=pe.extend(u[l].data,t)),o=u[l],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[pe.camelCase(t)]=n),"string"==typeof t?(i=o[t],null==i&&(i=o[pe.camelCase(t)])):i=o,i}}function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe.expando]:pe.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){pe.isArray(t)?t=t.concat(pe.map(t,pe.camelCase)):t in r?t=[t]:(t=pe.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;for(;i--;)delete r[t[i]];if(n?!l(r):!pe.isEmptyObject(r))return}(n||(delete a[s].data,l(a[s])))&&(o?pe.cleanData([e],!0):fe.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return pe.css(e,t,"")},u=s(),l=n&&n[3]||(pe.cssNumber[t]?"":"px"),c=(pe.cssNumber[t]||"px"!==l&&+u)&&Me.exec(pe.css(e,t));if(c&&c[3]!==l){l=l||c[3],n=n||[],c=+u||1;do o=o||".5",c/=o,pe.style(e,t,c+l);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}function p(e){var t=ze.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function h(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||pe.nodeName(r,t)?o.push(r):pe.merge(o,h(r,t));return void 0===t||t&&pe.nodeName(e,t)?pe.merge([e],o):o}function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,"globalEval",!t||pe._data(t[r],"globalEval"))}function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x"!==f[1]||Ve.test(a)?0:u:u.firstChild,o=a&&a.childNodes.length;o--;)pe.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(pe.merge(v,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=y.lastChild}else v.push(t.createTextNode(a));for(u&&y.removeChild(u),fe.appendChecked||pe.grep(h(v,"input"),m),x=0;a=v[x++];)if(r&&pe.inArray(a,r)>-1)i&&i.push(a);else if(s=pe.contains(a.ownerDocument,a),u=h(y.appendChild(a),"script"),s&&g(u),n)for(o=0;a=u[o++];)Ie.test(a.type||"")&&n.push(a);return u=null,y}function v(){return!0}function x(){return!1}function b(){try{return re.activeElement}catch(e){}}function w(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)w(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=x;else if(!i)return e;return 1===o&&(a=i,i=function(e){return pe().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=pe.guid++)),e.each(function(){pe.event.add(this,t,i,r,n)})}function T(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function C(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e),a=pe._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;r1&&"string"==typeof p&&!fe.checkClone&&rt.test(p))return e.each(function(i){var o=e.eq(i);g&&(t[0]=p.call(this,i,o.html())),S(o,t,n,r)});if(f&&(l=y(t,e[0].ownerDocument,!1,e,r),i=l.firstChild,1===l.childNodes.length&&(l=i),i||r)){for(s=pe.map(h(l,"script"),C),a=s.length;c")).appendTo(t.documentElement),t=(ut[0].contentWindow||ut[0].contentDocument).document,t.write(),t.close(),n=D(e,t),ut.detach()),lt[e]=n),n}function L(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=Ct.length;n--;)if(e=Ct[n]+t,e in Et)return e}function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a=0&&n=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==pe.type(e)||e.nodeType||pe.isWindow(e))return!1;try{if(e.constructor&&!ce.call(e,"constructor")&&!ce.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!fe.ownFirst)for(t in e)return ce.call(e,t);for(t in e);return void 0===t||ce.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?ue[le.call(e)]||"object":typeof e},globalEval:function(t){t&&pe.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(ge,"ms-").replace(me,ye)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var r,i=0;if(n(e))for(r=e.length;iT.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[P]=!0,e}function i(e){var t=H.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||V)-(~e.sourceIndex||V);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function f(){}function d(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var i=0,o=n.length;i-1&&(r[l]=!(a[l]=f))}}else x=m(x===a?x.splice(h,x.length):x),o?o(null,a,x,u):Q.apply(a,x)})}function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.relative[" "],s=o?1:0,u=p(function(e){return e===t},a,!0),l=p(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==A)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,i}];s1&&h(c),s>1&&d(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,s0,o=e.length>0,a=function(r,a,s,u,l){var c,f,d,p=0,h="0",g=r&&[],y=[],v=A,x=r||o&&T.find.TAG("*",l),b=W+=null==v?1:Math.random()||.1,w=x.length;for(l&&(A=a===H||a||l);h!==w&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===H||(L(c),s=!_);d=e[f++];)if(d(c,a||H,s)){u.push(c);break}l&&(W=b)}i&&((c=!d&&c)&&p--,r&&g.push(c))}if(p+=h,i&&h!==p){for(f=0;d=n[f++];)d(g,y,a,s);if(r){if(p>0)for(;h--;)g[h]||y[h]||(y[h]=G.call(u));y=m(y)}Q.apply(u,y),l&&!r&&y.length>0&&p+n.length>1&&t.uniqueSort(u)}return l&&(W=b,A=v),g};return i?r(a):a}var b,w,T,C,E,N,k,S,A,D,j,L,H,q,_,F,M,O,R,P="sizzle"+1*new Date,B=e.document,W=0,I=0,$=n(),z=n(),X=n(),U=function(e,t){return e===t&&(j=!0),0},V=1<<31,Y={}.hasOwnProperty,J=[],G=J.pop,K=J.push,Q=J.push,Z=J.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),ce=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(oe),de=new RegExp("^"+re+"$"),pe={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ye=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ve=/[+~]/,xe=/'|\\/g,be=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Te=function(){L()};try{Q.apply(J=Z.call(B.childNodes),B.childNodes),J[B.childNodes.length].nodeType}catch(Ce){Q={apply:J.length?function(e,t){K.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:B;return r!==H&&9===r.nodeType&&r.documentElement?(H=r,q=H.documentElement,_=!E(H),(n=H.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Te,!1):n.attachEvent&&n.attachEvent("onunload",Te)),w.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=i(function(e){return e.appendChild(H.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=me.test(H.getElementsByClassName),w.getById=i(function(e){return q.appendChild(e).id=P,!H.getElementsByName||!H.getElementsByName(P).length}),w.getById?(T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&_){var n=t.getElementById(e);return n?[n]:[]}},T.filter.ID=function(e){var t=e.replace(be,we);return function(e){return e.getAttribute("id")===t}}):(delete T.find.ID,T.filter.ID=function(e){var t=e.replace(be,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),T.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},T.find.CLASS=w.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&_)return t.getElementsByClassName(e)},M=[],F=[],(w.qsa=me.test(H.querySelectorAll))&&(i(function(e){q.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&F.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||F.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+P+"-]").length||F.push("~="),e.querySelectorAll(":checked").length||F.push(":checked"),e.querySelectorAll("a#"+P+"+*").length||F.push(".#.+[+~]")}),i(function(e){var t=H.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&F.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||F.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),F.push(",.*:")})),(w.matchesSelector=me.test(O=q.matches||q.webkitMatchesSelector||q.mozMatchesSelector||q.oMatchesSelector||q.msMatchesSelector))&&i(function(e){w.disconnectedMatch=O.call(e,"div"),O.call(e,"[s!='']:x"),M.push("!=",oe)}),F=F.length&&new RegExp(F.join("|")),M=M.length&&new RegExp(M.join("|")),t=me.test(q.compareDocumentPosition),R=t||me.test(q.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},U=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===H||e.ownerDocument===B&&R(B,e)?-1:t===H||t.ownerDocument===B&&R(B,t)?1:D?ee(D,e)-ee(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===H?-1:t===H?1:i?-1:o?1:D?ee(D,e)-ee(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===B?-1:u[r]===B?1:0},H):H},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==H&&L(e),n=n.replace(ce,"='$1']"),w.matchesSelector&&_&&!X[n+" "]&&(!M||!M.test(n))&&(!F||!F.test(n)))try{var r=O.call(e,n);if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,H,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==H&&L(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==H&&L(e);var n=T.attrHandle[t.toLowerCase()],r=n&&Y.call(T.attrHandle,t.toLowerCase())?n(e,t,!_):void 0;return void 0!==r?r:w.attributes||!_?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(j=!w.detectDuplicates,D=!w.sortStable&&e.slice(0),e.sort(U),j){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},C=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=C(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=C(t);return n},T=t.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,we),e[3]=(e[3]||e[4]||e[5]||"").replace(be,we),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=N(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(be,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=$[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&$(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,d,p,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s,x=!1;if(m){if(o){for(;g;){for(d=t;d=d[g];)if(s?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(d=m,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===W&&l[1],x=p&&l[2], +d=p&&m.childNodes[p];d=++p&&d&&d[g]||(x=p=0)||h.pop();)if(1===d.nodeType&&++x&&d===t){c[e]=[W,p,x];break}}else if(v&&(d=t,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===W&&l[1],x=p),x===!1)for(;(d=++p&&d&&d[g]||(x=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==y:1!==d.nodeType)||!++x||(v&&(f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),c[e]=[W,x]),d!==t)););return x-=i,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[P]?o(n):o.length>1?(i=[e,e,"",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=ee(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=k(e.replace(se,"$1"));return i[P]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(be,we),function(t){return(t.textContent||t.innerText||C(t)).indexOf(e)>-1}}),lang:r(function(e){return de.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(be,we).toLowerCase(),function(t){var n;do if(n=_?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===q},focus:function(e){return e===H.activeElement&&(!H.hasFocus||H.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(a=o[0]).type&&w.getById&&9===t.nodeType&&_&&T.relative[o[1].type]){if(t=(T.find.ID(a.matches[0].replace(be,we),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!T.relative[s=a.type]);)if((u=T.find[s])&&(r=u(a.matches[0].replace(be,we),ve.test(o[0].type)&&c(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&d(o),!e)return Q.apply(n,r),n;break}}return(l||k(e,f))(r,t,!_,n,!t||ve.test(e)&&c(t.parentNode)||t),n},w.sortStable=P.split("").sort(U).join("")===P,w.detectDuplicates=!!j,L(),w.sortDetached=i(function(e){return 1&e.compareDocumentPosition(H.createElement("div"))}),i(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&i(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);pe.find=ve,pe.expr=ve.selectors,pe.expr[":"]=pe.expr.pseudos,pe.uniqueSort=pe.unique=ve.uniqueSort,pe.text=ve.getText,pe.isXMLDoc=ve.isXML,pe.contains=ve.contains;var xe=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&pe(e).is(n))break;r.push(e)}return r},be=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},we=pe.expr.match.needsContext,Te=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ce=/^.[^:#\[\.,]*$/;pe.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?pe.find.matchesSelector(r,e)?[r]:[]:pe.find.matches(e,pe.grep(t,function(e){return 1===e.nodeType}))},pe.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(pe(e).filter(function(){for(t=0;t1?pe.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(r(this,e||[],!1))},not:function(e){return this.pushStack(r(this,e||[],!0))},is:function(e){return!!r(this,"string"==typeof e&&we.test(e)?pe(e):e||[],!1).length}});var Ee,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ke=pe.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Ee,"string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof pe?t[0]:t,pe.merge(this,pe.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:re,!0)),Te.test(r[1])&&pe.isPlainObject(t))for(r in t)pe.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if(i=re.getElementById(r[2]),i&&i.parentNode){if(i.id!==r[2])return Ee.find(e);this.length=1,this[0]=i}return this.context=re,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):pe.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(pe):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),pe.makeArray(e,this))};ke.prototype=pe.fn,Ee=pe(re);var Se=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};pe.fn.extend({has:function(e){var t,n=pe(e,this),r=n.length;return this.filter(function(){for(t=0;t-1:1===n.nodeType&&pe.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?pe.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?pe.inArray(this[0],pe(e)):pe.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(pe.uniqueSort(pe.merge(this.get(),pe(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),pe.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return xe(e,"parentNode")},parentsUntil:function(e,t,n){return xe(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return xe(e,"nextSibling")},prevAll:function(e){return xe(e,"previousSibling")},nextUntil:function(e,t,n){return xe(e,"nextSibling",n)},prevUntil:function(e,t,n){return xe(e,"previousSibling",n)},siblings:function(e){return be((e.parentNode||{}).firstChild,e)},children:function(e){return be(e.firstChild)},contents:function(e){return pe.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:pe.merge([],e.childNodes)}},function(e,t){pe.fn[e]=function(n,r){var i=pe.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=pe.filter(r,i)),this.length>1&&(Ae[e]||(i=pe.uniqueSort(i)),Se.test(e)&&(i=i.reverse())),this.pushStack(i)}});var De=/\S+/g;pe.Callbacks=function(e){e="string"==typeof e?o(e):pe.extend({},e);var t,n,r,i,a=[],s=[],u=-1,l=function(){for(i=e.once,r=t=!0;s.length;u=-1)for(n=s.shift();++u-1;)a.splice(n,1),n<=u&&u--}),this},has:function(e){return e?pe.inArray(e,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return i=s=[],a=n="",this},disabled:function(){return!a},lock:function(){return i=!0,n||c.disable(),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],s.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},pe.extend({Deferred:function(e){var t=[["resolve","done",pe.Callbacks("once memory"),"resolved"],["reject","fail",pe.Callbacks("once memory"),"rejected"],["notify","progress",pe.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return pe.Deferred(function(n){pe.each(t,function(t,o){var a=pe.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&pe.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?pe.extend(e,r):r}},i={};return r.pipe=r.then,pe.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=ie.call(arguments),a=o.length,s=1!==a||e&&pe.isFunction(e.promise)?a:0,u=1===s?e:pe.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?ie.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=new Array(a),n=new Array(a),r=new Array(a);i0||(je.resolveWith(re,[pe]),pe.fn.triggerHandler&&(pe(re).triggerHandler("ready"),pe(re).off("ready"))))}}),pe.ready.promise=function(t){if(!je)if(je=pe.Deferred(),"complete"===re.readyState||"loading"!==re.readyState&&!re.documentElement.doScroll)e.setTimeout(pe.ready);else if(re.addEventListener)re.addEventListener("DOMContentLoaded",s),e.addEventListener("load",s);else{re.attachEvent("onreadystatechange",s),e.attachEvent("onload",s);var n=!1;try{n=null==e.frameElement&&re.documentElement}catch(r){}n&&n.doScroll&&!function i(){if(!pe.isReady){try{n.doScroll("left")}catch(t){return e.setTimeout(i,50)}a(),pe.ready()}}()}return je.promise(t)},pe.ready.promise();var Le;for(Le in pe(fe))break;fe.ownFirst="0"===Le,fe.inlineBlockNeedsLayout=!1,pe(function(){var e,t,n,r;n=re.getElementsByTagName("body")[0],n&&n.style&&(t=re.createElement("div"),r=re.createElement("div"),r.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(r).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",fe.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(r))}),function(){var e=re.createElement("div");fe.deleteExpando=!0;try{delete e.test}catch(t){fe.deleteExpando=!1}e=null}();var He=function(e){var t=pe.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return(1===n||9===n)&&(!t||t!==!0&&e.getAttribute("classid")===t)},qe=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,_e=/([A-Z])/g;pe.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?pe.cache[e[pe.expando]]:e[pe.expando],!!e&&!l(e)},data:function(e,t,n){return c(e,t,n)},removeData:function(e,t){return f(e,t)},_data:function(e,t,n){return c(e,t,n,!0)},_removeData:function(e,t){return f(e,t,!0)}}),pe.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=pe.data(o),1===o.nodeType&&!pe._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf("data-")&&(r=pe.camelCase(r.slice(5)),u(o,r,i[r])));pe._data(o,"parsedAttrs",!0)}return i}return"object"==typeof e?this.each(function(){pe.data(this,e)}):arguments.length>1?this.each(function(){pe.data(this,e,t)}):o?u(o,e,pe.data(o,e)):void 0},removeData:function(e){return this.each(function(){pe.removeData(this,e)})}}),pe.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=pe._data(e,t),n&&(!r||pe.isArray(n)?r=pe._data(e,t,pe.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=pe.queue(e,t),r=n.length,i=n.shift(),o=pe._queueHooks(e,t),a=function(){pe.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return pe._data(e,n)||pe._data(e,n,{empty:pe.Callbacks("once memory").add(function(){pe._removeData(e,t+"queue"),pe._removeData(e,n)})})}}),pe.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length
            a",fe.leadingWhitespace=3===e.firstChild.nodeType,fe.tbody=!e.getElementsByTagName("tbody").length,fe.htmlSerialize=!!e.getElementsByTagName("link").length,fe.html5Clone="<:nav>"!==re.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),fe.appendChecked=n.checked,e.innerHTML="",fe.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=re.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),fe.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.noCloneEvent=!!e.addEventListener,e[pe.expando]=1,fe.attributes=!e.getAttribute(pe.expando)}();var Xe={option:[1,""],legend:[1,"
            ","
            "],area:[1,"",""],param:[1,"",""],thead:[1,"","
            "],tr:[2,"","
            "],col:[2,"","
            "],td:[3,"","
            "],_default:fe.htmlSerialize?[0,"",""]:[1,"X
            ","
            "]};Xe.optgroup=Xe.option,Xe.tbody=Xe.tfoot=Xe.colgroup=Xe.caption=Xe.thead,Xe.th=Xe.td;var Ue=/<|&#?\w+;/,Ve=/-1&&(h=p.split("."),p=h.shift(),h.sort()),a=p.indexOf(":")<0&&"on"+p,t=t[pe.expando]?t:new pe.Event(p,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:pe.makeArray(n,[t]),l=pe.event.special[p]||{},i||!l.trigger||l.trigger.apply(r,n)!==!1)){if(!i&&!l.noBubble&&!pe.isWindow(r)){for(u=l.delegateType||p,Ke.test(u+p)||(s=s.parentNode);s;s=s.parentNode)d.push(s),c=s;c===(r.ownerDocument||re)&&d.push(c.defaultView||c.parentWindow||e)}for(f=0;(s=d[f++])&&!t.isPropagationStopped();)t.type=f>1?u:l.bindType||p,o=(pe._data(s,"events")||{})[t.type]&&pe._data(s,"handle"),o&&o.apply(s,n),o=a&&s[a],o&&o.apply&&He(s)&&(t.result=o.apply(s,n),t.result===!1&&t.preventDefault());if(t.type=p,!i&&!t.isDefaultPrevented()&&(!l._default||l._default.apply(d.pop(),n)===!1)&&He(r)&&a&&r[p]&&!pe.isWindow(r)){c=r[a],c&&(r[a]=null),pe.event.triggered=p;try{r[p]()}catch(g){}pe.event.triggered=void 0,c&&(r[a]=c)}return t.result}},dispatch:function(e){e=pe.event.fix(e);var t,n,r,i,o,a=[],s=ie.call(arguments),u=(pe._data(this,"events")||{})[e.type]||[],l=pe.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){for(a=pe.event.handlers.call(this,e,u),t=0;(i=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((pe.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,a=[],s=t.delegateCount,u=e.target;if(s&&u.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(r=[],n=0;n-1:pe.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&a.push({elem:u,handlers:r})}return s]","i"),tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,nt=/\s*$/g,at=p(re),st=at.appendChild(re.createElement("div"));pe.extend({htmlPrefilter:function(e){return e.replace(tt,"<$1>")},clone:function(e,t,n){var r,i,o,a,s,u=pe.contains(e.ownerDocument,e);if(fe.html5Clone||pe.isXMLDoc(e)||!et.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(st.innerHTML=e.outerHTML,st.removeChild(o=st.firstChild)),!(fe.noCloneEvent&&fe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||pe.isXMLDoc(e)))for(r=h(o),s=h(e),a=0;null!=(i=s[a]);++a)r[a]&&k(i,r[a]);if(t)if(n)for(s=s||h(e),r=r||h(o),a=0;null!=(i=s[a]);a++)N(i,r[a]);else N(e,o);return r=h(o,"script"),r.length>0&&g(r,!u&&h(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=pe.expando,u=pe.cache,l=fe.attributes,c=pe.event.special;null!=(n=e[a]);a++)if((t||He(n))&&(i=n[s],o=i&&u[i])){if(o.events)for(r in o.events)c[r]?pe.event.remove(n,r):pe.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ne.push(i))}}}),pe.fn.extend({domManip:S,detach:function(e){return A(this,e,!0)},remove:function(e){return A(this,e)},text:function(e){return Pe(this,function(e){return void 0===e?pe.text(this):this.empty().append((this[0]&&this[0].ownerDocument||re).createTextNode(e))},null,e,arguments.length)},append:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.appendChild(e)}})},prepend:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&pe.cleanData(h(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&pe.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return pe.clone(this,e,t)})},html:function(e){return Pe(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(Ze,""):void 0;if("string"==typeof e&&!nt.test(e)&&(fe.htmlSerialize||!et.test(e))&&(fe.leadingWhitespace||!$e.test(e))&&!Xe[(We.exec(e)||["",""])[1].toLowerCase()]){e=pe.htmlPrefilter(e);try{for(;nt",l.childNodes[0].style.borderCollapse="separate",t=l.getElementsByTagName("td"),t[0].style.cssText="margin:0;border:0;padding:0;display:none",o=0===t[0].offsetHeight,o&&(t[0].style.display="",t[1].style.display="none",o=0===t[0].offsetHeight)),f.removeChild(u)}var n,r,i,o,a,s,u=re.createElement("div"),l=re.createElement("div");l.style&&(l.style.cssText="float:left;opacity:.5",fe.opacity="0.5"===l.style.opacity,fe.cssFloat=!!l.style.cssFloat,l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",fe.clearCloneStyle="content-box"===l.style.backgroundClip,u=re.createElement("div"),u.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",l.innerHTML="",u.appendChild(l),fe.boxSizing=""===l.style.boxSizing||""===l.style.MozBoxSizing||""===l.style.WebkitBoxSizing,pe.extend(fe,{reliableHiddenOffsets:function(){return null==n&&t(),o},boxSizingReliable:function(){return null==n&&t(),i},pixelMarginRight:function(){return null==n&&t(),r},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),a},reliableMarginLeft:function(){return null==n&&t(),s}}))}();var ht,gt,mt=/^(top|right|bottom|left)$/;e.getComputedStyle?(ht=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||pe.contains(e.ownerDocument,e)||(a=pe.style(e,t)),n&&!fe.pixelMarginRight()&&ft.test(a)&&ct.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o),void 0===a?a:a+""}):pt.currentStyle&&(ht=function(e){return e.currentStyle},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),ft.test(a)&&!mt.test(t)&&(r=s.left,i=e.runtimeStyle,o=i&&i.left,o&&(i.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=r,o&&(i.left=o)),void 0===a?a:a+""||"auto"});var yt=/alpha\([^)]*\)/i,vt=/opacity\s*=\s*([^)]*)/i,xt=/^(none|table(?!-c[ea]).+)/,bt=new RegExp("^("+Fe+")(.*)$","i"),wt={position:"absolute",visibility:"hidden",display:"block"},Tt={letterSpacing:"0",fontWeight:"400"},Ct=["Webkit","O","Moz","ms"],Et=re.createElement("div").style;pe.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=gt(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":fe.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=pe.camelCase(t),u=e.style;if(t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:u[t];if(o=typeof n,"string"===o&&(i=Me.exec(n))&&i[1]&&(n=d(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(pe.cssNumber[s]?"":"px")),fe.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),!(a&&"set"in a&&void 0===(n=a.set(e,n,r)))))try{u[t]=n}catch(l){}}},css:function(e,t,n,r){var i,o,a,s=pe.camelCase(t);return t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=gt(e,t,r)),"normal"===o&&t in Tt&&(o=Tt[t]),""===n||n?(i=parseFloat(o),n===!0||isFinite(i)?i||0:o):o}}),pe.each(["height","width"],function(e,t){pe.cssHooks[t]={get:function(e,n,r){if(n)return xt.test(pe.css(e,"display"))&&0===e.offsetWidth?dt(e,wt,function(){return M(e,t,r)}):M(e,t,r)},set:function(e,n,r){var i=r&&ht(e);return _(e,n,r?F(e,t,r,fe.boxSizing&&"border-box"===pe.css(e,"boxSizing",!1,i),i):0)}}}),fe.opacity||(pe.cssHooks.opacity={get:function(e,t){return vt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=pe.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===pe.trim(o.replace(yt,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=yt.test(o)?o.replace(yt,i):o+" "+i)}}),pe.cssHooks.marginRight=L(fe.reliableMarginRight,function(e,t){if(t)return dt(e,{display:"inline-block"},gt,[e,"marginRight"])}),pe.cssHooks.marginLeft=L(fe.reliableMarginLeft,function(e,t){if(t)return(parseFloat(gt(e,"marginLeft"))||(pe.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-dt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+"px"}),pe.each({margin:"",padding:"",border:"Width"},function(e,t){pe.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+Oe[r]+t]=o[r]||o[r-2]||o[0];return i}},ct.test(e)||(pe.cssHooks[e+t].set=_)}),pe.fn.extend({css:function(e,t){return Pe(this,function(e,t,n){var r,i,o={},a=0;if(pe.isArray(t)){for(r=ht(e),i=t.length;a1)},show:function(){return q(this,!0)},hide:function(){return q(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Re(this)?pe(this).show():pe(this).hide()})}}),pe.Tween=O,O.prototype={constructor:O,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||pe.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(pe.cssNumber[n]?"":"px")},cur:function(){var e=O.propHooks[this.prop];return e&&e.get?e.get(this):O.propHooks._default.get(this)},run:function(e){var t,n=O.propHooks[this.prop];return this.options.duration?this.pos=t=pe.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):O.propHooks._default.set(this),this}},O.prototype.init.prototype=O.prototype,O.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=pe.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){pe.fx.step[e.prop]?pe.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[pe.cssProps[e.prop]]&&!pe.cssHooks[e.prop]?e.elem[e.prop]=e.now:pe.style(e.elem,e.prop,e.now+e.unit)}}},O.propHooks.scrollTop=O.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},pe.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},pe.fx=O.prototype.init,pe.fx.step={};var Nt,kt,St=/^(?:toggle|show|hide)$/,At=/queueHooks$/;pe.Animation=pe.extend($,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,Me.exec(t),n),n}]},tweener:function(e,t){pe.isFunction(e)?(t=e,e=["*"]):e=e.match(De);for(var n,r=0,i=e.length;r
            a",e=n.getElementsByTagName("a")[0],t.setAttribute("type","checkbox"),n.appendChild(t),e=n.getElementsByTagName("a")[0],e.style.cssText="top:1px",fe.getSetAttribute="t"!==n.className,fe.style=/top/.test(e.getAttribute("style")),fe.hrefNormalized="/a"===e.getAttribute("href"),fe.checkOn=!!t.value,fe.optSelected=i.selected,fe.enctype=!!re.createElement("form").enctype,r.disabled=!0,fe.optDisabled=!i.disabled,t=re.createElement("input"),t.setAttribute("value",""),fe.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),fe.radioValue="t"===t.value}();var Dt=/\r/g,jt=/[\x20\t\r\n\f]+/g;pe.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=pe.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,pe(this).val()):e,null==i?i="":"number"==typeof i?i+="":pe.isArray(i)&&(i=pe.map(i,function(e){return null==e?"":e+""})),t=pe.valHooks[this.type]||pe.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return t=pe.valHooks[i.type]||pe.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(Dt,""):null==n?"":n)}}}),pe.extend({valHooks:{option:{get:function(e){var t=pe.find.attr(e,"value");return null!=t?t:pe.trim(pe.text(e)).replace(jt," ")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||i<0,a=o?null:[],s=o?i+1:r.length,u=i<0?s:o?i:0;u-1)try{r.selected=n=!0}catch(s){r.scrollHeight}else r.selected=!1;return n||(e.selectedIndex=-1),i}}}}),pe.each(["radio","checkbox"],function(){pe.valHooks[this]={set:function(e,t){if(pe.isArray(t))return e.checked=pe.inArray(pe(e).val(),t)>-1}},fe.checkOn||(pe.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Lt,Ht,qt=pe.expr.attrHandle,_t=/^(?:checked|selected)$/i,Ft=fe.getSetAttribute,Mt=fe.input;pe.fn.extend({attr:function(e,t){return Pe(this,pe.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){pe.removeAttr(this,e)})}}),pe.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?pe.prop(e,t,n):(1===o&&pe.isXMLDoc(e)||(t=t.toLowerCase(),i=pe.attrHooks[t]||(pe.expr.match.bool.test(t)?Ht:Lt)),void 0!==n?null===n?void pe.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:(r=pe.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!fe.radioValue&&"radio"===t&&pe.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(De);if(o&&1===e.nodeType)for(;n=o[i++];)r=pe.propFix[n]||n,pe.expr.match.bool.test(n)?Mt&&Ft||!_t.test(n)?e[r]=!1:e[pe.camelCase("default-"+n)]=e[r]=!1:pe.attr(e,n,""),e.removeAttribute(Ft?n:r)}}),Ht={set:function(e,t,n){return t===!1?pe.removeAttr(e,n):Mt&&Ft||!_t.test(n)?e.setAttribute(!Ft&&pe.propFix[n]||n,n):e[pe.camelCase("default-"+n)]=e[n]=!0,n}},pe.each(pe.expr.match.bool.source.match(/\w+/g),function(e,t){var n=qt[t]||pe.find.attr;Mt&&Ft||!_t.test(t)?qt[t]=function(e,t,r){var i,o;return r||(o=qt[t],qt[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,qt[t]=o),i}:qt[t]=function(e,t,n){if(!n)return e[pe.camelCase("default-"+t)]?t.toLowerCase():null}}),Mt&&Ft||(pe.attrHooks.value={set:function(e,t,n){return pe.nodeName(e,"input")?void(e.defaultValue=t):Lt&&Lt.set(e,t,n)}}),Ft||(Lt={set:function(e,t,n){var r=e.getAttributeNode(n);if(r||e.setAttributeNode(r=e.ownerDocument.createAttribute(n)),r.value=t+="","value"===n||t===e.getAttribute(n))return t}},qt.id=qt.name=qt.coords=function(e,t,n){var r;if(!n)return(r=e.getAttributeNode(t))&&""!==r.value?r.value:null},pe.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);if(n&&n.specified)return n.value},set:Lt.set},pe.attrHooks.contenteditable={set:function(e,t,n){Lt.set(e,""!==t&&t,n)}},pe.each(["width","height"],function(e,t){pe.attrHooks[t]={set:function(e,n){if(""===n)return e.setAttribute(t,"auto"),n}}})),fe.style||(pe.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var Ot=/^(?:input|select|textarea|button|object)$/i,Rt=/^(?:a|area)$/i;pe.fn.extend({prop:function(e,t){return Pe(this,pe.prop,e,t,arguments.length>1)},removeProp:function(e){return e=pe.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),pe.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&pe.isXMLDoc(e)||(t=pe.propFix[t]||t,i=pe.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=pe.find.attr(e,"tabindex");return t?parseInt(t,10):Ot.test(e.nodeName)||Rt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),fe.hrefNormalized||pe.each(["href","src"],function(e,t){pe.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),fe.optSelected||(pe.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),pe.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){pe.propFix[this.toLowerCase()]=this}),fe.enctype||(pe.propFix.enctype="encoding");var Pt=/[\t\r\n\f]/g;pe.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).addClass(e.call(this,t,z(this)))});if("string"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(" "+i+" ").replace(Pt," ")){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");s=pe.trim(r),i!==s&&pe.attr(n,"class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).removeClass(e.call(this,t,z(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(" "+i+" ").replace(Pt," ")){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");s=pe.trim(r),i!==s&&pe.attr(n,"class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):pe.isFunction(e)?this.each(function(n){pe(this).toggleClass(e.call(this,n,z(this),t),t)}):this.each(function(){var t,r,i,o;if("string"===n)for(r=0,i=pe(this),o=e.match(De)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||(t=z(this),t&&pe._data(this,"__className__",t),pe.attr(this,"class",t||e===!1?"":pe._data(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+z(n)+" ").replace(Pt," ").indexOf(t)>-1)return!0;return!1}}),pe.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){pe.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),pe.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var Bt=e.location,Wt=pe.now(),It=/\?/,$t=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;pe.parseJSON=function(t){if(e.JSON&&e.JSON.parse)return e.JSON.parse(t+"");var n,r=null,i=pe.trim(t+"");return i&&!pe.trim(i.replace($t,function(e,t,i,o){return n&&t&&(r=0),0===r?e:(n=i||t,r+=!o-!i,"")}))?Function("return "+i)():pe.error("Invalid JSON: "+t)},pe.parseXML=function(t){var n,r;if(!t||"string"!=typeof t)return null;try{e.DOMParser?(r=new e.DOMParser,n=r.parseFromString(t,"text/xml")):(n=new e.ActiveXObject("Microsoft.XMLDOM"),n.async="false",n.loadXML(t))}catch(i){n=void 0}return n&&n.documentElement&&!n.getElementsByTagName("parsererror").length||pe.error("Invalid XML: "+t),n};var zt=/#.*$/,Xt=/([?&])_=[^&]*/,Ut=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Vt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Yt=/^(?:GET|HEAD)$/,Jt=/^\/\//,Gt=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Kt={},Qt={},Zt="*/".concat("*"),en=Bt.href,tn=Gt.exec(en.toLowerCase())||[];pe.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:en,type:"GET",isLocal:Vt.test(tn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":pe.parseJSON,"text xml":pe.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?V(V(e,pe.ajaxSettings),t):V(pe.ajaxSettings,e)},ajaxPrefilter:X(Kt),ajaxTransport:X(Qt),ajax:function(t,n){function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c=void 0,s=i||"",T.readyState=t>0?4:0,o=t>=200&&t<300||304===t,r&&(x=Y(d,T,r)),x=J(d,x,T,o),o?(d.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(pe.lastModified[a]=w),w=T.getResponseHeader("etag"),w&&(pe.etag[a]=w)),204===t||"HEAD"===d.type?C="nocontent":304===t?C="notmodified":(C=x.state,f=x.data,v=x.error,o=!v)):(v=C,!t&&C||(C="error",t<0&&(t=0))),T.status=t,T.statusText=(n||C)+"",o?g.resolveWith(p,[f,C,T]):g.rejectWith(p,[T,C,v]),T.statusCode(y),y=void 0,l&&h.trigger(o?"ajaxSuccess":"ajaxError",[T,d,o?f:v]),m.fireWith(p,[T,C]),l&&(h.trigger("ajaxComplete",[T,d]),--pe.active||pe.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,d=pe.ajaxSetup({},n),p=d.context||d,h=d.context&&(p.nodeType||p.jquery)?pe(p):pe.event,g=pe.Deferred(),m=pe.Callbacks("once memory"),y=d.statusCode||{},v={},x={},b=0,w="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!f)for(f={};t=Ut.exec(s);)f[t[1].toLowerCase()]=t[2];t=f[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=x[n]=x[n]||e,v[e]=t),this},overrideMimeType:function(e){return b||(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(b<2)for(t in e)y[t]=[y[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||w;return c&&c.abort(t),r(0,t),this}};if(g.promise(T).complete=m.add,T.success=T.done,T.error=T.fail,d.url=((t||d.url||en)+"").replace(zt,"").replace(Jt,tn[1]+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=pe.trim(d.dataType||"*").toLowerCase().match(De)||[""],null==d.crossDomain&&(i=Gt.exec(d.url.toLowerCase()),d.crossDomain=!(!i||i[1]===tn[1]&&i[2]===tn[2]&&(i[3]||("http:"===i[1]?"80":"443"))===(tn[3]||("http:"===tn[1]?"80":"443")))),d.data&&d.processData&&"string"!=typeof d.data&&(d.data=pe.param(d.data,d.traditional)),U(Kt,d,n,T),2===b)return T;l=pe.event&&d.global,l&&0===pe.active++&&pe.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Yt.test(d.type),a=d.url,d.hasContent||(d.data&&(a=d.url+=(It.test(a)?"&":"?")+d.data,delete d.data),d.cache===!1&&(d.url=Xt.test(a)?a.replace(Xt,"$1_="+Wt++):a+(It.test(a)?"&":"?")+"_="+Wt++)),d.ifModified&&(pe.lastModified[a]&&T.setRequestHeader("If-Modified-Since",pe.lastModified[a]),pe.etag[a]&&T.setRequestHeader("If-None-Match",pe.etag[a])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&T.setRequestHeader("Content-Type",d.contentType),T.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Zt+"; q=0.01":""):d.accepts["*"]);for(o in d.headers)T.setRequestHeader(o,d.headers[o]);if(d.beforeSend&&(d.beforeSend.call(p,T,d)===!1||2===b))return T.abort();w="abort";for(o in{success:1,error:1,complete:1})T[o](d[o]);if(c=U(Qt,d,n,T)){if(T.readyState=1,l&&h.trigger("ajaxSend",[T,d]),2===b)return T;d.async&&d.timeout>0&&(u=e.setTimeout(function(){T.abort("timeout")},d.timeout));try{b=1,c.send(v,r)}catch(C){if(!(b<2))throw C;r(-1,C)}}else r(-1,"No Transport");return T},getJSON:function(e,t,n){return pe.get(e,t,n,"json")},getScript:function(e,t){return pe.get(e,void 0,t,"script")}}),pe.each(["get","post"],function(e,t){pe[t]=function(e,n,r,i){return pe.isFunction(n)&&(i=i||r,r=n,n=void 0),pe.ajax(pe.extend({url:e,type:t,dataType:i,data:n,success:r},pe.isPlainObject(e)&&e))}}),pe._evalUrl=function(e){return pe.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},pe.fn.extend({wrapAll:function(e){if(pe.isFunction(e))return this.each(function(t){pe(this).wrapAll(e.call(this,t))});if(this[0]){var t=pe(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return pe.isFunction(e)?this.each(function(t){pe(this).wrapInner(e.call(this,t))}):this.each(function(){var t=pe(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=pe.isFunction(e);return this.each(function(n){pe(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){pe.nodeName(this,"body")||pe(this).replaceWith(this.childNodes)}).end()}}),pe.expr.filters.hidden=function(e){return fe.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:K(e)},pe.expr.filters.visible=function(e){return!pe.expr.filters.hidden(e)};var nn=/%20/g,rn=/\[\]$/,on=/\r?\n/g,an=/^(?:submit|button|image|reset|file)$/i,sn=/^(?:input|select|textarea|keygen)/i;pe.param=function(e,t){var n,r=[],i=function(e,t){t=pe.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=pe.ajaxSettings&&pe.ajaxSettings.traditional),pe.isArray(e)||e.jquery&&!pe.isPlainObject(e))pe.each(e,function(){i(this.name,this.value)});else for(n in e)Q(n,e[n],t,i);return r.join("&").replace(nn,"+")},pe.fn.extend({serialize:function(){return pe.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=pe.prop(this,"elements");return e?pe.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!pe(this).is(":disabled")&&sn.test(this.nodeName)&&!an.test(e)&&(this.checked||!Be.test(e))}).map(function(e,t){var n=pe(this).val();return null==n?null:pe.isArray(n)?pe.map(n,function(e){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),pe.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){return this.isLocal?ee():re.documentMode>8?Z():/^(get|post|head|put|delete|options)$/i.test(this.type)&&Z()||ee()}:Z;var un=0,ln={},cn=pe.ajaxSettings.xhr();e.attachEvent&&e.attachEvent("onunload",function(){for(var e in ln)ln[e](void 0,!0)}),fe.cors=!!cn&&"withCredentials"in cn,cn=fe.ajax=!!cn,cn&&pe.ajaxTransport(function(t){if(!t.crossDomain||fe.cors){var n;return{send:function(r,i){var o,a=t.xhr(),s=++un;if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(o in t.xhrFields)a[o]=t.xhrFields[o];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(o in r)void 0!==r[o]&&a.setRequestHeader(o,r[o]+"");a.send(t.hasContent&&t.data||null),n=function(e,r){var o,u,l;if(n&&(r||4===a.readyState))if(delete ln[s],n=void 0,a.onreadystatechange=pe.noop,r)4!==a.readyState&&a.abort();else{l={},o=a.status,"string"==typeof a.responseText&&(l.text=a.responseText);try{u=a.statusText}catch(c){u=""}o||!t.isLocal||t.crossDomain?1223===o&&(o=204):o=l.text?200:404}l&&i(o,u,l,a.getAllResponseHeaders())},t.async?4===a.readyState?e.setTimeout(n):a.onreadystatechange=ln[s]=n:n()},abort:function(){n&&n(void 0,!0)}}}}),pe.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return pe.globalEval(e),e}}}),pe.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),pe.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=re.head||pe("head")[0]||re.documentElement;return{send:function(r,i){t=re.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||i(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var fn=[],dn=/(=)\?(?=&|$)|\?\?/;pe.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=fn.pop()||pe.expando+"_"+Wt++;return this[e]=!0,e}}),pe.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=t.jsonp!==!1&&(dn.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&dn.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=pe.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(dn,"$1"+i):t.jsonp!==!1&&(t.url+=(It.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||pe.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?pe(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,fn.push(i)),a&&pe.isFunction(o)&&o(a[0]),a=o=void 0}),"script"}),pe.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||re;var r=Te.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=y([e],t,i),i&&i.length&&pe(i).remove(),pe.merge([],r.childNodes))};var pn=pe.fn.load;return pe.fn.load=function(e,t,n){if("string"!=typeof e&&pn)return pn.apply(this,arguments);var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=pe.trim(e.slice(s,e.length)),e=e.slice(0,s)),pe.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&pe.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?pe("
            ").append(pe.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},pe.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){pe.fn[t]=function(e){return this.on(t,e)}}),pe.expr.filters.animated=function(e){return pe.grep(pe.timers,function(t){return e===t.elem}).length},pe.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=pe.css(e,"position"),f=pe(e),d={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=pe.css(e,"top"),u=pe.css(e,"left"),l=("absolute"===c||"fixed"===c)&&pe.inArray("auto",[o,u])>-1,l?(r=f.position(),a=r.top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),pe.isFunction(t)&&(t=t.call(e,n,pe.extend({},s))),null!=t.top&&(d.top=t.top-s.top+a),null!=t.left&&(d.left=t.left-s.left+i),"using"in t?t.using.call(e,d):f.css(d)}},pe.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){pe.offset.setOffset(this,e,t)});var t,n,r={top:0,left:0},i=this[0],o=i&&i.ownerDocument;if(o)return t=o.documentElement,pe.contains(t,i)?("undefined"!=typeof i.getBoundingClientRect&&(r=i.getBoundingClientRect()),n=te(o),{top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):r},position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===pe.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),pe.nodeName(e[0],"html")||(n=e.offset()),n.top+=pe.css(e[0],"borderTopWidth",!0),n.left+=pe.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-pe.css(r,"marginTop",!0),left:t.left-n.left-pe.css(r,"marginLeft",!0)}}},offsetParent:function(){ +return this.map(function(){for(var e=this.offsetParent;e&&!pe.nodeName(e,"html")&&"static"===pe.css(e,"position");)e=e.offsetParent;return e||pt})}}),pe.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);pe.fn[e]=function(r){return Pe(this,function(e,r,i){var o=te(e);return void 0===i?o?t in o?o[t]:o.document.documentElement[r]:e[r]:void(o?o.scrollTo(n?pe(o).scrollLeft():i,n?i:pe(o).scrollTop()):e[r]=i)},e,r,arguments.length,null)}}),pe.each(["top","left"],function(e,t){pe.cssHooks[t]=L(fe.pixelPosition,function(e,n){if(n)return n=gt(e,t),ft.test(n)?pe(e).position()[t]+"px":n})}),pe.each({Height:"height",Width:"width"},function(e,t){pe.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){pe.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),a=n||(r===!0||i===!0?"margin":"border");return Pe(this,function(t,n,r){var i;return pe.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===r?pe.css(t,n,a):pe.style(t,n,r,a)},t,o?r:void 0,o,null)}})}),pe.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),pe.fn.size=function(){return this.length},pe.fn.andSelf=pe.fn.addBack,layui.define(function(e){layui.$=pe,e("jquery",pe)}),pe});!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,i=t.length-1,n=i;n>0;n--)if("interactive"===t[n].readyState){e=t[n].src;break}return e||t[i].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"],getStyle:function(t,i){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](i)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName("head")[0],s=document.createElement("link");"string"==typeof i&&(n=i);var l=(n||t).replace(/\.|\//g,""),f="layuicss-"+l,c=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function u(){return++c>80?e.console&&console.error("layer.css: Invalid"):void(1989===parseInt(o.getStyle(document.getElementById(f),"width"))?i():setTimeout(u,100))}()}}},r={v:"3.3.0",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):o.link("theme/"+e.extend),this):this},ready:function(e){var t="layer",i="",n=(a?"modules/layer/":"theme/")+"default/layer.css?v="+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:260},n))}},s=function(e){var t=this,a=function(){r.ready(function(){t.creat()})};t.index=++r.index,t.config.maxWidth=i(n).width()-30,t.config=i.extend({},t.config,o.config,e),document.body?a():setTimeout(function(){a()},30)};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim-00","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'
            '+(f?r.title[0]:r.title)+"
            ":"";return r.zIndex=s,t([r.shade?'
            ':"",'
            '+(e&&2!=r.type?"":u)+'
            '+(0==r.type&&r.icon!==-1?'':"")+(1==r.type&&e?"":r.content||"")+'
            '+function(){var e=c?'':"";return r.closeBtn&&(e+=''),e}()+""+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t'+r.btn[t]+"";return'
            '+e+"
            "}():"")+(r.resize?'':"")+"
            "],u,i('
            ')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"","auto"];t.content='';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+'',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i(".layui-layer-move")[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),i("#layui-layer-shade"+e.index).css({"background-color":t.shade[1]||"#000",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u="layer-anim "+l.anim[t.anim];e.layero.addClass(u).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data("isOutAnim",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i("#"+l[0]+e);""===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find("."+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css("padding-top"))))};switch(a.type){case 2:u("iframe");break;default:""===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u("."+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u("."+l[5])):u("."+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;af&&(a=f),ou&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&i("#layui-layer-shade"+t.index).on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){var a=i("#"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr("minLeft")||181*o.minIndex+"px",c=a.css("position");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr("position",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:"fixed",overflow:"hidden"},!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr("minLeft")||o.minIndex++,a.attr("minLeft",f)},r.restore=function(e){var t=i("#"+l[0]+e),n=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(n[0]),height:parseFloat(n[1]),top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){r.ready(function(){var t=i("#"+l[0]+e),n=t.attr("type"),a="layer-anim-close";if(t[0]){var s="layui-layer-wrap",f=function(){if(n===o.type[1]&&"object"===t.attr("conType")){t.children(":not(."+l[5]+")").remove();for(var a=t.find("."+s),r=0;r<2;r++)a.unwrap();a.css("display",a.data("display")).removeClass(s)}else{if(n===o.type[2])try{var f=i("#"+l[4]+e)[0];f.contentWindow.document.write(""),f.contentWindow.close(),t.find("."+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML="",t.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data("isOutAnim")&&t.addClass("layer-anim "+a),i("#layui-layer-moves, #layui-layer-shade"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr("minLeft")&&(o.minIndex--,o.minLeft.push(t.attr("minLeft"))),r.ie&&r.ie<10||!t.data("isOutAnim")?f():setTimeout(function(){f()},200)}})},r.closeAll=function(e){r.ready(function(){i.each(i("."+l[0]),function(){var t=i(this),n=e?t.attr("type")===e:1;n&&r.close(t.attr("times")),n=null})})};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'":function(){return''}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(t){s=t.find(".layui-layer-input"),s.val(e.value||"").focus(),"function"==typeof f&&f(t)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n="layui-this",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,a="";if(e>0)for(a=''+t[0].title+"";i"+t[i].title+"";return a}(),content:'
              '+function(){var e=t.length,i=1,a="";if(e>0)for(a='
            • '+(t[0].content||"no content")+"
            • ";i'+(t[i].content||"no content")+"";return a}()+"
            ",success:function(t){var o=t.find(".layui-layer-title").children(),r=t.find(".layui-layer-tabmain").children();o.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),"function"==typeof e.change&&e.change(o)}),"function"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext()}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]'+(u[d].alt||
            '+(u.length>1?'':"")+'
            '+(u[d].alt||"")+""+s.imgIndex+"/"+u.length+"
            ",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imguide,.layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常
            是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window);layui.define("jquery",function(e){"use strict";var t=layui.$,i={fixbar:function(e){var i,a,n="layui-fixbar",o="layui-fixbar-top",r=t(document),l=t("body");e=t.extend({showHeight:200},e),e.bar1=e.bar1===!0?"":e.bar1,e.bar2=e.bar2===!0?"":e.bar2,e.bgcolor=e.bgcolor?"background-color:"+e.bgcolor:"";var c=[e.bar1,e.bar2,""],g=t(['
              ',e.bar1?'
            • '+c[0]+"
            • ":"",e.bar2?'
            • '+c[1]+"
            • ":"",'
            • '+c[2]+"
            • ","
            "].join("")),u=g.find("."+o),s=function(){var t=r.scrollTop();t>=e.showHeight?i||(u.show(),i=1):i&&(u.hide(),i=0)};t("."+n)[0]||("object"==typeof e.css&&g.css(e.css),l.append(g),s(),g.find("li").on("click",function(){var i=t(this),a=i.attr("lay-type");"top"===a&&t("html,body").animate({scrollTop:0},200),e.click&&e.click.call(this,a)}),r.on("scroll",function(){clearTimeout(a),a=setTimeout(function(){s()},100)}))},countdown:function(e,t,i){var a=this,n="function"==typeof t,o=new Date(e).getTime(),r=new Date(!t||n?(new Date).getTime():t).getTime(),l=o-r,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];n&&(i=t);var g=setTimeout(function(){a.countdown(e,r+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],t,g),l<=0&&clearTimeout(g),g},timeAgo:function(e,t){var i=this,a=[[],[]],n=(new Date).getTime()-new Date(e).getTime();return n>26784e5?(n=new Date(e),a[0][0]=i.digit(n.getFullYear(),4),a[0][1]=i.digit(n.getMonth()+1),a[0][2]=i.digit(n.getDate()),t||(a[1][0]=i.digit(n.getHours()),a[1][1]=i.digit(n.getMinutes()),a[1][2]=i.digit(n.getSeconds())),a[0].join("-")+" "+a[1].join(":")):n>=864e5?(n/1e3/60/60/24|0)+"天前":n>=36e5?(n/1e3/60/60|0)+"小时前":n>=18e4?(n/1e3/60|0)+"分钟前":n<0?"未来":"刚刚"},digit:function(e,t){var i="";e=String(e),t=t||2;for(var a=e.length;a/g,">").replace(/'/g,"'").replace(/"/g,""")},unescape:function(e){return String(e||"").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/,"'").replace(/\"/,'"')},event:function(e,a,n){var o=t("body");return n=n||"click",a=i.event[e]=t.extend(!0,i.event[e],a)||{},i.event.UTIL_EVENT_CALLBACK=i.event.UTIL_EVENT_CALLBACK||{},o.off(n,"*["+e+"]",i.event.UTIL_EVENT_CALLBACK[e]),i.event.UTIL_EVENT_CALLBACK[e]=function(){var i=t(this),n=i.attr(e);"function"==typeof a[n]&&a[n].call(this,i)},o.on(n,"*["+e+"]",i.event.UTIL_EVENT_CALLBACK[e]),a}};e("util",i)});layui.define("jquery",function(t){"use strict";var a=layui.$,i=(layui.hint(),layui.device()),e="element",l="layui-this",n="layui-show",s=function(){this.config={}};s.prototype.set=function(t){var i=this;return a.extend(!0,i.config,t),i},s.prototype.on=function(t,a){return layui.onevent.call(this,e,t,a)},s.prototype.tabAdd=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.children(".layui-tab-bar"),o=l.children(".layui-tab-content"),r='
          • "+(i.title||"unnaming")+"
          • ";return s[0]?s.before(r):n.append(r),o.append('
            '+(i.content||"")+"
            "),f.hideTabMore(!0),f.tabAuto(),this},s.prototype.tabDelete=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+i+'"]');return f.tabDelete(null,s),this},s.prototype.tabChange=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+i+'"]');return f.tabClick.call(s[0],null,null,s),this},s.prototype.tab=function(t){t=t||{},b.on("click",t.headerElem,function(i){var e=a(this).index();f.tabClick.call(this,i,e,null,t)})},s.prototype.progress=function(t,i){var e="layui-progress",l=a("."+e+"[lay-filter="+t+"]"),n=l.find("."+e+"-bar"),s=n.find("."+e+"-text");return n.css("width",i),s.text(i),this};var o=".layui-nav",r="layui-nav-item",c="layui-nav-bar",u="layui-nav-tree",d="layui-nav-child",y="layui-nav-more",h="layui-anim layui-anim-upbit",f={tabClick:function(t,i,s,o){o=o||{};var r=s||a(this),i=i||r.parent().children("li").index(r),c=o.headerElem?r.parent():r.parents(".layui-tab").eq(0),u=o.bodyElem?a(o.bodyElem):c.children(".layui-tab-content").children(".layui-tab-item"),d=r.find("a"),y=c.attr("lay-filter");"javascript:;"!==d.attr("href")&&"_blank"===d.attr("target")||(r.addClass(l).siblings().removeClass(l),u.eq(i).addClass(n).siblings().removeClass(n)),layui.event.call(this,e,"tab("+y+")",{elem:c,index:i})},tabDelete:function(t,i){var n=i||a(this).parent(),s=n.index(),o=n.parents(".layui-tab").eq(0),r=o.children(".layui-tab-content").children(".layui-tab-item"),c=o.attr("lay-filter");n.hasClass(l)&&(n.next()[0]?f.tabClick.call(n.next()[0],null,s+1):n.prev()[0]&&f.tabClick.call(n.prev()[0],null,s-1)),n.remove(),r.eq(s).remove(),setTimeout(function(){f.tabAuto()},50),layui.event.call(this,e,"tabDelete("+c+")",{elem:o,index:s})},tabAuto:function(){var t="layui-tab-more",e="layui-tab-bar",l="layui-tab-close",n=this;a(".layui-tab").each(function(){var s=a(this),o=s.children(".layui-tab-title"),r=(s.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),c=a('');if(n===window&&8!=i.ie&&f.hideTabMore(!0),s.attr("lay-allowClose")&&o.find("li").each(function(){var t=a(this);if(!t.find("."+l)[0]){var i=a('');i.on("click",f.tabDelete),t.append(i)}}),"string"!=typeof s.attr("lay-unauto"))if(o.prop("scrollWidth")>o.outerWidth()+1){if(o.find("."+e)[0])return;o.append(c),s.attr("overflow",""),c.on("click",function(a){o[this.title?"removeClass":"addClass"](t),this.title=this.title?"":"收缩"})}else o.find("."+e).remove(),s.removeAttr("overflow")})},hideTabMore:function(t){var i=a(".layui-tab-title");t!==!0&&"tabmore"===a(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=a(this),i=t.parents(o),n=i.attr("lay-filter"),s=t.parent(),c=t.siblings("."+d),y="string"==typeof s.attr("lay-unselect");"javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||y||c[0]||(i.find("."+l).removeClass(l),s.addClass(l)),i.hasClass(u)&&(c.removeClass(h),c[0]&&(s["none"===c.css("display")?"addClass":"removeClass"](r+"ed"),"all"===i.attr("lay-shrink")&&s.siblings().removeClass(r+"ed"))),layui.event.call(this,e,"nav("+n+")",t)},collapse:function(){var t=a(this),i=t.find(".layui-colla-icon"),l=t.siblings(".layui-colla-content"),s=t.parents(".layui-collapse").eq(0),o=s.attr("lay-filter"),r="none"===l.css("display");if("string"==typeof s.attr("lay-accordion")){var c=s.children(".layui-colla-item").children("."+n);c.siblings(".layui-colla-title").children(".layui-colla-icon").html(""),c.removeClass(n)}l[r?"addClass":"removeClass"](n),i.html(r?"":""),layui.event.call(this,e,"collapse("+o+")",{title:t,content:l,show:r})}};s.prototype.init=function(t,e){var l=function(){return e?'[lay-filter="'+e+'"]':""}(),s={tab:function(){f.tabAuto.call({})},nav:function(){var t=200,e={},s={},p={},b=function(l,o,r){var c=a(this),f=c.find("."+d);o.hasClass(u)?l.css({top:c.position().top,height:c.children("a").outerHeight(),opacity:1}):(f.addClass(h),l.css({left:c.position().left+parseFloat(c.css("marginLeft")),top:c.position().top+c.height()-l.height()}),e[r]=setTimeout(function(){l.css({width:c.width(),opacity:1})},i.ie&&i.ie<10?0:t),clearTimeout(p[r]),"block"===f.css("display")&&clearTimeout(s[r]),s[r]=setTimeout(function(){f.addClass(n),c.find("."+y).addClass(y+"d")},300))};a(o+l).each(function(i){var l=a(this),o=a(''),h=l.find("."+r);l.find("."+c)[0]||(l.append(o),h.on("mouseenter",function(){b.call(this,o,l,i)}).on("mouseleave",function(){l.hasClass(u)||(clearTimeout(s[i]),s[i]=setTimeout(function(){l.find("."+d).removeClass(n),l.find("."+y).removeClass(y+"d")},300))}),l.on("mouseleave",function(){clearTimeout(e[i]),p[i]=setTimeout(function(){l.hasClass(u)?o.css({height:0,top:o.position().top+o.height()/2,opacity:0}):o.css({width:0,left:o.position().left+o.width()/2,opacity:0})},t)})),h.find("a").each(function(){var t=a(this),i=(t.parent(),t.siblings("."+d));i[0]&&!t.children("."+y)[0]&&t.append(''),t.off("click",f.clickThis).on("click",f.clickThis)})})},breadcrumb:function(){var t=".layui-breadcrumb";a(t+l).each(function(){var t=a(this),i="lay-separator",e=t.attr(i)||"/",l=t.find("a");l.next("span["+i+"]")[0]||(l.each(function(t){t!==l.length-1&&a(this).after(""+e+"")}),t.css("visibility","visible"))})},progress:function(){var t="layui-progress";a("."+t+l).each(function(){var i=a(this),e=i.find(".layui-progress-bar"),l=e.attr("lay-percent");e.css("width",function(){return/^.+\/.+$/.test(l)?100*new Function("return "+l)()+"%":l}()),i.attr("lay-showPercent")&&setTimeout(function(){e.html(''+l+"")},350)})},collapse:function(){var t="layui-collapse";a("."+t+l).each(function(){var t=a(this).find(".layui-colla-item");t.each(function(){var t=a(this),i=t.find(".layui-colla-title"),e=t.find(".layui-colla-content"),l="none"===e.css("display");i.find(".layui-colla-icon").remove(),i.append(''+(l?"":"")+""),i.off("click",f.collapse).on("click",f.collapse)})})}};return s[t]?s[t]():layui.each(s,function(t,a){a()})},s.prototype.render=s.prototype.init;var p=new s,b=a(document);p.render();var v=".layui-tab-title li";b.on("click",v,f.tabClick),b.on("click",f.hideTabMore),a(window).on("resize",f.tabAuto),t(e,p)});layui.define("layer",function(e){"use strict";var t=layui.$,i=layui.layer,n=layui.hint(),o=layui.device(),a={config:{},set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,r,e,t)}},l=function(){var e=this;return{upload:function(t){e.upload.call(e,t)},reload:function(t){e.reload.call(e,t)},config:e.config}},r="upload",u="layui-upload-file",c="layui-upload-form",f="layui-upload-iframe",s="layui-upload-choose",p=function(e){var i=this;i.config=t.extend({},i.config,a.config,e),i.render()};p.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1},p.prototype.render=function(e){var i=this,e=i.config;e.elem=t(e.elem),e.bindAction=t(e.bindAction),i.file(),i.events()},p.prototype.file=function(){var e=this,i=e.config,n=e.elemFile=t(['"].join("")),a=i.elem.next();(a.hasClass(u)||a.hasClass(c))&&a.remove(),o.ie&&o.ie<10&&i.elem.wrap('
            '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(n),o.ie&&o.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,i=e.config,n=t(''),o=t(['
            ',"
            "].join(""));t("#"+f)[0]||t("body").append(n),i.elem.next().hasClass(c)||(e.elemFile.wrap(o),i.elem.next("."+c).append(function(){var e=[];return layui.each(i.data,function(t,i){i="function"==typeof i?i():i,e.push('')}),e.join("")}()))},p.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},p.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},p.prototype.preview=function(e){var t=this;window.FileReader&&layui.each(t.chooseFiles,function(t,i){var n=new FileReader;n.readAsDataURL(i),n.onload=function(){e&&e(t,i,this.result)}})},p.prototype.upload=function(e,i){var n,a=this,l=a.config,r=a.elemFile[0],u=function(){var i=0,n=0,o=e||a.files||a.chooseFiles||r.files,u=function(){l.multiple&&i+n===a.fileLength&&"function"==typeof l.allDone&&l.allDone({total:a.fileLength,successful:i,aborted:n})};layui.each(o,function(e,o){var r=new FormData;r.append(l.field,o),layui.each(l.data,function(e,t){t="function"==typeof t?t():t,r.append(e,t)});var c={url:l.url,type:"post",data:r,contentType:!1,processData:!1,dataType:"json",headers:l.headers||{},success:function(t){i++,d(e,t),u()},error:function(){n++,a.msg("请求上传接口出现异常"),m(e),u()}};"function"==typeof l.progress&&(c.xhr=function(){var e=t.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){if(e.lengthComputable){var t=Math.floor(e.loaded/e.total*100);l.progress(t,l.item[0],e)}}),e}),t.ajax(c)})},c=function(){var e=t("#"+f);a.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var t,i=e.contents().find("body");try{t=i.text()}catch(n){a.msg("获取上传后的响应信息出现异常"),clearInterval(p.timer),m()}t&&(clearInterval(p.timer),i.html(""),d(0,t))},30)},d=function(e,t){if(a.elemFile.next("."+s).remove(),r.value="","object"!=typeof t)try{t=JSON.parse(t)}catch(i){return t={},a.msg("请对上传接口返回有效JSON")}"function"==typeof l.done&&l.done(t,e||0,function(e){a.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){a.upload(e)})},h=l.exts,v=function(){var t=[];return layui.each(e||a.chooseFiles,function(e,i){t.push(i.name)}),t}(),g={preview:function(e){a.preview(e)},upload:function(e,t){var i={};i[e]=t,a.upload(i)},pushFile:function(){return a.files=a.files||{},layui.each(a.chooseFiles,function(e,t){a.files[e]=t}),a.files},resetFile:function(e,t,i){var n=new File([t],i);a.files=a.files||{},a.files[e]=n}},y=function(){if("choose"!==i&&!l.auto||(l.choose&&l.choose(g),"choose"!==i))return l.before&&l.before(g),o.ie?o.ie>9?u():c():void u()};if(v=0===v.length?r.value.match(/[^\/\\]+\..+/g)||[]||"":v,0!==v.length){switch(l.accept){case"file":if(h&&!RegExp("\\w\\.("+h+")$","i").test(escape(v)))return a.msg("选择的文件中包含不支持的格式"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(v)))return a.msg("选择的视频中包含不支持的格式"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(v)))return a.msg("选择的音频中包含不支持的格式"),r.value="";break;default:if(layui.each(v,function(e,t){RegExp("\\w\\.("+(h||"jpg|png|gif|bmp|jpeg$")+")","i").test(escape(t))||(n=!0)}),n)return a.msg("选择的图片中包含不支持的格式"),r.value=""}if(a.fileLength=function(){var t=0,i=e||a.files||a.chooseFiles||r.files;return layui.each(i,function(){t++}),t}(),l.number&&a.fileLength>l.number)return a.msg("同时最多只能上传的数量为:"+l.number);if(l.size>0&&!(o.ie&&o.ie<10)){var F;if(layui.each(a.chooseFiles,function(e,t){if(t.size>1024*l.size){var i=l.size/1024;i=i>=1?i.toFixed(2)+"MB":l.size+"KB",r.value="",F=i}}),F)return a.msg("文件不能超过"+F)}y()}},p.prototype.reload=function(e){e=e||{},delete e.elem,delete e.bindAction;var i=this,e=i.config=t.extend({},i.config,a.config,e),n=e.elem.next();n.attr({name:e.name,accept:e.acceptMime,multiple:e.multiple})},p.prototype.events=function(){var e=this,i=e.config,a=function(t){e.chooseFiles={},layui.each(t,function(t,i){var n=(new Date).getTime();e.chooseFiles[n+"-"+t]=i})},l=function(t,n){var o=e.elemFile,a=t.length>1?t.length+"个文件":(t[0]||{}).name||o[0].value.match(/[^\/\\]+\..+/g)||[]||"";o.next().hasClass(s)&&o.next().remove(),e.upload(null,"choose"),e.isFile()||i.choose||o.after(''+a+"")};i.elem.off("upload.start").on("upload.start",function(){var o=t(this),a=o.attr("lay-data");if(a)try{a=new Function("return "+a)(),e.config=t.extend({},i,a)}catch(l){n.error("Upload element property lay-data configuration item has a syntax error: "+a)}e.config.item=o,e.elemFile[0].click()}),o.ie&&o.ie<10||i.elem.off("upload.over").on("upload.over",function(){var e=t(this);e.attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){var e=t(this);e.removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(n,o){var r=t(this),u=o.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),a(u),i.auto?e.upload(u):l(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var t=this.files||[];a(t),i.auto?e.upload():l(t)}),i.bindAction.off("upload.action").on("upload.action",function(){e.upload()}),i.elem.data("haveEvents")||(e.elemFile.on("change",function(){t(this).trigger("upload.change")}),i.elem.on("click",function(){e.isFile()||t(this).trigger("upload.start")}),i.drag&&i.elem.on("dragover",function(e){e.preventDefault(),t(this).trigger("upload.over")}).on("dragleave",function(e){t(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),t(this).trigger("upload.drop",e)}),i.bindAction.on("click",function(){t(this).trigger("upload.action")}),i.elem.data("haveEvents",!0))},a.render=function(e){var t=new p(e);return l.call(t)},e(r,a)});layui.define(["jquery","laytpl","lay"],function(e){"use strict";var i=layui.$,n=layui.laytpl,t=layui.hint(),a=layui.device(),l=a.mobile?"click":"mousedown",r="dropdown",o="layui_"+r+"_index",u={config:{},index:layui[r]?layui[r].index+1e4:0,set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,r,e,i)}},d=function(){var e=this,i=e.config,n=i.id;return d.that[n]=e,{config:i,reload:function(i){e.reload.call(e,i)}}},s="layui-dropdown",m="layui-menu-item-up",c="layui-menu-item-down",p="layui-menu-body-title",y="layui-menu-item-group",f="layui-menu-item-parent",v="layui-menu-item-divider",g="layui-menu-item-checked",h="layui-menu-item-checked2",w="layui-menu-body-panel",C="layui-menu-body-panel-left",V="."+y+">."+p,k=function(e){var n=this;n.index=++u.index,n.config=i.extend({},n.config,u.config,e),n.init()};k.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:300},k.prototype.reload=function(e){var n=this;n.config=i.extend({},n.config,e),n.init(!0)},k.prototype.init=function(e){var n=this,t=n.config,a=t.elem=i(t.elem);if(a.length>1)return layui.each(a,function(){u.render(i.extend({},t,{elem:this}))}),n;if(!e&&a[0]&&a.data(o)){var l=d.getThis(a.data(o));if(!l)return;return l.reload(t)}t.id="id"in t?t.id:n.index,t.show&&n.render(e),n.events()},k.prototype.render=function(e){var t=this,a=t.config,r=i("body"),s=function(){var e=i('
              ');return a.data.length>0?m(e,a.data):e.html('
            • no menu
            • '),e},m=function(e,t){return layui.each(t,function(t,l){var r=l.child&&l.child.length>0,o="isSpreadItem"in l?l.isSpreadItem:a.isSpreadItem,u=l.templet?n(l.templet).render(l):a.templet?n(a.templet).render(l):l.title,d=function(){return r&&(l.type=l.type||"parent"),l.type?{group:"group",parent:"parent","-":"-"}[l.type]||"parent":""}();if("-"===d||l.title||l.id||r){var s=i(["",function(){var e="href"in l?''+u+"":u;return r?'
              '+e+function(){return"parent"===d?'':"group"===d&&a.isAllowSpread?'':""}()+"
              ":'
              '+e+"
              "}(),""].join(""));if(s.data("item",l),r){var c=i('
              '),y=i("
                ");"parent"===d?(c.append(m(y,l.child)),s.append(c)):s.append(m(y,l.child))}e.append(s)}}),e},c=['
                ',"
                "].join("");("contextmenu"===a.trigger||lay.isTopElem(a.elem[0]))&&(e=!0),!e&&a.elem.data(o+"_opened")||(t.elemView=i(c),t.elemView.append(a.content||s()),a.className&&t.elemView.addClass(a.className),a.style&&t.elemView.attr("style",a.style),u.thisId=a.id,t.remove(),r.append(t.elemView),a.elem.data(o+"_opened",!0),t.position(),d.prevElem=t.elemView,d.prevElem.data("prevElem",a.elem),t.elemView.find(".layui-menu").on(l,function(e){lay.stope(e)}),t.elemView.find(".layui-menu li").on("click",function(e){var n=i(this),l=n.data("item")||{},r=l.child&&l.child.length>0;r||"-"===l.type||(t.remove(),"function"==typeof a.click&&a.click(l,n))}),t.elemView.find(V).on("click",function(e){var n=i(this),t=n.parent(),l=t.data("item")||{};"group"===l.type&&a.isAllowSpread&&d.spread(t)}),"mouseenter"===a.trigger&&t.elemView.on("mouseenter",function(){clearTimeout(d.timer)}).on("mouseleave",function(){t.delayRemove()}))},k.prototype.position=function(e){var i=this,n=i.config;lay.position(n.elem[0],i.elemView[0],{position:n.position,e:i.e,clickType:"contextmenu"===n.trigger?"right":null})},k.prototype.remove=function(){var e=this,i=(e.config,d.prevElem);i&&(i.data("prevElem")&&i.data("prevElem").data(o+"_opened",!1),i.remove())},k.prototype.delayRemove=function(){var e=this,i=e.config;clearTimeout(d.timer),d.timer=setTimeout(function(){e.remove()},i.delay)},k.prototype.events=function(){var e=this,i=e.config;"hover"===i.trigger&&(i.trigger="mouseenter"),e.prevElem&&e.prevElem.off(i.trigger,e.prevElemCallback),e.prevElem=i.elem,e.prevElemCallback=function(n){clearTimeout(d.timer),e.e=n,e.render(),n.preventDefault(),"function"==typeof i.ready&&i.ready(e.elemView,i.elem,e.e.target)},i.elem.on(i.trigger,e.prevElemCallback),"mouseenter"===i.trigger&&i.elem.on("mouseleave",function(){e.delayRemove()})},d.that={},d.getThis=function(e){var i=d.that[e];return i||t.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),i},d.spread=function(e){var i=e.children("."+p).find(".layui-icon");e.hasClass(m)?(e.removeClass(m).addClass(c),i.removeClass("layui-icon-down").addClass("layui-icon-up")):(e.removeClass(c).addClass(m),i.removeClass("layui-icon-up").addClass("layui-icon-down"))},!function(){var e=i(window),n=i(document);e.on("resize",function(){if(u.thisId){var e=d.getThis(u.thisId);if(e){if(!e.elemView[0]||!i("."+s)[0])return!1;var n=e.config;"contextmenu"===n.trigger?e.remove():e.position()}}}),n.on(l,function(e){if(u.thisId){var i=d.getThis(u.thisId);if(i){var n=i.config;!lay.isTopElem(n.elem[0])&&"contextmenu"!==n.trigger&&(e.target===n.elem[0]||n.elem.find(e.target)[0]||e.target===i.elemView[0]||i.elemView&&i.elemView.find(e.target)[0])||i.remove()}}});var t=".layui-menu:not(.layui-dropdown-menu) li";n.on("click",t,function(e){var n=i(this),t=n.parents(".layui-menu").eq(0),a=n.hasClass(y)||n.hasClass(f),l=t.attr("lay-filter")||t.attr("id"),o=lay.options(this);n.hasClass(v)||a||(t.find("."+g).removeClass(g),t.find("."+h).removeClass(h),n.addClass(g),n.parents("."+f).addClass(h),layui.event.call(this,r,"click("+l+")",o))}),n.on("click",t+V,function(e){var n=i(this),t=n.parents("."+y+":eq(0)"),a=lay.options(t[0]);"isAllowSpread"in a&&!a.isAllowSpread||d.spread(t)});var a=".layui-menu ."+f;n.on("mouseenter",a,function(n){var t=i(this),a=t.find("."+w);if(a[0]){var l=a[0].getBoundingClientRect();l.right>e.width()&&(a.addClass(C),l=a[0].getBoundingClientRect(),l.left<0&&a.removeClass(C)),l.bottom>e.height()&&a.eq(0).css("margin-top",-(l.bottom-e.height()))}}).on("mouseleave",a,function(e){var n=i(this),t=n.children("."+w);t.removeClass(C),t.css("margin-top",0)})}(),u.reload=function(e,i){var n=d.getThis(e);return n?(n.reload(i),d.call(n)):this},u.render=function(e){var i=new k(e);return d.call(i)},e(r,u)});layui.define("jquery",function(e){"use strict";var i=layui.jquery,t={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,n,e,i)}},a=function(){var e=this,i=e.config;return{setValue:function(t,a){return i.value=t,e.slide("set",t,a||0)},config:i}},n="slider",l="layui-disabled",s="layui-slider",r="layui-slider-bar",o="layui-slider-wrap",u="layui-slider-wrap-btn",d="layui-slider-tips",v="layui-slider-input",c="layui-slider-input-txt",p="layui-slider-input-btn",m="layui-slider-hover",f=function(e){var a=this;a.index=++t.index,a.config=i.extend({},a.config,t.config,e),a.render()};f.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#009688"},f.prototype.render=function(){var e=this,t=e.config;if(t.step<1&&(t.step=1),t.maxt.min?a:t.min,t.value[1]=n>t.min?n:t.min,t.value[0]=t.value[0]>t.max?t.max:t.value[0],t.value[1]=t.value[1]>t.max?t.max:t.value[1];var r=Math.floor((t.value[0]-t.min)/(t.max-t.min)*100),v=Math.floor((t.value[1]-t.min)/(t.max-t.min)*100),p=v-r+"%";r+="%",v+="%"}else{"object"==typeof t.value&&(t.value=Math.min.apply(null,t.value)),t.valuet.max&&(t.value=t.max);var p=Math.floor((t.value-t.min)/(t.max-t.min)*100)+"%"}var m=t.disabled?"#c2c2c2":t.theme,f='
                '+(t.tips?'
                ':"")+'
                '+(t.range?'
                ':"")+"
                ",h=i(t.elem),y=h.next("."+s);if(y[0]&&y.remove(),e.elemTemp=i(f),t.range?(e.elemTemp.find("."+o).eq(0).data("value",t.value[0]),e.elemTemp.find("."+o).eq(1).data("value",t.value[1])):e.elemTemp.find("."+o).data("value",t.value),h.html(e.elemTemp),"vertical"===t.type&&e.elemTemp.height(t.height+"px"),t.showstep){for(var g=(t.max-t.min)/t.step,b="",x=1;x')}e.elemTemp.append(b)}if(t.input&&!t.range){var w=i('
                ');h.css("position","relative"),h.append(w),h.find("."+c).children("input").val(t.value),"vertical"===t.type?w.css({left:0,top:-48}):e.elemTemp.css("margin-right",w.outerWidth()+15)}t.disabled?(e.elemTemp.addClass(l),e.elemTemp.find("."+u).addClass(l)):e.slide(),e.elemTemp.find("."+u).on("mouseover",function(){var a="vertical"===t.type?t.height:e.elemTemp[0].offsetWidth,n=e.elemTemp.find("."+o),l="vertical"===t.type?a-i(this).parent()[0].offsetTop-n.height():i(this).parent()[0].offsetLeft,s=l/a*100,r=i(this).parent().data("value"),u=t.setTips?t.setTips(r):r;e.elemTemp.find("."+d).html(u),"vertical"===t.type?e.elemTemp.find("."+d).css({bottom:s+"%","margin-bottom":"20px",display:"inline-block"}):e.elemTemp.find("."+d).css({left:s+"%",display:"inline-block"})}).on("mouseout",function(){e.elemTemp.find("."+d).css("display","none")})},f.prototype.slide=function(e,t,a){var n=this,l=n.config,s=n.elemTemp,f=function(){return"vertical"===l.type?l.height:s[0].offsetWidth},h=s.find("."+o),y=s.next("."+v),g=y.children("."+c).children("input").val(),b=100/((l.max-l.min)/Math.ceil(l.step)),x=function(e,i){e=Math.ceil(e)*b>100?Math.ceil(e)*b:Math.round(e)*b,e=e>100?100:e,h.eq(i).css("vertical"===l.type?"bottom":"left",e+"%");var t=T(h[0].offsetLeft),a=l.range?T(h[1].offsetLeft):0;"vertical"===l.type?(s.find("."+d).css({bottom:e+"%","margin-bottom":"20px"}),t=T(f()-h[0].offsetTop-h.height()),a=l.range?T(f()-h[1].offsetTop-h.height()):0):s.find("."+d).css("left",e+"%"),t=t>100?100:t,a=a>100?100:a;var n=Math.min(t,a),o=Math.abs(t-a);"vertical"===l.type?s.find("."+r).css({height:o+"%",bottom:n+"%"}):s.find("."+r).css({width:o+"%",left:n+"%"});var u=l.min+Math.round((l.max-l.min)*e/100);if(g=u,y.children("."+c).children("input").val(g),h.eq(i).data("value",u),s.find("."+d).html(l.setTips?l.setTips(u):u),l.range){var v=[h.eq(0).data("value"),h.eq(1).data("value")];v[0]>v[1]&&v.reverse()}l.change&&l.change(l.range?v:u)},T=function(e){var i=e/f()*100/b,t=Math.round(i)*b;return e==f()&&(t=Math.ceil(i)*b),t},w=i(['
                f()&&(r=f());var o=r/f()*100/b;x(o,e),t.addClass(m),s.find("."+d).show(),i.preventDefault()},o=function(){t.removeClass(m),s.find("."+d).hide()};M(r,o)})}),s.on("click",function(e){var t=i("."+u);if(!t.is(event.target)&&0===t.has(event.target).length&&t.length){var a,n="vertical"===l.type?f()-e.clientY+i(this).offset().top:e.clientX-i(this).offset().left;n<0&&(n=0),n>f()&&(n=f());var s=n/f()*100/b;a=l.range?"vertical"===l.type?Math.abs(n-parseInt(i(h[0]).css("bottom")))>Math.abs(n-parseInt(i(h[1]).css("bottom")))?1:0:Math.abs(n-h[0].offsetLeft)>Math.abs(n-h[1].offsetLeft)?1:0:0,x(s,a),e.preventDefault()}}),y.children("."+p).children("i").each(function(e){i(this).on("click",function(){g=y.children("."+c).children("input").val(),g=1==e?g-l.stepl.max?l.max:Number(g)+l.step;var i=(g-l.min)/(l.max-l.min)*100/b;x(i,0)})});var q=function(){var e=this.value;e=isNaN(e)?0:e,e=el.max?l.max:e,this.value=e;var i=(e-l.min)/(l.max-l.min)*100/b;x(i,0)};y.children("."+c).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),q.call(this))}).on("change",q)},f.prototype.events=function(){var e=this;e.config},t.render=function(e){var i=new f(e);return a.call(i)},e(n,t)});layui.define("jquery",function(e){"use strict";var i=layui.jquery,o={config:{},index:layui.colorpicker?layui.colorpicker.index+1e4:0,set:function(e){var o=this;return o.config=i.extend({},o.config,e),o},on:function(e,i){return layui.onevent.call(this,"colorpicker",e,i)}},r=function(){var e=this,i=e.config;return{config:i}},t="colorpicker",n="layui-show",l="layui-colorpicker",c=".layui-colorpicker-main",a="layui-icon-down",s="layui-icon-close",f="layui-colorpicker-trigger-span",d="layui-colorpicker-trigger-i",u="layui-colorpicker-side",p="layui-colorpicker-side-slider",g="layui-colorpicker-basis",v="layui-colorpicker-alpha-bgcolor",h="layui-colorpicker-alpha-slider",m="layui-colorpicker-basis-cursor",b="layui-colorpicker-main-input",k=function(e){var i={h:0,s:0,b:0},o=Math.min(e.r,e.g,e.b),r=Math.max(e.r,e.g,e.b),t=r-o;return i.b=r,i.s=0!=r?255*t/r:0,0!=i.s?e.r==r?i.h=(e.g-e.b)/t:e.g==r?i.h=2+(e.b-e.r)/t:i.h=4+(e.r-e.g)/t:i.h=-1,r==o&&(i.h=0),i.h*=60,i.h<0&&(i.h+=360),i.s*=100/255,i.b*=100/255,i},y=function(e){var e=e.indexOf("#")>-1?e.substring(1):e;if(3==e.length){var i=e.split("");e=i[0]+i[0]+i[1]+i[1]+i[2]+i[2]}e=parseInt(e,16);var o={r:e>>16,g:(65280&e)>>8,b:255&e};return k(o)},x=function(e){var i={},o=e.h,r=255*e.s/100,t=255*e.b/100;if(0==r)i.r=i.g=i.b=t;else{var n=t,l=(255-r)*t/255,c=(n-l)*(o%60)/60;360==o&&(o=0),o<60?(i.r=n,i.b=l,i.g=l+c):o<120?(i.g=n,i.b=l,i.r=n-c):o<180?(i.g=n,i.r=l,i.b=l+c):o<240?(i.b=n,i.r=l,i.g=n-c):o<300?(i.b=n,i.g=l,i.r=l+c):o<360?(i.r=n,i.g=l,i.b=n-c):(i.r=0,i.g=0,i.b=0)}return{r:Math.round(i.r),g:Math.round(i.g),b:Math.round(i.b)}},C=function(e){var o=x(e),r=[o.r.toString(16),o.g.toString(16),o.b.toString(16)];return i.each(r,function(e,i){1==i.length&&(r[e]="0"+i)}),r.join("")},P=function(e){var i=/[0-9]{1,3}/g,o=e.match(i)||[];return{r:o[0],g:o[1],b:o[2]}},B=i(window),w=i(document),D=function(e){var r=this;r.index=++o.index,r.config=i.extend({},r.config,o.config,e),r.render()};D.prototype.config={color:"",size:null,alpha:!1,format:"hex",predefine:!1,colors:["#009688","#5FB878","#1E9FFF","#FF5722","#FFB800","#01AAED","#999","#c00","#ff8c00","#ffd700","#90ee90","#00ced1","#1e90ff","#c71585","rgb(0, 186, 189)","rgb(255, 120, 0)","rgb(250, 212, 0)","#393D49","rgba(0,0,0,.5)","rgba(255, 69, 0, 0.68)","rgba(144, 240, 144, 0.5)","rgba(31, 147, 255, 0.73)"]},D.prototype.render=function(){var e=this,o=e.config,r=i(['
                ',"",'3&&(o.alpha&&"rgb"==o.format||(e="#"+C(k(P(o.color))))),"background: "+e):e}()+'">','',"","","
                "].join("")),t=i(o.elem);o.size&&r.addClass("layui-colorpicker-"+o.size),t.addClass("layui-inline").html(e.elemColorBox=r),e.color=e.elemColorBox.find("."+f)[0].style.background,e.events()},D.prototype.renderPicker=function(){var e=this,o=e.config,r=e.elemColorBox[0],t=e.elemPicker=i(['
                ','
                ','
                ','
                ','
                ','
                ',"
                ",'
                ','
                ',"
                ","
                ",'
                ','
                ','
                ',"
                ","
                ",function(){if(o.predefine){var e=['
                '];return layui.each(o.colors,function(i,o){e.push(['
                ','
                ',"
                "].join(""))}),e.push("
                "),e.join("")}return""}(),'
                ','
                ','',"
                ",'
                ','','',"","
                "].join(""));e.elemColorBox.find("."+f)[0];i(c)[0]&&i(c).data("index")==e.index?e.removePicker(D.thisElemInd):(e.removePicker(D.thisElemInd),i("body").append(t)),D.thisElemInd=e.index,D.thisColor=r.style.background,e.position(),e.pickerEvents()},D.prototype.removePicker=function(e){var o=this;o.config;return i("#layui-colorpicker"+(e||o.index)).remove(),o},D.prototype.position=function(){var e=this,i=e.config,o=e.bindElem||e.elemColorBox[0],r=e.elemPicker[0],t=o.getBoundingClientRect(),n=r.offsetWidth,l=r.offsetHeight,c=function(e){return e=e?"scrollLeft":"scrollTop",document.body[e]|document.documentElement[e]},a=function(e){return document.documentElement[e?"clientWidth":"clientHeight"]},s=5,f=t.left,d=t.bottom;f-=(n-o.offsetWidth)/2,d+=s,f+n+s>a("width")?f=a("width")-n-s:fa()&&(d=t.top>l?t.top-l:a()-l,d-=2*s),i.position&&(r.style.position=i.position),r.style.left=f+("fixed"===i.position?0:c(1))+"px",r.style.top=d+("fixed"===i.position?0:c())+"px"},D.prototype.val=function(){var e=this,i=(e.config,e.elemColorBox.find("."+f)),o=e.elemPicker.find("."+b),r=i[0],t=r.style.backgroundColor;if(t){var n=k(P(t)),l=i.attr("lay-type");if(e.select(n.h,n.s,n.b),"torgb"===l&&o.find("input").val(t),"rgba"===l){var c=P(t);if(3==(t.match(/[0-9]{1,3}/g)||[]).length)o.find("input").val("rgba("+c.r+", "+c.g+", "+c.b+", 1)"),e.elemPicker.find("."+h).css("left",280);else{o.find("input").val(t);var a=280*t.slice(t.lastIndexOf(",")+1,t.length-1);e.elemPicker.find("."+h).css("left",a)}e.elemPicker.find("."+v)[0].style.background="linear-gradient(to right, rgba("+c.r+", "+c.g+", "+c.b+", 0), rgb("+c.r+", "+c.g+", "+c.b+"))"}}else e.select(0,100,100),o.find("input").val(""),e.elemPicker.find("."+v)[0].style.background="",e.elemPicker.find("."+h).css("left",280)},D.prototype.side=function(){var e=this,o=e.config,r=e.elemColorBox.find("."+f),t=r.attr("lay-type"),n=e.elemPicker.find("."+u),l=e.elemPicker.find("."+p),c=e.elemPicker.find("."+g),y=e.elemPicker.find("."+m),C=e.elemPicker.find("."+v),w=e.elemPicker.find("."+h),D=l[0].offsetTop/180*360,E=100-(y[0].offsetTop+3)/180*100,H=(y[0].offsetLeft+3)/260*100,W=Math.round(w[0].offsetLeft/280*100)/100,j=e.elemColorBox.find("."+d),F=e.elemPicker.find(".layui-colorpicker-pre").children("div"),L=function(i,n,l,c){e.select(i,n,l);var f=x({h:i,s:n,b:l});if(j.addClass(a).removeClass(s),r[0].style.background="rgb("+f.r+", "+f.g+", "+f.b+")","torgb"===t&&e.elemPicker.find("."+b).find("input").val("rgb("+f.r+", "+f.g+", "+f.b+")"),"rgba"===t){var d=0;d=280*c,w.css("left",d),e.elemPicker.find("."+b).find("input").val("rgba("+f.r+", "+f.g+", "+f.b+", "+c+")"),r[0].style.background="rgba("+f.r+", "+f.g+", "+f.b+", "+c+")",C[0].style.background="linear-gradient(to right, rgba("+f.r+", "+f.g+", "+f.b+", 0), rgb("+f.r+", "+f.g+", "+f.b+"))"}o.change&&o.change(e.elemPicker.find("."+b).find("input").val())},M=i(['
                t&&(r=t);var l=r/180*360;D=l,L(l,H,E,W),e.preventDefault()};Y(r),e.preventDefault()}),n.on("click",function(e){var o=e.clientY-i(this).offset().top;o<0&&(o=0),o>this.offsetHeight&&(o=this.offsetHeight);var r=o/180*360;D=r,L(r,H,E,W),e.preventDefault()}),y.on("mousedown",function(e){var i=this.offsetTop,o=this.offsetLeft,r=e.clientY,t=e.clientX,n=function(e){var n=i+(e.clientY-r),l=o+(e.clientX-t),a=c[0].offsetHeight-3,s=c[0].offsetWidth-3;n<-3&&(n=-3),n>a&&(n=a),l<-3&&(l=-3),l>s&&(l=s);var f=(l+3)/260*100,d=100-(n+3)/180*100;E=d,H=f,L(D,f,d,W),e.preventDefault()};layui.stope(e),Y(n),e.preventDefault()}),c.on("mousedown",function(e){var o=e.clientY-i(this).offset().top-3+B.scrollTop(),r=e.clientX-i(this).offset().left-3+B.scrollLeft();o<-3&&(o=-3),o>this.offsetHeight-3&&(o=this.offsetHeight-3),r<-3&&(r=-3),r>this.offsetWidth-3&&(r=this.offsetWidth-3);var t=(r+3)/260*100,n=100-(o+3)/180*100;E=n,H=t,L(D,t,n,W),e.preventDefault(),y.trigger(e,"mousedown")}),w.on("mousedown",function(e){var i=this.offsetLeft,o=e.clientX,r=function(e){var r=i+(e.clientX-o),t=C[0].offsetWidth;r<0&&(r=0),r>t&&(r=t);var n=Math.round(r/280*100)/100;W=n,L(D,H,E,n),e.preventDefault()};Y(r),e.preventDefault()}),C.on("click",function(e){var o=e.clientX-i(this).offset().left;o<0&&(o=0),o>this.offsetWidth&&(o=this.offsetWidth);var r=Math.round(o/280*100)/100;W=r,L(D,H,E,r),e.preventDefault()}),F.each(function(){i(this).on("click",function(){i(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e,o=this.style.backgroundColor,r=k(P(o)),t=o.slice(o.lastIndexOf(",")+1,o.length-1);D=r.h,H=r.s,E=r.b,3==(o.match(/[0-9]{1,3}/g)||[]).length&&(t=1),W=t,e=280*t,L(r.h,r.s,r.b,t)})})},D.prototype.select=function(e,i,o,r){var t=this,n=(t.config,C({h:e,s:100,b:100})),l=C({h:e,s:i,b:o}),c=e/360*180,a=180-o/100*180-3,s=i/100*260-3;t.elemPicker.find("."+p).css("top",c),t.elemPicker.find("."+g)[0].style.background="#"+n,t.elemPicker.find("."+m).css({top:a,left:s}),"change"!==r&&t.elemPicker.find("."+b).find("input").val("#"+l)},D.prototype.pickerEvents=function(){var e=this,o=e.config,r=e.elemColorBox.find("."+f),t=e.elemPicker.find("."+b+" input"),n={clear:function(i){r[0].style.background="",e.elemColorBox.find("."+d).removeClass(a).addClass(s),e.color="",o.done&&o.done(""),e.removePicker()},confirm:function(i,n){var l=t.val(),c=l,f={};if(l.indexOf(",")>-1){if(f=k(P(l)),e.select(f.h,f.s,f.b),r[0].style.background=c="#"+C(f),(l.match(/[0-9]{1,3}/g)||[]).length>3&&"rgba"===r.attr("lay-type")){var u=280*l.slice(l.lastIndexOf(",")+1,l.length-1);e.elemPicker.find("."+h).css("left",u),r[0].style.background=l,c=l}}else f=y(l),r[0].style.background=c="#"+C(f),e.elemColorBox.find("."+d).removeClass(s).addClass(a);return"change"===n?(e.select(f.h,f.s,f.b,n),void(o.change&&o.change(c))):(e.color=l,o.done&&o.done(l),void e.removePicker())}};e.elemPicker.on("click","*[colorpicker-events]",function(){var e=i(this),o=e.attr("colorpicker-events");n[o]&&n[o].call(this,e)}),t.on("keyup",function(e){var o=i(this);n.confirm.call(this,o,13===e.keyCode?null:"change")})},D.prototype.events=function(){var e=this,o=e.config,r=e.elemColorBox.find("."+f);e.elemColorBox.on("click",function(){e.renderPicker(),i(c)[0]&&(e.val(),e.side())}),o.elem[0]&&!e.elemColorBox[0].eventHandler&&(w.on("click",function(o){if(!i(o.target).hasClass(l)&&!i(o.target).parents("."+l)[0]&&!i(o.target).hasClass(c.replace(/\./g,""))&&!i(o.target).parents(c)[0]&&e.elemPicker){if(e.color){var t=k(P(e.color));e.select(t.h,t.s,t.b)}else e.elemColorBox.find("."+d).removeClass(a).addClass(s);r[0].style.background=e.color||"",e.removePicker()}}),B.on("resize",function(){return!(!e.elemPicker||!i(c)[0])&&void e.position()}),e.elemColorBox[0].eventHandler=!0)},o.render=function(e){var i=new D(e);return r.call(i)},e(t,o)});layui.define("layer",function(e){"use strict";var t=layui.$,i=layui.layer,a=layui.hint(),n=layui.device(),l="form",r=".layui-form",s="layui-this",o="layui-hide",c="layui-disabled",u=function(){this.config={verify:{required:[/[\S]+/,"必填项不能为空"],phone:[/^1\d{10}$/,"请输入正确的手机号"],email:[/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,"邮箱格式不正确"],url:[/(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/,"链接格式不正确"],number:function(e){if(!e||isNaN(e))return"只能填写数字"},date:[/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,"日期格式不正确"],identity:[/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,"请输入正确的身份证号"]}}};u.prototype.set=function(e){var i=this;return t.extend(!0,i.config,e),i},u.prototype.verify=function(e){var i=this;return t.extend(!0,i.config.verify,e),i},u.prototype.on=function(e,t){return layui.onevent.call(this,l,e,t)},u.prototype.val=function(e,i){var a=this,n=t(r+'[lay-filter="'+e+'"]');return n.each(function(e,a){var n=t(this);layui.each(i,function(e,t){var i,a=n.find('[name="'+e+'"]');a[0]&&(i=a[0].type,"checkbox"===i?a[0].checked=t:"radio"===i?a.each(function(){this.value==t&&(this.checked=!0)}):a.val(t))})}),f.render(null,e),a.getValue(e)},u.prototype.getValue=function(e,i){i=i||t(r+'[lay-filter="'+e+'"]').eq(0);var a={},n={},l=i.find("input,select,textarea");return layui.each(l,function(e,t){if(t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name){if(/^.*\[\]$/.test(t.name)){var i=t.name.match(/^(.*)\[\]$/g)[0];a[i]=0|a[i],t.name=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]++ +"]")}/^checkbox|radio$/.test(t.type)&&!t.checked||(n[t.name]=t.value)}}),n},u.prototype.render=function(e,i){var n=this,u=t(r+function(){return i?'[lay-filter="'+i+'"]':""}()),d={select:function(){var e,i="请选择",a="layui-form-select",n="layui-select-title",r="layui-select-none",d="",f=u.find("select"),v=function(i,l){t(i.target).parent().hasClass(n)&&!l||(t("."+a).removeClass(a+"ed "+a+"up"),e&&d&&e.val(d)),e=null},y=function(i,u,f){var y,p=t(this),m=i.find("."+n),k=m.find("input"),g=i.find("dl"),x=g.children("dd"),b=this.selectedIndex;if(!u){var C=function(){var e=i.offset().top+i.outerHeight()+5-h.scrollTop(),t=g.outerHeight();b=p[0].selectedIndex,i.addClass(a+"ed"),x.removeClass(o),y=null,x.eq(b).addClass(s).siblings().removeClass(s),e+t>h.height()&&e>=t&&i.addClass(a+"up"),T()},w=function(e){i.removeClass(a+"ed "+a+"up"),k.blur(),y=null,e||$(k.val(),function(e){var i=p[0].selectedIndex;e&&(d=t(p[0].options[i]).html(),0===i&&d===k.attr("placeholder")&&(d=""),k.val(d||""))})},T=function(){var e=g.children("dd."+s);if(e[0]){var t=e.position().top,i=g.height(),a=e.height();t>i&&g.scrollTop(t+g.scrollTop()-i+a-5),t<0&&g.scrollTop(t+g.scrollTop()-5)}};m.on("click",function(e){i.hasClass(a+"ed")?w():(v(e,!0),C()),g.find("."+r).remove()}),m.find(".layui-edge").on("click",function(){k.focus()}),k.on("keyup",function(e){var t=e.keyCode;9===t&&C()}).on("keydown",function(e){var t=e.keyCode;9===t&&w();var i=function(t,a){var n,l;e.preventDefault();var r=function(){var e=g.children("dd."+s);if(g.children("dd."+o)[0]&&"next"===t){var i=g.children("dd:not(."+o+",."+c+")"),n=i.eq(0).index();if(n>=0&&n无匹配项

                '):g.find("."+r).remove()},"keyup"),""===t&&g.find("."+r).remove(),void T())};f&&k.on("keyup",q).on("blur",function(i){var a=p[0].selectedIndex;e=k,d=t(p[0].options[a]).html(),0===a&&d===k.attr("placeholder")&&(d=""),setTimeout(function(){$(k.val(),function(e){d||k.val("")},"blur")},200)}),x.on("click",function(){var e=t(this),a=e.attr("lay-value"),n=p.attr("lay-filter");return!e.hasClass(c)&&(e.hasClass("layui-select-tips")?k.val(""):(k.val(e.text()),e.addClass(s)),e.siblings().removeClass(s),p.val(a).removeClass("layui-form-danger"),layui.event.call(this,l,"select("+n+")",{elem:p[0],value:a,othis:i}),w(!0),!1)}),i.find("dl>dt").on("click",function(e){return!1}),t(document).off("click",v).on("click",v)}};f.each(function(e,l){var r=t(this),o=r.next("."+a),u=this.disabled,d=l.value,f=t(l.options[l.selectedIndex]),v=l.options[0];if("string"==typeof r.attr("lay-ignore"))return r.show();var h="string"==typeof r.attr("lay-search"),p=v?v.value?i:v.innerHTML||i:i,m=t(['
                ','
                ','','
                ','
                ',function(e){var t=[];return layui.each(e,function(e,a){0!==e||a.value?"optgroup"===a.tagName.toLowerCase()?t.push("
                "+a.label+"
                "):t.push('
                '+a.innerHTML+"
                "):t.push('
                '+(a.innerHTML||i)+"
                ")}),0===t.length&&t.push('
                没有选项
                '),t.join("")}(r.find("*"))+"
                ","
                "].join(""));o[0]&&o.remove(),r.after(m),y.call(this,m,u,h)})},checkbox:function(){var e={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],_switch:["layui-form-switch","layui-form-onswitch","switch"]},i=u.find("input[type=checkbox]"),a=function(e,i){var a=t(this);e.on("click",function(){var t=a.attr("lay-filter"),n=(a.attr("lay-text")||"").split("|");a[0].disabled||(a[0].checked?(a[0].checked=!1,e.removeClass(i[1]).find("em").text(n[1])):(a[0].checked=!0,e.addClass(i[1]).find("em").text(n[0])),layui.event.call(a[0],l,i[2]+"("+t+")",{elem:a[0],value:a[0].value,othis:e}))})};i.each(function(i,n){var l=t(this),r=l.attr("lay-skin"),s=(l.attr("lay-text")||"").split("|"),o=this.disabled;"switch"===r&&(r="_"+r);var u=e[r]||e.checkbox;if("string"==typeof l.attr("lay-ignore"))return l.show();var d=l.next("."+u[0]),f=t(['
                ",function(){var e=n.title.replace(/\s/g,""),t={checkbox:[e?""+n.title+"":"",''].join(""),_switch:""+((n.checked?s[0]:s[1])||"")+""};return t[r]||t.checkbox}(),"
                "].join(""));d[0]&&d.remove(),l.after(f),a.call(this,f,u)})},radio:function(){var e="layui-form-radio",i=["",""],a=u.find("input[type=radio]"),n=function(a){var n=t(this),s="layui-anim-scaleSpring";a.on("click",function(){var o=n[0].name,c=n.parents(r),u=n.attr("lay-filter"),d=c.find("input[name="+o.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(d,function(){var a=t(this).next("."+e);this.checked=!1,a.removeClass(e+"ed"),a.find(".layui-icon").removeClass(s).html(i[1])}),n[0].checked=!0,a.addClass(e+"ed"),a.find(".layui-icon").addClass(s).html(i[0]),layui.event.call(n[0],l,"radio("+u+")",{elem:n[0],value:n[0].value,othis:a}))})};a.each(function(a,l){var r=t(this),s=r.next("."+e),o=this.disabled;if("string"==typeof r.attr("lay-ignore"))return r.show();s[0]&&s.remove();var u=t(['
                ',''+i[l.checked?0:1]+"","
                "+function(){var e=l.title||"";return"string"==typeof r.next().attr("lay-radio")&&(e=r.next().html(),r.next().remove()),e}()+"
                ","
                "].join(""));r.after(u),n.call(this,u)})}};return e?d[e]?d[e]():a.error("不支持的"+e+"表单渲染"):layui.each(d,function(e,t){t()}),n};var d=function(){var e=null,a=f.config.verify,s="layui-form-danger",o={},c=t(this),u=c.parents(r),d=u.find("*[lay-verify]"),v=c.parents("form")[0],h=c.attr("lay-filter");return layui.each(d,function(l,r){var o=t(this),c=o.attr("lay-verify").split("|"),u=o.attr("lay-verType"),d=o.val();if(o.removeClass(s),layui.each(c,function(t,l){var c,f="",v="function"==typeof a[l];if(a[l]){var c=v?f=a[l](d,r):!a[l][0].test(d);if(f=f||a[l][1],"required"===l&&(f=o.attr("lay-reqText")||f),c)return"tips"===u?i.tips(f,function(){return"string"==typeof o.attr("lay-ignore")||"select"!==r.tagName.toLowerCase()&&!/^checkbox|radio$/.test(r.type)?o:o.next()}(),{tips:1}):"alert"===u?i.alert(f,{title:"提示",shadeClose:!0}):/\bstring|number\b/.test(typeof f)&&i.msg(f,{icon:5,shift:6}),n.android||n.ios||setTimeout(function(){r.focus()},7),o.addClass(s),e=!0}}),e)return e}),!e&&(o=f.getValue(null,u),layui.event.call(this,l,"submit("+h+")",{elem:this,form:v,field:o}))},f=new u,v=t(document),h=t(window);f.render(),v.on("reset",r,function(){var e=t(this).attr("lay-filter");setTimeout(function(){f.render(null,e)},50)}),v.on("submit",r,d).on("click","*[lay-submit]",d),e(l,f)});layui.define("form",function(e){"use strict";var i=layui.$,a=layui.form,n=layui.layer,t="tree",r={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var a=this;return a.config=i.extend({},a.config,e),a},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var e=this,i=e.config,a=i.id||e.index;return l.that[a]=e,l.config[a]=i,{config:i,reload:function(i){e.reload.call(e,i)},getChecked:function(){return e.getChecked.call(e)},setChecked:function(i){return e.setChecked.call(e,i)}}},c="layui-hide",d="layui-disabled",s="layui-tree-set",o="layui-tree-iconClick",h="layui-icon-addition",u="layui-icon-subtraction",p="layui-tree-entry",f="layui-tree-main",y="layui-tree-txt",v="layui-tree-pack",C="layui-tree-spread",k="layui-tree-setLineShort",m="layui-tree-showLine",x="layui-tree-lineExtend",b=function(e){var a=this;a.index=++r.index,a.config=i.extend({},a.config,r.config,e),a.render()};b.prototype.config={data:[],showCheckbox:!1,showLine:!0,accordion:!1,onlyIconControl:!1,isJump:!1,edit:!1,text:{defaultNodeName:"未命名",none:"无数据"}},b.prototype.reload=function(e){var a=this;layui.each(e,function(e,i){i.constructor===Array&&delete a.config[e]}),a.config=i.extend(!0,{},a.config,e),a.render()},b.prototype.render=function(){var e=this,a=e.config;e.checkids=[];var n=i('
                ');e.tree(n);var t=a.elem=i(a.elem);if(t[0]){if(e.key=a.id||e.index,e.elem=n,e.elemNone=i('
                '+a.text.none+"
                "),t.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);a.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=i(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(k),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(k)}),e.events()}},b.prototype.renderForm=function(e){a.render(e,"LAY-tree-"+this.index)},b.prototype.tree=function(e,a){var n=this,t=n.config,r=a||t.data;layui.each(r,function(a,r){var l=r.children&&r.children.length>0,o=i('
                "),h=i(['
                ','
                ','
                ',function(){return t.showLine?l?'':'':''}(),function(){return t.showCheckbox?'':""}(),function(){return t.isJump&&r.href?''+(r.title||r.label||t.text.defaultNodeName)+"":''+(r.title||r.label||t.text.defaultNodeName)+""}(),"
                ",function(){if(!t.edit)return"";var e={add:'',update:'',del:''},i=['
                '];return t.edit===!0&&(t.edit=["update","del"]),"object"==typeof t.edit?(layui.each(t.edit,function(a,n){i.push(e[n]||"")}),i.join("")+"
                "):void 0}(),"
                "].join(""));l&&(h.append(o),n.tree(o,r.children)),e.append(h),h.prev("."+s)[0]&&h.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),l||h.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),n.spread(h,r),t.showCheckbox&&(r.checked&&n.checkids.push(r.id),n.checkClick(h,r)),t.edit&&n.operate(h,r)})},b.prototype.spread=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f),c=r.find("."+o),k=r.find("."+y),m=t.onlyIconControl?c:l,x="";m.on("click",function(i){var a=e.children("."+v),n=m.children(".layui-icon")[0]?m.children(".layui-icon"):m.find(".layui-tree-icon").children(".layui-icon");if(a[0]){if(e.hasClass(C))e.removeClass(C),a.slideUp(200),n.removeClass(u).addClass(h);else if(e.addClass(C),a.slideDown(200),n.addClass(u).removeClass(h),t.accordion){var r=e.siblings("."+s);r.removeClass(C),r.children("."+v).slideUp(200),r.find(".layui-tree-icon").children(".layui-icon").removeClass(u).addClass(h)}}else x="normal"}),k.on("click",function(){var n=i(this);n.hasClass(d)||(x=e.hasClass(C)?t.onlyIconControl?"open":"close":t.onlyIconControl?"close":"open",t.click&&t.click({elem:e,state:x,data:a}))})},b.prototype.setCheckbox=function(e,i,a){var n=this,t=(n.config,a.prop("checked"));if(!a.prop("disabled")){if("object"==typeof i.children||e.find("."+v)[0]){var r=e.find("."+v).find('input[same="layuiTreeCheck"]');r.each(function(){this.disabled||(this.checked=t)})}var l=function(e){if(e.parents("."+s)[0]){var i,a=e.parent("."+v),n=a.parent(),r=a.prev().find('input[same="layuiTreeCheck"]');t?r.prop("checked",t):(a.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||r.prop("checked",!1)),l(n)}};l(e),n.renderForm("checkbox")}},b.prototype.checkClick=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f);l.on("click",'input[same="layuiTreeCheck"]+',function(r){layui.stope(r);var l=i(this).prev(),c=l.prop("checked");l.prop("disabled")||(n.setCheckbox(e,a,l),t.oncheck&&t.oncheck({elem:e,checked:c,data:a}))})},b.prototype.operate=function(e,a){var t=this,r=t.config,l=e.children("."+p),d=l.children("."+f);l.children(".layui-tree-btnGroup").on("click",".layui-icon",function(l){layui.stope(l);var f=i(this).data("type"),b=e.children("."+v),g={data:a,type:f,elem:e};if("add"==f){b[0]||(r.showLine?(d.find("."+o).addClass("layui-tree-icon"),d.find("."+o).children(".layui-icon").addClass(h).removeClass("layui-icon-file")):d.find(".layui-tree-iconArrow").removeClass(c),e.append('
                '));var w=r.operate&&r.operate(g),N={};if(N.title=r.text.defaultNodeName,N.id=w,t.tree(e.children("."+v),[N]),r.showLine)if(b[0])b.hasClass(x)||b.addClass(x),e.find("."+v).each(function(){i(this).children("."+s).last().addClass(k)}),b.children("."+s).last().prev().hasClass(k)?b.children("."+s).last().prev().removeClass(k):b.children("."+s).last().removeClass(k),!e.parent("."+v)[0]&&e.next()[0]&&b.children("."+s).last().removeClass(k);else{var T=e.siblings("."+s),L=1,A=e.parent("."+v);layui.each(T,function(e,a){i(a).children("."+v)[0]||(L=0)}),1==L?(T.children("."+v).addClass(m),T.children("."+v).children("."+s).removeClass(k),e.children("."+v).addClass(m),A.removeClass(x),A.children("."+s).last().children("."+v).children("."+s).last().addClass(k)):e.children("."+v).children("."+s).addClass(k)}if(!r.showCheckbox)return;if(d.find('input[same="layuiTreeCheck"]')[0].checked){var I=e.children("."+v).children("."+s).last();I.find('input[same="layuiTreeCheck"]')[0].checked=!0}t.renderForm("checkbox")}else if("update"==f){var F=d.children("."+y).html();d.children("."+y).html(""),d.append(''),d.children(".layui-tree-editInput").val(F).focus();var j=function(e){var i=e.val().trim();i=i?i:r.text.defaultNodeName,e.remove(),d.children("."+y).html(i),g.data.title=i,r.operate&&r.operate(g)};d.children(".layui-tree-editInput").blur(function(){j(i(this))}),d.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),j(i(this)))})}else n.confirm('确认删除该节点 "'+(a.title||"")+'" 吗?',function(a){if(r.operate&&r.operate(g),g.status="remove",n.close(a),!e.prev("."+s)[0]&&!e.next("."+s)[0]&&!e.parent("."+v)[0])return e.remove(),void t.elem.append(t.elemNone);if(e.siblings("."+s).children("."+p)[0]){if(r.showCheckbox){var l=function(e){if(e.parents("."+s)[0]){var a=e.siblings("."+s).children("."+p),n=e.parent("."+v).prev(),r=n.find('input[same="layuiTreeCheck"]')[0],c=1,d=0;0==r.checked&&(a.each(function(e,a){var n=i(a).find('input[same="layuiTreeCheck"]')[0];0!=n.checked||n.disabled||(c=0),n.disabled||(d=1)}),1==c&&1==d&&(r.checked=!0,t.renderForm("checkbox"),l(n.parent("."+s))))}};l(e)}if(r.showLine){var d=e.siblings("."+s),h=1,f=e.parent("."+v);layui.each(d,function(e,a){i(a).children("."+v)[0]||(h=0)}),1==h?(b[0]||(f.removeClass(x),d.children("."+v).addClass(m),d.children("."+v).children("."+s).removeClass(k)),e.next()[0]?f.children("."+s).last().children("."+v).children("."+s).last().addClass(k):e.prev().children("."+v).children("."+s).last().addClass(k),e.next()[0]||e.parents("."+s)[1]||e.parents("."+s).eq(0).next()[0]||e.prev("."+s).addClass(k)):!e.next()[0]&&e.hasClass(k)&&e.prev().addClass(k)}}else{var y=e.parent("."+v).prev();if(r.showLine){y.find("."+o).removeClass("layui-tree-icon"),y.find("."+o).children(".layui-icon").removeClass(u).addClass("layui-icon-file");var w=y.parents("."+v).eq(0);w.addClass(x),w.children("."+s).each(function(){i(this).children("."+v).children("."+s).last().addClass(k)})}else y.find(".layui-tree-iconArrow").addClass(c);e.parents("."+s).eq(0).removeClass(C),e.parent("."+v).remove()}e.remove()})})},b.prototype.events=function(){var e=this,a=e.config;e.elem.find(".layui-tree-checkedFirst");e.setChecked(e.checkids),e.elem.find(".layui-tree-search").on("keyup",function(){var n=i(this),t=n.val(),r=n.nextAll(),l=[];r.find("."+y).each(function(){var e=i(this).parents("."+p);if(i(this).html().indexOf(t)!=-1){l.push(i(this).parent());var a=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+v)[0]&&a(e.parent("."+v).parent("."+s))};a(e.parent("."+s))}}),r.find("."+p).each(function(){var e=i(this).parent("."+s);e.hasClass("layui-tree-searchShow")||e.addClass(c)}),0==r.find(".layui-tree-searchShow").length&&e.elem.append(e.elemNone),a.onsearch&&a.onsearch({elem:l})}),e.elem.find(".layui-tree-search").on("keydown",function(){i(this).nextAll().find("."+p).each(function(){var e=i(this).parent("."+s);e.removeClass("layui-tree-searchShow "+c)}),i(".layui-tree-emptyText")[0]&&i(".layui-tree-emptyText").remove()})},b.prototype.getChecked=function(){var e=this,a=e.config,n=[],t=[];e.elem.find(".layui-form-checked").each(function(){n.push(i(this).prev()[0].value)});var r=function(e,a){layui.each(e,function(e,t){layui.each(n,function(e,n){if(t.id==n){var l=i.extend({},t);return delete l.children,a.push(l),t.children&&(l.children=[],r(t.children,l.children)),!0}})})};return r(i.extend({},a.data),t),t},b.prototype.setChecked=function(e){var a=this;a.config;a.elem.find("."+s).each(function(a,n){var t=i(this).data("id"),r=i(n).children("."+p).find('input[same="layuiTreeCheck"]'),l=r.next();if("number"==typeof e){if(t==e)return r[0].checked||l.click(),!1}else"object"==typeof e&&layui.each(e,function(e,i){if(i==t&&!r[0].checked)return l.click(),!0})})},l.that={},l.config={},r.reload=function(e,i){var a=l.that[e];return a.reload(i),l.call(a)},r.getChecked=function(e){var i=l.that[e];return i.getChecked()},r.setChecked=function(e,i){var a=l.that[e];return a.setChecked(i)},r.render=function(e){var i=new b(e);return l.call(i)},e(t,r)});layui.define(["laytpl","form"],function(e){"use strict";var a=layui.$,t=layui.laytpl,i=layui.form,n="transfer",l={config:{},index:layui[n]?layui[n].index+1e4:0,set:function(e){var t=this;return t.config=a.extend({},t.config,e),t},on:function(e,a){return layui.onevent.call(this,n,e,a)}},r=function(){var e=this,a=e.config,t=a.id||e.index;return r.that[t]=e,r.config[t]=a,{config:a,reload:function(a){e.reload.call(e,a)},getData:function(){return e.getData.call(e)}}},c="layui-hide",o="layui-btn-disabled",d="layui-none",s="layui-transfer-box",u="layui-transfer-header",h="layui-transfer-search",f="layui-transfer-active",y="layui-transfer-data",p=function(e){return e=e||{},['
                ','
                ','","
                ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
                  ',"
                  "].join("")},v=['
                  ',p({index:0,checkAllName:"layTransferLeftCheckAll"}),'
                  ','",'","
                  ",p({index:1,checkAllName:"layTransferRightCheckAll"}),"
                  "].join(""),x=function(e){var t=this;t.index=++l.index,t.config=a.extend({},t.config,l.config,e),t.render()};x.prototype.config={title:["列表一","列表二"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"无数据",searchNone:"无匹配数据"}},x.prototype.reload=function(e){var t=this;t.config=a.extend({},t.config,e),t.render()},x.prototype.render=function(){var e=this,i=e.config,n=e.elem=a(t(v).render({data:i,index:e.index})),l=i.elem=a(i.elem);l[0]&&(i.data=i.data||[],i.value=i.value||[],e.key=i.id||e.index,l.html(e.elem),e.layBox=e.elem.find("."+s),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+h),e.layData=n.find("."+y),e.layBtn=n.find("."+f+" .layui-btn"),e.layBox.css({width:i.width,height:i.height}),e.layData.css({height:function(){return i.height-e.layHeader.outerHeight()-e.laySearch.outerHeight()-2}()}),e.renderData(),e.events())},x.prototype.renderData=function(){var e=this,a=(e.config,[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}]);e.parseData(function(e){var t=e.selected?1:0,i=["
                • ",'',"
                • "].join("");a[t].views.push(i),delete e.selected}),e.layData.eq(0).html(a[0].views.join("")),e.layData.eq(1).html(a[1].views.join("")),e.renderCheckBtn()},x.prototype.renderForm=function(e){i.render(e,"LAY-transfer-"+this.index)},x.prototype.renderCheckBtn=function(e){var t=this,i=t.config;e=e||{},t.layBox.each(function(n){var l=a(this),r=l.find("."+y),d=l.find("."+u).find('input[type="checkbox"]'),s=r.find('input[type="checkbox"]'),h=0,f=!1;if(s.each(function(){var e=a(this).data("hide");(this.checked||this.disabled||e)&&h++,this.checked&&!e&&(f=!0)}),d.prop("checked",f&&h===s.length),t.layBtn.eq(n)[f?"removeClass":"addClass"](o),!e.stopNone){var p=r.children("li:not(."+c+")").length;t.noneView(r,p?"":i.text.none)}}),t.renderForm("checkbox")},x.prototype.noneView=function(e,t){var i=a('

                  '+(t||"")+"

                  ");e.find("."+d)[0]&&e.find("."+d).remove(),t.replace(/\s/g,"")&&e.append(i)},x.prototype.setValue=function(){var e=this,t=e.config,i=[];return e.layBox.eq(1).find("."+y+' input[type="checkbox"]').each(function(){var e=a(this).data("hide");e||i.push(this.value)}),t.value=i,e},x.prototype.parseData=function(e){var t=this,i=t.config,n=[];return layui.each(i.data,function(t,l){l=("function"==typeof i.parseData?i.parseData(l):l)||l,n.push(l=a.extend({},l)),layui.each(i.value,function(e,a){a==l.value&&(l.selected=!0)}),e&&e(l)}),i.data=n,t},x.prototype.getData=function(e){var a=this,t=a.config,i=[];return a.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},x.prototype.events=function(){var e=this,t=e.config;e.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var t=a(this).prev(),i=t[0].checked,n=t.parents("."+s).eq(0).find("."+y);t[0].disabled||("all"===t.attr("lay-type")&&n.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=i)}),e.renderCheckBtn({stopNone:!0}))}),e.layBtn.on("click",function(){var i=a(this),n=i.data("index"),l=e.layBox.eq(n),r=[];if(!i.hasClass(o)){e.layBox.eq(n).each(function(t){var i=a(this),n=i.find("."+y);n.children("li").each(function(){var t=a(this),i=t.find('input[type="checkbox"]'),n=i.data("hide");i[0].checked&&!n&&(i[0].checked=!1,l.siblings("."+s).find("."+y).append(t.clone()),t.remove(),r.push(i[0].value)),e.setValue()})}),e.renderCheckBtn();var c=l.siblings("."+s).find("."+h+" input");""===c.val()||c.trigger("keyup"),t.onchange&&t.onchange(e.getData(r),n)}}),e.laySearch.find("input").on("keyup",function(){var i=this.value,n=a(this).parents("."+h).eq(0).siblings("."+y),l=n.children("li");l.each(function(){var e=a(this),t=e.find('input[type="checkbox"]'),n=t[0].title.indexOf(i)!==-1;e[n?"removeClass":"addClass"](c),t.data("hide",!n)}),e.renderCheckBtn();var r=l.length===n.children("li."+c).length;e.noneView(n,r?t.text.searchNone:"")})},r.that={},r.config={},l.reload=function(e,a){var t=r.that[e];return t.reload(a),r.call(t)},l.getData=function(e){var a=r.that[e];return a.getData()},l.render=function(e){var a=new x(e);return r.call(a)},e(n,l)});layui.define(["laytpl","laypage","layer","form","util"],function(e){"use strict";var t=layui.$,i=layui.laytpl,a=layui.laypage,l=layui.layer,n=layui.form,o=(layui.util,layui.hint()),r=layui.device(),d={config:{checkName:"LAY_CHECKED",indexName:"LAY_TABLE_INDEX"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,y,e,t)}},c=function(){var e=this,t=e.config,i=t.id||t.index;return i&&(c.that[i]=e,c.config[i]=t),{config:t,reload:function(t,i){e.reload.call(e,t,i)},setColsWidth:function(){e.setColsWidth.call(e)},resize:function(){e.resize.call(e)}}},s=function(e){var t=c.config[e];return t||o.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},u=function(e,a,l,n){var o=e.templet?function(){return"function"==typeof e.templet?e.templet(l):i(t(e.templet).html()||String(a)).render(l)}():a;return n?t("
                  "+o+"
                  ").text():o},y="table",h=".layui-table",f="layui-hide",p="layui-none",v="layui-table-view",m=".layui-table-tool",g=".layui-table-box",b=".layui-table-init",x=".layui-table-header",k=".layui-table-body",C=".layui-table-main",w=".layui-table-fixed",T=".layui-table-fixed-l",N=".layui-table-fixed-r",A=".layui-table-total",L=".layui-table-page",S=".layui-table-sort",R="layui-table-edit",W="layui-table-hover",_=function(e){var t='{{#if(item2.colspan){}} colspan="{{item2.colspan}}"{{#} if(item2.rowspan){}} rowspan="{{item2.rowspan}}"{{#}}}';return e=e||{},['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',function(){return e.fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':""}(),"{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
                  ','
                  ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
                  ","
                  "].join("")},z=['',"","
                  "].join(""),E=['
                  ',"{{# if(d.data.toolbar){ }}",'
                  ','
                  ','
                  ',"
                  ","{{# } }}",'
                  ',"{{# if(d.data.loading){ }}",'
                  ','',"
                  ","{{# } }}","{{# var left, right; }}",'
                  ',_(),"
                  ",'
                  ',z,"
                  ","{{# if(left){ }}",'
                  ','
                  ',_({fixed:!0}),"
                  ",'
                  ',z,"
                  ","
                  ","{{# }; }}","{{# if(right){ }}",'
                  ','
                  ',_({fixed:"right"}),'
                  ',"
                  ",'
                  ',z,"
                  ","
                  ","{{# }; }}","
                  ","{{# if(d.data.totalRow){ }}",'
                  ','','',"
                  ","
                  ","{{# } }}","{{# if(d.data.page){ }}",'
                  ','
                  ',"
                  ","{{# } }}","","
                  "].join(""),j=t(window),F=t(document),I=function(e){var i=this;i.index=++d.index,i.config=t.extend({},i.config,d.config,e),i.render()};I.prototype.config={limit:10,loading:!0,cellMinWidth:60,defaultToolbar:["filter","exports","print"],autoSort:!0,text:{none:"无数据"}},I.prototype.render=function(){var e=this,a=e.config;if(a.elem=t(a.elem),a.where=a.where||{},a.id=a.id||a.elem.attr("id")||e.index,a.request=t.extend({pageName:"page",limitName:"limit"},a.request),a.response=t.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,e.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return e;a.height&&/^full-\d+$/.test(a.height)&&(e.fullHeightGap=a.height.split("-")[1],a.height=j.height()-e.fullHeightGap),e.setInit();var l=a.elem,n=l.next("."+v),o=e.elem=t(i(E).render({VIEW_CLASS:v,data:a,index:e.index}));if(a.index=e.index,e.key=a.id||a.index,n[0]&&n.remove(),l.after(o),e.layTool=o.find(m),e.layBox=o.find(g),e.layHeader=o.find(x),e.layMain=o.find(C),e.layBody=o.find(k),e.layFixed=o.find(w),e.layFixLeft=o.find(T),e.layFixRight=o.find(N),e.layTotal=o.find(A),e.layPage=o.find(L),e.renderToolbar(),e.fullSize(),a.cols.length>1){var r=e.layFixed.find(x).find("th");r.height(e.layHeader.height()-1-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom")))}e.pullData(e.page),e.events()},I.prototype.initOpts=function(e){var t=this,i=(t.config,{checkbox:48,radio:48,space:15,numbers:40});e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||i[e.type])},I.prototype.setInit=function(e){var t=this,i=t.config;return i.clientWidth=i.width||function(){var e=function(t){var a,l;t=t||i.elem.parent(),a=t.width();try{l="none"===t.css("display")}catch(n){}return!t[0]||a&&!l?a:e(t.parent())};return e()}(),"width"===e?i.clientWidth:void layui.each(i.cols,function(e,a){layui.each(a,function(l,n){if(!n)return void a.splice(l,1);if(n.key=e+"-"+l,n.hide=n.hide||!1,n.colGroup||n.colspan>1){var o=0;layui.each(i.cols[e+1],function(t,i){i.HAS_PARENT||o>1&&o==n.colspan||(i.HAS_PARENT=!0,i.parentKey=e+"-"+l,o+=parseInt(i.colspan>1?i.colspan:1))}),n.colGroup=!0}t.initOpts(n)})})},I.prototype.renderToolbar=function(){var e=this,a=e.config,l=['
                  ','
                  ','
                  '].join(""),n=e.layTool.find(".layui-table-tool-temp");if("default"===a.toolbar)n.html(l);else if("string"==typeof a.toolbar){var o=t(a.toolbar).html()||"";o&&n.html(i(o).render(a))}var r={filter:{title:"筛选列",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"导出",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"打印",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}},d=[];"object"==typeof a.defaultToolbar&&layui.each(a.defaultToolbar,function(e,t){var i="string"==typeof t?r[t]:t;i&&d.push('
                  ')}),e.layTool.find(".layui-table-tool-self").html(d.join(""))},I.prototype.setParentCol=function(e,t){var i=this,a=i.config,l=i.layHeader.find('th[data-key="'+a.index+"-"+t+'"]'),n=parseInt(l.attr("colspan"))||0;if(l[0]){var o=t.split("-"),r=a.cols[o[0]][o[1]];e?n--:n++,l.attr("colspan",n),l[n<1?"addClass":"removeClass"](f),r.colspan=n,r.hide=n<1;var d=l.data("parentkey");d&&i.setParentCol(e,d)}},I.prototype.setColsPatch=function(){var e=this,t=e.config;layui.each(t.cols,function(t,i){layui.each(i,function(t,i){i.hide&&e.setParentCol(i.hide,i.parentKey)})})},I.prototype.setColsWidth=function(){var e=this,t=e.config,i=0,a=0,l=0,n=0,o=e.setInit("width");e.eachCols(function(e,t){t.hide||i++}),o=o-function(){return"line"===t.skin||"nob"===t.skin?2:i+1}()-e.getScrollWidth(e.layMain[0])-1;var r=function(e){layui.each(t.cols,function(i,r){layui.each(r,function(i,d){var c=0,s=d.minWidth||t.cellMinWidth;return d?void(d.colGroup||d.hide||(e?l&&ln&&a&&(l=(o-n)/a)};r(),r(!0),e.autoColNums=a,e.eachCols(function(i,a){var n=a.minWidth||t.cellMinWidth;a.colGroup||a.hide||(0===a.width?e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(l>=n?l:n)+"px"}):/\d+%$/.test(a.width)&&e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(parseFloat(a.width)/100*o)+"px"}))});var d=e.layMain.width()-e.getScrollWidth(e.layMain[0])-e.layMain.children("table").outerWidth();if(e.autoColNums&&d>=-i&&d<=i){var c=function(t){var i;return t=t||e.layHeader.eq(0).find("thead th:last-child"),i=t.data("field"),!i&&t.prev()[0]?c(t.prev()):t},s=c(),u=s.data("key");e.getCssRule(u,function(t){var i=t.style.width||s.outerWidth();t.style.width=parseFloat(i)+d+"px",e.layMain.height()-e.layMain.prop("clientHeight")>0&&(t.style.width=parseFloat(t.style.width)-1+"px")})}e.loading(!0)},I.prototype.resize=function(){var e=this;e.fullSize(),e.setColsWidth(),e.scrollPatch()},I.prototype.reload=function(e,i){var a=this;e=e||{},delete a.haveInit,e.data&&e.data.constructor===Array&&delete a.config.data,a.config=t.extend(i,{},a.config,e),a.render()},I.prototype.errorView=function(e){var i=this,a=i.layMain.find("."+p),l=t('
                  '+(e||"Error")+"
                  ");a[0]&&(i.layNone.remove(),a.remove()),i.layFixed.addClass(f),i.layMain.find("tbody").html(""),i.layMain.append(i.layNone=l),d.cache[i.key]=[]},I.prototype.page=1,I.prototype.pullData=function(e){var i=this,a=i.config,l=a.request,n=a.response,o=function(){"object"==typeof a.initSort&&i.sort(a.initSort.field,a.initSort.type)};if(i.startTime=(new Date).getTime(),a.url){var r={};r[l.pageName]=e,r[l.limitName]=a.limit;var d=t.extend(r,a.where);a.contentType&&0==a.contentType.indexOf("application/json")&&(d=JSON.stringify(d)),i.loading(),t.ajax({type:a.method||"get",url:a.url,contentType:a.contentType,data:d,dataType:"json",headers:a.headers||{},success:function(t){"function"==typeof a.parseData&&(t=a.parseData(t)||t),t[n.statusName]!=n.statusCode?(i.renderForm(),i.errorView(t[n.msgName]||'返回的数据不符合规范,正确的成功状态码应为:"'+n.statusName+'": '+n.statusCode)):(i.renderData(t,e,t[n.countName]),o(),a.time=(new Date).getTime()-i.startTime+" ms"),i.setColsWidth(),"function"==typeof a.done&&a.done(t,e,t[n.countName])},error:function(e,t){i.errorView("数据接口请求异常:"+t),i.renderForm(),i.setColsWidth(),"function"==typeof a.error&&a.error(e,t)}})}else if(a.data&&a.data.constructor===Array){var c={},s=e*a.limit-a.limit;c[n.dataName]=a.data.concat().splice(s,a.limit),c[n.countName]=a.data.length,"object"==typeof a.totalRow&&(c[n.totalRowName]=t.extend({},a.totalRow)),i.renderData(c,e,c[n.countName]),o(),i.setColsWidth(),"function"==typeof a.done&&a.done(c,e,c[n.countName])}},I.prototype.eachCols=function(e){var t=this;return d.eachCols(null,e,t.config.cols),t},I.prototype.renderData=function(e,n,o,r){var c=this,s=c.config,y=e[s.response.dataName]||[],h=e[s.response.totalRowName],v=[],m=[],g=[],b=function(){var e;return!r&&c.sortKey?c.sort(c.sortKey.field,c.sortKey.sort,!0):(layui.each(y,function(a,l){var o=[],y=[],h=[],p=a+s.limit*(n-1)+1;0!==l.length&&(r||(l[d.config.indexName]=a),c.eachCols(function(n,r){var c=r.field||n,v=s.index+"-"+r.key,m=l[c];if(void 0!==m&&null!==m||(m=""),!r.colGroup){var g=['','
                  '+function(){var n=t.extend(!0,{LAY_INDEX:p},l),o=d.config.checkName;switch(r.type){case"checkbox":return'";case"radio":return n[o]&&(e=a),'';case"numbers":return p}return r.toolbar?i(t(r.toolbar).html()||"").render(n):u(r,m,n)}(),"
                  "].join("");o.push(g),r.fixed&&"right"!==r.fixed&&y.push(g),"right"===r.fixed&&h.push(g)}}),v.push(''+o.join("")+""),m.push(''+y.join("")+""),g.push(''+h.join("")+""))}),c.layBody.scrollTop(0),c.layMain.find("."+p).remove(),c.layMain.find("tbody").html(v.join("")),c.layFixLeft.find("tbody").html(m.join("")),c.layFixRight.find("tbody").html(g.join("")),c.renderForm(),"number"==typeof e&&c.setThisRowChecked(e),c.syncCheckAll(),c.haveInit?c.scrollPatch():setTimeout(function(){c.scrollPatch()},50),c.haveInit=!0,l.close(c.tipsIndex),s.HAS_SET_COLS_PATCH||c.setColsPatch(),void(s.HAS_SET_COLS_PATCH=!0))};return d.cache[c.key]=y,c.layPage[0==o||0===y.length&&1==n?"addClass":"removeClass"](f),0===y.length?(c.renderForm(),c.errorView(s.text.none)):(c.layFixed.removeClass(f),r?b():(b(),c.renderTotal(y,h),void(s.page&&(s.page=t.extend({elem:"layui-table-page"+s.index,count:o,limit:s.limit,limits:s.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(c.page=e.curr,s.limit=e.limit,c.pullData(e.curr))}},s.page),s.page.count=o,a.render(s.page)))))},I.prototype.renderTotal=function(e,a){var l=this,n=l.config,o={};if(n.totalRow){layui.each(e,function(e,t){0!==t.length&&l.eachCols(function(e,i){var a=i.field||e,l=t[a];i.totalRow&&(o[a]=(o[a]||0)+(parseFloat(l)||0))})}),l.dataTotal={};var r=[];l.eachCols(function(e,d){var c=d.field||e,s=function(){var e=d.totalRowText||"",t=parseFloat(o[c]).toFixed(2),i={};return i[c]=t,t=u(d,t,i),a?a[d.field]||e:d.totalRow?t||e:e}(),y=['','
                  '+function(){var e=d.totalRow||n.totalRow;return"string"==typeof e?i(e).render(t.extend({TOTAL_NUMS:s},d)):s}(),"
                  "].join("");d.field&&(l.dataTotal[c]=s),r.push(y)}),l.layTotal.find("tbody").html(""+r.join("")+"")}},I.prototype.getColElem=function(e,t){var i=this,a=i.config;return e.eq(0).find(".laytable-cell-"+(a.index+"-"+t)+":eq(0)")},I.prototype.renderForm=function(e){n.render(e,"LAY-table-"+this.index)},I.prototype.setThisRowChecked=function(e){var t=this,i=(t.config,"layui-table-click"),a=t.layBody.find('tr[data-index="'+e+'"]');a.addClass(i).siblings("tr").removeClass(i)},I.prototype.sort=function(e,i,a,l){var n,r,c=this,s={},u=c.config,h=u.elem.attr("lay-filter"),f=d.cache[c.key];"string"==typeof e&&(n=e,c.layHeader.find("th").each(function(i,a){var l=t(this),o=l.data("field");if(o===e)return e=l,n=o,!1}));try{var n=n||e.data("field"),p=e.data("key");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var v=c.layHeader.find("th .laytable-cell-"+p).find(S);c.layHeader.find("th").find(S).removeAttr("lay-sort"),v.attr("lay-sort",i||null),c.layFixed.find("th")}catch(m){o.error("Table modules: sort field '"+n+"' not matched")}c.sortKey={field:n,sort:i},u.autoSort&&("asc"===i?r=layui.sort(f,n):"desc"===i?r=layui.sort(f,n,!0):(r=layui.sort(f,d.config.indexName),delete c.sortKey)),s[u.response.dataName]=r||f,c.renderData(s,c.page,c.count,!0),l&&layui.event.call(e,y,"sort("+h+")",{field:n,type:i})},I.prototype.loading=function(e){var i=this,a=i.config;a.loading&&(e?(i.layInit&&i.layInit.remove(),delete i.layInit,i.layBox.find(b).remove()):(i.layInit=t(['
                  ','',"
                  "].join("")),i.layBox.append(i.layInit)))},I.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=d.cache[i.key];l[e]&&l[e].constructor!==Array&&(l[e][a.checkName]=t)},I.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name="layTableCheckbox"]'),a=function(i){return e.eachCols(function(e,a){"checkbox"===a.type&&(a[t.checkName]=i)}),i};i[0]&&(d.checkStatus(e.key).isAll?(i[0].checked||(i.prop("checked",!0),e.renderForm("checkbox")),a(!0)):(i[0].checked&&(i.prop("checked",!1),e.renderForm("checkbox")),a(!1)))},I.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find("style")[0],l=a.sheet||a.styleSheet||{},n=l.cssRules||l.rules;layui.each(n,function(i,a){if(a.selectorText===".laytable-cell-"+e)return t(a),!0})},I.prototype.fullSize=function(){var e,t=this,i=t.config,a=i.height;t.fullHeightGap&&(a=j.height()-t.fullHeightGap,a<135&&(a=135),t.elem.css("height",a)),a&&(e=parseFloat(a)-(t.layHeader.outerHeight()||38),i.toolbar&&(e-=t.layTool.outerHeight()||50),i.totalRow&&(e-=t.layTotal.outerHeight()||40),i.page&&(e-=t.layPage.outerHeight()||41),t.layMain.css("height",e-2))},I.prototype.getScrollWidth=function(e){var t=0;return e?t=e.offsetWidth-e.clientWidth:(e=document.createElement("div"),e.style.width="100px",e.style.height="100px",e.style.overflowY="scroll",document.body.appendChild(e),t=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),t},I.prototype.scrollPatch=function(){var e=this,i=e.layMain.children("table"),a=e.layMain.width()-e.layMain.prop("clientWidth"),l=e.layMain.height()-e.layMain.prop("clientHeight"),n=(e.getScrollWidth(e.layMain[0]),i.outerWidth()-e.layMain.width()),o=function(e){if(a&&l){if(e=e.eq(0),!e.find(".layui-table-patch")[0]){var i=t('
                  ');i.find("div").css({width:a}),e.find("tr").append(i)}}else e.find(".layui-table-patch").remove()};o(e.layHeader),o(e.layTotal);var r=e.layMain.height(),d=r-l;e.layFixed.find(k).css("height",i.height()>=d?d:"auto"),e.layFixRight[n>0?"removeClass":"addClass"](f),e.layFixRight.css("right",a-1)},I.prototype.events=function(){var e,i=this,a=i.config,o=t("body"),c={},s=i.layHeader.find("th"),h=".layui-table-cell",p=a.elem.attr("lay-filter");i.layTool.on("click","*[lay-event]",function(e){var o=t(this),c=o.attr("lay-event"),s=function(e){var l=t(e.list),n=t('
                    ');n.html(l),a.height&&n.css("max-height",a.height-(i.layTool.outerHeight()||50)),o.find(".layui-table-tool-panel")[0]||o.append(n),i.renderForm(),n.on("click",function(e){layui.stope(e)}),e.done&&e.done(n,l)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),l.close(i.tipsIndex),c){case"LAYTABLE_COLS":s({list:function(){var e=[];return i.eachCols(function(t,i){i.field&&"normal"==i.type&&e.push('
                  • ')}),e.join("")}(),done:function(){n.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var l=t(e.elem),n=this.checked,o=l.data("key"),r=l.data("parentkey");layui.each(a.cols,function(e,t){layui.each(t,function(t,l){if(e+"-"+t===o){var d=l.hide;l.hide=!n,i.elem.find('*[data-key="'+a.index+"-"+o+'"]')[n?"removeClass":"addClass"](f),d!=l.hide&&i.setParentCol(!n,r),i.resize()}})})})}});break;case"LAYTABLE_EXPORT":r.ie?l.tips("导出功能不支持 IE,请用 Chrome 等高级浏览器导出",this,{tips:3}):s({list:function(){return['
                  • 导出到 Csv 文件
                  • ','
                  • 导出到 Excel 文件
                  • '].join("")}(),done:function(e,l){l.on("click",function(){var e=t(this).data("type");d.exportFile.call(i,a.id,null,e)})}});break;case"LAYTABLE_PRINT":var u=window.open("打印窗口","_blank"),h=[""].join(""),v=t(i.layHeader.html());v.append(i.layMain.find("table").html()),v.append(i.layTotal.find("table").html()),v.find("th.layui-table-patch").remove(),v.find(".layui-table-col-special").remove(),u.document.write(h+v.prop("outerHTML")),u.document.close(),u.print(),u.close()}layui.event.call(this,y,"toolbar("+p+")",t.extend({event:c,config:a},{}))}),s.on("mousemove",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data("unresize")||c.resizeStart||(c.allowResize=i.width()-l<=10,o.css("cursor",c.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this);c.resizeStart||o.css("cursor","")}).on("mousedown",function(e){var l=t(this);if(c.allowResize){var n=l.data("key");e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],i.getCssRule(n,function(e){var t=e.style.width||l.outerWidth();c.rule=e,c.ruleWidth=parseFloat(t),c.minWidth=l.data("minwidth")||a.cellMinWidth})}}),F.on("mousemove",function(t){if(c.resizeStart){if(t.preventDefault(),c.rule){var a=c.ruleWidth+t.clientX-c.offset[0];a');return n[0].value=i.data("content")||l.text(),i.find("."+R)[0]||i.append(n),n.focus(),void layui.stope(e)}}).on("mouseenter","td",function(){b.call(this)}).on("mouseleave","td",function(){b.call(this,"hide")});var g="layui-table-grid-down",b=function(e){var i=t(this),a=i.children(h);if(!i.data("off"))if(e)i.find(".layui-table-grid-down").remove();else if(a.prop("scrollWidth")>a.outerWidth()){if(a.find("."+g)[0])return;i.append('
                    ')}};i.layBody.on("click","."+g,function(e){var n=t(this),o=n.parent(),d=o.children(h);i.tipsIndex=l.tips(['
                    ',d.html(),"
                    ",''].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:r.ios||r.android?300:i.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){l.close(t)})}}),layui.stope(e)}),i.layBody.on("click","*[lay-event]",function(){var e=t(this),a=e.parents("tr").eq(0).data("index");layui.event.call(this,y,"tool("+p+")",v.call(this,{event:e.attr("lay-event")})),i.setThisRowChecked(a)}),i.layMain.on("scroll",function(){var e=t(this),a=e.scrollLeft(),n=e.scrollTop();i.layHeader.scrollLeft(a),i.layTotal.scrollLeft(a),i.layFixed.find(k).scrollTop(n),l.close(i.tipsIndex)}),j.on("resize",function(){i.resize()})},function(){F.on("click",function(){F.trigger("table.remove.tool.panel")}),F.on("table.remove.tool.panel",function(){t(".layui-table-tool-panel").remove()})}(),d.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter="'+e+'"]':h+"[lay-data]"),n="Table element property lay-data configuration item has a syntax error: ";return l.each(function(){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){o.error(n+l,"error")}var c=[],s=t.extend({elem:this,cols:[],data:[],skin:a.attr("lay-skin"),size:a.attr("lay-size"),even:"string"==typeof a.attr("lay-even")},d.config,i,l);e&&a.hide(),a.find("thead>tr").each(function(e){s.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){return o.error(n+l)}var d=t.extend({title:a.text(),colspan:a.attr("colspan")||0,rowspan:a.attr("rowspan")||0},l);d.colspan<2&&c.push(d),s.cols[e].push(d)})}),a.find("tbody>tr").each(function(e){var i=t(this),a={};i.children("td").each(function(e,i){var l=t(this),n=l.data("field");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children("td").eq(e);a[t.field]=l.html()}),s.data[e]=a}),d.render(s)}),a},c.that={},c.config={},d.eachCols=function(e,i,a){var l=c.config[e]||{},n=[],o=0;a=t.extend(!0,[],a||l.cols),layui.each(a,function(e,t){layui.each(t,function(t,i){if(i.colGroup){var l=0;o++,i.CHILD_COLS=[],layui.each(a[e+1],function(e,t){t.PARENT_COL_INDEX||l>1&&l==i.colspan||(t.PARENT_COL_INDEX=o,i.CHILD_COLS.push(t),l+=parseInt(t.colspan>1?t.colspan:1))})}i.PARENT_COL_INDEX||n.push(i)})});var r=function(e){layui.each(e||n,function(e,t){return t.CHILD_COLS?r(t.CHILD_COLS):void("function"==typeof i&&i(e,t))})};r()},d.checkStatus=function(e){var t=0,i=0,a=[],l=d.cache[e]||[];return layui.each(l,function(e,l){return l.constructor===Array?void i++:void(l[d.config.checkName]&&(t++,a.push(d.clearCacheKey(l))))}),{data:a,isAll:!!l.length&&t===l.length-i}},d.getData=function(e){var t=[],i=d.cache[e]||[];return layui.each(i,function(e,i){i.constructor!==Array&&t.push(d.clearCacheKey(i))}),t},d.exportFile=function(e,t,i){var a=this;t=t||d.clearCacheKey(d.cache[e]),i=i||"csv";var l=c.config[e]||{},n={csv:"text/csv",xls:"application/vnd.ms-excel"}[i],s=document.createElement("a");return r.ie?o.error("IE_NOT_SUPPORT_EXPORTS"):(s.href="data:"+n+";charset=utf-8,\ufeff"+encodeURIComponent(function(){var i=[],l=[],n=[];return layui.each(t,function(t,a){var n=[];"object"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||"")}),layui.each(d.clearCacheKey(a),function(e,t){n.push('"'+(t||"")+'"')})):d.eachCols(e,function(e,l){if(l.field&&"normal"==l.type&&!l.hide){var o=a[l.field];void 0!==o&&null!==o||(o=""),0==t&&i.push(l.title||""),n.push('"'+u(l,o,a,"text")+'"')}}),l.push(n.join(","))}),layui.each(a.dataTotal,function(e,t){n.push(t)}),i.join(",")+"\r\n"+l.join("\r\n")+"\r\n"+n.join(",")}()),s.download=(l.title||"table_"+(l.index||""))+"."+i,document.body.appendChild(s),s.click(),void document.body.removeChild(s))},d.resize=function(e){if(e){var t=s(e);if(!t)return;c.that[e].resize()}else layui.each(c.that,function(){this.resize()})},d.reload=function(e,t,i){var a=s(e);if(a){var l=c.that[e];return l.reload(t,i),c.call(l)}},d.render=function(e){var t=new I(e);return c.call(t)},d.clearCacheKey=function(e){return e=t.extend({},e),delete e[d.config.checkName],delete e[d.config.indexName],e},d.init(),e(y,d)});layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",l=">*[carousel-item]>*",o="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['",'"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['
                      ',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("")}),i.join("")}(),"
                    "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):al.length&&(l.value=l.length),parseInt(l.value)!==l.value&&(l.half||(l.value=Math.ceil(l.value)-l.value<.5?Math.ceil(l.value):Math.floor(l.value)));for(var n='
                      ",s=1;s<=l.length;s++){var r='
                    • ";l.half&&parseInt(l.value)!==l.value&&s==Math.ceil(l.value)?n=n+'
                    • ":n+=r}n+="
                    "+(l.text?''+l.value+"星":"")+"";var c=l.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),l.span=e.elemTemp.next("span"),l.setText&&l.setText(l.value),c.html(e.elemTemp),c.addClass("layui-inline"),l.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,l=a.config;l.value=e,a.render()},v.prototype.action=function(){var e=this,l=e.config,i=e.elemTemp,n=i.find("i").width();i.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(l.value=t,l.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(l.value=l.value-.5)}l.text&&i.next("span").text(l.value+"星"),l.choose&&l.choose(l.value),l.setText&&l.setText(l.value)}),v.on("mousemove",function(e){if(i.find("i").each(function(){a(this).addClass(o).removeClass(r)}),i.find("i:lt("+t+")").each(function(){a(this).addClass(u).removeClass(f)}),l.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(s).removeClass(u)}}),v.on("mouseleave",function(){i.find("i").each(function(){a(this).addClass(o).removeClass(r)}),i.find("i:lt("+Math.floor(l.value)+")").each(function(){a(this).addClass(u).removeClass(f)}),l.half&&parseInt(l.value)!==l.value&&i.children("li:eq("+Math.floor(l.value)+")").children("i").addClass(s).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},l.render=function(e){var a=new v(e);return i.call(a)},e(n,l)});layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="加载更多",h=l('");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),!i&&f.width()&&(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;su)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)});layui.define(["layer","form"],function(t){"use strict";var e=layui.$,i=layui.layer,a=layui.form,l=(layui.hint(),layui.device()),n="layedit",o="layui-show",r="layui-disabled",c=function(){var t=this;t.index=0,t.config={tool:["strong","italic","underline","del","|","left","center","right","|","link","unlink","face","image"],hideTool:[],height:280}};c.prototype.set=function(t){var i=this;return e.extend(!0,i.config,t),i},c.prototype.on=function(t,e){return layui.onevent(n,t,e)},c.prototype.build=function(t,i){i=i||{};var a=this,n=a.config,r="layui-layedit",c=e("string"==typeof t?"#"+t:t),u="LAY_layedit_"+ ++a.index,d=c.next("."+r),y=e.extend({},n,i),f=function(){var t=[],e={};return layui.each(y.hideTool,function(t,i){e[i]=!0}),layui.each(y.tool,function(i,a){C[a]&&!e[a]&&t.push(C[a])}),t.join("")}(),m=e(['
                    ','
                    '+f+"
                    ",'
                    ','',"
                    ","
                    "].join(""));return l.ie&&l.ie<8?c.removeClass("layui-hide").addClass(o):(d[0]&&d.remove(),s.call(a,m,c[0],y),c.addClass("layui-hide").after(m),a.index)},c.prototype.getContent=function(t){var e=u(t);if(e[0])return d(e[0].document.body.innerHTML)},c.prototype.getText=function(t){var i=u(t);if(i[0])return e(i[0].document.body).text()},c.prototype.setContent=function(t,i,a){var l=u(t);l[0]&&(a?e(l[0].document.body).append(i):e(l[0].document.body).html(i),layedit.sync(t))},c.prototype.sync=function(t){var i=u(t);if(i[0]){var a=e("#"+i[1].attr("textarea"));a.val(d(i[0].document.body.innerHTML))}},c.prototype.getSelection=function(t){var e=u(t);if(e[0]){var i=m(e[0].document);return document.selection?i.text:i.toString()}};var s=function(t,i,a){var l=this,n=t.find("iframe");n.css({height:a.height}).on("load",function(){var o=n.contents(),r=n.prop("contentWindow"),c=o.find("head"),s=e([""].join("")),u=o.find("body");c.append(s),u.attr("contenteditable","true").css({"min-height":a.height}).html(i.value||""),y.apply(l,[r,n,i,a]),g.call(l,r,t,a)})},u=function(t){var i=e("#LAY_layedit_"+t),a=i.prop("contentWindow");return[a,i]},d=function(t){return 8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),t},y=function(t,a,n,o){var r=t.document,c=e(r.body);c.on("keydown",function(t){var e=t.keyCode;if(13===e){var a=m(r),l=p(a),n=l.parentNode;if("pre"===n.tagName.toLowerCase()){if(t.shiftKey)return;return i.msg("请暂时用shift+enter"),!1}r.execCommand("formatBlock",!1,"

                    ")}}),e(n).parents("form").on("submit",function(){var t=c.html();8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),n.value=t}),c.on("paste",function(e){r.execCommand("formatBlock",!1,"

                    "),setTimeout(function(){f.call(t,c),n.value=c.html()},100)})},f=function(t){var i=this;i.document;t.find("*[style]").each(function(){var t=this.style.textAlign;this.removeAttribute("style"),e(this).css({"text-align":t||""})}),t.find("table").addClass("layui-table"),t.find("script,link").remove()},m=function(t){return t.selection?t.selection.createRange():t.getSelection().getRangeAt(0)},p=function(t){return t.endContainer||t.parentElement().childNodes[0]},v=function(t,i,a){var l=this.document,n=document.createElement(t);for(var o in i)n.setAttribute(o,i[o]);if(n.removeAttribute("text"),l.selection){var r=a.text||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.pasteHTML(e(n).prop("outerHTML")),a.select()}else{var r=a.toString()||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.deleteContents(),a.insertNode(n)}},h=function(t,i){var a=this.document,l="layedit-tool-active",n=p(m(a)),o=function(e){return t.find(".layedit-tool-"+e)};i&&i[i.hasClass(l)?"removeClass":"addClass"](l),t.find(">i").removeClass(l),o("unlink").addClass(r),e(n).parents().each(function(){var t=this.tagName.toLowerCase(),e=this.style.textAlign;"b"!==t&&"strong"!==t||o("b").addClass(l),"i"!==t&&"em"!==t||o("i").addClass(l),"u"===t&&o("u").addClass(l),"strike"===t&&o("d").addClass(l),"p"===t&&("center"===e?o("center").addClass(l):"right"===e?o("right").addClass(l):o("left").addClass(l)),"a"===t&&(o("link").addClass(l),o("unlink").removeClass(r))})},g=function(t,a,l){var n=t.document,o=e(n.body),c={link:function(i){var a=p(i),l=e(a).parent();b.call(o,{href:l.attr("href"),target:l.attr("target")},function(e){var a=l[0];"A"===a.tagName?a.href=e.url:v.call(t,"a",{target:e.target,href:e.url,text:e.url},i)})},unlink:function(t){n.execCommand("unlink")},face:function(e){x.call(this,function(i){v.call(t,"img",{src:i.src,alt:i.alt},e)})},image:function(a){var n=this;layui.use("upload",function(o){var r=l.uploadImage||{};o.render({url:r.url,method:r.type,elem:e(n).find("input")[0],done:function(e){0==e.code?(e.data=e.data||{},v.call(t,"img",{src:e.data.src,alt:e.data.title},a)):i.msg(e.msg||"上传失败")}})})},code:function(e){k.call(o,function(i){v.call(t,"pre",{text:i.code,"lay-lang":i.lang},e)})},help:function(){i.open({type:2,title:"帮助",area:["600px","380px"],shadeClose:!0,shade:.1,skin:"layui-layer-msg",content:["","no"]})}},s=a.find(".layui-layedit-tool"),u=function(){var i=e(this),a=i.attr("layedit-event"),l=i.attr("lay-command");if(!i.hasClass(r)){o.focus();var u=m(n);u.commonAncestorContainer;l?(n.execCommand(l),/justifyLeft|justifyCenter|justifyRight/.test(l)&&n.execCommand("formatBlock",!1,"

                    "),setTimeout(function(){o.focus()},10)):c[a]&&c[a].call(this,u),h.call(t,s,i)}},d=/image/;s.find(">i").on("mousedown",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)||u.call(this)}).on("click",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)&&u.call(this)}),o.on("click",function(){h.call(t,s),i.close(x.index)})},b=function(t,e){var l=this,n=i.open({type:1,id:"LAY_layedit_link",area:"350px",shade:.05,shadeClose:!0,moveType:1,title:"超链接",skin:"layui-layer-msg",content:['

                      ','
                    • ','','
                      ','',"
                      ","
                    • ",'
                    • ','','
                      ','",'","
                      ","
                    • ",'
                    • ','','',"
                    • ","
                    "].join(""),success:function(t,n){var o="submit(layedit-link-yes)";a.render("radio"),t.find(".layui-btn-primary").on("click",function(){i.close(n),l.focus()}),a.on(o,function(t){i.close(b.index),e&&e(t.field)})}});b.index=n},x=function(t){var a=function(){var t=["[微笑]","[嘻嘻]","[哈哈]","[可爱]","[可怜]","[挖鼻]","[吃惊]","[害羞]","[挤眼]","[闭嘴]","[鄙视]","[爱你]","[泪]","[偷笑]","[亲亲]","[生病]","[太开心]","[白眼]","[右哼哼]","[左哼哼]","[嘘]","[衰]","[委屈]","[吐]","[哈欠]","[抱抱]","[怒]","[疑问]","[馋嘴]","[拜拜]","[思考]","[汗]","[困]","[睡]","[钱]","[失望]","[酷]","[色]","[哼]","[鼓掌]","[晕]","[悲伤]","[抓狂]","[黑线]","[阴险]","[怒骂]","[互粉]","[心]","[伤心]","[猪头]","[熊猫]","[兔子]","[ok]","[耶]","[good]","[NO]","[赞]","[来]","[弱]","[草泥马]","[神马]","[囧]","[浮云]","[给力]","[围观]","[威武]","[奥特曼]","[礼物]","[钟]","[话筒]","[蜡烛]","[蛋糕]"],e={};return layui.each(t,function(t,i){e[i]=layui.cache.dir+"images/face/"+t+".gif"}),e}();return x.hide=x.hide||function(t){"face"!==e(t.target).attr("layedit-event")&&i.close(x.index)},x.index=i.tips(function(){var t=[];return layui.each(a,function(e,i){t.push('
                  • '+e+'
                  • ')}),'
                      '+t.join("")+"
                    "}(),this,{tips:1,time:0,skin:"layui-box layui-util-face",maxWidth:500,success:function(l,n){l.css({marginTop:-4,marginLeft:-10}).find(".layui-clear>li").on("click",function(){t&&t({src:a[this.title],alt:this.title}),i.close(n)}),e(document).off("click",x.hide).on("click",x.hide)}})},k=function(t){var e=this,l=i.open({type:1,id:"LAY_layedit_code",area:"550px",shade:.05,shadeClose:!0,moveType:1,title:"插入代码",skin:"layui-layer-msg",content:['
                      ','
                    • ','','
                      ','","
                      ","
                    • ",'
                    • ','','
                      ','',"
                      ","
                    • ",'
                    • ','','',"
                    • ","
                    "].join(""),success:function(l,n){var o="submit(layedit-code-yes)";a.render("select"),l.find(".layui-btn-primary").on("click",function(){i.close(n),e.focus()}),a.on(o,function(e){i.close(k.index),t&&t(e.field)})}});k.index=l},C={html:'',strong:'',italic:'',underline:'',del:'',"|":'',left:'',center:'',right:'',link:'',unlink:'',face:'',image:'',code:'',help:''},L=new c;t(n,L)});layui.define("jquery",function(a){"use strict";var e=layui.$;a("code",function(a){var l=[];a=a||{},a.elem=e(a.elem||".layui-code"),a.lang="lang"in a?a.lang:"code",a.elem.each(function(){l.push(this)}),layui.each(l.reverse(),function(l,i){var t=e(i),c=t.html();(t.attr("lay-encode")||a.encode)&&(c=c.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),t.html('
                    1. '+c.replace(/[\r\t\n]+/g,"
                    2. ")+"
                    "),t.find(">.layui-code-h3")[0]||t.prepend('

                    '+(t.attr("lay-title")||a.title||"</>")+''+(t.attr("lay-lang")||a.lang||"")+"

                    ");var n=t.find(">.layui-code-ol");t.addClass("layui-box layui-code-view"),(t.attr("lay-skin")||a.skin)&&t.addClass("layui-code-"+(t.attr("lay-skin")||a.skin)),(n.find("li").length/100|0)>0&&n.css("margin-left",(n.find("li").length/100|0)+"px"),(t.attr("lay-height")||a.height)&&n.css("max-height",t.attr("lay-height")||a.height)})})}).addcss("modules/code.css?v=1","skincodecss"); \ No newline at end of file diff --git a/ss-admin/src/main/resources/static/lib/qrcode/qrcode.min.js b/ss-admin/src/main/resources/static/lib/qrcode/qrcode.min.js new file mode 100644 index 0000000..993e88f --- /dev/null +++ b/ss-admin/src/main/resources/static/lib/qrcode/qrcode.min.js @@ -0,0 +1 @@ +var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this.parsedData=[];for(var b=[],d=0,e=this.data.length;e>d;d++){var f=this.data.charCodeAt(d);f>65536?(b[0]=240|(1835008&f)>>>18,b[1]=128|(258048&f)>>>12,b[2]=128|(4032&f)>>>6,b[3]=128|63&f):f>2048?(b[0]=224|(61440&f)>>>12,b[1]=128|(4032&f)>>>6,b[2]=128|63&f):f>128?(b[0]=192|(1984&f)>>>6,b[1]=128|63&f):b[0]=f,this.parsedData=this.parsedData.concat(b)}this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function b(a,b){this.typeNumber=a,this.errorCorrectLevel=b,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}function i(a,b){if(void 0==a.length)throw new Error(a.length+"/"+b);for(var c=0;c=f;f++){var h=0;switch(b){case d.L:h=l[f][0];break;case d.M:h=l[f][1];break;case d.Q:h=l[f][2];break;case d.H:h=l[f][3]}if(h>=e)break;c++}if(c>l.length)throw new Error("Too long data");return c}function s(a){var b=encodeURI(a).toString().replace(/\%[0-9a-fA-F]{2}/g,"a");return b.length+(b.length!=a?3:0)}a.prototype={getLength:function(){return this.parsedData.length},write:function(a){for(var b=0,c=this.parsedData.length;c>b;b++)a.put(this.parsedData[b],8)}},b.prototype={addData:function(b){var c=new a(b);this.dataList.push(c),this.dataCache=null},isDark:function(a,b){if(0>a||this.moduleCount<=a||0>b||this.moduleCount<=b)throw new Error(a+","+b);return this.modules[a][b]},getModuleCount:function(){return this.moduleCount},make:function(){this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var d=0;d=7&&this.setupTypeNumber(a),null==this.dataCache&&(this.dataCache=b.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,b){for(var c=-1;7>=c;c++)if(!(-1>=a+c||this.moduleCount<=a+c))for(var d=-1;7>=d;d++)-1>=b+d||this.moduleCount<=b+d||(this.modules[a+c][b+d]=c>=0&&6>=c&&(0==d||6==d)||d>=0&&6>=d&&(0==c||6==c)||c>=2&&4>=c&&d>=2&&4>=d?!0:!1)},getBestMaskPattern:function(){for(var a=0,b=0,c=0;8>c;c++){this.makeImpl(!0,c);var d=f.getLostPoint(this);(0==c||a>d)&&(a=d,b=c)}return b},createMovieClip:function(a,b,c){var d=a.createEmptyMovieClip(b,c),e=1;this.make();for(var f=0;f=g;g++)for(var h=-2;2>=h;h++)this.modules[d+g][e+h]=-2==g||2==g||-2==h||2==h||0==g&&0==h?!0:!1}},setupTypeNumber:function(a){for(var b=f.getBCHTypeNumber(this.typeNumber),c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[Math.floor(c/3)][c%3+this.moduleCount-8-3]=d}for(var c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[c%3+this.moduleCount-8-3][Math.floor(c/3)]=d}},setupTypeInfo:function(a,b){for(var c=this.errorCorrectLevel<<3|b,d=f.getBCHTypeInfo(c),e=0;15>e;e++){var g=!a&&1==(1&d>>e);6>e?this.modules[e][8]=g:8>e?this.modules[e+1][8]=g:this.modules[this.moduleCount-15+e][8]=g}for(var e=0;15>e;e++){var g=!a&&1==(1&d>>e);8>e?this.modules[8][this.moduleCount-e-1]=g:9>e?this.modules[8][15-e-1+1]=g:this.modules[8][15-e-1]=g}this.modules[this.moduleCount-8][8]=!a},mapData:function(a,b){for(var c=-1,d=this.moduleCount-1,e=7,g=0,h=this.moduleCount-1;h>0;h-=2)for(6==h&&h--;;){for(var i=0;2>i;i++)if(null==this.modules[d][h-i]){var j=!1;g>>e));var k=f.getMask(b,d,h-i);k&&(j=!j),this.modules[d][h-i]=j,e--,-1==e&&(g++,e=7)}if(d+=c,0>d||this.moduleCount<=d){d-=c,c=-c;break}}}},b.PAD0=236,b.PAD1=17,b.createData=function(a,c,d){for(var e=j.getRSBlocks(a,c),g=new k,h=0;h8*l)throw new Error("code length overflow. ("+g.getLengthInBits()+">"+8*l+")");for(g.getLengthInBits()+4<=8*l&&g.put(0,4);0!=g.getLengthInBits()%8;)g.putBit(!1);for(;;){if(g.getLengthInBits()>=8*l)break;if(g.put(b.PAD0,8),g.getLengthInBits()>=8*l)break;g.put(b.PAD1,8)}return b.createBytes(g,e)},b.createBytes=function(a,b){for(var c=0,d=0,e=0,g=new Array(b.length),h=new Array(b.length),j=0;j=0?p.get(q):0}}for(var r=0,m=0;mm;m++)for(var j=0;jm;m++)for(var j=0;j=0;)b^=f.G15<=0;)b^=f.G18<>>=1;return b},getPatternPosition:function(a){return f.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,b,c){switch(a){case e.PATTERN000:return 0==(b+c)%2;case e.PATTERN001:return 0==b%2;case e.PATTERN010:return 0==c%3;case e.PATTERN011:return 0==(b+c)%3;case e.PATTERN100:return 0==(Math.floor(b/2)+Math.floor(c/3))%2;case e.PATTERN101:return 0==b*c%2+b*c%3;case e.PATTERN110:return 0==(b*c%2+b*c%3)%2;case e.PATTERN111:return 0==(b*c%3+(b+c)%2)%2;default:throw new Error("bad maskPattern:"+a)}},getErrorCorrectPolynomial:function(a){for(var b=new i([1],0),c=0;a>c;c++)b=b.multiply(new i([1,g.gexp(c)],0));return b},getLengthInBits:function(a,b){if(b>=1&&10>b)switch(a){case c.MODE_NUMBER:return 10;case c.MODE_ALPHA_NUM:return 9;case c.MODE_8BIT_BYTE:return 8;case c.MODE_KANJI:return 8;default:throw new Error("mode:"+a)}else if(27>b)switch(a){case c.MODE_NUMBER:return 12;case c.MODE_ALPHA_NUM:return 11;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 10;default:throw new Error("mode:"+a)}else{if(!(41>b))throw new Error("type:"+b);switch(a){case c.MODE_NUMBER:return 14;case c.MODE_ALPHA_NUM:return 13;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 12;default:throw new Error("mode:"+a)}}},getLostPoint:function(a){for(var b=a.getModuleCount(),c=0,d=0;b>d;d++)for(var e=0;b>e;e++){for(var f=0,g=a.isDark(d,e),h=-1;1>=h;h++)if(!(0>d+h||d+h>=b))for(var i=-1;1>=i;i++)0>e+i||e+i>=b||(0!=h||0!=i)&&g==a.isDark(d+h,e+i)&&f++;f>5&&(c+=3+f-5)}for(var d=0;b-1>d;d++)for(var e=0;b-1>e;e++){var j=0;a.isDark(d,e)&&j++,a.isDark(d+1,e)&&j++,a.isDark(d,e+1)&&j++,a.isDark(d+1,e+1)&&j++,(0==j||4==j)&&(c+=3)}for(var d=0;b>d;d++)for(var e=0;b-6>e;e++)a.isDark(d,e)&&!a.isDark(d,e+1)&&a.isDark(d,e+2)&&a.isDark(d,e+3)&&a.isDark(d,e+4)&&!a.isDark(d,e+5)&&a.isDark(d,e+6)&&(c+=40);for(var e=0;b>e;e++)for(var d=0;b-6>d;d++)a.isDark(d,e)&&!a.isDark(d+1,e)&&a.isDark(d+2,e)&&a.isDark(d+3,e)&&a.isDark(d+4,e)&&!a.isDark(d+5,e)&&a.isDark(d+6,e)&&(c+=40);for(var k=0,e=0;b>e;e++)for(var d=0;b>d;d++)a.isDark(d,e)&&k++;var l=Math.abs(100*k/b/b-50)/5;return c+=10*l}},g={glog:function(a){if(1>a)throw new Error("glog("+a+")");return g.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;a>=256;)a-=255;return g.EXP_TABLE[a]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},h=0;8>h;h++)g.EXP_TABLE[h]=1<h;h++)g.EXP_TABLE[h]=g.EXP_TABLE[h-4]^g.EXP_TABLE[h-5]^g.EXP_TABLE[h-6]^g.EXP_TABLE[h-8];for(var h=0;255>h;h++)g.LOG_TABLE[g.EXP_TABLE[h]]=h;i.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var b=new Array(this.getLength()+a.getLength()-1),c=0;cf;f++)for(var g=c[3*f+0],h=c[3*f+1],i=c[3*f+2],k=0;g>k;k++)e.push(new j(h,i));return e},j.getRsBlockTable=function(a,b){switch(b){case d.L:return j.RS_BLOCK_TABLE[4*(a-1)+0];case d.M:return j.RS_BLOCK_TABLE[4*(a-1)+1];case d.Q:return j.RS_BLOCK_TABLE[4*(a-1)+2];case d.H:return j.RS_BLOCK_TABLE[4*(a-1)+3];default:return void 0}},k.prototype={get:function(a){var b=Math.floor(a/8);return 1==(1&this.buffer[b]>>>7-a%8)},put:function(a,b){for(var c=0;b>c;c++)this.putBit(1==(1&a>>>b-c-1))},getLengthInBits:function(){return this.length},putBit:function(a){var b=Math.floor(this.length/8);this.buffer.length<=b&&this.buffer.push(0),a&&(this.buffer[b]|=128>>>this.length%8),this.length++}};var l=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]],o=function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){function g(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg",a);for(var d in b)b.hasOwnProperty(d)&&c.setAttribute(d,b[d]);return c}var b=this._htOption,c=this._el,d=a.getModuleCount();Math.floor(b.width/d),Math.floor(b.height/d),this.clear();var h=g("svg",{viewBox:"0 0 "+String(d)+" "+String(d),width:"100%",height:"100%",fill:b.colorLight});h.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),c.appendChild(h),h.appendChild(g("rect",{fill:b.colorDark,width:"1",height:"1",id:"template"}));for(var i=0;d>i;i++)for(var j=0;d>j;j++)if(a.isDark(i,j)){var k=g("use",{x:String(i),y:String(j)});k.setAttributeNS("http://www.w3.org/1999/xlink","href","#template"),h.appendChild(k)}},a.prototype.clear=function(){for(;this._el.hasChildNodes();)this._el.removeChild(this._el.lastChild)},a}(),p="svg"===document.documentElement.tagName.toLowerCase(),q=p?o:m()?function(){function a(){this._elImage.src=this._elCanvas.toDataURL("image/png"),this._elImage.style.display="block",this._elCanvas.style.display="none"}function d(a,b){var c=this;if(c._fFail=b,c._fSuccess=a,null===c._bSupportDataURI){var d=document.createElement("img"),e=function(){c._bSupportDataURI=!1,c._fFail&&_fFail.call(c)},f=function(){c._bSupportDataURI=!0,c._fSuccess&&c._fSuccess.call(c)};return d.onabort=e,d.onerror=e,d.onload=f,d.src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==",void 0}c._bSupportDataURI===!0&&c._fSuccess?c._fSuccess.call(c):c._bSupportDataURI===!1&&c._fFail&&c._fFail.call(c)}if(this._android&&this._android<=2.1){var b=1/window.devicePixelRatio,c=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(a,d,e,f,g,h,i,j){if("nodeName"in a&&/img/i.test(a.nodeName))for(var l=arguments.length-1;l>=1;l--)arguments[l]=arguments[l]*b;else"undefined"==typeof j&&(arguments[1]*=b,arguments[2]*=b,arguments[3]*=b,arguments[4]*=b);c.apply(this,arguments)}}var e=function(a,b){this._bIsPainted=!1,this._android=n(),this._htOption=b,this._elCanvas=document.createElement("canvas"),this._elCanvas.width=b.width,this._elCanvas.height=b.height,a.appendChild(this._elCanvas),this._el=a,this._oContext=this._elCanvas.getContext("2d"),this._bIsPainted=!1,this._elImage=document.createElement("img"),this._elImage.style.display="none",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return e.prototype.draw=function(a){var b=this._elImage,c=this._oContext,d=this._htOption,e=a.getModuleCount(),f=d.width/e,g=d.height/e,h=Math.round(f),i=Math.round(g);b.style.display="none",this.clear();for(var j=0;e>j;j++)for(var k=0;e>k;k++){var l=a.isDark(j,k),m=k*f,n=j*g;c.strokeStyle=l?d.colorDark:d.colorLight,c.lineWidth=1,c.fillStyle=l?d.colorDark:d.colorLight,c.fillRect(m,n,f,g),c.strokeRect(Math.floor(m)+.5,Math.floor(n)+.5,h,i),c.strokeRect(Math.ceil(m)-.5,Math.ceil(n)-.5,h,i)}this._bIsPainted=!0},e.prototype.makeImage=function(){this._bIsPainted&&d.call(this,a)},e.prototype.isPainted=function(){return this._bIsPainted},e.prototype.clear=function(){this._oContext.clearRect(0,0,this._elCanvas.width,this._elCanvas.height),this._bIsPainted=!1},e.prototype.round=function(a){return a?Math.floor(1e3*a)/1e3:a},e}():function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){for(var b=this._htOption,c=this._el,d=a.getModuleCount(),e=Math.floor(b.width/d),f=Math.floor(b.height/d),g=[''],h=0;d>h;h++){g.push("");for(var i=0;d>i;i++)g.push('');g.push("")}g.push("
                    "),c.innerHTML=g.join("");var j=c.childNodes[0],k=(b.width-j.offsetWidth)/2,l=(b.height-j.offsetHeight)/2;k>0&&l>0&&(j.style.margin=l+"px "+k+"px")},a.prototype.clear=function(){this._el.innerHTML=""},a}();QRCode=function(a,b){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:"#000000",colorLight:"#ffffff",correctLevel:d.H},"string"==typeof b&&(b={text:b}),b)for(var c in b)this._htOption[c]=b[c];"string"==typeof a&&(a=document.getElementById(a)),this._android=n(),this._el=a,this._oQRCode=null,this._oDrawing=new q(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)},QRCode.prototype.makeCode=function(a){this._oQRCode=new b(r(a,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(a),this._oQRCode.make(),this._el.title=a,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){"function"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=d}(); \ No newline at end of file diff --git a/ss-admin/src/main/resources/templates/cloud/account/department/add.html b/ss-admin/src/main/resources/templates/cloud/account/department/add.html new file mode 100644 index 0000000..f956492 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/account/department/add.html @@ -0,0 +1,46 @@ + + + + + 添加信息 + + + + + + + + + + + +
                    +
                    +
                    +
                    + + +
                    + +
                    + +
                    +
                    +
                    +
                    +
                    +
                    + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/account/department/edit.html b/ss-admin/src/main/resources/templates/cloud/account/department/edit.html new file mode 100644 index 0000000..6cb238a --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/account/department/edit.html @@ -0,0 +1,66 @@ + + + + + 编辑信息 + + + + + + + + + + + +
                    +
                    +
                    + +
                    + + +
                    + +
                    + +
                    +
                    +
                    +
                    +
                    +
                    + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/account/department/index.html b/ss-admin/src/main/resources/templates/cloud/account/department/index.html new file mode 100644 index 0000000..3f2503d --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/account/department/index.html @@ -0,0 +1,210 @@ + + + + + 部门管理 + + + + + + +
                    +
                    + + + +
                    企业架构 +
                    +
                    +
                    +
                    +
                    + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/account/enterprise/add.html b/ss-admin/src/main/resources/templates/cloud/account/enterprise/add.html new file mode 100644 index 0000000..2c7307b --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/account/enterprise/add.html @@ -0,0 +1,43 @@ + + + + + 添加信息 + + + + + + + + + + + +
                    +
                    +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    +
                    +
                    +
                    + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/account/enterprise/edit.html b/ss-admin/src/main/resources/templates/cloud/account/enterprise/edit.html new file mode 100644 index 0000000..485b889 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/account/enterprise/edit.html @@ -0,0 +1,60 @@ + + + + + 编辑信息 + + + + + + + + + + + +
                    +
                    +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    +
                    +
                    +
                    + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/account/enterprise/index.html b/ss-admin/src/main/resources/templates/cloud/account/enterprise/index.html new file mode 100644 index 0000000..b3ecafa --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/account/enterprise/index.html @@ -0,0 +1,266 @@ + + + + + 企业管理 + + + + + + +
                    +
                    + +
                    + 搜索 +
                    +
                    + +
                    + +
                    + +
                    + +
                    + +
                    + + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/account/user/add.html b/ss-admin/src/main/resources/templates/cloud/account/user/add.html new file mode 100644 index 0000000..a6f8568 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/account/user/add.html @@ -0,0 +1,273 @@ + + + + + 添加用户 + + + + + + + + + + + +
                    +
                    +
                    + + +
                    + +
                    + +
                    + +
                    +
                    + +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    + +
                    +
                    后台登录账号
                    +
                    + +
                    + +
                    + +
                    +
                    后台登录账号
                    +
                    + +
                    + +
                    + +
                    + +
                    +
                    + +
                    +
                    + +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                      +
                      +
                      + + + +
                      + +
                      +
                        +
                        +
                        + + +
                        + +
                        + +
                        +
                        + +
                        + +
                        +
                        +
                        +
                        + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/account/user/authRole.html b/ss-admin/src/main/resources/templates/cloud/account/user/authRole.html new file mode 100644 index 0000000..2def3cc --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/account/user/authRole.html @@ -0,0 +1,110 @@ + + + + + 分配角色 + + + + + + + + +
                        +
                        + +
                        +
                        + 用户信息 +
                        + +
                        + + +
                        + +
                        + + +
                        +
                        +
                        + +
                        + 角色列表 +
                        + +
                        + + +
                        +
                        +
                        + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/account/user/edit.html b/ss-admin/src/main/resources/templates/cloud/account/user/edit.html new file mode 100644 index 0000000..a9269e8 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/account/user/edit.html @@ -0,0 +1,136 @@ + + + + + 编辑用户 + + + + + + + + + + + +
                        +
                        +
                        + + +
                        + +
                        + +
                        + +
                        +
                        + +
                        + +
                        + +
                        +
                        +
                        + +
                        + +
                        + +
                        +
                        后台登录账号
                        +
                        + +
                        + +
                        + +
                        +
                        后台登录账号
                        +
                        + +
                        + +
                        + +
                        +
                        + +
                        + +
                        +
                        +
                        +
                        + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/account/user/editDepartment.html b/ss-admin/src/main/resources/templates/cloud/account/user/editDepartment.html new file mode 100644 index 0000000..1bd9525 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/account/user/editDepartment.html @@ -0,0 +1,103 @@ + + + + + 部门管理 + + + + + + +
                        +
                        + + + +
                        企业架构 +
                        +
                        +
                        +
                        +
                        + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/account/user/index.html b/ss-admin/src/main/resources/templates/cloud/account/user/index.html new file mode 100644 index 0000000..67ebef9 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/account/user/index.html @@ -0,0 +1,511 @@ + + + + + 用户管理 + + + + + + +
                        +
                        +
                        企业架构
                        +
                        +
                        +
                        +
                        +
                        + +
                        + 搜索 +
                        +
                        +
                        + +
                        + +
                        + +
                        + +
                        +
                        + +
                        + + +
                        +
                        +
                        +
                        + +
                        +
                        +
                        +
                        +
                        + + + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/account/user/selectDepartment.html b/ss-admin/src/main/resources/templates/cloud/account/user/selectDepartment.html new file mode 100644 index 0000000..321a864 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/account/user/selectDepartment.html @@ -0,0 +1,117 @@ + + + + + 部门管理 + + + + + + +
                        +
                        + + + +
                        企业架构 +
                        +
                        +
                        +
                        + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/account/user/updateDepartment.html b/ss-admin/src/main/resources/templates/cloud/account/user/updateDepartment.html new file mode 100644 index 0000000..50dbca2 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/account/user/updateDepartment.html @@ -0,0 +1,131 @@ + + + + + 部门管理 + + + + + + +
                        +
                        + + + +
                        企业架构 +
                        +
                        +
                        +
                        + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/collect/index.html b/ss-admin/src/main/resources/templates/cloud/collect/index.html new file mode 100644 index 0000000..7fe6838 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/collect/index.html @@ -0,0 +1,261 @@ + + + + + 企业文件 + + + + + +
                        +
                        + +
                        + 搜索 +
                        +
                        + +
                        + +
                        + +
                        +
                        + +
                        + + +
                        +
                        +
                        +
                        + + +
                        +
                        +
                        + + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/lately/index.html b/ss-admin/src/main/resources/templates/cloud/lately/index.html new file mode 100644 index 0000000..e2ccd05 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/lately/index.html @@ -0,0 +1,231 @@ + + + + + 企业文件 + + + + + +
                        +
                        + +
                        + 搜索 +
                        +
                        + +
                        + +
                        + +
                        +
                        + +
                        + + +
                        +
                        +
                        +
                        + + +
                        +
                        +
                        + + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/my/index.html b/ss-admin/src/main/resources/templates/cloud/my/index.html new file mode 100644 index 0000000..f2f04a9 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/my/index.html @@ -0,0 +1,333 @@ + + + + + 企业文件 + + + + + +
                        +
                        + +
                        + 搜索 +
                        +
                        + +
                        + +
                        + +
                        +
                        + +
                        + + +
                        +
                        +
                        +
                        + + +
                        +
                        +
                        + + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/recycle/index.html b/ss-admin/src/main/resources/templates/cloud/recycle/index.html new file mode 100644 index 0000000..e3d10da --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/recycle/index.html @@ -0,0 +1,222 @@ + + + + + 企业文件 + + + + + +
                        +
                        + +
                        + 搜索 +
                        +
                        + +
                        + +
                        + +
                        +
                        + +
                        + + +
                        +
                        +
                        +
                        + + +
                        +
                        +
                        + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/role/role/add.html b/ss-admin/src/main/resources/templates/cloud/role/role/add.html new file mode 100644 index 0000000..60667b2 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/role/role/add.html @@ -0,0 +1,75 @@ + + + + + 添加信息 + + + + + + + + + + + +
                        +
                        +
                        +
                        +
                        + +
                        + +
                        +
                        +
                        + + +
                        +
                        + +
                        + + +
                        +
                        +
                        +
                        +
                        +
                        + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/role/role/authUser.html b/ss-admin/src/main/resources/templates/cloud/role/role/authUser.html new file mode 100644 index 0000000..bdc3c43 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/role/role/authUser.html @@ -0,0 +1,209 @@ + + + + + 授权角色 + + + + + + +
                        +
                        +
                        +
                        + 角色信息 +
                        +
                        + + +
                        + +
                        + +
                        +
                        +
                        + +
                        + 已授权用户列表 +
                        + +
                        + + +
                        +
                        +
                        + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/role/role/edit.html b/ss-admin/src/main/resources/templates/cloud/role/role/edit.html new file mode 100644 index 0000000..a25321c --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/role/role/edit.html @@ -0,0 +1,108 @@ + + + + + 编辑信息 + + + + + + + + + + + +
                        +
                        +
                        +
                        +
                        + +
                        + +
                        +
                        +
                        + +
                        +
                        + +
                        + + +
                        +
                        +
                        +
                        +
                        +
                        + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/role/role/index.html b/ss-admin/src/main/resources/templates/cloud/role/role/index.html new file mode 100644 index 0000000..95e187f --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/role/role/index.html @@ -0,0 +1,421 @@ + + + + + 权限管理 + + + + + + +
                        +
                        + +
                        + 搜索 +
                        +
                        + +
                        + +
                        + +
                        + +
                        + +
                        + + +
                        +
                        +
                        +
                        + +
                        +
                        +
                        + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/share/index.html b/ss-admin/src/main/resources/templates/cloud/share/index.html new file mode 100644 index 0000000..bbb880e --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/share/index.html @@ -0,0 +1,610 @@ + + + + + 企业文件 + + + + + +
                        +
                        + +
                        + 搜索 +
                        +
                        + +
                        + +
                        + +
                        +
                        + +
                        + + +
                        +
                        +
                        +
                        + + +
                        +
                        +
                        + + + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/space/file/add.html b/ss-admin/src/main/resources/templates/cloud/space/file/add.html new file mode 100644 index 0000000..3954d18 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/space/file/add.html @@ -0,0 +1,75 @@ + + + + + 添加信息 + + + + + + + + + + + +
                        +
                        +
                        +
                        +
                        + +
                        + +
                        +
                        +
                        +
                        +
                        + +
                        + + +
                        +
                        +
                        +
                        +
                        +
                        + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/space/file/authFile.html b/ss-admin/src/main/resources/templates/cloud/space/file/authFile.html new file mode 100644 index 0000000..bc93808 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/space/file/authFile.html @@ -0,0 +1,131 @@ + + + + + 文件管理 + + + + + + +
                        +
                        + + + +
                        目录架构 +
                        +
                        +
                        +
                        +
                        + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/space/file/authRole.html b/ss-admin/src/main/resources/templates/cloud/space/file/authRole.html new file mode 100644 index 0000000..b11f095 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/space/file/authRole.html @@ -0,0 +1,97 @@ + + + + + 分配角色 + + + + + + + + +
                        +
                        + +
                        + +
                        + 角色列表 +
                        + +
                        + + +
                        +
                        +
                        + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/space/file/edit.html b/ss-admin/src/main/resources/templates/cloud/space/file/edit.html new file mode 100644 index 0000000..0313965 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/space/file/edit.html @@ -0,0 +1,108 @@ + + + + + 编辑信息 + + + + + + + + + + + +
                        +
                        +
                        +
                        +
                        + +
                        + +
                        +
                        +
                        + + +
                        +
                        +
                        + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/space/file/index.html b/ss-admin/src/main/resources/templates/cloud/space/file/index.html new file mode 100644 index 0000000..cab28b6 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/space/file/index.html @@ -0,0 +1,604 @@ + + + + + 企业文件 + + + + + +
                        +
                        + +
                        + 搜索 +
                        +
                        + +
                        + +
                        + +
                        +
                        + +
                        + + +
                        +
                        +
                        +
                        + + +
                        +
                        +
                        + + + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/space/file/updateAuthFile.html b/ss-admin/src/main/resources/templates/cloud/space/file/updateAuthFile.html new file mode 100644 index 0000000..38074df --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/space/file/updateAuthFile.html @@ -0,0 +1,135 @@ + + + + + 文件管理 + + + + + + +
                        +
                        + + + +
                        目录架构 +
                        +
                        +
                        +
                        +
                        + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/space/recycle/index.html b/ss-admin/src/main/resources/templates/cloud/space/recycle/index.html new file mode 100644 index 0000000..d596a99 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/space/recycle/index.html @@ -0,0 +1,222 @@ + + + + + 企业文件 + + + + + +
                        +
                        + +
                        + 搜索 +
                        +
                        + +
                        + +
                        + +
                        +
                        + +
                        + + +
                        +
                        +
                        +
                        + + +
                        +
                        +
                        + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/upload/changeIndex.html b/ss-admin/src/main/resources/templates/cloud/upload/changeIndex.html new file mode 100644 index 0000000..326522c --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/upload/changeIndex.html @@ -0,0 +1,571 @@ + + + + + OSS多文件上传 + + + + + + +
                        +

                        拖拽文件上传到OSS

                        + + +
                        + +

                        将文件拖拽到此处上传

                        +

                        支持多个文件,最大1GB

                        +

                        支持图片、文档、压缩包等格式

                        +
                        + + +
                        +
                        + +

                        暂无文件,请拖拽文件到上方区域

                        +
                        +
                        + + + +
                        + + + + + + + diff --git a/ss-admin/src/main/resources/templates/cloud/upload/index.html b/ss-admin/src/main/resources/templates/cloud/upload/index.html new file mode 100644 index 0000000..50aecb1 --- /dev/null +++ b/ss-admin/src/main/resources/templates/cloud/upload/index.html @@ -0,0 +1,541 @@ + + + + + OSS多文件上传 + + + + + + +
                        +

                        拖拽文件上传到OSS

                        + + +
                        + +

                        将文件拖拽到此处上传

                        +

                        支持多个文件,最大1GB

                        +

                        支持图片、文档、压缩包等格式

                        +
                        + + +
                        +
                        + +

                        暂无文件,请拖拽文件到上方区域

                        +
                        +
                        + + + +
                        + + + + + + + diff --git a/ss-admin/src/main/resources/templates/component/alipay/index.html b/ss-admin/src/main/resources/templates/component/alipay/index.html new file mode 100644 index 0000000..2f01b41 --- /dev/null +++ b/ss-admin/src/main/resources/templates/component/alipay/index.html @@ -0,0 +1,307 @@ + + + + + 支付宝支付演示 + + + + + + + + + + + + +
                        +
                        +
                        +
                          +
                        • 支付配置
                        • +
                        • 扫码支付演示
                        • +
                        • 交易查询
                        • +
                        • 退款演示
                        • +
                        +
                        + +
                        +
                        + +
                        +
                        + 基本信息配置(必填) +
                        +
                        + +
                        + +
                        +
                        设置支付宝应用的appid
                        +
                        +
                        + +
                        + +
                        +
                        设置支付宝应用的名称
                        +
                        +
                        + +
                        + +
                        +
                        填写支付宝应用私钥(Java语言)
                        +
                        +
                        + 公钥模式(与证书模式二选一) +
                        +
                        + +
                        + +
                        +
                        填写支付宝公钥
                        +
                        + +
                        + 证书模式(与公钥模式二选一) +
                        +
                        + +
                        + +
                        +
                        填写支付宝的应用公钥证书文件路径
                        +
                        +
                        + +
                        + +
                        +
                        填写支付宝公钥证书文件路径
                        +
                        +
                        + +
                        + +
                        +
                        填写支付宝根证书文件路径
                        +
                        +
                        + 其他信息配置 +
                        +
                        + +
                        + +
                        +
                        AES密钥(接口内容加密方式)
                        +
                        +
                        + +
                        + +
                        +
                        必须为外网可访问的url,不能携带参数。公网域名必须为https
                        +
                        +
                        + +
                        + +
                        +
                        证书模式填写:openapi.alipay.com 沙箱环境填写:openapi.alipaydev.com
                        +
                        + +
                        +
                        + + +
                        +
                        +
                        +
                        +
                        + +
                        +
                        + +
                        +
                        + 支付宝支付演示 +
                        +
                        + +
                        + +
                        +
                        输入商品名称
                        +
                        +
                        + +
                        + +
                        +
                        填写支付金额
                        +
                        +
                        +
                        + +
                        +
                        +
                        +
                        +
                        +
                        +
                        +
                        +
                        +
                        + +
                        +
                        + +
                        +
                        + 交易结果查询 +
                        +
                        + +
                        + +
                        +
                        输入商户单号
                        +
                        + +
                        +
                        + +
                        +
                        +
                        +
                        +
                        +
                        商户单号在哪里?① 【扫码支付演示】页面有显示 ② 支付宝订单页面有显示
                        +
                        +
                        + +
                        +
                        + +
                        +
                        + 退款操作 +
                        +
                        + +
                        + +
                        +
                        输入商户单号
                        +
                        +
                        + +
                        + +
                        +
                        填写退款金额,不能大于实际支付金额
                        +
                        +
                        +
                        + +
                        +
                        +
                        +
                        +
                        +
                        商户单号在哪里?① 【扫码支付演示】页面有显示 ② 支付宝订单页面有显示
                        +
                        +
                        +
                        +
                        +
                        +
                        + + + + + + + diff --git a/ss-admin/src/main/resources/templates/component/qiniuOss/index.html b/ss-admin/src/main/resources/templates/component/qiniuOss/index.html new file mode 100644 index 0000000..1a59e8d --- /dev/null +++ b/ss-admin/src/main/resources/templates/component/qiniuOss/index.html @@ -0,0 +1,107 @@ + + + + + 七牛云文件存储服务 + + + + + +
                        +
                        + +
                        + 搜索 +
                        +
                        + +
                        + +
                        + +
                        + +
                        + +
                        +
                        + +
                        + + +
                        +
                        +
                        +
                        + +
                        +
                        +
                        + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/component/wechatPay/index.html b/ss-admin/src/main/resources/templates/component/wechatPay/index.html new file mode 100644 index 0000000..3ffa378 --- /dev/null +++ b/ss-admin/src/main/resources/templates/component/wechatPay/index.html @@ -0,0 +1,279 @@ + + + + + 微信支付演示 + + + + + + +
                        +
                        +
                        +
                          +
                        • 支付配置
                        • +
                        • 扫码支付演示
                        • +
                        • 交易查询
                        • +
                        • 退款演示
                        • +
                        +
                        + +
                        +
                        + +
                        +
                        + 微信支付信息配置 +
                        +
                        + +
                        + +
                        +
                        设置微信公众号或者小程序等的appid
                        +
                        +
                        + +
                        + +
                        +
                        请填写微信支付商户号
                        +
                        +
                        + +
                        + +
                        +
                        设置APIv2密钥(微信支付商户密钥
                        +
                        + +
                        + +
                        + +
                        +
                        APIv3密钥(微信支付商户密钥
                        +
                        + +
                        + +
                        + +
                        +
                        apiclient_cert.p12证书文件的绝对路径
                        +
                        + +
                        + +
                        + +
                        +
                        apiclient_key.pem证书文件的绝对路径
                        +
                        + +
                        + +
                        + +
                        +
                        apiclient_cert.pem证书文件绝对路径
                        +
                        + +
                        + +
                        + +
                        +
                        必须为外网可访问的url,不能携带参数。公网域名必须为https
                        +
                        + + +
                        +
                        + + +
                        +
                        +
                        +
                        +
                        + +
                        +
                        + +
                        +
                        + 微信扫码支付演示 +
                        +
                        + +
                        + +
                        +
                        输入商品名称
                        +
                        +
                        + +
                        + +
                        +
                        填写支付金额
                        +
                        +
                        +
                        + +
                        +
                        +
                        +
                        +
                        +
                        +
                        +
                        +
                        +
                        + +
                        +
                        + +
                        +
                        + 微信支付结果查询 +
                        +
                        + +
                        + +
                        +
                        输入商户单号
                        +
                        + +
                        +
                        + +
                        +
                        +
                        +
                        +
                        + +
                        +
                        + +
                        +
                        + 微信支付退款操作 +
                        +
                        + +
                        + +
                        +
                        输入商户单号
                        +
                        +
                        + +
                        + +
                        +
                        填写退款金额,不能大于实际支付金额
                        +
                        +
                        +
                        + +
                        +
                        +
                        +
                        +
                        +
                        +
                        +
                        +
                        + + + + + + + \ No newline at end of file diff --git a/ss-admin/src/main/resources/templates/error/404.html b/ss-admin/src/main/resources/templates/error/404.html new file mode 100644 index 0000000..619e3ff --- /dev/null +++ b/ss-admin/src/main/resources/templates/error/404.html @@ -0,0 +1,96 @@ + + + + + + + + + 404 + + + + + + +
                        + ...404 这个网页还没开发好... +

                        {{ time }}

                        +

                        {{ date }}

                        +
                        + + + + + + diff --git a/ss-admin/src/main/resources/templates/error/500.html b/ss-admin/src/main/resources/templates/error/500.html new file mode 100644 index 0000000..8b7764a --- /dev/null +++ b/ss-admin/src/main/resources/templates/error/500.html @@ -0,0 +1,10 @@ + + + + + 500错误 + + + + + \ No newline at end of file diff --git a/ss-admin/src/main/resources/templates/error/error.html b/ss-admin/src/main/resources/templates/error/error.html new file mode 100644 index 0000000..b3c593b --- /dev/null +++ b/ss-admin/src/main/resources/templates/error/error.html @@ -0,0 +1,64 @@ + + + + + + + 错误页面 + + + + + +
                        +
                        + +
                        +
                        +
                        + +
                        +

                        404

                        +
                        页面不存在
                        + + + + +
                        +
                        + + \ No newline at end of file diff --git a/ss-admin/src/main/resources/templates/file/pdf.html b/ss-admin/src/main/resources/templates/file/pdf.html new file mode 100644 index 0000000..dd108ef --- /dev/null +++ b/ss-admin/src/main/resources/templates/file/pdf.html @@ -0,0 +1,26 @@ + + + + + 企业文件 + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/system/advanced/generator.html b/ss-admin/src/main/resources/templates/system/advanced/generator.html new file mode 100644 index 0000000..b1d2fb9 --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/advanced/generator.html @@ -0,0 +1,202 @@ + + + + + 代码生成 + + + + + +
                        +
                        + + +
                        +
                        +
                        + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/system/advanced/monitorServer.html b/ss-admin/src/main/resources/templates/system/advanced/monitorServer.html new file mode 100644 index 0000000..b296a10 --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/advanced/monitorServer.html @@ -0,0 +1,264 @@ + + + + + 系统监控 - 服务器监控 + + + + + + +
                        +
                        +
                        +
                        服务器信息
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + +
                        服务器名称服务器IP操作系统系统架构
                            
                        +
                        +
                        +
                        +
                        + +
                        +
                        +
                        +
                        CPU信息
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        属性
                        核心数
                        用户使用率
                        系统使用率
                        当前空闲率
                        +
                        +
                        +
                        +
                        +
                        +
                        内存信息
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        属性内存JVM
                        总内存
                        已用内存
                        剩余内存
                        使用率
                        +
                        +
                        +
                        +
                        + + +
                        +
                        +
                        +
                        Java虚拟机信息
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + + +
                        Java名称Java版本
                        安装路径启动时间
                        项目路径运行时长
                        +
                        +
                        +
                        +
                        + + +
                        +
                        +
                        +
                        磁盘信息
                        +
                        +
                        +
                        +
                        +
                        +
                        + + + + + + \ No newline at end of file diff --git a/ss-admin/src/main/resources/templates/system/index.html b/ss-admin/src/main/resources/templates/system/index.html new file mode 100644 index 0000000..fbfd734 --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/index.html @@ -0,0 +1,177 @@ + + + + + 后台管理系统1.0 + + + + + + + + + + + + + + + + +
                        + +
                        + + + +
                        + +
                        +
                        + + +
                          +
                        + + + + + +
                        +
                        + + +
                        + +
                        + + +
                        +
                        +
                        + + +
                        + + +
                        + +
                        + +
                        +
                          +
                        • +
                        +
                        +
                      • +
                      • +
                      • + +
                      • +
                        +
                        +
                        +
                        +
                        + +
                        +
                        + + + + + diff --git a/ss-admin/src/main/resources/templates/system/log/login.html b/ss-admin/src/main/resources/templates/system/log/login.html new file mode 100644 index 0000000..27f4779 --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/log/login.html @@ -0,0 +1,357 @@ + + + + + 登录日志 + + + + + + +
                        +
                        + +
                        + 搜索 +
                        +
                        +
                        + + +
                        + +
                        + + +
                        + +
                        + + +
                        + +
                        +
                        -
                        +
                        + +
                        +
                        + +
                        + + +
                        +
                        +
                        +
                        + + +
                        + +
                        +
                        + + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/system/log/request.html b/ss-admin/src/main/resources/templates/system/log/request.html new file mode 100644 index 0000000..c9b7481 --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/log/request.html @@ -0,0 +1,374 @@ + + + + + 操作日志 + + + + + + +
                        +
                        + +
                        + 搜索 +
                        +
                        +
                        + + +
                        + +
                        + + +
                        + +
                        +
                        -
                        +
                        + +
                        +
                        + +
                        + + +
                        +
                        +
                        +
                        + + +
                        + +
                        +
                        + + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/system/login.html b/ss-admin/src/main/resources/templates/system/login.html new file mode 100644 index 0000000..a415df5 --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/login.html @@ -0,0 +1,1024 @@ + + + + + + + + + + + + 领淘众创企业云盘 + + + + + + + + + + + + + +
                        + + + + + + + diff --git a/ss-admin/src/main/resources/templates/system/login1.html b/ss-admin/src/main/resources/templates/system/login1.html new file mode 100644 index 0000000..8b5a09b --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/login1.html @@ -0,0 +1,168 @@ + + + + + ExciteCMS - 后台登录 + + + + + + + + + + +
                        + +
                        + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/system/menu/add.html b/ss-admin/src/main/resources/templates/system/menu/add.html new file mode 100644 index 0000000..a667b0e --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/menu/add.html @@ -0,0 +1,283 @@ + + + + + 添加菜单 + + + + + + + + + + + + +
                        +
                        +
                        + +
                        + +
                        + + + + +
                        +
                        + + +
                        + +
                        + +
                        + +
                        +
                        + +
                        + +
                        + +
                        +
                        数值越大越靠前
                        +
                        +
                        + + +
                        + +
                        + +
                        + + +
                        +
                        + +
                        + +
                        + +
                        +
                        +
                        + + +
                        + +
                        + +
                        +
                        如:/system/menu/list
                        +
                        + + +
                        + +
                        + +
                        +
                        + + 如:system:menu:list +
                        +
                        + + +
                        + +
                        + + + + + 注:此操作设置点亮后不可逆! +
                        +
                        + +
                        + +
                        +
                        +
                        +
                        + + + + + \ No newline at end of file diff --git a/ss-admin/src/main/resources/templates/system/menu/edit.html b/ss-admin/src/main/resources/templates/system/menu/edit.html new file mode 100644 index 0000000..d348d5e --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/menu/edit.html @@ -0,0 +1,271 @@ + + + + + 编辑菜单 + + + + + + + + + + +
                        +
                        +
                        + + +
                        + +
                        + + + + +
                        +
                        + + +
                        + +
                        + +
                        + +
                        +
                        + +
                        + +
                        + +
                        +
                        数值越大越靠前
                        +
                        +
                        + + +
                        + +
                        + +
                        + + +
                        +
                        + +
                        + +
                        + +
                        +
                        +
                        + + +
                        + +
                        + +
                        +
                        如:/system/menu/list
                        +
                        + + +
                        + +
                        + +
                        +
                        + + 如:system:menu:list +
                        +
                        + + +
                        + +
                        + + + + + 注:此操作设置点亮后不可逆! +
                        +
                        +
                        + +
                        +
                        +
                        +
                        + + + + + + diff --git a/ss-admin/src/main/resources/templates/system/menu/index.html b/ss-admin/src/main/resources/templates/system/menu/index.html new file mode 100644 index 0000000..1df95e5 --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/menu/index.html @@ -0,0 +1,352 @@ + + + + + 菜单管理 + + + + + + +
                        +
                        +
                        + +
                        +
                        +
                        +
                        + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/system/role/add.html b/ss-admin/src/main/resources/templates/system/role/add.html new file mode 100644 index 0000000..d69b192 --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/role/add.html @@ -0,0 +1,188 @@ + + + + + 添加菜单 + + + + + + + + + + + +
                        +
                        +
                        + +
                        + +
                        + +
                        + +
                        +
                        +
                        + +
                        + +
                        + +
                        +
                        + +
                        + +
                        + +
                        +
                        如:admin
                        +
                        + +
                        + +
                        + +
                        + +
                        +
                        数值越大越靠前
                        +
                        +
                        + +
                        + +
                        + +
                        +
                        注:此操作设置点亮后不可逆!
                        +
                        + +
                        + +
                        + +
                        +
                        + +
                        + +
                        +
                        +
                        +
                        + + + + + diff --git a/ss-admin/src/main/resources/templates/system/role/authUser.html b/ss-admin/src/main/resources/templates/system/role/authUser.html new file mode 100644 index 0000000..2b11c2d --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/role/authUser.html @@ -0,0 +1,261 @@ + + + + + 授权角色 + + + + + + +
                        +
                        +
                        +
                        + 角色信息 +
                        +
                        + +
                        + +
                        + +
                        +
                        + +
                        + +
                        + +
                        +
                        +
                        + +
                        + 已授权用户列表 +
                        + +
                        + + +
                        +
                        +
                        + + + + + + + diff --git a/ss-admin/src/main/resources/templates/system/role/edit.html b/ss-admin/src/main/resources/templates/system/role/edit.html new file mode 100644 index 0000000..da341e3 --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/role/edit.html @@ -0,0 +1,189 @@ + + + + + 编辑菜单 + + + + + + + + + + + +
                        +
                        +
                        + + +
                        + +
                        + +
                        + +
                        +
                        +
                        + + +
                        + +
                        + +
                        +
                        + + +
                        + +
                        + +
                        +
                        + 如:admin +
                        +
                        + + +
                        + +
                        + +
                        + +
                        +
                        数值越大越靠前
                        +
                        +
                        + + +
                        + +
                        + +
                        +
                        + 注:此操作设置点亮后不可逆! +
                        +
                        + + +
                        + +
                        + +
                        +
                        + +
                        + +
                        +
                        +
                        +
                        + + + + + diff --git a/ss-admin/src/main/resources/templates/system/role/index.html b/ss-admin/src/main/resources/templates/system/role/index.html new file mode 100644 index 0000000..87d58ac --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/role/index.html @@ -0,0 +1,367 @@ + + + + + 角色管理 + + + + + +
                        +
                        + +
                        + 搜索 +
                        +
                        + +
                        + +
                        + +
                        + +
                        + +
                        +
                        + +
                        + + +
                        +
                        +
                        +
                        + +
                        +
                        +
                        + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/system/user/add.html b/ss-admin/src/main/resources/templates/system/user/add.html new file mode 100644 index 0000000..925b17e --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/user/add.html @@ -0,0 +1,235 @@ + + + + + 添加用户 + + + + + + + + + + + +
                        +
                        +
                        + +
                        + +
                        + +
                        + +
                        +
                        + +
                        + +
                        + +
                        +
                        +
                        + +
                        + +
                        + +
                        +
                        后台登录账号
                        +
                        + +
                        + +
                        + +
                        +
                        后台登录账号
                        +
                        + +
                        + +
                        + +
                        + +
                        +
                        + +
                        +
                        + +
                        + +
                        + +
                        +
                        +
                        + +
                        + +
                        +
                          +
                          +
                          + +
                          + +
                          + +
                          +
                          + +
                          + +
                          +
                          +
                          +
                          + + + + + + + diff --git a/ss-admin/src/main/resources/templates/system/user/authRole.html b/ss-admin/src/main/resources/templates/system/user/authRole.html new file mode 100644 index 0000000..96cfc0b --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/user/authRole.html @@ -0,0 +1,117 @@ + + + + + 分配角色 + + + + + + + + +
                          +
                          + +
                          +
                          + 用户信息 +
                          + +
                          + +
                          + +
                          + +
                          +
                          + +
                          + +
                          + +
                          +
                          +
                          + +
                          + 角色列表 +
                          + +
                          + + +
                          +
                          +
                          + + + + + \ No newline at end of file diff --git a/ss-admin/src/main/resources/templates/system/user/edit.html b/ss-admin/src/main/resources/templates/system/user/edit.html new file mode 100644 index 0000000..32b5b2d --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/user/edit.html @@ -0,0 +1,136 @@ + + + + + 编辑用户 + + + + + + + + + + + +
                          +
                          +
                          + + +
                          + +
                          + +
                          + +
                          +
                          + +
                          + +
                          + +
                          +
                          +
                          + +
                          + +
                          + +
                          +
                          后台登录账号
                          +
                          + +
                          + +
                          + +
                          +
                          后台登录账号
                          +
                          + +
                          + +
                          + +
                          +
                          + +
                          + +
                          +
                          +
                          +
                          + + + + + diff --git a/ss-admin/src/main/resources/templates/system/user/index.html b/ss-admin/src/main/resources/templates/system/user/index.html new file mode 100644 index 0000000..be4ef82 --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/user/index.html @@ -0,0 +1,429 @@ + + + + + 用户管理 + + + + + +
                          +
                          + +
                          + 搜索 +
                          +
                          +
                          + +
                          + +
                          + +
                          + +
                          +
                          + +
                          + + +
                          +
                          +
                          +
                          + +
                          +
                          +
                          + + + + + + + + + + + + diff --git a/ss-admin/src/main/resources/templates/system/userCenter/password.html b/ss-admin/src/main/resources/templates/system/userCenter/password.html new file mode 100644 index 0000000..c206eef --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/userCenter/password.html @@ -0,0 +1,70 @@ + + + + + 修改密码 + + + + + + + +
                          +
                          + +
                          +
                          + +
                          + + 填写自己账号的旧的密码。 +
                          +
                          + +
                          + +
                          + +
                          +
                          +
                          + +
                          + +
                          +
                          + +
                          +
                          + +
                          +
                          +
                          +
                          +
                          + + + + + diff --git a/ss-admin/src/main/resources/templates/system/userCenter/setting.html b/ss-admin/src/main/resources/templates/system/userCenter/setting.html new file mode 100644 index 0000000..cd56b12 --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/userCenter/setting.html @@ -0,0 +1,84 @@ + + + + + 基本资料修改 + + + + + + + + +
                          +
                          + +
                          +
                          + 我的基本资料 +
                          + +
                          + +
                          + + 请填写自己的账号名称。 +
                          +
                          + +
                          + +
                          + + 请填写登录账号! +
                          +
                          + +
                          + +
                          + +
                          +
                          + +
                          + +
                          + +
                          +
                          + +
                          +
                          + +
                          +
                          +
                          +
                          +
                          + + + + + diff --git a/ss-admin/src/main/resources/templates/system/welcome.html b/ss-admin/src/main/resources/templates/system/welcome.html new file mode 100644 index 0000000..8605136 --- /dev/null +++ b/ss-admin/src/main/resources/templates/system/welcome.html @@ -0,0 +1,215 @@ + + + + + 首页 + + + + + + + + + + +
                          +
                          +
                          + +
                          + +
                          + + +
                          + +
                          + +
                          +
                          +
                          置顶文件
                          +
                          + +
                          +
                          +
                          +
                          +
                          + + +
                          + + + +
                          +
                          文件动态
                          +
                          + + + +
                          +
                          + +
                          +
                          +
                          +
                          + + + + + + diff --git a/ss-admin/src/test/java/com/zxdmy/excite/admin/CodeGenerator.java b/ss-admin/src/test/java/com/zxdmy/excite/admin/CodeGenerator.java new file mode 100644 index 0000000..e511632 --- /dev/null +++ b/ss-admin/src/test/java/com/zxdmy/excite/admin/CodeGenerator.java @@ -0,0 +1,186 @@ +package com.zxdmy.excite.admin; + + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; + +import java.util.*; + +/** + *

                          + * MP 代码生成器 + *

                          + * + * @author 沈松 + * @since 2021-09-01 0001 18:51 + */ +public class CodeGenerator { + /** + *

                          + * 读取控制台内容 + *

                          + */ + private static String scanner(String tip) { + Scanner scanner = new Scanner(System.in); + StringBuilder help = new StringBuilder(); + help.append("请输入").append(tip).append(":"); + System.out.println(help.toString()); + if (scanner.hasNext()) { + String ipt = scanner.next(); + if (StringUtils.isNotBlank(ipt)) { + return ipt; + } + } + throw new MybatisPlusException("请输入正确的" + tip + "!"); + } + + /** + * 执行此处 + */ + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 项目根目录 + String projectPath = System.getProperty("user.dir"); + System.out.println(projectPath); + // D:\IdeaProjects\2021_ExciteCMS\ExciteCMS + + String projectPack = "/src/main/java/com/zxdmy/excite/"; + + // 输入模块名 + String moduleName = scanner("模块名(系统端建议system,客户端建议client)"); + + // 六类文件的保存路径设置,可以根据自己项目的实际情况修改 + String entityPath = projectPath + "/ss-" + moduleName + projectPack + moduleName + "/entity/"; + String servicePath = projectPath + "/ss-" + moduleName + projectPack + moduleName + "/service/"; + String serviceImplPath = projectPath + "/ss-" + moduleName + projectPack + moduleName + "/service/impl/"; + String mapperPath = projectPath + "/ss-" + moduleName + projectPack + moduleName + "/mapper"; + String mapperXmlPath = projectPath + "/ss-" + moduleName + "/src/main/resources/mapper/"; + + String controllerPath = projectPath + "/ss-admin/src/main/java/com/zxdmy/excite/admin/controller/" + moduleName + "/"; + + // 1. 全局配置 + GlobalConfig globalConfig = new GlobalConfig(); + globalConfig + // TODO 代码生成的目录 +// .setOutputDir(projectPath + "/src/main/java") + .setAuthor("沈松") // TODO 修改项目作者 + .setOpen(false) // 是否打开输出目录 + .setIdType(IdType.ASSIGN_ID) // 主键策略 + .setFileOverride(false) // TODO 是否覆盖已有文件 + .setBaseResultMap(true) // 是否开启 BaseResultMap(XML文件) + .setBaseColumnList(true); // 是否开启 baseColumnList(XML文件) +// .setServiceName(""); + + //把全局配置添加到代码生成器主类 + mpg.setGlobalConfig(globalConfig); + + // 2. 数据源配置 + DataSourceConfig dsConfig = new DataSourceConfig(); + dsConfig + // 数据库链接URL + .setUrl("jdbc:mysql://localhost:3306/db_excite_cms?useUnicode=true&serverTimezone=UTC&useSSL=false&characterEncoding=utf8") + // .setSchemaName("public") //数据库 schema name + .setDbType(DbType.MYSQL) // 数据库类型 + // 数据库驱动,MySQL5.X:com.mysql.jdbc.Driver + .setDriverName("com.mysql.cj.jdbc.Driver") + .setUsername("chen") // TODO 数据库用户名 + .setPassword("123456"); // TODO 数据库密码 + + // 把数据源配置添加到代码生成器主类 + mpg.setDataSource(dsConfig); + + // 3. 包配置 + PackageConfig pkConfig = new PackageConfig(); + // 添加这个后 会以一个实体为一个模块 比如user实体会生成user模块 每个模块下都会生成三层 +// pkConfig.setModuleName(scanner("模块名(系统端建议system,客户端建议client)")); + // TODO 父包名。如果为空,将下面子包名必须写写完整的包路径。如果不为空,只需写子包名。 + pkConfig.setParent("com.zxdmy.excite") + // TODO 子包名 + .setEntity(moduleName + ".entity") // 实体类 Entity包名 + .setXml("mapper") // 持久层 Mapper.xml 包名 + .setMapper(moduleName + ".mapper") // 持久层 Mapper.java 包名 + .setService(moduleName + ".service") // 服务层 Service.java 包名 + .setServiceImpl(moduleName + ".service.impl") // 服务层 ServiceImpl.java 包名 + .setController("admin.controller." + moduleName); // 控制层 Controller.java 包名 + + //设置自定义输出目录(分布式项目使用) + Map pathInfo = new HashMap<>(); + + pathInfo.put(ConstVal.ENTITY_PATH, entityPath); + pathInfo.put(ConstVal.MAPPER_PATH, mapperPath); +// pathInfo.put(ConstVal.XML_PATH, mapperXmlPath); + pathInfo.put(ConstVal.SERVICE_PATH, servicePath); + pathInfo.put(ConstVal.SERVICE_IMPL_PATH, serviceImplPath); + pathInfo.put(ConstVal.CONTROLLER_PATH, controllerPath); + + pkConfig.setPathInfo(pathInfo); + + // 把包配置添加到代码生成器主类 + mpg.setPackageInfo(pkConfig); + + // 4. 自定义配置【这是MyBatisPlus 3.x 新增的】 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + // to do nothing + } + }; +// 如果模板引擎是 freemarker + String templatePath = "/templates/mapper.xml.ftl"; +// 如果模板引擎是 velocity +// String templatePath = "/templates/mapper.xml.vm"; + +// 自定义输出配置 + List focList = new ArrayList<>(); + // 自定义配置会被优先输出 + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + // 自定义输出文件名称,如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! +// return projectPath + "/ss-" + moduleName + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; + return mapperXmlPath + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; + } + }); + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + // 配置模板 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setXml(null); + mpg.setTemplate(templateConfig); + + // 5. 策略配置(数据库表配置) + StrategyConfig strategyConfig = new StrategyConfig(); + + strategyConfig + .setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略:下划线转驼峰 + .setColumnNaming(NamingStrategy.underline_to_camel) // 数据库表字段映射到实体的命名策略:下划线转驼峰 + .setEntityLombokModel(true) // 实体是否为lombok模型(默认 false) + // .setSuperEntityClass("com.zxdmy.wx.mp.wechat.common.BaseEntity") // 设置实体类的父类(如果启用,实体类会增加BaseEntity的继承) + .setSuperControllerClass("com.zxdmy.excite.common.base.BaseController") // 设置控制类的父类(如果启用,控制类会增加BaseController的继承) + // 提示输入生成的表名 + .setInclude(scanner("表全名,多个英文名称,使用英文逗号间隔").split(",")) + // .setExclude("***") // 需要排除的表名,允许正则表达式 + // .setSuperEntityColumns("id"); // 实体类主键名称设置(如果启用,生成的实体类没有此字段) + // .setTablePrefix(pc.getModuleName() + "_") // 表前缀符(如果启用,生成的所有文件名没有此前缀) + .setControllerMappingHyphenStyle(true); // 驼峰转连字符 + + // 把数据库配置添加到代码生成器主类 + mpg.setStrategy(strategyConfig); + + // 在代码生成器主类上配置模板引擎,选择 freemarker 引擎需要指定如下加,注意 pom 依赖必须有! + mpg.setTemplateEngine(new FreemarkerTemplateEngine()); + // 开始执行 + mpg.execute(); + } +} diff --git a/ss-admin/src/test/java/com/zxdmy/excite/admin/ExciteAdminApplicationTests.java b/ss-admin/src/test/java/com/zxdmy/excite/admin/ExciteAdminApplicationTests.java new file mode 100644 index 0000000..4dfe9fb --- /dev/null +++ b/ss-admin/src/test/java/com/zxdmy/excite/admin/ExciteAdminApplicationTests.java @@ -0,0 +1,13 @@ +package com.zxdmy.excite.admin; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class ExciteAdminApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/ss-admin/src/test/java/com/zxdmy/excite/admin/RsaTest.java b/ss-admin/src/test/java/com/zxdmy/excite/admin/RsaTest.java new file mode 100644 index 0000000..f0d96ba --- /dev/null +++ b/ss-admin/src/test/java/com/zxdmy/excite/admin/RsaTest.java @@ -0,0 +1,31 @@ +package com.zxdmy.excite.admin; + +import cn.hutool.crypto.asymmetric.RSA; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +/** + * RAS加密公钥、私钥生成测试类 + * + * @author 沈松 + * @since 2022/1/28 23:20 + */ +@SpringBootTest +public class RsaTest { + + @Test + void createKey() { + // 定义对象 + RSA rsa = new RSA(); + + //获得私钥 + System.out.println("私钥如下:"); + String privateKey = rsa.getPrivateKeyBase64(); + System.out.println(privateKey); + + //获得公钥 + System.out.println("公钥如下:"); + String publicKey = rsa.getPublicKeyBase64(); + System.out.println(publicKey); + } +} diff --git a/ss-admin/src/test/java/com/zxdmy/excite/admin/SmartDocGenerator.java b/ss-admin/src/test/java/com/zxdmy/excite/admin/SmartDocGenerator.java new file mode 100644 index 0000000..8c3570d --- /dev/null +++ b/ss-admin/src/test/java/com/zxdmy/excite/admin/SmartDocGenerator.java @@ -0,0 +1,60 @@ +package com.zxdmy.excite.admin; + +import com.power.doc.builder.HtmlApiDocBuilder; +import com.power.doc.constants.DocGlobalConstants; +import com.power.doc.constants.DocLanguage; +import com.power.doc.model.ApiConfig; +import com.power.doc.model.ApiErrorCode; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; + +import java.util.ArrayList; +import java.util.List; + +/** + *

                          + * SmartDoc 接口文档生成工具 + *

                          + * + * @author 沈松 + * @since 2021-09-10 0010 23:55 + */ + +@SpringBootTest +public class SmartDocGenerator { + + @Test + public void generatorDoc() { + // 定义API配置对象 + ApiConfig config = new ApiConfig(); + // 设置项目根路径,将与控制类的路径对接 + config.setServerUrl("http://localhost:8181"); + // 当AllInOne为true,则将所有接口保存至一个文档中 + config.setAllInOne(true); + // 生成HTML文档保存路径。 + config.setOutPath(DocGlobalConstants.HTML_DOC_OUT_PATH); + // Smart-doc提供的常量HTML_DOC_OUT_PATH,是将文档保存至项目的 src/main/resources/static/doc 路径下。 + // 保存至此路径的好处是,生成文档之后,重新运行项目,访问 http://localhost:8181/doc/index.html 可以访问接口文档。 + + config.setLanguage(DocLanguage.CHINESE); + // 设置接口包扫描路径过滤,默认扫描所有的接口类。多个包名用英文逗号隔开。 + // config.setPackageFilters("com.zxdmy.excite.user"); + + + // 设置错误码列表(即遍历自己的错误码列表,赋值给接口文档) + List errorCodeList = new ArrayList<>(); + // 这里先使用HttpStatus的状态码 + for (HttpStatus httpStatus : HttpStatus.values()) { + ApiErrorCode errorCode = new ApiErrorCode(); + errorCode.setValue(String.valueOf(httpStatus.value())).setDesc(httpStatus.getReasonPhrase()); + errorCodeList.add(errorCode); + } + + // 设置错误码。如果不需要显示状态码,则不需要设置。 + config.setErrorCodes(errorCodeList); + // 生成HTML格式文档 + HtmlApiDocBuilder.buildApiDoc(config); + + } +} diff --git a/ss-admin/src/test/java/com/zxdmy/excite/admin/component/AlipayTest.java b/ss-admin/src/test/java/com/zxdmy/excite/admin/component/AlipayTest.java new file mode 100644 index 0000000..e9f7008 --- /dev/null +++ b/ss-admin/src/test/java/com/zxdmy/excite/admin/component/AlipayTest.java @@ -0,0 +1,95 @@ +package com.zxdmy.excite.admin.component; + +import cn.hutool.core.util.IdUtil; +import com.alipay.easysdk.payment.common.models.AlipayTradeQueryResponse; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.zxdmy.excite.component.alipay.AlipayService; +import com.zxdmy.excite.component.bo.AlipayBO; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.Arrays; + +/** + *

                          + * 描述 + *

                          + * + * @author 沈松 + * @since 2022/1/11 11:42 + */ +@SpringBootTest +public class AlipayTest { + + + @Autowired + private AlipayService alipayService; + + @Test + void saveTest() { + AlipayBO alipayBO = new AlipayBO() + // 基本信息 + .setAppId("20210058") + .setAppName("沙箱测试应用") + .setMerchantPrivateKey("MIIEvAUpFY8wf6zJVf22u2kNomfr6+amzTzYE31j47jpOSNnB01zv8jiEFBWvGHLqeFU3eNpsen2HUbbP7drl58z9RhliJIamZ1+UXR4vV+3pzzd32oXUSUId35fjEYGiwPwy0LAqXn2kFD7Txk4kiw5sP1xdv4YIEEGWHrOtN9fznt6vNqY9BWyZCDMJ46SqWBqHY7XVemP991JgDa1HdFVsy6SnTMChhDLGcR3ND0+EdsYYv6MeNV89xdeakmXNQUFZ3KPFYnBhMnY01u4Gb6lZAZQA2zrhIS1CSERCsRLyqd/DmX5hX3U7JAgMBAAECggEAXxat7xpuR9XhoHHuCvyA1AhHLlu3Zvsz9xbzzi0G8gpcYDgno+vc86yrwtPgWb00Ef5ajhOL0fiFkn8Hpr3S4QqaxFSgnu5i5epV8FhAJg2xTuzzeiN7hFg64UG2ZH0bBW32qCPaPl0kS6LrlFkhKNh6LmUFotD6yzyBeK8U6BWEIq07KOKB0nW16duQ8BDj9BwLcyOjYLCIUccK0Z3+N5KVr2aJev6LZcNwZuXhdk4s1tGnX2dn9ATGi5xNFBDBS0nnCdAYnIYddNbozWJvSqqHJ0igaSOmO14dZBnpElY4vA3zXTsglV3A6BjMq4ahjG2crHA3ZQvgFXZ2QCY7gQKBgQDc19nWcQHJB3mvEg1DAdXZ5VBoy1Yo2sRAsjzffS7dUcPfEEod1VTgpxolv8awNxmge1wUYhZfGEb+cJacmYFTjyxKzUQreCKaIwqlKd+TsCLsviDvGzsMcKmhWe+JAAXZnTtsv/aVCGzN8ziOulDAkD7KRbyp2Uf2ekOWTEDAOQKBgQDBb8DNCY7pDU9/Dz11RMA0QOdhpWfvmv5ysYhq9wnTcmad3ySJvj83+Bf/OsASqcDY9w8mVKoVSVFhIfAH5ML1f5jSWkGSxyZQnQoh1pBBbG7bUIanTnsDy7hch/iGk/N9UN/kFak6fLBHVlnI+qfniAcJiNy03FaxwclMKg7jEQKBgCxybO9R0zAohv8LPQwNZIL0Ohi9Q9v5G6KBvOqmATad7DQKzT/v3aNRPlv2mwCANnIsIb4gd6wv8Kno8wcVhgfROvLbGSs+hIhNISlYohzRSFYpdetpqZq5WgqVVTZXgNXpZTpf8DrSdUOF/g4LxZDb9ycyneP5TRh4Rv4K3sVRAoGATVoB8Dv1QO6IrpeKjP1cGsklfZ+mK2OAgp7JnXSCImLp9BGKS+ae4yO7fN2idxQYwOoyzbInfXGfMEdg89cfuwo2M0/STv6CLNRPe+6QKwlQXzUZU4gHmyH47E+XK0G4qZEQpuWekXvRBgXay4qoX+a+YaqwD0bZCCYk9+cNovECgYBnJ+ez1B4YcADmNruPhKLiQ0/RkkuaGl8+CqslGhXJ4rqlS9u7uA66EDD3A5Fn1DX89i3wMYIVU0M8PCC2VBz8q4KdIPzRVe+NcFVTdOvDqr4dxrDhpu//HKQJFpwtildby2/MArP7HGDDI6oVhzd70ij/TzprmsRMvxC315+TJA==") + // 证书模式 + .setMerchantCertPath("E:\\支付宝支付\\appCertPublicKey_2021000117696058.crt") + .setAlipayCertPath("E:\\支付宝支付\\alipayCertPublicKey_RSA2.crt") + .setAlipayRootCertPath("E:\\支付宝支付\\alipayRootCert.crt") + // 接口内容加密方式 + .setEncryptKey("cAikHtKWeTYvCvw==") + // 注意:沙箱环境下,请配置此网关!正式环境可忽略! + .setGatewayHost("openapi.alipaydev.com"); + alipayService.saveConfig(alipayBO); + } + + /** + * 支付测试 + */ + @Test + void payTest() { + String outTradeNo = IdUtil.simpleUUID(); + System.out.println(outTradeNo); + System.out.println(alipayService.pay(null, "page", "测试商品名称", outTradeNo, "6666", "https://www.zxdmy.com", "https://www.zxdmy.com")); + } + + /** + * 查询测试 + */ + @Test + void queryTest() { + System.out.println(Arrays.toString(alipayService.queryPay(null, "2022011122001428220502263620", "f9bd5856549b47b684284816ac324f8c"))); + // [Y, 2022011122001428220502263620, f9bd5856549b47b684284816ac324f8c, TRADE_SUCCESS, 666.00, 2088622956328227, aev***@sandbox.com] + } + + /** + * 退款测试 + */ + @Test + void refundTest() { + System.out.println( + Arrays.toString(alipayService + .refund(null, "2022011122001428220502263620", null, "20.00", "不想要了"))); + // [Y, 2022011122001428220502263620, f9bd5856549b47b684284816ac324f8c, da7486bdbfe644c48c815af84af423cd, 10.00] + // [Y, 2022011122001428220502263620, f9bd5856549b47b684284816ac324f8c, 1dde059885134947948197f3b3268cf0, 30.00] + } + + /** + * 查询退款测试 + */ + @Test + void queryRefundTest() { + System.out.println(Arrays.toString(alipayService.queryRefund( + null, + "f9bd5856549b47b684284816ac324f8c0", + null))); + // [Y, 2022011122001428220502263620, f9bd5856549b47b684284816ac324f8c, da7486bdbfe644c48c815af84af423cd, 666.00, 10.00, null] + // [Y, 2022011122001428220502263620, f9bd5856549b47b684284816ac324f8c, 1dde059885134947948197f3b3268cf0, 666.00, 20.00, null] + } + + @Test + void downLoadTest() { + System.out.println(Arrays.toString(alipayService.downloadBill(null, "2021-12"))); + } +} diff --git a/ss-admin/src/test/java/com/zxdmy/excite/admin/component/AliyunSmsTest.java b/ss-admin/src/test/java/com/zxdmy/excite/admin/component/AliyunSmsTest.java new file mode 100644 index 0000000..71f1b84 --- /dev/null +++ b/ss-admin/src/test/java/com/zxdmy/excite/admin/component/AliyunSmsTest.java @@ -0,0 +1,78 @@ +package com.zxdmy.excite.admin.component; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.zxdmy.excite.component.aliyun.AliyunSmsService; +import com.zxdmy.excite.component.bo.AliyunSmsBO; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.HashMap; +import java.util.Map; + + +/** + *

                          + * 阿里云短信服务测试类 + *

                          + * + * @author 沈松 + * @since 2022/1/3 16:40 + */ +@SpringBootTest +public class AliyunSmsTest { + + + @Autowired + private AliyunSmsService aliyunSmsService; + + /** + * 保存配置信息测试 + * + * @throws JsonProcessingException 异常 + */ + @Test + void saveTest() throws JsonProcessingException { + // 初始数据定义 + AliyunSmsBO aliyunSmsVO = new AliyunSmsBO() + .setKey("aliyunSms01") + .setAccessKeyId("********") + .setAccessKeySecret("*******") + .setSignName("中国移动") + .setTemplateCode("SMS_18*****22") + .setTemplateParam(new String[]{"username", "filename", "password"}); + aliyunSmsService.saveAliyunSmsConfig(aliyunSmsVO); + } + + /** + * 读取配置信息测试 + */ + @Test + void getTest() { + AliyunSmsBO aliyunSmsVO = aliyunSmsService.getAliyunSmsConfig("aliyunSms01"); + System.out.println(aliyunSmsVO); + + } + + /** + * 单个发送测试 + */ + @Test + void sendTest() { + Boolean result = aliyunSmsService.sendSmsOne("aliyunSms01", "15900889977", new String[]{"张三", "9月发票", "123456"}); + } + + /** + * 批量发送测试 + */ + @Test + void sendBatchTest() { + Map map = new HashMap<>(); + map.put("15900889977", new String[]{"张三", "9月发票", "123456"}); + map.put("18800889977", new String[]{"李四", "10月发票", "234567"}); + map.put("18900889977", new String[]{"王五", "11月发票", "345678"}); + Map mapResult = aliyunSmsService.sendSmsBatch("aliyunSms01", map); + } + + +} diff --git a/ss-admin/src/test/java/com/zxdmy/excite/admin/component/WeChatPayTest.java b/ss-admin/src/test/java/com/zxdmy/excite/admin/component/WeChatPayTest.java new file mode 100644 index 0000000..4bd87ff --- /dev/null +++ b/ss-admin/src/test/java/com/zxdmy/excite/admin/component/WeChatPayTest.java @@ -0,0 +1,68 @@ +package com.zxdmy.excite.admin.component; + +import cn.hutool.core.lang.UUID; +import cn.hutool.core.util.IdUtil; +import cn.hutool.crypto.SecureUtil; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderResult; +import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderV3Result; +import com.github.binarywang.wxpay.exception.WxPayException; +import com.zxdmy.excite.component.bo.WeChatPayBO; +import com.zxdmy.excite.component.wechat.WeChatPayService; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +/** + * 微信支付测试类 + * + * @author 沈松 + * @since 2022/1/10 16:26 + */ +@SpringBootTest +public class WeChatPayTest { + + @Autowired + private WeChatPayService weChatPayService; + + @Test + void saveTest() throws JsonProcessingException { + WeChatPayBO weChatPayBO = new WeChatPayBO(); + weChatPayBO.setAppId("") + .setMchId("") + .setMchKey("") + .setApiV3Key("") + .setKeyPath("E:\\微信支付\\Cert\\apiclient_cert.p12") + .setPrivateKeyPath("E:\\微信支付\\Cert\\apiclient_key.pem") + .setPrivateCertPath("E:\\微信支付\\Cert\\apiclient_cert.pem") + .setNotifyUrl("https://demo.zxdmy.com/notify"); + if (weChatPayService.saveConfig(weChatPayBO)) + System.out.println("成功!"); + + } + + @Test + void getTest() { + System.out.println(weChatPayService.getConfig()); + } + + @Test + void unifiedOrderTest2() throws WxPayException { + String result = weChatPayService.pay( + null, "jsapi", "商品标题", IdUtil.simpleUUID(), 1, "od0Pf5yi7sdBXm95fT786tdqtLgA" + ); + System.out.println(result); + } + + @Test + void queryTest() { +// 375f1b3a8f3f4f2aa6f086575f168096 + // 4200001322202201105842754907 + System.out.println(weChatPayService.query(null, "4200001322202201105842754907", null)); + } + + @Test + void refundTest() throws WxPayException { + System.out.println(weChatPayService.refund(null, "a4d798f07f8e4304bc0023e6ad4d3c5a", IdUtil.simpleUUID(), 1, 1)); + } +} diff --git a/ss-admin/src/test/java/com/zxdmy/excite/admin/service/IGlobalConfigServiceTest.java b/ss-admin/src/test/java/com/zxdmy/excite/admin/service/IGlobalConfigServiceTest.java new file mode 100644 index 0000000..9beabc4 --- /dev/null +++ b/ss-admin/src/test/java/com/zxdmy/excite/admin/service/IGlobalConfigServiceTest.java @@ -0,0 +1,71 @@ +package com.zxdmy.excite.admin.service; + +import com.qiniu.storage.model.FileInfo; +import com.zxdmy.excite.component.qiniu.QiniuOssService; +import com.zxdmy.excite.component.bo.QiniuOssBO; +import com.zxdmy.excite.common.service.IGlobalConfigService; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.List; + +/** + *

                          + * 描述 + *

                          + * + * @author 沈松 + * @since 2022/1/3 16:40 + */ +@SpringBootTest +public class IGlobalConfigServiceTest { + + @Autowired + private IGlobalConfigService componentConfigService; + + @Autowired + private QiniuOssService qiniuOssService; + +// @Test +// void saveTest() { +// // 初始数据定义 +// QiniuVO qiniuEntity = new QiniuVO(); +// qiniuEntity.setAccessKey("8bI0GWOa8888888888"); +// qiniuEntity.setSecretKey("WzYdBI8FL9999999999999999999"); +// qiniuEntity.setDomain("666.hd-bkt.clouddn.com"); +// qiniuEntity.setBucket("test-spring"); +// qiniuEntity.setRegion("z0"); +// qiniuEntity.setProtocol("http"); +// +// try { +// componentConfigService.save("qiniu", "qiniuOss", qiniuEntity, true); +// } catch (JsonProcessingException e) { +// e.printStackTrace(); +// } +// } + + @Test + void getTest() { + // 初始数据定义s + QiniuOssBO qiniuEntity = new QiniuOssBO(); + + qiniuEntity = (QiniuOssBO) componentConfigService.get("qiniu", "qiniuOss", qiniuEntity); + + System.out.println(qiniuEntity); + } + + @Test + void getList() { + List fileInfoList = qiniuOssService.getQiniuFileListAll("", ""); + for (FileInfo fileInfo : fileInfoList) { + System.out.println(fileInfo); + } + } + + @Test + void testtt() { + String url = qiniuOssService.getDownloadUrl("audio/song.mp3", "这是一首歌曲.mp3", 3600L); + System.out.println(url); + } +} diff --git a/ss-admin/src/test/java/com/zxdmy/excite/admin/service/ISysMenuServiceTest.java b/ss-admin/src/test/java/com/zxdmy/excite/admin/service/ISysMenuServiceTest.java new file mode 100644 index 0000000..1a303f7 --- /dev/null +++ b/ss-admin/src/test/java/com/zxdmy/excite/admin/service/ISysMenuServiceTest.java @@ -0,0 +1,44 @@ +package com.zxdmy.excite.admin.service; + +import com.zxdmy.excite.system.entity.SysMenu; +import com.zxdmy.excite.system.mapper.SysMenuMapper; +import com.zxdmy.excite.system.service.ISysMenuService; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.List; + +/** + *

                          + * 描述 + *

                          + * + * @author 沈松 + * @since 2021-09-23 0023 20:05 + */ +@SpringBootTest +class ISysMenuServiceTest { + + @Autowired + private ISysMenuService menuService; + + @Autowired + private SysMenuMapper menuMapper; + + @Test + void deleteTest() { + Integer id = null; + menuService.deleteMenu(id); + } + + @Test + void selectTest() { + Integer id = 10000; + List sysMenus = menuMapper.selectMenusByUserId(id, 0); + System.out.println(sysMenus); + + } + + +} diff --git a/ss-admin/src/test/java/com/zxdmy/excite/admin/service/ISysUserServiceTest.java b/ss-admin/src/test/java/com/zxdmy/excite/admin/service/ISysUserServiceTest.java new file mode 100644 index 0000000..e30cc59 --- /dev/null +++ b/ss-admin/src/test/java/com/zxdmy/excite/admin/service/ISysUserServiceTest.java @@ -0,0 +1,250 @@ +package com.zxdmy.excite.admin.service; + +import cn.dev33.satoken.SaManager; +import cn.dev33.satoken.stp.StpLogic; +import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import cn.hutool.crypto.asymmetric.ECIES; +import cn.hutool.crypto.asymmetric.KeyType; +import cn.hutool.crypto.asymmetric.RSA; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.power.common.util.RSAUtil; +import com.zxdmy.excite.framework.oshi.Server; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.mapper.SysUserMapper; +import com.zxdmy.excite.system.service.ISysUserService; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.util.DigestUtils; + +import java.security.KeyPair; +import java.security.PublicKey; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + *

                          + * 描述 + *

                          + * + * @author 沈松 + * @since 2021-09-01 0001 19:19 + */ +@SpringBootTest +class ISysUserServiceTest { + + @Autowired + private SysUserMapper userMapper; + + @Autowired + private ISysUserService userService; + + + @Test + void ServerTest() throws Exception { + Server server = new Server(); + server.copyTo(); + System.out.println(server); + } + + /** + * 生成密钥对 + */ + @Test + void RSA() { + + + String en = "EH5BLHO6HQGERUoJGzJxE4rX8SRC5j9fDkgN2lu7sSWHv5fHpIjg9Mct6Qbe3NO9nUlmpjsb0j+veiebK3g5so8EXkM71uUvCiq3zVX0hrLOWFBIi9/ikzrXFkxtFLfUIVhchuRncozQTZOux7QyOTBPFUdR2s3A8A80fWLZkfg="; + String PRIVATE_KEY = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALwcyvYIGmhk+be320JWWsq1OYjiM0lzv8eHGMgSIOMLxzM/g9X7jguNe8thxJXR/CLqcTgsfZzk8E8Sc9+qnSDxNl5f5tga93vRxd5713zAeAGqLiTQnRffdzRmdbsmu5+0/K8mj056VhKh8FdBNzAj7e4iX9i+uBBG/oDmZbTVAgMBAAECgYEAmgNU5NTDkj9B+Pnt6UU8doSjw3+3j+bV2K2yS3QUOvAUus/Ax7x6ktjWxzCXvDY9IfUil2RNv9vtKEAqYLCWjc+lf8PV/yH1b7NEgyeAPBXtAJRoOnmYL2bdPW92kP9KgxJruF6Dz/C5AmMOncsvq8ABD+9Darn4p8dwj2ZC4O0CQQDf/AHmZsQokEItfCy4mHS9UbxbfIhEUv1ApPh/+Sr7NkJkHWYCtBQo+8jKO6zurAZQgWBPD1XX2UE4R+VIiZazAkEA1wAqtMvGhccyRZr+6kpkpDIa8+9jOE+nGUzqTDvgCID6as8AzOONFVVK6m/UUqkhcJ8Qu1pF36BGojy5BX2KVwJBAJSFpbji0hXXupowqfLp3RcgmNbNWAp+QUJZYhJx5cdYbmO2fssyH+AhPT6knYJR/YnqkDM8hv6vKCkqu2YDHjMCQAOA8TE5EOclM+CGghj3VWSHnIDVKdzFD4gOBNNxNlltIKeU8AJmwunSFgJ0CBXAw9a+ANvMwM7AIeaK7sj0HskCQAvxfDCq7gaNx+pfu0FHG8Gix08A/A6foggBl1fVu+L9sr9ZuOQ3HbXnl28F9ewuB9xdjnLUDjp7W7U0pB+vKoQ="; + + System.out.println(RSAUtil.decryptString(en, PRIVATE_KEY)); + + + // 原始字符串 +// String origin = "哈哈哈哈哈啊啊"; +// System.out.println("原始字符串:"); +// System.out.println(origin); + +// // 定义对象 +// RSA rsa = new RSA(); +// +// //获得私钥 +//// System.out.println(rsa.getPrivateKey()); +// System.out.println("私钥如下:"); +// String privateKey = rsa.getPrivateKeyBase64(); +// System.out.println(privateKey); +// +// //获得公钥 +//// System.out.println(rsa.getPublicKey()); +// System.out.println("公钥如下:"); +// String publicKey = rsa.getPublicKeyBase64(); +// System.out.println(publicKey); +// +// // 使用公钥进行加密 +// byte[] encrypt = rsa.encrypt(StrUtil.bytes(origin, CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey); +// // 加密结果 +// System.out.println("加密后的密文:"); +// String en = StrUtil.str(encrypt, CharsetUtil.CHARSET_UTF_8); +// System.out.println(en); +// +// // 使用私钥解密 +// byte[] decrypt = rsa.decrypt(en, KeyType.PrivateKey); + +// String en = "EH5BLHO6HQGERUoJGzJxE4rX8SRC5j9fDkgN2lu7sSWHv5fHpIjg9Mct6Qbe3NO9nUlmpjsb0j+veiebK3g5so8EXkM71uUvCiq3zVX0hrLOWFBIi9/ikzrXFkxtFLfUIVhchuRncozQTZOux7QyOTBPFUdR2s3A8A80fWLZkfg="; +// String PRIVATE_KEY = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALwcyvYIGmhk+be320JWWsq1OYjiM0lzv8eHGMgSIOMLxzM/g9X7jguNe8thxJXR/CLqcTgsfZzk8E8Sc9+qnSDxNl5f5tga93vRxd5713zAeAGqLiTQnRffdzRmdbsmu5+0/K8mj056VhKh8FdBNzAj7e4iX9i+uBBG/oDmZbTVAgMBAAECgYEAmgNU5NTDkj9B+Pnt6UU8doSjw3+3j+bV2K2yS3QUOvAUus/Ax7x6ktjWxzCXvDY9IfUil2RNv9vtKEAqYLCWjc+lf8PV/yH1b7NEgyeAPBXtAJRoOnmYL2bdPW92kP9KgxJruF6Dz/C5AmMOncsvq8ABD+9Darn4p8dwj2ZC4O0CQQDf/AHmZsQokEItfCy4mHS9UbxbfIhEUv1ApPh/+Sr7NkJkHWYCtBQo+8jKO6zurAZQgWBPD1XX2UE4R+VIiZazAkEA1wAqtMvGhccyRZr+6kpkpDIa8+9jOE+nGUzqTDvgCID6as8AzOONFVVK6m/UUqkhcJ8Qu1pF36BGojy5BX2KVwJBAJSFpbji0hXXupowqfLp3RcgmNbNWAp+QUJZYhJx5cdYbmO2fssyH+AhPT6knYJR/YnqkDM8hv6vKCkqu2YDHjMCQAOA8TE5EOclM+CGghj3VWSHnIDVKdzFD4gOBNNxNlltIKeU8AJmwunSFgJ0CBXAw9a+ANvMwM7AIeaK7sj0HskCQAvxfDCq7gaNx+pfu0FHG8Gix08A/A6foggBl1fVu+L9sr9ZuOQ3HbXnl28F9ewuB9xdjnLUDjp7W7U0pB+vKoQ="; +// +// +// // 根据私钥生成新的对象 +// RSA rsa2 = new RSA(PRIVATE_KEY, null); +// byte[] decrypt = rsa2.decrypt(en, KeyType.PrivateKey); +// +// System.out.println("解密后的密文:"); +// System.out.println(StrUtil.str(decrypt, CharsetUtil.CHARSET_UTF_8)); + + + } + + /** + * 测试添加一个用户 + */ +// @Test +// void createOneTest() { +// SysUser user = new SysUser(); +// user.setUsername("张三"); +// user.setEmail("1000@zxdmy.com"); +// user.setPassword("sfdnfjdsfhdsjk"); +// if (userService.save(user)) { +// System.out.println("新增用户成功"); +// } else { +// System.out.println("新增用户失败"); +// } +// } + @Test + void tokenTest() { + // 查询value包括1000的所有token,结果集从第0条开始,返回10条 + System.out.println(); + List tokenList = StpUtil.searchTokenValue("", 0, 10); + for (String token : tokenList) { + System.out.println(token); + } + System.out.println(); + List tokenList2 = StpUtil.searchTokenSessionId("", -1, 10000); + for (String token : tokenList2) { + System.out.println(token); + } + System.out.println(); + List tokenList3 = StpUtil.searchSessionId("", 0, 10000); + for (String token : tokenList3) { + + System.out.println(token); + } + +// List sessionIds = StpUtil.searchTokenValue(null, -1, 1000); +// MySaTokenListener.ONLINE_USERS.sort((o1, o2) -> DateUtil.compare(o2.getLoginTime(), o1.getLoginTime())); +// PageDtoUtil pageDto = PageDtoUtil.getPageDto(MySaTokenListener.ONLINE_USERS, page, limit); +// +// List pageList = (List) pageDto.getPageList(); +// pageList.forEach(onlineUser -> { +// String keyLastActivityTime = StpUtil.stpLogic.splicingKeyLastActivityTime(onlineUser.getTokenValue()); +// String lastActivityTimeString = SaManager.getSaTokenDao().get(keyLastActivityTime); +// if (lastActivityTimeString != null) { +// long lastActivityTime = Long.parseLong(lastActivityTimeString); +// onlineUser.setLastActivityTime(DateUtil.date(lastActivityTime)); +// } +// }); +// return PageResponse.ok(pageList, (long) pageDto.getTotal()); + + } + + /** + * 测试添加一系列数据 + */ +// @Test +// void createListTest() { +// // 定义用户列表 +// List userList = new ArrayList<>(); +// // 随机生成 5个用户 +// for (int i = 1; i <= 5; i++) { +// // 定义用户实体 +// SysUser user = new SysUser(); +// // 随机填充数据 +// user.setUsername("用户" + i); +// user.setEmail("1000@zxdmy.com" + i); +// user.setPassword(DigestUtils.md5DigestAsHex(("password" + i).getBytes())); +// // 添加至列表 +// userList.add(user); +// } +// // 打印用户列表 +// System.out.println(userList); +// // 执行添加 +// if (userService.saveBatch(userList)) { +// System.out.println("新增用户成功"); +// } else { +// System.out.println("新增用户失败"); +// } +// } + + /** + * 测试根据ID修改一个用户的姓名 + */ +// @Test +// void updateOneTest() { +// // 定义用户实体 +// SysUser user = new SysUser(); +// // 随机填充数据 +// user.setId(10006); +// user.setUsername("李四"); +// // 执行修改 +// if (userService.updateById(user)) { +// System.out.println("修改用户信息成功"); +// } else { +// System.out.println("修改用户信息失败"); +// } +// } + + /** + * 测试根据ID查询一个用户的信息 + */ +// @Test +// void getOneTest() { +// SysUser user = userService.getById(100007); +// if (null != user) { +// System.out.println(user); +// } else { +// System.out.println("查无此用户"); +// } +// } + + /** + * 测试根据ID删除一个用户的信息 + */ + @Test + void logicDeleteTest() { + if (userService.removeById(10010)) { + System.out.println("删除成功"); + } else { + System.out.println("删除失败"); + } + } + +// /** +// * 分页查询测试 +// */ +// @Test +// void pageTest() { +// // 进行分页查询 +// Page userPage = userService.page(new Page<>(2, 2), null); +// // 获取查询的用户列表 +// List userList = userPage.getRecords(); +// System.out.println(userList); +// System.out.println("当前页:" + userPage.getCurrent()); +// System.out.println("当前页显示条数:" + userPage.getSize()); +// System.out.println("总数:" + userPage.getTotal()); +// } + +} diff --git a/ss-admin/src/test/java/com/zxdmy/excite/admin/utils/RedisUtilsTest.java b/ss-admin/src/test/java/com/zxdmy/excite/admin/utils/RedisUtilsTest.java new file mode 100644 index 0000000..78cd0a9 --- /dev/null +++ b/ss-admin/src/test/java/com/zxdmy/excite/admin/utils/RedisUtilsTest.java @@ -0,0 +1,103 @@ +package com.zxdmy.excite.admin.utils; + + +import com.zxdmy.excite.common.config.ExciteConfig; +import com.zxdmy.excite.common.service.RedisService; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.utils.AuthUtils; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + *

                          + * Redis使用测试类 + *

                          + * + * @author 沈松 + * @since 2021-09-30 0030 20:14 + */ +@SpringBootTest +class RedisUtilsTest { + + @Autowired + private RedisService redisUtils; + + @Autowired + private ExciteConfig exciteConfig; + + @Test + void MyConfigTest() { + System.out.println(exciteConfig.getRsaPrivateKey()); + } + + @Test + void testPrefixDelete(){ +// redisUtils.removeByPrefix("menu"); + AuthUtils.clearSystemMenuListCache(true); + } + @Test + void redisTest() { + // 写入Redis:普通测试 + redisUtils.set(UUID.randomUUID().toString(), UUID.randomUUID()); + // 写入redis:普通测试,带过期时间 + redisUtils.set(UUID.randomUUID().toString(), UUID.randomUUID(), 100L); + + // 写入Redis:永久的值 + redisUtils.set("10000", "这个值是永久的"); + // 写入Redis:有过期时间 + redisUtils.set("10001", "这个值是有过期时间的,过期时间120S", 120L); + + // 获取存在的值 + String name = (String) redisUtils.get("10000"); + System.out.println(name); // 输出:这个值是永久的 + // 获取不存在的值 + String name2 = (String) redisUtils.get("sdfdsfsdfsdfdsf"); + System.out.println(name2); //输出:null + + // 获取过期时间:永久 + Long time = redisUtils.getExpire("10000"); + System.out.println(time); // 输出:-1 + // 获取过期时间:定时 + Long time2 = redisUtils.getExpire("10001"); + System.out.println(time2); // 输出:(一个正数) + // 获取过期时间:不存在 + Long time3 = redisUtils.getExpire("534564564564"); + System.out.println(time3); // 输出:-2 + + // 测试存在 + if (redisUtils.hasKey("10001")) { + System.out.println("10001存在"); + } + // 测试不存在 + if (redisUtils.hasKey("11111")) { + System.out.println("11111存在"); + } else { + System.out.println("11111不存在"); // 输出:11111不存在 + } + + // 测试实体 + SysUser user = new SysUser(); + user.setId(10006); + user.setUsername("这是昵称"); + redisUtils.set("10006", user); + // 测试获取实体 + SysUser user2 = (SysUser) redisUtils.get("10006"); + System.out.println(user2.getUsername()); // 输出:这是昵称 + + // 测试列表 + System.out.println("测试保存列表"); + List userList = new ArrayList<>(); + userList.add(user); + userList.add(user); + redisUtils.set("userList", (Serializable) userList); + List userList2 = (List) redisUtils.get("userList"); + for (SysUser user1 : userList2) { + System.out.println(user1); + } + } +} diff --git a/ss-common/README.md b/ss-common/README.md new file mode 100644 index 0000000..6a056e4 --- /dev/null +++ b/ss-common/README.md @@ -0,0 +1,3 @@ +# Ss-Common模块 + +主要放常用的工具类 diff --git a/ss-common/pom.xml b/ss-common/pom.xml new file mode 100644 index 0000000..75bab73 --- /dev/null +++ b/ss-common/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + + + + com.zxdmy.excite + shensong + 2.0.0 + + + ss-common + 2.0.0 + + ss-common + + 此模块主要继承公共的工具类。 + + + + + + + + + + + + + cn.dev33 + sa-token-dao-redis-jackson + 1.28.0 + + + + + org.apache.commons + commons-pool2 + + + + + com.github.penggle + kaptcha + 2.3.2 + + + + + diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/base/BaseController.java b/ss-common/src/main/java/com/zxdmy/excite/common/base/BaseController.java new file mode 100644 index 0000000..6561ba7 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/base/BaseController.java @@ -0,0 +1,208 @@ +package com.zxdmy.excite.common.base; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ModelAttribute; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + *

                          + * 通用的控制类 + *

                          + * + * @author 沈松 + * @since 2021-09-05 0005 22:58 + */ +public class BaseController { + + @Resource + protected HttpServletRequest request; + @Resource + protected HttpServletResponse response; + + @ModelAttribute + public void initReqAndRes(HttpServletRequest request, HttpServletResponse response) { + this.request = request; + this.response = response; + } + + /** + * 请求成功消息(JSON code:200;浏览器Status Code:200) + * 相关说明: + * --- JSON code:指的是返回的JSON数据中的code字段的值 + * --- Status Code:指的是前端按下F12后,浏览器控制台中请求相关API后,返回给浏览器的状态值。 + * 如果需要修改Status Code,则需要传入[org.springframework.http.HttpStatus]类中的各个参数,如:HttpStatus.OK.value()。 + * + * @param message 消息 + * @return 结果类 + */ + public BaseResult success(String message) { + response.setStatus(HttpStatus.OK.value()); + return new BaseResult(HttpStatus.OK.value(), message); + } + + /** + * 请求成功消息(JSON code:自定义;浏览器Status Code:200) + * + * @param code 状态码 + * @param message 消息 + * @return 结果类 + */ + public BaseResult success(int code, String message) { + response.setStatus(HttpStatus.OK.value()); + return new BaseResult(code, message); + } + + /** + * 请求成功实体(JSON code:200;浏览器Status Code:200) + * + * @param data 实体 + * @return 结果类 + */ + public BaseResult success(Object data) { + response.setStatus(HttpStatus.OK.value()); + return new BaseResult(HttpStatus.OK.value(), data); + } + + /** + * 请求成功实体(JSON code:自定义;浏览器Status Code:200) + * + * @param code 状态码 + * @param data 消息 + * @return 结果类 + */ + public BaseResult success(int code, Object data) { + response.setStatus(HttpStatus.OK.value()); + return new BaseResult(code, data); + } + + /** + * 请求成功消息(JSON code:自定义;浏览器Status Code:同返回码) + * + * @param httpStatus 状态码 + * @param message 消息 + * @return 结果类 + */ + public BaseResult success(HttpStatus httpStatus, String message) { + response.setStatus(httpStatus.value()); + return new BaseResult(httpStatus.value(), message); + } + + /** + * 请求成功消息+数据(JSON code:200;浏览器Status Code:200) + * + * @param message 消息 + * @param data 数据 + * @return 结果类 + */ + public BaseResult success(String message, Object data) { + response.setStatus(HttpStatus.OK.value()); + return new BaseResult(HttpStatus.OK.value(), message, data); + } + + /** + * 请求成功消息+数据(JSON code:自定义;浏览器Status Code:200) + * + * @param code 状态码 + * @param message 消息 + * @param data 数据 + * @return 结果类 + */ + public BaseResult success(int code, String message, Object data) { + response.setStatus(HttpStatus.OK.value()); + return new BaseResult(code, message, data); + } + + /** + * 请求成功消息+数据(JSON code:自定义;浏览器Status Code:同返回码) + * + * @param httpStatus 状态码 + * @param message 消息 + * @param data 数据 + * @return 结果类 + */ + public BaseResult success(HttpStatus httpStatus, String message, Object data) { + response.setStatus(httpStatus.value()); + return new BaseResult(httpStatus.value(), message, data); + } + + /** + * 请求成功消息+数据+总数,用于分页显示(JSON code:200;浏览器Status Code:200) + * + * @param message 消息 + * @param data 数据 + * @param count 记录数 + * @return 结果类 + */ + public BaseResult success(String message, Object data, int count) { + response.setStatus(HttpStatus.OK.value()); + return new BaseResult(HttpStatus.OK.value(), message, data).put("count", count); + } + + /** + * 请求成功消息+数据+总数,用于分页显示(JSON code:自定义;浏览器Status Code:200) + * + * @param code 状态码 + * @param message 消息 + * @param data 数据 + * @param count 记录数 + * @return 结果类 + */ + public BaseResult success(int code, String message, Object data, int count) { + response.setStatus(HttpStatus.OK.value()); + return new BaseResult(code, message, data).put("count", count); + } + + /** + * 请求成功消息+数据+总数,用于分页显示(JSON code:自定义;浏览器Status Code:同返回码) + * + * @param httpStatus 状态码 + * @param message 消息 + * @param data 数据 + * @param count 记录数 + * @return 结果类 + */ + public BaseResult success(HttpStatus httpStatus, String message, Object data, int count) { + response.setStatus(httpStatus.value()); + return new BaseResult(httpStatus.value(), message, data).put("count", count); + } + + + /** + * 请求失败消息(JSON code:400;浏览器Status Code:200) + * + * @param message 消息 + * @return 结果类 + */ + public BaseResult error(String message) { + response.setStatus(HttpStatus.OK.value()); + return new BaseResult(HttpStatus.BAD_REQUEST.value(), message); + } + + /** + * 请求失败消息(JSON code:自定义;浏览器Status Code:200) + * + * @param code 状态码 + * @param message 消息 + * @return 结果类 + */ + public BaseResult error(int code, String message) { + response.setStatus(HttpStatus.OK.value()); + return new BaseResult(code, message); + } + + /** + * 请求失败消息(JSON code:自定义;浏览器Status Code:同返回码) + * + * @param httpStatus 状态码 + * @param message 消息 + * @return 结果类 + */ + public BaseResult error(HttpStatus httpStatus, String message) { + response.setStatus(httpStatus.value()); + return new BaseResult(httpStatus.value(), message); + } + +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/base/BaseResult.java b/ss-common/src/main/java/com/zxdmy/excite/common/base/BaseResult.java new file mode 100644 index 0000000..0413603 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/base/BaseResult.java @@ -0,0 +1,104 @@ +package com.zxdmy.excite.common.base; + +import java.util.HashMap; + +/** + *

                          + * 通用的返回结果类 + *

                          + * + * @author 沈松 + * @since 2021-09-05 0005 23:01 + */ +public class BaseResult extends HashMap { + + private static final long serialVersionUID = 1L; + + /** + * 几个静态常量 + */ + private static final Integer MAX_SUCCESS_VALUE = 299; + private static final String SUCCESS = "success"; + private static final String CODE = "code"; + private static final String MSG = "msg"; + private static final String DATA = "data"; + private static final String COUNT = "count"; + private static final String PAGE = "page"; + private static final String SIZE = "size"; + + /** + * 初始化 BaseResult 对象,其消息为空。 + */ + public BaseResult() { + } + + /** + * 封装结果类,消息。 + * + * @param code 状态代码 + * @param msg 消息内容 + */ + public BaseResult(int code, String msg) { + if (code <= MAX_SUCCESS_VALUE) { + super.put(SUCCESS, true); + } else { + super.put(SUCCESS, false); + } + super.put(CODE, code); + super.put(MSG, msg); + } + + /** + * 封装结果类,实体。 + * + * @param code 状态代码 + * @param data 消息实体 + */ + public BaseResult(int code, Object data) { + if (code <= MAX_SUCCESS_VALUE) { + super.put(SUCCESS, true); + } else { + super.put(SUCCESS, false); + } + super.put(CODE, code); + if (null != data) { + super.put(DATA, data); + } + } + + + /** + * 封装结果类,消息+实体。 + * + * @param code 状态类型 + * @param msg 消息内容 + * @param data 数据对象 + */ + public BaseResult(int code, String msg, Object data) { + if (code <= MAX_SUCCESS_VALUE) { + super.put(SUCCESS, true); + } else { + super.put(SUCCESS, false); + } + super.put(CODE, code); + super.put(MSG, msg); + if (null != data) { + super.put(DATA, data); + } + } + + + /** + * 以上三类是默认的类型。如果还有其他参数要返回,使用.put(key,value)的链式调用方式追加。 + * + * @param key 键 + * @param value 值/任意数据对象 + * @return 链式调用 + */ + @Override + public BaseResult put(String key, Object value) { + super.put(key, value); + return this; + } + +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/base/ErrorController.java b/ss-common/src/main/java/com/zxdmy/excite/common/base/ErrorController.java new file mode 100644 index 0000000..f8562c6 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/base/ErrorController.java @@ -0,0 +1,43 @@ +package com.zxdmy.excite.common.base; + + +import lombok.AllArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 全局请求错误返回结果控制类 + * + * @author 沈松 + * @since 2021-09-11 0011 23:27 + */ +@Controller +@AllArgsConstructor +@RequestMapping("/error") +public class ErrorController extends BaseController { + + /** + * 请求资源不存在返回结果 + * + * @return 错误信息 + */ + @GetMapping(value = "/404") + public String error404() { +// return error(HttpStatus.NOT_FOUND, "请求的资源不存在"); + return "error/404"; + } + + /** + * 服务器错误返回结果 + * + * @return 错误信息 + */ + @GetMapping(value = "/500") + @ResponseBody + public BaseResult error500() { + return error(HttpStatus.INTERNAL_SERVER_ERROR, "服务器内部错误:可能请求资源不存在"); + } +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/config/ErrorPageConfig.java b/ss-common/src/main/java/com/zxdmy/excite/common/config/ErrorPageConfig.java new file mode 100644 index 0000000..0052972 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/config/ErrorPageConfig.java @@ -0,0 +1,26 @@ +package com.zxdmy.excite.common.config; + +import org.springframework.boot.web.server.ErrorPage; +import org.springframework.boot.web.server.ErrorPageRegistrar; +import org.springframework.boot.web.server.ErrorPageRegistry; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Component; + +/** + * 全局错误访问返回结果 + * + * @author 沈松 + * @since 2021-09-08 0008 21:00 + */ +@Component +public class ErrorPageConfig implements ErrorPageRegistrar { + @Override + public void registerErrorPages(ErrorPageRegistry errorPageRegistry) { + errorPageRegistry.addErrorPages( + // 当遇到 NOT_FOUND 错误时,请求 /error/404 路由。 + new ErrorPage(HttpStatus.NOT_FOUND, "/error/404"), + // 当遇到 INTERNAL_SERVER_ERROR 错误时,请求 /error/500 路由。 + new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/error/500") + ); + } +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/config/ExciteConfig.java b/ss-common/src/main/java/com/zxdmy/excite/common/config/ExciteConfig.java new file mode 100644 index 0000000..6a33346 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/config/ExciteConfig.java @@ -0,0 +1,67 @@ +package com.zxdmy.excite.common.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + *

                          + * 描述 + *

                          + * + * @author 沈松 + * @since 2021-10-07 0007 19:04 + */ +@Component +@ConfigurationProperties(prefix = "excite") +public class ExciteConfig { + + private String name; + + /** + * 是否允许Redis缓存:true:允许 | false:不允许 + * 此Redis缓存用到的地方主要有:用户角色、权限控制; + */ + private Boolean allowRedis; + + /** + * RSA加密算法的公钥 + */ + private String rsaPublicKey; + + /** + * RSA加密算法的私钥 + */ + private String rsaPrivateKey; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Boolean getAllowRedis() { + return allowRedis; + } + + public void setAllowRedis(Boolean allowRedis) { + this.allowRedis = allowRedis; + } + + public String getRsaPublicKey() { + return rsaPublicKey; + } + + public void setRsaPublicKey(String rsaPublicKey) { + this.rsaPublicKey = rsaPublicKey; + } + + public String getRsaPrivateKey() { + return rsaPrivateKey; + } + + public void setRsaPrivateKey(String rsaPrivateKey) { + this.rsaPrivateKey = rsaPrivateKey; + } +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/config/KaptchaConfig.java b/ss-common/src/main/java/com/zxdmy/excite/common/config/KaptchaConfig.java new file mode 100644 index 0000000..fc81e0d --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/config/KaptchaConfig.java @@ -0,0 +1,139 @@ +package com.zxdmy.excite.common.config; + +import com.google.code.kaptcha.impl.DefaultKaptcha; +import com.google.code.kaptcha.util.Config; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.Properties; + +import static com.google.code.kaptcha.Constants.*; + +/** + *

                          + * Google验证码配置类 + *

                          + * + * @author 沈松 + * @since 2021-10-04 0004 20:12 + */ +@Configuration +public class KaptchaConfig { + + /** + * 验证码配置默认配置 + * + * @return 配置信息 + */ + @Bean(name = "captchaProducer") + public DefaultKaptcha getKaptchaBean() { + DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); + Properties properties = new Properties(); + // 是否有边框 默认为true 我们可以自己设置yes,no + properties.setProperty(KAPTCHA_BORDER, "yes"); + // 验证码文本字符颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "black"); + // 验证码图片宽度 默认为200 + properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160"); + // 验证码图片高度 默认为50 + properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60"); + // 验证码文本字符大小 默认为40 + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "38"); + // KAPTCHA_SESSION_KEY + properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCode"); + // 验证码文本字符长度 默认为5 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4"); + // 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier"); + // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy + properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy"); + Config config = new Config(properties); + defaultKaptcha.setConfig(config); + return defaultKaptcha; + } + + /** + * 验证码数学题类配置(一位数加减乘除) + * + * @return 配置信息 + */ + @Bean(name = "captchaProducerMathOne") + public DefaultKaptcha getKaptchaBeanMathOne() { + DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); + Properties properties = new Properties(); + // 是否有边框 默认为true 我们可以自己设置yes,no + properties.setProperty(KAPTCHA_BORDER, "yes"); + // 边框颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_BORDER_COLOR, "105,179,90"); + // 验证码文本字符颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue"); + // 验证码图片宽度 默认为200 + properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160"); + // 验证码图片高度 默认为50 + properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60"); + // 验证码文本字符大小 默认为40 + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "35"); + // KAPTCHA_SESSION_KEY + properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCodeMath"); + // 验证码文本生成器 + properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.zxdmy.excite.common.utils.KaptchaMathOneTextCreator"); + // 验证码文本字符间距 默认为2 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3"); + // 验证码文本字符长度 默认为 5 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6"); + // 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier"); + // 验证码噪点颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_NOISE_COLOR, "white"); + // 干扰实现类 + properties.setProperty(KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise"); + // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy + properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy"); + Config config = new Config(properties); + defaultKaptcha.setConfig(config); + return defaultKaptcha; + } + + /** + * 验证码数学题类配置(两位数的加减乘除) + * + * @return 配置信息 + */ + @Bean(name = "captchaProducerMathTwo") + public DefaultKaptcha getKaptchaBeanMathTwo() { + DefaultKaptcha defaultKaptcha = new DefaultKaptcha(); + Properties properties = new Properties(); + // 是否有边框 默认为true 我们可以自己设置yes,no + properties.setProperty(KAPTCHA_BORDER, "yes"); + // 边框颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_BORDER_COLOR, "105,179,90"); + // 验证码文本字符颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue"); + // 验证码图片宽度 默认为200 + properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160"); + // 验证码图片高度 默认为50 + properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60"); + // 验证码文本字符大小 默认为40 + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "35"); + // KAPTCHA_SESSION_KEY + properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCodeMath"); + // 验证码文本生成器 + properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.zxdmy.excite.common.utils.KaptchaMathTwoTextCreator"); + // 验证码文本字符间距 默认为2 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3"); + // 验证码文本字符长度 默认为5 + properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6"); + // 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier"); + // 验证码噪点颜色 默认为Color.BLACK + properties.setProperty(KAPTCHA_NOISE_COLOR, "white"); + // 干扰实现类 + properties.setProperty(KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise"); + // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy + properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy"); + Config config = new Config(properties); + defaultKaptcha.setConfig(config); + return defaultKaptcha; + } + +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/config/MybatisPlusConfig.java b/ss-common/src/main/java/com/zxdmy/excite/common/config/MybatisPlusConfig.java new file mode 100644 index 0000000..56b0117 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/config/MybatisPlusConfig.java @@ -0,0 +1,34 @@ +package com.zxdmy.excite.common.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + *

                          + * Mybatis Plus 配置信息 + *

                          + * + * @author 沈松 + * @since 2021-09-01 0001 18:34 + */ +@Configuration +@MapperScan({"com.zxdmy.excite.system.mapper", ""}) +public class MybatisPlusConfig { + + /** + * 分页插件配置 + * + * @return MP拦截器 + */ + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); + return interceptor; + } + +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/config/RedisConfig.java b/ss-common/src/main/java/com/zxdmy/excite/common/config/RedisConfig.java new file mode 100644 index 0000000..12e550c --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/config/RedisConfig.java @@ -0,0 +1,100 @@ +package com.zxdmy.excite.common.config; + +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cache.CacheManager; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.cache.RedisCacheConfiguration; +import org.springframework.data.redis.cache.RedisCacheManager; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializationContext; +import org.springframework.data.redis.serializer.StringRedisSerializer; +import org.springframework.stereotype.Component; + +import java.io.Serializable; + +/** + *

                          + * Redis 相关配置,参考自:spring-boot-demo + *

                          + * + * @author 沈松 + * @since 2021-09-30 0030 19:15 + */ +@Component +@Configuration +@EnableCaching +@AutoConfigureAfter(RedisAutoConfiguration.class) +@ConfigurationProperties(prefix = "spring.redis") +public class RedisConfig { + + /** + * 自定义属性:Redis key 的前缀 + */ + private String prefix = "redis:prefix:"; + + /** + * 自定义属性:是否开启Redis自定义前缀,默认关闭。 + */ + private Boolean allowPrefix = false; + + /** + * 默认情况下的模板只能支持RedisTemplate,也就是只能存入字符串,因此支持序列化 + */ + @Bean + public RedisTemplate redisCacheTemplate(LettuceConnectionFactory redisConnectionFactory) { + RedisTemplate template = new RedisTemplate<>(); + // key采用String的序列化方式 + template.setKeySerializer(new StringRedisSerializer()); + // hash的key也采用String的序列化方式 + template.setHashKeySerializer(new StringRedisSerializer()); + // value序列化方式采用jackson + template.setValueSerializer(new GenericJackson2JsonRedisSerializer()); + // hash的value序列化方式采用jackson + template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer()); + template.setConnectionFactory(redisConnectionFactory); + return template; + } + + /** + * 配置使用注解的时候缓存配置,默认是序列化反序列化的形式,加上此配置则为 json 形式 + */ + @Bean + public CacheManager cacheManager(RedisConnectionFactory factory) { + // 配置序列化 + RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig(); + RedisCacheConfiguration redisCacheConfiguration = config + // 覆盖默认的构造key,否则会多出一个冒号 + .computePrefixWith(cacheName -> this.allowPrefix ? this.prefix + cacheName + ":" : cacheName) + .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())) + .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())) + // 不缓存空值 + // .disableCachingNullValues() + ; + + return RedisCacheManager.builder(factory).cacheDefaults(redisCacheConfiguration).build(); + } + + + public String getPrefix() { + return prefix; + } + + public void setPrefix(String prefix) { + this.prefix = prefix; + } + + public Boolean getAllowPrefix() { + return allowPrefix; + } + + public void setAllowPrefix(Boolean allowPrefix) { + this.allowPrefix = allowPrefix; + } +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/config/SpringDocConfig.java b/ss-common/src/main/java/com/zxdmy/excite/common/config/SpringDocConfig.java new file mode 100644 index 0000000..8f9894a --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/config/SpringDocConfig.java @@ -0,0 +1,59 @@ +package com.zxdmy.excite.common.config; + +import io.swagger.v3.oas.annotations.OpenAPIDefinition; +import io.swagger.v3.oas.annotations.info.Info; +import org.springdoc.core.GroupedOpenApi; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + *

                          + * SpringDoc API配置文档 + *

                          + * + * @author 沈松 + * @since 2021-09-10 0010 21:57 + */ +// 全局只能定义一个,主要配置文档信息和安全配置 +@OpenAPIDefinition( + // 配置接口文档基本信息,用于网页显示 + info = @Info( + title = "ExciteCMS", //标题 + version = "1.0", //版本号 + description = "An integrated content management system based on Spring Boot (v2.5.4)" //描述信息 + ) + // 当然还可以添加其他的安全配置。 +) +@Configuration // 如果需要在此处配置分组信息,则需要添加此注解。 +public class SpringDocConfig { + + @Bean + public GroupedOpenApi guestApi() { + return GroupedOpenApi.builder() + // 分组名 + .group("guest") + // 扫描的包路径。可选项。 + .packagesToScan("com.zxdmy.cms.excite.guest") + // 匹配的路径。可选项,可以与包路径二选一,也可以都用。 + .pathsToMatch("/guest/**") + .build(); + } + +// @Bean +// public GroupedOpenApi thirdApi() { +// return GroupedOpenApi.builder() +// // 分组名 +// .group("third") +// // 扫描的包路径。可选项。 +// .packagesToScan("com.zxdmy.cms.excite.third") +// // 匹配的路径。可选项,可以与包路径二选一,也可以都用。 +// .pathsToMatch("/third/**") +// .build(); +// } + +} + + + + + diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/entity/CaptchaDomain.java b/ss-common/src/main/java/com/zxdmy/excite/common/entity/CaptchaDomain.java new file mode 100644 index 0000000..642ff36 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/entity/CaptchaDomain.java @@ -0,0 +1,51 @@ +package com.zxdmy.excite.common.entity; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +import java.awt.image.BufferedImage; +import java.io.Serializable; + +/** + *

                          + * 第三方验证码实体类 + *

                          + * + * @author 沈松 + * @since 2021-10-04 0004 20:02 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class CaptchaDomain implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 验证码的Token + */ + private String token; + + /** + * 验证码的字符。返回的JSON,禁止返回给前端。 + */ + @JsonIgnore + private String text; + + /** + * 验证码的验证字符。比如算式的结果等。 + */ + @JsonIgnore + private String code; + + /** + * 验证码缓冲图像 + */ + @JsonIgnore + private BufferedImage image; + + /** + * 验证码图片的Base64字符串 + */ + private String base64; +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/entity/GlobalConfig.java b/ss-common/src/main/java/com/zxdmy/excite/common/entity/GlobalConfig.java new file mode 100644 index 0000000..90be790 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/entity/GlobalConfig.java @@ -0,0 +1,68 @@ +package com.zxdmy.excite.common.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.time.LocalDateTime; +import java.io.Serializable; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

                          + * 组件配置信息表 + *

                          + * + * @author 沈松 + * @since 2022-01-03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class GlobalConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键,自增 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 配置信息的服务:如qiniu,aliyun + */ + private String confService; + + /** + * 配置信息的主键:如qiniu、alipay等等 + */ + private String confKey; + + /** + * 配置信息的JSON值 + */ + private String confValue; + + /** + * 是否加密:1-是 0-否 + */ + private Integer encrypt; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + /** + * 删除时间 + */ + private LocalDateTime deleteTime; + + +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/entity/PageList.java b/ss-common/src/main/java/com/zxdmy/excite/common/entity/PageList.java new file mode 100644 index 0000000..6a65cdc --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/entity/PageList.java @@ -0,0 +1,56 @@ +package com.zxdmy.excite.common.entity; + +import java.util.ArrayList; +import java.util.List; + +public class PageList { + private int page;//当前页数 + private int total;//总的页数 + private int count;//总的记录数 + private ArrayList list;//当前页数据 + + /** + * @param list 当前页数据 + * @param page 当前页数 + * @param size 每页数据量 + * @param count 总的记录数量 + */ + public PageList(ArrayList list, int page, int size, int count) { + this.page = page; + this.count = count; + this.list = list; + this.total = count % size == 0 ? count / size : (count / size) + 1; + } + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + } + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getList() { + return list; + } + + public void setList(ArrayList list) { + this.list = list; + } +} \ No newline at end of file diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/enums/CloudCode.java b/ss-common/src/main/java/com/zxdmy/excite/common/enums/CloudCode.java new file mode 100644 index 0000000..5c7596e --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/enums/CloudCode.java @@ -0,0 +1,25 @@ +package com.zxdmy.excite.common.enums; + +public enum CloudCode { + + FOLDER_IMAGE("https://ltcloudfile.oss-cn-hangzhou.aliyuncs.com/cloud/folder.jpg", "目录图标"), + PDF_IMAGE("https://ltcloudfile.oss-cn-hangzhou.aliyuncs.com/cloud/file.png", "PDF"), + FOLDER_NAME("文件夹", "目录格式"); + + private final String code; + + private final String desc; + + CloudCode(String code, String desc) { + this.code = code; + this.desc = desc; + } + + public String getCode() { + return this.code; + } + + public String getDesc() { + return this.desc; + } +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/enums/ReturnCode.java b/ss-common/src/main/java/com/zxdmy/excite/common/enums/ReturnCode.java new file mode 100644 index 0000000..5ed97f6 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/enums/ReturnCode.java @@ -0,0 +1,70 @@ +package com.zxdmy.excite.common.enums; + +/** + *

                          + * 通用的返回结果返回码枚举类 + *

                          + * + * @author 沈松 + * @since 2021-09-05 0005 23:59 + */ +public enum ReturnCode { + + // 以下是常用的HTTP状态码 + /** + * 客户端请求成功。状态码:200 + */ + OK(200, "OK"), + /** + * 客户端请求已创建。状态码:201 + */ + CREATED(201, "Created"), + /** + * 客户端请求已接受。状态码:202 + */ + ACCEPTED(202, "Accepted"), + + /** + * 请求错误。状态码:400 + */ + BAD_REQUEST(400, "Bad Request"), + /** + * 拒绝访问。状态码:401 + */ + UNAUTHORIZED(401, "Unauthorized"), + /** + * 禁止访问。状态码:403 + */ + FORBIDDEN(403, "Forbidden"), + /** + * 请求不存在。状态码:404 + */ + NOT_FOUND(404, "Not Found"), + /** + * 方法不被允许。状态码:405 + */ + METHOD_NOT_ALLOWED(405, "Method Not Allowed"), + + // 当然还可以添加自定义的其他返回码。 + INVALID_ID(40001, "不合法的ID"), + INVALID_FILE_TYPE(40002, "不合法的文件类型"), + INVALID_FILE_SIZE(40003, "不合法的文件大小"), + INVALID_URL(40004, "不合法的链接"); + + private final int code; + + private final String reason; + + ReturnCode(int code, String reason) { + this.code = code; + this.reason = reason; + } + + public int getCode() { + return this.code; + } + + public String getReason() { + return this.reason; + } +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/enums/SystemCode.java b/ss-common/src/main/java/com/zxdmy/excite/common/enums/SystemCode.java new file mode 100644 index 0000000..f04f6e8 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/enums/SystemCode.java @@ -0,0 +1,73 @@ +package com.zxdmy.excite.common.enums; + +public enum SystemCode { + + /** + * 系统菜单默认顺序:0 + */ + MENU_DEFAULT_SORT(50, "菜单默认排序"), + /** + * 默认顺序:50 + */ + SORT_DEFAULT(50, "默认排序"), + + FOLDER_Y(0, "是文件夹"), + + FOLDER_N(1, "是文件"), + /** + * 记录状态:正常,值:1 + */ + STATUS_Y(1, "记录状态正常"), + /** + * 记录状态:异常,值:0 + */ + STATUS_N(0, "记录状态封禁"), + /** + * 记录状态:正常锁定,值:2 + */ + STATUS_Y_BLOCK(2, "状态正常,并且无法编辑状态"), + + /** + * 记录可以编辑:1 + */ + EDITABLE_Y(1, "记录可以编辑"), + /** + * 记录禁止编辑:0 + */ + EDITABLE_N(0, "记录禁止编辑"), + + /** + * 记录可以删除:1 + */ + REMOVABLE_Y(1, "记录可以删除"), + /** + * 记录禁止删除:0 + */ + REMOVABLE_N(0, "记录禁止删除"), + /** + * 是否删除:是 - 0 + */ + DELETE_Y(1, "已删除"), + /** + * 是否删除:否 - 0 + */ + DELETE_N(0, "未删除"); + + + private final int code; + + private final String desc; + + SystemCode(int code, String desc) { + this.code = code; + this.desc = desc; + } + + public int getCode() { + return this.code; + } + + public String getDesc() { + return this.desc; + } +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/exception/GlobalException.java b/ss-common/src/main/java/com/zxdmy/excite/common/exception/GlobalException.java new file mode 100644 index 0000000..7919e7e --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/exception/GlobalException.java @@ -0,0 +1,85 @@ +package com.zxdmy.excite.common.exception; + +import cn.dev33.satoken.exception.DisableLoginException; +import cn.dev33.satoken.exception.NotLoginException; +import cn.dev33.satoken.exception.NotPermissionException; +import cn.dev33.satoken.exception.NotRoleException; +import com.zxdmy.excite.common.base.BaseController; +import org.springframework.validation.BindException; +import org.springframework.validation.BindingResult; +import org.springframework.validation.FieldError; +import org.springframework.web.HttpRequestMethodNotSupportedException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + *

                          + * 全局异常处理 + *

                          + * + * @author 沈松 + * @since 2021-10-12 0012 20:57 + */ +@ControllerAdvice +public class GlobalException extends BaseController { + + @ResponseBody + @ExceptionHandler + public Object handlerException(Exception e, HttpServletRequest request, HttpServletResponse response) throws Exception { + // 打印堆栈,以供调试 + System.out.println("==============全局异常=============="); + e.printStackTrace(); + // 不同异常返回不同状态码 + + String result = "系统错误,请重试!"; + // 如果是未登录异常 + if (e instanceof NotLoginException) { + NotLoginException ee = (NotLoginException) e; + result = "用户未登录"; + // 前后端同域,所以未登录就直接跳转至登录页面 + response.sendRedirect(request.getContextPath() + "/system/login"); + } + // 如果是角色异常 + else if (e instanceof NotRoleException) { + NotRoleException ee = (NotRoleException) e; + result = "无此角色:" + ee.getRole(); + } + // 如果是权限异常 + else if (e instanceof NotPermissionException) { + NotPermissionException ee = (NotPermissionException) e; + result = "无此权限:" + ee.getCode(); + } + // 如果是被封禁异常 + else if (e instanceof DisableLoginException) { + DisableLoginException ee = (DisableLoginException) e; + result = "账号被封禁:" + ee.getDisableTime() + "秒后解封"; + } + // 不支持的请求 + else if (e instanceof HttpRequestMethodNotSupportedException) { + return "请求不支持"; + } + // 信息校验失败提示 + else if (e instanceof BindException) { + BindingResult bindingResult = ((BindException) e).getBindingResult(); + StringBuilder errMsg = new StringBuilder(); + if (bindingResult.hasErrors()) { + Integer i = 1; + for (FieldError fieldError : bindingResult.getFieldErrors()) { + errMsg.append(i).append(". ").append(fieldError.getDefaultMessage()).append("!"); + i++; + } + } + result = errMsg.toString(); + } + // 其他异常, 输出:500 + 异常信息 + else { + result = e.getMessage(); + } + // 返回给前端 + return error(500, result); + } +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/exception/ServiceException.java b/ss-common/src/main/java/com/zxdmy/excite/common/exception/ServiceException.java new file mode 100644 index 0000000..55e0b90 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/exception/ServiceException.java @@ -0,0 +1,47 @@ +package com.zxdmy.excite.common.exception; + +/** + *

                          + * 服务层异常处理,继承RunTimeException,来保证对异常进行事务回滚 + *

                          + * + * @author 沈松 + * @since 2021-09-23 0023 19:54 + */ +public class ServiceException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + private String message; + + private String details; + + public ServiceException() { + } + + public ServiceException(String message) { + this.message = message; + } + + public ServiceException(String message, String details) { + this.message = message; + this.details = details; + } + + @Override + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getDetails() { + return details; + } + + public void setDetails(String details) { + this.details = details; + } +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/mapper/GlobalConfigMapper.java b/ss-common/src/main/java/com/zxdmy/excite/common/mapper/GlobalConfigMapper.java new file mode 100644 index 0000000..0183770 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/mapper/GlobalConfigMapper.java @@ -0,0 +1,16 @@ +package com.zxdmy.excite.common.mapper; + +import com.zxdmy.excite.common.entity.GlobalConfig; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

                          + * 组件配置信息表 Mapper 接口 + *

                          + * + * @author 沈松 + * @since 2022-01-03 + */ +public interface GlobalConfigMapper extends BaseMapper { + +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/service/CaptchaService.java b/ss-common/src/main/java/com/zxdmy/excite/common/service/CaptchaService.java new file mode 100644 index 0000000..c9e4e65 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/service/CaptchaService.java @@ -0,0 +1,128 @@ +package com.zxdmy.excite.common.service; + +import cn.hutool.captcha.AbstractCaptcha; +import cn.hutool.captcha.CaptchaUtil; +import com.google.code.kaptcha.Producer; + +import com.zxdmy.excite.common.entity.CaptchaDomain; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; +import sun.misc.BASE64Encoder; + +import javax.annotation.Resource; +import javax.imageio.ImageIO; +import java.io.ByteArrayOutputStream; +import java.security.SecureRandom; +import java.util.Random; +import java.util.UUID; + +/** + *

                          + * 验证码服务接口的实现 + *

                          + * + * @author 沈松 + * @since 2021-10-15 0015 10:18 + */ +@Service +@AllArgsConstructor +public class CaptchaService { + + @Resource(name = "captchaProducer") + private Producer captchaProducer; + + @Resource(name = "captchaProducerMathOne") + private Producer captchaProducerMathOne; + + @Resource(name = "captchaProducerMathTwo") + private Producer captchaProducerMathTwo; + + private static final String TYPE_CHAR = "char"; + private static final String TYPE_MATH_ONE = "math"; + private static final String TYPE_MATH_TWO = "math2"; + + /** + * Kaptcha生成验证码实体 + * + * @param type 类型,char - 字符(缺省) | math - 一位数算式 | math2 - 两位数算式 + * @return 验证码实体 + */ + public CaptchaDomain createGoogleCaptcha(String type) { + // 定义验证码实体 + CaptchaDomain captchaDomain = new CaptchaDomain(); + // 一位数加减乘除 + if (TYPE_MATH_ONE.equals(type)) { + // 生成文本 + String producerText = captchaProducerMathOne.createText(); + // 设置验证码字符 + captchaDomain.setText(producerText.substring(0, producerText.indexOf("@"))); + // 设置验证码答案码 + captchaDomain.setCode(producerText.substring(producerText.indexOf("@") + 1)); + // 设置验证码图片 + captchaDomain.setImage(captchaProducerMathOne.createImage(captchaDomain.getText())); + } + // 两位数加减乘除 + else if (TYPE_MATH_TWO.equals(type)) { + String producerText = captchaProducerMathTwo.createText(); + captchaDomain.setText(producerText.substring(0, producerText.indexOf("@"))); + captchaDomain.setCode(producerText.substring(producerText.indexOf("@") + 1)); + captchaDomain.setImage(captchaProducerMathTwo.createImage(captchaDomain.getText())); + } + // 缺省情况:字符 + else { + captchaDomain.setText(captchaProducer.createText()); + captchaDomain.setCode(captchaDomain.getText()); + captchaDomain.setImage(captchaProducer.createImage(captchaDomain.getText())); + } + // 生成base64 + try { + // 定义字节数组输出流 + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + // 将图像以 jpg 的形式,写到字节数组输出流中 + ImageIO.write(captchaDomain.getImage(), "jpg", outputStream); + // 对字节数组Base64编码 + BASE64Encoder encoder = new BASE64Encoder(); + // 写入base64格式 + captchaDomain.setBase64("data:image/jpg;base64," + encoder.encode(outputStream.toByteArray())); + // 写入唯一Token + captchaDomain.setToken(UUID.randomUUID().toString()); + // 返回结果 + return captchaDomain; + } catch (Exception e) { + System.out.println(e.getMessage()); + return null; + } + } + + public CaptchaDomain createHutoolCaptcha(Integer width, Integer height) { + CaptchaDomain captchaDomain = new CaptchaDomain(); + // 生成 0、1、2 三个整数其一,随机对应下面的三种验证码类型 + // 注意:这里只是尽可能多的展示每种验证码的使用方法,实际项目中选择一种即可。 + Random random = new SecureRandom(); + int type = random.nextInt(3); + AbstractCaptcha captcha = null; + // 【0】生成 线段干扰验证码 + if (type == 0) { + //定义图形验证码的长和宽 + captcha = CaptchaUtil.createLineCaptcha(width, height); + } + // 【1】生成 圆圈干扰验证码 + else if (type == 1) { + //定义图形验证码的长、宽。还可以设置两个参数:验证码字符数、干扰元素个数 + captcha = CaptchaUtil.createCircleCaptcha(width, height); + } + // 【2】生成 扭曲干扰验证码 + else { + captcha = CaptchaUtil.createShearCaptcha(width, height); + } + // 信息配置 + captchaDomain.setText(captcha.getCode()); + captchaDomain.setCode(captcha.getCode()); + captchaDomain.setBase64(captcha.getImageBase64Data()); + captchaDomain.setImage(captcha.getImage()); + captchaDomain.setToken(UUID.randomUUID().toString()); + + return captchaDomain; + } + +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/service/IGlobalConfigService.java b/ss-common/src/main/java/com/zxdmy/excite/common/service/IGlobalConfigService.java new file mode 100644 index 0000000..d537dd0 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/service/IGlobalConfigService.java @@ -0,0 +1,24 @@ +package com.zxdmy.excite.common.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.zxdmy.excite.common.entity.GlobalConfig; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

                          + * 组件配置信息表 服务类 + *

                          + * + * @author 沈松 + * @since 2022-01-03 + */ +public interface IGlobalConfigService extends IService { + + boolean save(String confService, String confKey, Object object, boolean encrypt) throws JsonProcessingException; + + Object get(String confService, String confKey, Object object); + + List getList(String confService, Object object); +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/service/RedisService.java b/ss-common/src/main/java/com/zxdmy/excite/common/service/RedisService.java new file mode 100644 index 0000000..176c156 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/service/RedisService.java @@ -0,0 +1,176 @@ +package com.zxdmy.excite.common.service; + + +import com.zxdmy.excite.common.config.RedisConfig; +import lombok.AllArgsConstructor; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +import java.io.Serializable; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +/** + *

                          + * Redis工具类 + *

                          + * + * @author 沈松 + * @since 2021-09-30 0030 19:15 + */ +@Service +@AllArgsConstructor +public class RedisService { + + private RedisTemplate redisTemplate; + + private RedisConfig redisConfig; + + /** + * 写入普通缓存,key由系统生成 + * + * @param value 值 + * @return 键 + */ + public String set(Serializable value) { + // 随机生成key + String key = UUID.randomUUID().toString(); + // 如果当前生成的key已经存在,重新生成 + if (hasKey(key)) { + return set(value); + } else { + // 写入缓存 + redisTemplate.opsForValue().set(redisConfig.getAllowPrefix() ? redisConfig.getPrefix() + key : key, value); + // 返回key + return key; + } + } + + /** + * 写入带过期时间的缓存,其中key由系统生成 + * + * @param value 值 + * @param expireTime 过期时间 + * @return 键key + */ + public String set(Serializable value, Long expireTime) { + // 随机生成key + String key = UUID.randomUUID().toString(); + // 如果当前随机生成的key已经存在,则重新生成 + if (hasKey(key)) { + return set(value, expireTime); + } else { + // 写入缓存 + redisTemplate.opsForValue().set(redisConfig.getAllowPrefix() ? redisConfig.getPrefix() + key : key, value, expireTime, TimeUnit.SECONDS); + // 返回key + return key; + } + } + + /** + * 写入普通缓存,指定key + * + * @param key 键 + * @param value 值 + * @return 结果 + */ + public boolean set(String key, Serializable value) { + boolean result = false; + try { + redisTemplate.opsForValue().set(redisConfig.getAllowPrefix() ? redisConfig.getPrefix() + key : key, value); + result = true; + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + /** + * 写入带过期时间的缓存,指定key + * + * @param key 键 + * @param value 值 + * @param expireTime 过期时间 + * @return 结果 + */ + public boolean set(String key, Serializable value, Long expireTime) { + boolean result = false; + try { + redisTemplate.opsForValue().set(redisConfig.getAllowPrefix() ? redisConfig.getPrefix() + key : key, value, expireTime, TimeUnit.SECONDS); + result = true; + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + /** + * 判断某个键是否存在 + * + * @param key 键 + * @return 存在与否 + */ + public boolean hasKey(String key) { + return Boolean.TRUE.equals(redisTemplate.hasKey(redisConfig.getAllowPrefix() ? redisConfig.getPrefix() + key : key)); + } + + /** + * 通过键获取值 + * + * @param key 缓存的键 + * @return 存在:值 | 不存在:null + */ + public Serializable get(String key) { + if (hasKey(key)) { + return redisTemplate.opsForValue().get(redisConfig.getAllowPrefix() ? redisConfig.getPrefix() + key : key); + } + return null; + } + + /** + * 获取某个键值的过期时间 + * + * @param key 键 + * @return 过期时间(秒),-1表示永久有效,-2表示不存在 + */ + public Long getExpire(String key) { + return redisTemplate.getExpire(redisConfig.getAllowPrefix() ? redisConfig.getPrefix() + key : key, TimeUnit.SECONDS); + } + + /** + * 通过键移出某个值 + * + * @param key 键 + */ + public void remove(String key) { + if (hasKey(key)) { + redisTemplate.delete(redisConfig.getAllowPrefix() ? redisConfig.getPrefix() + key : key); + } + } + + /** + * 删除包含指定前缀的值 + * + * @param prefix 键 + */ + public void removeByPrefix(String prefix) { + Set keys = redisTemplate.keys((redisConfig.getAllowPrefix() ? redisConfig.getPrefix() + prefix : prefix) + "*"); + if (null != keys && !keys.isEmpty()) { + redisTemplate.delete(keys); + } + } + + + /** + * 通过键移出某些值 + * + * @param keys 批量的键,示例:remove("001","002","003") + */ + public void remove(String... keys) { + for (String key : keys) { + remove(redisConfig.getAllowPrefix() ? redisConfig.getPrefix() + key : key); + } + + } +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/service/impl/GlobalConfigServiceImpl.java b/ss-common/src/main/java/com/zxdmy/excite/common/service/impl/GlobalConfigServiceImpl.java new file mode 100644 index 0000000..479a845 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/service/impl/GlobalConfigServiceImpl.java @@ -0,0 +1,149 @@ +package com.zxdmy.excite.common.service.impl; + +import cn.hutool.crypto.asymmetric.KeyType; +import cn.hutool.crypto.asymmetric.RSA; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.zxdmy.excite.common.config.ExciteConfig; +import com.zxdmy.excite.common.entity.GlobalConfig; +import com.zxdmy.excite.common.mapper.GlobalConfigMapper; +import com.zxdmy.excite.common.service.IGlobalConfigService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +/** + *

                          + * 组件配置信息表 服务实现类 + *

                          + * + * @author 沈松 + * @since 2022-01-03 + */ +@Service +@AllArgsConstructor +public class GlobalConfigServiceImpl extends ServiceImpl implements IGlobalConfigService { + + ObjectMapper objectMapper; + + ExciteConfig exciteConfig; + + /** + * 将配置信息保存/更新至数据库 + * + * @param confService 配置服务名 + * @param confKey 配置信息主键 + * @param object 实体类 + * @param encrypt 是否对value开启加密 + * @return 结果 + */ + @Override + public boolean save(String confService, String confKey, Object object, boolean encrypt) { + // 全局配置信息类 + GlobalConfig globalConfig = new GlobalConfig(); + globalConfig.setConfService(confService); + globalConfig.setConfKey(confKey); + // 实体类转JSON格式字符串 + String confValue; + try { + confValue = objectMapper.writeValueAsString(object); + } catch (JsonProcessingException e) { + System.out.println(e.getMessage()); + return false; + } + // 如果开启加密,则对confValue:使用公钥加密 + if (encrypt) { + RSA rsa = new RSA(null, exciteConfig.getRsaPublicKey()); + confValue = rsa.encryptBase64(confValue, KeyType.PublicKey); + globalConfig.setEncrypt(1); + } else { + globalConfig.setEncrypt(0); + } + globalConfig.setConfValue(confValue); + globalConfig.setUpdateTime(LocalDateTime.now()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("conf_service", confService).eq("conf_key", confKey); + return this.saveOrUpdate(globalConfig, queryWrapper); + } + + /** + * 从数据库中读取一条配置信息 + * + * @param confService 配置信息服务名 + * @param confKey 配置信息的key + * @param object 配置信息实体 + * @return 配置信息实体 + */ + @Override + public Object get(String confService, String confKey, Object object) { + // 根据要求查询指定【模块】和【key】的【value】 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("conf_service", confService).eq("conf_key", confKey); + GlobalConfig globalConfig = this.getOne(queryWrapper); + String confValue = globalConfig.getConfValue(); + // 为空:返回null + if (null == confValue || "".equals(confValue)) { + return null; + } + // 如果开启了加密:使用私钥进行解密 + if (1 == globalConfig.getEncrypt()) { + RSA rsa = new RSA(exciteConfig.getRsaPrivateKey(), null); + confValue = rsa.decryptStr(confValue, KeyType.PrivateKey); + } + // 尝试转换成指定类型 + try { + object = objectMapper.readValue(confValue, object.getClass()); + } catch (IOException e) { + // 转换出错:报错并返回空 + System.out.println(e.getMessage()); + return null; + } + // 返回转换后的结果 + return object; + } + + /** + * 根据服务的名字,获取其所有的配置信息 + * + * @param confService 服务名称 + * @param object 类别 + * @return 结果List + */ + @Override + public List getList(String confService, Object object) { + // 根据要求查询指定【服务模块】的【value】 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("conf_service", confService); + List globalConfigList = this.list(queryWrapper); + if (globalConfigList.size() == 0) { + return null; + } + List objectList = new ArrayList<>(); + for (GlobalConfig globalConfig : globalConfigList) { + String confValue = globalConfig.getConfValue(); + // 为空:继续下一个 + if (null == confValue || "".equals(confValue)) { + continue; + } + // 如果开启了加密:使用私钥进行解密 + if (1 == globalConfig.getEncrypt()) { + RSA rsa = new RSA(exciteConfig.getRsaPrivateKey(), null); + confValue = rsa.decryptStr(confValue, KeyType.PrivateKey); + } + // 尝试转换成指定类型 + try { + objectList.add(objectMapper.readValue(confValue, object.getClass())); + } catch (IOException e) { + // 转换出错:报错并返回空 + System.out.println(e.getMessage()); + } + } + return objectList; + } +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/utils/ArithUtils.java b/ss-common/src/main/java/com/zxdmy/excite/common/utils/ArithUtils.java new file mode 100644 index 0000000..a3f5e85 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/utils/ArithUtils.java @@ -0,0 +1,114 @@ +package com.zxdmy.excite.common.utils; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +/** + * 精确的浮点数运算工具类 + * + * @author 沈松 + * @since 2022/1/22 21:30 + */ +public class ArithUtils { + + /** + * 默认除法运算精度 + */ + private static final int DEF_DIV_SCALE = 10; + + /** + * 这个类不能实例化 + */ + private ArithUtils() { + } + + /** + * 提供精确的加法运算。 + * + * @param v1 被加数 + * @param v2 加数 + * @return 两个参数的和 + */ + public static double add(double v1, double v2) { + BigDecimal b1 = new BigDecimal(Double.toString(v1)); + BigDecimal b2 = new BigDecimal(Double.toString(v2)); + return b1.add(b2).doubleValue(); + } + + /** + * 提供精确的减法运算。 + * + * @param v1 被减数 + * @param v2 减数 + * @return 两个参数的差 + */ + public static double sub(double v1, double v2) { + BigDecimal b1 = new BigDecimal(Double.toString(v1)); + BigDecimal b2 = new BigDecimal(Double.toString(v2)); + return b1.subtract(b2).doubleValue(); + } + + /** + * 提供精确的乘法运算。 + * + * @param v1 被乘数 + * @param v2 乘数 + * @return 两个参数的积 + */ + public static double mul(double v1, double v2) { + BigDecimal b1 = new BigDecimal(Double.toString(v1)); + BigDecimal b2 = new BigDecimal(Double.toString(v2)); + return b1.multiply(b2).doubleValue(); + } + + /** + * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 + * 小数点以后10位,以后的数字四舍五入。 + * + * @param v1 被除数 + * @param v2 除数 + * @return 两个参数的商 + */ + public static double div(double v1, double v2) { + return div(v1, v2, DEF_DIV_SCALE); + } + + /** + * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 + * 定精度,以后的数字四舍五入。 + * + * @param v1 被除数 + * @param v2 除数 + * @param scale 表示表示需要精确到小数点以后几位。 + * @return 两个参数的商 + */ + public static double div(double v1, double v2, int scale) { + if (scale < 0) { + throw new IllegalArgumentException( + "The scale must be a positive integer or zero"); + } + BigDecimal b1 = new BigDecimal(Double.toString(v1)); + BigDecimal b2 = new BigDecimal(Double.toString(v2)); + if (b1.compareTo(BigDecimal.ZERO) == 0) { + return BigDecimal.ZERO.doubleValue(); + } + return b1.divide(b2, scale, RoundingMode.HALF_UP).doubleValue(); + } + + /** + * 提供精确的小数位四舍五入处理。 + * + * @param v 需要四舍五入的数字 + * @param scale 小数点后保留几位 + * @return 四舍五入后的结果 + */ + public static double round(double v, int scale) { + if (scale < 0) { + throw new IllegalArgumentException( + "The scale must be a positive integer or zero"); + } + BigDecimal b = new BigDecimal(Double.toString(v)); + BigDecimal one = BigDecimal.ONE; + return b.divide(one, scale, RoundingMode.HALF_UP).doubleValue(); + } +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/utils/DateUtils.java b/ss-common/src/main/java/com/zxdmy/excite/common/utils/DateUtils.java new file mode 100644 index 0000000..0642fbe --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/utils/DateUtils.java @@ -0,0 +1,144 @@ +package com.zxdmy.excite.common.utils; + +import org.apache.commons.lang3.time.DateFormatUtils; + +import java.lang.management.ManagementFactory; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * 时间工具类 + * + * @author 沈松 + * @since 2022/1/22 21:31 + */ +public class DateUtils extends org.apache.commons.lang3.time.DateUtils { + + public static String YYYY = "yyyy"; + + public static String YYYY_MM = "yyyy-MM"; + + public static String YYYY_MM_DD = "yyyy-MM-dd"; + + public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; + + public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; + + private static String[] parsePatterns = { + "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", + "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", + "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; + + /** + * 获取当前Date型日期 + * + * @return Date() 当前日期 + */ + public static Date getNowDate() { + return new Date(); + } + + /** + * 获取当前日期, 默认格式为yyyy-MM-dd + * + * @return String + */ + public static String getDate() { + return dateTimeNow(YYYY_MM_DD); + } + + public static final String getTime() { + return dateTimeNow(YYYY_MM_DD_HH_MM_SS); + } + + public static final String dateTimeNow() { + return dateTimeNow(YYYYMMDDHHMMSS); + } + + public static final String dateTimeNow(final String format) { + return parseDateToStr(format, new Date()); + } + + public static final String dateTime(final Date date) { + return parseDateToStr(YYYY_MM_DD, date); + } + + public static final String parseDateToStr(final String format, final Date date) { + return new SimpleDateFormat(format).format(date); + } + + public static final Date dateTime(final String format, final String ts) { + try { + return new SimpleDateFormat(format).parse(ts); + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + + /** + * 日期路径 即年/月/日 如2018/08/08 + */ + public static final String datePath() { + Date now = new Date(); + return DateFormatUtils.format(now, "yyyy/MM/dd"); + } + + /** + * 日期路径 即年/月/日 如20180808 + */ + public static final String dateTime() { + Date now = new Date(); + return DateFormatUtils.format(now, "yyyyMMdd"); + } + + /** + * 日期型字符串转化为日期 格式 + */ + public static Date parseDate(Object str) { + if (str == null) { + return null; + } + try { + return parseDate(str.toString(), parsePatterns); + } catch (ParseException e) { + return null; + } + } + + /** + * 获取服务器启动时间 + */ + public static Date getServerStartDate() { + long time = ManagementFactory.getRuntimeMXBean().getStartTime(); + return new Date(time); + } + + /** + * 计算相差天数 + */ + public static int differentDaysByMillisecond(Date date1, Date date2) { + return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24))); + } + + /** + * 计算两个时间差 + */ + public static String getDatePoor(Date endDate, Date nowDate) { + long nd = 1000 * 24 * 60 * 60; + long nh = 1000 * 60 * 60; + long nm = 1000 * 60; + // long ns = 1000; + // 获得两个时间的毫秒时间差异 + long diff = endDate.getTime() - nowDate.getTime(); + // 计算差多少天 + long day = diff / nd; + // 计算差多少小时 + long hour = diff % nd / nh; + // 计算差多少分钟 + long min = diff % nd % nh / nm; + // 计算差多少秒//输出结果 + // long sec = diff % nd % nh % nm / ns; + return day + "天" + hour + "小时" + min + "分钟"; + } +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/utils/HttpServletRequestUtil.java b/ss-common/src/main/java/com/zxdmy/excite/common/utils/HttpServletRequestUtil.java new file mode 100644 index 0000000..788d7de --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/utils/HttpServletRequestUtil.java @@ -0,0 +1,172 @@ +package com.zxdmy.excite.common.utils; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.useragent.UserAgent; +import cn.hutool.http.useragent.UserAgentUtil; +import org.springframework.util.StreamUtils; +import org.springframework.util.StringUtils; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.io.InputStream; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.nio.charset.Charset; +import java.util.*; + +/** + *

                          + * 描述 + *

                          + * + * @author 沈松 + * @since 2021/12/9 16:54 + */ +public class HttpServletRequestUtil { + + /** + * 获取request对象 + * + * @return request对象 + */ + public static HttpServletRequest getRequest() { + return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); + } + + /** + * 获取请求的URI(非URL) + * + * @return 格式如:/system/user/list?size=10&page=2 + */ + public static String getRequestURI() { + HttpServletRequest request = getRequest(); + // URI中的查询字符串 + String queryString = request.getQueryString(); + // 请求URL中不含字符串 + if (!StringUtils.hasText(queryString)) { + // 只返回URI + return request.getRequestURI(); + } + // 否则返回包含查询的字符串 + return request.getRequestURI() + "?" + queryString; + } + + /** + * 获取浏览器的UA + * + * @return UA对象(Hutool工具箱中的) + */ + public static UserAgent getRequestUserAgent() { + HttpServletRequest request = getRequest(); + return UserAgentUtil.parse(request.getHeader("User-Agent")); + } + + /** + * 获取请求用户的IP + * + * @return IP字符串 + */ + public static String getRemoteIP() { + HttpServletRequest request = getRequest(); + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("X-Forwarded-For"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("X-Real-IP"); + } + + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + // 多次反向代理后会有多个IP值,第一个为真实IP。 + int index = ip.indexOf(','); + if (index != -1) { + ip = ip.substring(0, index); + } + return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip; + } + + /** + * 取得请求头信息 name:value + */ + public static Map getHeaders() { + HttpServletRequest request = getRequest(); + Map map = new HashMap<>(32); + Enumeration headerNames = request.getHeaderNames(); + while (headerNames.hasMoreElements()) { + String key = (String) headerNames.nextElement(); + String value = request.getHeader(key); + map.put(key, value); + } + return map; + } + + /** + * 获取请求体信息 + */ + public static String getBody() { + HttpServletRequest request = getRequest(); + InputStream inputStream = null; + try { + inputStream = request.getInputStream(); + return StreamUtils.copyToString(inputStream, Charset.forName("utf-8")); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + + } + } + } + return StrUtil.EMPTY; + } + + public static String getAllRequestInfo() { + StringBuilder sb = new StringBuilder(); + sb.append("请求详情为:").append(StrUtil.CRLF); + sb.append("RemoteAddress: ").append(getRemoteIP()).append(StrUtil.CRLF); + sb.append("Method: ").append(getRequest().getMethod()).append(StrUtil.CRLF); + sb.append("URI: ").append(getRequestURI()).append(StrUtil.CRLF); + sb.append("Headers: ").append(StrUtil.join(StrUtil.CRLF + " ", mapToList(getHeaders()))).append(StrUtil.CRLF); + sb.append("Body: ").append(getBody()).append(StrUtil.CRLF); + return sb.toString(); + } + + private static List mapToList(Map parameters) { + List parametersList = new ArrayList(); + parameters.forEach((name, value) -> { + parametersList.add(name + "=" + value); + }); + return parametersList; + } + + public static String getHostName() { + try { + return InetAddress.getLocalHost().getHostName(); + } catch (UnknownHostException e) { + System.out.println(e.getMessage()); + } + return "未知"; + } + + public static String getHostIp() { + try { + return InetAddress.getLocalHost().getHostAddress(); + } catch (UnknownHostException e) { + System.out.println(e.getMessage()); + } + return "127.0.0.1"; + } +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/utils/KaptchaMathOneTextCreator.java b/ss-common/src/main/java/com/zxdmy/excite/common/utils/KaptchaMathOneTextCreator.java new file mode 100644 index 0000000..ede1502 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/utils/KaptchaMathOneTextCreator.java @@ -0,0 +1,28 @@ +package com.zxdmy.excite.common.utils; + +import com.google.code.kaptcha.text.impl.DefaultTextCreator; + +import java.security.SecureRandom; +import java.util.Map; +import java.util.Random; + +/** + *

                          + * 验证码随机文本生成器之:一位数的加减乘除 + *

                          + * + * @author 沈松 + * @since 2021-10-04 0004 20:24 + */ +public class KaptchaMathOneTextCreator extends DefaultTextCreator { + + @Override + public String getText() { +// Random random = new SecureRandom(); + SecureRandom random = new SecureRandom(); + // 生成两个随机数,随机数范围:[0,10),并返回结果 + Map result = MyCaptchaUtil.mathTextCreator(random.nextInt(10), random.nextInt(10)); + return result.get("resultString"); + } + +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/utils/KaptchaMathTwoTextCreator.java b/ss-common/src/main/java/com/zxdmy/excite/common/utils/KaptchaMathTwoTextCreator.java new file mode 100644 index 0000000..01dbe43 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/utils/KaptchaMathTwoTextCreator.java @@ -0,0 +1,28 @@ +package com.zxdmy.excite.common.utils; + +import com.google.code.kaptcha.text.impl.DefaultTextCreator; + +import java.security.SecureRandom; +import java.util.Map; +import java.util.Random; + +/** + *

                          + * 验证码随机文本生成器之:两位数的加减乘除 + *

                          + * + * @author 沈松 + * @since 2021-10-04 0004 20:26 + */ +public class KaptchaMathTwoTextCreator extends DefaultTextCreator { + + @Override + public String getText() { +// Random random = new SecureRandom(); + SecureRandom random = new SecureRandom(); + // 保存计算结果 + Map result = MyCaptchaUtil.mathTextCreator(random.nextInt(100), random.nextInt(100)); + // 生成两个随机数,随机数范围:[0,100),并返回结果 + return result.get("resultString"); + } +} diff --git a/ss-common/src/main/java/com/zxdmy/excite/common/utils/MyCaptchaUtil.java b/ss-common/src/main/java/com/zxdmy/excite/common/utils/MyCaptchaUtil.java new file mode 100644 index 0000000..af7ac58 --- /dev/null +++ b/ss-common/src/main/java/com/zxdmy/excite/common/utils/MyCaptchaUtil.java @@ -0,0 +1,71 @@ +package com.zxdmy.excite.common.utils; + +import java.security.SecureRandom; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; + +/** + *

                          + * 自定义的验证码工具类 + *

                          + * + * @author 沈松 + * @since 2021-10-04 0004 20:54 + */ +public class MyCaptchaUtil { + + /** + * 生成数学文本算式 + * + * @param a 数字 + * @param b 数字 + * @return 字符 + */ + public static Map mathTextCreator(int a, int b) { + SecureRandom random = new SecureRandom(); +// Random random = new SecureRandom(); + // 生成随机操作,操作范围:[0,4),分别表示: + - * / + int op = random.nextInt(4); + // 定义计算的结果 + Integer result = 0; + // 定义构建的算式字符串 + StringBuilder resultString = new StringBuilder(); + // 运算符:- + if (1 == op) { + if (a >= b) { + result = a - b; + resultString.append(a).append("-").append(b).append("=?@").append(result); + } else { + result = b - a; + resultString.append(b).append("-").append(a).append("=?@").append(result); + } + } + // * + else if (2 == op) { + result = a * b; + resultString.append(a).append("*").append(b).append("=?@").append(result); + } + // / + else if (3 == op) { + if (a != 0 && b % a == 0) { + result = b / a; + resultString.append(b).append("/").append(a).append("=?@").append(result); + } else if (b != 0 && a % b == 0) { + result = a / b; + resultString.append(a).append("/").append(b).append("=?@").append(result); + } else { + return mathTextCreator(a, b); + } + } + // + + else { + result = b + a; + resultString.append(a).append("+").append(b).append("=?@").append(result); + } + Map ret = new HashMap(); + ret.put("resultCode", result.toString()); + ret.put("resultString", resultString.toString()); + return ret; + } +} diff --git a/ss-common/src/main/resources/mapper/GlobalConfigMapper.xml b/ss-common/src/main/resources/mapper/GlobalConfigMapper.xml new file mode 100644 index 0000000..3d2a0da --- /dev/null +++ b/ss-common/src/main/resources/mapper/GlobalConfigMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + id, conf_service, conf_key, conf_value, encrypt, create_time, update_time, delete_time + + + diff --git a/ss-component/README.md b/ss-component/README.md new file mode 100644 index 0000000..b4f0f15 --- /dev/null +++ b/ss-component/README.md @@ -0,0 +1,3 @@ +# Ss-Component 模块 + +主要实现各种第三方Spring组件服务。 diff --git a/ss-component/pom.xml b/ss-component/pom.xml new file mode 100644 index 0000000..8618196 --- /dev/null +++ b/ss-component/pom.xml @@ -0,0 +1,70 @@ + + + 4.0.0 + + com.zxdmy.excite + shensong + 2.0.0 + + + ss-component + 2.0.0 + ss-component + ss-component + + + + + com.zxdmy.excite + ss-common + 2.0.0 + + + + + + com.qiniu + qiniu-java-sdk + 7.9.3 + + + + + com.aliyun + dysmsapi20170525 + 2.0.8 + + + + + com.aliyun.oss + aliyun-sdk-oss + 3.13.2 + + + + + me.zhyd.oauth + JustAuth + 1.16.5 + + + + + com.alipay.sdk + alipay-easysdk + 2.2.1 + + + + + com.github.binarywang + weixin-java-pay + 4.2.2.B + + + + + + diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/alipay/AlipayService.java b/ss-component/src/main/java/com/zxdmy/excite/component/alipay/AlipayService.java new file mode 100644 index 0000000..32e899d --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/alipay/AlipayService.java @@ -0,0 +1,362 @@ +package com.zxdmy.excite.component.alipay; + +import cn.hutool.core.util.IdUtil; +import com.alipay.easysdk.factory.Factory; +import com.alipay.easysdk.kernel.Config; +import com.alipay.easysdk.kernel.util.ResponseChecker; +import com.alipay.easysdk.payment.app.models.AlipayTradeAppPayResponse; +import com.alipay.easysdk.payment.common.models.AlipayDataDataserviceBillDownloadurlQueryResponse; +import com.alipay.easysdk.payment.common.models.AlipayTradeFastpayRefundQueryResponse; +import com.alipay.easysdk.payment.common.models.AlipayTradeQueryResponse; +import com.alipay.easysdk.payment.common.models.AlipayTradeRefundResponse; +import com.alipay.easysdk.payment.facetoface.models.AlipayTradePrecreateResponse; +import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse; +import com.alipay.easysdk.payment.wap.models.AlipayTradeWapPayResponse; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.zxdmy.excite.common.exception.ServiceException; +import com.zxdmy.excite.common.service.IGlobalConfigService; +import com.zxdmy.excite.component.bo.AlipayBO; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * 支付宝支付服务实现类 + * https://github.com/alipay/alipay-easysdk/tree/master/java + * + * @author 沈松 + * @since 2022-01-02 0002 23:31 + */ +@Service +@AllArgsConstructor +public class AlipayService { + + private IGlobalConfigService configService; + + private static final String DEFAULT_SERVICE = "alipay"; + + private static final String DEFAULT_KEY = "alipay"; + + /** + * 保存信息至数据库 + * + * @param alipayBO 支付宝支付培配置信息 + * @return 保存结果:T|F + */ + public boolean saveConfig(AlipayBO alipayBO) { + // 必填信息不能为空 + if (null == alipayBO.getAppId() || null == alipayBO.getMerchantPrivateKey()) { + throw new ServiceException("APPID和应用私钥不能为空,请检查!"); + } + // 如果支付宝公钥为空,则三个证书不能为空 + if (null == alipayBO.getAlipayPublicKey()) + if (null == alipayBO.getMerchantCertPath() || null == alipayBO.getAlipayCertPath() || null == alipayBO.getAlipayRootCertPath()) + throw new ServiceException("证书模式下,[应用公钥证书][支付宝公钥证书][支付宝根证书]不能为空,请检查!"); + // 保存信息至数据库 + try { + return configService.save(DEFAULT_SERVICE, alipayBO.getKey() != null ? alipayBO.getKey() : DEFAULT_KEY, alipayBO, true); + } catch (JsonProcessingException e) { + throw new ServiceException(e.getMessage()); + } + } + + /** + * 从数据库读取配置信息(指定KEY) + * + * @param confKey 本条支付信息的KEY,如果为null,读取默认KEY + * @return 支付宝支付配置信息 + */ + public AlipayBO getConfig(String confKey) { + if (null == confKey) { + return this.getConfig(); + } + return (AlipayBO) configService.get(DEFAULT_SERVICE, confKey, new AlipayBO()); + } + + /** + * 从数据库读取配置信息(默认KEY) + * + * @return 支付宝支付配置信息 + */ + public AlipayBO getConfig() { + return this.getConfig(DEFAULT_KEY); + } + + /** + * 统一支付服务接口(当面付、电脑网站支付、手机网站支付、APP支付) + * + * @param confKey 支付宝配置信息的KEY。如果加载默认的KEY,输入null + * @param payType 支付类型:当面付(faceToFace),电脑网站支付(page),手机网站支付(wap),APP支付(app) + * @param subject 商品名称 + * @param outTradeNo 商户订单号:商户内唯一 + * @param totalAmount 总金额(单位:元),实例:12.34 + * @param returnUrl 支付成功后跳转页面(只针对网站支付有效) + * @param quitUrl 支付取消跳转页面(只针对手机网站支付有效) + * @return 返回结果:当面付为二维码链接,其他均为网站Body代码 + */ + public String pay(String confKey, String payType, String subject, String outTradeNo, String totalAmount, String returnUrl, String quitUrl) { + // 必填信息不能为空 + if (null == subject || null == outTradeNo || null == totalAmount) { + throw new ServiceException("商品名称、商户订单号、商品价格不能为空!"); + } + // 1. 设置参数 + Factory.setOptions(this.getOptions(confKey)); + try { + // 2. 调用API发起创建支付 + switch (payType.toLowerCase()) { + // 当面付 + case "facetoface": + // 创建订单 + AlipayTradePrecreateResponse response = Factory.Payment.FaceToFace().preCreate(subject, outTradeNo, totalAmount); + // 成功? + if (ResponseChecker.success(response)) + return response.getQrCode(); + break; + // 电脑网站支付 + case "page": + if (null == returnUrl) { + throw new ServiceException("电脑网站支付的跳转地址(returnUrl)不能为空!"); + } + // 调用接口 + AlipayTradePagePayResponse response1 = Factory.Payment.Page().pay(subject, outTradeNo, totalAmount, returnUrl); + // 成功? + if (ResponseChecker.success(response1)) + return response1.getBody(); + break; + // 手机网站支付 + case "wap": + if (null == returnUrl || null == quitUrl) { + throw new ServiceException("手机网站支付的失败退出地址(quitUrl)、成功跳转地址(returnUrl)不能为空!"); + } + AlipayTradeWapPayResponse response2 = Factory.Payment.Wap().pay(subject, outTradeNo, totalAmount, quitUrl, returnUrl); + // 成功 + if (ResponseChecker.success(response2)) + return response2.getBody(); + break; + // APP支付 + case "app": + AlipayTradeAppPayResponse response3 = Factory.Payment.App().pay(subject, outTradeNo, totalAmount); + // 成功 + if (ResponseChecker.success(response3)) + return response3.getBody(); + break; + // 其他类型:错误 + default: + throw new ServiceException("输入的支付类型[" + payType + "]不在许可支付类型范围内。许可类型:当面付(faceToFace),电脑网站支付(page),手机网站支付(wap),APP支付(app)"); + } + } catch (Exception e) { + System.err.println("调用遭遇异常,原因:" + e.getMessage()); + throw new ServiceException(e.getMessage()); + } + return null; + } + + /** + * 查询支付订单接口 + * + * @param confKey 可选:支付宝配置信息的KEY。如果加载默认的KEY,输入null + * @param tradeNo 特殊可选:支付宝交易号(订单号) + * @param outTradeNo 特殊可选:商家订单号 + * @return 查询成功:{ 0:Y,1:支付宝交易号,2:商家订单号,3:交易状态,4:订单金额,5:买家ID,6:买家支付宝账号 }
                          查询失败:{ E,错误代码,错误描述 } + * @apiNote tradeNo 和 outTradeNo 不能同时为空。同时存在优先取 tradeNo。 + */ + public String[] queryPay(String confKey, String tradeNo, String outTradeNo) { + // 判断 + if (null == tradeNo && null == outTradeNo) { + throw new ServiceException("tradeNo 和 outTradeNo 不能同时为空!"); + } + // 设置参数 + Factory.setOptions(this.getOptions(confKey)); + try { + // 执行查询 + AlipayTradeQueryResponse response = Factory.Payment.Common().optional("trade_no", tradeNo).query(outTradeNo); + // 请求成功(即返回信息中没有sub_code) + if (ResponseChecker.success(response)) { + return new String[]{ + "Y", + response.tradeNo, + response.outTradeNo, + response.tradeStatus, + response.totalAmount, + response.buyerUserId, + response.buyerLogonId + }; + } else { + return new String[]{"E", response.subCode, response.subMsg}; + } + } catch (Exception e) { + System.err.println("调用遭遇异常,原因:" + e.getMessage()); + throw new ServiceException(e.getMessage()); + } + } + + /** + * 退款接口(支持部分退款) + * + * @param confKey 可选:支付宝配置信息的KEY。如果加载默认的KEY,输入null + * @param tradeNo 特殊可选:商户订单号 + * @param outTradeNo 特殊可选:商户订单号 + * @param refundAmount 必填:退款金额 + * @param reason 可选:退款原因 + * @return 本次请求退款成功:{ 0:Y,1:支付宝交易号,2:商家订单号,3:退款请求号,4:总退款金额 }
                          + * 历史请求退款成功:{ 0:N,1:支付宝交易号,2:商家订单号,3:退款请求号,4:退款金额 }
                          + * 退款发生错误:{ 0:E,1:错误代码,2:错误描述 } + * @apiNote tradeNo 和 outTradeNo 不能同时为空。同时存在优先取 tradeNo。 + */ + public String[] refund(String confKey, String tradeNo, String outTradeNo, String refundAmount, String reason) { + // 判断 + if (null == tradeNo && null == outTradeNo) { + throw new ServiceException("tradeNo 和 outTradeNo 不能同时为空!"); + } + // 设置参数 + Factory.setOptions(this.getOptions(confKey)); + try { + // 生成唯一的款请求号 + String outRequestNo = IdUtil.simpleUUID(); + // 发起请求 + AlipayTradeRefundResponse response = Factory.Payment.Common() + // 支付宝交易号 + .optional("trade_no", tradeNo) + // 退款原因 + .optional("refund_reason", reason) + // 退款请求号 + .optional("out_request_no", outRequestNo) + // 执行退款 + .refund(outTradeNo, refundAmount); + // 如果请求成功(即返回信息中没有sub_code) + if (ResponseChecker.success(response)) { + return new String[]{ + // 本次请求退款状态(即资金有改变,详情:https://opensupport.alipay.com/support/knowledge/27585/201602348776 ) + response.fundChange, + response.tradeNo, + response.outTradeNo, + outRequestNo, + response.refundFee + }; + } else { + return new String[]{"E", response.subCode, response.subMsg}; + } + } catch (Exception e) { + System.err.println("调用遭遇异常,原因:" + e.getMessage()); + throw new ServiceException(e.getMessage()); + } + } + + /** + * 查询退款 + * + * @param confKey 可选:支付宝配置信息的KEY。如果加载默认的KEY,输入null + * @param outTradeNo 必填:商户订单号 + * @param outRequestNo 必填:退款请求号 + * @return 已退款:{ Y,支付宝交易号,商家订单号,退款请求号,订单金额,退款金额,退款原因 }
                          未退款:{ N,描述 }
                          发生错误:{ E,错误代码,错误描述 } + */ + public String[] queryRefund(String confKey, String outTradeNo, String outRequestNo) { + // 设置参数 + Factory.setOptions(this.getOptions(confKey)); + // 如果请求号为空,则表示全额退款,设置请求号位商家订单号 + if (null == outRequestNo) { + outRequestNo = outTradeNo; + } + try { + // 发起请求 + AlipayTradeFastpayRefundQueryResponse response = Factory.Payment.Common().queryRefund(outTradeNo, outRequestNo); + // 如果请求成功(即返回信息中没有sub_code) + if (ResponseChecker.success(response)) { + // 如果该接口返回了查询数据,则代表退款成功(详情:https://opensupport.alipay.com/support/knowledge/27585/201602348776 ) + if (null != response.refundAmount) { + return new String[]{ + "Y", + response.tradeNo, + response.outTradeNo, + response.outRequestNo, + response.totalAmount, + response.refundAmount, + response.refundReason + }; + } else { + return new String[]{ + "N", + "该订单未退款或输入的退款请求号有误,请检查!" + }; + } + } else { + return new String[]{"E", response.subCode, response.subMsg}; + } + } catch (Exception e) { + System.err.println("调用遭遇异常,原因:" + e.getMessage()); + throw new ServiceException(e.getMessage()); + } + } + + /** + * 下载对账单(不能查询当天或当月的) + * https://developer.aliyun.com/article/710922 + * + * @param confKey 可选:支付宝配置信息的KEY。如果加载默认的KEY,输入null + * @param date 必填:交易的具体日期(如2022-01-01)或月份(2021-12) + * @return 获取成功:{Y,下载URL}
                          发生错误:{ E,错误代码,错误描述 } + */ + public String[] downloadBill(String confKey, String date) { + // 设置参数 + Factory.setOptions(this.getOptions(confKey)); + try { + // 发送请求 + AlipayDataDataserviceBillDownloadurlQueryResponse response = Factory.Payment.Common().downloadBill("trade", date); + + // 如果请求成功(即返回信息中没有sub_code) + if (ResponseChecker.success(response)) { + return new String[]{ + "Y", + response.billDownloadUrl + }; + } else { + return new String[]{"E", response.subCode, response.subMsg}; + } + + } catch (Exception e) { + System.err.println("调用遭遇异常,原因:" + e.getMessage()); + throw new ServiceException(e.getMessage()); + } + } + + + /** + * 读取配置信息 + * + * @param confKey 支付宝配置信息的KEY。如果加载默认的KEY,输入null + * @return 配置信息 + */ + private Config getOptions(String confKey) { + // 从数据库中读取配置信息 + AlipayBO alipayBO = this.getConfig(confKey); + // 将配置信息写入支付宝支付配置类中 + Config config = new Config(); + config.protocol = alipayBO.getProtocol(); + config.gatewayHost = alipayBO.getGatewayHost(); + config.signType = alipayBO.getSignType(); + + config.appId = alipayBO.getAppId(); + + // 为避免私钥随源码泄露,推荐从文件中读取私钥字符串而不是写入源码中 + config.merchantPrivateKey = alipayBO.getMerchantPrivateKey(); + // 如果三个证书不为空,则优先设置三个证书 + if (null != alipayBO.getMerchantCertPath() && null != alipayBO.getAlipayCertPath() && null != alipayBO.getAlipayRootCertPath()) { + //注:证书文件路径支持设置为文件系统中的路径或CLASS_PATH中的路径,优先从文件系统中加载,加载失败后会继续尝试从CLASS_PATH中加载 + config.merchantCertPath = alipayBO.getMerchantCertPath(); + config.alipayCertPath = alipayBO.getAlipayCertPath(); + config.alipayRootCertPath = alipayBO.getAlipayRootCertPath(); + } else if (null != alipayBO.getAlipayPublicKey()) { + //注:如果采用非证书模式,则无需赋值上面的三个证书路径,改为赋值如下的支付宝公钥字符串即可 + config.alipayPublicKey = alipayBO.getAlipayPublicKey(); + } else { + throw new ServiceException("配置信息有误:证书模式配置不完整或未配置公钥模式,请检查!"); + } + + //可设置异步通知接收服务地址(可选) + config.notifyUrl = alipayBO.getNotifyUrl(); + + //可设置AES密钥,调用AES加解密相关接口时需要(可选) + config.encryptKey = alipayBO.getEncryptKey(); + + return config; + } +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/aliyun/AliyunOssService.java b/ss-component/src/main/java/com/zxdmy/excite/component/aliyun/AliyunOssService.java new file mode 100644 index 0000000..c6d494b --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/aliyun/AliyunOssService.java @@ -0,0 +1,127 @@ +package com.zxdmy.excite.component.aliyun; + +import cn.hutool.core.codec.Base64; +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.model.PolicyConditions; +import com.aliyun.oss.model.PutObjectResult; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.zxdmy.excite.common.exception.ServiceException; +import com.zxdmy.excite.common.service.IGlobalConfigService; +import com.zxdmy.excite.component.bo.AliyunOssBO; +import com.zxdmy.excite.component.bo.AliyunSmsBO; +import com.zxdmy.excite.component.vo.AliyunOssPolicyVO; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.util.Date; + +/** + * 阿里云对象存储服务 + * + * @author 沈松 + * @since 2022/1/5 20:37 + */ +@Service +@AllArgsConstructor +public class AliyunOssService { + + IGlobalConfigService configService; + + private static final String DEFAULT_SERVICE = "aliyunOss"; + + private static final String DEFAULT_KEY = "aliyunOss"; + + public boolean saveConfig(AliyunOssBO aliyunOssBO) throws JsonProcessingException { + if (null == aliyunOssBO.getBucketName() || null == aliyunOssBO.getBucketDomain() || null == aliyunOssBO.getEndpoint() || null == aliyunOssBO.getAccessKeyId() || null == aliyunOssBO.getAccessKeySecret()) { + throw new ServiceException("部分参数为空,请检查!"); + } + if (null == aliyunOssBO.getKey()) { + return configService.save(DEFAULT_SERVICE, DEFAULT_KEY, aliyunOssBO, true); + } else { + return configService.save(DEFAULT_SERVICE, aliyunOssBO.getKey(), aliyunOssBO, true); + } + } + + public AliyunOssBO getConfig(String confKey) { + AliyunOssBO aliyunOssBO = new AliyunOssBO(); + return (AliyunOssBO) configService.get(DEFAULT_SERVICE, confKey, aliyunOssBO); + } + + public AliyunOssBO getConfig() { + return this.getConfig(DEFAULT_KEY); + } + + + + /** + * 前端直传用的方法 + * + * @return + */ + public AliyunOssPolicyVO createUploadToken(String confKey, String fileName, Long expireTime) { + // 读取秘钥等信息 + AliyunOssBO aliyunOssBO = this.getConfig(confKey); + // 创建OSSClient实例。 + OSS oss = new OSSClientBuilder().build(aliyunOssBO.getEndpoint(), aliyunOssBO.getAccessKeyId(), aliyunOssBO.getAccessKeySecret()); + + PolicyConditions policyConditions = new PolicyConditions(); + // 策略:最大上传文件1G + policyConditions.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000); + + long expireEndTime = System.currentTimeMillis() + expireTime * 1000; + Date expireEndDate = new Date(expireEndTime); + try { + // 生成上传策略 + String postPolicy = oss.generatePostPolicy(expireEndDate, policyConditions); + // 生成签名 + String postSignature = oss.calculatePostSignature(postPolicy); + // 策略转码 + String base64Policy = Base64.encode(postPolicy); + + // 构造返回数据 + return new AliyunOssPolicyVO() + .setAccessKeyId(aliyunOssBO.getAccessKeyId()) + .setPolicy(base64Policy) + .setSignature(postSignature) + .setHost(aliyunOssBO.getBucketDomain()) + .setCallback("") + .setKey(fileName); + } catch (Exception e) { + throw new ServiceException(e.getMessage()); + } finally { + oss.shutdown(); + } + } + + /** + * 前端直传用的方法 + * + * @return + */ + public AliyunOssPolicyVO createUploadToken(String fileName, Long expireTime) { + return this.createUploadToken(DEFAULT_KEY, fileName, expireTime); + } + + + public boolean uploadFile(String confKey, File file) { + // 读取配置 + AliyunOssBO aliyunOssBO = this.getConfig(confKey); + // 创建OSSClient实例。 + OSS oss = new OSSClientBuilder().build(aliyunOssBO.getEndpoint(), aliyunOssBO.getAccessKeyId(), aliyunOssBO.getAccessKeySecret()); + try { + PutObjectResult putObjectRequest = oss.putObject(aliyunOssBO.getBucketName(), file.getName(), file); + return putObjectRequest.getResponse().isSuccessful(); + } catch (Exception e) { + System.out.println(e.getMessage()); + return false; + } finally { + oss.shutdown(); + } + } + + public boolean uploadFile(File file) { + return this.uploadFile(DEFAULT_KEY, file); + } +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/aliyun/AliyunSmsService.java b/ss-component/src/main/java/com/zxdmy/excite/component/aliyun/AliyunSmsService.java new file mode 100644 index 0000000..2027ef8 --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/aliyun/AliyunSmsService.java @@ -0,0 +1,184 @@ +package com.zxdmy.excite.component.aliyun; + +import com.aliyun.dysmsapi20170525.Client; +import com.aliyun.dysmsapi20170525.models.SendSmsRequest; +import com.aliyun.dysmsapi20170525.models.SendSmsResponse; +import com.aliyun.teaopenapi.models.Config; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.zxdmy.excite.common.exception.ServiceException; +import com.zxdmy.excite.common.service.IGlobalConfigService; +import com.zxdmy.excite.component.bo.AliyunSmsBO; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +/** + * 阿里云短信服务(Short Message Service)实现 + * + * @author 沈松 + * @since 2022-01-02 0002 23:33 + */ +@Service +@AllArgsConstructor +public class AliyunSmsService { + + IGlobalConfigService configService; + + private static final String DEFAULT_SERVICE = "aliyunSms"; + + /** + * 保存阿里云短信服务的开发者信息、消息模板相关信息 + * 注意:同一个系统的消息模板可能有多个,所以 + * + * @param aliyunSmsBO 实体信息,其中KEY必填 + * @return 保存结果 + * @throws JsonProcessingException 异常 + */ + public boolean saveAliyunSmsConfig(AliyunSmsBO aliyunSmsBO) throws JsonProcessingException { + // 如果必填项为空,则返回错误信息 + if (null == aliyunSmsBO.getKey() || null == aliyunSmsBO.getAccessKeyId() || null == aliyunSmsBO.getAccessKeySecret() || null == aliyunSmsBO.getSignName() || null == aliyunSmsBO.getTemplateCode()) { + throw new ServiceException("部分必填信息为空,请检查!"); + } + // 保存 + return configService.save(DEFAULT_SERVICE, aliyunSmsBO.getKey(), aliyunSmsBO, true); + } + + /** + * 通过配置KEY获取短信配置信息 + * + * @param confKey 阿里云短信服务的配置key + * @return 阿里云短信服务实体 + */ + public AliyunSmsBO getAliyunSmsConfig(String confKey) { + AliyunSmsBO aliyunSmsBO = new AliyunSmsBO(); + return (AliyunSmsBO) configService.get(DEFAULT_SERVICE, confKey, aliyunSmsBO); + } + + /** + * 发送短信服务 + * + * @param confKey confKey,当前短信模板配置的key + * @param phone 手机号数组 + * @param templateValue 消息模板中的参数值 + * @return 结果 + */ + public boolean sendSmsOne(String confKey, String phone, String[] templateValue) { + // 从数据库读取配置信息 + AliyunSmsBO aliyunSmsBO = this.getAliyunSmsConfig(confKey); + if (null == aliyunSmsBO) { + throw new ServiceException("阿里云短信服务配置信息有误/不存在,请核实"); + } + // 如果输入的参数个数和配置信息里的参数个数不相等,则返回错误信息 + if (templateValue.length != aliyunSmsBO.getTemplateParam().length) { + throw new ServiceException("templateValue个数有误,请核实"); + } + // 发起短信并获取发送结果 + SendSmsResponse response = this.sendSms(aliyunSmsBO, phone, templateValue, null); + // 结果不为空,进一步判断 + if (response != null) { + // 打印结果 +// System.out.println(response.body.code); // 发送成功为OK +// System.out.println(response.body.message); // 发送成功为OK +// System.out.println(response.body.requestId); // 请求ID +// System.out.println(response.body.bizId); // 请求ID + return "OK".equals(response.body.code); + } + return false; + } + + /** + * 批量发送短信 + * 其中官网中有批量发送短信的接口SendBatchSms。 + * 但我们这里还是逐个发送 + * + * @param confKey 短信模板的key + * @param smsMap 短信map,其中key为手机号,value为String[]数组,其大小与消息模板参数个数一致,并依次对应 + * @return 结果map + */ + public Map sendSmsBatch(String confKey, Map smsMap) { + // 从数据库读取配置信息 + AliyunSmsBO aliyunSmsBO = this.getAliyunSmsConfig(confKey); + if (null == aliyunSmsBO) { + throw new ServiceException("阿里云短信服务配置信息有误,请核实"); + } + int templateLength = aliyunSmsBO.getTemplateParam().length; + // 发起短信并获取发送结果 + SendSmsResponse response; + // 记录结果的map + Map result = new HashMap<>(); + // 遍历map,逐个构造并发送短信 + for (String phone : smsMap.keySet()) { + // 参数值对等,则可以发送 + if (smsMap.get(phone).length == templateLength) { + response = this.sendSms(aliyunSmsBO, phone, smsMap.get(phone), null); + // 发送成功 + if (response != null && "OK".equals(response.body.code)) { + result.put(phone, true); + } + // 发送失败 + else { + result.put(phone, false); + } + } + // 参数值不对等,直接标记失败 + else { + result.put(phone, false); + } + } + return result; + } + + /** + * 私有方法:配置并发送短信实现类 + * + * @param aliyunSmsBO 配置信息 + * @param phone 接收手机号 + * @param templateValue 模板JSON格式的参数 + * @param outId 流水号 + * @return 发送结果 + */ + private SendSmsResponse sendSms(AliyunSmsBO aliyunSmsBO, String phone, String[] templateValue, String outId) { + // 阿里云短信服务信息配置 + Config config = new Config() + // 必填,开发者的 AccessKey ID + .setAccessKeyId(aliyunSmsBO.getAccessKeyId()) + // 必填,开发者的 AccessKey Secret + .setAccessKeySecret(aliyunSmsBO.getAccessKeySecret()) + // 默认,暂时不支持多Region,默认即可 + .setRegionId("cn-hangzhou") + // 默认,产品域名,开发者无需替换 + .setEndpoint("dysmsapi.aliyuncs.com") + // 可选,启用https协议 + .setProtocol("https"); + // 构造请求参数 + StringBuilder templateParam = new StringBuilder("{"); + for (int i = 0; i < aliyunSmsBO.getTemplateParam().length; i++) { + templateParam.append("\"").append(aliyunSmsBO.getTemplateParam()[i]).append("\":\"").append(templateValue[i]).append("\","); + } + templateParam.append("}"); + // 短信请求信息配置 + SendSmsRequest sendSmsRequest = new SendSmsRequest() + // 必填,接收短信的手机号 + .setPhoneNumbers(phone) + // 必填,设置签名名称,应严格按"签名名称"填写,格式如:阿里云 + .setSignName(aliyunSmsBO.getSignName()) + // 必填,设置模板CODE,应严格按"模板CODE"填写,格式:SMS_88888888 + .setTemplateCode(aliyunSmsBO.getTemplateCode()) + // 可选,设置模板参数, 假如模板中存在变量需要替换则为必填项 + .setTemplateParam(templateParam.toString()) + // 可选,设置流水号 + //.setOutId("10086") + ; + // 发起请求 + SendSmsResponse response; + try { + response = new Client(config).sendSms(sendSmsRequest); + } catch (Exception e) { + System.out.println(e.getMessage()); + return null; + } + return response; + } +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/bo/AlipayBO.java b/ss-component/src/main/java/com/zxdmy/excite/component/bo/AlipayBO.java new file mode 100644 index 0000000..fa3cd9a --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/bo/AlipayBO.java @@ -0,0 +1,88 @@ +package com.zxdmy.excite.component.bo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 支付宝支付配置信息 + * + * @author 沈松 + * @since 2022/1/10 22:13 + */ +@Data +@Accessors(chain = true) +public class AlipayBO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 本条支付宝支付信息的KEY + */ + private String key; + + /** + * 必填:应用AppId,例如:2019091767145019 + */ + private String appId; + + /** + * 必填:应用名称 + */ + private String appName; + + /** + * 必填:应用私钥(Java语言),例如:MIIEvQIBADANB ... ... + */ + private String merchantPrivateKey; + + // 接口加签方式分:证书模式(收、退款)和公钥模式(只能收款) + // 证书模式文档:https://opendocs.alipay.com/common/02kipl + // 优先级:证书模式 > 非证书模式 + + /** + * 证书模式:【应用公钥证书】文件路径,路径优先级:文件系统 > CLASS_PATH + */ + private String merchantCertPath; + + /** + * 证书模式:【支付宝公钥证书】文件路径,路径优先级:文件系统 > CLASS_PATH + */ + private String alipayCertPath; + + /** + * 证书模式:【支付宝根证书】文件路径,路径优先级:文件系统 > CLASS_PATH + */ + private String alipayRootCertPath; + + /** + * 公钥模式:只需要填写此【支付宝公钥】即可,无需赋值上面的三个证书路径 + */ + private String alipayPublicKey; + + /** + * 可选:异步通知接收服务地址,例如:https://www.test.com/callback + */ + private String notifyUrl; + + /** + * 可选:AES密钥(接口内容加密方式),调用AES加解密相关接口时需要 + */ + private String encryptKey; + + /** + * 必填:协议类型:http | https 二选一 + */ + private String protocol = "https"; + + /** + * 必填:gatewayHost,默认:openapi.alipay.com + */ + private String gatewayHost = "openapi.alipay.com"; + + /** + * 必填:签名类型,默认RSA2 + */ + private String signType = "RSA2"; +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/bo/AliyunOssBO.java b/ss-component/src/main/java/com/zxdmy/excite/component/bo/AliyunOssBO.java new file mode 100644 index 0000000..0600fe1 --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/bo/AliyunOssBO.java @@ -0,0 +1,57 @@ +package com.zxdmy.excite.component.bo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 阿里云OSS配置信息 + * + * @author 沈松 + * @since 2022/1/5 20:18 + */ +@Data +@Accessors(chain = true) +public class AliyunOssBO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 本条OSS配置信息的key + */ + private String key; + + /** + * OSS上的命名空间 + */ + private String bucketName; + + /** + * Bucket的域名,由阿里云官方生成,该域名用来访问空间中的文件。 + */ + private String bucketDomain; + + /** + * 自己通过CNAME域名解析绑定的域名 + */ + private String bindDomain; + + /** + * 访问域名(地域节点),上传使用。 + * 详情请参考:https://help.aliyun.com/document_detail/31837.html + */ + private String endpoint; + + /** + * 阿里云账号(建议使用子账号)的AccessKey + */ + private String accessKeyId; + + /** + * 阿里云账号(建议使用子账号)的AccessKey的秘钥 + */ + private String accessKeySecret; + + +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/bo/AliyunSmsBO.java b/ss-component/src/main/java/com/zxdmy/excite/component/bo/AliyunSmsBO.java new file mode 100644 index 0000000..2b18e69 --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/bo/AliyunSmsBO.java @@ -0,0 +1,49 @@ +package com.zxdmy.excite.component.bo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 阿里云短信服务配置信息 + * + * @author 沈松 + * @since 2022/1/3 20:28 + */ +@Data +@Accessors(chain = true) +public class AliyunSmsBO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 本条短信配置信息的key + */ + private String key; + + /** + * 必填。开发者的 AccessKey ID + */ + private String accessKeyId; + + /** + * 必填。开发者的 AccessKey Secret + */ + private String accessKeySecret; + + /** + * 必填。短信模板的签名,严格按照"签名名称"填写,格式如:阿里云 + */ + private String signName; + + /** + * 必填。模板CODE,应严格按"模板CODE"填写,格式:SMS_88888888 + */ + private String templateCode; + + /** + * 选填。如果消息模板中有参数,则必填。设置模板参数,如:[code,data] + */ + private String[] templateParam; +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/bo/JustAuthBO.java b/ss-component/src/main/java/com/zxdmy/excite/component/bo/JustAuthBO.java new file mode 100644 index 0000000..b1b7f95 --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/bo/JustAuthBO.java @@ -0,0 +1,59 @@ +package com.zxdmy.excite.component.bo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 第三方登录的配置信息实体 + * + * @author 沈松 + * @since 2022/1/6 17:30 + */ +@Data +@Accessors(chain = true) +public class JustAuthBO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 本条登录类型的KEY,如:qq、weibo等 + */ + private String key; + + /** + * 客户端id:对应各平台的appKey + */ + private String appID; + + /** + * 客户端Secret:对应各平台的appSecret + */ + private String appSecret; + + /** + * 登录成功后的回调地址 + */ + private String redirectUri; + + /** + * 只针对qq登录生效:是否需要申请unionid + */ + private Boolean unionId; + + /** + * 企业微信第三方授权用户类型:member|admin + */ + private String usertype; + + /** + * 企业微信登录:授权方的网页应用ID + */ + private String agentId; + + /** + * 支付宝的公钥,只针对支付宝、阿里云登陆有效 + */ + private String publicKey; +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/bo/QiniuOssBO.java b/ss-component/src/main/java/com/zxdmy/excite/component/bo/QiniuOssBO.java new file mode 100644 index 0000000..370345f --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/bo/QiniuOssBO.java @@ -0,0 +1,70 @@ +package com.zxdmy.excite.component.bo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + *

                          + * 描述 + *

                          + * + * @author 沈松 + * @since 2022/1/3 16:07 + */ +@Data +@Accessors(chain = true) +public class QiniuOssBO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 本条七牛云配置信息的key(主键) + */ + private String key; + + /** + * 七牛云账号的秘钥管理之:AccessKey + */ + @NotBlank(message = "AccessKey不能为空") + private String accessKey; + + /** + * 七牛云账号的秘钥管理之:SecretKey + */ + @NotBlank(message = "SecretKey不能为空") + private String secretKey; + + /** + * 七牛云空间名称 + */ + @NotBlank(message = "空间名称不能为空") + private String bucket; + + /** + * 七牛云该空间(bucket)绑定的CDN加速域名 + */ + @NotBlank(message = "CDN加速域名不能为空") + private String domain; + + /** + * 地域选择:https://developer.qiniu.com/kodo/1671/region-endpoint-fq + * 华东:z0; 华北:z1; 华南:z2; 北美:na0; 东南亚:as0; 华东-浙江2:cn-east-2 + * 可以为空,填写其他字符,由系统自己选 + */ +// @NotBlank(message = "地域不能为空") + private String region; + + /** + * 七牛云该空间(bucket)绑定的CDN加速域名的协议 http | https + */ + @NotBlank(message = "CDN加速域名协议不能为空") + private String protocol; + + /* + * 上传Token + */ + private String uploadToken; +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/bo/WeChatPayBO.java b/ss-component/src/main/java/com/zxdmy/excite/component/bo/WeChatPayBO.java new file mode 100644 index 0000000..4cc040c --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/bo/WeChatPayBO.java @@ -0,0 +1,77 @@ +package com.zxdmy.excite.component.bo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + *

                          + * 描述 + *

                          + * + * @author 沈松 + * @since 2022/1/9 20:27 + */ +@Data +@Accessors(chain = true) +public class WeChatPayBO implements Serializable { + + private static final long serialVersionUID = 1L; + + + /** + * 本条微信支付配置信息的key(主键) + */ + private String key; + + /** + * 设置微信公众号或者小程序等的appid + */ + private String appId; + + /** + * 微信支付商户号 + */ + private String mchId; + + /** + * 设置APIv2密钥(微信支付商户密钥 + */ + private String mchKey; + + /** + * APIv3密钥(微信支付商户密钥 + */ + private String apiV3Key; + /** + * 服务商模式下的子商户公众账号ID,普通模式请不要配置,请在配置文件中将对应项删除 + */ + private String subAppId; + + /** + * 服务商模式下的子商户号,普通模式请不要配置,最好是请在配置文件中将对应项删除 + */ + private String subMchId; + + /** + * V2:apiclient_cert.p12文件的绝对路径,或者如果放在项目中,请以classpath:开头指定 + */ + private String keyPath; + + /** + * V3:key.pem文件的绝对路径,或者如果放在项目中,请以classpath:开头指定 + */ + private String privateKeyPath; + + /** + * V3:cert.pem文件的绝对路径,或者如果放在项目中,请以classpath:开头指定 + */ + private String privateCertPath; + + /** + * 通知地址.通知url必须为外网可访问的url,不能携带参数。公网域名必须为https。 + */ + private String notifyUrl; + +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/justauth/JustAuthService.java b/ss-component/src/main/java/com/zxdmy/excite/component/justauth/JustAuthService.java new file mode 100644 index 0000000..74f3276 --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/justauth/JustAuthService.java @@ -0,0 +1,281 @@ +package com.zxdmy.excite.component.justauth; + +import cn.hutool.core.util.DesensitizedUtil; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.zxdmy.excite.common.exception.ServiceException; +import com.zxdmy.excite.common.service.IGlobalConfigService; +import com.zxdmy.excite.component.bo.JustAuthBO; +import lombok.AllArgsConstructor; +import me.zhyd.oauth.config.AuthConfig; +import me.zhyd.oauth.enums.scope.AuthGiteeScope; +import me.zhyd.oauth.model.AuthCallback; +import me.zhyd.oauth.model.AuthResponse; +import me.zhyd.oauth.model.AuthUser; +import me.zhyd.oauth.request.*; +import me.zhyd.oauth.utils.AuthScopeUtils; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + * 第三方登录服务接口 + * + * @author 沈松 + * @since 2022/1/6 12:02 + */ +@Service +@AllArgsConstructor +public class JustAuthService { + + IGlobalConfigService configService; + + private static final String DEFAULT_SERVICE = "justAuth"; + + private static final Set CONF_KEY_SET = new HashSet() {{ + add("qq"); + add("weibo"); + add("wechat_open"); + add("wechat_mp"); + add("wechat_enterprise"); + add("baidu"); + add("dingtalk"); + add("aliyun"); + add("alipay"); + add("huawei"); + add("feishu"); + add("gitee"); + add("github"); + }}; + + + /** + * 保存配置信息 + * + * @param authBO 配置信息类 + * @return 保存结果 + */ + public boolean saveConfig(JustAuthBO authBO) throws JsonProcessingException { + // 配置信息的key必须存在于当前的库中 + if (null != authBO.getKey() && CONF_KEY_SET.contains(authBO.getKey())) { + // 三大必填信息不能为空 + if (null == authBO.getAppID() || null == authBO.getAppSecret() || null == authBO.getRedirectUri()) { + throw new ServiceException("APPID、APPSecret和RedirectUri不能为空!请检查!"); + } else { + return configService.save(DEFAULT_SERVICE, authBO.getKey(), authBO, true); + } + } else { + throw new ServiceException("当前输入的配置KEY[" + authBO.getKey() + "]不在许可范围内,请检查!"); + } + } + + /** + * 根据配置的KEY获取一条配置信息 + * + * @param confKey 配置的KEY + * @return 指定KEY的配置信息 + */ + public JustAuthBO getConfig(String confKey) { + // 配置信息的key必须存在于当前的库中 + if (!CONF_KEY_SET.contains(confKey)) { + throw new ServiceException("当前输入的配置KEY[" + confKey + "]不在许可范围内,请检查!"); + } + JustAuthBO justAuthBO = new JustAuthBO(); + return (JustAuthBO) configService.get(DEFAULT_SERVICE, confKey, justAuthBO); + } + + /** + * 获取所有的登录配置信息 + * + * @param desensitized 是否脱敏 + * @return 配置列表 + */ + public List getConfigList(Boolean desensitized) { + JustAuthBO justAuthBO = new JustAuthBO(); + List objectList = configService.getList(DEFAULT_SERVICE, justAuthBO); + ObjectMapper objectMapper = new ObjectMapper(); + List justAuthBOList = new ArrayList<>(); + for (Object o : objectList) { + justAuthBO = objectMapper.convertValue(o, justAuthBO.getClass()); + if (desensitized) { + justAuthBO.setAppSecret(DesensitizedUtil.idCardNum(justAuthBO.getAppSecret(), 2, 2)); + justAuthBO.setPublicKey(DesensitizedUtil.idCardNum(justAuthBO.getPublicKey(), 2, 2)); + } + justAuthBOList.add(justAuthBO); + } + return justAuthBOList; + } + + /** + * 生成登录授权的URL + * + * @param confKey 配置的KEY,也即授权来源(如qq、weibo等) + * @param state 状态码(字符串) + * @return 登录的链接 + */ + public String createAuthorizeUrl(String confKey, String state) { + if (!CONF_KEY_SET.contains(confKey)) { + return null; + } + return this.createAuthRequest(confKey).authorize(state); + } + + /** + * 根据回调信息获取登录用户的信息 + * + * @param confKey 配置的KEY,也即授权来源(如qq、weibo等) + * @param callback 接口回调信息 + * @return 授权成功后的用户信息,根据授权平台的不同,获取的数据完整性也不同 + */ + public AuthUser getAuthUser(String confKey, AuthCallback callback) { + if (!CONF_KEY_SET.contains(confKey)) { + return null; + } + AuthRequest authRequest = this.createAuthRequest(confKey); + // 根据返回的参数,执行登录请求(获取用户信息) + AuthResponse response = authRequest.login(callback); + // 判断结果 + if (response.ok()) { + return response.getData(); + } else { + return null; + } + } + + /** + * 根据具体地授权来源,获取授权请求工具类 + * + * @param confKey 配置的KEY,也即授权来源(如qq、weibo等) + * @return 授权工具类 + */ + public AuthRequest createAuthRequest(String confKey) { + if (!CONF_KEY_SET.contains(confKey)) { + throw new ServiceException("当前输入的配置KEY[" + confKey + "]不在许可范围内,请检查!"); + } + JustAuthBO authBO = this.getConfig(confKey); + AuthRequest authRequest; + switch (confKey) { + // QQ登录 + case "qq": + authRequest = new AuthQqRequest(AuthConfig.builder() + .clientId(authBO.getAppID()) + .clientSecret(authBO.getAppSecret()) + .redirectUri(authBO.getRedirectUri()) + .unionId(authBO.getUnionId()) + .build()); + break; + // 微博登录 + case "weibo": + authRequest = new AuthWeiboRequest(AuthConfig.builder() + .clientId(authBO.getAppID()) + .clientSecret(authBO.getAppSecret()) + .redirectUri(authBO.getRedirectUri()) + .build()); + break; + // 微信开放平台登录 + case "wechat_open": + authRequest = new AuthWeChatOpenRequest(AuthConfig.builder() + .clientId(authBO.getAppID()) + .clientSecret(authBO.getAppSecret()) + .redirectUri(authBO.getRedirectUri()) + .build()); + break; + // 微信公众号登录 + case "wechat_mp": + authRequest = new AuthWeChatMpRequest(AuthConfig.builder() + .clientId(authBO.getAppID()) + .clientSecret(authBO.getAppSecret()) + .redirectUri(authBO.getRedirectUri()) + .build()); + break; + // 微信企业号登录 + case "wechat_enterprise": + authRequest = new AuthWeChatEnterpriseQrcodeRequest(AuthConfig.builder() + .clientId(authBO.getAppID()) + .clientSecret(authBO.getAppSecret()) + .redirectUri(authBO.getRedirectUri()) + .agentId(authBO.getAgentId()) + .build()); + break; + // 百度登录 + case "baidu": + authRequest = new AuthBaiduRequest(AuthConfig.builder() + .clientId(authBO.getAppID()) + .clientSecret(authBO.getAppSecret()) + .redirectUri(authBO.getRedirectUri()) + .build()); + break; + // 钉钉登录 + case "dingtalk": + authRequest = new AuthDingTalkRequest(AuthConfig.builder() + .clientId(authBO.getAppID()) + .clientSecret(authBO.getAppSecret()) + .redirectUri(authBO.getRedirectUri()) + .build()); + break; + // 阿里云登录 + case "aliyun": + authRequest = new AuthAliyunRequest(AuthConfig.builder() + .clientId(authBO.getAppID()) + .clientSecret(authBO.getAppSecret()) + .redirectUri(authBO.getRedirectUri()) + .alipayPublicKey(authBO.getPublicKey()) + .build()); + break; + // 支付宝登录 + case "alipay": + authRequest = new AuthAlipayRequest(AuthConfig.builder() + .clientId(authBO.getAppID()) + .clientSecret(authBO.getAppSecret()) + .redirectUri(authBO.getRedirectUri()) + .alipayPublicKey(authBO.getPublicKey()) + .build()); + break; + // 华为登录 + case "huawei": + authRequest = new AuthHuaweiRequest(AuthConfig.builder() + .clientId(authBO.getAppID()) + .clientSecret(authBO.getAppSecret()) + .redirectUri(authBO.getRedirectUri()) + .build()); + break; + // 飞书登录 + case "feishu": + authRequest = new AuthFeishuRequest(AuthConfig.builder() + .clientId(authBO.getAppID()) + .clientSecret(authBO.getAppSecret()) + .redirectUri(authBO.getRedirectUri()) + .build()); + break; + // Gitee登录 + case "gitee": + authRequest = new AuthGiteeRequest(AuthConfig.builder() + .clientId(authBO.getAppID()) + .clientSecret(authBO.getAppSecret()) + .redirectUri(authBO.getRedirectUri()) + .scopes(AuthScopeUtils.getScopes(AuthGiteeScope.values())) + .build()); + break; + // GitHub登录 + case "github": + authRequest = new AuthGithubRequest(AuthConfig.builder() + .clientId(authBO.getAppID()) + .clientSecret(authBO.getAppSecret()) + .redirectUri(authBO.getRedirectUri()) + .build()); + break; + default: + throw new ServiceException("配置的KEY不存在,请检查!"); + } + return authRequest; + } + + /** + * 读取当前auth服务支持的KEY的集合 + * + * @return 支持的KEY的集合 + */ + public Set getConfKeySet() { + return CONF_KEY_SET; + } +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/oss/AliOSSProperties.java b/ss-component/src/main/java/com/zxdmy/excite/component/oss/AliOSSProperties.java new file mode 100644 index 0000000..9acd3f1 --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/oss/AliOSSProperties.java @@ -0,0 +1,16 @@ +package com.zxdmy.excite.component.oss; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Data +@Component +@ConfigurationProperties(prefix = "aliyun.oss") +public class AliOSSProperties { + private String endpoint; + private String accessKeyId; + private String accessKeySecret; + private String bucketName; + private String region; +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/oss/AliOSSUtils.java b/ss-component/src/main/java/com/zxdmy/excite/component/oss/AliOSSUtils.java new file mode 100644 index 0000000..5437675 --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/oss/AliOSSUtils.java @@ -0,0 +1,303 @@ +package com.zxdmy.excite.component.oss; + +import com.alibaba.fastjson.JSONObject; +import com.aliyun.oss.*; +import com.aliyun.oss.model.*; +import com.zxdmy.excite.common.exception.ServiceException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.net.URL; +import java.net.URLDecoder; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +/** + * 阿里云 OSS 工具类 + */ + +@Component +public class AliOSSUtils{ + @Autowired//将OSS的配置注入进来,后面需要用到 + private AliOSSProperties aliOSSProperties; + @Resource + protected HttpServletRequest request; + + + + /** + * oss文件下载 + * @param path 文件下载本地地址 + * @param pathOss oss地址 + * @return + * @throws IOException + */ + public Boolean download(String path,String pathOss) throws IOException { + + //获取阿里云OSS参数 + String endpoint = aliOSSProperties.getEndpoint(); + String accessKeyId = aliOSSProperties.getAccessKeyId(); + String accessKeySecret = aliOSSProperties.getAccessKeySecret(); + String bucketName = aliOSSProperties.getBucketName(); + + // 创建连接 + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId,accessKeySecret); +// content-disposition + try { + // 下载Object到本地文件,并保存到指定的本地路径中。如果指定的本地文件存在会覆盖,不存在则新建。 + // 如果未指定本地路径,则下载后的文件默认保存到示例程序所属项目对应本地路径中。 + ossClient.getObject(new GetObjectRequest(bucketName, pathOss), new File(path)); + } catch (OSSException oe) { + System.out.println("Caught an OSSException, which means your request made it to OSS, " + + "but was rejected with an error response for some reason."); + System.out.println("Error Message:" + oe.getErrorMessage()); + System.out.println("Error Code:" + oe.getErrorCode()); + System.out.println("Request ID:" + oe.getRequestId()); + System.out.println("Host ID:" + oe.getHostId()); + } catch (ClientException ce) { + System.out.println("Caught an ClientException, which means the client encountered " + + "a serious internal problem while trying to communicate with OSS, " + + "such as not being able to access the network."); + System.out.println("Error Message:" + ce.getMessage()); + } finally { + if (ossClient != null) { + ossClient.shutdown(); + } + } + return false; + + } + + /** + * 删除oss文件 + * @param path 文件地址 + * @return + * @throws IOException + */ + public Boolean delete(String path) throws IOException { + + //获取阿里云OSS参数 + String endpoint = aliOSSProperties.getEndpoint(); + String accessKeyId = aliOSSProperties.getAccessKeyId(); + String accessKeySecret = aliOSSProperties.getAccessKeySecret(); + String bucketName = aliOSSProperties.getBucketName(); + + // 创建连接 + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId,accessKeySecret); + + try { + // 删除文件。 + // 文件完整路径中不能包含Bucket名称。 + List keys = new ArrayList(); + keys.add(path); + + DeleteObjectsResult deleteObjectsResult = ossClient.deleteObjects(new DeleteObjectsRequest(bucketName).withKeys(keys).withEncodingType("url")); + List deletedObjects = deleteObjectsResult.getDeletedObjects(); + try { + for(String obj : deletedObjects) { + String deleteObj = URLDecoder.decode(obj, "UTF-8"); + System.out.println(deleteObj); + return !(ossClient.doesObjectExist(bucketName,path)); + } + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } catch (OSSException oe) { + System.out.println("Caught an OSSException, which means your request made it to OSS, " + + "but was rejected with an error response for some reason."); + System.out.println("Error Message:" + oe.getErrorMessage()); + System.out.println("Error Code:" + oe.getErrorCode()); + System.out.println("Request ID:" + oe.getRequestId()); + System.out.println("Host ID:" + oe.getHostId()); + } catch (ClientException ce) { + System.out.println("Caught an ClientException, which means the client encountered " + + "a serious internal problem while trying to communicate with OSS, " + + "such as not being able to access the network."); + System.out.println("Error Message:" + ce.getMessage()); + } finally { + if (ossClient != null) { + ossClient.shutdown(); + } + } + return false; + + } + + /** + * 查找oss文件 + * @param path 文件地址 + * @return + * @throws IOException + */ + public Boolean query(String path) throws IOException { + + //获取阿里云OSS参数 + String endpoint = aliOSSProperties.getEndpoint(); + String accessKeyId = aliOSSProperties.getAccessKeyId(); + String accessKeySecret = aliOSSProperties.getAccessKeySecret(); + String bucketName = aliOSSProperties.getBucketName(); + + // 创建连接 + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId,accessKeySecret); + + try { + // 判断文件是否存在。如果返回值为true,则文件存在,否则存储空间或者文件不存在。 + // 设置是否进行重定向或者镜像回源。默认值为true,表示忽略302重定向和镜像回源;如果设置isINoss为false,则进行302重定向或者镜像回源。 + //boolean isINoss = true; + boolean found = ossClient.doesObjectExist(bucketName, path); + //boolean found = ossClient.doesObjectExist(bucketName, objectName, isINoss); + return found; + } catch (OSSException oe) { + System.out.println("Caught an OSSException, which means your request made it to OSS, " + + "but was rejected with an error response for some reason."); + System.out.println("Error Message:" + oe.getErrorMessage()); + System.out.println("Error Code:" + oe.getErrorCode()); + System.out.println("Request ID:" + oe.getRequestId()); + System.out.println("Host ID:" + oe.getHostId()); + } catch (ClientException ce) { + System.out.println("Caught an ClientException, which means the client encountered " + + "a serious internal problem while trying to communicate with OSS, " + + "such as not being able to access the network."); + System.out.println("Error Message:" + ce.getMessage()); + } finally { + if (ossClient != null) { + ossClient.shutdown(); + } + } + return false; + } + + /** + * 拷贝oss地址文件位置至其他oss地址位置(源Bucket相同) + * @param path + * @param newPath + * @return + * @throws IOException + */ + public Boolean copy(String path,String newPath) throws IOException { + + //获取阿里云OSS参数 + String endpoint = aliOSSProperties.getEndpoint(); + String accessKeyId = aliOSSProperties.getAccessKeyId(); + String accessKeySecret = aliOSSProperties.getAccessKeySecret(); + String bucketName = aliOSSProperties.getBucketName(); + String newBucketName = aliOSSProperties.getBucketName(); + + // 创建连接 + OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId,accessKeySecret); + + try { + + ObjectMetadata objectMetadata = ossClient.getObjectMetadata(bucketName, path); + // 获取被拷贝文件的大小。 + long contentLength = objectMetadata.getContentLength(); + long gb = 1024 * 1024 * 1024; + //小文件上传 + if(contentLength < gb) { + // 拷贝文件。 + CopyObjectResult result = ossClient.copyObject(bucketName, path, newBucketName, newPath); + System.out.println("ETag: " + result.getETag() + " LastModified: " + result.getLastModified()); + // 判断文件是否存在。如果返回值为true,则文件存在,否则存储空间或者文件不存在。 + // 设置是否进行重定向或者镜像回源。默认值为true,表示忽略302重定向和镜像回源;如果设置isINoss为false,则进行302重定向或者镜像回源。 + + } + //大文件上传(分片上传[大于1GB]) + else { + // 设置分片大小为10 MB。单位为字节。 + long partSize = 1024 * 1024 * 10; + + // 计算分片总数。 + int partCount = (int) (contentLength / partSize); + if (contentLength % partSize != 0) { + partCount++; + } + System.out.println("total part count:" + partCount); + + // 初始化拷贝任务。可以通过InitiateMultipartUploadRequest指定目标文件元信息。 + InitiateMultipartUploadRequest initiateMultipartUploadRequest = new InitiateMultipartUploadRequest(newBucketName, newPath); + // 拷贝源文件ContentType和UserMetadata,分片拷贝默认不拷贝源文件的ContentType和UserMetadata。 + ObjectMetadata metadata = new ObjectMetadata(); + metadata.setContentType(objectMetadata.getContentType()); + metadata.setUserMetadata(objectMetadata.getUserMetadata()); + initiateMultipartUploadRequest.setObjectMetadata(metadata); + InitiateMultipartUploadResult initiateMultipartUploadResult = ossClient.initiateMultipartUpload(initiateMultipartUploadRequest); + String uploadId = initiateMultipartUploadResult.getUploadId(); + + // 分片拷贝。 + List partETags = new ArrayList(); + for (int i = 0; i < partCount; i++) { + // 计算每个分片的大小。 + long skipBytes = partSize * i; + long size = Math.min(partSize, contentLength - skipBytes); + + // 创建UploadPartCopyRequest。可以通过UploadPartCopyRequest指定限定条件。 + UploadPartCopyRequest uploadPartCopyRequest = + new UploadPartCopyRequest(bucketName, path, newBucketName, newPath); + uploadPartCopyRequest.setUploadId(uploadId); + uploadPartCopyRequest.setPartSize(size); + uploadPartCopyRequest.setBeginIndex(skipBytes); + uploadPartCopyRequest.setPartNumber(i + 1); + //Map headers = new HashMap(); + // 指定拷贝的源地址。 + // headers.put(OSSHeaders.COPY_OBJECT_SOURCE, "/examplebucket/desexampleobject.txt"); + // 指定源Object的拷贝范围。例如设置bytes=0~1023,表示拷贝1~1024字节的内容。 + // headers.put(OSSHeaders.COPY_SOURCE_RANGE, "bytes=0~1023"); + // 如果源Object的ETag值和您提供的ETag相等,则执行拷贝操作,并返回200 OK。 + // headers.put(OSSHeaders.COPY_OBJECT_SOURCE_IF_MATCH, "5B3C1A2E053D763E1B002CC607C5****"); + // 如果源Object的ETag值和您提供的ETag不相等,则执行拷贝操作,并返回200 OK。 + // headers.put(OSSHeaders.COPY_OBJECT_SOURCE_IF_NONE_MATCH, "5B3C1A2E053D763E1B002CC607C5****"); + // 如果指定的时间等于或者晚于文件实际修改时间,则正常拷贝文件,并返回200 OK。 + // headers.put(OSSHeaders.COPY_OBJECT_SOURCE_IF_UNMODIFIED_SINCE, "2021-12-09T07:01:56.000Z"); + // 如果源Object在用户指定的时间以后被修改过,则执行拷贝操作。 + // headers.put(OSSHeaders.COPY_OBJECT_SOURCE_IF_MODIFIED_SINCE, "2021-12-09T07:01:56.000Z"); + // uploadPartCopyRequest.setHeaders(headers); + UploadPartCopyResult uploadPartCopyResult = ossClient.uploadPartCopy(uploadPartCopyRequest); + + // 将返回的分片ETag保存到partETags中。 + partETags.add(uploadPartCopyResult.getPartETag()); + } + + // 提交分片拷贝任务。 + CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest( + newBucketName, newPath, uploadId, partETags); + ossClient.completeMultipartUpload(completeMultipartUploadRequest); + } + + boolean found = ossClient.doesObjectExist(newBucketName, newPath); + return found; + } catch (OSSException oe) { + System.out.println("Caught an OSSException, which means your request made it to OSS, " + + "but was rejected with an error response for some reason."); + System.out.println("Error Message:" + oe.getErrorMessage()); + System.out.println("Error Code:" + oe.getErrorCode()); + System.out.println("Request ID:" + oe.getRequestId()); + System.out.println("Host ID:" + oe.getHostId()); + } catch (ClientException ce) { + System.out.println("Caught an ClientException, which means the client encountered " + + "a serious internal problem while trying to communicate with OSS, " + + "such as not being able to access the network."); + System.out.println("Error Message:" + ce.getMessage()); + } finally { + if (ossClient != null) { + ossClient.shutdown(); + } + } + return false; + } + + + +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/oss/OSSVO.java b/ss-component/src/main/java/com/zxdmy/excite/component/oss/OSSVO.java new file mode 100644 index 0000000..37e3cef --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/oss/OSSVO.java @@ -0,0 +1,18 @@ +package com.zxdmy.excite.component.oss; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +public class OSSVO { + + private String region; + private String accessKeyId; + private String accessKeySecret; + private String bucketName; + private String endpoint; + + private String fileName; + private String prefix; +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/qiniu/QiniuOssService.java b/ss-component/src/main/java/com/zxdmy/excite/component/qiniu/QiniuOssService.java new file mode 100644 index 0000000..f91a9fe --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/qiniu/QiniuOssService.java @@ -0,0 +1,428 @@ +package com.zxdmy.excite.component.qiniu; + +import cn.hutool.core.util.DesensitizedUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.qiniu.common.QiniuException; +import com.qiniu.http.Response; +import com.qiniu.storage.*; +import com.qiniu.storage.model.FetchRet; +import com.qiniu.storage.model.FileInfo; +import com.qiniu.util.Auth; +import com.zxdmy.excite.common.exception.ServiceException; +import com.zxdmy.excite.common.service.IGlobalConfigService; +import com.zxdmy.excite.component.vo.QiniuFileVO; +import com.zxdmy.excite.component.bo.QiniuOssBO; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * 七牛云对象存储服务实现类 + * 更多接口,可以根据 https://developer.qiniu.com/kodo/1239/java 实现。 + * + * @author 沈松 + * @since 2022-01-02 0002 23:33 + */ +@Service +@AllArgsConstructor +public class QiniuOssService { + + IGlobalConfigService configService; + + private static final String DEFAULT_SERVICE = "qiniu"; + private static final String DEFAULT_KEY = "qiniuOss"; + + /** + * 将七牛云的信息保存至数据库 + * + * @param qiniuOssBO 七牛云信息实体。如果指定key,则存储的配置信息的key即为所指定 + * @return 结果 + */ + public boolean saveQiniuConfig(QiniuOssBO qiniuOssBO) { + // 如果必填信息为空,则返回错误 + if (null == qiniuOssBO.getSecretKey() || null == qiniuOssBO.getAccessKey() || null == qiniuOssBO.getBucket() || null == qiniuOssBO.getDomain()) { + throw new ServiceException("AK、SK、空间名称或者域名为空,请核实!"); + } + // 核实无误,填充数据 + if (null == qiniuOssBO.getProtocol()) { + qiniuOssBO.setProtocol("http"); + } + try { + if (null == qiniuOssBO.getKey()) { + return configService.save(DEFAULT_SERVICE, DEFAULT_KEY, qiniuOssBO, true); + } + return configService.save(DEFAULT_SERVICE, qiniuOssBO.getKey(), qiniuOssBO, true); + } catch (Exception e) { + throw new ServiceException(e.getMessage()); + } + } + + /** + * 从数据库读取七牛云配置信息(指定key) + * + * @param confKey 配置文件的key,不同的key对应不同的存储空间 + * @return 七牛云配置信息实体 + */ + public QiniuOssBO getQiniuConfig(String confKey) { + QiniuOssBO qiniuOssBO = new QiniuOssBO(); + qiniuOssBO = (QiniuOssBO) configService.get(DEFAULT_SERVICE, confKey, qiniuOssBO); + return qiniuOssBO; + } + + /** + * 从数据库读取七牛云配置信息(默认key) + * + * @return 七牛云配置信息实体 + */ + public QiniuOssBO getQiniuConfig() { + return this.getQiniuConfig(DEFAULT_KEY); + } + + /** + * 从数据库读取七牛云配置信息,并脱敏(指定key) + * + * @param confKey 配置文件的key,不同的key对应不同的存储空间 + * @return 七牛云配置信息实体 + */ + public QiniuOssBO getQiniuConfigHide(String confKey) { + QiniuOssBO qiniuOssBO = new QiniuOssBO(); + qiniuOssBO = (QiniuOssBO) configService.get(DEFAULT_SERVICE, confKey, qiniuOssBO); + qiniuOssBO.setAccessKey(DesensitizedUtil.idCardNum(qiniuOssBO.getAccessKey(), 2, 2)); + qiniuOssBO.setSecretKey(DesensitizedUtil.idCardNum(qiniuOssBO.getSecretKey(), 2, 2)); + return qiniuOssBO; + } + + /** + * 从数据库读取七牛云配置信息,并脱敏(默认key) + * + * @return 七牛云配置信息实体 + */ + public QiniuOssBO getQiniuConfigHide() { + return this.getQiniuConfigHide(DEFAULT_KEY); + } + + /** + * 获取全部的七牛云配置信息 + * + * @param desensitized 是否脱敏:true:脱敏, false:不脱敏 + * @return 读取全部配置信息 + */ + public List getQiniuConfigList(Boolean desensitized) { + QiniuOssBO qiniuOssBO = new QiniuOssBO(); + List objectList = configService.getList(DEFAULT_SERVICE, qiniuOssBO); + ObjectMapper objectMapper = new ObjectMapper(); + List qiniuOssBOList = new ArrayList<>(); + for (Object o : objectList) { + qiniuOssBO = objectMapper.convertValue(o, qiniuOssBO.getClass()); + if (desensitized) { + qiniuOssBO.setAccessKey(DesensitizedUtil.idCardNum(qiniuOssBO.getAccessKey(), 2, 2)); + qiniuOssBO.setSecretKey(DesensitizedUtil.idCardNum(qiniuOssBO.getSecretKey(), 2, 2)); + } + qiniuOssBOList.add(qiniuOssBO); + } + return qiniuOssBOList; + } + + /** + * 生成上传的Token(指定key) + * + * @param confKey 配置文件的key,不同的key对应不同的存储空间 + * @param fileKey 文件的key,又称文件名,可以带路径 + * @param expireSeconds 过期时间 + * @return 结果 + */ + public QiniuOssBO createUploadToken(String confKey, String fileKey, Long expireSeconds) { + // 如果必填信息为空,则返回 + if (null == fileKey || "".equals(fileKey)) { + throw new ServiceException("文件的key为空,请核实!"); + } + // 读取配置信息 + QiniuOssBO qiniuOssBO = new QiniuOssBO(); + qiniuOssBO = (QiniuOssBO) configService.get(DEFAULT_SERVICE, confKey, qiniuOssBO); + // 生成Token + Auth auth = Auth.create(qiniuOssBO.getAccessKey(), qiniuOssBO.getSecretKey()); + String upToken = auth.uploadToken(qiniuOssBO.getBucket(), fileKey, expireSeconds, null); + // 写入Token,并返回 + qiniuOssBO.setUploadToken(upToken); + return qiniuOssBO; + } + + /** + * 生成上传的Token(默认key) + * + * @param fileKey 文件的key,又称文件名 + * @param expireSeconds 过期时间 + * @return 结果 + */ + public QiniuOssBO createUploadToken(String fileKey, Long expireSeconds) { + return this.createUploadToken(DEFAULT_KEY, fileKey, expireSeconds); + } + + /** + * 后端上传文件(指定key) + * + * @param confKey 配置文件的key,不同的key对应不同的存储空间 + * @param file 文件 + * @return 结果 + */ + public QiniuFileVO uploadFile(String confKey, File file) { + if (null == file) { + throw new ServiceException("上传的文件为空,请检查!"); + } + // 生成Token + QiniuOssBO qiniuOssBO = this.createUploadToken(confKey, file.getName(), 3600L); + // 配置信息 + Configuration configuration = new Configuration(this.createRegion(qiniuOssBO.getRegion())); + // 构造上传管理类 + UploadManager uploadManager = new UploadManager(configuration); + // 进行上传 + try { + Response response = uploadManager.put(file, file.getName(), qiniuOssBO.getUploadToken()); + if (response.isOK()) { + return new QiniuFileVO() + .setProtocol(qiniuOssBO.getProtocol()) + .setDomain(qiniuOssBO.getDomain()) + .setKey(qiniuOssBO.getKey()); + } + return null; + } catch (QiniuException ex) { + throw new ServiceException(ex.response.toString()); + } + } + + /** + * 后端上传文件(默认key) + * + * @param file 文件 + * @return 七牛云配置信息实体 + */ + public QiniuFileVO uploadFile(File file) { + return this.uploadFile(DEFAULT_KEY, file); + } + + /** + * 抓取网络资源到空间(指定key) + * + * @param confKey 配置文件的key,不同的key对应不同的存储空间 + * @param fileKey 文件名 + * @param remoteSrcUrl 远程链接 + * @return 文件信息 + */ + public QiniuFileVO uploadFileFromUrl(String confKey, String fileKey, String remoteSrcUrl) { + QiniuOssBO qiniuOssBO = this.getQiniuConfig(confKey); + if (qiniuOssBO == null) { + throw new ServiceException("key为[" + confKey + "]的配置信息为空,请检查!"); + } + BucketManager bucketManager = this.createBucketManager(qiniuOssBO); + //抓取网络资源到空间 + try { + FetchRet fetchRet = bucketManager.fetch(remoteSrcUrl, qiniuOssBO.getBucket(), fileKey); + return new QiniuFileVO() + .setProtocol(qiniuOssBO.getProtocol()) + .setDomain(qiniuOssBO.getDomain()) + .setKey(fetchRet.key) + .setHash(fetchRet.hash) + .setMimeType(fetchRet.mimeType) + .setSize(fetchRet.fsize); + } catch (QiniuException ex) { + throw new ServiceException(ex.response.toString()); + } + } + + /** + * 抓取网络资源到空间(默认KEY) + * + * @param fileKey 文件名 + * @param remoteSrcUrl 远程链接 + * @return 文件信息 + */ + public QiniuFileVO uploadFileFromUrl(String fileKey, String remoteSrcUrl) { + return this.uploadFileFromUrl(DEFAULT_KEY, fileKey, remoteSrcUrl); + } + + /** + * 获取七牛云空间的全部文件(指定key) + * + * @param confKey 配置文件的key,不同的key对应不同的存储空间 + * @param prefix 文件前缀 + * @param delimiter 文件分隔符 + * @return 文件信息列表 + */ + public List getQiniuFileListAll(String confKey, String prefix, String delimiter) { + QiniuOssBO qiniuOssBO = this.getQiniuConfig(confKey); + if (qiniuOssBO == null) { + throw new ServiceException("key为[" + confKey + "]的配置信息为空,请检查!"); + } + BucketManager bucketManager = this.createBucketManager(qiniuOssBO); + BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(qiniuOssBO.getBucket(), prefix, 1000, delimiter); + // 记录返回值 + List fileInfoList = new ArrayList<>(); + while (fileListIterator.hasNext()) { + fileInfoList.addAll(Arrays.asList(fileListIterator.next())); + } + return fileInfoList; + } + + /** + * 获取七牛云空间的全部文件(默认key) + * + * @param prefix 文件前缀 + * @param delimiter 文件分隔符 + * @return 文件信息列表 + */ + public List getQiniuFileListAll(String prefix, String delimiter) { + return this.getQiniuFileListAll(DEFAULT_KEY, prefix, delimiter); + } + + /** + * 获取七牛云空间的分页文件列表(分页),如果页数超限,则返回第一页(指定key) + * + * @param confKey 配置文件的key,不同的key对应不同的存储空间 + * @param page 页号 + * @param limit 每页条数 + * @param prefix 前缀 + * @param delimiter 分隔符 + * @return 页面类Page + */ + public Page getQiniuFileListPage(String confKey, Integer page, Integer limit, String prefix, String delimiter) { + // 定义返回Page实体 + Page fileInfoPage = new Page<>(); + // 获取配置 + QiniuOssBO qiniuOssBO = this.getQiniuConfig(confKey); + if (qiniuOssBO == null) { + throw new ServiceException("key为[" + confKey + "]的配置信息为空,请检查!"); + } + // 生成管理器 + BucketManager bucketManager = this.createBucketManager(qiniuOssBO); + // 获取列表迭代器 + BucketManager.FileListIterator fileListIterator = bucketManager.createFileListIterator(qiniuOssBO.getBucket(), prefix, limit, delimiter); + // 遍历直至找到指定页数 + long total = 0; + while (fileListIterator.hasNext()) { + page--; + if (page == 0) { + FileInfo[] items = fileListIterator.next(); + fileInfoPage.setRecords(Arrays.asList(items)); + total += items.length; + } else { + total += fileListIterator.next().length; + } + } + if (fileInfoPage.getRecords().size() == 0) { + fileInfoPage.setRecords(Arrays.asList(fileListIterator.next())); + } + fileInfoPage.setCurrent(page).setSize(limit).setTotal(total); + return fileInfoPage; + } + + /** + * 获取七牛云空间的分页文件列表(分页),如果页数超限,则返回第一页(默认key) + * + * @param page 页号 + * @param limit 每页条数 + * @param prefix 前缀 + * @param delimiter 分隔符 + * @return 页面类Page + */ + public Page getQiniuFileListPage(Integer page, Integer limit, String prefix, String delimiter) { + return this.getQiniuFileListPage(DEFAULT_KEY, page, limit, prefix, delimiter); + } + + /** + * 获取下载链接(一般针对私有资源使用)(指定key) + * + * @param confKey 配置文件的key,不同的key对应不同的存储空间 + * @param fileKey 下载资源在七牛云存储的key + * @param attName 下载文件的名字。null:与存储的文件名相同 + * @param expireSeconds 有效期(秒),一般取3600(即1小时) + * @return 下载链接 + */ + public String getDownloadUrl(String confKey, String fileKey, String attName, Long expireSeconds) { + // 获取配置 + QiniuOssBO qiniuOssBO = this.getQiniuConfig(confKey); + if (qiniuOssBO == null) { + throw new ServiceException("key为[" + confKey + "]的配置信息为空,请检查!"); + } + DownloadUrl url = new DownloadUrl(qiniuOssBO.getDomain(), "https".equals(qiniuOssBO.getProtocol()), fileKey); + if (null != attName) { + url.setAttname(attName); + } + Auth auth = Auth.create(qiniuOssBO.getAccessKey(), qiniuOssBO.getSecretKey()); + long deadline = expireSeconds + new Date().getTime(); + String downloadUrl = ""; + try { + downloadUrl = url.buildURL(auth, deadline); + } catch (QiniuException e) { + throw new ServiceException(e.response.toString()); + } + return downloadUrl; + } + + /** + * 获取下载链接(一般针对私有资源使用)(默认key) + * + * @param fileKey 下载资源在七牛云存储的key + * @param attName 下载文件的名字。null:与存储的文件名相同 + * @param expireSeconds 有效期(秒),一般取3600(即1小时) + * @return 下载链接 + */ + public String getDownloadUrl(String fileKey, String attName, Long expireSeconds) { + return this.getDownloadUrl(DEFAULT_KEY, fileKey, attName, expireSeconds); + } + + /** + * 根据配置信息生成空间管理器 + * + * @param qiniuOssBO 配置信息 + * @return 空间管理器 + */ + private BucketManager createBucketManager(QiniuOssBO qiniuOssBO) { + // 生成Auth授权类 + Auth auth = Auth.create(qiniuOssBO.getAccessKey(), qiniuOssBO.getSecretKey()); + // 配置信息, + Configuration configuration = new Configuration(this.createRegion(qiniuOssBO.getRegion())); + // 返回 + return new BucketManager(auth, configuration); + } + + /** + * 根据空间地址设置Region + * 详情:https://developer.qiniu.com/kodo/1671/region-endpoint-fq + * + * @param re 空间地域:华东:z0; 华北:z1; 华南:z2; 北美:na0; 东南亚:as0; 华东-浙江2:cn-east-2 + * @return 地域类 + */ + private Region createRegion(String re) { + // 设置区域:如果不为空 + Region region; + switch (re) { + case "z0": + region = Region.huadong(); + break; + case "z1": + region = Region.huabei(); + break; + case "z2": + region = Region.huanan(); + break; + case "na0": + region = Region.beimei(); + break; + case "as0": + region = Region.xinjiapo(); + break; + case "cn-east-2": + region = Region.huadongZheJiang2(); + break; + default: + region = new Region.Builder().autoRegion("https://uc.qbox.me"); + } + return region; + } +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/vo/AliyunOssPolicyVO.java b/ss-component/src/main/java/com/zxdmy/excite/component/vo/AliyunOssPolicyVO.java new file mode 100644 index 0000000..7808f80 --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/vo/AliyunOssPolicyVO.java @@ -0,0 +1,56 @@ +package com.zxdmy.excite.component.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * 此[表现层对象]用来返回前端上传时,需要用到的各种参数。 + * 应用场景:后端生成Policy,前端直传阿里云OSS。上传最大值:5G。 + * 参考资料: + * https://help.aliyun.com/document_detail/31927.htm + * https://help.aliyun.com/document_detail/31926.htm + * + * @author 沈松 + * @since 2022/1/5 21:06 + */ +@Data +@Accessors(chain = true) +public class AliyunOssPolicyVO implements Serializable { + + /*** + * Bucket域名,即Endpoint访问域名。格式为:https://{bucketName}.{endpoint},如:https://bucket-name.oss-cn-hangzhou.aliyuncs.com + */ + private String host; + + /** + * 文件完整名(如果有前缀则需要携带),如:hello.zip,user/10001/hello.rar + */ + private String key; + + /** + * 用户表单上传的策略(Policy),Policy为经过Base64编码过的字符串。详情请参见 https://help.aliyun.com/document_detail/31988.htm?spm=a2c4g.11186623.0.0.69de5458ikCoa2#section-d5z-1ww-wdb + */ + private String policy; + + /** + * 用户请求的AccessKey ID。 + */ + private String accessKeyId; + + /** + * 设置阿里云OSS服务端返回状态码为200,不设置则默认返回状态码204。 + */ + private final String success_action_status = "200"; + + /** + * 上传后的阿里云OSS服务器回调功能。即上传完成后,阿里云向此地址发送一个回调。如果不涉及上传回调,请不要填充值。 + */ + private String callback; + + /** + * 对Policy签名后的字符串。详情请参见:https://help.aliyun.com/document_detail/31988.htm?spm=a2c4g.11186623.0.0.69de5458ikCoa2#section-wny-mww-wdb + */ + private String signature; +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/vo/QiniuFileVO.java b/ss-component/src/main/java/com/zxdmy/excite/component/vo/QiniuFileVO.java new file mode 100644 index 0000000..59ab1be --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/vo/QiniuFileVO.java @@ -0,0 +1,71 @@ +package com.zxdmy.excite.component.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + *

                          + * 描述 + *

                          + * + * @author 沈松 + * @since 2022/1/4 11:51 + */ +@Data +@Accessors(chain = true) +public class QiniuFileVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 文件名 + */ + public String key; + + /** + * 文件hash值 + */ + public String hash; + + /** + * 文件的md5值 + */ + public String md5; + + /** + * 文件大小,单位:字节 + */ + public long size; + + /** + * 文件上传时间,单位为:100纳秒 + */ + public long putTime; + + /** + * 文件的mimeType + */ + public String mimeType; + + /** + * 文件的状态,0表示启用,1表示禁用 + */ + public int status; + + /** + * 七牛云该空间(bucket)绑定的CDN加速域名 + */ + private String domain; + + /** + * 七牛云该空间(bucket)绑定的CDN加速域名的协议 http | https + */ + private String protocol; + + /* + * 上传Token + */ + private String uploadToken; +} diff --git a/ss-component/src/main/java/com/zxdmy/excite/component/wechat/WeChatPayService.java b/ss-component/src/main/java/com/zxdmy/excite/component/wechat/WeChatPayService.java new file mode 100644 index 0000000..94fa19c --- /dev/null +++ b/ss-component/src/main/java/com/zxdmy/excite/component/wechat/WeChatPayService.java @@ -0,0 +1,245 @@ +package com.zxdmy.excite.component.wechat; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.github.binarywang.wxpay.bean.request.WxPayRefundV3Request; +import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderV3Request; +import com.github.binarywang.wxpay.bean.result.*; +import com.github.binarywang.wxpay.bean.result.enums.TradeTypeEnum; +import com.github.binarywang.wxpay.config.WxPayConfig; +import com.github.binarywang.wxpay.exception.WxPayException; +import com.github.binarywang.wxpay.service.WxPayService; +import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl; +import com.zxdmy.excite.common.exception.ServiceException; +import com.zxdmy.excite.common.service.IGlobalConfigService; +import com.zxdmy.excite.common.utils.HttpServletRequestUtil; +import com.zxdmy.excite.component.bo.WeChatPayBO; +import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +/** + * 微信支付服务实现类 + * 只实现V3版本的接口(文档地址:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/index.shtml ) + * + * @author 沈松 + * @since 2022-01-02 0002 23:34 + */ +@Service +@AllArgsConstructor +public class WeChatPayService { + + private IGlobalConfigService configService; + + private static final String DEFAULT_SERVICE = "wechatPay"; + + private static final String DEFAULT_KEY = "wechatPay"; + + // 千万不要使用这个垃圾的微信支付沙盒环境..... + private static final Boolean SAND_BOX_ENV = false; + + /** + * 保存微信支付配置信息至数据库 + * + * @param weChatPayBO 微信支付实体 + * @return 结果:T|F + * @throws JsonProcessingException 异常 + */ + public boolean saveConfig(WeChatPayBO weChatPayBO) throws JsonProcessingException { + // 必填信息不能为空 + if (null == weChatPayBO.getAppId() || null == weChatPayBO.getMchId() || null == weChatPayBO.getMchKey()) { + throw new ServiceException("APPID、商户号、商户秘钥不能为空!"); + } + // 保存并返回结果 + return configService.save(DEFAULT_SERVICE, null != weChatPayBO.getKey() ? weChatPayBO.getKey() : DEFAULT_KEY, weChatPayBO, true); + } + + /** + * 从数据库中读取配置信息 + * + * @param confKey 微信支付的配置KEY + * @return 微信支付配置信息 + */ + public WeChatPayBO getConfig(String confKey) { + if (null == confKey) { + return this.getConfig(); + } + return (WeChatPayBO) configService.get(DEFAULT_SERVICE, confKey, new WeChatPayBO()); + } + + /** + * 从数据库中读取配置信息(默认KEY) + * + * @return 微信支付配置信息 + */ + public WeChatPayBO getConfig() { + return this.getConfig(DEFAULT_KEY); + } + + /** + * 下单接口(只设置了必填信息)(V3版本) + * + * @param confKey 必填:微信支付配置信息的KEY。如果使用默认KEY,输入null + * @param tradeType 必填:交易类型:jsapi(含小程序)、app、h5、native + * @param description 必填:商品描述(商品标题) + * @param outTradeNo 必填:商家订单号 + * @param total 必填:商品金额(单位:分) + * @param openId 特殊必填:支付用户的OpenId,JSAPI支付时必填。 + * @return 支付返回结果:
                          APP支付、JSAPI支付为[预支付交易会话标识]
                          Native支付为[二维码链接]
                          H5支付为[支付跳转链接] + */ + public String pay(String confKey, String tradeType, String description, String outTradeNo, Integer total, String openId) { + // 构建统一下单请求参数对象 + WxPayUnifiedOrderV3Request wxPayUnifiedOrderV3Request = new WxPayUnifiedOrderV3Request(); + // 对象中写入数据 + wxPayUnifiedOrderV3Request + // 【1】必填信息 + // 应用ID:必填,可不填,通过配置信息读取 + // .setAppid(weChatPayBO.getAppId()) + // 直连商户号:必填,可不填,通过配置信息读取 + // .setMchid(weChatPayBO.getMchId()) + // 商品描述:必填 + .setDescription(description) + // 商户订单号:必填,同一个商户号下唯一 + .setOutTradeNo(outTradeNo) + // 通知地址:必填,公网域名必须为https,外网可访问。 + // 可不填,通过配置信息读取 + .setNotifyUrl(this.getConfig(confKey).getNotifyUrl()) + // 订单金额:单位(分) + .setAmount(new WxPayUnifiedOrderV3Request.Amount().setTotal(total)) + // 【2】选填信息 + // 附加信息 + .setAttach("附加信息") + // 订单优惠标记 + .setGoodsTag("ABCD") + // ... + ; + + try { + // 根据请求类型,返回指定类型,其中包含:【3】条件必填信息 + switch (tradeType.toLowerCase()) { + // Native支付 + case "native": + return this.getWxPayService(confKey).unifiedOrderV3(TradeTypeEnum.NATIVE, wxPayUnifiedOrderV3Request).getCodeUrl(); + // JSAPI支付 + case "jsapi": + // 用户在直连商户appid下的唯一标识。 下单前需获取到用户的Openid + wxPayUnifiedOrderV3Request.setPayer(new WxPayUnifiedOrderV3Request.Payer().setOpenid(openId)); + return this.getWxPayService(confKey).unifiedOrderV3(TradeTypeEnum.JSAPI, wxPayUnifiedOrderV3Request).getPrepayId(); + // H5支付 + case "h5": + wxPayUnifiedOrderV3Request.setSceneInfo( + new WxPayUnifiedOrderV3Request.SceneInfo() + // 用户终端IP + .setPayerClientIp(HttpServletRequestUtil.getRemoteIP()) + .setH5Info( + new WxPayUnifiedOrderV3Request.H5Info() + // 场景类型 + .setType("wechat") + ) + ); + return this.getWxPayService(confKey).unifiedOrderV3(TradeTypeEnum.H5, wxPayUnifiedOrderV3Request).getH5Url(); + // APP支付 + case "app": + return this.getWxPayService(confKey).unifiedOrderV3(TradeTypeEnum.APP, wxPayUnifiedOrderV3Request).getPrepayId(); + default: + throw new ServiceException("输入的[" + tradeType + "]不合法,只能为native、jsapi、h5、app其一,请核实!"); + } + } catch (WxPayException e) { + throw new ServiceException(e.getMessage()); + } + } + + /** + * 订单查询接口(新版V3) + * + * @param confKey 必填:微信支付配置信息的KEY。如果使用默认KEY,输入null + * @param transactionId 微信订单号 + * @param outTradeNo 商户系统内部的订单号,当没提供transactionId时需要传这个。 + * @return 查询订单 返回结果对象 + */ + public WxPayOrderQueryV3Result query(String confKey, String transactionId, String outTradeNo) { + try { + return this.getWxPayService(confKey).queryOrderV3(transactionId, outTradeNo); + } catch (WxPayException e) { + throw new ServiceException(e.getMessage()); + } + } + + /** + * 退款接口 + * + * @param confKey 必填:微信支付配置信息的KEY。如果使用默认KEY,输入null + * @param outTradeNo 商户订单号 + * @param outRefundNo 商户退款单号 + * @param total 订单总金额(单位:分) + * @param refund 退款金额(单位:分) + */ + public WxPayRefundV3Result refund(String confKey, String outTradeNo, String outRefundNo, int total, int refund) { + WxPayRefundV3Request wxPayRefundV3Request = new WxPayRefundV3Request(); + wxPayRefundV3Request + .setOutTradeNo(outTradeNo) + .setOutRefundNo(outRefundNo) + .setAmount(new WxPayRefundV3Request.Amount() + .setTotal(total) + .setRefund(refund) + .setCurrency("CNY") + ); + try { + return this.getWxPayService(confKey).refundV3(wxPayRefundV3Request); + } catch (WxPayException e) { + throw new ServiceException(e.getMessage()); + } + } + + /** + * 获取微信支付相关接口的服务 + * (后续的几个服务方法,实现了基本的实例) + * (此接口也可以直接在controller中使用) + * + * @return 微信支付服务接口 + */ + public WxPayService getWxPayService(String confKey) { + if (null == confKey) { + return this.getWxPayService(); + } + // 读取配置信息 + WeChatPayBO weChatPayBO = this.getConfig(confKey); + // 生成配置 + WxPayConfig payConfig = new WxPayConfig(); + // 填充基本配置信息 + payConfig.setAppId(StringUtils.trimToNull(weChatPayBO.getAppId())); + payConfig.setMchId(StringUtils.trimToNull(weChatPayBO.getMchId())); + payConfig.setMchKey(StringUtils.trimToNull(weChatPayBO.getMchKey())); + payConfig.setApiV3Key(StringUtils.trimToNull(weChatPayBO.getApiV3Key())); + payConfig.setSubAppId(StringUtils.trimToNull(weChatPayBO.getSubAppId())); + payConfig.setSubMchId(StringUtils.trimToNull(weChatPayBO.getSubMchId())); + payConfig.setKeyPath(StringUtils.trimToNull(weChatPayBO.getKeyPath())); + payConfig.setPrivateCertPath(StringUtils.trimToNull(weChatPayBO.getPrivateCertPath())); + payConfig.setPrivateKeyPath(StringUtils.trimToNull(weChatPayBO.getPrivateKeyPath())); + payConfig.setNotifyUrl(StringUtils.trimToNull(weChatPayBO.getNotifyUrl())); + // 创建配置服务 + WxPayService wxPayService = new WxPayServiceImpl(); + wxPayService.setConfig(payConfig); + // 可以指定是否使用沙箱环境 + payConfig.setUseSandboxEnv(SAND_BOX_ENV); + if (SAND_BOX_ENV) { + try { + payConfig.setMchKey(wxPayService.getSandboxSignKey()); + wxPayService.setConfig(payConfig); + } catch (WxPayException e) { + throw new ServiceException(e.getMessage()); + } + } + // 返回结果 + return wxPayService; + } + + /** + * 获取微信支付相关接口的服务(默认KEY) + * + * @return 微信支付服务接口 + */ + public WxPayService getWxPayService() { + return this.getWxPayService(DEFAULT_KEY); + } + +} diff --git a/ss-framework/README.md b/ss-framework/README.md new file mode 100644 index 0000000..560f1ee --- /dev/null +++ b/ss-framework/README.md @@ -0,0 +1,3 @@ +# ExciteFramework 模块 + +系统框架模块,主要实现与系统架构相关的功能,如权限认证等。 \ No newline at end of file diff --git a/ss-framework/pom.xml b/ss-framework/pom.xml new file mode 100644 index 0000000..ac3dbc0 --- /dev/null +++ b/ss-framework/pom.xml @@ -0,0 +1,42 @@ + + + 4.0.0 + + com.zxdmy.excite + shensong + 2.0.0 + + + ss-framework + 2.0.0 + ss-framework + + 描述信息. + + + + + + com.zxdmy.excite + ss-system + 2.0.0 + + + + + org.springframework.boot + spring-boot-starter-aop + + + + + com.github.oshi + oshi-core + 6.1.0 + + + + + + diff --git a/ss-framework/src/main/java/com/zxdmy/excite/framework/aop/AnnotationSaveLoginLog.java b/ss-framework/src/main/java/com/zxdmy/excite/framework/aop/AnnotationSaveLoginLog.java new file mode 100644 index 0000000..a14d0b5 --- /dev/null +++ b/ss-framework/src/main/java/com/zxdmy/excite/framework/aop/AnnotationSaveLoginLog.java @@ -0,0 +1,19 @@ +package com.zxdmy.excite.framework.aop; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + *

                          + * 自定义注解:用在控制类或者控制类的方法上,用于保存登录日志 + *

                          + * + * @author 沈松 + * @since 2021/12/9 17:22 + */ +@Retention(RetentionPolicy.RUNTIME) // 何时运行和结束 +@Target({ElementType.TYPE, ElementType.METHOD}) // 注解作用位置 +public @interface AnnotationSaveLoginLog { +} diff --git a/ss-framework/src/main/java/com/zxdmy/excite/framework/aop/AnnotationSaveReLog.java b/ss-framework/src/main/java/com/zxdmy/excite/framework/aop/AnnotationSaveReLog.java new file mode 100644 index 0000000..c14fded --- /dev/null +++ b/ss-framework/src/main/java/com/zxdmy/excite/framework/aop/AnnotationSaveReLog.java @@ -0,0 +1,16 @@ +package com.zxdmy.excite.framework.aop; + +import java.lang.annotation.*; + +/** + *

                          + * 自定义注解:用在控制类或者控制类的方法上,用于保存请求和响应的日志 + *

                          + * + * @author 沈松 + * @since 2021/12/9 17:22 + */ +@Retention(RetentionPolicy.RUNTIME) // 何时运行和结束 +@Target({ElementType.TYPE, ElementType.METHOD}) // 注解作用位置 +public @interface AnnotationSaveReLog { +} diff --git a/ss-framework/src/main/java/com/zxdmy/excite/framework/aop/SaveLogAspect.java b/ss-framework/src/main/java/com/zxdmy/excite/framework/aop/SaveLogAspect.java new file mode 100644 index 0000000..1e66f49 --- /dev/null +++ b/ss-framework/src/main/java/com/zxdmy/excite/framework/aop/SaveLogAspect.java @@ -0,0 +1,212 @@ +package com.zxdmy.excite.framework.aop; + + +import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.useragent.UserAgent; +import cn.hutool.json.JSONUtil; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.zxdmy.excite.common.enums.SystemCode; +import com.zxdmy.excite.common.utils.HttpServletRequestUtil; +import com.zxdmy.excite.system.entity.SysLogLogin; +import com.zxdmy.excite.system.entity.SysLogRequest; +import com.zxdmy.excite.system.service.ISysLogLoginService; +import com.zxdmy.excite.system.service.ISysLogRequestService; +import lombok.AllArgsConstructor; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.assertj.core.internal.ObjectArrays; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.time.Duration; +import java.time.Instant; +import java.time.LocalDateTime; +import java.util.Arrays; + +/** + *

                          + * AOP:保存指定请求的日志 + *

                          + * + * @author 沈松 + * @since 2021/12/9 16:45 + */ +@Aspect // AOP注解 +@Order(Ordered.HIGHEST_PRECEDENCE) +@Component +@AllArgsConstructor +public class SaveLogAspect { + + ObjectMapper objectMapper; + + ISysLogRequestService logRequestService; + + ISysLogLoginService logLoginService; + + /** + * 切入点 + */ + @Pointcut("@annotation(AnnotationSaveReLog) || @within(AnnotationSaveReLog)") + public void aspectSaveReLog() { + } + + /** + * 切入点 + */ + @Pointcut("@annotation(AnnotationSaveLoginLog) || @within(AnnotationSaveLoginLog)") + public void aspectSaveLoginLog() { + } + + /** + * AOP:保存重要请求的日志 + * + * @param pjp ProceedingJoinPoint + * @return 返回数据 + * @throws Throwable 异常 + */ + @Around("aspectSaveReLog()") + public Object saveReqLogService(ProceedingJoinPoint pjp) throws Throwable { + // 请求开始时间 + Instant start = Instant.now(); + // 请求数据实体 + SysLogRequest logRequest = new SysLogRequest(); + // 已登录?写入登录用户的ID + if (StpUtil.isLogin()) { + logRequest.setUserId(StpUtil.getLoginIdAsInt()); + } + // 写入请求的IP + logRequest.setIp(HttpServletRequestUtil.getRemoteIP()); + // 写入UA + UserAgent userAgent = HttpServletRequestUtil.getRequestUserAgent(); + logRequest.setUserAgent(userAgent.getOs().getName() + ";" + userAgent.getBrowser().getName() + " " + userAgent.getVersion()); + // 写入URI + logRequest.setReqUri(HttpServletRequestUtil.getRequestURI()); + // 写入请求方法 + logRequest.setReqMethod(HttpServletRequestUtil.getRequest().getMethod()); + // 写入请求的函数 + logRequest.setReqFunction(pjp.getSignature().toShortString()); + // 写入请求的数据 + logRequest.setReqData(objectMapper.writeValueAsString(pjp.getArgs())); + // 执行方法获取的返回值 + Object returnValue; + try { + // 执行方法 + returnValue = pjp.proceed(); + } catch (Exception e) { + // 写入返回信息(异常信息) + logRequest.setResData(e.getMessage()); + // 写入状态异常 + logRequest.setStatus(SystemCode.STATUS_N.getCode()); + // 写入时间 + logRequest.setCreateTime(LocalDateTime.now()); + // 写入执行时间间隔 + logRequest.setTimeCost((int) Duration.between(start, Instant.now()).toMillis()); + // 写入数据库 + logRequestService.save(logRequest); + // 抛出异常 + throw e; + } + // 没有异常,执行正常 + // 写入返回值 + String response = objectMapper.writeValueAsString(returnValue); + if (StrUtil.isNotEmpty(response)) { + logRequest.setResData(response); + } + // 写入请求状态 + if (JSONUtil.isJsonObj(response)) { + logRequest.setStatus(JSONUtil.parseObj(response).getBool("success", false) ? SystemCode.STATUS_Y.getCode() : SystemCode.STATUS_N.getCode()); + } + // 写入时间 + logRequest.setCreateTime(LocalDateTime.now()); + // 写入执行时间间隔 + logRequest.setTimeCost((int) Duration.between(start, Instant.now()).toMillis()); + // 写入数据库 + logRequestService.save(logRequest); + // 打印测试 +// System.out.println(logRequest); + // 返回前端 + return returnValue; + } + + /** + * AOP:保存登录日志 + * + * @param pjp ProceedingJoinPoint + * @return 返回数据 + * @throws Throwable 异常 + */ + @Around("aspectSaveLoginLog()") + public Object saveLoginLogService(ProceedingJoinPoint pjp) throws Throwable { + // 请求开始时间 + Instant start = Instant.now(); + // 请求数据实体 + SysLogLogin logLogin = new SysLogLogin(); + // 已登录?直接返回 + if (StpUtil.isLogin()) { + return pjp.proceed(); + } + // 写入请求的IP + logLogin.setIp(HttpServletRequestUtil.getRemoteIP()); + // 写入UA + UserAgent userAgent = HttpServletRequestUtil.getRequestUserAgent(); + logLogin.setUserAgent(userAgent.getOs().getName() + ";" + userAgent.getBrowser().getName() + " " + userAgent.getVersion()); + // 解析请求数据 + String request = objectMapper.writeValueAsString(pjp.getArgs()); + // System.out.println(request); + logLogin.setReqData(request); + // 写入请求用户名 + if (JSONUtil.isJsonObj(request)) { + logLogin.setUserAccount(JSONUtil.parseObj(request).getStr("username", "非法用户")); + } else if (JSONUtil.isJsonArray(request)) { + logLogin.setUserAccount(JSONUtil.parseArray(request).getStr(0, "非法用户")); + } + // 执行方法获取的返回值 + Object returnValue; + try { + returnValue = pjp.proceed(); + } catch (Exception e) { + // 写入状态异常 + logLogin.setStatus(SystemCode.STATUS_N.getCode()); + // 写入返回信息(异常信息) + logLogin.setResData(e.getMessage()); + // 写入时间 + logLogin.setCreateTime(LocalDateTime.now()); + // 写入执行时间间隔 + logLogin.setTimeCost((int) Duration.between(start, Instant.now()).toMillis()); + // 写入数据库 + logLoginService.save(logLogin); + // 抛出异常 + throw e; + } + // 没有异常,执行正常 + String response = objectMapper.writeValueAsString(returnValue); + // 如果登录成功 + if (JSONUtil.isJsonObj(response)) { + if (JSONUtil.parseObj(response).getBool("success", false)) { + logLogin.setStatus(SystemCode.STATUS_Y.getCode()); + logLogin.setUserId(StpUtil.getLoginIdAsInt()); + } + // 否则登录失败 + else { + logLogin.setStatus(SystemCode.STATUS_N.getCode()); + } + } + + // 写入返回值 + if (StrUtil.isNotEmpty(response)) { + logLogin.setResData(response); + } + + // 写入时间 + logLogin.setCreateTime(LocalDateTime.now()); + // 写入执行时间间隔 + logLogin.setTimeCost((int) Duration.between(start, Instant.now()).toMillis()); + // 写入数据库 + logLoginService.save(logLogin); + return returnValue; + } +} diff --git a/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/Server.java b/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/Server.java new file mode 100644 index 0000000..aad9ead --- /dev/null +++ b/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/Server.java @@ -0,0 +1,233 @@ +package com.zxdmy.excite.framework.oshi; + +import cn.hutool.core.net.NetUtil; +import cn.hutool.core.util.NumberUtil; +import com.zxdmy.excite.common.utils.ArithUtils; +import com.zxdmy.excite.common.utils.HttpServletRequestUtil; +import com.zxdmy.excite.framework.oshi.domain.*; +import lombok.Data; +import oshi.SystemInfo; +import oshi.hardware.CentralProcessor; +import oshi.hardware.CentralProcessor.TickType; +import oshi.hardware.GlobalMemory; +import oshi.hardware.HardwareAbstractionLayer; +import oshi.software.os.FileSystem; +import oshi.software.os.OSFileStore; +import oshi.software.os.OperatingSystem; +import oshi.util.Util; + +import java.io.Serializable; +import java.net.UnknownHostException; +import java.util.LinkedList; +import java.util.List; +import java.util.Properties; + +/** + * 系统服务器相关信息实体 + * + * @author 沈松 + * @since 2022/1/22 20:57 + */ +public class Server implements Serializable { + + private static final long serialVersionUID = 1L; + + private static final int OSHI_WAIT_SECOND = 1000; + + /** + * CPU相关信息 + */ + private Cpu cpu = new Cpu(); + + /** + * 內存相关信息 + */ + private Mem mem = new Mem(); + + /** + * JVM相关信息 + */ + private Jvm jvm = new Jvm(); + + /** + * 服务器相关信息 + */ + private Sys sys = new Sys(); + + /** + * 磁盘相关信息 + */ + private List sysFiles = new LinkedList(); + + public Cpu getCpu() { + return cpu; + } + + public void setCpu(Cpu cpu) { + this.cpu = cpu; + } + + public Mem getMem() { + return mem; + } + + public void setMem(Mem mem) { + this.mem = mem; + } + + public Jvm getJvm() { + return jvm; + } + + public void setJvm(Jvm jvm) { + this.jvm = jvm; + } + + public Sys getSys() { + return sys; + } + + public void setSys(Sys sys) { + this.sys = sys; + } + + public List getSysFiles() { + return sysFiles; + } + + public void setSysFiles(List sysFiles) { + this.sysFiles = sysFiles; + } + + public void copyTo() throws Exception { + SystemInfo si = new SystemInfo(); + HardwareAbstractionLayer hal = si.getHardware(); + + setCpuInfo(hal.getProcessor()); + + setMemInfo(hal.getMemory()); + + setSysInfo(); + + setJvmInfo(); + + setSysFiles(si.getOperatingSystem()); + } + + /** + * 设置CPU信息 + */ + private void setCpuInfo(CentralProcessor processor) { + // CPU信息 + long[] prevTicks = processor.getSystemCpuLoadTicks(); + Util.sleep(OSHI_WAIT_SECOND); + long[] ticks = processor.getSystemCpuLoadTicks(); + long nice = ticks[TickType.NICE.getIndex()] - prevTicks[TickType.NICE.getIndex()]; + long irq = ticks[TickType.IRQ.getIndex()] - prevTicks[TickType.IRQ.getIndex()]; + long softirq = ticks[TickType.SOFTIRQ.getIndex()] - prevTicks[TickType.SOFTIRQ.getIndex()]; + long steal = ticks[TickType.STEAL.getIndex()] - prevTicks[TickType.STEAL.getIndex()]; + long cSys = ticks[TickType.SYSTEM.getIndex()] - prevTicks[TickType.SYSTEM.getIndex()]; + long user = ticks[TickType.USER.getIndex()] - prevTicks[TickType.USER.getIndex()]; + long iowait = ticks[TickType.IOWAIT.getIndex()] - prevTicks[TickType.IOWAIT.getIndex()]; + long idle = ticks[TickType.IDLE.getIndex()] - prevTicks[TickType.IDLE.getIndex()]; + long totalCpu = user + nice + cSys + idle + iowait + irq + softirq + steal; + cpu.setCpuNum(processor.getLogicalProcessorCount()); + cpu.setTotal(totalCpu); + cpu.setSys(cSys); + cpu.setUsed(user); + cpu.setWait(iowait); + cpu.setFree(idle); + } + + /** + * 设置内存信息 + */ + private void setMemInfo(GlobalMemory memory) { + long total = memory.getTotal(); + long used = memory.getTotal() - memory.getAvailable(); + mem.setTotal(convertFileSize(total)); + mem.setUsed(convertFileSize(used)); + mem.setFree(convertFileSize(memory.getAvailable())); + mem.setUsage(ArithUtils.mul(ArithUtils.div(used, total, 4), 100) + " %"); + } + + /** + * 设置服务器信息 + */ + private void setSysInfo() { + Properties props = System.getProperties(); + sys.setComputerName(HttpServletRequestUtil.getHostName()); + sys.setComputerIp(HttpServletRequestUtil.getHostIp()); + sys.setOsName(props.getProperty("os.name")); + sys.setOsArch(props.getProperty("os.arch")); + sys.setUserDir(props.getProperty("user.dir")); + } + + /** + * 设置Java虚拟机 + */ + private void setJvmInfo() { + Properties props = System.getProperties(); + // 总内存 + long total = Runtime.getRuntime().totalMemory(); + jvm.setTotal(convertFileSize(total)); + // 最大内存 + long max = Runtime.getRuntime().maxMemory(); + jvm.setMax(convertFileSize(max)); + // 空闲 + long free = Runtime.getRuntime().freeMemory(); + jvm.setFree(convertFileSize(free)); + // 已用 + jvm.setUsed(convertFileSize(total - free)); + // 使用率 + jvm.setUsage(ArithUtils.mul(ArithUtils.div(total - free, total, 4), 100) + " %"); + // 版本参数 + jvm.setVersion(props.getProperty("java.version")); + jvm.setHome(props.getProperty("java.home")); + } + + /** + * 设置磁盘信息 + */ + private void setSysFiles(OperatingSystem os) { + FileSystem fileSystem = os.getFileSystem(); + List fsArray = fileSystem.getFileStores(); + for (OSFileStore fs : fsArray) { + long free = fs.getUsableSpace(); + long total = fs.getTotalSpace(); + long used = total - free; + SysFile sysFile = new SysFile(); + sysFile.setDirName(fs.getMount()); + sysFile.setSysTypeName(fs.getType()); + sysFile.setTypeName(fs.getName()); + sysFile.setTotal(convertFileSize(total)); + sysFile.setFree(convertFileSize(free)); + sysFile.setUsed(convertFileSize(used)); + sysFile.setUsage(ArithUtils.mul(ArithUtils.div(used, total, 4), 100) + " %"); + sysFiles.add(sysFile); + } + } + + /** + * 字节转换 + * + * @param size 字节大小 + * @return 转换后值 + */ + public String convertFileSize(long size) { + long kb = 1024; + long mb = kb * 1024; + long gb = mb * 1024; + if (size >= gb) { + return String.format("%.1f GB", (float) size / gb); + } else if (size >= mb) { + float f = (float) size / mb; + return String.format(f > 100 ? "%.0f MB" : "%.1f MB", f); + } else if (size >= kb) { + float f = (float) size / kb; + return String.format(f > 100 ? "%.0f KB" : "%.1f KB", f); + } else { + return String.format("%d B", size); + } + } +} diff --git a/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Cpu.java b/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Cpu.java new file mode 100644 index 0000000..a6b3190 --- /dev/null +++ b/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Cpu.java @@ -0,0 +1,106 @@ +package com.zxdmy.excite.framework.oshi.domain; + +import com.zxdmy.excite.common.utils.ArithUtils; + +import java.io.Serializable; + +/** + * 系统监控之:CPU信息实体 + * + * @author 沈松 + * @since 2022/1/22 20:46 + */ +public class Cpu implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 核心数 + */ + private int cpuNum; + + /** + * CPU总的使用率 + */ + private double total; + + /** + * CPU系统使用率 + */ + private double sys; + + /** + * CPU用户使用率 + */ + private double used; + + /** + * CPU当前等待率 + */ + private double wait; + + /** + * CPU当前空闲率 + */ + private double free; + + public int getCpuNum() + { + return cpuNum; + } + + public void setCpuNum(int cpuNum) + { + this.cpuNum = cpuNum; + } + + public double getTotal() + { + return ArithUtils.round(ArithUtils.mul(total, 100), 2); + } + + public void setTotal(double total) + { + this.total = total; + } + + public double getSys() + { + return ArithUtils.round(ArithUtils.mul(sys / total, 100), 2); + } + + public void setSys(double sys) + { + this.sys = sys; + } + + public double getUsed() + { + return ArithUtils.round(ArithUtils.mul(used / total, 100), 2); + } + + public void setUsed(double used) + { + this.used = used; + } + + public double getWait() + { + return ArithUtils.round(ArithUtils.mul(wait / total, 100), 2); + } + + public void setWait(double wait) + { + this.wait = wait; + } + + public double getFree() + { + return ArithUtils.round(ArithUtils.mul(free / total, 100), 2); + } + + public void setFree(double free) + { + this.free = free; + } +} diff --git a/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Jvm.java b/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Jvm.java new file mode 100644 index 0000000..31b1ad5 --- /dev/null +++ b/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Jvm.java @@ -0,0 +1,130 @@ +package com.zxdmy.excite.framework.oshi.domain; + +import com.zxdmy.excite.common.utils.ArithUtils; +import com.zxdmy.excite.common.utils.DateUtils; + +import java.io.Serializable; +import java.lang.management.ManagementFactory; + +/** + * 系统监控之:Java虚拟机信息实体 + * + * @author 沈松 + * @since 2022/1/22 20:47 + */ +public class Jvm implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 当前JVM占用的内存总数 + */ + private String total; + + /** + * JVM最大可用内存总数 + */ + private String max; + + /** + * JVM已用内存数目 + */ + private String used; + + /** + * JVM空闲内存(M) + */ + private String free; + + /** + * JVM内存使用率 + */ + private String usage; + + /** + * JDK版本 + */ + private String version; + + /** + * JDK路径 + */ + private String home; + + public String getTotal() { + return total; + } + + public void setTotal(String total) { + this.total = total; + } + + public String getMax() { + return max; + } + + public void setMax(String max) { + this.max = max; + } + + public String getFree() { + return free; + } + + public void setFree(String free) { + this.free = free; + } + + public String getUsed() { + return used; + } + + public void setUsed(String used) { + this.used = used; + } + + public void setUsage(String usage) { + this.usage = usage; + } + + public String getUsage() { + return usage; + } + + /** + * 获取JDK名称 + */ + public String getName() { + return ManagementFactory.getRuntimeMXBean().getVmName(); + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getHome() { + return home; + } + + public void setHome(String home) { + this.home = home; + } + + /** + * JDK启动时间 + */ + public String getStartTime() { + return DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, DateUtils.getServerStartDate()); + } + + /** + * JDK运行时间 + */ + public String getRunTime() { + return DateUtils.getDatePoor(DateUtils.getNowDate(), DateUtils.getServerStartDate()); + } +} diff --git a/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Mem.java b/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Mem.java new file mode 100644 index 0000000..ed2ef0e --- /dev/null +++ b/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Mem.java @@ -0,0 +1,72 @@ +package com.zxdmy.excite.framework.oshi.domain; + +import com.zxdmy.excite.common.utils.ArithUtils; + +import java.io.Serializable; + +/** + * 系统监控之:内存信息实体 + * + * @author 沈松 + * @since 2022/1/22 20:51 + */ +public class Mem implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 内存总量 + */ + private String total; + + /** + * 已用内存 + */ + private String used; + + /** + * 剩余内存 + */ + private String free; + + /** + * 使用率 + */ + private String usage; + + public String getTotal() { +// return ArithUtils.div(total, (1024 * 1024 * 1024), 2); + return total; + } + + public void setTotal(String total) { + this.total = total; + } + + public String getUsed() { +// return ArithUtils.div(used, (1024 * 1024 * 1024), 2); + return used; + } + + public void setUsed(String used) { + this.used = used; + } + + public String getFree() { +// return ArithUtils.div(free, (1024 * 1024 * 1024), 2); + return free; + } + + public void setFree(String free) { + this.free = free; + } + + public void setUsage(String usage) { + this.usage = usage; + } + + public String getUsage() { +// return ArithUtils.mul(ArithUtils.div(used, total, 4), 100); + return this.usage; + } +} diff --git a/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Sys.java b/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Sys.java new file mode 100644 index 0000000..fac6c79 --- /dev/null +++ b/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/Sys.java @@ -0,0 +1,81 @@ +package com.zxdmy.excite.framework.oshi.domain; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 系统监控之:系统信息实体 + * + * @author 沈松 + * @since 2022/1/22 20:52 + */ +public class Sys implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 服务器名称 + */ + private String computerName; + + /** + * 服务器Ip + */ + private String computerIp; + + /** + * 项目路径 + */ + private String userDir; + + /** + * 操作系统 + */ + private String osName; + + /** + * 系统架构 + */ + private String osArch; + + public String getComputerName() { + return computerName; + } + + public void setComputerName(String computerName) { + this.computerName = computerName; + } + + public String getComputerIp() { + return computerIp; + } + + public void setComputerIp(String computerIp) { + this.computerIp = computerIp; + } + + public String getUserDir() { + return userDir; + } + + public void setUserDir(String userDir) { + this.userDir = userDir; + } + + public String getOsName() { + return osName; + } + + public void setOsName(String osName) { + this.osName = osName; + } + + public String getOsArch() { + return osArch; + } + + public void setOsArch(String osArch) { + this.osArch = osArch; + } +} diff --git a/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/SysFile.java b/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/SysFile.java new file mode 100644 index 0000000..6102114 --- /dev/null +++ b/ss-framework/src/main/java/com/zxdmy/excite/framework/oshi/domain/SysFile.java @@ -0,0 +1,109 @@ +package com.zxdmy.excite.framework.oshi.domain; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 系统监控之:系统文件信息实体类 + * + * @author 沈松 + * @since 2022/1/22 20:53 + */ +@Data + +public class SysFile implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 盘符路径 + */ + private String dirName; + + /** + * 文件系统 + */ + private String sysTypeName; + + /** + * 盘符名称 + */ + private String typeName; + + /** + * 总大小 + */ + private String total; + + /** + * 剩余大小 + */ + private String free; + + /** + * 已经使用量 + */ + private String used; + + /** + * 资源的使用率 + */ + private String usage; + + public String getDirName() { + return dirName; + } + + public void setDirName(String dirName) { + this.dirName = dirName; + } + + public String getSysTypeName() { + return sysTypeName; + } + + public void setSysTypeName(String sysTypeName) { + this.sysTypeName = sysTypeName; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public String getTotal() { + return total; + } + + public void setTotal(String total) { + this.total = total; + } + + public String getFree() { + return free; + } + + public void setFree(String free) { + this.free = free; + } + + public String getUsed() { + return used; + } + + public void setUsed(String used) { + this.used = used; + } + + public String getUsage() { + return usage; + } + + public void setUsage(String usage) { + this.usage = usage; + } +} diff --git a/ss-framework/src/main/java/com/zxdmy/excite/framework/satoken/SaTokenConfig.java b/ss-framework/src/main/java/com/zxdmy/excite/framework/satoken/SaTokenConfig.java new file mode 100644 index 0000000..cf3b32b --- /dev/null +++ b/ss-framework/src/main/java/com/zxdmy/excite/framework/satoken/SaTokenConfig.java @@ -0,0 +1,70 @@ +package com.zxdmy.excite.framework.satoken; + +import cn.dev33.satoken.interceptor.SaAnnotationInterceptor; +import cn.dev33.satoken.interceptor.SaRouteInterceptor; +import cn.dev33.satoken.router.SaRouter; +import cn.dev33.satoken.stp.StpUtil; + +import com.zxdmy.excite.system.entity.SysMenu; +import com.zxdmy.excite.system.service.ISysMenuService; +import lombok.AllArgsConstructor; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.util.Arrays; +import java.util.List; + +/** + *

                          + * Sa-Token 配置文件 + *

                          + * + * @author 沈松 + * @since 2021-10-12 0012 19:16 + */ +@Configuration +@AllArgsConstructor +public class SaTokenConfig implements WebMvcConfigurer { + + private ISysMenuService menuService; + + @Override + public void addInterceptors(InterceptorRegistry registry) { + // 方案1:注册启用【注解拦截器】 + registry.addInterceptor(new SaAnnotationInterceptor()) + // 添加:以system开头的路由都需要鉴权 + .addPathPatterns("/system/**") + // 排除:登录请求路由 + .excludePathPatterns("/system/user/login") + // 排除:登录页面路由 + .excludePathPatterns("/system/login"); + + // 方案2:注册启用【路由拦截器】 + registry.addInterceptor(new SaRouteInterceptor((request, response, handler) -> { + // 请求的完整链接 + System.out.println(request.getUrl()); + + // 可以在此处直接[批量]指定哪些路由需要拦截/排除[登录] + // SaRouter.match(Arrays.asList("/system/**", ""), Arrays.asList("/system/login", "/system/user/login"), StpUtil::checkLogin); + SaRouter.match(Arrays.asList("/system/**", "")).notMatch(Arrays.asList("/system/login", "/system/user/login")).check(StpUtil::checkLogin); + + // 可以在此处为[某个路由]指定需要的[权限] + // SaRouter.match("/system/menu/get2", () -> StpUtil.checkPermission("system:menu:get2")); + // SaRouter.match("/system/permission/get", () -> StpUtil.checkPermission("system:permission:get")); + + // 也可以从数据库中读取需要拦截的路由列表 + // getMenuList方法会访问很多次,建议使用Redis开启缓存 + List menuList = menuService.getMenuListForSaToken(); + for (SysMenu menu : menuList) { + // 如果权限标识符不为空,则添加至拦截器中 + if (null != menu.getPermission()) { + // 将访问路径Path,与对应的权限permission,添加至路由拦截器 + SaRouter.match(menu.getPath(), () -> StpUtil.checkPermission(menu.getPermission())); + } + } + + })); + + } +} diff --git a/ss-framework/src/main/java/com/zxdmy/excite/framework/satoken/SaTokenListenerConfig.java b/ss-framework/src/main/java/com/zxdmy/excite/framework/satoken/SaTokenListenerConfig.java new file mode 100644 index 0000000..0fc2e92 --- /dev/null +++ b/ss-framework/src/main/java/com/zxdmy/excite/framework/satoken/SaTokenListenerConfig.java @@ -0,0 +1,83 @@ +package com.zxdmy.excite.framework.satoken; + +import cn.dev33.satoken.listener.SaTokenListener; +import cn.dev33.satoken.stp.SaLoginModel; +import org.springframework.stereotype.Component; + +/** + *

                          + * 接口SaTokenListener是Sa-Token的全局侦听器,通过实现此接口,你可以在用户登陆、退出、被踢下线等关键性操作时进行一些AOP操作,比如保存登录/退出日志等信息。 + * 详情:https://sa-token.dev33.cn/doc/index.html#/up/global-listener + *

                          + * + * @author 沈松 + * @since 2021-10-14 0014 17:22 + */ +@Component +public class SaTokenListenerConfig implements SaTokenListener { + + /** + * 每次登录时触发 + */ + @Override + public void doLogin(String loginType, Object loginId, SaLoginModel loginModel) { + System.out.println(loginType + loginId + loginModel); + } + + /** + * 每次注销时触发 + */ + @Override + public void doLogout(String loginType, Object loginId, String tokenValue) { + // ... + } + + /** + * 每次被踢下线时触发 + */ + @Override + public void doKickout(String loginType, Object loginId, String tokenValue) { + // ... + } + + /** + * 每次被顶下线时触发 + */ + @Override + public void doReplaced(String loginType, Object loginId, String tokenValue) { + // ... + } + + /** + * 每次被封禁时触发 + */ + @Override + public void doDisable(String loginType, Object loginId, long disableTime) { + // ... + } + + /** + * 每次被解封时触发 + */ + @Override + public void doUntieDisable(String loginType, Object loginId) { + // ... + } + + /** + * 每次创建Session时触发 + */ + @Override + public void doCreateSession(String id) { + // ... + } + + /** + * 每次注销Session时触发 + */ + @Override + public void doLogoutSession(String id) { + // ... + } + +} diff --git a/ss-framework/src/main/java/com/zxdmy/excite/framework/satoken/SaTokenStpInterfaceImpl.java b/ss-framework/src/main/java/com/zxdmy/excite/framework/satoken/SaTokenStpInterfaceImpl.java new file mode 100644 index 0000000..12ee534 --- /dev/null +++ b/ss-framework/src/main/java/com/zxdmy/excite/framework/satoken/SaTokenStpInterfaceImpl.java @@ -0,0 +1,49 @@ +package com.zxdmy.excite.framework.satoken; + +import cn.dev33.satoken.stp.StpInterface; +import com.zxdmy.excite.system.entity.SysMenu; +import com.zxdmy.excite.system.service.ISysMenuService; +import com.zxdmy.excite.system.service.ISysRoleService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + *

                          + * 权限认证接口 + *

                          + * + * @author 沈松 + * @since 2021-10-12 0012 21:02 + */ +@Component +@AllArgsConstructor +public class SaTokenStpInterfaceImpl implements StpInterface { + + private ISysMenuService menuService; + + private ISysRoleService roleService; + + @Override + public List getPermissionList(Object userId, String userType) { + List menuList = menuService.getMenuListByUserIdForSaToken(Integer.valueOf(userId.toString())); + if (null == menuList) { + return null; + } + // 筛选,取出非空权限(href != null) + List permissions = new ArrayList<>(); + for (SysMenu menu : menuList) { + if (null != menu.getPermission() && !"".equals(menu.getPermission())) { + permissions.add(menu.getPermission()); + } + } + return permissions; + } + + @Override + public List getRoleList(Object userId, String userType) { + return null; + } +} diff --git a/ss-system/README.md b/ss-system/README.md new file mode 100644 index 0000000..f384673 --- /dev/null +++ b/ss-system/README.md @@ -0,0 +1,3 @@ +# Ss-System 模块 + +主要实现系统管理模块的相关功能(实体类、服务类、Mapper类) diff --git a/ss-system/pom.xml b/ss-system/pom.xml new file mode 100644 index 0000000..5fd072e --- /dev/null +++ b/ss-system/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + com.zxdmy.excite + shensong + 2.0.0 + + + ss-system + 2.0.0 + ss-system + + 【系统】模块,主要实现与system前缀表的数据库交互Dao和服务类Service。 + + + + + + + com.zxdmy.excite + ss-common + 2.0.0 + + + + + diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysLogLogin.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysLogLogin.java new file mode 100644 index 0000000..545d06d --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysLogLogin.java @@ -0,0 +1,95 @@ +package com.zxdmy.excite.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

                          + * + *

                          + * + * @author 沈松 + * @since 2021-12-28 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class SysLogLogin implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 登录用户ID + */ + private Integer userId; + + /** + * 登录用户账号 + */ + private String userAccount; + + /** + * 登录IP + */ + private String ip; + + /** + * 浏览器Agent + */ + private String userAgent; + + /** + * 请求数据 + */ + private String reqData; + + /** + * 返回数据 + */ + private String resData; + + /** + * 耗时 + */ + private Integer timeCost; + + /** + * 请求状态:0-失败 | 1-成功 + */ + private Integer status; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8") + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonSerialize(using = LocalDateTimeSerializer.class) + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + /** + * 删除时间 + */ + private LocalDateTime deleteTime; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysLogRequest.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysLogRequest.java new file mode 100644 index 0000000..3802248 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysLogRequest.java @@ -0,0 +1,107 @@ +package com.zxdmy.excite.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.time.LocalDateTime; +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

                          + * + *

                          + * + * @author 沈松 + * @since 2021-12-09 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class SysLogRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 请求用户ID + */ + private Integer userId; + + /** + * 请求IP + */ + private String ip; + + /** + * 浏览器Agent + */ + private String userAgent; + + /** + * 请求的URI + */ + private String reqUri; + + /** + * 请求方法:GET | POST | DELETE + */ + private String reqMethod; + /** + * 请求的函数 + */ + private String reqFunction; + + /** + * 请求的数据 + */ + private String reqData; + + /** + * 返回的数据 + */ + private String resData; + + /** + * 耗时,单位:ms + */ + private Integer timeCost; + + /** + * 耗时,单位:ms + */ + private Integer status; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8") + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonSerialize(using = LocalDateTimeSerializer.class) + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8") + private LocalDateTime updateTime; + + /** + * 删除时间 + */ + @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8") + private LocalDateTime deleteTime; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysMenu.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysMenu.java new file mode 100644 index 0000000..5c010e5 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysMenu.java @@ -0,0 +1,145 @@ +package com.zxdmy.excite.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.*; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + *

                          + * 系统菜单/权限表 + *

                          + * 不返回为null的字段 + * + * @author 沈松 + * @since 2021-09-12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class SysMenu implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 菜单/权限ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 菜单/权限名称 + */ + @NotBlank(message = "菜单名称不能为空") + @JsonProperty("title") + private String name; + + /** + * 菜单图标 + */ + private String icon; + + /** + * 菜单/权限路由:对于后台控制类定义,示例:system/user/get/{id} + */ + @JsonProperty("href") + private String path; + + /** + * 权限标识符:对于后台控制类定义。示例:system:user:list + */ + @NotBlank(message = "权限标识不能为空") + private String permission; + + /** + * 组件路径:对于前端框架定义。示例:system/user/index + */ + private String component; + + /** + * 上级菜单ID + */ + private Integer parentId; + + /** + * 菜单类型:N - 顶部菜单 | C - 目录 | M - 菜单 | B - 按钮 + */ + @NotBlank(message = "菜单类型不能为空") + private String type; + + /** + * 排序:数值越大越靠前 + */ + @NotNull(message = "菜单显示顺序不能为空") + private Integer sort; + + /** + * 可编辑:0-禁止编辑 | 1-可编辑 + */ + private Integer editable; + + /** + * 可删除:0-禁止删除 | 1-可删除 + */ + private Integer removable; + + /** + * 菜单状态:0-封禁 | 1-正常 | 2-正常且禁止封禁 + */ + private Integer status; + + /** + * 是否删除:0-未删除 | 1-已删除 + */ + @JsonIgnore + private Integer isDelete; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8") + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonSerialize(using = LocalDateTimeSerializer.class) + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8") + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonSerialize(using = LocalDateTimeSerializer.class) + private LocalDateTime updateTime; + + /** + * 删除时间 + */ + @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8") + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonSerialize(using = LocalDateTimeSerializer.class) + private LocalDateTime deleteTime; + + /** + * 子菜单列表 + */ + @TableField(exist = false) + private List child; + + /** + * 复选框使用的字段,默认为"0",选中为"1", + */ + @TableField(exist = false) + private String checkArr = "0"; +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysRole.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysRole.java new file mode 100644 index 0000000..5492257 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysRole.java @@ -0,0 +1,105 @@ +package com.zxdmy.excite.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

                          + * 系统角色表 + *

                          + * + * @author 沈松 + * @since 2021-09-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class SysRole implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 角色ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 角色名称 + */ + @NotBlank(message = "角色名称不能为空") + private String name; + + /** + * 角色权限标识符,如:admin、guest + */ + @NotBlank(message = "权限标识符不能为空") + private String permission; + + /** + * 备注 + */ + private String remark; + + /** + * 排序:数值越大越靠前 + */ + private Integer sort; + + /** + * 角色状态:0-封禁 | 1-正常 | 2-正常且禁止封禁 + */ + private Integer status; + + /** + * 是否删除:0-未删除 | 1-已删除 + */ + @TableLogic + @JsonIgnore + private Integer isDelete; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8") + private LocalDateTime updateTime; + + /** + * 删除时间 + */ + @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8") + private LocalDateTime deleteTime; + + + /** + * 复选框使用的字段,默认为"0",选中为"1", + */ + @TableField(exist = false) + private String checkArr = "0"; + + @TableField(exist = false) + private String parentId = "-1"; + + /** + * 前端Layui表格中,多选框使用 + */ + @TableField(exist = false) + @JsonProperty("LAY_CHECKED") + private Boolean LAY_CHECKED = false; +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysRoleMenu.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysRoleMenu.java new file mode 100644 index 0000000..6f2fc06 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysRoleMenu.java @@ -0,0 +1,41 @@ +package com.zxdmy.excite.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

                          + * 系统角色和菜单/权限关联表 + *

                          + * + * @author 沈松 + * @since 2021-09-16 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class SysRoleMenu implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 角色菜单关联ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 角色ID + */ + private Integer roleId; + + /** + * 菜单/权限ID + */ + private Integer menuId; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysUser.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysUser.java new file mode 100644 index 0000000..3c44cd9 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysUser.java @@ -0,0 +1,128 @@ +package com.zxdmy.excite.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

                          + * 系统用户表 + *

                          + * + * @author 沈松 + * @since 2021-09-01 + */ +@Schema(name = "SysUser", description = "系统用户实体") +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class SysUser implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用户主键 + */ + @TableId(value = "id", type = IdType.AUTO) + @Schema(name = "id",description = "用户主键") + private Integer id; + + /** + * 用户昵称 + */ + @Schema(name = "username",description = "用户昵称") + private String username; + + /** + * 用户头像 + */ + @Schema(name = "avatar",description = "用户头像") + private String avatar; + + /** + * 用户性别(0-未知 | 1-男 | 2-女) + */ + private Integer sex; + + /** + * 用户邮箱 + */ + private String loginName; + + /** + * 用户手机号 + */ + private String phone; + + /** + * 用户密码 + */ + @JsonIgnore + private String password; + + /** + * 用户状态 + */ +// @JsonIgnore + private Integer status; + + /** + * 用户备注信息 + */ + private String remark; + + /** + * 登录IP + */ + private String loginIp; + + /** + * 登录时间 + */ + private LocalDateTime loginDate; + + /** + * 是否删除(0-未删除 | 1-已删除) + */ + @TableLogic + @JsonIgnore + private Integer isDelete; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8") + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonSerialize(using = LocalDateTimeSerializer.class) + private LocalDateTime createTime; + + /** + * 更新时间 + */ +// @JsonIgnore + @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8") + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonSerialize(using = LocalDateTimeSerializer.class) + private LocalDateTime updateTime; + + /** + * 删除时间 + */ + @JsonIgnore + private LocalDateTime deleteTime; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysUserRole.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysUserRole.java new file mode 100644 index 0000000..e24c5de --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/SysUserRole.java @@ -0,0 +1,41 @@ +package com.zxdmy.excite.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

                          + * 系统用户和角色关联表 + *

                          + * + * @author 沈松 + * @since 2021-09-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class SysUserRole implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用户角色关联ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 用户ID + */ + private Integer userId; + + /** + * 角色ID + */ + private Integer roleId; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/account/CloudCompany.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/account/CloudCompany.java new file mode 100644 index 0000000..e958f06 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/account/CloudCompany.java @@ -0,0 +1,70 @@ +package com.zxdmy.excite.system.entity.cloud.account; + +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

                          + * 企业表 + *

                          + * + * @author ss + * @since 2026-01-24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudCompany implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 企业名称 + */ + private String companyName; + + /** + * 排序 + */ + private Integer companySort; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 创建者ID + */ + private Integer creatorId; + + /** + * 创建者姓名 + */ + private String creatorName; + /** + * 删除时间 + */ + private LocalDateTime deleteTime; + + /** + * 删除者ID + */ + private Integer deleteId; + + /** + * 删除者姓名 + */ + private String deleteName; + + @TableField(exist=false) + private String title; +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/account/CloudDepartment.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/account/CloudDepartment.java new file mode 100644 index 0000000..61964b3 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/account/CloudDepartment.java @@ -0,0 +1,77 @@ +package com.zxdmy.excite.system.entity.cloud.account; + +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

                          + * 部门表 + *

                          + * + * @author ss + * @since 2026-01-24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudDepartment implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 部门名称 + */ + private String departmentName; + + /** + * 排序 + */ + private Integer departmentSort; + + /** + * 上级部门ID + */ + private Long departmentParentId; + + private Long companyId; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 创建者ID + */ + private Integer creatorId; + + /** + * 创建者姓名 + */ + private String creatorName; + + /** + * 删除时间 + */ + private LocalDateTime deleteTime; + + /** + * 删除者ID + */ + private Integer deleteId; + + /** + * 删除者姓名 + */ + private String deleteName; + @TableField(exist=false) + private String title; +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/account/CloudDepartmentUser.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/account/CloudDepartmentUser.java new file mode 100644 index 0000000..98408d5 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/account/CloudDepartmentUser.java @@ -0,0 +1,37 @@ +package com.zxdmy.excite.system.entity.cloud.account; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

                          + * 部门用户ID + *

                          + * + * @author ss + * @since 2026-01-27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudDepartmentUser implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 部门ID + */ + private Long departmentId; + + /** + * 用户ID + */ + private Integer userId; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/collection/CloudUserCollection.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/collection/CloudUserCollection.java new file mode 100644 index 0000000..fafcd82 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/collection/CloudUserCollection.java @@ -0,0 +1,43 @@ +package com.zxdmy.excite.system.entity.cloud.collection; + +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

                          + * 收藏表 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudUserCollection implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 文件ID + */ + private Long fileId; + + /** + * 收藏者ID + */ + private Integer userId; + + /** + * 收藏时间 + */ + private LocalDateTime createTime; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/lately/CloudUserLately.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/lately/CloudUserLately.java new file mode 100644 index 0000000..bed317d --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/lately/CloudUserLately.java @@ -0,0 +1,48 @@ +package com.zxdmy.excite.system.entity.cloud.lately; + +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

                          + * 最近文件表 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudUserLately implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 文件ID + */ + private Long fileId; + + /** + * 用户ID + */ + private Integer userId; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 最近打开时间 + */ + private LocalDateTime latelyTime; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/role/CloudRole.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/role/CloudRole.java new file mode 100644 index 0000000..c0b6fe3 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/role/CloudRole.java @@ -0,0 +1,93 @@ +package com.zxdmy.excite.system.entity.cloud.role; + +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

                          + * 云盘权限表 + *

                          + * + * @author ss + * @since 2026-01-27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudRole implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 权限名称 + */ + private String roleName; + + /** + * 上传权限 + */ + private Integer roleUpload; + + /** + * 下载权限 + */ + private Integer roleDown; + private Integer roleDelete; + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 创建者ID + */ + private Integer creatorId; + + /** + * 创建者姓名 + */ + private String creatorName; + + /** + * 删除时间 + */ + private LocalDateTime deleteTime; + + /** + * 删除者ID + */ + private Integer deleteId; + + /** + * 删除者姓名 + */ + private String deleteName; + + /** + * 复选框使用的字段,默认为"0",选中为"1", + */ + @TableField(exist = false) + private String checkArr = "0"; + + @TableField(exist = false) + private String parentId = "-1"; + + /** + * 前端Layui表格中,多选框使用 + */ + @TableField(exist = false) + @JsonProperty("LAY_CHECKED") + private Boolean LAY_CHECKED = false; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/role/CloudRoleFile.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/role/CloudRoleFile.java new file mode 100644 index 0000000..4c0dbd2 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/role/CloudRoleFile.java @@ -0,0 +1,38 @@ +package com.zxdmy.excite.system.entity.cloud.role; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

                          + * 云盘权限文件表 + *

                          + * + * @author 沈松 + * @since 2026-02-01 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudRoleFile implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 权限ID + */ + private Long roleId; + + /** + * 文件目录ID + */ + private Long fileId; + + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/role/CloudRoleUser.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/role/CloudRoleUser.java new file mode 100644 index 0000000..2b630e4 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/role/CloudRoleUser.java @@ -0,0 +1,37 @@ +package com.zxdmy.excite.system.entity.cloud.role; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

                          + * 云盘权限用户表 + *

                          + * + * @author ss + * @since 2026-01-27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudRoleUser implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 权限ID + */ + private Long roleId; + + /** + * 用户ID + */ + private Integer userId; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/space/CloudFile.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/space/CloudFile.java new file mode 100644 index 0000000..d5ad7cb --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/space/CloudFile.java @@ -0,0 +1,132 @@ +package com.zxdmy.excite.system.entity.cloud.space; + +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

                          + * 文件表 + *

                          + * + * @author ss + * @since 2026-01-28 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudFile implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 文件名称 + */ + private String fileName; + + /** + * 文件大小 + */ + private String fileSize; + + /** + * 文件格式 + */ + private String fileFormat; + + /** + * 文件OSS地址 + */ + private String fileOss; + + /** + * 文件封面地址 + */ + private String fileImage; + + /** + * 文件排序 + */ + private Integer fileSort; + + /** + * 0是文件夹 1是文件 + */ + private Integer fileFolder; + + /** + * 父级文件ID + */ + private Long fileParentId; + + /** + * 顶级文件ID + */ + private Long fileTopId; + + /** + * 云盘结构目录 + */ + private String fileFolderPath; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 创建者ID + */ + private Integer creatorId; + + /** + * 创建者姓名 + */ + private String creatorName; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + /** + * 更新者ID + */ + private Integer updaterId; + + /** + * 更新者姓名 + */ + private String updaterName; + + /** + * 删除时间 + */ + @TableField(updateStrategy = FieldStrategy.IGNORED) + private LocalDateTime deleteTime; + + /** + * 删除者ID + */ + @TableField(updateStrategy = FieldStrategy.IGNORED) + private Integer deleteId; + + /** + * 删除者姓名 + */ + @TableField(updateStrategy = FieldStrategy.IGNORED) + private String deleteName; + + private Integer fileTop; + + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/space/CloudFileRole.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/space/CloudFileRole.java new file mode 100644 index 0000000..f3090ae --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/space/CloudFileRole.java @@ -0,0 +1,37 @@ +package com.zxdmy.excite.system.entity.cloud.space; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

                          + * 文件用户权限表 + *

                          + * + * @author 沈松 + * @since 2026-01-30 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudFileRole implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 文件ID + */ + private Long fileId; + + /** + * 用户ID + */ + private Integer userId; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/trace/CloudFileTrace.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/trace/CloudFileTrace.java new file mode 100644 index 0000000..e29731d --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/cloud/trace/CloudFileTrace.java @@ -0,0 +1,53 @@ +package com.zxdmy.excite.system.entity.cloud.trace; + +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

                          + * 文件痕迹 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudFileTrace implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 操作名称 + */ + private String traceName; + + /** + * 操作者ID + */ + private Integer traceCreatorId; + + /** + * 操作者姓名 + */ + private String traceCreatorName; + + /** + * 操作时间 + */ + private LocalDateTime createTime; + + /** + * 操作文件ID + */ + private Long fileId; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/DepartmentTreeDTO.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/DepartmentTreeDTO.java new file mode 100644 index 0000000..d3aa478 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/DepartmentTreeDTO.java @@ -0,0 +1,22 @@ +package com.zxdmy.excite.system.entity.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.util.List; + +@Data +public class DepartmentTreeDTO { + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + private String title; + private String departmentName; + private Integer departmentSort; + @JsonSerialize(using = ToStringSerializer.class) + private Long departmentParentId; + @JsonSerialize(using = ToStringSerializer.class) + private Long companyId; + private List children; + private Boolean spread = true; // Layui树节点是否展开 +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/DepartmentUserTreeNode.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/DepartmentUserTreeNode.java new file mode 100644 index 0000000..fe14cfd --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/DepartmentUserTreeNode.java @@ -0,0 +1,52 @@ +package com.zxdmy.excite.system.entity.dto; + +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.entity.cloud.account.CloudDepartment; +import lombok.Data; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Data +public class DepartmentUserTreeNode { + private Long id; + private String title; + private String type; // 'department' 或 'user' + private Integer sort; + private Long parentId; + private Long departmentId; // 用户所属部门ID + private Boolean isLeaf; // 是否为叶子节点(用户节点为true) + private Map attributes = new HashMap<>(); + private List children = new ArrayList<>(); + + // 部门构造器 + public DepartmentUserTreeNode(CloudDepartment dept) { + this.id = dept.getId(); + this.title = dept.getDepartmentName(); + this.type = "department"; + this.sort = dept.getDepartmentSort(); + this.parentId = dept.getDepartmentParentId(); + this.isLeaf = false; + this.attributes.put("id", dept.getId()); + this.attributes.put("departmentName", dept.getDepartmentName()); + this.attributes.put("sort", dept.getDepartmentSort()); + this.attributes.put("parentId", dept.getDepartmentParentId()); + this.attributes.put("companyId", dept.getCompanyId()); + } + + // 用户构造器 + public DepartmentUserTreeNode(SysUser user, Long departmentId) { + this.id = user.getId().longValue(); + this.title = user.getUsername(); + this.type = "user"; + this.sort = 0; + this.parentId = departmentId; // 父节点是部门ID + this.departmentId = departmentId; + this.isLeaf = true; + this.attributes.put("id", user.getId()); + this.attributes.put("username", user.getUsername()); + this.attributes.put("departmentId", departmentId); + } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/FileTreeDTO.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/FileTreeDTO.java new file mode 100644 index 0000000..16aff84 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/FileTreeDTO.java @@ -0,0 +1,21 @@ +package com.zxdmy.excite.system.entity.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.util.List; + +@Data +public class FileTreeDTO { + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + private String title; + @JsonSerialize(using = ToStringSerializer.class) + private Long fileParentId; + private Integer fileSort; + private List children; + private Boolean spread = true; // Layui树节点是否展开 + + private String checked; +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/RoleTreeDTO.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/RoleTreeDTO.java new file mode 100644 index 0000000..ef8acfa --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/dto/RoleTreeDTO.java @@ -0,0 +1,17 @@ +package com.zxdmy.excite.system.entity.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.util.List; + +@Data +public class RoleTreeDTO { + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + private String name; + private String parentId = "-1"; + private String checkArr = "0"; + private String checked; +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/account/ReqCompany.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/account/ReqCompany.java new file mode 100644 index 0000000..53efdde --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/account/ReqCompany.java @@ -0,0 +1,26 @@ +package com.zxdmy.excite.system.entity.req.account; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

                          + * 企业表 + *

                          + * + * @author ss + * @since 2026-01-24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class ReqCompany implements Serializable { + private String id; + @NotNull(message = "企业名称为空") + private String companyName; +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/account/ReqDepartment.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/account/ReqDepartment.java new file mode 100644 index 0000000..c99eac8 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/account/ReqDepartment.java @@ -0,0 +1,26 @@ +package com.zxdmy.excite.system.entity.req.account; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

                          + * 企业表 + *

                          + * + * @author ss + * @since 2026-01-24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class ReqDepartment implements Serializable { + private String id; + @NotNull(message = "部门名称为空") + private String departmentName; + private String companyId; + private String departmentParentId; + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/collection/ReqCloudUserCollection.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/collection/ReqCloudUserCollection.java new file mode 100644 index 0000000..3b3c8cf --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/collection/ReqCloudUserCollection.java @@ -0,0 +1,41 @@ +package com.zxdmy.excite.system.entity.req.collection; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

                          + * 收藏表 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class ReqCloudUserCollection implements Serializable { + + private String id; + + /** + * 文件ID + */ + private String fileId; + + /** + * 收藏者ID + */ + private Integer userId; + + /** + * 收藏时间 + */ + private LocalDateTime createTime; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/lately/ReqCloudUserLately.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/lately/ReqCloudUserLately.java new file mode 100644 index 0000000..f922f50 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/lately/ReqCloudUserLately.java @@ -0,0 +1,36 @@ +package com.zxdmy.excite.system.entity.req.lately; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

                          + * 最近文件表 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class ReqCloudUserLately implements Serializable { + + private String id; + + /** + * 文件ID + */ + private String fileId; + + /** + * 用户ID + */ + private Integer userId; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/role/ReqRole.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/role/ReqRole.java new file mode 100644 index 0000000..8353746 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/role/ReqRole.java @@ -0,0 +1,27 @@ +package com.zxdmy.excite.system.entity.req.role; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + *

                          + * 企业表 + *

                          + * + * @author ss + * @since 2026-01-24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class ReqRole implements Serializable { + private String id; + @NotNull(message = "权限名称为空") + private String roleName; + private Integer roleUpload; + private Integer roleDown; + private Integer roleDelete; + private String[] ids; +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/space/ReqCloudFile.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/space/ReqCloudFile.java new file mode 100644 index 0000000..27c6628 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/space/ReqCloudFile.java @@ -0,0 +1,90 @@ +package com.zxdmy.excite.system.entity.req.space; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +/** + *

                          + * 文件表 + *

                          + * + * @author ss + * @since 2026-01-28 + */ +@Data +public class ReqCloudFile implements Serializable { + + + private String id; + + /** + * 文件名称 + */ + private String fileName; + + /** + * 父级文件ID + */ + private String fileParentId; + + /** + * 顶级文件ID + */ + private String fileTopId; + + /** + * 云盘结构目录 + */ + private String fileFolderPath; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 创建者ID + */ + private Integer creatorId; + + /** + * 创建者姓名 + */ + private String creatorName; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + /** + * 更新者ID + */ + private Integer updaterId; + + /** + * 更新者姓名 + */ + private String updaterName; + + private String fileOss; + + private Integer fileFolder; + + private String fileSize; + + private Integer[] ids; + + private Integer userId; + + private Integer fileTop; + + + private List fileIds; +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/space/ReqCloudFileRole.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/space/ReqCloudFileRole.java new file mode 100644 index 0000000..ba3c6d4 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/space/ReqCloudFileRole.java @@ -0,0 +1,34 @@ +package com.zxdmy.excite.system.entity.req.space; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.List; + +/** + *

                          + * 文件用户权限表 + *

                          + * + * @author 沈松 + * @since 2026-01-30 + */ +@Data +public class ReqCloudFileRole implements Serializable { + + private String id; + + /** + * 文件ID + */ + private String fileId; + + /** + * 用户ID + */ + private Integer userId; + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/trace/ReqCloudFileTrace.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/trace/ReqCloudFileTrace.java new file mode 100644 index 0000000..a4a003d --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/req/trace/ReqCloudFileTrace.java @@ -0,0 +1,51 @@ +package com.zxdmy.excite.system.entity.req.trace; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

                          + * 文件痕迹 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class ReqCloudFileTrace implements Serializable { + + private String id; + + /** + * 操作名称 + */ + private String traceName; + + /** + * 操作者ID + */ + private Integer traceCreatorId; + + /** + * 操作者姓名 + */ + private String traceCreatorName; + + /** + * 操作时间 + */ + private LocalDateTime createTime; + + /** + * 操作文件ID + */ + private String fileId; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/account/CompanyVo.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/account/CompanyVo.java new file mode 100644 index 0000000..8a4a6f8 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/account/CompanyVo.java @@ -0,0 +1,83 @@ +package com.zxdmy.excite.system.entity.vo.account; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

                          + * 企业表 + *

                          + * + * @author ss + * @since 2026-01-24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CompanyVo implements Serializable { + + + private String id; + + /** + * 企业名称 + */ + private String companyName; + + /** + * 排序 + */ + private Integer companySort; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 创建者ID + */ + private String creatorId; + + /** + * 创建者姓名 + */ + private String creatorName; + + /** + * 更新时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + /** + * 更新者ID + */ + private String updaterId; + + /** + * 更新者姓名 + */ + private String updaterName; + + /** + * 删除时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime deleteTime; + + /** + * 删除者ID + */ + private String deleteId; + + /** + * 删除者姓名 + */ + private String deleteName; +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/account/DepartmentVo.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/account/DepartmentVo.java new file mode 100644 index 0000000..9b61713 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/account/DepartmentVo.java @@ -0,0 +1,73 @@ +package com.zxdmy.excite.system.entity.vo.account; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

                          + * 企业表 + *

                          + * + * @author ss + * @since 2026-01-24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class DepartmentVo implements Serializable { + + + private String id; + + /** + * 部门名称 + */ + private String departmentName; + + /** + * 排序 + */ + private Integer departmentSort; + + /** + * 上级部门ID + */ + private String departmentParentId; + private String companyId; + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 创建者ID + */ + private Integer creatorId; + + /** + * 创建者姓名 + */ + private String creatorName; + + /** + * 删除时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime deleteTime; + + /** + * 删除者ID + */ + private Integer deleteId; + + /** + * 删除者姓名 + */ + private String deleteName; + + private String companyName; +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/collection/CloudUserCollectionVo.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/collection/CloudUserCollectionVo.java new file mode 100644 index 0000000..f116af5 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/collection/CloudUserCollectionVo.java @@ -0,0 +1,45 @@ +package com.zxdmy.excite.system.entity.vo.collection; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

                          + * 收藏表 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudUserCollectionVo implements Serializable { + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 文件ID + */ + private Long fileId; + + /** + * 收藏者ID + */ + private Integer userId; + + /** + * 收藏时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/lately/CloudUserLatelyVo.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/lately/CloudUserLatelyVo.java new file mode 100644 index 0000000..149db7b --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/lately/CloudUserLatelyVo.java @@ -0,0 +1,52 @@ +package com.zxdmy.excite.system.entity.vo.lately; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

                          + * 最近文件表 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudUserLatelyVo implements Serializable { + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 文件ID + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long fileId; + + /** + * 用户ID + */ + private Integer userId; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 最近打开时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime latelyTime; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/role/RoleVo.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/role/RoleVo.java new file mode 100644 index 0000000..c572a9d --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/role/RoleVo.java @@ -0,0 +1,78 @@ +package com.zxdmy.excite.system.entity.vo.role; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

                          + * 云盘权限表 + *

                          + * + * @author ss + * @since 2026-01-27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class RoleVo implements Serializable { + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 权限名称 + */ + private String roleName; + + /** + * 上传权限 + */ + private Integer roleUpload; + + /** + * 下载权限 + */ + private Integer roleDown; + + private Integer roleDelete; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 创建者ID + */ + private Integer creatorId; + + /** + * 创建者姓名 + */ + private String creatorName; + + /** + * 删除时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime deleteTime; + + /** + * 删除者ID + */ + private Integer deleteId; + + /** + * 删除者姓名 + */ + private String deleteName; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudFileRoleVo.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudFileRoleVo.java new file mode 100644 index 0000000..d09aac1 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudFileRoleVo.java @@ -0,0 +1,42 @@ +package com.zxdmy.excite.system.entity.vo.space; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

                          + * 文件用户权限表 + *

                          + * + * @author 沈松 + * @since 2026-01-30 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudFileRoleVo implements Serializable { + + + private Long id; + + /** + * 文件ID + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long fileId; + + /** + * 用户ID + */ + private Integer userId; + + + private String userName; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudFileVo.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudFileVo.java new file mode 100644 index 0000000..2987306 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudFileVo.java @@ -0,0 +1,140 @@ +package com.zxdmy.excite.system.entity.vo.space; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

                          + * 文件表 + *

                          + * + * @author ss + * @since 2026-01-28 + */ +@Data +public class CloudFileVo implements Serializable { + + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 文件名称 + */ + private String fileName; + + /** + * 文件大小 + */ + private String fileSize; + + /** + * 文件格式 + */ + private String fileFormat; + + /** + * 文件OSS地址 + */ + private String fileOss; + + /** + * 文件封面地址 + */ + private String fileImage; + + /** + * 文件排序 + */ + private Integer fileSort; + + /** + * 0是文件夹 1是文件 + */ + private Integer fileFolder; + + /** + * 父级文件ID + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long fileParentId; + + /** + * 顶级文件ID + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long fileTopId; + + /** + * 云盘结构目录 + */ + private String fileFolderPath; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 创建者ID + */ + private Integer creatorId; + + /** + * 创建者姓名 + */ + private String creatorName; + + /** + * 更新时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + /** + * 更新者ID + */ + private Integer updaterId; + + /** + * 更新者姓名 + */ + private String updaterName; + + /** + * 删除时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime deleteTime; + + /** + * 删除者ID + */ + private Integer deleteId; + + /** + * 删除者姓名 + */ + private String deleteName; + + + + private Integer roleUpload; + private Integer roleDown; + private Integer roleDelete; + + private Integer fileTop; + + private String title; + + private String checked; + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudFilleUserVo.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudFilleUserVo.java new file mode 100644 index 0000000..004815e --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudFilleUserVo.java @@ -0,0 +1,26 @@ +package com.zxdmy.excite.system.entity.vo.space; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +/** + *

                          + * 文件表 + *

                          + * + * @author ss + * @since 2026-01-28 + */ +@Data +public class CloudFilleUserVo implements Serializable { + + private List ids; + private String userId; + private String name; +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudRoleFileVo.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudRoleFileVo.java new file mode 100644 index 0000000..1673073 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudRoleFileVo.java @@ -0,0 +1,34 @@ +package com.zxdmy.excite.system.entity.vo.space; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

                          + * 文件用户权限表 + *

                          + * + * @author 沈松 + * @since 2026-01-30 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudRoleFileVo implements Serializable { + + + private Long id; + + @JsonSerialize(using = ToStringSerializer.class) + private Long fileId; + + private Long roleId; + + + private String fileName; + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudRoleFolderVo.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudRoleFolderVo.java new file mode 100644 index 0000000..2ad9b94 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/space/CloudRoleFolderVo.java @@ -0,0 +1,22 @@ +package com.zxdmy.excite.system.entity.vo.space; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + *

                          + * 文件表 + *

                          + * + * @author ss + * @since 2026-01-28 + */ +@Data +public class CloudRoleFolderVo implements Serializable { + + private List ids; + private String roleId; + private String name; +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/trace/CloudFileTraceVo.java b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/trace/CloudFileTraceVo.java new file mode 100644 index 0000000..640afee --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/entity/vo/trace/CloudFileTraceVo.java @@ -0,0 +1,57 @@ +package com.zxdmy.excite.system.entity.vo.trace; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

                          + * 文件痕迹 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class CloudFileTraceVo implements Serializable { + + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 操作名称 + */ + private String traceName; + + /** + * 操作者ID + */ + private Integer traceCreatorId; + + /** + * 操作者姓名 + */ + private String traceCreatorName; + + /** + * 操作时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 操作文件ID + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long fileId; + + private String fileOss; +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysLogLoginMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysLogLoginMapper.java new file mode 100644 index 0000000..a1c12d8 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysLogLoginMapper.java @@ -0,0 +1,16 @@ +package com.zxdmy.excite.system.mapper; + +import com.zxdmy.excite.system.entity.SysLogLogin; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

                          + * Mapper 接口 + *

                          + * + * @author 沈松 + * @since 2021-12-28 + */ +public interface SysLogLoginMapper extends BaseMapper { + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysLogRequestMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysLogRequestMapper.java new file mode 100644 index 0000000..f11b925 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysLogRequestMapper.java @@ -0,0 +1,16 @@ +package com.zxdmy.excite.system.mapper; + +import com.zxdmy.excite.system.entity.SysLogRequest; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

                          + * Mapper 接口 + *

                          + * + * @author 沈松 + * @since 2021-12-09 + */ +public interface SysLogRequestMapper extends BaseMapper { + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysMenuMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysMenuMapper.java new file mode 100644 index 0000000..41c88df --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysMenuMapper.java @@ -0,0 +1,37 @@ +package com.zxdmy.excite.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.sun.org.apache.xpath.internal.operations.Bool; +import com.zxdmy.excite.system.entity.SysMenu; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + *

                          + * 系统菜单/角色表 Mapper 接口 + *

                          + * + * @author 沈松 + * @since 2021-09-12 + */ +@Repository +public interface SysMenuMapper extends BaseMapper { + + /** + * 根据角色ID查询菜单/权限(不含禁用) + * + * @param roleId 角色ID + * @return 菜单/权限列表 + */ + List selectMenusByRoleId(Integer roleId); + + /** + * 根据用户的ID查询菜单/权限(不含禁用) + * + * @param userId 用户的ID + * @param isOnlyMenu 是否只包含菜单:1:只返回菜单 | 0:返回包含菜单+按钮 + * @return 菜单/权限列表 + */ + List selectMenusByUserId(Integer userId, int isOnlyMenu); +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysRoleMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysRoleMapper.java new file mode 100644 index 0000000..4697014 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysRoleMapper.java @@ -0,0 +1,18 @@ +package com.zxdmy.excite.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zxdmy.excite.system.entity.SysRole; +import org.springframework.stereotype.Repository; + +/** + *

                          + * 系统角色表 Mapper 接口 + *

                          + * + * @author 沈松 + * @since 2021-09-23 + */ +@Repository +public interface SysRoleMapper extends BaseMapper { + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysRoleMenuMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysRoleMenuMapper.java new file mode 100644 index 0000000..ec343a0 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysRoleMenuMapper.java @@ -0,0 +1,18 @@ +package com.zxdmy.excite.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zxdmy.excite.system.entity.SysRoleMenu; +import org.springframework.stereotype.Repository; + +/** + *

                          + * 系统角色和菜单/权限关联表 Mapper 接口 + *

                          + * + * @author 沈松 + * @since 2021-09-16 + */ +@Repository +public interface SysRoleMenuMapper extends BaseMapper { + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysUserMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysUserMapper.java new file mode 100644 index 0000000..cde1f74 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysUserMapper.java @@ -0,0 +1,48 @@ +package com.zxdmy.excite.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.entity.req.account.ReqDepartment; +import com.zxdmy.excite.system.entity.vo.account.DepartmentVo; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.ArrayList; +import java.util.List; + +/** + *

                          + * 系统用户表 Mapper 接口 + *

                          + * + * @author 沈松 + * @since 2021-09-01 + */ +@Repository +public interface SysUserMapper extends BaseMapper { + + /** + * 通过角色ID查询拥有此角色的用户列表 + * + * @param roleId 角色列表 + * @return 拥有此角色的用户列表 + */ + List selectUsersByRoleId(Integer roleId); + + /** + * 通过角色ID查询不拥有此角色的用户列表 + * + * @param roleId 角色列表 + * @return 不拥有此角色的用户列表 + */ + List selectUsersByRoleIdNotIn(Integer roleId); + + List selectUsersByCloudUploadRoleId(@Param("roleId") String roleId); + List selectUsersByCloudUploadRoleIdNotIn(@Param("roleId") String roleId); + + ArrayList queryByPage(@Param("page")Integer pageNo, @Param("size")Integer pageSize, @Param("username") String username,@Param("phone") String phone,@Param("departmentId") String departmentId); + Integer queryByPageCount(@Param("username") String username,@Param("phone") String phone,@Param("departmentId") String departmentId); + + + List selectByIds(@Param("ids") List userIds); +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysUserRoleMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysUserRoleMapper.java new file mode 100644 index 0000000..fad6eb7 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/SysUserRoleMapper.java @@ -0,0 +1,18 @@ +package com.zxdmy.excite.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zxdmy.excite.system.entity.SysUserRole; +import org.springframework.stereotype.Repository; + +/** + *

                          + * 系统用户和角色关联表 Mapper 接口 + *

                          + * + * @author 沈松 + * @since 2021-09-23 + */ +@Repository +public interface SysUserRoleMapper extends BaseMapper { + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/account/CloudCompanyMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/account/CloudCompanyMapper.java new file mode 100644 index 0000000..b35014c --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/account/CloudCompanyMapper.java @@ -0,0 +1,30 @@ +package com.zxdmy.excite.system.mapper.cloud.account; + +import com.zxdmy.excite.system.entity.cloud.account.CloudCompany; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zxdmy.excite.system.entity.cloud.account.CloudDepartment; +import com.zxdmy.excite.system.entity.req.account.ReqCompany; +import com.zxdmy.excite.system.entity.vo.account.CompanyVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.ArrayList; +import java.util.List; + +/** + *

                          + * 企业表 Mapper 接口 + *

                          + * + * @author ss + * @since 2026-01-24z + */ +@Mapper +public interface CloudCompanyMapper extends BaseMapper { + + ArrayList queryByPage(@Param("page")Integer pageNo, @Param("size")Integer pageSize, @Param("data") ReqCompany data); + Integer queryByPageCount(@Param("data") ReqCompany data); + CompanyVo getData(@Param("data") ReqCompany data); + List queryByData(); + List getList(); +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/account/CloudDepartmentMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/account/CloudDepartmentMapper.java new file mode 100644 index 0000000..ce95453 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/account/CloudDepartmentMapper.java @@ -0,0 +1,30 @@ +package com.zxdmy.excite.system.mapper.cloud.account; + +import com.zxdmy.excite.system.entity.cloud.account.CloudDepartment; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zxdmy.excite.system.entity.req.account.ReqDepartment; +import com.zxdmy.excite.system.entity.vo.account.DepartmentVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.ArrayList; +import java.util.List; + +/** + *

                          + * 部门表 Mapper 接口 + *

                          + * + * @author ss + * @since 2026-01-24 + */ +@Mapper +public interface CloudDepartmentMapper extends BaseMapper { + ArrayList queryByPage(@Param("page")Integer pageNo, @Param("size")Integer pageSize, @Param("data") ReqDepartment data); + Integer queryByPageCount(@Param("data") ReqDepartment data); + DepartmentVo getData(@Param("data") ReqDepartment data); + List getList(@Param("id") Long id); + + List selectByCompanyId(@Param("companyId") Long companyId); + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/account/CloudDepartmentUserMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/account/CloudDepartmentUserMapper.java new file mode 100644 index 0000000..5646f3a --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/account/CloudDepartmentUserMapper.java @@ -0,0 +1,21 @@ +package com.zxdmy.excite.system.mapper.cloud.account; + +import com.zxdmy.excite.system.entity.cloud.account.CloudDepartmentUser; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

                          + * 部门用户ID Mapper 接口 + *

                          + * + * @author ss + * @since 2026-01-27 + */ +@Mapper +public interface CloudDepartmentUserMapper extends BaseMapper { + List selectByCompanyId(@Param("companyId") Long companyId); +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/collection/CloudUserCollectionMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/collection/CloudUserCollectionMapper.java new file mode 100644 index 0000000..c796c63 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/collection/CloudUserCollectionMapper.java @@ -0,0 +1,33 @@ +package com.zxdmy.excite.system.mapper.cloud.collection; + +import com.zxdmy.excite.system.entity.cloud.collection.CloudUserCollection; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zxdmy.excite.system.entity.req.account.ReqCompany; +import com.zxdmy.excite.system.entity.req.collection.ReqCloudUserCollection; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFile; +import com.zxdmy.excite.system.entity.vo.account.CompanyVo; +import com.zxdmy.excite.system.entity.vo.collection.CloudUserCollectionVo; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.ArrayList; + +/** + *

                          + * 收藏表 Mapper 接口 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +@Mapper +public interface CloudUserCollectionMapper extends BaseMapper { + + ArrayList queryByPage(@Param("page")Integer pageNo, @Param("size")Integer pageSize, @Param("data") ReqCloudUserCollection data); + + Integer queryByPageCount(@Param("data") ReqCloudUserCollection data); + + CloudUserCollectionVo getData(@Param("data") ReqCloudUserCollection data); + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/lately/CloudUserLatelyMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/lately/CloudUserLatelyMapper.java new file mode 100644 index 0000000..4b551c0 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/lately/CloudUserLatelyMapper.java @@ -0,0 +1,30 @@ +package com.zxdmy.excite.system.mapper.cloud.lately; + +import com.zxdmy.excite.system.entity.cloud.lately.CloudUserLately; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zxdmy.excite.system.entity.req.lately.ReqCloudUserLately; +import com.zxdmy.excite.system.entity.vo.lately.CloudUserLatelyVo; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.ArrayList; + +/** + *

                          + * 最近文件表 Mapper 接口 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +@Mapper +public interface CloudUserLatelyMapper extends BaseMapper { + + ArrayList queryByPage(@Param("page")Integer pageNo, @Param("size")Integer pageSize, @Param("data") ReqCloudUserLately data); + + Integer queryByPageCount(@Param("data") ReqCloudUserLately data); + + CloudUserLatelyVo getData(@Param("data") ReqCloudUserLately data); + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/role/CloudRoleFileMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/role/CloudRoleFileMapper.java new file mode 100644 index 0000000..279d767 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/role/CloudRoleFileMapper.java @@ -0,0 +1,18 @@ +package com.zxdmy.excite.system.mapper.cloud.role; + +import com.zxdmy.excite.system.entity.cloud.role.CloudRoleFile; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

                          + * 云盘权限文件表 Mapper 接口 + *

                          + * + * @author 沈松 + * @since 2026-02-01 + */ +@Mapper +public interface CloudRoleFileMapper extends BaseMapper { + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/role/CloudRoleMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/role/CloudRoleMapper.java new file mode 100644 index 0000000..0a016aa --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/role/CloudRoleMapper.java @@ -0,0 +1,29 @@ +package com.zxdmy.excite.system.mapper.cloud.role; + +import com.zxdmy.excite.system.entity.cloud.role.CloudRole; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zxdmy.excite.system.entity.req.role.ReqRole; +import com.zxdmy.excite.system.entity.vo.role.RoleVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.ArrayList; +import java.util.List; + +/** + *

                          + * 云盘权限表 Mapper 接口 + *

                          + * + * @author ss + * @since 2026-01-27 + */ +@Mapper +public interface CloudRoleMapper extends BaseMapper { + + ArrayList queryByPage(@Param("page")Integer pageNo, @Param("size")Integer pageSize, @Param("data") ReqRole data); + Integer queryByPageCount(@Param("data") ReqRole data); + RoleVo getData(@Param("data") ReqRole data); + List queryByData(); + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/role/CloudRoleUserMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/role/CloudRoleUserMapper.java new file mode 100644 index 0000000..b2d0d2a --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/role/CloudRoleUserMapper.java @@ -0,0 +1,18 @@ +package com.zxdmy.excite.system.mapper.cloud.role; + +import com.zxdmy.excite.system.entity.cloud.role.CloudRoleUser; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

                          + * 云盘权限用户表 Mapper 接口 + *

                          + * + * @author ss + * @since 2026-01-27 + */ +@Mapper +public interface CloudRoleUserMapper extends BaseMapper { + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/space/CloudFileMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/space/CloudFileMapper.java new file mode 100644 index 0000000..a46a743 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/space/CloudFileMapper.java @@ -0,0 +1,40 @@ +package com.zxdmy.excite.system.mapper.cloud.space; + +import com.zxdmy.excite.system.entity.cloud.space.CloudFile; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zxdmy.excite.system.entity.req.account.ReqCompany; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFile; +import com.zxdmy.excite.system.entity.vo.account.CompanyVo; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.ArrayList; +import java.util.List; + +/** + *

                          + * 文件表 Mapper 接口 + *

                          + * + * @author ss + * @since 2026-01-28 + */ +@Mapper +public interface CloudFileMapper extends BaseMapper { + + ArrayList queryByPage(@Param("page")Integer pageNo, @Param("size")Integer pageSize, @Param("data") ReqCloudFile data); + + Integer queryByPageCount(@Param("data") ReqCloudFile data); + + ArrayList queryByRecyclePage(@Param("page")Integer pageNo, @Param("size")Integer pageSize, @Param("data") ReqCloudFile data); + Integer queryByRecyclePageCount(@Param("data") ReqCloudFile data); + + CloudFileVo getData(@Param("data") ReqCloudFile data); + + ArrayList queryByIndexPage(@Param("page")Integer pageNo, @Param("size")Integer pageSize, @Param("data") ReqCloudFile data); + + Integer queryByIndexPageCount(@Param("data") ReqCloudFile data); + List queryFileByData(@Param("data") ReqCloudFile data); + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/space/CloudFileRoleMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/space/CloudFileRoleMapper.java new file mode 100644 index 0000000..b20a65e --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/space/CloudFileRoleMapper.java @@ -0,0 +1,30 @@ +package com.zxdmy.excite.system.mapper.cloud.space; + +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.entity.cloud.space.CloudFileRole; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFile; +import com.zxdmy.excite.system.entity.vo.space.CloudFileRoleVo; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.entity.vo.space.CloudRoleFileVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

                          + * 文件用户权限表 Mapper 接口 + *

                          + * + * @author 沈松 + * @since 2026-01-30 + */ +@Mapper +public interface CloudFileRoleMapper extends BaseMapper { + List getFileRole(@Param("id") String id); + List getRoleFile(@Param("id") String id); + List getRoleFileCheck(@Param("id") String id); + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/trace/CloudFileTraceMapper.java b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/trace/CloudFileTraceMapper.java new file mode 100644 index 0000000..42f0179 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/mapper/cloud/trace/CloudFileTraceMapper.java @@ -0,0 +1,28 @@ +package com.zxdmy.excite.system.mapper.cloud.trace; + +import com.zxdmy.excite.system.entity.cloud.trace.CloudFileTrace; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zxdmy.excite.system.entity.req.lately.ReqCloudUserLately; +import com.zxdmy.excite.system.entity.req.trace.ReqCloudFileTrace; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.entity.vo.trace.CloudFileTraceVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.ArrayList; + +/** + *

                          + * 文件痕迹 Mapper 接口 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +@Mapper +public interface CloudFileTraceMapper extends BaseMapper { + + ArrayList queryByPage(@Param("page")Integer pageNo, @Param("size")Integer pageSize, @Param("data") ReqCloudFileTrace data); + + Integer queryByPageCount(@Param("data") ReqCloudFileTrace data); +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysLogLoginService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysLogLoginService.java new file mode 100644 index 0000000..e48d3bc --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysLogLoginService.java @@ -0,0 +1,20 @@ +package com.zxdmy.excite.system.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zxdmy.excite.system.entity.SysLogLogin; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

                          + * 服务类 + *

                          + * + * @author 沈松 + * @since 2021-12-28 + */ +public interface ISysLogLoginService extends IService { + + Page getPage(Integer current, Integer size,String userId, String ip,String startDate, String endDate); + + int deleteLog(Integer[] logIds); +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysLogRequestService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysLogRequestService.java new file mode 100644 index 0000000..23b22b6 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysLogRequestService.java @@ -0,0 +1,20 @@ +package com.zxdmy.excite.system.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zxdmy.excite.system.entity.SysLogRequest; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

                          + * 服务类 + *

                          + * + * @author 沈松 + * @since 2021-12-09 + */ +public interface ISysLogRequestService extends IService { + + Page getPage(Integer current, Integer size, String userId, String startDate, String endDate); + + int deleteLog(Integer[] logIds); +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysMenuService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysMenuService.java new file mode 100644 index 0000000..bc5452f --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysMenuService.java @@ -0,0 +1,107 @@ +package com.zxdmy.excite.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zxdmy.excite.system.entity.SysMenu; + + +import java.util.List; + +/** + *

                          + * 系统菜单/权限表 服务类 + *

                          + * + * @author 沈松 + * @since 2021-09-12 + */ +public interface ISysMenuService extends IService { + + + /** + * 添加或更新一个菜单/权限 + * 使用接口:新增接口、编辑接口 + * + * @param menu 菜单/权限 实体 + * @return 影响的行数 0-失败 | 1-成功 + */ + public int saveMenu(SysMenu menu); + + /** + * 修改菜单的状态 + * 使用接口:修改菜单状态接口 + * + * @param newStatus 新状态 + * @return 影响的行数 0-失败 | 1-成功 + */ + public int[] changeStatus(int newStatus, Integer[] menuIds); + + /** + * 获取一个菜单/权限 + * 使用接口:编辑接口(读取当前编辑的菜单详情) + * + * @param id 菜单/权限的ID + * @return 菜单实体 + */ + public SysMenu getMenu(Integer id); + + /** + * 获取菜单/权限列表 + * + * @param isAll True:返回全部 | false:只返回目录+菜单 + * @return 菜单实体列表 + */ + public List getMenuList(Boolean isAll); + + /** + * 删除一个菜单/权限 + * + * @param id 菜单/权限的ID + * @return 影响的行数 0-失败 | 1-成功 + */ + public int deleteMenu(Integer id); + + /** + * 通过角色ID查询全部菜单列表 + * 使用接口:角色管理---编辑角色,用于加载当前角色已经选中的菜单权限 + * + * @param roleId 角色ID。若为0,表示不指定角色ID。 + * @return 全部菜单列表 + */ + public List getMenuListForRole(int roleId); + + + /** + * 通过用户的ID获取权限列表 + * + * @param userId 用户ID + * @param userId 用户ID * @param isOnlyMenu 是否只获取菜单(不含按钮) + * @return 菜单/权限列表 + */ + public List getMenuListByUserId(Integer userId, boolean isOnlyMenu); + + /** + * 通过角色的ID查询该角色拥有的菜单/权限 + * + * @param roleId 角色ID + * @return 菜单/权限列表 + */ + public List getMenuListByRoleId(Integer roleId); + + + /** + * 认证框架使用:权限管理模块使用到的获取权限列表 + * + * @return 菜单权限列表 + */ + public List getMenuListForSaToken(); + + /** + * 认证框架使用:通过用户ID获取该用户所拥有的权限 + * + * @param userId 用户ID + * @return 菜单权限列表 + */ + public List getMenuListByUserIdForSaToken(Integer userId); + + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysRoleMenuService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysRoleMenuService.java new file mode 100644 index 0000000..cfc9fa9 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysRoleMenuService.java @@ -0,0 +1,17 @@ +package com.zxdmy.excite.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zxdmy.excite.system.entity.SysRoleMenu; + + +/** + *

                          + * 系统角色和菜单/权限关联表 服务类 + *

                          + * + * @author 沈松 + * @since 2021-09-16 + */ +public interface ISysRoleMenuService extends IService { + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysRoleService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysRoleService.java new file mode 100644 index 0000000..c2bb401 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysRoleService.java @@ -0,0 +1,90 @@ +package com.zxdmy.excite.system.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zxdmy.excite.system.entity.SysRole; + + +import java.util.List; + +/** + *

                          + * 系统角色表 服务类 + *

                          + * + * @author 沈松 + * @since 2021-09-23 + */ +public interface ISysRoleService extends IService { + + /** + * 接口:添加|更新角色 + * + * @param role 角色实体,ID为空表示添加 + * @param menusIds 为当前角色添加的菜单/权限ID列表 + * @return 影响的行数 0 - 失败 | >0 - 成功 + */ + public int saveRole(SysRole role, Integer[] menusIds); + + /** + * 接口:根据ID查询某个角色详情 + * + * @param id 角色的ID + * @return 角色实体 + */ + public SysRole getRole(Integer id); + + /** + * 接口:查询状态正常的角色列表 + * + * @return 角色列表 + */ + public List getListByUserId(Integer userId); + + /** + * 接口:分页查询接口列表 + * + * @param current 当前页 + * @param size 页大小 + * @param name 检索:名称 + * @param permission 检索:权限字符 + * @return 结果页面 + */ + public Page getPage(Integer current, Integer size, String name, String permission); + + /** + * 接口:修改角色状态 + * + * @param newStatus 新状态 + * @param roleIds 角色ID列表 + * @return 结果 + */ + public int[] changeStatus(Integer newStatus, Integer[] roleIds); + + /** + * 接口:删除角色 + * + * @param roleIds 角色ID数组 + * @return 删除结果:0:成功个数 1:删除失败个数 2:因已分配用户,禁止删除数 + */ + public int[] deleteRoleById(Integer[] roleIds); + + + /** + * 接口:将指定角色,授权分配给系列用户 + * + * @param roleId 角色ID + * @param userIds 用户ID列表 + * @return 授权结果 + */ + public boolean authRoleForUsers(Integer roleId, Integer[] userIds); + + /** + * 接口:取消指定角色已授权的系列用户 + * + * @param roleId 角色ID + * @param userIds 用户ID列表 + * @return 取消授权结果 + */ + public int[] revokeRoleForUsers(Integer roleId, Integer[] userIds); +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysUserRoleService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysUserRoleService.java new file mode 100644 index 0000000..641c950 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysUserRoleService.java @@ -0,0 +1,34 @@ +package com.zxdmy.excite.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zxdmy.excite.system.entity.SysUserRole; + +import java.util.List; + +/** + *

                          + * 系统用户和角色关联表 服务类 + *

                          + * + * @author 沈松 + * @since 2021-09-23 + */ +public interface ISysUserRoleService extends IService { + + /** + * 通过角色ID获取用户角色关联列表 + * + * @param roleId 角色ID + * @return 用户角色关联列表 + */ + public List getListByRoleId(Integer roleId); + + /** + * 通过用户ID获取用户角色关联列表 + * + * @param userId 用户ID + * @return 用户角色关联列表 + */ + public List getListByUserId(Integer userId); + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysUserService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysUserService.java new file mode 100644 index 0000000..4b6854c --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/ISysUserService.java @@ -0,0 +1,101 @@ +package com.zxdmy.excite.system.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.entity.req.account.ReqDepartment; +import com.zxdmy.excite.system.entity.vo.account.DepartmentVo; + +import java.util.List; + +/** + *

                          + * 系统用户表 服务类 + *

                          + * + * @author 沈松 + * @since 2021-09-01 + */ +public interface ISysUserService extends IService { + + /** + * 登录服务 + * + * @param username 用户名 + * @param password 密码 + * @return SysUser:登录成功 | null:登录失败 + */ + public SysUser login(String username, String password); + + + /** + * 获取用户列表 + * + * @param current 当前页 + * @param size 当前页大小 + * @param username 检索用户名 + * @param account 检索邮箱/手机号 + * @return 用户页面信息 + */ + public Page getPage(Integer current, Integer size, String username, String account); + + PageList queryByPage(Integer current, Integer size, String username, String phone,String departmentId); + + /** + * 保存用户:添加 | 更新 + * + * @param user 用户信息 + * @param roleIds 角色ID列表 + * @return 修改的行数 >0:成功 | <=0:失败 + */ + public int save(SysUser user, Integer[] roleIds); + + public int saveData(SysUser user, Integer[] roleIds,String[] roleIds1,String departmentId); + /** + * 接口:修改用户状态 + * + * @param newStatus 新状态 + * @param userIds 用户ID列表 + * @return 修改结果数组 0:成功个数 1:失败个数 + */ + public int[] changeStatus(Integer newStatus, Integer[] userIds); + + /** + * 接口:给用户分配角色 + * + * @param userId 用户ID + * @param roleIds 角色ID数组 + * @return 修改结果数组 0:分配个数 1:失败个数 + */ + public boolean setRoleForUser(Integer userId, Integer[] roleIds); + + public boolean setCloudRoleForUser(String userId, String[] roleIds); + + /** + * 接口:根据ID删除用户 + * + * @param userId 用户ID + * @return 删除结果:>0 表示成功 + */ + int[] deleteUserById(Integer[] userId); + + /** + * 接口:通过角色ID查询用户列表 + * + * @param roleId 角色ID + * @return 用户列表 + */ + List getUserListByRoleId(Integer roleId); + + /** + * 接口:通过角色ID查询不包含此角色的用户列表 + * + * @param roleId 角色ID + * @return 不包含此角色的用户列表 + */ + List getUserListByRoleIdNotIn(Integer roleId); + + List selectUsersByCloudUploadRoleId(String roleId); + List selectUsersByCloudUploadRoleIdNotIn(String roleId); +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/account/ICloudCompanyService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/account/ICloudCompanyService.java new file mode 100644 index 0000000..124eded --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/account/ICloudCompanyService.java @@ -0,0 +1,28 @@ +package com.zxdmy.excite.system.service.cloud.account; + +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.system.entity.cloud.account.CloudCompany; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zxdmy.excite.system.entity.cloud.account.CloudDepartment; +import com.zxdmy.excite.system.entity.req.account.ReqCompany; +import com.zxdmy.excite.system.entity.vo.account.CompanyVo; + +import java.util.List; + +/** + *

                          + * 企业表 服务类 + *

                          + * + * @author ss + * @since 2026-01-24 + */ +public interface ICloudCompanyService extends IService { + PageList queryByPage(Integer current, Integer size, ReqCompany data); + CompanyVo getByData(ReqCompany data); + int saveData(ReqCompany data); + int updateData(ReqCompany data); + int deleteById(String id); + List queryByData(); + List getList(); +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/account/ICloudDepartmentService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/account/ICloudDepartmentService.java new file mode 100644 index 0000000..1f638c3 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/account/ICloudDepartmentService.java @@ -0,0 +1,31 @@ +package com.zxdmy.excite.system.service.cloud.account; + +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.system.entity.cloud.account.CloudDepartment; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zxdmy.excite.system.entity.dto.DepartmentUserTreeNode; +import com.zxdmy.excite.system.entity.req.account.ReqDepartment; +import com.zxdmy.excite.system.entity.vo.account.DepartmentVo; + +import java.util.List; + +/** + *

                          + * 部门表 服务类 + *

                          + * + * @author ss + * @since 2026-01-24 + */ +public interface ICloudDepartmentService extends IService { + + PageList queryByPage(Integer current, Integer size, ReqDepartment data); + DepartmentVo getByData(ReqDepartment data); + int saveData(ReqDepartment data); + int updateData(ReqDepartment data); + int deleteById(String id); + List getList(Long id); + int changeDepartment(String userId, String departmentId); + + public List buildDepartmentUserTree(Long companyId); +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/account/ICloudDepartmentUserService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/account/ICloudDepartmentUserService.java new file mode 100644 index 0000000..cbd3ec6 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/account/ICloudDepartmentUserService.java @@ -0,0 +1,16 @@ +package com.zxdmy.excite.system.service.cloud.account; + +import com.zxdmy.excite.system.entity.cloud.account.CloudDepartmentUser; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

                          + * 部门用户ID 服务类 + *

                          + * + * @author ss + * @since 2026-01-27 + */ +public interface ICloudDepartmentUserService extends IService { + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/collection/ICloudUserCollectionService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/collection/ICloudUserCollectionService.java new file mode 100644 index 0000000..78f1c66 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/collection/ICloudUserCollectionService.java @@ -0,0 +1,29 @@ +package com.zxdmy.excite.system.service.cloud.collection; + +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.system.entity.cloud.collection.CloudUserCollection; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zxdmy.excite.system.entity.req.account.ReqCompany; +import com.zxdmy.excite.system.entity.req.collection.ReqCloudUserCollection; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFile; +import com.zxdmy.excite.system.entity.vo.account.CompanyVo; +import com.zxdmy.excite.system.entity.vo.collection.CloudUserCollectionVo; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; + +/** + *

                          + * 收藏表 服务类 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +public interface ICloudUserCollectionService extends IService { + + PageList queryByPage(Integer current, Integer size, ReqCloudUserCollection data); + + CloudUserCollectionVo getByData(ReqCloudUserCollection data); + + int saveData(ReqCloudUserCollection data); + int deleteById(String id); +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/lately/ICloudUserLatelyService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/lately/ICloudUserLatelyService.java new file mode 100644 index 0000000..a1fd5df --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/lately/ICloudUserLatelyService.java @@ -0,0 +1,27 @@ +package com.zxdmy.excite.system.service.cloud.lately; + +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.system.entity.cloud.lately.CloudUserLately; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zxdmy.excite.system.entity.req.collection.ReqCloudUserCollection; +import com.zxdmy.excite.system.entity.req.lately.ReqCloudUserLately; +import com.zxdmy.excite.system.entity.vo.collection.CloudUserCollectionVo; +import com.zxdmy.excite.system.entity.vo.lately.CloudUserLatelyVo; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; + +/** + *

                          + * 最近文件表 服务类 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +public interface ICloudUserLatelyService extends IService { + + PageList queryByPage(Integer current, Integer size, ReqCloudUserLately data); + CloudUserLatelyVo getByData(ReqCloudUserLately data); + int saveData(ReqCloudUserLately data); + int deleteById(String id); + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/role/ICloudRoleFileService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/role/ICloudRoleFileService.java new file mode 100644 index 0000000..58b91c8 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/role/ICloudRoleFileService.java @@ -0,0 +1,16 @@ +package com.zxdmy.excite.system.service.cloud.role; + +import com.zxdmy.excite.system.entity.cloud.role.CloudRoleFile; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

                          + * 云盘权限文件表 服务类 + *

                          + * + * @author 沈松 + * @since 2026-02-01 + */ +public interface ICloudRoleFileService extends IService { + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/role/ICloudRoleService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/role/ICloudRoleService.java new file mode 100644 index 0000000..185e5cd --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/role/ICloudRoleService.java @@ -0,0 +1,36 @@ +package com.zxdmy.excite.system.service.cloud.role; + +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.system.entity.SysRole; +import com.zxdmy.excite.system.entity.cloud.role.CloudRole; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zxdmy.excite.system.entity.req.role.ReqRole; +import com.zxdmy.excite.system.entity.vo.role.RoleVo; + +import java.util.List; + +/** + *

                          + * 云盘权限表 服务类 + *

                          + * + * @author ss + * @since 2026-01-27 + */ +public interface ICloudRoleService extends IService { + + PageList queryByPage(Integer current, Integer size, ReqRole data); + RoleVo getByData(ReqRole data); + int saveData(ReqRole data); + int updateData(ReqRole data); + int deleteById(String id); + public int[] changeUploadStatus(Integer newStatus, String[] ids); + public int[] changeDownStatus(Integer newStatus, String[] ids); + public int[] changeDeleteStatus(Integer newStatus, String[] ids); + public boolean authRoleForUsers(String roleId, String[] userIds); + public int[] revokeRoleForUsers(String roleId, String[] userIds); + + public List getListByUserId(Integer userId); + List queryByData(); + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/role/ICloudRoleUserService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/role/ICloudRoleUserService.java new file mode 100644 index 0000000..a360e96 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/role/ICloudRoleUserService.java @@ -0,0 +1,24 @@ +package com.zxdmy.excite.system.service.cloud.role; + +import com.zxdmy.excite.system.entity.SysUserRole; +import com.zxdmy.excite.system.entity.cloud.role.CloudRole; +import com.zxdmy.excite.system.entity.cloud.role.CloudRoleUser; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

                          + * 云盘权限用户表 服务类 + *

                          + * + * @author ss + * @since 2026-01-27 + */ +public interface ICloudRoleUserService extends IService { + + public List getListByUserId(Integer userId); + + CloudRole getCloudShareRole(Integer id); + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/space/ICloudFileRoleService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/space/ICloudFileRoleService.java new file mode 100644 index 0000000..0f8c023 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/space/ICloudFileRoleService.java @@ -0,0 +1,28 @@ +package com.zxdmy.excite.system.service.cloud.space; + +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.entity.cloud.space.CloudFileRole; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFileRole; +import com.zxdmy.excite.system.entity.vo.space.CloudFileRoleVo; +import com.zxdmy.excite.system.entity.vo.space.CloudRoleFileVo; + +import java.util.List; + +/** + *

                          + * 文件用户权限表 服务类 + *

                          + * + * @author 沈松 + * @since 2026-01-30 + */ +public interface ICloudFileRoleService extends IService { + + List getFileRole(String id); + List getRoleFile(String id); + List getRoleFileCheck(String id); + + CloudFileRole getData(ReqCloudFileRole data); + List getFileRoleByUseId(Integer id); +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/space/ICloudFileService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/space/ICloudFileService.java new file mode 100644 index 0000000..c32a193 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/space/ICloudFileService.java @@ -0,0 +1,42 @@ +package com.zxdmy.excite.system.service.cloud.space; + +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.system.entity.cloud.space.CloudFile; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zxdmy.excite.system.entity.req.account.ReqCompany; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFile; +import com.zxdmy.excite.system.entity.vo.account.CompanyVo; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; + +import java.util.List; + +/** + *

                          + * 文件表 服务类 + *

                          + * + * @author ss + * @since 2026-01-28 + */ +public interface ICloudFileService extends IService { + + PageList queryByPage(Integer current, Integer size, ReqCloudFile data); + + PageList queryByRecyclePage(Integer current, Integer size, ReqCloudFile data); + + CloudFileVo getByData(ReqCloudFile data); + + int saveData(ReqCloudFile data); + int saveFileData(ReqCloudFile data); + int updateFileData(ReqCloudFile data); + int updateData(ReqCloudFile data); + int recover(String id); + int deleteById(String id); + + public int[] changeDeleteStatus(Integer newStatus, String[] ids); + + PageList queryByIndexPage(Integer current, Integer size, ReqCloudFile data); + + + List queryFileByData(ReqCloudFile data); +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/trace/ICloudFileTraceService.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/trace/ICloudFileTraceService.java new file mode 100644 index 0000000..db0e24b --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/cloud/trace/ICloudFileTraceService.java @@ -0,0 +1,22 @@ +package com.zxdmy.excite.system.service.cloud.trace; + +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.system.entity.cloud.trace.CloudFileTrace; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zxdmy.excite.system.entity.req.lately.ReqCloudUserLately; +import com.zxdmy.excite.system.entity.req.trace.ReqCloudFileTrace; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.entity.vo.trace.CloudFileTraceVo; + +/** + *

                          + * 文件痕迹 服务类 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +public interface ICloudFileTraceService extends IService { + PageList queryByPage(Integer current, Integer size, ReqCloudFileTrace data); + int saveData(ReqCloudFileTrace data); +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysLogLoginServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysLogLoginServiceImpl.java new file mode 100644 index 0000000..b10796c --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysLogLoginServiceImpl.java @@ -0,0 +1,52 @@ +package com.zxdmy.excite.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zxdmy.excite.system.entity.SysLogLogin; +import com.zxdmy.excite.system.entity.SysLogRequest; +import com.zxdmy.excite.system.mapper.SysLogLoginMapper; +import com.zxdmy.excite.system.service.ISysLogLoginService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Arrays; + +/** + *

                          + * 服务实现类 + *

                          + * + * @author 沈松 + * @since 2021-12-28 + */ +@Service +@AllArgsConstructor +public class SysLogLoginServiceImpl extends ServiceImpl implements ISysLogLoginService { + + + SysLogLoginMapper loginMapper; + + @Override + public Page getPage(Integer current, Integer size, String userId, String ip, String startDate, String endDate) { + // 页码信息 + current = null == current ? 1 : current; + size = null == size ? 10 : size; + QueryWrapper wrapper = new QueryWrapper<>(); + // 检索请求用户 + wrapper.like(userId != null && !"".equals(userId), "user_id", userId) + // 检索IP + .like(ip != null && !"".equals(ip), "ip", ip) + // 检索起始时间 + .ge(startDate != null && !"".equals(startDate), "create_time", startDate) + // 检索终止时间 + .le(endDate != null && !"".equals(endDate), "create_time", endDate) + .orderByDesc("id"); + return loginMapper.selectPage(new Page<>(current, size), wrapper); + } + + @Override + public int deleteLog(Integer[] logIds) { + return loginMapper.deleteBatchIds(Arrays.asList(logIds)); + } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysLogRequestServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysLogRequestServiceImpl.java new file mode 100644 index 0000000..83c62e6 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysLogRequestServiceImpl.java @@ -0,0 +1,50 @@ +package com.zxdmy.excite.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zxdmy.excite.system.entity.SysLogRequest; +import com.zxdmy.excite.system.entity.SysMenu; +import com.zxdmy.excite.system.mapper.SysLogRequestMapper; +import com.zxdmy.excite.system.service.ISysLogRequestService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Arrays; + +/** + *

                          + * 服务实现类 + *

                          + * + * @author 沈松 + * @since 2021-12-09 + */ +@Service +@AllArgsConstructor +public class SysLogRequestServiceImpl extends ServiceImpl implements ISysLogRequestService { + + SysLogRequestMapper logRequestMapper; + + @Override + public Page getPage(Integer current, Integer size, String userId, String startDate, String endDate) { + // 页码信息 + current = null == current ? 1 : current; + size = null == size ? 10 : size; + // 检索信息 + QueryWrapper wrapper = new QueryWrapper<>(); + // 检索请求用户 + wrapper.like(userId != null && !"".equals(userId), "user_id", userId) + // 检索起始时间 + .ge(startDate != null && !"".equals(startDate), "create_time", startDate) + // 检索终止时间 + .le(endDate != null && !"".equals(endDate), "create_time", endDate) + .orderByDesc("id"); + return logRequestMapper.selectPage(new Page<>(current, size), wrapper); + } + + @Override + public int deleteLog(Integer[] logIds) { + return logRequestMapper.deleteBatchIds(Arrays.asList(logIds)); + } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysMenuServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysMenuServiceImpl.java new file mode 100644 index 0000000..f5a13dd --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysMenuServiceImpl.java @@ -0,0 +1,389 @@ +package com.zxdmy.excite.system.service.impl; + +import cn.dev33.satoken.stp.StpUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import com.zxdmy.excite.common.config.ExciteConfig; +import com.zxdmy.excite.common.enums.SystemCode; + +import com.zxdmy.excite.common.exception.ServiceException; +import com.zxdmy.excite.common.service.RedisService; +import com.zxdmy.excite.system.entity.SysMenu; +import com.zxdmy.excite.system.entity.SysRoleMenu; +import com.zxdmy.excite.system.mapper.SysMenuMapper; +import com.zxdmy.excite.system.mapper.SysRoleMenuMapper; +import com.zxdmy.excite.system.service.ISysMenuService; + +import com.zxdmy.excite.system.utils.AuthUtils; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + *

                          + * 系统菜单/权限表 服务实现类 + *

                          + * + * @author 沈松 + * @since 2021-09-12 + */ +@Service +@AllArgsConstructor +public class SysMenuServiceImpl extends ServiceImpl implements ISysMenuService { + + + SysMenuMapper menuMapper; + + SysRoleMenuMapper roleMenuMapper; + + RedisService redisService; + + ExciteConfig exciteConfig; + + /** + * 获取一个菜单/权限 + * 使用接口:编辑接口(读取当前编辑的菜单详情) + * + * @param id 菜单/权限的ID + * @return 菜单实体 + */ + @Override + public SysMenu getMenu(Integer id) { + if (null == id) { + throw new ServiceException("服务错误:菜单/权限的ID不能为null"); + } + QueryWrapper wrapper = new QueryWrapper<>(); + // 根据ID查询status正常的菜单 + wrapper.eq("id", id).ne("status", SystemCode.STATUS_N.getCode()); + return menuMapper.selectOne(wrapper); + } + + /** + * 添加或更新一个菜单/权限 + * 使用接口:新增接口、编辑接口 + * + * @param menu 菜单/权限 实体 + * @return 影响的行数 0-失败 | 1-成功 + */ + @Override + public int saveMenu(SysMenu menu) { + if (null == menu) { + throw new ServiceException("服务错误:菜单/权限为空"); + } + // 根据ID判断是否是新增,ID为空是新增,否则是更新 + boolean isAdd = null == menu.getId(); + // 如果是顶级菜单:上级菜单为-1,请求路径为"" + if ("N".equals(menu.getType())) { + menu.setParentId(-1); + menu.setPath(""); + } + // 如果是目录:请求路径设置为空字符串(非NULL) + else if ("C".equals(menu.getType())) { + menu.setPath(""); + } + // 初始化:标签 + if (!"fa ".equals(menu.getIcon().substring(0, 3))) + menu.setIcon("fa " + menu.getIcon()); + // 如果未输入排序,则填充默认顺序:50 + if (null == menu.getSort()) { + menu.setSort(SystemCode.SORT_DEFAULT.getCode()); + } + // 设置时间信息 + LocalDateTime localDateTime = LocalDateTime.now(); + int result = 0; + // 新增 + if (isAdd) { + menu.setCreateTime(localDateTime); + // 设置初始状态:正常 + if (null == menu.getStatus()) { + menu.setStatus(SystemCode.STATUS_Y.getCode()); + } + if (null == menu.getEditable()) { + menu.setEditable(SystemCode.EDITABLE_Y.getCode()); + } + if (null == menu.getRemovable()) { + menu.setRemovable(SystemCode.REMOVABLE_Y.getCode()); + } + result = menuMapper.insert(menu); + // 清除缓存 + AuthUtils.clearSystemMenuListCache(result != 0); + } + // 修改 + else { + menu.setUpdateTime(localDateTime); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("id", menu.getId()) + .eq("editable", SystemCode.EDITABLE_Y.getCode()) + .ne("status", SystemCode.STATUS_N.getCode()); + result = menuMapper.update(menu, wrapper); + // 清除缓存 + AuthUtils.clearSystemMenuListCache(result != 0); + AuthUtils.clearUserMenuListCache(result != 0); + } + return result; + } + + /** + * 修改菜单的状态 + * 使用接口:修改菜单状态接口 + * + * @return 影响的行数 0-失败 | 1-成功 + */ + @Override + public int[] changeStatus(int newStatus, Integer[] menuIds) { + int[] result = new int[2]; + for (Integer menuId : menuIds) { + SysMenu menu = new SysMenu(); + QueryWrapper wrapper = new QueryWrapper<>(); + menu.setId(menuId); + menu.setStatus(newStatus); + wrapper.eq("id", menuId) + .ne("status", SystemCode.STATUS_Y_BLOCK.getCode()); + if (menuMapper.update(menu, wrapper) > 0) + result[0]++; + else result[1]++; + } + // 清除缓存 + AuthUtils.clearUserMenuListCache(result[0] != 0); + return result; + } + + /** + * 获取菜单/权限列表 + * 使用接口: + * + * @param isAll True:返回全部 | false:只返回目录+菜单 + * @return 菜单实体列表 + */ + @Override + public List getMenuList(Boolean isAll) { + QueryWrapper wrapper = new QueryWrapper<>(); + // 查询状态status正常(0)的菜单 + wrapper.ne(!isAll, "status", SystemCode.STATUS_N.getCode()) + // 非只查询菜单,则【排除】类型(type)是按钮(B)的权限 + .ne(!isAll, "type", "B") + // 排序 + .orderByDesc("sort"); + return menuMapper.selectList(wrapper); + } + + /** + * 删除一个菜单/权限 + * 使用接口:删除菜单 + * + * @param id 菜单/权限的ID + * @return 影响的行数 0-失败 | 1-成功 + */ + @Override + public int deleteMenu(Integer id) { + if (id == null) { + throw new ServiceException("服务错误:菜单/权限的ID不能为null"); + } + // 这里注意:menu表和roleMenu表未设置关联,所以可以先删除菜单,再删除关联。 + // 如果二者设置了外键关联,则流程是:判断menu可删除-->删除roleMenu关联-->删除menu + // 只有removable=1的菜单才可以删除 + QueryWrapper wrapper2 = new QueryWrapper<>(); + wrapper2.eq("id", id) + .ne("status", SystemCode.STATUS_N.getCode()) + .eq("removable", SystemCode.REMOVABLE_Y.getCode()); + int result = menuMapper.delete(wrapper2); + // 当删除一个菜单后,需要从【角色-权限关联表】中删除含有该菜单的记录 + if (result > 0) { + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.eq("menu_id", id); + roleMenuMapper.delete(wrapper1); + } + // 清除缓存 + AuthUtils.clearSystemMenuListCache(result != 0); + AuthUtils.clearUserMenuListCache(result != 0); + return result; + } + + /** + * 外部接口:通过角色ID查询菜单 + * + * @param roleId 角色ID。若为0,表示不指定角色ID。 + * @return 菜单列表 + */ + @Override + public List getMenuListForRole(int roleId) { + // 获取全部的菜单 + QueryWrapper sysMenuQueryWrapper = new QueryWrapper<>(); + sysMenuQueryWrapper.ne("status", SystemCode.STATUS_N.getCode()) + .orderByDesc("sort"); + List menuList = menuMapper.selectList(sysMenuQueryWrapper); + // 如果为roleId=0,表示获取全部正常的菜单 + if (0 == roleId) { + return menuList; + } + // 否则,获取全部菜单后,将该角色拥有的菜单的CheckArr字段标记为1 + else { + // 获取当前角色拥有的权限 + QueryWrapper roleMenuQueryWrapper = new QueryWrapper<>(); + roleMenuQueryWrapper.eq("role_id", roleId); + List roleMenuList = roleMenuMapper.selectList(roleMenuQueryWrapper).stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList()); + // 使用lambda表达式,直接在菜单列表上修改checkArr字段 + return menuList.stream().peek(menu -> { + if (roleMenuList.contains(menu.getId())) + menu.setCheckArr("1"); + }).collect(Collectors.toList()); + } + } + + + /** + * 接口实现:通过用户ID查询该用户所拥有的菜单(不含角色、菜单被禁用的菜单权限) + * + * @param userId 用户ID + * @param isOnlyMenu 是否只获取菜单(不含按钮) + * @return 菜单列表 + */ + @Override + public List getMenuListByUserId(Integer userId, boolean isOnlyMenu) { + // 只获取菜单列表 + if (isOnlyMenu) { + return menuMapper.selectMenusByUserId(userId, 1); + } + // 获取菜单+权限列表 + else { + return menuMapper.selectMenusByUserId(userId, 0); + } + } + + /** + * 接口实现:通过角色的ID查询该角色拥有的菜单/权限(不含菜单被禁用的菜单权限) + * + * @param roleId 角色ID + * @return 菜单/权限列表 + */ + @Override + public List getMenuListByRoleId(Integer roleId) { + return menuMapper.selectMenusByRoleId(roleId); + } + + /** + * 内部调用:获取所有的菜单/权限列表,为权限认证框架使用 + * + * @return 菜单实体列表 + */ + @Override + public List getMenuListForSaToken() { + // 首先尝试从缓存中读取数据 + List menuList = AuthUtils.getSystemMenuListCache(true); + // 如果未命中缓存:从缓存读取 + if (null == menuList) { + menuList = menuMapper.selectList(null); + // 同时尝试写入缓存 + AuthUtils.setSystemMenuListCache(null != menuList, menuList); + } + return menuList; + } + + + /** + * 内部调用:获取指定用户的菜单/权限列表,为权限认证框架使用 + * + * @param userId 用户ID + * @return 菜单权限列表 + */ + @Override + public List getMenuListByUserIdForSaToken(Integer userId) { + // 先尝试从缓存读取 + List menuList = AuthUtils.getUserMenuListCache(true, userId); + // 如果为空,则从数据库读取 + if (null == menuList) { + menuList = this.getMenuListByUserId(userId, false); + // 同时尝试写入缓存 + AuthUtils.setUserMenuListCache(null != menuList, userId, menuList); + } + return menuList; + } + +// /** +// * 将最新的全部菜单列表保存至Redis数据库 +// * 因为:对菜单基础信息进行增、改、删等操作后,如果开启Redis缓存,需要将Redis中的数据进行更新 +// * +// * @param result 执行增改删的结果 +// */ +// private List saveAllMenu2Redis(int result) { +// // 如果开启Redis,并且Redis服务正常 +// if (result > 0 && exciteConfig.getAllowRedis()) { +// QueryWrapper wrapper = new QueryWrapper<>(); +// // 查询全部菜单(无论禁用与否) +// wrapper.orderByDesc("sort"); +// List menuList = menuMapper.selectList(wrapper); +// if (null != menuList) { +// redisService.set("menu:allMenuList", (Serializable) menuList); +// } +// // 同时删除全部Redis中保存的用户 +// Set userSet = (Set) redisService.get("menu:userList"); +// if (userSet != null) { +// for (Integer userId : userSet) { +// redisService.remove("menu:userMenuList:" + userId); +// } +// redisService.remove("menu:userList"); +// } +// return menuList; +// } +// return null; +// } +// +// /** +// * 从Redis数据库中读取全部的菜单信息 +// * +// * @return 菜单列表 +// */ +// private List getAllMenu4Redis() { +// // 如果开启Redis,则从redis中读取 +// if (exciteConfig.getAllowRedis()) { +// // redis中没有:存入并返回 +// if (!redisService.hasKey("menu:allMenuList")) { +// return this.saveAllMenu2Redis(1); +// } +// // redis中有:返回 +// return (List) redisService.get("menu:allMenuList"); +// } +// // 未开启redis,返回 +// return null; +// } +// +// /** +// * 私有方法:从redis中读取 保存当前用户的权限菜单列表至redis +// * 同时将已经保存至redis的用户集合更新 +// * +// * @param userId 用户ID +// * @return 当前用户的权限列表 +// */ +// private List getUserMenu4Redis(Integer userId) { +// // 如果开启Redis,则从redis中读取 +// if (exciteConfig.getAllowRedis()) { +// // redis中没有: +// if (!redisService.hasKey("menu:userMenuList:" + userId)) { +// // 存入并返回 +// List menuList = menuMapper.selectMenusByUserId(userId, 0); +// if (null != menuList) { +// redisService.set("menu:userMenuList:" + userId, (Serializable) menuList); +// Set userSet = new HashSet<>(); +// // 同时把该用户的ID存入Redis +// if (redisService.hasKey("menu:userList")) { +// userSet = (Set) redisService.get("menu:userList"); +// } +// userSet.add(userId); +// redisService.set("menu:userList", (Serializable) userSet); +// } +// return menuList; +// } +// // redis中有:返回 +// return (List) redisService.get("menu:userMenuList:" + userId); +// } +// // 未开启redis,返回空 +// return null; +// } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysRoleMenuServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysRoleMenuServiceImpl.java new file mode 100644 index 0000000..c03601e --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysRoleMenuServiceImpl.java @@ -0,0 +1,20 @@ +package com.zxdmy.excite.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zxdmy.excite.system.entity.SysRoleMenu; +import com.zxdmy.excite.system.mapper.SysRoleMenuMapper; +import com.zxdmy.excite.system.service.ISysRoleMenuService; +import org.springframework.stereotype.Service; + +/** + *

                          + * 系统角色和菜单/权限关联表 服务实现类 + *

                          + * + * @author 沈松 + * @since 2021-09-16 + */ +@Service +public class SysRoleMenuServiceImpl extends ServiceImpl implements ISysRoleMenuService { + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysRoleServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysRoleServiceImpl.java new file mode 100644 index 0000000..c506306 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysRoleServiceImpl.java @@ -0,0 +1,361 @@ +package com.zxdmy.excite.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zxdmy.excite.common.config.ExciteConfig; +import com.zxdmy.excite.common.enums.SystemCode; +import com.zxdmy.excite.common.exception.ServiceException; +import com.zxdmy.excite.common.service.RedisService; +import com.zxdmy.excite.system.entity.SysMenu; +import com.zxdmy.excite.system.entity.SysRole; +import com.zxdmy.excite.system.entity.SysRoleMenu; +import com.zxdmy.excite.system.entity.SysUserRole; +import com.zxdmy.excite.system.mapper.SysRoleMapper; +import com.zxdmy.excite.system.service.ISysRoleMenuService; +import com.zxdmy.excite.system.service.ISysRoleService; +import com.zxdmy.excite.system.service.ISysUserRoleService; + + +import com.zxdmy.excite.system.utils.AuthUtils; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + *

                          + * 系统角色表 服务实现类 + *

                          + * + * @author 沈松 + * @since 2021-09-23 + */ +@Service +@AllArgsConstructor +public class SysRoleServiceImpl extends ServiceImpl implements ISysRoleService { + + SysRoleMapper roleMapper; + + ISysRoleMenuService roleMenuService; + + ISysUserRoleService userRoleService; + + RedisService redisService; + + ExciteConfig exciteConfig; + + /** + * 接口实现:添加|更新角色 + * + * @param role 角色实体,ID为空表示添加 + * @param menusIds 为当前角色添加的菜单/权限ID列表 + * @return 影响的行数 0 - 失败 | >0 - 成功 + */ + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + public int saveRole(SysRole role, Integer[] menusIds) { + if (null == role) { + throw new ServiceException("角色实体不能为null"); + } + // 初始化:角色状态 + if (null == role.getStatus()) { + role.setStatus(SystemCode.STATUS_Y.getCode()); + } + // 初始化:角色顺序 + if (null == role.getSort()) { + role.setStatus(SystemCode.SORT_DEFAULT.getCode()); + } + LocalDateTime localDateTime = LocalDateTime.now(); + int result = 0; + // 新增 + if (null == role.getId()) { + role.setCreateTime(localDateTime); + role.setIsDelete(SystemCode.DELETE_N.getCode()); + // 先插入角色,以便获取角色的ID + result = roleMapper.insert(role); + if (result > 0) { + // 插入权限关联列表 + insertRoleMenu(role.getId(), menusIds); + } + } + // 更新 + else { + role.setUpdateTime(localDateTime); + // 将新菜单插入 + result = roleMapper.updateById(role); + if (result > 0) { + // 先从关联表中删除旧数据 + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.eq("role_id", role.getId()); + roleMenuService.remove(wrapper1); + // 再添加新数据 + insertRoleMenu(role.getId(), menusIds); + } + // 清除缓存 + AuthUtils.clearUserMenuListCache(result != 0); + } + return result; + } + + /** + * 接口实现:根据ID查询某个角色详情 + * + * @param id 角色的ID + * @return 角色实体 + */ + @Override + public SysRole getRole(Integer id) { + if (null == id) { + throw new ServiceException("角色ID不能为null"); + } + // 根据ID查询status正常的角色 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("id", id).ne("status", SystemCode.STATUS_N.getCode()); + return roleMapper.selectOne(wrapper); + } + + /** + * 接口实现:根据用户ID,查询状态正常的角色列表,其中该用户拥有的角色的checkArr字段为1 + * + * @param userId 用户的ID + * @return 角色列表 + */ + @Override + public List getListByUserId(Integer userId) { + // 查询status正常的角色 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.ne("status", SystemCode.STATUS_N.getCode()); + wrapper.ne("id", 10000); + // 如果userId为0,则表示获取全部角色 + if (userId == 0) { + return roleMapper.selectList(wrapper); + } + // 否则,获取角色后,将该用户已分配的角色checkArr设置为1 + else { + // 获取全部正常角色 + List roleList = roleMapper.selectList(wrapper); + // 获取当前用户拥有的角色ID列表 + List userRoleList = userRoleService.getListByUserId(userId).stream().map(SysUserRole::getRoleId).collect(Collectors.toList()); + // 使用lambda表达式,直接在角色列表上修改checkArr字段 + return roleList.stream().peek( + role -> { + if (userRoleList.contains(role.getId())) { + role.setCheckArr("1"); + role.setLAY_CHECKED(true); + } + } + ).collect(Collectors.toList()); + } + } + + /** + * 接口实现:分页查询接口列表 + * + * @param current 当前页 + * @param size 页大小 + * @param name 检索:名称 + * @param permission 检索:权限字符 + * @return 结果页面 + */ + @Override + public Page getPage(Integer current, Integer size, String name, String permission) { + current = null == current ? 1 : current; + size = null == size ? 10 : size; + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.like(null != name && !"".equals(name), "name", name) + .like(null != permission && !"".equals(permission), "permission", permission); + return roleMapper.selectPage(new Page<>(current, size), wrapper); + } + + /** + * 接口实现:改变角色状态 + * + * @param newStatus 新状态 + * @param roleIds 角色ID列表 + * @return 结果数组 + */ + @Override + public int[] changeStatus(Integer newStatus, Integer[] roleIds) { + if (null == newStatus || null == roleIds) { + throw new ServiceException("新状态或角色ID不能为空"); + } + int[] result = new int[2]; + for (Integer roleId : roleIds) { + SysRole role = new SysRole(); + QueryWrapper wrapper = new QueryWrapper<>(); + role.setId(roleId); + role.setStatus(newStatus); + wrapper.eq("id", roleId) + .ne("status", SystemCode.STATUS_Y_BLOCK.getCode()); + if (roleMapper.update(role, wrapper) > 0) + result[0]++; + else result[1]++; + } + // 清除缓存 + AuthUtils.clearUserMenuListCache(result[0] != 0); + return result; + } + + /** + * 接口实现:通过ID删除角色(注意:已经分配给用户的角色,不允许删除!) + * + * @param roleIds 角色ID + * @return 删除结果:0:成功个数 1:删除失败个数 2:因已分配用户,禁止删除数 + */ + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + public int[] deleteRoleById(Integer[] roleIds) { + if (null == roleIds || roleIds.length == 0) { + throw new ServiceException("删除的角色ID不能为空!"); + } + int[] result = new int[3]; + for (int roleId : roleIds) { + // 已经分配用户的角色,不允许删除! + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("role_id", roleId); + if (userRoleService.count(queryWrapper) > 0) { + // throw new ServiceException("当前角色已分配给用户,禁止删除!"); + result[2]++; + } else { + // 删除 用户-角色关联表 中的数据 + QueryWrapper userRoleQueryWrapper = new QueryWrapper<>(); + userRoleQueryWrapper.eq("role_id", roleId); + userRoleService.remove(userRoleQueryWrapper); + // 删除 角色-权限关联表 中的数据 + QueryWrapper roleMenuQueryWrapper = new QueryWrapper<>(); + roleMenuQueryWrapper.eq("role_id", roleId); + roleMenuService.remove(roleMenuQueryWrapper); + // 删除该角色 + if (roleMapper.deleteById(roleId) > 0) { + result[0]++; + } else { + result[1]++; + } + } + } + return result; + } + + /** + * 接口:将指定角色,授权分配给系列用户 + * + * @param roleId 角色ID + * @param userIds 用户ID列表 + * @return 授权结果 + */ + @Override + public boolean authRoleForUsers(Integer roleId, Integer[] userIds) { + // 如果用户列表为空,则直接返回真即可 + if (null == userIds || userIds.length == 0) { + return true; + } + // 存储列表 + List userRoleList = new ArrayList<>(); + for (Integer userId : userIds) { + // 构造数据,并添加至列表 + SysUserRole userRole = new SysUserRole(); + userRole.setRoleId(roleId); + userRole.setUserId(userId); + userRoleList.add(userRole); + } + // 执行插入 + if (userRoleService.saveBatch(userRoleList)) { + // 清除缓存 + AuthUtils.clearUserMenuListCacheById(true, userIds); + return true; + } else + return false; + + } + + /** + * 接口:取消指定角色已授权的系列用户 + * + * @param roleId 角色ID + * @param userIds 用户ID列表 + * @return 取消授权结果 + */ + @Override + public int[] revokeRoleForUsers(Integer roleId, Integer[] userIds) { + if (null == userIds || userIds.length == 0) { + return new int[]{0, 0}; + } + int[] result = new int[2]; + // 遍历用户列表,逐个删除 + for (Integer userId : userIds) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("role_id", roleId).eq("user_id", userId); + // TODO 完善:超级管理员不允许取消授权! + if (userRoleService.remove(wrapper)) { + result[0]++; + } else + result[1]++; + } + // 删除缓存 + AuthUtils.clearUserMenuListCacheById(result[0] != 0, userIds); + return result; + } + + + /** + * 私有方法:将指定角色拥有的菜单/权限,写入角色-菜单关联表 + * + * @param roleId 角色ID + * @param menusIds 菜单ID + */ + private void insertRoleMenu(Integer roleId, Integer[] menusIds) { + List roleMenuList = new ArrayList<>(); + for (Integer menuId : menusIds) { + SysRoleMenu roleMenu = new SysRoleMenu(); + roleMenu.setRoleId(roleId); + roleMenu.setMenuId(menuId); + roleMenuList.add(roleMenu); + } + // 如果权限列表不为空 + if (roleMenuList.size() > 0) { + // 批量插入 + roleMenuService.saveBatch(roleMenuList); + } + } + +// /** +// * 私有方法:删除 已缓存的用户列表和权限表 的缓存(详情请见 权限缓存策略) +// * 前提条件:result > 0 & 开启redis +// * +// * @param result 条件:>0 才执行 +// */ +// private void deleteRedisUserMenuCache(int result) { +// if (exciteConfig.getAllowRedis() && result > 0) { +// // 获取已缓存的用户列表 +// Set userSet = (Set) redisService.get("menu:userList"); +// // 统统清空 +// if (userSet != null) { +// for (Integer userId : userSet) { +// redisService.remove("menu:userMenuList:" + userId); +// } +// redisService.remove("menu:userList"); +// } +// } +// } +// +// /** +// * 私有方法:删除指定用户的缓存权限信息 +// * +// * @param result 条件 +// * @param userIds 用户ID +// */ +// private void deleteUserMenuCache(int result, Integer[] userIds) { +// if (result > 0 && exciteConfig.getAllowRedis()) { +// for (int userId : userIds) { +// redisService.remove("menu:userMenuList:" + userId); +// } +// } +// } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysUserRoleServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysUserRoleServiceImpl.java new file mode 100644 index 0000000..6c3836c --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysUserRoleServiceImpl.java @@ -0,0 +1,52 @@ +package com.zxdmy.excite.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zxdmy.excite.system.entity.SysUserRole; +import com.zxdmy.excite.system.mapper.SysUserRoleMapper; +import com.zxdmy.excite.system.service.ISysUserRoleService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

                          + * 系统用户和角色关联表 服务实现类 + *

                          + * + * @author 沈松 + * @since 2021-09-23 + */ +@Service +@AllArgsConstructor +public class SysUserRoleServiceImpl extends ServiceImpl implements ISysUserRoleService { + + SysUserRoleMapper userRoleMapper; + + /** + * 通过角色ID获取用户角色关联列表 + * + * @param roleId 角色ID + * @return 用户角色关联列表 + */ + @Override + public List getListByRoleId(Integer roleId) { + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.eq("role_id", roleId); + return userRoleMapper.selectList(wrapper1); + } + + /** + * 通过用户ID获取用户角色关联列表 + * + * @param userId 用户ID + * @return 用户角色关联列表 + */ + @Override + public List getListByUserId(Integer userId) { + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.eq("user_id", userId); + return userRoleMapper.selectList(wrapper1); + } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysUserServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysUserServiceImpl.java new file mode 100644 index 0000000..502361d --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/SysUserServiceImpl.java @@ -0,0 +1,543 @@ +package com.zxdmy.excite.system.service.impl; + +import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.lang.Validator; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zxdmy.excite.common.config.ExciteConfig; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.common.enums.SystemCode; +import com.zxdmy.excite.common.exception.ServiceException; +import com.zxdmy.excite.common.service.RedisService; +import com.zxdmy.excite.system.entity.cloud.account.CloudDepartmentUser; +import com.zxdmy.excite.system.entity.SysRole; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.entity.SysUserRole; +import com.zxdmy.excite.system.entity.cloud.role.CloudRole; +import com.zxdmy.excite.system.entity.cloud.role.CloudRoleFile; +import com.zxdmy.excite.system.entity.cloud.role.CloudRoleUser; +import com.zxdmy.excite.system.entity.cloud.space.CloudFileRole; +import com.zxdmy.excite.system.mapper.SysUserMapper; +import com.zxdmy.excite.system.mapper.cloud.account.CloudDepartmentUserMapper; +import com.zxdmy.excite.system.mapper.cloud.role.CloudRoleFileMapper; +import com.zxdmy.excite.system.service.ISysRoleService; +import com.zxdmy.excite.system.service.ISysUserRoleService; +import com.zxdmy.excite.system.service.ISysUserService; +import com.zxdmy.excite.system.service.cloud.role.ICloudRoleService; +import com.zxdmy.excite.system.service.cloud.role.ICloudRoleUserService; +import com.zxdmy.excite.system.service.cloud.space.ICloudFileRoleService; +import com.zxdmy.excite.system.utils.AuthUtils; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.function.Consumer; +import java.util.stream.Collectors; + +/** + *

                          + * 系统用户表 服务实现类 + *

                          + * + * @author 沈松 + * @since 2021-09-01 + */ +@Service +@AllArgsConstructor +public class SysUserServiceImpl extends ServiceImpl implements ISysUserService { + + SysUserMapper userMapper; + + ISysUserRoleService userRoleService; + ICloudFileRoleService iCloudFileRoleService; + ISysRoleService roleService; + + RedisService redisService; + + ExciteConfig exciteConfig; + + CloudDepartmentUserMapper cloudDepartmentUserMapper; + ICloudRoleService iCloudRoleService; + ICloudRoleUserService iCloudRoleUserService; + CloudRoleFileMapper cloudRoleFileMapper; + /** + * 登录服务 + * + * @param username 用户名,邮箱或者手机号 + * @param password 密码 + * @return SysUser:登录成功 | null:登录失败 + */ + @Override + public SysUser login(String username, String password) { + QueryWrapper wrapper = new QueryWrapper<>(); + // 这里用了 Hutool 的验证工具Validator + if (Validator.isMobile(username)) { + wrapper.eq("phone", username).eq("password", password); + } else { + wrapper.eq("login_name", username).eq("password", password); + + } + return userMapper.selectOne(wrapper); + } + + /** + * 获取用户列表 + * + * @param current 当前页 + * @param size 当前页大小 + * @param username 检索用户名 + * @param account 检索邮箱/手机号 + * @return 用户页面信息 + */ + @Override + public Page getPage(Integer current, Integer size, String username, String account) { + size = null == size ? 1 : size; + current = null == current ? 10 : current; + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.like(null != username && !"".equals(username), "username", username).ne("id",10000) + .and(null != account && !"".equals(account), new Consumer>() { + @Override + public void accept(QueryWrapper sysUserQueryWrapper) { + sysUserQueryWrapper + .like("login_name", account) + .or() + .like("phone", account); + } + }); + return userMapper.selectPage(new Page<>(current, size), wrapper); + } + + @Override + public PageList queryByPage(Integer page, Integer limit,String username, String phone, String departmentId) { + Integer pages = limit * (page - 1); + ArrayList list = userMapper.queryByPage(pages, limit,username,phone,departmentId); + Integer count = userMapper.queryByPageCount(username,phone,departmentId); + return new PageList(list,page,limit,count); + } + + /** + * 保存用户:添加 | 更新 + * + * @param user 用户信息 + * @param roleIds 角色ID列表 + * @return 修改的行数 >0:成功 | <=0:失败 + */ + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + public int save(SysUser user, Integer[] roleIds) { + // 新添加的用户,邮箱号和手机号,不能重复!只有输入的数据,有手机或邮箱的时候,才核实! + if (StrUtil.isNotEmpty(user.getPhone()) || StrUtil.isNotEmpty(user.getLoginName())) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.ne(null != user.getId(), "id", user.getId()) + .and(wrapper1 -> wrapper1.eq(StrUtil.isNotEmpty(user.getLoginName()), "login_name", user.getLoginName()) + .or(StrUtil.isNotEmpty(user.getPhone())) + .eq(StrUtil.isNotEmpty(user.getPhone()), "phone", user.getPhone()) + ); + if (this.list(wrapper).size() != 0) + throw new ServiceException("输入的账号或者手机号已存在,请修改!"); + } + int result = 0; + // 新建用户:其ID为空 + if (null == user.getId()) { + // 初始化部分信息 + if (null == user.getStatus()) + user.setStatus(SystemCode.STATUS_Y.getCode()); + // 未删除状态 + user.setIsDelete(SystemCode.DELETE_N.getCode()); + // 创建时间 + user.setCreateTime(LocalDateTime.now()); + // 执行新建 + result = userMapper.insert(user); + // 如果当前新用户分配的角色ID不为空 + if (null != roleIds) + // 插入角色 + this.insertUserRole(user.getId(), roleIds); + } + // 更新信息用户:其ID不为空 + else { + user.setUpdateTime(LocalDateTime.now()); + // 先更新用户的基本 + result = userMapper.updateById(user); + + // 本系统中:更新用户信息,不涉及到角色分配! + // 如果也可以在【用户编辑】页面修改用户的权限,则执行如下操作: +// // 先把该用户已有的角色关联信息删除 +// QueryWrapper userRoleQueryWrapper = new QueryWrapper<>(); +// userRoleQueryWrapper.eq("user_id", user.getId()); +// userRoleService.remove(userRoleQueryWrapper); +// // 如果角色为空,表示取消用户的全部权限 +// // 如果当前新用户分配的角色ID不为空,则为该用户修改角色 +// if (null != roleIds && roleIds.length == 0) { +// this.insertUserRole(user.getId(), roleIds); +// } +// // 清除缓存 +// AuthUtils.clearUserMenuListCacheById(result != 0, user.getId()); + + } + return result; + } + + + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + public int saveData(SysUser user, Integer[] roleIds,String[] roleIds1,String departmentId) { + // 新添加的用户,邮箱号和手机号,不能重复!只有输入的数据,有手机或邮箱的时候,才核实! + if (StrUtil.isNotEmpty(user.getPhone()) || StrUtil.isNotEmpty(user.getLoginName())) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.ne(null != user.getId(), "id", user.getId()) + .and(wrapper1 -> wrapper1.eq(StrUtil.isNotEmpty(user.getLoginName()), "login_name", user.getLoginName()) + .or(StrUtil.isNotEmpty(user.getPhone())) + .eq(StrUtil.isNotEmpty(user.getPhone()), "phone", user.getPhone()) + ); + if (this.list(wrapper).size() != 0) + throw new ServiceException("输入的账号或者手机号已存在,请修改!"); + } + int result = 0; + // 新建用户:其ID为空 + if (null == user.getId()) { + // 初始化部分信息 + if (null == user.getStatus()) + user.setStatus(SystemCode.STATUS_Y.getCode()); + // 未删除状态 + user.setIsDelete(SystemCode.DELETE_N.getCode()); + // 创建时间 + user.setCreateTime(LocalDateTime.now()); + // 执行新建 + + + + + result = userMapper.insert(user); + + if (null!=departmentId) { + CloudDepartmentUser cloudDepartmentUser = new CloudDepartmentUser(); + cloudDepartmentUser.setUserId(user.getId()); + cloudDepartmentUser.setDepartmentId(Long.valueOf(departmentId)); + cloudDepartmentUserMapper.insert(cloudDepartmentUser); + } + + + // 如果当前新用户分配的角色ID不为空 + if (null != roleIds) + // 插入角色 + this.insertUserRole(user.getId(), roleIds); + this.insertFileRole(user.getId(), roleIds1); + + } + // 更新信息用户:其ID不为空 + else { + user.setUpdateTime(LocalDateTime.now()); + // 先更新用户的基本 + result = userMapper.updateById(user); + + // 本系统中:更新用户信息,不涉及到角色分配! + // 如果也可以在【用户编辑】页面修改用户的权限,则执行如下操作: +// // 先把该用户已有的角色关联信息删除 +// QueryWrapper userRoleQueryWrapper = new QueryWrapper<>(); +// userRoleQueryWrapper.eq("user_id", user.getId()); +// userRoleService.remove(userRoleQueryWrapper); +// // 如果角色为空,表示取消用户的全部权限 +// // 如果当前新用户分配的角色ID不为空,则为该用户修改角色 +// if (null != roleIds && roleIds.length == 0) { +// this.insertUserRole(user.getId(), roleIds); +// } +// // 清除缓存 +// AuthUtils.clearUserMenuListCacheById(result != 0, user.getId()); + + } + return result; + } + /** + * 接口:修改用户状态 + * + * @param newStatus 新状态 + * @param userIds 用户ID列表 + * @return 修改结果数组 0:成功个数 1:失败个数 + */ + @Override + public int[] changeStatus(Integer newStatus, Integer[] userIds) { + /// 信息不能为空 + if (null == newStatus || null == userIds) { + throw new ServiceException("新状态或用户ID不能为空"); + } + // 新状态只能为 0 | 1 + if (newStatus == 0 || newStatus == 1) { + int[] result = new int[2]; + // 遍历用户列表 + for (int userId : userIds) { + // 已登录并且修改的用户ID是当前登录用户,禁止操作(跳过) + if(StpUtil.isLogin() && (StpUtil.getLoginId().toString().equals(String.valueOf(userId)))){ + result[1]++; + }else{ + // 定义用户信息 + SysUser user = new SysUser(); + user.setId(userId); + user.setStatus(newStatus); + // 执行修改(其中锁定,即状态为2的用户禁止修改) + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("id", userId) + .ne("status", SystemCode.STATUS_Y_BLOCK.getCode()); + // 修改成功 + if (userMapper.update(user, wrapper) > 0) { + result[0]++; + // 清除该用户的权限缓存 + AuthUtils.clearUserMenuListCacheById(true, userId); + } else result[1]++; + } + } + // 返回结果 + return result; + } else { + throw new ServiceException("新状态只能为0或1!"); + } + } + + /** + * 接口:给用户分配角色 + * + * @param userId 用户ID + * @param roleIds 角色ID数组 + * @return 修改结果数组 0:分配个数 1:失败个数 + */ + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + public boolean setRoleForUser(Integer userId, Integer[] roleIds) { + // 从 用户-角色关联表 中,删除包含该用户的关联信息 + QueryWrapper userRoleQueryWrapper = new QueryWrapper<>(); + userRoleQueryWrapper.eq("user_id", userId); + userRoleService.remove(userRoleQueryWrapper); + // 记录结果 + boolean result; + // 如果角色列表为null,或长度为 0,则表示清除该用户的全部角色,也就没必要插入了 + if (null == roleIds || roleIds.length == 0) { + result = true; + } + // 不为空,执行授权,插入,并返回结果 + else { + result = this.insertUserRole(userId, roleIds); + } + // 清理缓存 + AuthUtils.clearUserMenuListCacheById(result, userId); + return result; + } + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + public boolean setCloudRoleForUser(String userId, String[] roleIds) { + // 从 用户-角色关联表 中,删除包含该用户的关联信息 + QueryWrapper userRoleQueryWrapper = new QueryWrapper<>(); + userRoleQueryWrapper.eq("user_id", userId); + iCloudRoleUserService.remove(userRoleQueryWrapper); + // 记录结果 + boolean result; + // 如果角色列表为null,或长度为 0,则表示清除该用户的全部角色,也就没必要插入了 + if (null == roleIds || roleIds.length == 0) { + result = true; + } + // 不为空,执行授权,插入,并返回结果 + else { + result = this.insertUserCloudRole(userId, roleIds); + } + return result; + } + /** + * 接口:根据ID删除用户 + * + * @param userIds 用户ID + * @return 删除结果:>0 表示成功 + */ + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + public int[] deleteUserById(Integer[] userIds) { + if (null == userIds || userIds.length == 0) { + throw new SecurityException("用户ID不能为空!"); + } + int[] result = new int[2]; + // 遍历用户 + for (int userId : userIds) { + // TMD 不能删除自己!!! + if (userId != StpUtil.getLoginIdAsInt()) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("id", userId).ne("status", SystemCode.STATUS_Y_BLOCK.getCode()); + // 如果用户删除成功 + if (userMapper.delete(wrapper) > 0) { + // 从 用户-角色关联表 中,删除包含该用户的关联信息 + QueryWrapper userRoleQueryWrapper = new QueryWrapper<>(); + userRoleQueryWrapper.eq("user_id", userId); + userRoleService.remove(userRoleQueryWrapper); + + + + QueryWrapper cloudDepartmentUserQueryWrapper = new QueryWrapper<>(); + cloudDepartmentUserQueryWrapper.eq("user_id", userId); + cloudDepartmentUserMapper.delete(cloudDepartmentUserQueryWrapper); + + + QueryWrapper cloudFileRoleQueryWrapper = new QueryWrapper<>(); + cloudFileRoleQueryWrapper.eq("user_id", userId); + iCloudFileRoleService.remove(cloudFileRoleQueryWrapper); + + + QueryWrapper cloudRoleUserQueryWrapper = new QueryWrapper<>(); + cloudRoleUserQueryWrapper.eq("user_id", userId); + iCloudRoleUserService.remove(cloudRoleUserQueryWrapper); + + // 删除成功结果自增 + result[0]++; + // 清除缓存 + AuthUtils.clearUserMenuListCacheById(true, userId); + } else { + result[1]++; + } + } else { + result[1]++; + } + } + return result; + } + + /** + * 接口:通过角色ID查询用户列表 + * + * @param roleId 角色ID + * @return 用户列表 + */ + @Override + public List getUserListByRoleId(Integer roleId) { + return userMapper.selectUsersByRoleId(roleId); + } + + /** + * 接口:通过角色ID查询不包含此角色的用户列表 + * + * @param roleId 角色ID + * @return 不包含此角色的用户列表 + */ + @Override + public List getUserListByRoleIdNotIn(Integer roleId) { + return userMapper.selectUsersByRoleIdNotIn(roleId); + } + + + + + @Override + public List selectUsersByCloudUploadRoleId(String roleId) { + return userMapper.selectUsersByCloudUploadRoleId(roleId); + } + @Override + public List selectUsersByCloudUploadRoleIdNotIn(String roleId) { + return userMapper.selectUsersByCloudUploadRoleIdNotIn(roleId); + } + /** + * 私有方法:更新用户-角色关联信息 + * + * @param userId 用户ID + * @param roleIds 角色ID数组 + */ + private boolean insertUserRole(Integer userId, Integer[] roleIds) { + // 如果角色列表为空,直接返回真 + if (null == roleIds || roleIds.length == 0) { + return true; + } + // 获取所有状态正常的角色集合 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.ne("status", SystemCode.STATUS_N); + Set roleSet = roleService.list(wrapper).stream().map(SysRole::getId).collect(Collectors.toSet()); + // 存储列表 + List userRoleList = new ArrayList<>(); + for (Integer roleId : roleIds) { + // 只有符合条件的角色,才能添加 + if (roleSet.contains(roleId)) { + SysUserRole userRole = new SysUserRole(); + userRole.setRoleId(roleId); + userRole.setUserId(userId); + userRoleList.add(userRole); + } + } + if (userRoleList.size() > 0) { + return userRoleService.saveBatch(userRoleList); + } else return false; + } + private boolean insertFileRole(Integer userId, String[] roleIds) { + // 如果角色列表为空,直接返回真 + if (null == roleIds || roleIds.length == 0) { + return true; + } + // 获取所有状态正常的角色集合 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.isNull("delete_time"); + Set roleSet = iCloudRoleService.list(wrapper).stream().map(CloudRole::getId).collect(Collectors.toSet()); + // 存储列表 + + List userRoleList = new ArrayList<>(); + for (String roleId : roleIds) { + // 只有符合条件的角色,才能添加 + if (String.valueOf(roleSet).contains(roleId)) { + CloudRoleUser userRole = new CloudRoleUser(); + userRole.setRoleId(Long.valueOf(roleId)); + userRole.setUserId(userId); + userRoleList.add(userRole); + + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.eq("role_id",roleId); + List fileList = cloudRoleFileMapper.selectList(wrapper1); + List fileRoleList = new ArrayList<>(); + for (CloudRoleFile cloudRoleFile:fileList) { + CloudFileRole cloudFileRole = new CloudFileRole(); + cloudFileRole.setFileId(cloudRoleFile.getFileId()); + cloudFileRole.setUserId(userId); + fileRoleList.add(cloudFileRole); + } + iCloudFileRoleService.saveBatch(fileRoleList); + } + } + if (userRoleList.size() > 0) { + return iCloudRoleUserService.saveBatch(userRoleList); + } else return false; + } + + + private boolean insertUserCloudRole(String userId, String[] roleIds) { + // 如果角色列表为空,直接返回真 + if (null == roleIds || roleIds.length == 0) { + return true; + } + // 获取所有状态正常的角色集合 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.isNull("delete_time"); + Set roleSet = iCloudRoleService.list(wrapper).stream().map(CloudRole::getId).collect(Collectors.toSet()); + // 存储列表 + List userRoleList = new ArrayList<>(); + for (String roleId : roleIds) { + // 只有符合条件的角色,才能添加 + if (roleSet.contains(roleId)) { + CloudRoleUser userRole = new CloudRoleUser(); + userRole.setRoleId(Long.valueOf(roleId)); + userRole.setUserId(Integer.valueOf(userId)); + userRoleList.add(userRole); + } + } + if (userRoleList.size() > 0) { + return iCloudRoleUserService.saveBatch(userRoleList); + } else return false; + } + +// /** +// * 删除指定用户的缓存权限信息 +// * +// * @param result 条件:>0 才执行 +// * @param userId 用户ID +// */ +// private void deleteUserMenuCache(int result, int userId) { +// if (result > 0 && exciteConfig.getAllowRedis()) { +// redisService.remove("menu:userMenuList:" + userId); +// } +// } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/account/CloudCompanyServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/account/CloudCompanyServiceImpl.java new file mode 100644 index 0000000..c558bb7 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/account/CloudCompanyServiceImpl.java @@ -0,0 +1,107 @@ +package com.zxdmy.excite.system.service.impl.cloud.account; + +import cn.dev33.satoken.stp.StpUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.common.exception.ServiceException; +import com.zxdmy.excite.system.entity.SysRoleMenu; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.entity.SysUserRole; +import com.zxdmy.excite.system.entity.cloud.account.CloudCompany; +import com.zxdmy.excite.system.entity.cloud.account.CloudDepartment; +import com.zxdmy.excite.system.entity.req.account.ReqCompany; +import com.zxdmy.excite.system.entity.vo.account.CompanyVo; +import com.zxdmy.excite.system.mapper.SysUserMapper; +import com.zxdmy.excite.system.mapper.cloud.account.CloudCompanyMapper; +import com.zxdmy.excite.system.service.cloud.account.ICloudCompanyService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +/** + *

                          + * 企业表 服务实现类 + *

                          + * + * @author ss + * @since 2026-01-24 + */ +@Service +@AllArgsConstructor +public class CloudCompanyServiceImpl extends ServiceImpl implements ICloudCompanyService { + private CloudCompanyMapper cloudCompanyMapper; + private SysUserMapper sysUserMapper; + @Override + public PageList queryByPage(Integer page, Integer limit, ReqCompany data) { + Integer pages = limit * (page - 1); + ArrayList list = cloudCompanyMapper.queryByPage(pages, limit,data); + Integer count = cloudCompanyMapper.queryByPageCount(data); + return new PageList(list,page,limit,count); + } + + @Override + public CompanyVo getByData(ReqCompany data) { + return cloudCompanyMapper.getData(data); + } + + @Override + public int saveData(ReqCompany data) { + LocalDateTime localDateTime = LocalDateTime.now(); + CloudCompany saveData = new CloudCompany(); + saveData.setCompanyName(data.getCompanyName()); + SysUser sysUser = sysUserMapper.selectById(StpUtil.getLoginIdAsInt()); + saveData.setCompanySort(0); + saveData.setCreatorId(sysUser.getId()); + saveData.setCreatorName(sysUser.getUsername()); + saveData.setCreateTime(localDateTime); + if(cloudCompanyMapper.insert(saveData)==1){ + return 1; + } + return 0; + } + + @Override + public int updateData(ReqCompany data) { + CloudCompany updateData = new CloudCompany(); + updateData.setId(Long.valueOf(data.getId())); + updateData.setCompanyName(data.getCompanyName()); + if(cloudCompanyMapper.updateById(updateData)==1){ + return 1; + } + return 0; + } + + @Override + public int deleteById(String id) { + if (null == id) { + throw new ServiceException("删除的ID不能为空!"); + } + LocalDateTime localDateTime = LocalDateTime.now(); + SysUser sysUser = sysUserMapper.selectById(StpUtil.getLoginIdAsInt()); + CloudCompany data = cloudCompanyMapper.selectById(id); + if(null!=data){ + data.setDeleteId(sysUser.getId()); + data.setDeleteName(sysUser.getUsername()); + data.setDeleteTime(localDateTime); + return cloudCompanyMapper.updateById(data); + }else{ + return 0; + } + } + + @Override + public List queryByData() { + return cloudCompanyMapper.queryByData(); + } + + @Override + public List getList() { + return cloudCompanyMapper.getList(); + } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/account/CloudDepartmentServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/account/CloudDepartmentServiceImpl.java new file mode 100644 index 0000000..d472946 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/account/CloudDepartmentServiceImpl.java @@ -0,0 +1,245 @@ +package com.zxdmy.excite.system.service.impl.cloud.account; + +import cn.dev33.satoken.stp.StpUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.common.exception.ServiceException; +import com.zxdmy.excite.system.entity.cloud.account.CloudDepartmentUser; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.entity.cloud.account.CloudCompany; +import com.zxdmy.excite.system.entity.cloud.account.CloudDepartment; +import com.zxdmy.excite.system.entity.dto.DepartmentUserTreeNode; +import com.zxdmy.excite.system.entity.req.account.ReqDepartment; +import com.zxdmy.excite.system.entity.vo.account.DepartmentVo; +import com.zxdmy.excite.system.mapper.SysUserMapper; +import com.zxdmy.excite.system.mapper.cloud.account.CloudCompanyMapper; +import com.zxdmy.excite.system.mapper.cloud.account.CloudDepartmentMapper; +import com.zxdmy.excite.system.mapper.cloud.account.CloudDepartmentUserMapper; +import com.zxdmy.excite.system.service.cloud.account.ICloudDepartmentService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import javax.xml.transform.Result; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

                          + * 部门表 服务实现类 + *

                          + * + * @author ss + * @since 2026-01-24 + */ +@Service +@AllArgsConstructor +public class CloudDepartmentServiceImpl extends ServiceImpl implements ICloudDepartmentService { + + private CloudDepartmentMapper cloudDepartmentMapper; + private CloudCompanyMapper cloudCompanyMapper; + private SysUserMapper sysUserMapper; + private CloudDepartmentUserMapper cloudDepartmentUserMapper; + @Override + public PageList queryByPage(Integer page, Integer limit, ReqDepartment data) { + Integer pages = limit * (page - 1); + ArrayList list = cloudDepartmentMapper.queryByPage(pages, limit,data); + Integer count = cloudDepartmentMapper.queryByPageCount(data); + return new PageList(list,page,limit,count); + } + + @Override + public DepartmentVo getByData(ReqDepartment data) { + return cloudDepartmentMapper.getData(data); + } + + @Override + public int saveData(ReqDepartment data) { + LocalDateTime localDateTime = LocalDateTime.now(); + CloudDepartment saveData = new CloudDepartment(); + + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("id",data.getId()); + Integer company = cloudCompanyMapper.selectCount(wrapper); + if(company>0){ + saveData.setDepartmentParentId(Long.valueOf("0")); + saveData.setCompanyId(Long.valueOf(data.getId())); + }else{ + saveData.setDepartmentParentId(Long.valueOf(data.getId())); + saveData.setCompanyId(Long.valueOf(data.getCompanyId())); + } + saveData.setDepartmentName(data.getDepartmentName()); + SysUser sysUser = sysUserMapper.selectById(StpUtil.getLoginIdAsInt()); + saveData.setDepartmentSort(0); + saveData.setCreatorId(sysUser.getId()); + saveData.setCreatorName(sysUser.getUsername()); + saveData.setCreateTime(localDateTime); + if(cloudDepartmentMapper.insert(saveData)==1){ + return 1; + } + return 0; + } + + @Override + public int updateData(ReqDepartment data) { + CloudDepartment updateData = new CloudDepartment(); + updateData.setId(Long.valueOf(data.getId())); + updateData.setDepartmentName(data.getDepartmentName()); + if(cloudDepartmentMapper.updateById(updateData)==1){ + return 1; + } + return 0; + } + + @Override + public int deleteById(String id) { + if (null == id) { + throw new ServiceException("删除的ID不能为空!"); + } + LocalDateTime localDateTime = LocalDateTime.now(); + SysUser sysUser = sysUserMapper.selectById(StpUtil.getLoginIdAsInt()); + CloudDepartment data = cloudDepartmentMapper.selectById(id); + if(null!=data){ + data.setDeleteId(sysUser.getId()); + data.setDeleteName(sysUser.getUsername()); + data.setDeleteTime(localDateTime); + return cloudDepartmentMapper.updateById(data); + }else{ + return 0; + } + } + + @Override + public int changeDepartment(String userId, String departmentId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("user_id",userId); + List list = cloudDepartmentUserMapper.selectList(queryWrapper); + if (list.size()>0) { + CloudDepartmentUser cloudDepartmentUser = cloudDepartmentUserMapper.selectById(list.get(0).getId()); + cloudDepartmentUser.setDepartmentId(Long.valueOf(departmentId)); + return cloudDepartmentUserMapper.updateById(cloudDepartmentUser); + } + return 0; + } + @Override + public List getList(Long id) { + return cloudDepartmentMapper.getList(id); + } + + + public List buildDepartmentUserTree(Long companyId) { + // 1. 查询所有部门 + List departments = cloudDepartmentMapper.selectByCompanyId(companyId); + + // 2. 查询所有部门-用户关系 + List departmentUsers = cloudDepartmentUserMapper.selectByCompanyId(companyId); + + // 3. 按部门分组用户关系 + Map> deptUserMap = departmentUsers.stream() + .collect(Collectors.groupingBy(CloudDepartmentUser::getDepartmentId)); + + // 4. 查询所有用户信息 + List userIds = departmentUsers.stream() + .map(CloudDepartmentUser::getUserId) + .distinct() + .collect(Collectors.toList()); + + Map userMap = new HashMap<>(); + if (!userIds.isEmpty()) { + List users = sysUserMapper.selectByIds(userIds); + users.forEach(user -> userMap.put(user.getId(), user)); + } + + // 5. 构建部门树节点映射 + Map deptNodeMap = new HashMap<>(); + for (CloudDepartment dept : departments) { + DepartmentUserTreeNode node = new DepartmentUserTreeNode(dept); + deptNodeMap.put(dept.getId(), node); + } + + // 6. 将用户添加到部门节点 + for (Map.Entry> entry : deptUserMap.entrySet()) { + Long deptId = entry.getKey(); + DepartmentUserTreeNode deptNode = deptNodeMap.get(deptId); + if (deptNode != null) { + for (CloudDepartmentUser du : entry.getValue()) { + SysUser user = userMap.get(du.getUserId()); + if (user != null) { + DepartmentUserTreeNode userNode = new DepartmentUserTreeNode(user, deptId); + deptNode.getChildren().add(userNode); + } + } + } + } + + // 7. 构建树形结构 + List tree = new ArrayList<>(); + for (DepartmentUserTreeNode node : deptNodeMap.values()) { + if (node.getParentId() == 0) { + // 根节点 + tree.add(node); + buildTreeRecursive(node, deptNodeMap); + } + } + + // 8. 排序 + sortTreeNodes(tree); + + return tree; + } + + private void buildTreeRecursive(DepartmentUserTreeNode parentNode, + Map deptNodeMap) { + // 添加子部门 + List children = new ArrayList<>(); + for (DepartmentUserTreeNode node : deptNodeMap.values()) { + if (node.getType().equals("department") && + parentNode.getId().equals(node.getParentId())) { + children.add(node); + buildTreeRecursive(node, deptNodeMap); + } + } + + // 合并已有的用户节点 + if (!parentNode.getChildren().isEmpty()) { + // 只保留用户节点,部门节点在children中添加 + List userNodes = parentNode.getChildren().stream() + .filter(n -> n.getType().equals("user")) + .collect(Collectors.toList()); + children.addAll(userNodes); + } + + parentNode.setChildren(children); + } + + /** + * 排序:部门按sort排序,用户按name排序 + */ + private void sortTreeNodes(List nodes) { + if (nodes == null || nodes.isEmpty()) { + return; + } + + nodes.sort((n1, n2) -> { + if (n1.getType().equals("department") && n2.getType().equals("department")) { + return Integer.compare(n1.getSort(), n2.getSort()); + } else if (n1.getType().equals("user") && n2.getType().equals("user")) { + return n1.getTitle().compareTo(n2.getTitle()); + } else { + // 部门在前,用户在后 + return n1.getType().equals("department") ? -1 : 1; + } + }); + + for (DepartmentUserTreeNode node : nodes) { + if (node.getType().equals("department") && !node.getChildren().isEmpty()) { + sortTreeNodes(node.getChildren()); + } + } + } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/account/CloudDepartmentUserServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/account/CloudDepartmentUserServiceImpl.java new file mode 100644 index 0000000..d53a569 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/account/CloudDepartmentUserServiceImpl.java @@ -0,0 +1,20 @@ +package com.zxdmy.excite.system.service.impl.cloud.account; + +import com.zxdmy.excite.system.entity.cloud.account.CloudDepartmentUser; +import com.zxdmy.excite.system.mapper.cloud.account.CloudDepartmentUserMapper; +import com.zxdmy.excite.system.service.cloud.account.ICloudDepartmentUserService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

                          + * 部门用户ID 服务实现类 + *

                          + * + * @author ss + * @since 2026-01-27 + */ +@Service +public class CloudDepartmentUserServiceImpl extends ServiceImpl implements ICloudDepartmentUserService { + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/collection/CloudUserCollectionServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/collection/CloudUserCollectionServiceImpl.java new file mode 100644 index 0000000..0e17403 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/collection/CloudUserCollectionServiceImpl.java @@ -0,0 +1,82 @@ +package com.zxdmy.excite.system.service.impl.cloud.collection; + +import cn.dev33.satoken.stp.StpUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.common.exception.ServiceException; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.entity.cloud.account.CloudCompany; +import com.zxdmy.excite.system.entity.cloud.collection.CloudUserCollection; +import com.zxdmy.excite.system.entity.req.account.ReqCompany; +import com.zxdmy.excite.system.entity.req.collection.ReqCloudUserCollection; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFile; +import com.zxdmy.excite.system.entity.vo.account.CompanyVo; +import com.zxdmy.excite.system.entity.vo.collection.CloudUserCollectionVo; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.mapper.SysUserMapper; +import com.zxdmy.excite.system.mapper.cloud.collection.CloudUserCollectionMapper; +import com.zxdmy.excite.system.service.cloud.collection.ICloudUserCollectionService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +/** + *

                          + * 收藏表 服务实现类 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +@Service +@AllArgsConstructor +public class CloudUserCollectionServiceImpl extends ServiceImpl implements ICloudUserCollectionService { + CloudUserCollectionMapper cloudUserCollectionMapper; + SysUserMapper sysUserMapper; + @Override + public PageList queryByPage(Integer page, Integer limit, ReqCloudUserCollection data) { + Integer pages = limit * (page - 1); + ArrayList list = cloudUserCollectionMapper.queryByPage(pages, limit,data); + Integer count = cloudUserCollectionMapper.queryByPageCount(data); + return new PageList(list,page,limit,count); + } + + @Override + public CloudUserCollectionVo getByData(ReqCloudUserCollection data) { + return cloudUserCollectionMapper.getData(data); + } + + @Override + public int saveData(ReqCloudUserCollection data) { + LocalDateTime localDateTime = LocalDateTime.now(); + CloudUserCollection saveData = new CloudUserCollection(); + SysUser sysUser = sysUserMapper.selectById(StpUtil.getLoginIdAsInt()); + saveData.setFileId(Long.valueOf(data.getFileId())); + saveData.setUserId(sysUser.getId()); + saveData.setCreateTime(localDateTime); + if(cloudUserCollectionMapper.insert(saveData)==1){ + return 1; + } + return 0; + } + + + @Override + public int deleteById(String id) { + if (null == id) { + throw new ServiceException("删除的ID不能为空!"); + } + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("file_id",id); + wrapper.eq("user_id",StpUtil.getLoginIdAsInt()); + List list = cloudUserCollectionMapper.selectList(wrapper); + if(list.size()>0){ + return cloudUserCollectionMapper.deleteById(list.get(0).getId()); + } + return 0; + } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/lately/CloudUserLatelyServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/lately/CloudUserLatelyServiceImpl.java new file mode 100644 index 0000000..ca8f4b4 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/lately/CloudUserLatelyServiceImpl.java @@ -0,0 +1,97 @@ +package com.zxdmy.excite.system.service.impl.cloud.lately; + +import cn.dev33.satoken.stp.StpUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.common.exception.ServiceException; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.entity.cloud.collection.CloudUserCollection; +import com.zxdmy.excite.system.entity.cloud.lately.CloudUserLately; +import com.zxdmy.excite.system.entity.cloud.space.CloudFile; +import com.zxdmy.excite.system.entity.req.collection.ReqCloudUserCollection; +import com.zxdmy.excite.system.entity.req.lately.ReqCloudUserLately; +import com.zxdmy.excite.system.entity.req.trace.ReqCloudFileTrace; +import com.zxdmy.excite.system.entity.vo.collection.CloudUserCollectionVo; +import com.zxdmy.excite.system.entity.vo.lately.CloudUserLatelyVo; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.mapper.SysUserMapper; +import com.zxdmy.excite.system.mapper.cloud.lately.CloudUserLatelyMapper; +import com.zxdmy.excite.system.mapper.cloud.space.CloudFileMapper; +import com.zxdmy.excite.system.service.cloud.lately.ICloudUserLatelyService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zxdmy.excite.system.service.cloud.trace.ICloudFileTraceService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +/** + *

                          + * 最近文件表 服务实现类 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +@Service +@AllArgsConstructor +public class CloudUserLatelyServiceImpl extends ServiceImpl implements ICloudUserLatelyService { + CloudUserLatelyMapper cloudUserLatelyMapper; + SysUserMapper sysUserMapper; + CloudFileMapper cloudFileMapper; + ICloudFileTraceService iCloudFileTraceService; + @Override + public PageList queryByPage(Integer page, Integer limit, ReqCloudUserLately data) { + Integer pages = limit * (page - 1); + ArrayList list = cloudUserLatelyMapper.queryByPage(pages, limit,data); + Integer count = cloudUserLatelyMapper.queryByPageCount(data); + return new PageList(list,page,limit,count); + } + + @Override + public CloudUserLatelyVo getByData(ReqCloudUserLately data) { + return cloudUserLatelyMapper.getData(data); + } + + @Override + public int saveData(ReqCloudUserLately data) { + LocalDateTime localDateTime = LocalDateTime.now(); + CloudUserLately saveData = new CloudUserLately(); + SysUser sysUser = sysUserMapper.selectById(StpUtil.getLoginIdAsInt()); + saveData.setFileId(Long.valueOf(data.getFileId())); + saveData.setUserId(sysUser.getId()); + saveData.setCreateTime(localDateTime); + saveData.setLatelyTime(localDateTime); + if(cloudUserLatelyMapper.insert(saveData)==1){ + + CloudFile cloudFile = cloudFileMapper.selectById(data.getFileId()); + + ReqCloudFileTrace reqCloudFileTrace = new ReqCloudFileTrace(); + reqCloudFileTrace.setFileId(data.getFileId()); + reqCloudFileTrace.setTraceName("查看了 "+cloudFile.getFileName()+" 文件"); + iCloudFileTraceService.saveData(reqCloudFileTrace); + + + return 1; + } + return 0; + } + + + @Override + public int deleteById(String id) { + if (null == id) { + throw new ServiceException("删除的ID不能为空!"); + } + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("file_id",id); + wrapper.eq("user_id",StpUtil.getLoginIdAsInt()); + List list = cloudUserLatelyMapper.selectList(wrapper); + if(list.size()>0){ + return cloudUserLatelyMapper.deleteById(list.get(0).getId()); + } + return 0; + } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/role/CloudRoleFileServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/role/CloudRoleFileServiceImpl.java new file mode 100644 index 0000000..1093ea5 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/role/CloudRoleFileServiceImpl.java @@ -0,0 +1,20 @@ +package com.zxdmy.excite.system.service.impl.cloud.role; + +import com.zxdmy.excite.system.entity.cloud.role.CloudRoleFile; +import com.zxdmy.excite.system.mapper.cloud.role.CloudRoleFileMapper; +import com.zxdmy.excite.system.service.cloud.role.ICloudRoleFileService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

                          + * 云盘权限文件表 服务实现类 + *

                          + * + * @author 沈松 + * @since 2026-02-01 + */ +@Service +public class CloudRoleFileServiceImpl extends ServiceImpl implements ICloudRoleFileService { + +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/role/CloudRoleServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/role/CloudRoleServiceImpl.java new file mode 100644 index 0000000..dab35aa --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/role/CloudRoleServiceImpl.java @@ -0,0 +1,300 @@ +package com.zxdmy.excite.system.service.impl.cloud.role; + +import cn.dev33.satoken.stp.StpUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.common.enums.SystemCode; +import com.zxdmy.excite.common.exception.ServiceException; +import com.zxdmy.excite.system.entity.SysRole; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.entity.SysUserRole; +import com.zxdmy.excite.system.entity.cloud.role.CloudRole; +import com.zxdmy.excite.system.entity.cloud.role.CloudRoleFile; +import com.zxdmy.excite.system.entity.cloud.role.CloudRoleUser; +import com.zxdmy.excite.system.entity.cloud.space.CloudFileRole; +import com.zxdmy.excite.system.entity.req.role.ReqRole; +import com.zxdmy.excite.system.entity.vo.role.RoleVo; +import com.zxdmy.excite.system.mapper.SysUserMapper; +import com.zxdmy.excite.system.mapper.cloud.role.CloudRoleFileMapper; +import com.zxdmy.excite.system.mapper.cloud.role.CloudRoleMapper; +import com.zxdmy.excite.system.service.cloud.role.ICloudRoleService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zxdmy.excite.system.service.cloud.role.ICloudRoleUserService; +import com.zxdmy.excite.system.service.cloud.space.ICloudFileRoleService; +import com.zxdmy.excite.system.utils.AuthUtils; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

                          + * 云盘权限表 服务实现类 + *

                          + * + * @author ss + * @since 2026-01-27 + */ +@Service +@AllArgsConstructor +public class CloudRoleServiceImpl extends ServiceImpl implements ICloudRoleService { + private CloudRoleMapper cloudRoleMapper; + private SysUserMapper sysUserMapper; + private ICloudRoleUserService iCloudRoleUserService; + private CloudRoleFileMapper cloudRoleFileMapper; + private ICloudFileRoleService iCloudFileRoleService; + + @Override + public PageList queryByPage(Integer page, Integer limit, ReqRole data) { + Integer pages = limit * (page - 1); + ArrayList list = cloudRoleMapper.queryByPage(pages, limit,data); + Integer count = cloudRoleMapper.queryByPageCount(data); + return new PageList(list,page,limit,count); + } + + @Override + public RoleVo getByData(ReqRole data) { + return cloudRoleMapper.getData(data); + } + + @Override + public int saveData(ReqRole data) { + LocalDateTime localDateTime = LocalDateTime.now(); + CloudRole saveData = new CloudRole(); + saveData.setRoleName(data.getRoleName()); + SysUser sysUser = sysUserMapper.selectById(StpUtil.getLoginIdAsInt()); + saveData.setRoleDown(data.getRoleDown()); + saveData.setRoleUpload(data.getRoleUpload()); + saveData.setCreatorId(sysUser.getId()); + saveData.setCreatorName(sysUser.getUsername()); + saveData.setCreateTime(localDateTime); + if(cloudRoleMapper.insert(saveData)==1){ + + for (String fileId:data.getIds()) { + CloudRoleFile cloudRoleFile = new CloudRoleFile(); + cloudRoleFile.setFileId(Long.valueOf(fileId)); + cloudRoleFile.setRoleId(saveData.getId()); + cloudRoleFileMapper.insert(cloudRoleFile); + } + + return 1; + } + return 0; + } + + @Override + public int updateData(ReqRole data) { + CloudRole updateData = new CloudRole(); + updateData.setId(Long.valueOf(data.getId())); + updateData.setRoleName(data.getRoleName()); + updateData.setRoleDown(data.getRoleDown()); + updateData.setRoleUpload(data.getRoleUpload()); + if(cloudRoleMapper.updateById(updateData)==1){ + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("role_id",updateData.getId()); + List list = cloudRoleFileMapper.selectList(wrapper); + for (CloudRoleFile cloudRoleFile:list) { + cloudRoleFileMapper.deleteById(cloudRoleFile.getId()); + } + + + for (String fileId:data.getIds()) { + CloudRoleFile cloudRoleFile = new CloudRoleFile(); + cloudRoleFile.setFileId(Long.valueOf(fileId)); + cloudRoleFile.setRoleId(updateData.getId()); + cloudRoleFileMapper.insert(cloudRoleFile); + } + + + return 1; + } + return 0; + } + + @Override + public int deleteById(String id) { + if (null == id) { + throw new ServiceException("删除的ID不能为空!"); + } + LocalDateTime localDateTime = LocalDateTime.now(); + SysUser sysUser = sysUserMapper.selectById(StpUtil.getLoginIdAsInt()); + CloudRole data = cloudRoleMapper.selectById(id); + if(null!=data){ + data.setDeleteId(sysUser.getId()); + data.setDeleteName(sysUser.getUsername()); + data.setDeleteTime(localDateTime); + return cloudRoleMapper.updateById(data); + }else{ + return 0; + } + } + + @Override + public List queryByData() { + return cloudRoleMapper.queryByData(); + } + + + @Override + public int[] changeUploadStatus(Integer newStatus, String[] ids) { + /// 信息不能为空 + if (null == newStatus || null == ids) { + throw new ServiceException("新状态或ID不能为空"); + } + // 新状态只能为 0 | 1 + if (newStatus == 0 || newStatus == 1) { + int[] result = new int[2]; + for (String id : ids) { + CloudRole data = cloudRoleMapper.selectById(id); + data.setRoleUpload(newStatus); + if (cloudRoleMapper.updateById(data) > 0) { + result[0]++; + } else result[1]++; + } + // 返回结果 + return result; + } else { + throw new ServiceException("新状态只能为0或1!"); + } + } + @Override + public int[] changeDownStatus(Integer newStatus, String[] ids) { + /// 信息不能为空 + if (null == newStatus || null == ids) { + throw new ServiceException("新状态或ID不能为空"); + } + // 新状态只能为 0 | 1 + if (newStatus == 0 || newStatus == 1) { + int[] result = new int[2]; + for (String id : ids) { + CloudRole data = cloudRoleMapper.selectById(id); + data.setRoleDown(newStatus); + if (cloudRoleMapper.updateById(data) > 0) { + result[0]++; + } else result[1]++; + } + // 返回结果 + return result; + } else { + throw new ServiceException("新状态只能为0或1!"); + } + } + @Override + public int[] changeDeleteStatus(Integer newStatus, String[] ids) { + /// 信息不能为空 + if (null == newStatus || null == ids) { + throw new ServiceException("新状态或ID不能为空"); + } + // 新状态只能为 0 | 1 + if (newStatus == 0 || newStatus == 1) { + int[] result = new int[2]; + for (String id : ids) { + CloudRole data = cloudRoleMapper.selectById(id); + data.setRoleDelete(newStatus); + if (cloudRoleMapper.updateById(data) > 0) { + result[0]++; + } else result[1]++; + } + // 返回结果 + return result; + } else { + throw new ServiceException("新状态只能为0或1!"); + } + } + @Override + public boolean authRoleForUsers(String roleId, String[] userIds) { + // 如果用户列表为空,则直接返回真即可 + if (null == userIds || userIds.length == 0) { + return true; + } + // 存储列表 + List userRoleList = new ArrayList<>(); + for (String userId : userIds) { + // 构造数据,并添加至列表 + CloudRoleUser userRole = new CloudRoleUser(); + userRole.setRoleId(Long.valueOf(roleId)); + userRole.setUserId(Integer.valueOf(userId)); + userRoleList.add(userRole); + + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.eq("role_id",roleId); + List fileList = cloudRoleFileMapper.selectList(wrapper1); + List fileRoleList = new ArrayList<>(); + for (CloudRoleFile cloudRoleFile:fileList) { + CloudFileRole cloudFileRole = new CloudFileRole(); + cloudFileRole.setFileId(cloudRoleFile.getFileId()); + cloudFileRole.setUserId(Integer.valueOf(userId)); + fileRoleList.add(cloudFileRole); + } + iCloudFileRoleService.saveBatch(fileRoleList); + } + // 执行插入 + if (iCloudRoleUserService.saveBatch(userRoleList)) { + return true; + } else + return false; + + } + + @Override + public int[] revokeRoleForUsers(String roleId, String[] userIds) { + if (null == userIds || userIds.length == 0) { + return new int[]{0, 0}; + } + int[] result = new int[2]; + // 遍历用户列表,逐个删除 + for (String userId : userIds) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("role_id", roleId).eq("user_id", userId); + // TODO 完善:超级管理员不允许取消授权! + if (iCloudRoleUserService.remove(wrapper)) { + + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.eq("role_id",roleId); + List fileList = cloudRoleFileMapper.selectList(wrapper1); + for (CloudRoleFile cloudRoleFile:fileList) { + + QueryWrapper wrapper2 = new QueryWrapper<>(); + wrapper2.eq("file_id", cloudRoleFile.getFileId()); + wrapper2.eq("user_id", userId); + iCloudFileRoleService.remove(wrapper2); + } + + result[0]++; + } else + result[1]++; + } + return result; + } + + @Override + public List getListByUserId(Integer userId) { + // 查询status正常的角色 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.isNull("delete_time"); + // 如果userId为0,则表示获取全部角色 + if (userId == 0) { + return cloudRoleMapper.selectList(wrapper); + } + // 否则,获取角色后,将该用户已分配的角色checkArr设置为1 + else { + // 获取全部正常角色 + List roleList = cloudRoleMapper.selectList(wrapper); + // 获取当前用户拥有的角色ID列表 + List userRoleList = iCloudRoleUserService.getListByUserId(userId).stream().map(CloudRoleUser::getRoleId).collect(Collectors.toList()); + // 使用lambda表达式,直接在角色列表上修改checkArr字段 + return roleList.stream().peek( + role -> { + if (userRoleList.contains(role.getId())) { + role.setCheckArr("1"); + role.setLAY_CHECKED(true); + } + } + ).collect(Collectors.toList()); + } + } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/role/CloudRoleUserServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/role/CloudRoleUserServiceImpl.java new file mode 100644 index 0000000..965a8fd --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/role/CloudRoleUserServiceImpl.java @@ -0,0 +1,63 @@ +package com.zxdmy.excite.system.service.impl.cloud.role; + +import cn.dev33.satoken.stp.StpUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zxdmy.excite.system.entity.SysUserRole; +import com.zxdmy.excite.system.entity.cloud.role.CloudRole; +import com.zxdmy.excite.system.entity.cloud.role.CloudRoleUser; +import com.zxdmy.excite.system.mapper.cloud.role.CloudRoleMapper; +import com.zxdmy.excite.system.mapper.cloud.role.CloudRoleUserMapper; +import com.zxdmy.excite.system.service.ISysUserRoleService; +import com.zxdmy.excite.system.service.cloud.role.ICloudRoleUserService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zxdmy.excite.system.utils.AuthUtils; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + *

                          + * 云盘权限用户表 服务实现类 + *

                          + * + * @author ss + * @since 2026-01-27 + */ +@Service +@AllArgsConstructor +public class CloudRoleUserServiceImpl extends ServiceImpl implements ICloudRoleUserService { + CloudRoleUserMapper cloudRoleUserMapper; + CloudRoleMapper cloudRoleMapper; + @Override + public List getListByUserId(Integer userId) { + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.eq("user_id", userId); + return cloudRoleUserMapper.selectList(wrapper1); + } + + @Override + public CloudRole getCloudShareRole(Integer id) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("user_id",id); + List roleList = cloudRoleUserMapper.selectList(wrapper); + CloudRole data = new CloudRole(); + data.setRoleUpload(0); + data.setRoleDown(0); + data.setRoleDelete(0); + for (CloudRoleUser cloudRoleUser:roleList) { + CloudRole cloudRole = cloudRoleMapper.selectById(cloudRoleUser.getRoleId()); + if(null!=cloudRole.getRoleUpload() && cloudRole.getRoleUpload()==1){ + data.setRoleUpload(1); + } + if(null!=cloudRole.getRoleDown() && cloudRole.getRoleDown()==1){ + data.setRoleDown(1); + } + if(null!=cloudRole.getRoleDelete() && cloudRole.getRoleDelete()==1){ + data.setRoleDelete(1); + } + } + return data; + } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/space/CloudFileRoleServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/space/CloudFileRoleServiceImpl.java new file mode 100644 index 0000000..fed16a5 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/space/CloudFileRoleServiceImpl.java @@ -0,0 +1,60 @@ +package com.zxdmy.excite.system.service.impl.cloud.space; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.entity.cloud.space.CloudFileRole; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFileRole; +import com.zxdmy.excite.system.entity.vo.space.CloudFileRoleVo; +import com.zxdmy.excite.system.entity.vo.space.CloudRoleFileVo; +import com.zxdmy.excite.system.mapper.cloud.space.CloudFileRoleMapper; +import com.zxdmy.excite.system.service.cloud.space.ICloudFileRoleService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

                          + * 文件用户权限表 服务实现类 + *

                          + * + * @author 沈松 + * @since 2026-01-30 + */ +@Service +@AllArgsConstructor +public class CloudFileRoleServiceImpl extends ServiceImpl implements ICloudFileRoleService { + CloudFileRoleMapper cloudFileRoleMapper; + @Override + public List getFileRole(String id) { + return cloudFileRoleMapper.getFileRole(id); + } + @Override + public List getRoleFile(String id) { + return cloudFileRoleMapper.getRoleFile(id); + } + @Override + public List getRoleFileCheck(String id) { + return cloudFileRoleMapper.getRoleFileCheck(id); + } + @Override + public CloudFileRole getData(ReqCloudFileRole data) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("user_id",data.getUserId()); + wrapper.eq("file_id",data.getFileId()); + List cloudFileRole = cloudFileRoleMapper.selectList(wrapper); + if(cloudFileRole.size()>0){ + return cloudFileRole.get(0); + } + return null; + } + + @Override + public List getFileRoleByUseId(Integer id) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("user_id",id); + List cloudFileRole = cloudFileRoleMapper.selectList(wrapper); + return cloudFileRole; + } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/space/CloudFileServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/space/CloudFileServiceImpl.java new file mode 100644 index 0000000..48b5200 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/space/CloudFileServiceImpl.java @@ -0,0 +1,290 @@ +package com.zxdmy.excite.system.service.impl.cloud.space; + +import cn.dev33.satoken.stp.StpUtil; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.common.enums.CloudCode; +import com.zxdmy.excite.common.enums.SystemCode; +import com.zxdmy.excite.common.exception.ServiceException; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.entity.cloud.role.CloudRole; +import com.zxdmy.excite.system.entity.cloud.space.CloudFile; +import com.zxdmy.excite.system.entity.cloud.space.CloudFileRole; +import com.zxdmy.excite.system.entity.req.space.ReqCloudFile; +import com.zxdmy.excite.system.entity.req.trace.ReqCloudFileTrace; +import com.zxdmy.excite.system.entity.vo.space.CloudFileRoleVo; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.mapper.SysUserMapper; +import com.zxdmy.excite.system.mapper.cloud.space.CloudFileMapper; +import com.zxdmy.excite.system.mapper.cloud.space.CloudFileRoleMapper; +import com.zxdmy.excite.system.service.cloud.space.ICloudFileService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zxdmy.excite.system.service.cloud.trace.ICloudFileTraceService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +/** + *

                          + * 文件表 服务实现类 + *

                          + * + * @author ss + * @since 2026-01-28 + */ +@Service +@AllArgsConstructor +public class CloudFileServiceImpl extends ServiceImpl implements ICloudFileService { + + private CloudFileMapper cloudFileMapper; + private SysUserMapper sysUserMapper; + private CloudFileRoleMapper cloudFileRoleMapper; + private ICloudFileTraceService iCloudFileTraceService; + + @Override + public PageList queryByPage(Integer page, Integer limit, ReqCloudFile data) { + Integer pages = limit * (page - 1); + ArrayList list = cloudFileMapper.queryByPage(pages, limit,data); + Integer count = cloudFileMapper.queryByPageCount(data); + return new PageList(list,page,limit,count); + } + + + @Override + public PageList queryByRecyclePage(Integer page, Integer limit, ReqCloudFile data) { + Integer pages = limit * (page - 1); + ArrayList list = cloudFileMapper.queryByRecyclePage(pages, limit,data); + Integer count = cloudFileMapper.queryByRecyclePageCount(data); + return new PageList(list,page,limit,count); + } + @Override + public CloudFileVo getByData(ReqCloudFile data) { + return cloudFileMapper.getData(data); + } + + @Override + public int saveData(ReqCloudFile data) { + LocalDateTime localDateTime = LocalDateTime.now(); + CloudFile saveData = new CloudFile(); + saveData.setFileName(data.getFileName()); + saveData.setFileFormat(CloudCode.FOLDER_NAME.getCode()); + saveData.setFileFolder(Integer.valueOf(SystemCode.FOLDER_Y.getCode())); + saveData.setFileImage(CloudCode.FOLDER_IMAGE.getCode()); + saveData.setFileSort(0); + + if(data.getFileParentId().equals("0")){ + saveData.setFileTopId(Long.valueOf("0")); + saveData.setFileParentId(Long.valueOf("0")); + }else{ + saveData.setFileTopId(Long.valueOf(data.getFileParentId())); + saveData.setFileParentId(Long.valueOf(data.getFileParentId())); + } + SysUser sysUser = sysUserMapper.selectById(StpUtil.getLoginIdAsInt()); + saveData.setCreatorId(sysUser.getId()); + saveData.setCreatorName(sysUser.getUsername()); + saveData.setCreateTime(localDateTime); + if(cloudFileMapper.insert(saveData)==1){ + for (Integer userId:data.getIds()) { + CloudFileRole cloudFileRole = new CloudFileRole(); + cloudFileRole.setFileId(saveData.getId()); + cloudFileRole.setUserId(userId); + cloudFileRoleMapper.insert(cloudFileRole); + } + return 1; + } + return 0; + } + + + @Override + public int saveFileData(ReqCloudFile data) { + LocalDateTime localDateTime = LocalDateTime.now(); + CloudFile saveData = new CloudFile(); + String[] file = data.getFileName().split("\\."); + String fileName = null; + String format = null; + if(file.length>0) { + fileName = file[0].toString(); + format = file[1].toString(); + saveData.setFileName(fileName); + saveData.setFileFormat(format); + + } + saveData.setFileTop(0); + saveData.setFileName(fileName); + saveData.setFileFormat(format); + saveData.setFileFolder(Integer.valueOf(SystemCode.FOLDER_N.getCode())); + saveData.setFileImage(CloudCode.PDF_IMAGE.getCode()); + saveData.setFileSort(0); + saveData.setFileSize(data.getFileSize()); + saveData.setFileOss(data.getFileOss()); + if(data.getFileParentId().equals("0")){ + saveData.setFileTopId(Long.valueOf("0")); + saveData.setFileParentId(Long.valueOf("0")); + }else{ + saveData.setFileTopId(Long.valueOf(data.getFileParentId())); + saveData.setFileParentId(Long.valueOf(data.getFileParentId())); + } + SysUser sysUser = sysUserMapper.selectById(StpUtil.getLoginIdAsInt()); + saveData.setCreatorId(sysUser.getId()); + saveData.setCreatorName(sysUser.getUsername()); + saveData.setCreateTime(localDateTime); + if(cloudFileMapper.insert(saveData)==1){ + + + ReqCloudFileTrace reqCloudFileTrace = new ReqCloudFileTrace(); + reqCloudFileTrace.setFileId(saveData.getId().toString()); + reqCloudFileTrace.setTraceName("上传了 "+fileName+" 文件"); + iCloudFileTraceService.saveData(reqCloudFileTrace); + + + return 1; + } + return 0; + } + + @Override + public int updateFileData(ReqCloudFile data) { + LocalDateTime localDateTime = LocalDateTime.now(); + CloudFile saveData = cloudFileMapper.selectById(data.getId()); + saveData.setFileOss(data.getFileOss()); + saveData.setFileSize(data.getFileSize()); + SysUser sysUser = sysUserMapper.selectById(StpUtil.getLoginIdAsInt()); + saveData.setUpdaterId(sysUser.getId()); + saveData.setUpdaterName(sysUser.getUsername()); + saveData.setUpdateTime(localDateTime); + if(cloudFileMapper.updateById(saveData)==1){ + + ReqCloudFileTrace reqCloudFileTrace = new ReqCloudFileTrace(); + reqCloudFileTrace.setFileId(saveData.getId().toString()); + reqCloudFileTrace.setTraceName("替换了 "+saveData.getFileName()+" 文件"); + iCloudFileTraceService.saveData(reqCloudFileTrace); + + return 1; + } + return 0; + } + + + @Override + public int updateData(ReqCloudFile data) { + LocalDateTime localDateTime = LocalDateTime.now(); + + CloudFile updateData = new CloudFile(); + updateData.setId(Long.valueOf(data.getId())); + updateData.setFileName(data.getFileName()); + + + SysUser sysUser = sysUserMapper.selectById(StpUtil.getLoginIdAsInt()); + updateData.setUpdateTime(localDateTime); + updateData.setUpdaterId(sysUser.getId()); + updateData.setUpdaterName(sysUser.getUsername()); + if(cloudFileMapper.updateById(updateData)==1){ + + List roleList = cloudFileRoleMapper.getFileRole(data.getId()); + for (CloudFileRoleVo cloudFileRoleVo:roleList) { + cloudFileRoleMapper.deleteById(cloudFileRoleVo.getId()); + } + + if(null!=data.getIds()){ + for (Integer userId:data.getIds()) { + CloudFileRole cloudFileRole = new CloudFileRole(); + cloudFileRole.setFileId(updateData.getId()); + cloudFileRole.setUserId(userId); + cloudFileRoleMapper.insert(cloudFileRole); + } + } + + + + return 1; + } + return 0; + } + @Override + public int recover(String id) { + LocalDateTime localDateTime = LocalDateTime.now(); + + CloudFile updateData = cloudFileMapper.selectById(id); + updateData.setDeleteId(null); + updateData.setDeleteName(null); + updateData.setDeleteTime(null); + + SysUser sysUser = sysUserMapper.selectById(StpUtil.getLoginIdAsInt()); + updateData.setUpdateTime(localDateTime); + updateData.setUpdaterId(sysUser.getId()); + updateData.setUpdaterName(sysUser.getUsername()); + if(cloudFileMapper.updateById(updateData)==1){ + + ReqCloudFileTrace reqCloudFileTrace = new ReqCloudFileTrace(); + reqCloudFileTrace.setFileId(id); + reqCloudFileTrace.setTraceName("恢复了 "+updateData.getFileName()+" 文件"); + iCloudFileTraceService.saveData(reqCloudFileTrace); + + return 1; + } + return 0; + } + @Override + public int deleteById(String id) { + if (null == id) { + throw new ServiceException("删除的ID不能为空!"); + } + LocalDateTime localDateTime = LocalDateTime.now(); + SysUser sysUser = sysUserMapper.selectById(StpUtil.getLoginIdAsInt()); + CloudFile data = cloudFileMapper.selectById(id); + if(null!=data){ + data.setDeleteId(sysUser.getId()); + data.setDeleteName(sysUser.getUsername()); + data.setDeleteTime(localDateTime); + + + ReqCloudFileTrace reqCloudFileTrace = new ReqCloudFileTrace(); + reqCloudFileTrace.setFileId(id); + reqCloudFileTrace.setTraceName("删除了 "+data.getFileName()+" 文件"); + iCloudFileTraceService.saveData(reqCloudFileTrace); + return cloudFileMapper.updateById(data); + }else{ + return 0; + } + } + + @Override + public int[] changeDeleteStatus(Integer newStatus, String[] ids) { + /// 信息不能为空 + if (null == newStatus || null == ids) { + throw new ServiceException("新状态或ID不能为空"); + } + // 新状态只能为 0 | 1 + if (newStatus == 0 || newStatus == 1) { + int[] result = new int[2]; + for (String id : ids) { + CloudFile data = cloudFileMapper.selectById(id); + data.setFileTop(newStatus); + if (cloudFileMapper.updateById(data) > 0) { + result[0]++; + } else result[1]++; + } + // 返回结果 + return result; + } else { + throw new ServiceException("新状态只能为0或1!"); + } + } + + @Override + public PageList queryByIndexPage(Integer page, Integer limit, ReqCloudFile data) { + Integer pages = limit * (page - 1); + ArrayList list = cloudFileMapper.queryByIndexPage(pages, limit,data); + Integer count = cloudFileMapper.queryByIndexPageCount(data); + return new PageList(list,page,limit,count); + } + + + @Override + public List queryFileByData(ReqCloudFile data) { + return cloudFileMapper.queryFileByData(data); + } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/trace/CloudFileTraceServiceImpl.java b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/trace/CloudFileTraceServiceImpl.java new file mode 100644 index 0000000..7e72543 --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/service/impl/cloud/trace/CloudFileTraceServiceImpl.java @@ -0,0 +1,59 @@ +package com.zxdmy.excite.system.service.impl.cloud.trace; + +import cn.dev33.satoken.stp.StpUtil; +import com.zxdmy.excite.common.entity.PageList; +import com.zxdmy.excite.system.entity.SysUser; +import com.zxdmy.excite.system.entity.cloud.lately.CloudUserLately; +import com.zxdmy.excite.system.entity.cloud.trace.CloudFileTrace; +import com.zxdmy.excite.system.entity.req.lately.ReqCloudUserLately; +import com.zxdmy.excite.system.entity.req.trace.ReqCloudFileTrace; +import com.zxdmy.excite.system.entity.vo.space.CloudFileVo; +import com.zxdmy.excite.system.entity.vo.trace.CloudFileTraceVo; +import com.zxdmy.excite.system.mapper.SysUserMapper; +import com.zxdmy.excite.system.mapper.cloud.trace.CloudFileTraceMapper; +import com.zxdmy.excite.system.service.cloud.trace.ICloudFileTraceService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.ArrayList; + +/** + *

                          + * 文件痕迹 服务实现类 + *

                          + * + * @author 沈松 + * @since 2026-01-29 + */ +@Service +@AllArgsConstructor +public class CloudFileTraceServiceImpl extends ServiceImpl implements ICloudFileTraceService { + CloudFileTraceMapper cloudFileTraceMapper; + SysUserMapper sysUserMapper; + + @Override + public PageList queryByPage(Integer page, Integer limit, ReqCloudFileTrace data) { + Integer pages = limit * (page - 1); + ArrayList list = cloudFileTraceMapper.queryByPage(pages, limit,data); + Integer count = cloudFileTraceMapper.queryByPageCount(data); + return new PageList(list,page,limit,count); + } + + @Override + public int saveData(ReqCloudFileTrace data) { + LocalDateTime localDateTime = LocalDateTime.now(); + CloudFileTrace saveData = new CloudFileTrace(); + SysUser sysUser = sysUserMapper.selectById(StpUtil.getLoginIdAsInt()); + saveData.setTraceName(data.getTraceName()); + saveData.setFileId(Long.valueOf(data.getFileId())); + saveData.setTraceCreatorId(sysUser.getId()); + saveData.setTraceCreatorName(sysUser.getUsername()); + saveData.setCreateTime(localDateTime); + if(cloudFileTraceMapper.insert(saveData)==1){ + return 1; + } + return 0; + } +} diff --git a/ss-system/src/main/java/com/zxdmy/excite/system/utils/AuthUtils.java b/ss-system/src/main/java/com/zxdmy/excite/system/utils/AuthUtils.java new file mode 100644 index 0000000..82ff1ee --- /dev/null +++ b/ss-system/src/main/java/com/zxdmy/excite/system/utils/AuthUtils.java @@ -0,0 +1,147 @@ +package com.zxdmy.excite.system.utils; + +import com.zxdmy.excite.common.config.ExciteConfig; +import com.zxdmy.excite.common.service.RedisService; +import com.zxdmy.excite.system.entity.SysMenu; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.io.Serializable; +import java.util.List; + +/** + * 授权工具类(权限清理工具) + * + * @author 沈松 + * @since 2022/1/20 17:34 + */ +@Component +@AllArgsConstructor +public class AuthUtils { + + private RedisService redisService1; + + private ExciteConfig exciteConfig1; + + private static RedisService redisService; + + private static ExciteConfig exciteConfig; + + @PostConstruct + public void init() { + redisService = redisService1; + exciteConfig = exciteConfig1; + } + + /** + * 系统权限列表 默认 KEY + */ + private static final String SYSTEM_MENUS_KEY = "menu:systemMenuList"; + + /** + * 用户权限列表 默认 KEY的 前缀 + */ + private static final String USER_MENU_KEY = "menu:userMenuList:"; + + + /** + * 保存【系统权限列表】至缓存 + * + * @param isSuccess 执行条件 + * @param menuList 菜单列表 + */ + public static void setSystemMenuListCache(boolean isSuccess, List menuList) { + if (exciteConfig.getAllowRedis() && isSuccess) { + redisService.set(SYSTEM_MENUS_KEY, (Serializable) menuList); + } + } + + /** + * 保存【用户权限列表】至缓存 + * + * @param isSuccess 执行条件 + * @param userId 用户ID + * @param menuList 权限列表 + */ + public static void setUserMenuListCache(boolean isSuccess, Integer userId, List menuList) { + if (exciteConfig.getAllowRedis() && isSuccess) { + redisService.set(USER_MENU_KEY + userId, (Serializable) menuList, 7200L); + } + } + + /** + * 从缓存读取【系统权限列表】 + * + * @param isSuccess 执行条件 + * @return 结果:null | List + */ + public static List getSystemMenuListCache(boolean isSuccess) { + if (exciteConfig.getAllowRedis() && isSuccess) { + return (List) redisService.get(SYSTEM_MENUS_KEY); + } + return null; + } + + /** + * 从缓存读取【用户权限列表】 + * + * @param isSuccess 执行条件 + * @param userId 用户ID + * @return 结果:null | List + */ + public static List getUserMenuListCache(boolean isSuccess, Integer userId) { + if (exciteConfig.getAllowRedis() && isSuccess) { + return (List) redisService.get(USER_MENU_KEY + userId); + } + return null; + } + + /** + * 清除【系统权限列表】的缓存 + * + * @param isSuccess 执行条件,为真则执行 + */ + public static void clearSystemMenuListCache(boolean isSuccess) { + if (exciteConfig.getAllowRedis() && isSuccess) { + redisService.remove(SYSTEM_MENUS_KEY); + } + } + + /** + * 清除全部【用户权限列表】的缓存 + * + * @param isSuccess 执行条件,为真则执行 + */ + public static void clearUserMenuListCache(boolean isSuccess) { + if (exciteConfig.getAllowRedis() && isSuccess) { + redisService.removeByPrefix(USER_MENU_KEY); + } + } + + /** + * 清除指定【用户权限列表】的缓存 + * + * @param isSuccess 执行条件,为真则执行 + * @param userId 要清除的用户ID + */ + public static void clearUserMenuListCacheById(boolean isSuccess, Integer userId) { + if (exciteConfig.getAllowRedis() && isSuccess) { + redisService.remove(USER_MENU_KEY + userId); + } + } + + /** + * 清除指定【用户权限列表】的缓存(批量删除) + * + * @param isSuccess 执行条件,为真则执行 + * @param userIds 要清除的用户ID列表 + */ + public static void clearUserMenuListCacheById(boolean isSuccess, Integer[] userIds) { + if (exciteConfig.getAllowRedis() && isSuccess && userIds.length > 0) { + for (int userId : userIds) { + redisService.remove(USER_MENU_KEY + userId); + } + } + } +} diff --git a/ss-system/src/main/resources/mapper/SysLogLoginMapper.xml b/ss-system/src/main/resources/mapper/SysLogLoginMapper.xml new file mode 100644 index 0000000..cd115d2 --- /dev/null +++ b/ss-system/src/main/resources/mapper/SysLogLoginMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + id, user_id, user_account, ip, user_agent, req_data, res_data, time_cost, status, create_time, update_time, delete_time + + + diff --git a/ss-system/src/main/resources/mapper/SysLogRequestMapper.xml b/ss-system/src/main/resources/mapper/SysLogRequestMapper.xml new file mode 100644 index 0000000..8179989 --- /dev/null +++ b/ss-system/src/main/resources/mapper/SysLogRequestMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id + , user_id, ip, user_agent, req_uri, req_method, req_function, req_data, res_data, time_cost, status, create_time, update_time, delete_time + + + diff --git a/ss-system/src/main/resources/mapper/SysMenuMapper.xml b/ss-system/src/main/resources/mapper/SysMenuMapper.xml new file mode 100644 index 0000000..f126a9e --- /dev/null +++ b/ss-system/src/main/resources/mapper/SysMenuMapper.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + id + , name, icon, path, permission, component, parent_id, type, sort, editable, removable, status, is_delete, create_time, update_time, delete_time + + + + + + + + + + diff --git a/ss-system/src/main/resources/mapper/SysRoleMapper.xml b/ss-system/src/main/resources/mapper/SysRoleMapper.xml new file mode 100644 index 0000000..658e76a --- /dev/null +++ b/ss-system/src/main/resources/mapper/SysRoleMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + id, name, permission, remark, sort, status,upload_role,down_role, is_delete, create_time, update_time, delete_time + + + diff --git a/ss-system/src/main/resources/mapper/SysRoleMenuMapper.xml b/ss-system/src/main/resources/mapper/SysRoleMenuMapper.xml new file mode 100644 index 0000000..f7a456c --- /dev/null +++ b/ss-system/src/main/resources/mapper/SysRoleMenuMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + id, role_id, menu_id + + + diff --git a/ss-system/src/main/resources/mapper/SysUserMapper.xml b/ss-system/src/main/resources/mapper/SysUserMapper.xml new file mode 100644 index 0000000..0a043ff --- /dev/null +++ b/ss-system/src/main/resources/mapper/SysUserMapper.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + id + , username, avatar, sex, login_name, phone, password, remark, status, login_ip, login_date, is_delete, create_time, update_time, delete_time + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ss-system/src/main/resources/mapper/SysUserRoleMapper.xml b/ss-system/src/main/resources/mapper/SysUserRoleMapper.xml new file mode 100644 index 0000000..ef9f6d6 --- /dev/null +++ b/ss-system/src/main/resources/mapper/SysUserRoleMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + id, user_id, role_id + + + diff --git a/ss-system/src/main/resources/mapper/cloud/account/CloudCompanyMapper.xml b/ss-system/src/main/resources/mapper/cloud/account/CloudCompanyMapper.xml new file mode 100644 index 0000000..f47f84a --- /dev/null +++ b/ss-system/src/main/resources/mapper/cloud/account/CloudCompanyMapper.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + id, company_name, company_sort, create_time, creator_id, creator_name, delete_time, delete_id, delete_name + + + + + + + + + + + + + + + diff --git a/ss-system/src/main/resources/mapper/cloud/account/CloudDepartmentMapper.xml b/ss-system/src/main/resources/mapper/cloud/account/CloudDepartmentMapper.xml new file mode 100644 index 0000000..a8744af --- /dev/null +++ b/ss-system/src/main/resources/mapper/cloud/account/CloudDepartmentMapper.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + id, department_name, department_sort, department_parent_id,company_id, create_time, creator_id, creator_name, delete_time, delete_id, delete_name + + + + + + + + + + + + + + + diff --git a/ss-system/src/main/resources/mapper/cloud/account/CloudDepartmentUserMapper.xml b/ss-system/src/main/resources/mapper/cloud/account/CloudDepartmentUserMapper.xml new file mode 100644 index 0000000..d108ec9 --- /dev/null +++ b/ss-system/src/main/resources/mapper/cloud/account/CloudDepartmentUserMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + id, department_id, user_id + + + + + diff --git a/ss-system/src/main/resources/mapper/cloud/collection/CloudUserCollectionMapper.xml b/ss-system/src/main/resources/mapper/cloud/collection/CloudUserCollectionMapper.xml new file mode 100644 index 0000000..c5247fa --- /dev/null +++ b/ss-system/src/main/resources/mapper/cloud/collection/CloudUserCollectionMapper.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + id, file_id, user_id, create_time + + + + + + + + + diff --git a/ss-system/src/main/resources/mapper/cloud/lately/CloudUserLatelyMapper.xml b/ss-system/src/main/resources/mapper/cloud/lately/CloudUserLatelyMapper.xml new file mode 100644 index 0000000..e56a6c9 --- /dev/null +++ b/ss-system/src/main/resources/mapper/cloud/lately/CloudUserLatelyMapper.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + id, file_id, user_id, create_time, lately_time + + + + + + + + + + diff --git a/ss-system/src/main/resources/mapper/cloud/role/CloudRoleFileMapper.xml b/ss-system/src/main/resources/mapper/cloud/role/CloudRoleFileMapper.xml new file mode 100644 index 0000000..97b2c41 --- /dev/null +++ b/ss-system/src/main/resources/mapper/cloud/role/CloudRoleFileMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + id, role_id, file_id + + + diff --git a/ss-system/src/main/resources/mapper/cloud/role/CloudRoleMapper.xml b/ss-system/src/main/resources/mapper/cloud/role/CloudRoleMapper.xml new file mode 100644 index 0000000..9697bf2 --- /dev/null +++ b/ss-system/src/main/resources/mapper/cloud/role/CloudRoleMapper.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + id, role_name, role_upload, role_down,role_delete, create_time, creator_id, creator_name, delete_time, delete_id, delete_name + + + + + + + + + + + + diff --git a/ss-system/src/main/resources/mapper/cloud/role/CloudRoleUserMapper.xml b/ss-system/src/main/resources/mapper/cloud/role/CloudRoleUserMapper.xml new file mode 100644 index 0000000..b778652 --- /dev/null +++ b/ss-system/src/main/resources/mapper/cloud/role/CloudRoleUserMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + id, role_id, user_id + + + diff --git a/ss-system/src/main/resources/mapper/cloud/space/CloudFileMapper.xml b/ss-system/src/main/resources/mapper/cloud/space/CloudFileMapper.xml new file mode 100644 index 0000000..fb191f5 --- /dev/null +++ b/ss-system/src/main/resources/mapper/cloud/space/CloudFileMapper.xml @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, file_name, file_size, file_format, file_oss, file_image, file_sort, file_folder, file_parent_id, file_top_id, file_folder_path, create_time, creator_id, creator_name, update_time, updater_id, updater_name, delete_time, delete_id, delete_name,file_top + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ss-system/src/main/resources/mapper/cloud/space/CloudFileRoleMapper.xml b/ss-system/src/main/resources/mapper/cloud/space/CloudFileRoleMapper.xml new file mode 100644 index 0000000..ef38954 --- /dev/null +++ b/ss-system/src/main/resources/mapper/cloud/space/CloudFileRoleMapper.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + id, file_id, user_id + + + + + + + + + + diff --git a/ss-system/src/main/resources/mapper/cloud/trace/CloudFileTraceMapper.xml b/ss-system/src/main/resources/mapper/cloud/trace/CloudFileTraceMapper.xml new file mode 100644 index 0000000..709a3a9 --- /dev/null +++ b/ss-system/src/main/resources/mapper/cloud/trace/CloudFileTraceMapper.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + id, trace_name, trace_creator_id, trace_creator_name, create_time, file_id + + + + + + +