From 4de97fa88d5f0422f184663d16d46c435c776ece Mon Sep 17 00:00:00 2001 From: liaozetao <1107136310@qq.com> Date: Thu, 9 Nov 2023 10:23:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .browserslistrc | 4 + .env | 0 .env.development | 2 + .env.production | 2 + .eslintrc.js | 21 + .gitignore | 23 + README.md | 23 + babel.config.js | 5 + jsconfig.json | 19 + package-lock.json | 11366 ++++++++++++++++ package.json | 41 + public/favicon.ico | Bin 0 -> 1114 bytes public/index.html | 29 + src/App.vue | 36 + src/api/common/menu.js | 8 + src/api/common/user.js | 15 + src/api/system/sysconf.js | 8 + src/assets/images/backgrounds/Thumbs.db | Bin 0 -> 7680 bytes src/assets/images/backgrounds/b1.jpg | Bin 0 -> 92454 bytes src/assets/images/backgrounds/b2.jpg | Bin 0 -> 97283 bytes src/assets/images/backgrounds/b3.jpg | Bin 0 -> 86173 bytes src/assets/images/backgrounds/b4.jpg | Bin 0 -> 77194 bytes src/assets/images/default.png | Bin 0 -> 4445 bytes src/assets/images/loading.gif | Bin 0 -> 3897 bytes src/assets/images/login_bg.png | Bin 0 -> 150 bytes src/assets/images/logo.png | Bin 0 -> 19068 bytes src/assets/images/woman.jpg | Bin 0 -> 7480 bytes .../css/bootstrap-combobox.css | 55 + .../js/bootstrap-combobox-helper.js | 62 + .../js/bootstrap-combobox.js | 493 + .../bootstrap-datepicker/css/datepicker3.css | 853 ++ .../js/bootstrap-datepicker.js | 2046 +++ .../css/bootstrap-datetimepicker.css | 419 + .../js/bootstrap-datetimepicker.min.js | 1694 +++ .../locales/bootstrap-datetimepicker.zh-CN.js | 14 + .../css/bootstrap-multiselect.css | 190 + .../js/bootstrap-multiselect.js | 2017 +++ .../bootstrap-select/css/bootstrap-select.css | 337 + .../bootstrap-select/js/bootstrap-select.js | 1738 +++ .../bootstrap-table/css/bootstrap-table.css | 303 + .../bootstrap-table/js/bootstrap-table.js | 2823 ++++ .../editable/bootstrap-table-editable.js | 146 + .../js/locale/bootstrap-table-zh-CN.js | 60 + .../css/bootstrap-treeview.min.css | 18 + .../js/bootstrap-treeview.min.js | 593 + .../plugins/clipboard/js/clipboard.min.js | 562 + .../css/validationEngine.jquery.css | 196 + .../js/jquery.validationEngine.js | 2163 +++ .../jquery.validationEngine-zh_CN.js | 181 + src/assets/plugins/jquery/jquery.form.js | 1280 ++ src/components/footer/index.vue | 20 + src/components/header/index.vue | 95 + src/components/maintainer/index.vue | 209 + src/constants/global.js | 8 + src/css/login.css | 216 + src/css/main.css | 9 + src/css/supersized.css | 99 + src/main.js | 52 + src/router/index.js | 29 + src/store/index.js | 25 + src/store/modules/menu.js | 62 + src/store/modules/user.js | 85 + src/utils/ajaxfileupload.js | 206 + src/utils/bootstrap-table-helper.js | 42 + src/utils/components.js | 14 + src/utils/date.js | 49 + src/utils/maintainer.js | 59 + src/utils/notify.js | 59 + src/utils/request.js | 51 + src/utils/store.js | 118 + src/utils/string.js | 29 + src/utils/system-helper.js | 6 + src/utils/validate.js | 20 + src/views/BlankView.vue | 24 + src/views/OperationSmsAdminView.vue | 386 + src/views/QiniuUploadAdminView.vue | 193 + src/views/TencentUploadAdminView.vue | 194 + .../activity/ActTwelveStarConfigAdminView.vue | 551 + src/views/activity/ActivityAwardAdminView.vue | 617 + src/views/activity/ActivityPackAdminView.vue | 757 + .../activity/ChargeActivityAdminView.vue | 1128 ++ .../activity/FamilyPkManageAdminView.vue | 568 + src/views/activity/LuckySeaItemAdminView.vue | 549 + .../activity/LuckySeaPlatformAdminView.vue | 166 + .../activity/LuckySeaRecordAdminView.vue | 285 + .../activity/LuckySeaUserstatAdminView.vue | 131 + src/views/activity/OperationActAdminView.vue | 272 + src/views/activity/PageActivityView.vue | 264 + .../activity/UserDrawRecordAdminView.vue | 161 + .../activity/WeekStarConfigAdminView.vue | 413 + .../DrawLotteryStatsDetailView.vue | 216 + .../DrawLotteryStatsView.vue | 212 + .../LinearlyStatsDetailView.vue | 226 + .../activitystatistic/LinearlyStatsView.vue | 212 + .../SingleHeartbeatDarwView.vue | 168 + .../SuperAdminOperateRecordView.vue | 190 + src/views/administrator/SuperAdminView.vue | 207 + src/views/anchor/AnchorAdminView.vue | 252 + src/views/anchor/AnchorBillCheckView.vue | 241 + src/views/anchor/AnchorBillUploadView.vue | 261 + src/views/anchor/AnchorFansMpAudioView.vue | 292 + src/views/anchor/AnchorFansPrivilegeView.vue | 470 + src/views/anchor/AnchorFansTeamStatsView.vue | 210 + src/views/anchor/AnchorReleaseGoldView.vue | 270 + src/views/anchor/LevelStatisticsView.vue | 185 + src/views/app/AppBottomBarAdminView.vue | 973 ++ src/views/app/AppUpdateView.vue | 432 + src/views/auditaudio/AuditAudioView.vue | 540 + src/views/auditaudio/MonitorRuleView.vue | 150 + src/views/background/BackgroundView.vue | 398 + src/views/blinddate/BlindDateCapAdminView.vue | 394 + .../blinddate/BlindDateJoinhandAdminView.vue | 501 + .../callbattle/ActCallBattleItemAdminView.vue | 642 + .../ActCallBattlePlatformAdminView.vue | 158 + .../ActCallBattleRecordAdminView.vue | 286 + .../ActCallBattleUserstatAdminView.vue | 131 + src/views/car/CarAdminView.vue | 284 + src/views/car/CarGoodsAdminView.vue | 989 ++ src/views/car/CarRecordView.vue | 133 + src/views/car/CarStatisticsView.vue | 125 + .../ChannelContentPartitionAdminView.vue | 471 + .../charge/FirstChargeRewardConfigView.vue | 471 + .../charge/FirstChargeRewardRecordView.vue | 253 + .../LimitFirstChargeRewardRecordView.vue | 217 + src/views/charge/RedeemcodeAdminView.vue | 195 + src/views/chatbubble/ChatbubbleManageView.vue | 468 + src/views/chatbubble/ChatbubbleRecordView.vue | 245 + src/views/cleanup/CleanupAdminView.vue | 62 + src/views/discovery/DiscoveryAdminView.vue | 751 + src/views/dressShop/DressShopAdminView.vue | 380 + src/views/face/FaceJsonAdminView.vue | 870 ++ src/views/family/FamilyAdminView.vue | 757 + src/views/family/FamilyMemberAdminView.vue | 202 + src/views/family/FamilyMoneyAdminView.vue | 469 + src/views/family/FamilyStatisticsView.vue | 144 + src/views/finance/FinanceStatisticsView.vue | 186 + .../firstpage/FirstPageActivityBannerView.vue | 980 ++ src/views/firstpage/FirstPageBannerView.vue | 998 ++ src/views/firstpage/FirstPageOptView.vue | 359 + src/views/firstpage/FirstPageTabRoomView.vue | 570 + src/views/firstpage/FirstPageTabView.vue | 490 + .../firstpage/RecommendResourceAdminView.vue | 795 ++ .../firstpage/RecommendRoomAdminView.vue | 323 + .../flowteam/FlowTeamGroupManageView.vue | 469 + .../flowteam/FlowTeamInvitecodeManageView.vue | 392 + .../flowteam/FlowTeamMemberAdminView.vue | 461 + src/views/flowteam/FlowTeamSettlementView.vue | 337 + src/views/flowteam/FlowTeamStatisticView.vue | 765 ++ src/views/flowteam/RefillInviteCodeView.vue | 272 + src/views/game/GameAccessUrlView.vue | 328 + src/views/game/GameActivityRankView.vue | 762 ++ src/views/game/GameChannelView.vue | 356 + src/views/game/GameFaceView.vue | 385 + src/views/game/GameInfoView.vue | 886 ++ .../gamemanage/GameBillRecordAdminView.vue | 202 + src/views/gamemanage/GameManageBannerView.vue | 993 ++ .../GameManageChannelTicketView.vue | 525 + .../gamemanage/GameManageGiveTicketView.vue | 99 + .../gamemanage/GameManageGroupAdminView.vue | 376 + .../gamemanage/GameManageInfoAdminView.vue | 1191 ++ .../GameManageQuickGameInfoAdminView.vue | 1288 ++ .../gamemanage/GameManageTicketAccessView.vue | 298 + .../GameManageTicketHistoryAdminView.vue | 221 + .../GameManageWithdrawAdminView.vue | 565 + src/views/gamemanage/TicketManageView.vue | 369 + .../GamePartnerOrderDetailView.vue | 230 + .../gamepartner/GamePartnerOrderView.vue | 175 + .../UserGamePartnerInfoAdminView.vue | 450 + .../giftwall/GiftAchievementAdminView.vue | 590 + .../GiftAchievementStatisticsAdminView.vue | 205 + .../giftwall/GiftAchievementTypeAdminView.vue | 441 + src/views/guild/GuildRoomAdminView.vue | 502 + src/views/hall/ClanAdminView.vue | 692 + src/views/hall/ClanFlowStatisAdminView.vue | 332 + src/views/hall/ClanLevelSettingView.vue | 396 + src/views/hall/HallAdminView.vue | 134 + src/views/hall/HallMemberView.vue | 333 + src/views/headwear/HeadwearAdminView.vue | 859 ++ src/views/headwear/HeadwearRecordView.vue | 182 + src/views/headwear/HeadwearStatisticsView.vue | 128 + src/views/home/BannerAdminView.vue | 967 ++ src/views/home/ChatpickAdminView.vue | 209 + src/views/home/PanelAdminView.vue | 356 + src/views/home/RecommandAdminView.vue | 343 + src/views/home/RisingStarAdminView.vue | 647 + src/views/home/index.vue | 26 + src/views/infocard/InfocardManageView.vue | 450 + src/views/infocard/InfocardRecordView.vue | 245 + src/views/ktv/MusicErrorAdminView.vue | 207 + src/views/ktv/MusicLibraryAdminView.vue | 432 + .../PlatformPrizeDataAdminDayView.vue | 271 + .../PlatformPrizeDataAdminView.vue | 271 + src/views/linearlypool/PoolItemAdminView.vue | 868 ++ .../PoolItemShowratioAdminView.vue | 482 + .../linearlypool/PrizeDrawRecordAdminView.vue | 141 + .../linearlypool/UserPrizeDataAdminView.vue | 155 + src/views/live101/ApplyAdminView.vue | 452 + src/views/live101/IdentityAdminView.vue | 438 + src/views/live101/OptRecordAdminView.vue | 418 + src/views/live101/SkillTagAdminView.vue | 756 + src/views/login/index.vue | 232 + src/views/luckybag/LuckyBagPoolView.vue | 486 + src/views/luckybag/LuckyBagRecordView.vue | 181 + src/views/luckybag/LuckyBagStatsView.vue | 219 + src/views/match/HpjyGameManageView.vue | 574 + src/views/mentor/MentorAdminView.vue | 101 + src/views/monster/MonsterAdminView.vue | 393 + src/views/monster/MonsterKindAdminView.vue | 513 + src/views/monster/MonsterTaskAdminView.vue | 259 + .../NameplateAuditRecordAdminView.vue | 329 + src/views/nameplate/NameplateInfoView.vue | 625 + src/views/nameplate/NameplateRecordView.vue | 220 + src/views/nameplate/NameplateStyleView.vue | 618 + .../newLuckyBag/LuckyBagLinearPoolView.vue | 788 ++ src/views/newLuckyBag/LuckyBagManageView.vue | 1423 ++ .../NewLuckyBagDeviateRangeView.vue | 270 + .../newLuckyBag/NewLuckyBagDeviateView.vue | 490 + .../newLuckyBag/NewLuckyBagRecordView.vue | 181 + .../newLuckyBag/NewLuckyBagStatsView.vue | 173 + .../newuser/NewUserInRoomGiftAdminView.vue | 414 + .../newuserstart/NewUserSayHelloAdminView.vue | 736 + .../newwithdraw/UserWithdrawInfoView.vue | 183 + src/views/newwithdraw/WithdrawConfigView.vue | 717 + src/views/newwithdraw/WithdrawRecordView.vue | 599 + src/views/noble/NobleAdminView.vue | 503 + src/views/noble/NobleExperAdminView.vue | 202 + src/views/noble/NoblePrivilegeAdminView.vue | 240 + src/views/noble/PrivilegeAdminView.vue | 240 + src/views/noble/ResourceAdminView.vue | 830 ++ .../PersonalCenterAdminView.vue | 352 + src/views/picture/AdminPictureView.vue | 459 + src/views/pretty/PrettyNoAdminView.vue | 651 + src/views/pretty/PrettyNoRecordAdminView.vue | 150 + src/views/pretty/PrettynoCheckView.vue | 322 + .../privilege/RoomPrivilegeCardCheckView.vue | 369 + src/views/privilege/RoomPrivilegeCardView.vue | 468 + .../prize/DeviateRangeManageAdminView.vue | 247 + src/views/prize/PrizeAdminView.vue | 826 ++ src/views/prize/PrizeDataAdminExcludeView.vue | 258 + src/views/prize/PrizeDataAdminNewView.vue | 315 + src/views/prize/PrizeDataAdminView.vue | 315 + src/views/prize/PrizeManageAdminView.vue | 752 + src/views/prize/PrizeRecordAdminView.vue | 159 + src/views/prize/PrizeStatisAdminView.vue | 284 + src/views/prize/PrizeStatsAdminNewView.vue | 284 + src/views/prize/UserCardsManageView.vue | 464 + src/views/radish/RadishGiftStatisticsView.vue | 122 + .../recommend/RecommendOccupyAdminView.vue | 294 + .../recommend/RecommendRecordAdminView.vue | 475 + src/views/record/ChargeRecordView.vue | 189 + src/views/record/OfficialGoldBusTypeView.vue | 273 + src/views/record/OfficialRadishView.vue | 281 + src/views/record/OfficicalGoldRecordView.vue | 171 + src/views/record/OfficicalGoldView.vue | 464 + src/views/record/OfficicalKeyView.vue | 391 + src/views/redenvelope/RedEnvelopeView.vue | 297 + src/views/room/AutoSayHelloView.vue | 341 + src/views/room/CrossRoomPkAdminView.vue | 351 + src/views/room/CrossRoomPkingAdminView.vue | 338 + src/views/room/HomePermitView.vue | 99 + src/views/room/HomeRecommView.vue | 165 + src/views/room/HomeRiseAdminView.vue | 299 + src/views/room/MiniGameStatisAdminView.vue | 364 + src/views/room/PrivateChatItemView.vue | 325 + src/views/room/RoomActAdminView.vue | 426 + src/views/room/RoomCardView.vue | 262 + src/views/room/RoomChatPartyView.vue | 302 + src/views/room/RoomDiversionAdminView.vue | 368 + src/views/room/RoomHideHomeView.vue | 256 + src/views/room/RoomInsideRecommendView.vue | 292 + src/views/room/RoomInviteView.vue | 250 + src/views/room/RoomRecommendAdminView.vue | 564 + src/views/room/RoomRecommendRoomAdminView.vue | 500 + src/views/room/RoomSearchAdminView.vue | 1133 ++ src/views/room/RoomSerialView.vue | 296 + src/views/room/RoomTabHomeView.vue | 342 + src/views/room/RoomTabMapView.vue | 423 + src/views/room/RoomTabView.vue | 311 + src/views/room/RoomUidExchangeView.vue | 171 + src/views/room/RoomUnchangeAdminView.vue | 228 + src/views/room/RoomVisitorView.vue | 449 + src/views/room/RoompoolAdminView.vue | 229 + src/views/room/RoomtagAdminView.vue | 468 + .../room/RoomtagspecialconfigAdminView.vue | 486 + src/views/room/ShortcutRoomView.vue | 429 + src/views/room/SingleBroadcastRoomView.vue | 219 + src/views/room/SingleRoomSortView.vue | 284 + .../seekelfin/SeekElfinItemAdminView.vue | 583 + .../seekelfin/SeekElfinPlatformAdminView.vue | 157 + .../SeekElfinUserRecordAdminView.vue | 219 + src/views/sensitive/SensitiveConfigView.vue | 331 + src/views/sign/DrawCountWhiteAdminView.vue | 241 + src/views/sign/DrawGoldAdminView.vue | 201 + src/views/sign/GoldPrizeAdminView.vue | 318 + src/views/sign/MissionConfigAdminView.vue | 472 + src/views/sign/PrizeGoldPoolAdminView.vue | 610 + src/views/sign/SignPrizeRecordAdminView.vue | 170 + src/views/sign/SignRecordAdminView.vue | 193 + src/views/sign/SignRewardConfigAdminView.vue | 487 + .../singleroompk/SingleRoomPkAdminView.vue | 351 + .../singleroompk/SingleRoomPkingAdminView.vue | 167 + .../skillcard/SkillCardAudioVerifyView.vue | 342 + src/views/statistic/ChannelCheckAdminView.vue | 309 + .../HallSingleRoomStatisAdminView.vue | 256 + src/views/statistic/LaborStatsView.vue | 216 + src/views/statistic/NewUserStatsView.vue | 151 + src/views/statistic/PermitRoomStatsView.vue | 160 + .../statistic/PermitRoomTimeRecordView.vue | 288 + .../statistic/RoomOptmizeStatisAdminView.vue | 268 + .../statistic/SingleLiveTimeRecordView.vue | 288 + src/views/statistic/SingleRoomStatsView.vue | 163 + .../statistic/UserChargeStatsDetailView.vue | 210 + src/views/statistic/UserChargeStatsView.vue | 199 + src/views/statistic/UserDetailAdminView.vue | 244 + .../statistic/UserGiftStatsDetailView.vue | 235 + src/views/statistic/UserGiftStatsView.vue | 229 + src/views/system/AppAdminView.vue | 248 + src/views/system/BlockAdminView.vue | 248 + src/views/system/BlockSearchUserAdminView.vue | 290 + .../system/ChannelDistributeAdminView.vue | 341 + src/views/system/CustomserviceAdminView.vue | 189 + src/views/system/DictAdminView.vue | 241 + src/views/system/MenuAdminView.vue | 265 + src/views/system/RoleAdminView.vue | 337 + src/views/system/SysconfAdminView.vue | 308 + src/views/system/UserAdminView.vue | 547 + src/views/system/UserLevelCharmAdminView.vue | 81 + src/views/system/VersionAdminView.vue | 702 + src/views/system/VersionConfigAdminView.vue | 434 + src/views/tarot/TarotChargeRecordView.vue | 139 + src/views/tarot/TarotChargeStatisView.vue | 118 + src/views/tarot/TarotChargeTotalView.vue | 183 + src/views/title/TitleAdminView.vue | 292 + src/views/title/TitleConfigView.vue | 349 + src/views/topline/ToplineAdminView.vue | 561 + src/views/userrole/UserRoleAdminView.vue | 293 + src/views/users/BackListAdminView.vue | 424 + src/views/users/BillRecordAdminView.vue | 208 + src/views/users/BillRecordGroupView.vue | 140 + src/views/users/BlockedAdminView.vue | 519 + .../users/ChargeRecordDailyStatisticsView.vue | 195 + .../users/ChargeRecordPersonalAdminView.vue | 249 + .../users/ChargeRecordTotalStatisticsView.vue | 215 + src/views/users/CommissionWhiteListView.vue | 302 + src/views/users/EveryOneSearchView.vue | 296 + src/views/users/FeedbackAdminView.vue | 124 + src/views/users/FrozenAdminView.vue | 303 + src/views/users/FrozenRecordAdminView.vue | 106 + src/views/users/GenAccountView.vue | 421 + src/views/users/GiftAdminView.vue | 163 + src/views/users/GiftCompoundView.vue | 286 + src/views/users/GiftLimitCompoundPoolView.vue | 344 + src/views/users/GiftLimitCompoundView.vue | 270 + src/views/users/GiftManageView.vue | 1550 +++ src/views/users/GiftNotifyConfigAdminView.vue | 307 + src/views/users/GiftSendRecordView.vue | 200 + src/views/users/GiftStatisticsView.vue | 131 + src/views/users/InviteCodeStatsView.vue | 157 + src/views/users/InviteCodeView.vue | 121 + src/views/users/MagicManageView.vue | 575 + src/views/users/MessageAdminView.vue | 572 + src/views/users/PasswordLockAdminView.vue | 118 + src/views/users/PhoneBlackAdminView.vue | 270 + src/views/users/SearchHijackView.vue | 383 + .../users/SpecialInviteCodeAdminView.vue | 195 + src/views/users/TopicBoxItemAdminView.vue | 266 + src/views/users/UserBackpackAdminView.vue | 154 + src/views/users/UserBankAdminView.vue | 323 + src/views/users/UserCancelView.vue | 431 + src/views/users/UserCertifyAdminView.vue | 198 + src/views/users/UserCheckAdminBaseView.vue | 521 + src/views/users/UserCheckAdminView.vue | 855 ++ .../users/UserCoupleStatisticsAdminView.vue | 387 + src/views/users/UserDrawProdAdminView.vue | 436 + src/views/users/UserImpeachAdminView.vue | 634 + src/views/users/UserImpeachSearchView.vue | 630 + src/views/users/UserMuteAdminView.vue | 201 + src/views/users/UserMuteRecordAdminView.vue | 232 + src/views/users/UserPasswordModifyView.vue | 86 + src/views/users/UserPurseAdminView.vue | 114 + src/views/users/UserRealNameAdminView.vue | 143 + src/views/users/UserRecordAdminView.vue | 246 + .../users/UserRelationPrivilegeAdminView.vue | 467 + .../users/UserRelationPropsAdminView.vue | 383 + src/views/users/WithdrawAdminView.vue | 564 + src/views/vip/VipAuthManageView.vue | 416 + src/views/vip/VipFaceView.vue | 413 + src/views/vip/VipGiftView.vue | 422 + src/views/vip/VipManageView.vue | 636 + src/views/vip/VipOpenRecordView.vue | 184 + src/views/vip/VipStatView.vue | 245 + src/views/voice/PiaDramaAdminView.vue | 519 + src/views/voice/VoiceVerifyAdminView.vue | 371 + src/views/wishgift/WishGiftConfigView.vue | 351 + src/views/wishgift/WishGiftStatView.vue | 256 + .../withdraw/PacketWithdrawAdminView.vue | 438 + src/views/withdraw/RoomFlowPayAdminView.vue | 507 + src/views/withdraw/WithdrawApplyView.vue | 448 + src/views/world/WorldAdminView.vue | 654 + src/views/world/WorldMemberAdminView.vue | 298 + src/views/world/WorldTypeAdminView.vue | 409 + .../world/community/CommentVerifyView.vue | 693 + src/views/world/community/DynamicDataView.vue | 834 ++ src/views/world/community/DynamicStatView.vue | 388 + .../world/community/DynamicVerifyView.vue | 561 + .../community/RecommendWorldAdminView.vue | 513 + vue.config.js | 42 + 407 files changed, 157371 insertions(+) create mode 100644 .browserslistrc create mode 100644 .env create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 babel.config.js create mode 100644 jsconfig.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 src/App.vue create mode 100644 src/api/common/menu.js create mode 100644 src/api/common/user.js create mode 100644 src/api/system/sysconf.js create mode 100644 src/assets/images/backgrounds/Thumbs.db create mode 100644 src/assets/images/backgrounds/b1.jpg create mode 100644 src/assets/images/backgrounds/b2.jpg create mode 100644 src/assets/images/backgrounds/b3.jpg create mode 100644 src/assets/images/backgrounds/b4.jpg create mode 100644 src/assets/images/default.png create mode 100644 src/assets/images/loading.gif create mode 100644 src/assets/images/login_bg.png create mode 100644 src/assets/images/logo.png create mode 100644 src/assets/images/woman.jpg create mode 100644 src/assets/plugins/bootstrap-combobox/css/bootstrap-combobox.css create mode 100644 src/assets/plugins/bootstrap-combobox/js/bootstrap-combobox-helper.js create mode 100644 src/assets/plugins/bootstrap-combobox/js/bootstrap-combobox.js create mode 100644 src/assets/plugins/bootstrap-datepicker/css/datepicker3.css create mode 100644 src/assets/plugins/bootstrap-datepicker/js/bootstrap-datepicker.js create mode 100644 src/assets/plugins/bootstrap-datetimepicker/css/bootstrap-datetimepicker.css create mode 100644 src/assets/plugins/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js create mode 100644 src/assets/plugins/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js create mode 100644 src/assets/plugins/bootstrap-multiselect/css/bootstrap-multiselect.css create mode 100644 src/assets/plugins/bootstrap-multiselect/js/bootstrap-multiselect.js create mode 100644 src/assets/plugins/bootstrap-select/css/bootstrap-select.css create mode 100644 src/assets/plugins/bootstrap-select/js/bootstrap-select.js create mode 100644 src/assets/plugins/bootstrap-table/css/bootstrap-table.css create mode 100644 src/assets/plugins/bootstrap-table/js/bootstrap-table.js create mode 100644 src/assets/plugins/bootstrap-table/js/extensions/editable/bootstrap-table-editable.js create mode 100644 src/assets/plugins/bootstrap-table/js/locale/bootstrap-table-zh-CN.js create mode 100644 src/assets/plugins/bootstrap-treeview/css/bootstrap-treeview.min.css create mode 100644 src/assets/plugins/bootstrap-treeview/js/bootstrap-treeview.min.js create mode 100644 src/assets/plugins/clipboard/js/clipboard.min.js create mode 100644 src/assets/plugins/jQuery-Validation-Engine/css/validationEngine.jquery.css create mode 100644 src/assets/plugins/jQuery-Validation-Engine/js/jquery.validationEngine.js create mode 100644 src/assets/plugins/jQuery-Validation-Engine/js/languages/jquery.validationEngine-zh_CN.js create mode 100644 src/assets/plugins/jquery/jquery.form.js create mode 100644 src/components/footer/index.vue create mode 100644 src/components/header/index.vue create mode 100644 src/components/maintainer/index.vue create mode 100644 src/constants/global.js create mode 100644 src/css/login.css create mode 100644 src/css/main.css create mode 100644 src/css/supersized.css create mode 100644 src/main.js create mode 100644 src/router/index.js create mode 100644 src/store/index.js create mode 100644 src/store/modules/menu.js create mode 100644 src/store/modules/user.js create mode 100644 src/utils/ajaxfileupload.js create mode 100644 src/utils/bootstrap-table-helper.js create mode 100644 src/utils/components.js create mode 100644 src/utils/date.js create mode 100644 src/utils/maintainer.js create mode 100644 src/utils/notify.js create mode 100644 src/utils/request.js create mode 100644 src/utils/store.js create mode 100644 src/utils/string.js create mode 100644 src/utils/system-helper.js create mode 100644 src/utils/validate.js create mode 100644 src/views/BlankView.vue create mode 100644 src/views/OperationSmsAdminView.vue create mode 100644 src/views/QiniuUploadAdminView.vue create mode 100644 src/views/TencentUploadAdminView.vue create mode 100644 src/views/activity/ActTwelveStarConfigAdminView.vue create mode 100644 src/views/activity/ActivityAwardAdminView.vue create mode 100644 src/views/activity/ActivityPackAdminView.vue create mode 100644 src/views/activity/ChargeActivityAdminView.vue create mode 100644 src/views/activity/FamilyPkManageAdminView.vue create mode 100644 src/views/activity/LuckySeaItemAdminView.vue create mode 100644 src/views/activity/LuckySeaPlatformAdminView.vue create mode 100644 src/views/activity/LuckySeaRecordAdminView.vue create mode 100644 src/views/activity/LuckySeaUserstatAdminView.vue create mode 100644 src/views/activity/OperationActAdminView.vue create mode 100644 src/views/activity/PageActivityView.vue create mode 100644 src/views/activity/UserDrawRecordAdminView.vue create mode 100644 src/views/activity/WeekStarConfigAdminView.vue create mode 100644 src/views/activitystatistic/DrawLotteryStatsDetailView.vue create mode 100644 src/views/activitystatistic/DrawLotteryStatsView.vue create mode 100644 src/views/activitystatistic/LinearlyStatsDetailView.vue create mode 100644 src/views/activitystatistic/LinearlyStatsView.vue create mode 100644 src/views/activitystatistic/SingleHeartbeatDarwView.vue create mode 100644 src/views/administrator/SuperAdminOperateRecordView.vue create mode 100644 src/views/administrator/SuperAdminView.vue create mode 100644 src/views/anchor/AnchorAdminView.vue create mode 100644 src/views/anchor/AnchorBillCheckView.vue create mode 100644 src/views/anchor/AnchorBillUploadView.vue create mode 100644 src/views/anchor/AnchorFansMpAudioView.vue create mode 100644 src/views/anchor/AnchorFansPrivilegeView.vue create mode 100644 src/views/anchor/AnchorFansTeamStatsView.vue create mode 100644 src/views/anchor/AnchorReleaseGoldView.vue create mode 100644 src/views/anchor/LevelStatisticsView.vue create mode 100644 src/views/app/AppBottomBarAdminView.vue create mode 100644 src/views/app/AppUpdateView.vue create mode 100644 src/views/auditaudio/AuditAudioView.vue create mode 100644 src/views/auditaudio/MonitorRuleView.vue create mode 100644 src/views/background/BackgroundView.vue create mode 100644 src/views/blinddate/BlindDateCapAdminView.vue create mode 100644 src/views/blinddate/BlindDateJoinhandAdminView.vue create mode 100644 src/views/callbattle/ActCallBattleItemAdminView.vue create mode 100644 src/views/callbattle/ActCallBattlePlatformAdminView.vue create mode 100644 src/views/callbattle/ActCallBattleRecordAdminView.vue create mode 100644 src/views/callbattle/ActCallBattleUserstatAdminView.vue create mode 100644 src/views/car/CarAdminView.vue create mode 100644 src/views/car/CarGoodsAdminView.vue create mode 100644 src/views/car/CarRecordView.vue create mode 100644 src/views/car/CarStatisticsView.vue create mode 100644 src/views/channel/ChannelContentPartitionAdminView.vue create mode 100644 src/views/charge/FirstChargeRewardConfigView.vue create mode 100644 src/views/charge/FirstChargeRewardRecordView.vue create mode 100644 src/views/charge/LimitFirstChargeRewardRecordView.vue create mode 100644 src/views/charge/RedeemcodeAdminView.vue create mode 100644 src/views/chatbubble/ChatbubbleManageView.vue create mode 100644 src/views/chatbubble/ChatbubbleRecordView.vue create mode 100644 src/views/cleanup/CleanupAdminView.vue create mode 100644 src/views/discovery/DiscoveryAdminView.vue create mode 100644 src/views/dressShop/DressShopAdminView.vue create mode 100644 src/views/face/FaceJsonAdminView.vue create mode 100644 src/views/family/FamilyAdminView.vue create mode 100644 src/views/family/FamilyMemberAdminView.vue create mode 100644 src/views/family/FamilyMoneyAdminView.vue create mode 100644 src/views/family/FamilyStatisticsView.vue create mode 100644 src/views/finance/FinanceStatisticsView.vue create mode 100644 src/views/firstpage/FirstPageActivityBannerView.vue create mode 100644 src/views/firstpage/FirstPageBannerView.vue create mode 100644 src/views/firstpage/FirstPageOptView.vue create mode 100644 src/views/firstpage/FirstPageTabRoomView.vue create mode 100644 src/views/firstpage/FirstPageTabView.vue create mode 100644 src/views/firstpage/RecommendResourceAdminView.vue create mode 100644 src/views/firstpage/RecommendRoomAdminView.vue create mode 100644 src/views/flowteam/FlowTeamGroupManageView.vue create mode 100644 src/views/flowteam/FlowTeamInvitecodeManageView.vue create mode 100644 src/views/flowteam/FlowTeamMemberAdminView.vue create mode 100644 src/views/flowteam/FlowTeamSettlementView.vue create mode 100644 src/views/flowteam/FlowTeamStatisticView.vue create mode 100644 src/views/flowteam/RefillInviteCodeView.vue create mode 100644 src/views/game/GameAccessUrlView.vue create mode 100644 src/views/game/GameActivityRankView.vue create mode 100644 src/views/game/GameChannelView.vue create mode 100644 src/views/game/GameFaceView.vue create mode 100644 src/views/game/GameInfoView.vue create mode 100644 src/views/gamemanage/GameBillRecordAdminView.vue create mode 100644 src/views/gamemanage/GameManageBannerView.vue create mode 100644 src/views/gamemanage/GameManageChannelTicketView.vue create mode 100644 src/views/gamemanage/GameManageGiveTicketView.vue create mode 100644 src/views/gamemanage/GameManageGroupAdminView.vue create mode 100644 src/views/gamemanage/GameManageInfoAdminView.vue create mode 100644 src/views/gamemanage/GameManageQuickGameInfoAdminView.vue create mode 100644 src/views/gamemanage/GameManageTicketAccessView.vue create mode 100644 src/views/gamemanage/GameManageTicketHistoryAdminView.vue create mode 100644 src/views/gamemanage/GameManageWithdrawAdminView.vue create mode 100644 src/views/gamemanage/TicketManageView.vue create mode 100644 src/views/gamepartner/GamePartnerOrderDetailView.vue create mode 100644 src/views/gamepartner/GamePartnerOrderView.vue create mode 100644 src/views/gamepartner/UserGamePartnerInfoAdminView.vue create mode 100644 src/views/giftwall/GiftAchievementAdminView.vue create mode 100644 src/views/giftwall/GiftAchievementStatisticsAdminView.vue create mode 100644 src/views/giftwall/GiftAchievementTypeAdminView.vue create mode 100644 src/views/guild/GuildRoomAdminView.vue create mode 100644 src/views/hall/ClanAdminView.vue create mode 100644 src/views/hall/ClanFlowStatisAdminView.vue create mode 100644 src/views/hall/ClanLevelSettingView.vue create mode 100644 src/views/hall/HallAdminView.vue create mode 100644 src/views/hall/HallMemberView.vue create mode 100644 src/views/headwear/HeadwearAdminView.vue create mode 100644 src/views/headwear/HeadwearRecordView.vue create mode 100644 src/views/headwear/HeadwearStatisticsView.vue create mode 100644 src/views/home/BannerAdminView.vue create mode 100644 src/views/home/ChatpickAdminView.vue create mode 100644 src/views/home/PanelAdminView.vue create mode 100644 src/views/home/RecommandAdminView.vue create mode 100644 src/views/home/RisingStarAdminView.vue create mode 100644 src/views/home/index.vue create mode 100644 src/views/infocard/InfocardManageView.vue create mode 100644 src/views/infocard/InfocardRecordView.vue create mode 100644 src/views/ktv/MusicErrorAdminView.vue create mode 100644 src/views/ktv/MusicLibraryAdminView.vue create mode 100644 src/views/linearlypool/PlatformPrizeDataAdminDayView.vue create mode 100644 src/views/linearlypool/PlatformPrizeDataAdminView.vue create mode 100644 src/views/linearlypool/PoolItemAdminView.vue create mode 100644 src/views/linearlypool/PoolItemShowratioAdminView.vue create mode 100644 src/views/linearlypool/PrizeDrawRecordAdminView.vue create mode 100644 src/views/linearlypool/UserPrizeDataAdminView.vue create mode 100644 src/views/live101/ApplyAdminView.vue create mode 100644 src/views/live101/IdentityAdminView.vue create mode 100644 src/views/live101/OptRecordAdminView.vue create mode 100644 src/views/live101/SkillTagAdminView.vue create mode 100644 src/views/login/index.vue create mode 100644 src/views/luckybag/LuckyBagPoolView.vue create mode 100644 src/views/luckybag/LuckyBagRecordView.vue create mode 100644 src/views/luckybag/LuckyBagStatsView.vue create mode 100644 src/views/match/HpjyGameManageView.vue create mode 100644 src/views/mentor/MentorAdminView.vue create mode 100644 src/views/monster/MonsterAdminView.vue create mode 100644 src/views/monster/MonsterKindAdminView.vue create mode 100644 src/views/monster/MonsterTaskAdminView.vue create mode 100644 src/views/nameplate/NameplateAuditRecordAdminView.vue create mode 100644 src/views/nameplate/NameplateInfoView.vue create mode 100644 src/views/nameplate/NameplateRecordView.vue create mode 100644 src/views/nameplate/NameplateStyleView.vue create mode 100644 src/views/newLuckyBag/LuckyBagLinearPoolView.vue create mode 100644 src/views/newLuckyBag/LuckyBagManageView.vue create mode 100644 src/views/newLuckyBag/NewLuckyBagDeviateRangeView.vue create mode 100644 src/views/newLuckyBag/NewLuckyBagDeviateView.vue create mode 100644 src/views/newLuckyBag/NewLuckyBagRecordView.vue create mode 100644 src/views/newLuckyBag/NewLuckyBagStatsView.vue create mode 100644 src/views/newuser/NewUserInRoomGiftAdminView.vue create mode 100644 src/views/newuserstart/NewUserSayHelloAdminView.vue create mode 100644 src/views/newwithdraw/UserWithdrawInfoView.vue create mode 100644 src/views/newwithdraw/WithdrawConfigView.vue create mode 100644 src/views/newwithdraw/WithdrawRecordView.vue create mode 100644 src/views/noble/NobleAdminView.vue create mode 100644 src/views/noble/NobleExperAdminView.vue create mode 100644 src/views/noble/NoblePrivilegeAdminView.vue create mode 100644 src/views/noble/PrivilegeAdminView.vue create mode 100644 src/views/noble/ResourceAdminView.vue create mode 100644 src/views/personalCenter/PersonalCenterAdminView.vue create mode 100644 src/views/picture/AdminPictureView.vue create mode 100644 src/views/pretty/PrettyNoAdminView.vue create mode 100644 src/views/pretty/PrettyNoRecordAdminView.vue create mode 100644 src/views/pretty/PrettynoCheckView.vue create mode 100644 src/views/privilege/RoomPrivilegeCardCheckView.vue create mode 100644 src/views/privilege/RoomPrivilegeCardView.vue create mode 100644 src/views/prize/DeviateRangeManageAdminView.vue create mode 100644 src/views/prize/PrizeAdminView.vue create mode 100644 src/views/prize/PrizeDataAdminExcludeView.vue create mode 100644 src/views/prize/PrizeDataAdminNewView.vue create mode 100644 src/views/prize/PrizeDataAdminView.vue create mode 100644 src/views/prize/PrizeManageAdminView.vue create mode 100644 src/views/prize/PrizeRecordAdminView.vue create mode 100644 src/views/prize/PrizeStatisAdminView.vue create mode 100644 src/views/prize/PrizeStatsAdminNewView.vue create mode 100644 src/views/prize/UserCardsManageView.vue create mode 100644 src/views/radish/RadishGiftStatisticsView.vue create mode 100644 src/views/recommend/RecommendOccupyAdminView.vue create mode 100644 src/views/recommend/RecommendRecordAdminView.vue create mode 100644 src/views/record/ChargeRecordView.vue create mode 100644 src/views/record/OfficialGoldBusTypeView.vue create mode 100644 src/views/record/OfficialRadishView.vue create mode 100644 src/views/record/OfficicalGoldRecordView.vue create mode 100644 src/views/record/OfficicalGoldView.vue create mode 100644 src/views/record/OfficicalKeyView.vue create mode 100644 src/views/redenvelope/RedEnvelopeView.vue create mode 100644 src/views/room/AutoSayHelloView.vue create mode 100644 src/views/room/CrossRoomPkAdminView.vue create mode 100644 src/views/room/CrossRoomPkingAdminView.vue create mode 100644 src/views/room/HomePermitView.vue create mode 100644 src/views/room/HomeRecommView.vue create mode 100644 src/views/room/HomeRiseAdminView.vue create mode 100644 src/views/room/MiniGameStatisAdminView.vue create mode 100644 src/views/room/PrivateChatItemView.vue create mode 100644 src/views/room/RoomActAdminView.vue create mode 100644 src/views/room/RoomCardView.vue create mode 100644 src/views/room/RoomChatPartyView.vue create mode 100644 src/views/room/RoomDiversionAdminView.vue create mode 100644 src/views/room/RoomHideHomeView.vue create mode 100644 src/views/room/RoomInsideRecommendView.vue create mode 100644 src/views/room/RoomInviteView.vue create mode 100644 src/views/room/RoomRecommendAdminView.vue create mode 100644 src/views/room/RoomRecommendRoomAdminView.vue create mode 100644 src/views/room/RoomSearchAdminView.vue create mode 100644 src/views/room/RoomSerialView.vue create mode 100644 src/views/room/RoomTabHomeView.vue create mode 100644 src/views/room/RoomTabMapView.vue create mode 100644 src/views/room/RoomTabView.vue create mode 100644 src/views/room/RoomUidExchangeView.vue create mode 100644 src/views/room/RoomUnchangeAdminView.vue create mode 100644 src/views/room/RoomVisitorView.vue create mode 100644 src/views/room/RoompoolAdminView.vue create mode 100644 src/views/room/RoomtagAdminView.vue create mode 100644 src/views/room/RoomtagspecialconfigAdminView.vue create mode 100644 src/views/room/ShortcutRoomView.vue create mode 100644 src/views/room/SingleBroadcastRoomView.vue create mode 100644 src/views/room/SingleRoomSortView.vue create mode 100644 src/views/seekelfin/SeekElfinItemAdminView.vue create mode 100644 src/views/seekelfin/SeekElfinPlatformAdminView.vue create mode 100644 src/views/seekelfin/SeekElfinUserRecordAdminView.vue create mode 100644 src/views/sensitive/SensitiveConfigView.vue create mode 100644 src/views/sign/DrawCountWhiteAdminView.vue create mode 100644 src/views/sign/DrawGoldAdminView.vue create mode 100644 src/views/sign/GoldPrizeAdminView.vue create mode 100644 src/views/sign/MissionConfigAdminView.vue create mode 100644 src/views/sign/PrizeGoldPoolAdminView.vue create mode 100644 src/views/sign/SignPrizeRecordAdminView.vue create mode 100644 src/views/sign/SignRecordAdminView.vue create mode 100644 src/views/sign/SignRewardConfigAdminView.vue create mode 100644 src/views/singleroompk/SingleRoomPkAdminView.vue create mode 100644 src/views/singleroompk/SingleRoomPkingAdminView.vue create mode 100644 src/views/skillcard/SkillCardAudioVerifyView.vue create mode 100644 src/views/statistic/ChannelCheckAdminView.vue create mode 100644 src/views/statistic/HallSingleRoomStatisAdminView.vue create mode 100644 src/views/statistic/LaborStatsView.vue create mode 100644 src/views/statistic/NewUserStatsView.vue create mode 100644 src/views/statistic/PermitRoomStatsView.vue create mode 100644 src/views/statistic/PermitRoomTimeRecordView.vue create mode 100644 src/views/statistic/RoomOptmizeStatisAdminView.vue create mode 100644 src/views/statistic/SingleLiveTimeRecordView.vue create mode 100644 src/views/statistic/SingleRoomStatsView.vue create mode 100644 src/views/statistic/UserChargeStatsDetailView.vue create mode 100644 src/views/statistic/UserChargeStatsView.vue create mode 100644 src/views/statistic/UserDetailAdminView.vue create mode 100644 src/views/statistic/UserGiftStatsDetailView.vue create mode 100644 src/views/statistic/UserGiftStatsView.vue create mode 100644 src/views/system/AppAdminView.vue create mode 100644 src/views/system/BlockAdminView.vue create mode 100644 src/views/system/BlockSearchUserAdminView.vue create mode 100644 src/views/system/ChannelDistributeAdminView.vue create mode 100644 src/views/system/CustomserviceAdminView.vue create mode 100644 src/views/system/DictAdminView.vue create mode 100644 src/views/system/MenuAdminView.vue create mode 100644 src/views/system/RoleAdminView.vue create mode 100644 src/views/system/SysconfAdminView.vue create mode 100644 src/views/system/UserAdminView.vue create mode 100644 src/views/system/UserLevelCharmAdminView.vue create mode 100644 src/views/system/VersionAdminView.vue create mode 100644 src/views/system/VersionConfigAdminView.vue create mode 100644 src/views/tarot/TarotChargeRecordView.vue create mode 100644 src/views/tarot/TarotChargeStatisView.vue create mode 100644 src/views/tarot/TarotChargeTotalView.vue create mode 100644 src/views/title/TitleAdminView.vue create mode 100644 src/views/title/TitleConfigView.vue create mode 100644 src/views/topline/ToplineAdminView.vue create mode 100644 src/views/userrole/UserRoleAdminView.vue create mode 100644 src/views/users/BackListAdminView.vue create mode 100644 src/views/users/BillRecordAdminView.vue create mode 100644 src/views/users/BillRecordGroupView.vue create mode 100644 src/views/users/BlockedAdminView.vue create mode 100644 src/views/users/ChargeRecordDailyStatisticsView.vue create mode 100644 src/views/users/ChargeRecordPersonalAdminView.vue create mode 100644 src/views/users/ChargeRecordTotalStatisticsView.vue create mode 100644 src/views/users/CommissionWhiteListView.vue create mode 100644 src/views/users/EveryOneSearchView.vue create mode 100644 src/views/users/FeedbackAdminView.vue create mode 100644 src/views/users/FrozenAdminView.vue create mode 100644 src/views/users/FrozenRecordAdminView.vue create mode 100644 src/views/users/GenAccountView.vue create mode 100644 src/views/users/GiftAdminView.vue create mode 100644 src/views/users/GiftCompoundView.vue create mode 100644 src/views/users/GiftLimitCompoundPoolView.vue create mode 100644 src/views/users/GiftLimitCompoundView.vue create mode 100644 src/views/users/GiftManageView.vue create mode 100644 src/views/users/GiftNotifyConfigAdminView.vue create mode 100644 src/views/users/GiftSendRecordView.vue create mode 100644 src/views/users/GiftStatisticsView.vue create mode 100644 src/views/users/InviteCodeStatsView.vue create mode 100644 src/views/users/InviteCodeView.vue create mode 100644 src/views/users/MagicManageView.vue create mode 100644 src/views/users/MessageAdminView.vue create mode 100644 src/views/users/PasswordLockAdminView.vue create mode 100644 src/views/users/PhoneBlackAdminView.vue create mode 100644 src/views/users/SearchHijackView.vue create mode 100644 src/views/users/SpecialInviteCodeAdminView.vue create mode 100644 src/views/users/TopicBoxItemAdminView.vue create mode 100644 src/views/users/UserBackpackAdminView.vue create mode 100644 src/views/users/UserBankAdminView.vue create mode 100644 src/views/users/UserCancelView.vue create mode 100644 src/views/users/UserCertifyAdminView.vue create mode 100644 src/views/users/UserCheckAdminBaseView.vue create mode 100644 src/views/users/UserCheckAdminView.vue create mode 100644 src/views/users/UserCoupleStatisticsAdminView.vue create mode 100644 src/views/users/UserDrawProdAdminView.vue create mode 100644 src/views/users/UserImpeachAdminView.vue create mode 100644 src/views/users/UserImpeachSearchView.vue create mode 100644 src/views/users/UserMuteAdminView.vue create mode 100644 src/views/users/UserMuteRecordAdminView.vue create mode 100644 src/views/users/UserPasswordModifyView.vue create mode 100644 src/views/users/UserPurseAdminView.vue create mode 100644 src/views/users/UserRealNameAdminView.vue create mode 100644 src/views/users/UserRecordAdminView.vue create mode 100644 src/views/users/UserRelationPrivilegeAdminView.vue create mode 100644 src/views/users/UserRelationPropsAdminView.vue create mode 100644 src/views/users/WithdrawAdminView.vue create mode 100644 src/views/vip/VipAuthManageView.vue create mode 100644 src/views/vip/VipFaceView.vue create mode 100644 src/views/vip/VipGiftView.vue create mode 100644 src/views/vip/VipManageView.vue create mode 100644 src/views/vip/VipOpenRecordView.vue create mode 100644 src/views/vip/VipStatView.vue create mode 100644 src/views/voice/PiaDramaAdminView.vue create mode 100644 src/views/voice/VoiceVerifyAdminView.vue create mode 100644 src/views/wishgift/WishGiftConfigView.vue create mode 100644 src/views/wishgift/WishGiftStatView.vue create mode 100644 src/views/withdraw/PacketWithdrawAdminView.vue create mode 100644 src/views/withdraw/RoomFlowPayAdminView.vue create mode 100644 src/views/withdraw/WithdrawApplyView.vue create mode 100644 src/views/world/WorldAdminView.vue create mode 100644 src/views/world/WorldMemberAdminView.vue create mode 100644 src/views/world/WorldTypeAdminView.vue create mode 100644 src/views/world/community/CommentVerifyView.vue create mode 100644 src/views/world/community/DynamicDataView.vue create mode 100644 src/views/world/community/DynamicStatView.vue create mode 100644 src/views/world/community/DynamicVerifyView.vue create mode 100644 src/views/world/community/RecommendWorldAdminView.vue create mode 100644 vue.config.js diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..dc3bc09 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,4 @@ +> 1% +last 2 versions +not dead +not ie 11 diff --git a/.env b/.env new file mode 100644 index 0000000..e69de29 diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..cef66e1 --- /dev/null +++ b/.env.development @@ -0,0 +1,2 @@ +VUE_APP_API_BASE_URL='http://beta.admin.nnbc123.cn' +VUE_APP_DEBUG_MODE=true \ No newline at end of file diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..fc2595d --- /dev/null +++ b/.env.production @@ -0,0 +1,2 @@ +VUE_APP_API_BASE_URL='http://admin.nnbc123.cn' +VUE_APP_DEBUG_MODE=false \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..b06c640 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,21 @@ +module.exports = { + root: true, + env: { + node: true, + jquery: true + }, + 'extends': [ + 'plugin:vue/vue3-essential', + 'eslint:recommended' + ], + parserOptions: { + parser: '@babel/eslint-parser' + }, + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-unused-vars': 'off', + 'no-useless-escape': 'off', + 'no-control-regex': 'off', + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..403adbc --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules +/dist + + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/README.md b/README.md index 65c3446..918eefa 100644 --- a/README.md +++ b/README.md @@ -1 +1,24 @@ # yinmeng-admin-web + +## Project setup +``` +npm install +``` + +### Compiles and hot-reloads for development +``` +npm run serve +``` + +### Compiles and minifies for production +``` +npm run build +``` + +### Lints and fixes files +``` +npm run lint +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..e955840 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..4aafc5f --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "esnext", + "baseUrl": "./", + "moduleResolution": "node", + "paths": { + "@/*": [ + "src/*" + ] + }, + "lib": [ + "esnext", + "dom", + "dom.iterable", + "scripthost" + ] + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..efda226 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11366 @@ +{ + "name": "yinmeng-admin-web", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "yinmeng-admin-web", + "version": "0.1.0", + "dependencies": { + "admin-lte": "^2.3.2", + "axios": "^1.5.1", + "bootstrap": "^3.3.5", + "core-js": "^3.8.3", + "font-awesome": "^4.6.3", + "ionicons": "^2.0.1", + "jquery": "^2.2.0", + "jquery.md5": "^1.0.0", + "knockout": "^3.5.1", + "less": "^4.2.0", + "less-loader": "^11.1.3", + "popper.js": "^1.16.1", + "vue": "^3.2.13", + "vue-router": "^4.0.3", + "vuex": "^4.0.0" + }, + "devDependencies": { + "@babel/core": "^7.12.16", + "@babel/eslint-parser": "^7.12.16", + "@vue/cli-plugin-babel": "~5.0.0", + "@vue/cli-plugin-eslint": "~5.0.0", + "@vue/cli-plugin-router": "~5.0.0", + "@vue/cli-plugin-vuex": "~5.0.0", + "@vue/cli-service": "~5.0.0", + "eslint": "^7.32.0", + "eslint-plugin-vue": "^8.0.3", + "sass": "^1.32.7", + "sass-loader": "^12.0.0", + "webpack-bundle-analyzer": "^4.9.1" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@achrinza/node-ipc": { + "version": "9.2.7", + "resolved": "https://registry.npmmirror.com/@achrinza/node-ipc/-/node-ipc-9.2.7.tgz", + "integrity": "sha512-/EvNkqB4HNxPWCZASmgrjqG8gIdPOolD67LGASvGMp/FY5ne0rbvpYg5o9x8RmgjAl8KdmNQ4YlV1et9DYiW8g==", + "dev": true, + "dependencies": { + "@node-ipc/js-queue": "2.0.3", + "event-pubsub": "4.3.0", + "js-message": "1.0.7" + }, + "engines": { + "node": "8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18 || 19 || 20" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.20", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.22.20.tgz", + "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.23.0.tgz", + "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz", + "integrity": "sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==", + "dev": true, + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.2", + "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.1", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.23.1.tgz", + "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.0.tgz", + "integrity": "sha512-kYsT+f5ARWF6AdFmqoEEp+hpqxEB8vGmRWfw2aj78M2vTwS2uHW91EF58iFm1Z9U8Y/RrLu2XKJn46P9ca1b0w==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/plugin-syntax-decorators": "^7.22.10" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.22.10", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz", + "integrity": "sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz", + "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", + "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", + "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.11", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.22.10", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz", + "integrity": "sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.22.10", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.20", + "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.22.20.tgz", + "integrity": "sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.20", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.15", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.15", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.11", + "@babel/plugin-transform-classes": "^7.22.15", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.15", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.11", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-for-of": "^7.22.15", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.11", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-modules-systemjs": "^7.22.11", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.22.15", + "@babel/plugin-transform-parameters": "^7.22.15", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.19", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.23.1", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.1.tgz", + "integrity": "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.23.0.tgz", + "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.22.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmmirror.com/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmmirror.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@node-ipc/js-queue": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", + "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", + "dev": true, + "dependencies": { + "easy-stack": "1.0.1" + }, + "engines": { + "node": ">=1.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.23", + "resolved": "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.23.tgz", + "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==", + "dev": true + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmmirror.com/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "node_modules/@soda/friendly-errors-webpack-plugin": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", + "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "error-stack-parser": "^2.0.6", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz", + "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", + "dev": true + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.3", + "resolved": "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.3.tgz", + "integrity": "sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.11", + "resolved": "https://registry.npmmirror.com/@types/bonjour/-/bonjour-3.5.11.tgz", + "integrity": "sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.36", + "resolved": "https://registry.npmmirror.com/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz", + "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.44.3", + "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.44.3.tgz", + "integrity": "sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.5", + "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.5.tgz", + "integrity": "sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.2.tgz", + "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==" + }, + "node_modules/@types/express": { + "version": "4.17.18", + "resolved": "https://registry.npmmirror.com/@types/express/-/express-4.17.18.tgz", + "integrity": "sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.37", + "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz", + "integrity": "sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/@types/http-errors/-/http-errors-2.0.2.tgz", + "integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.12", + "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.12.tgz", + "integrity": "sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.13", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==" + }, + "node_modules/@types/mime": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/@types/mime/-/mime-1.3.3.tgz", + "integrity": "sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.3.tgz", + "integrity": "sha512-ZYFzrvyWUNhaPomn80dsMNgMeXxNWZBdkuG/hWlUvXvbdUH8ZERNBGXnU87McuGcWDsyzX2aChCv/SVN348k3A==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.7.1", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.7.1.tgz", + "integrity": "sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==" + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.2.tgz", + "integrity": "sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.8", + "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.5.tgz", + "integrity": "sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.2", + "resolved": "https://registry.npmmirror.com/@types/send/-/send-0.17.2.tgz", + "integrity": "sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@types/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.3", + "resolved": "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.3.tgz", + "integrity": "sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.34", + "resolved": "https://registry.npmmirror.com/@types/sockjs/-/sockjs-0.3.34.tgz", + "integrity": "sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.6", + "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.6.tgz", + "integrity": "sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", + "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==", + "dev": true + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz", + "integrity": "sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==", + "dev": true + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz", + "integrity": "sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5", + "@vue/babel-helper-vue-transform-on": "^1.1.5", + "camelcase": "^6.3.0", + "html-tags": "^3.3.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-plugin-transform-vue-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz", + "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/babel-preset-app": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/babel-preset-app/-/babel-preset-app-5.0.8.tgz", + "integrity": "sha512-yl+5qhpjd8e1G4cMXfORkkBlvtPCIgmRf3IYCWYDKIQ7m+PPa5iTm4feiNmCMD6yGqQWMhhK/7M3oWGL9boKwg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.16", + "@babel/helper-compilation-targets": "^7.12.16", + "@babel/helper-module-imports": "^7.12.13", + "@babel/plugin-proposal-class-properties": "^7.12.13", + "@babel/plugin-proposal-decorators": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/plugin-transform-runtime": "^7.12.15", + "@babel/preset-env": "^7.12.16", + "@babel/runtime": "^7.12.13", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.1.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.8.3", + "core-js-compat": "^3.8.3", + "semver": "^7.3.4" + }, + "peerDependencies": { + "@babel/core": "*", + "core-js": "^3", + "vue": "^2 || ^3.2.13" + }, + "peerDependenciesMeta": { + "core-js": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-preset-app/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/babel-preset-app/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/babel-preset-app/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@vue/babel-preset-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz", + "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==", + "dev": true, + "dependencies": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "@vue/babel-sugar-composition-api-inject-h": "^1.4.0", + "@vue/babel-sugar-composition-api-render-instance": "^1.4.0", + "@vue/babel-sugar-functional-vue": "^1.4.0", + "@vue/babel-sugar-inject-h": "^1.4.0", + "@vue/babel-sugar-v-model": "^1.4.0", + "@vue/babel-sugar-v-on": "^1.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "vue": "*" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-sugar-composition-api-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz", + "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-composition-api-render-instance": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz", + "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-functional-vue": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz", + "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz", + "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz", + "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/babel-sugar-v-on": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz", + "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/cli-overlay": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-5.0.8.tgz", + "integrity": "sha512-KmtievE/B4kcXp6SuM2gzsnSd8WebkQpg3XaB6GmFh1BJGRqa1UiW9up7L/Q67uOdTigHxr5Ar2lZms4RcDjwQ==", + "dev": true + }, + "node_modules/@vue/cli-plugin-babel": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-5.0.8.tgz", + "integrity": "sha512-a4qqkml3FAJ3auqB2kN2EMPocb/iu0ykeELwed+9B1c1nQ1HKgslKMHMPavYx3Cd/QAx2mBD4hwKBqZXEI/CsQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.16", + "@vue/babel-preset-app": "^5.0.8", + "@vue/cli-shared-utils": "^5.0.8", + "babel-loader": "^8.2.2", + "thread-loader": "^3.0.0", + "webpack": "^5.54.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-eslint": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.8.tgz", + "integrity": "sha512-d11+I5ONYaAPW1KyZj9GlrV/E6HZePq5L5eAF5GgoVdu6sxr6bDgEoxzhcS1Pk2eh8rn1MxG/FyyR+eCBj/CNg==", + "dev": true, + "dependencies": { + "@vue/cli-shared-utils": "^5.0.8", + "eslint-webpack-plugin": "^3.1.0", + "globby": "^11.0.2", + "webpack": "^5.54.0", + "yorkie": "^2.0.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0", + "eslint": ">=7.5.0" + } + }, + "node_modules/@vue/cli-plugin-router": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-router/-/cli-plugin-router-5.0.8.tgz", + "integrity": "sha512-Gmv4dsGdAsWPqVijz3Ux2OS2HkMrWi1ENj2cYL75nUeL+Xj5HEstSqdtfZ0b1q9NCce+BFB6QnHfTBXc/fCvMg==", + "dev": true, + "dependencies": { + "@vue/cli-shared-utils": "^5.0.8" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-vuex": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.8.tgz", + "integrity": "sha512-HSYWPqrunRE5ZZs8kVwiY6oWcn95qf/OQabwLfprhdpFWAGtLStShjsGED2aDpSSeGAskQETrtR/5h7VqgIlBA==", + "dev": true, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-service": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-5.0.8.tgz", + "integrity": "sha512-nV7tYQLe7YsTtzFrfOMIHc5N2hp5lHG2rpYr0aNja9rNljdgcPZLyQRb2YRivTHqTv7lI962UXFURcpStHgyFw==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.12.16", + "@soda/friendly-errors-webpack-plugin": "^1.8.0", + "@soda/get-current-script": "^1.0.2", + "@types/minimist": "^1.2.0", + "@vue/cli-overlay": "^5.0.8", + "@vue/cli-plugin-router": "^5.0.8", + "@vue/cli-plugin-vuex": "^5.0.8", + "@vue/cli-shared-utils": "^5.0.8", + "@vue/component-compiler-utils": "^3.3.0", + "@vue/vue-loader-v15": "npm:vue-loader@^15.9.7", + "@vue/web-component-wrapper": "^1.3.0", + "acorn": "^8.0.5", + "acorn-walk": "^8.0.2", + "address": "^1.1.2", + "autoprefixer": "^10.2.4", + "browserslist": "^4.16.3", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.10", + "clipboardy": "^2.3.0", + "cliui": "^7.0.4", + "copy-webpack-plugin": "^9.0.1", + "css-loader": "^6.5.0", + "css-minimizer-webpack-plugin": "^3.0.2", + "cssnano": "^5.0.0", + "debug": "^4.1.1", + "default-gateway": "^6.0.3", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^5.1.0", + "is-file-esm": "^1.0.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "mini-css-extract-plugin": "^2.5.3", + "minimist": "^1.2.5", + "module-alias": "^2.2.2", + "portfinder": "^1.0.26", + "postcss": "^8.2.6", + "postcss-loader": "^6.1.1", + "progress-webpack-plugin": "^1.0.12", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^5.1.1", + "thread-loader": "^3.0.0", + "vue-loader": "^17.0.0", + "vue-style-loader": "^4.1.3", + "webpack": "^5.54.0", + "webpack-bundle-analyzer": "^4.4.0", + "webpack-chain": "^6.5.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.7.3", + "webpack-virtual-modules": "^0.4.2", + "whatwg-fetch": "^3.6.2" + }, + "bin": { + "vue-cli-service": "bin/vue-cli-service.js" + }, + "engines": { + "node": "^12.0.0 || >= 14.0.0" + }, + "peerDependencies": { + "vue-template-compiler": "^2.0.0", + "webpack-sources": "*" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "less-loader": { + "optional": true + }, + "pug-plain-loader": { + "optional": true + }, + "raw-loader": { + "optional": true + }, + "sass-loader": { + "optional": true + }, + "stylus-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/@vue/cli-shared-utils": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-shared-utils/-/cli-shared-utils-5.0.8.tgz", + "integrity": "sha512-uK2YB7bBVuQhjOJF+O52P9yFMXeJVj7ozqJkwYE9PlMHL1LMHjtCYm4cSdOebuPzyP+/9p0BimM/OqxsevIopQ==", + "dev": true, + "dependencies": { + "@achrinza/node-ipc": "^9.2.5", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "joi": "^17.4.0", + "launch-editor": "^2.2.1", + "lru-cache": "^6.0.0", + "node-fetch": "^2.6.7", + "open": "^8.0.2", + "ora": "^5.3.0", + "read-pkg": "^5.1.1", + "semver": "^7.3.4", + "strip-ansi": "^6.0.0" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@vue/cli-shared-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@vue/compiler-core": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz", + "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "dependencies": { + "@babel/parser": "^7.21.3", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", + "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "dependencies": { + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", + "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-ssr": "3.3.4", + "@vue/reactivity-transform": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0", + "postcss": "^8.1.10", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", + "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "dependencies": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/@vue/component-compiler-utils/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz", + "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" + }, + "node_modules/@vue/reactivity": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.4.tgz", + "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "dependencies": { + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", + "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz", + "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "dependencies": { + "@vue/reactivity": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", + "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "dependencies": { + "@vue/runtime-core": "3.3.4", + "@vue/shared": "3.3.4", + "csstype": "^3.1.1" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz", + "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "dependencies": { + "@vue/compiler-ssr": "3.3.4", + "@vue/shared": "3.3.4" + }, + "peerDependencies": { + "vue": "3.3.4" + } + }, + "node_modules/@vue/shared": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz", + "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" + }, + "node_modules/@vue/vue-loader-v15": { + "name": "vue-loader", + "version": "15.10.2", + "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.10.2.tgz", + "integrity": "sha512-ndeSe/8KQc/nlA7TJ+OBhv2qalmj1s+uBs7yHDRFaAXscFTApBzY9F1jES3bautmgWjDlDct0fw8rPuySDLwxw==", + "dev": true, + "dependencies": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "peerDependencies": { + "css-loader": "*", + "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "prettier": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/@vue/vue-loader-v15/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/admin-lte": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/admin-lte/-/admin-lte-2.3.2.tgz", + "integrity": "sha512-ps/lwrgMGqWMMepBx26taUUzp0cHSAC34qsbTtKq3RIcV4B0Mo4w+tEMy4B6Ts5z/UZPiHkOle6MjelYuNu/kw==" + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.5", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.4", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz", + "integrity": "sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.32.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/bootstrap": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.5.tgz", + "integrity": "sha512-Px9EFI0UqI/9XEKTN9Oy1k5niss9VlThHsexEFffHtrRMZmcYvsLENa12EHD9HwbdG8bP/OcxQWMrQsAlnACVA==", + "engines": { + "node": ">=0.10.1" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.22.0.tgz", + "integrity": "sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA==", + "dependencies": { + "caniuse-lite": "^1.0.30001539", + "electron-to-chromium": "^1.4.530", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001541", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz", + "integrity": "sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw==" + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "node_modules/clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmmirror.com/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-highlight/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cli-highlight/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.1", + "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.1.tgz", + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "dependencies": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmmirror.com/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "deprecated": "Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog", + "dev": true, + "dependencies": { + "bluebird": "^3.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/core-js": { + "version": "3.32.2", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.32.2.tgz", + "integrity": "sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ==", + "hasInstallScript": true + }, + "node_modules/core-js-compat": { + "version": "3.32.2", + "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.32.2.tgz", + "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.10" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmmirror.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dev": true, + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmmirror.com/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/default-gateway/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/default-gateway/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.532", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.532.tgz", + "integrity": "sha512-piIR0QFdIGKmOJTSNg5AwxZRNWQSXlRYycqDB9Srstx4lip8KpcmRxVP6zuFWExWziHYZpJ0acX7TxqX95KBpg==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dev": true, + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "8.7.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz", + "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==", + "dev": true, + "dependencies": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^8.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-plugin-vue/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-vue/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", + "dev": true, + "dependencies": { + "@types/eslint": "^7.29.0 || ^8.4.1", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.22.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/eslint/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmmirror.com/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.1.0.tgz", + "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "dev": true, + "dependencies": { + "flatted": "^3.2.7", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/font-awesome": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.6.3.tgz", + "integrity": "sha512-I5rWuHv7MI5uYDGFT1SJohxdkTfks41QQ9fvMEzvBnWppsehXnoj8LNuW4MGtawSrHvApYVhCZSC7rk5wDycyw==", + "engines": { + "node": ">=0.10.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.6.tgz", + "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.3", + "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ionicons": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-2.0.1.tgz", + "integrity": "sha512-ySWjaL3PxB4JFMvr7/02sByWM7TQv1mrvRYFvUwFcVEEHEK/RKEP6MFhcnTmKhoPM6Ih6s5wH003fkVk1wiXLQ==" + }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "dependencies": { + "ci-info": "^1.5.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-file-esm": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-file-esm/-/is-file-esm-1.0.0.tgz", + "integrity": "sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA==", + "dev": true, + "dependencies": { + "read-pkg-up": "^7.0.1" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", + "dev": true + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/joi": { + "version": "17.10.2", + "resolved": "https://registry.npmmirror.com/joi/-/joi-17.10.2.tgz", + "integrity": "sha512-hcVhjBxRNW/is3nNLdGLIjkgXetkeGc2wyhydhz8KumG23Aerk4HPjU5zaPAMRqXQFc0xNqXTC7+zQjxr0GlKA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/jquery": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.2.0.tgz", + "integrity": "sha512-bQLMb56JzEBBs2CMzy8llOL0J1xm/JkDma6+UnF2cSPYJmvQHS9yZ+YGny/1YydkdZm8j0Ny8peiaeoWEwy9Zg==" + }, + "node_modules/jquery.md5": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jquery.md5/-/jquery.md5-1.0.0.tgz", + "integrity": "sha512-AB2L4HKKBmS1DihNztGvPZQv/gxM6JCdFC89QJASrcsktAlPeblWSeQ0iSVdWsxQXVZcmPtm8CLhFzi1UXtemg==" + }, + "node_modules/js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/knockout": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/knockout/-/knockout-3.5.1.tgz", + "integrity": "sha512-wRJ9I4az0QcsH7A4v4l0enUpkS++MBx0BnL/68KaLzJg7x1qmbjSlwEoCNol7KTYZ+pmtI7Eh2J0Nu6/2Z5J/Q==" + }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/launch-editor-middleware": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/launch-editor-middleware/-/launch-editor-middleware-2.6.0.tgz", + "integrity": "sha512-K2yxgljj5TdCeRN1lBtO3/J26+AIDDDw+04y6VAiZbWcTdBwsYN6RrZBnW5DN/QiSIdKNjKdATLUUluWWFYTIA==", + "dev": true, + "dependencies": { + "launch-editor": "^2.6.0" + } + }, + "node_modules/less": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.3.tgz", + "integrity": "sha512-A5b7O8dH9xpxvkosNrP0dFp2i/dISOJa9WwGF3WJflfqIERE2ybxh1BFDj5CovC2+jCE4M354mk90hN6ziXlVw==", + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmmirror.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "node_modules/lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "node_modules/lodash.invokemap": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz", + "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==", + "dev": true + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.pullall": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.pullall/-/lodash.pullall-4.2.0.tgz", + "integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmmirror.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.3", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.3.tgz", + "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "devOptional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/module-alias": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/module-alias/-/module-alias-2.2.3.tgz", + "integrity": "sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==", + "dev": true + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "devOptional": true + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "optional": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmmirror.com/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmmirror.com/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/postcss": { + "version": "8.4.30", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.30.tgz", + "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-loader/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dev": true, + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/progress-webpack-plugin": { + "version": "1.0.16", + "resolved": "https://registry.npmmirror.com/progress-webpack-plugin/-/progress-webpack-plugin-1.0.16.tgz", + "integrity": "sha512-sdiHuuKOzELcBANHfrupYo+r99iPRyOnw15qX+rNlVUqXGfjXdH4IgxriKwG1kNJwVswKQHMdj1hYZMcb9jFaA==", + "dev": true, + "dependencies": { + "chalk": "^2.1.0", + "figures": "^2.0.0", + "log-update": "^2.3.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "optional": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.6", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "devOptional": true + }, + "node_modules/sass": { + "version": "1.68.0", + "resolved": "https://registry.npmmirror.com/sass/-/sass-1.68.0.tgz", + "integrity": "sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "optional": true + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sirv": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/sirv/-/sirv-2.0.3.tgz", + "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.15", + "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", + "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "dev": true + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmmirror.com/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.20.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.20.0.tgz", + "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thread-loader": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/thread-loader/-/thread-loader-3.0.4.tgz", + "integrity": "sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA==", + "dev": true, + "dependencies": { + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.1.0", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" + } + }, + "node_modules/thread-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/thread-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vue": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.4.tgz", + "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-sfc": "3.3.4", + "@vue/runtime-dom": "3.3.4", + "@vue/server-renderer": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/vue-eslint-parser": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", + "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "dev": true, + "dependencies": { + "debug": "^4.3.2", + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.0.0", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-eslint-parser/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-eslint-parser/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "node_modules/vue-loader": { + "version": "17.2.2", + "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-17.2.2.tgz", + "integrity": "sha512-aqNvKJvnz2A/6VWeJZodAo8XLoAlVwBv+2Z6dama+LHsAF+P/xijQ+OfWrxIs0wcGSJduvdzvTuATzXbNKkpiw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "watchpack": "^2.4.0" + }, + "peerDependencies": { + "webpack": "^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/vue-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/vue-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/vue-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-router": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.5.tgz", + "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "node_modules/vue-style-loader/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "node_modules/vuex": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.1.0.tgz", + "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.11" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz", + "integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "is-plain-object": "^5.0.0", + "lodash.debounce": "^4.0.8", + "lodash.escape": "^4.0.1", + "lodash.flatten": "^4.4.0", + "lodash.invokemap": "^4.6.0", + "lodash.pullall": "^4.2.0", + "lodash.uniqby": "^4.7.0", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/webpack-chain": { + "version": "6.5.1", + "resolved": "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-6.5.1.tgz", + "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", + "dev": true, + "dependencies": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.14.2", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.4.6", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz", + "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.19", + "resolved": "https://registry.npmmirror.com/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", + "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/yorkie/-/yorkie-2.0.0.tgz", + "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/yorkie/node_modules/execa": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/execa/-/execa-0.8.0.tgz", + "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/yorkie/node_modules/normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yorkie/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..b0bb6e9 --- /dev/null +++ b/package.json @@ -0,0 +1,41 @@ +{ + "name": "yinmeng-admin-web", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "vue-cli-service serve --mode development --report", + "build": "vue-cli-service build --mode production", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "admin-lte": "^2.3.2", + "axios": "^1.5.1", + "bootstrap": "^3.3.5", + "core-js": "^3.8.3", + "font-awesome": "^4.6.3", + "ionicons": "^2.0.1", + "jquery": "^2.2.0", + "jquery.md5": "^1.0.0", + "knockout": "^3.5.1", + "less": "^4.2.0", + "less-loader": "^11.1.3", + "popper.js": "^1.16.1", + "vue": "^3.2.13", + "vue-router": "^4.0.3", + "vuex": "^4.0.0" + }, + "devDependencies": { + "@babel/core": "^7.12.16", + "@babel/eslint-parser": "^7.12.16", + "@vue/cli-plugin-babel": "~5.0.0", + "@vue/cli-plugin-eslint": "~5.0.0", + "@vue/cli-plugin-router": "~5.0.0", + "@vue/cli-plugin-vuex": "~5.0.0", + "@vue/cli-service": "~5.0.0", + "eslint": "^7.32.0", + "eslint-plugin-vue": "^8.0.3", + "sass": "^1.32.7", + "sass-loader": "^12.0.0", + "webpack-bundle-analyzer": "^4.9.1" + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..3b21872594a0fae39452f74932490e8bf263e22b GIT binary patch literal 1114 zcmex=_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrN1?DZF(&efC5G)W)@a9b`DN1ZlHp#0t`%y%*;$I%&e>| zEI`$@KzRlhK~^C}Lq|5@z(jVXLJ_0Ji3>TDoi-j64Z8S2#W<;`iIYoATtZSxRZU$( zQ_IBE%-q7#%Gt%$&E3P(D>x)HEIcAIDmf)JEj=SMtGJ}Jth}PKs=1}Lt-YhOYtrN? zQ>RUzF>}_U#Y>hhTfSoDs!f}>Y~8kf$Ie}c4j(ys?D&b3r!HN-a`oEv8#iw~eDwIq z(`V0LynOZX)8{W=zkUDl^B2fpj10{1AcJ@e&0m5*e=)JJFtf0O{Kd#r4#doYEUb!# zY(kEK?1_cKN=A(wB2E(*Zam1TY#j7KG^yw!mzavlL)DKUuYr9=oX48T@)_J?2!GvT z;9+J2Mjo>ugFVB)Gh5|vnSGD>G4Uhw;ay@|AM9_x&tu1zU1i^Dr(6^A@rn5Kk6ChN z*K`-{u@m@kcT3c^#>Ex6Ce_ueRj%5^Ke`+A>f+bv-@594ACCU=F*W_=d^ld9M)Xnk zTX)9`e>XqZ(Vc6{jMk%>b87# zaa=$3kNa=S8ut(BNA$bp1?y>YRzcp7l z>Z0PFD<;`%^S!$)N~5FCYKLFeyZNs7?$TS{%hmdi{5$=hVPo3z4~ye2?@4~V`N8el zWQTp%^=eELAN=mkj=rM1#Z=hg`SI!vdyp8 z`M&6v$Dh?Mf3uBF?qC+3^vKvoU+CcnZuUt}1y2>NG2=`!j;SjT);M(KT*h<3BO!}> zTRqaJZ2a=Ld#Tn>`zsr7Sly7?QSm_Q>5ut`Km751l*ep;>XYk1i#y+z+1sC4e5CT3 zu{_UqrIVX9p6&lIx94Pb(DHcp?!)zoNh{8^@lTR`vT>)MHutQ6sWqqitoi@n1OV&v Bs~rFU literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..ff2931f --- /dev/null +++ b/public/index.html @@ -0,0 +1,29 @@ + + + + + + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + + + +
+ + + + \ No newline at end of file diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..2002d0c --- /dev/null +++ b/src/App.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/api/common/menu.js b/src/api/common/menu.js new file mode 100644 index 0000000..ca1f913 --- /dev/null +++ b/src/api/common/menu.js @@ -0,0 +1,8 @@ +import request from "@/utils/request"; + +export function getMenuAll() { + return request({ + url: '/admin/menu/getall', + method: 'get' + }); +} \ No newline at end of file diff --git a/src/api/common/user.js b/src/api/common/user.js new file mode 100644 index 0000000..05f3989 --- /dev/null +++ b/src/api/common/user.js @@ -0,0 +1,15 @@ +import request from "@/utils/request"; + +export function getUser(adminId) { + return request({ + url: '/admin/user/getone?uid=' + adminId, + method: 'get' + }); +} + +export function logout() { + return request({ + url: '/login/logout', + method: 'get' + }); +} \ No newline at end of file diff --git a/src/api/system/sysconf.js b/src/api/system/sysconf.js new file mode 100644 index 0000000..16d2874 --- /dev/null +++ b/src/api/system/sysconf.js @@ -0,0 +1,8 @@ +import request from "@/utils/request"; + +export function getSysConfList() { + return request({ + url: '/admin/sysConf/getList', + method: 'get' + }); +} \ No newline at end of file diff --git a/src/assets/images/backgrounds/Thumbs.db b/src/assets/images/backgrounds/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..c5d8e525076b2e2b036adfd67a3d77f7029ee22c GIT binary patch literal 7680 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 AMF0Q* literal 0 HcmV?d00001 diff --git a/src/assets/images/backgrounds/b1.jpg b/src/assets/images/backgrounds/b1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b6503ac30a07dfebc38c2eb342d58a711b587c00 GIT binary patch literal 92454 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/backgrounds/b2.jpg b/src/assets/images/backgrounds/b2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1627cbf9b81a2834b41f811a66312dc77ea29a95 GIT binary patch literal 97283 zcmeFaXINBA(*C6) zpeMq5&Cc1%#Tx|(2|{6#P$5YnQC2}=NkKtLVPTL2K#+!a+%6Ui0BQKY=o8GR5&X*I zKgA(}7ZD!8&ps0UeH?hqe~kn0(%;7c^5kcK@%Zt7)23TECWqq|jw8pv*uV1<2gC7l z88~$`CUXT%03W*oP#ir0R(EkVvBSUv;1mf72`R}bQqoh@C&^AypP@W;it@}kTG}(T zwCAW#9bG?vjvxLt#Unp?lAMB^ih_dbGzA64X2_j+=QnHhvIQ+8^55On*RY(Qk5#kZx z6XKsBCL%dOa7q{~q$VJ|Km$E-<*Fquo7+7hqSMdPOXM#?&geGY6c%w0>{cLVkJMY6 zTt}c_bT3NpUs8WH z3X09DY(~#+i>X|*@qQGSUDYx$w?hr!vC*Coy7%lf zt_O{}-D|>-o0IN=kqUZe5Gav#b|PE{h%dpKdcaP+JZq(7AnJjf`rU>9eGfSP>H>BM zI7M*OCN&@nG+yO)jej`sdbIe064isQ$cd{Fx^Z4z-%0cy40~P?UGWIWcW(A{EJ>5B zek3BthoLCwU}@dqtCK07(u)wt)fAu@Czew#7<#vg8mo>(FHH~8Q20-dEv&N>YAF|IK1F@OgwMzBqB;9q>b2X`Yb%Ap-v*zOLK1oc zR`Uv4FulD3h>xY`ui|xjP$)03v>IP-VUJ?`7^3lVgjj(RM%to#k^g;GTZ@Dv%0$zd zh;-%h08_uqxti5H_Nf8g?qYkZ`Ps7xSU@^B$NR?nVxw;kMmrjEY!;N+6d29n6*FQT zelMpF=-Xo(bjfgLq{)n6`%`(u1H7sQK~w_b9W$*}a`UH^&szlHa}u4b6!fIY1z4cx zXFnA$!vOeFnKZIcgL>IWBD7!XeSo_h8-$dVO10}=5$U>-qqCR^4J$0O z^Fje*O*60?Bjtq<^H&ZeC8q$YDKpD9bOcJ1L=VIJ3%k7FLky-5{9}fncVK~(Iaou2 zc{bt<1!~Gi!e`!ZFya(~U}4KM`p~FS!e5;qVbcxR>s~ZpyNLy`UCj?ZLjNgC&4GVf@F1amO zKx{XdewYcdY&}Js#S^yHg+6rY9{SpDIqN<(tN7rFI4QocP_)XtYYQfIhoZb#-shA3 z%Lqz+kHa$G?2?+(&)YLQy=w~gyKFRv4sCvjzBEk~3|d>RY{`KTure91q-JFY**7

b|_o<8ch{j%rZ8U!5?#dA(|<|Hp<;iF?$0ycEZ| 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
2wEO6gyE6xR= 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�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

?W{BQ=kg zeM`Ivs&9?BG{f{JV1UZ=+xm`Ri})G&S1=rh7%2-L(KVECm9-ukEDuSVd$eiHPL2!1 zudY~k5F0M)xx#$d6IsOXA+A31>wJZ=VfsDyj+wg`4)X*-Yd0DG_-*REY)#Ahtjnr>DzJ{Q+JuG(?Wdn^3CY!|K-nh)SGv=+_)hP$Cn$=(|-%=Sbd9YbpR}U-S6D*S+S{ z1-UGjR*IMS5P1)5K&sgqZc1~8oozr{?Sv|_0#&YH4s(D3h!WM~;*QU7kEZxJ@HC%O z5(sc7AeHu_2O~<20_T2#FJ{L2?x%J&5gCXH`wMF5t}*K*-U{P<-M1z!bLf%K^&=$_ z-_Ar|*Z$Av9%?|l9?x|pW`+APpNayeKfpnPN>cZrVzl-_r|#c7&J{cY5yMB)=J%(@ z!=6$PpDML9x3mh*{9eE5#R_%Vh-7~A69<>gIu2mHFfN1C_i=C@$n6-gHa-AK|D?)`vMms`A{#wJbv&JC>HaK!<+m=7a zWb%jo(l}n^;+kP2K8B>qYZd8x0JOFl%*?@vqD48|Tk4TYN++u%A4q%;YDVPmReLx1 zO6LKn+c6npTvOGD>TF`NSI@4`+8)B*C@n)4mVA#9(vQ`xiS(-iyJjdNAK(z(&@-@_ zZp&1`Hbli;2s8)4DD+vnY&lk37x~ z;#4>$mT$n5+dGSjY(}V6qUznZX2byp)Aas5mFp~vL-?__CTi?QzGLs+`tjXb$O`AF z{aEJHc%jK08*YxA6L*O5saH5}Y#xsl(Rx#}yNTTpx!iP64!k3V#J_ss$>vZmqJ6Lg zcNFEOUkf$)kWPGJaF5$TF1W6ItgG`YIAq_L6{DH_!`)F6{CDM4=p$OXm3Y94j{HIO z6P(bdNRRJduK+KvG>+BVSh}YowZ+1j&DIt@RI{AE6WJ*H7D83f>Wi)u=Z+ zjekG=50tJ47n`~jBP$@n8*qRrWfsf6pEB&n%wvVy^~N9dB;@C)vwg8+bucE5^|@-*HclPtlh#dWm~CI5PqBWf22hbq-< z@-b59vP3TyLjoDfC!>cka_7ZX1=B0Ngq>T~x5F>$*-m04PM~@C9Ay4mdTt+4hkC0g z*|C~hy}JeA0qeOG7Z2hC`M3glBO;@Xv8l&!7R$??%2f57hVlS`W1XTl>%<1CU@Xc< zVuM$mJ5gJ_6MIMGYN#$B%v; zj0I{PdzvGRuC*>tEn&Xl9`SvpSP(KoiLO4X4=?WMFMF(o1?M6T=IKR1r~O2BzGOb6 zFY3ab`xlQtrTbJlvpxa_l%>@gV{)<+8Yt3HhR4wB!lh|4-E{3)o$o3plsl0{2w|<} z<>;oWi8)s3gw_2(4iI4TwBCL$FfL+jc=tQo9n7v-zQIA|#oC^YTYTiwjpt*%BuNXv z5}&-p>uMxU9kstiV;{z{#>G~=O!8|lFEqaubVxrMxY*(RA^vtpDhSG`y~nf9Ozl9& zrn7AxBmcC7>e3(V>%(F07k$zJ zd$C-9$3R*}0|xO!`LAP77;=|@;3g@-MpmAn?Rkmydm+sGMi#Jt)3c{4j`cy=eh15$ zzcYTDgF>OPZV8gKoWs}poxi@|=EzU)a5LiQ&Q&u5{4Aw*l&}0i$t|yWnx^-v$&yXn zZwK-GM_y6G7%V)IB^|Ia)jMmqG#fJAVQWB12B2Tb-Jf+=K4(Sn2#vat#q+nRp05PO z>iu^PAEf44DLa4o!}%0%HdY)~7WXaM2y5ohXfzH)C7b1(xeACMjDdub_hksdMxm4D zX|g-vK!P&QkhDoimgO(pp%*!VRqT(}_sQCy%G-<0n_D#S+bhgXaC5$3X0*F^ zjlrEe9i}C7buzRE%;5unHqrbH8NMfrS1inO)c*4_J=6Ywgg{ofPwkzzA@iE0=YcQJ z?@5v|ZcW8UTj(YAZfzP2>eYEQ2hrp=|NP;0m0PN=*Q`!GPPnnl2^;Dgy4`lRS#uEV zDN8jRJ*M>@5d#fnOtO`!ypmhG-Wu)3DH?ZmGjiG_b;63=dEV5Y4x+6)Mpy*g zJL=OH6-8gacwI9tkb&8C8nKYXVQYEVa{_RI?pHY9%u4--PrVR zkz5K2InEc6u2Lz}=(z~Mksn+X5&2_^mn^jP8L~)$5M}X3GySIlY2aLE_EtD%BF_|k zd-6CL+P5%8S=%Kt&pkc7pJB7urKcF)UF0rRuQpV)rl|rLWQIhh?m&hq_ze4nYkIoWHs}HX=z(SWBdOGm5^o=_@E6n7va)!%3F7KIWHNJ<0 z>Y$dg>m_OsHagaCySofse~&tMs%ntlZEVu*Ne7Hil>%P{C^+gmx<8q#Zk-IRX7&6}O635UQ&BDdj;tRWo7C6wj!r-+(|sL1bI=3^sOwO;XOH}Bk$*|j5XRAtH| zC84D}CYO{Pf{gTDW*#GJAA;YbMN<~A_8c*XIdsR)ynmp4`?G!f6ag9QnjiA^y|H9T zyu`@(eI5Dh%5(2J7i*WJ^f5p1`M+#$Am62z}vZL+e5G!6>Aa-S?nRs} zjj&}Oh&C&B$8@yiJ&?b6SG#2Y76<#!5%gfdX!87i6)m&*%SHmSd{>(QUW?#mzy!KO zLB!%e>~QfBvmaGFRLb!ob$T35pBOSBux1a*@7J(c`0HBOPkUcgYxF#{@@aw?aYJ(D zvAA_DkFb+rl%yMPIpuEIt91?Y&oXSHr1FgMhTH32veZXxO1-w+U4%?uX29F@fxaf8 zHA~kx#ogIn8m{A|4QXy!>NJCx->0&E#XYF`7o@#fn0}WF(ovs0?6)HzVf*H#ic9hD zTK=l8@IJ$j?;oC#k7gf6WY7%|rMesEeZQh6c`nvtcd1T)iGC$Owc57AT!To;sBLS^ z8|Ocl8hB_v8zOod*q6VlZdUGhIMvyU7vb$pWELArFE5}Hzi31~Jm2>@IkateRzUU zMP+E>U*XLNPwK2S&gZPX?(k~rO_@XP?FeM(Dne=fx<|Fh<6@aMA@7QO$Jy+gW91K) zz+aSzLn^zNO`{d|Tjnh$OM zFS;so6EHUPQnj&jeu$s)x)lsAq@v8K`XcrGg3XUFvDBpY>HzICpi)9*2}WdRM4rzvu!L9Ljf8DXN-09#t@QC*)`5{RUF??@xYqoLvBdnMy9u4kBo}b zm|cf#GoMmj=nXnELE&O~Mm%0xs|@pw12`rvTdUcj*9+Udp--A2K8Sqt(-AmzZ)Giw zYsd-v$EaRYUsgg}*UxM70MxijJR}~9|GlSZob~!GG+%2dI3sIdyr)AGGeN7)5u6`A zkDCiDpvXZJ1pyH=`G|Y!ItJpQtdXxH$D6rHJ^r$*gGfafbXMq!0Rens)5;t~$~_iC zsm7{U%y~D>WHE|noh&FaV`R2rWAeP}l)}4Dj-M~wcrNS#1_%#@69LD+^w_LF)>;HA z#pBMQh9s}ha`krQO$x*lxI^X=gej@kO@bV=5wG{y=?YMI5TS#l$ucw;I5gQ|b1q9U zol>_8m<9o$1_cd#NlUmOurEiGle=iO?%0KI}eggoK~AVwwtEw0>UOt z3O*?_FeymF#x3~Psm~izWMV7th_!$COEo#jb?62VCB5I4XYkh{f?0<6ogr&GZawLz z6pLHb$dBkoyaom-0cVv?DipFtWu_m`7ko)Y){(ZY2=TbBz^c$v5{-o_%IK(k)_Mal zsf);n$J0dHc|Y2gGZS?$H9%r;Cw-(~{?msmDGz#y$JiG%yTy0YACWlJEJCUe+I}2Pu&$d3hh*sy4SyG zmX#s^VCZ}OQ>J>s>LV$&4}hK!k@8ZHsuVZlC@1@3BeaN`a9l9Ye^dEqUmZ&vrZo~! zFHJo2Za`b6zYoog2>y>gEE4&AF$bE1Layt^y5& zG$~JijpC=#!uiUB54RE{;AU2T#_7f>f-QoVQ1tA&S7$>;!xRhqe-k8$$p`pVKEtfj z5*vv1D_WZujH|d8xOr1ew9{Z}FgX~`rixH}&avzJY3=IroU6O_4E6?8 zr(RT)WBo|_MZ=&7`qx*TkmNCsH3Br`5vObo8E!yPlUA8E)jlm17fHJW4(6WxK5n74 zQq>d;Uv;3sfnx&hA-*B_?#NDh^u!HMkpkTBPpb_>8fdQtzT$;zJj$veF(U^9f{BZh znAB>;$uqYCtJ%DogQAOtZ;RY7G=)j1VL?;+DOJLFtnzIf`zJ{9Fzr(5B07%IBfrLS zZo1;wSP!3rN&L~&mi4t(JHiN?@3J|)Otp_tl0UWEe{^u%A>y5cz5NW=V(kiocxFrK zyPU^bAZQ(dq&zA9xsF?I($5BMEOQ)w6L03#??thSO{+5f!FokTQtgqYi7!7Qg|vU& zi>-$}jXYM8kP+PNOEX;Ic0iFJMtnLunpjutJn2EDSh!UXJyjUjLQFw zPPa{1IjF=Al19d83~#2x;J`>{(!A(RpA@!qRD|q5P>%IF=4o;Ktj5c@%z{Q?$_y~3 zi+^tZICOosA-zO(?O^DK_W6OW%#LR#g&{^tU7}<$5|}2rJH}%qhg+s>UrT3sjOUpV zTb3{1hFe!Hd&==?r;S%K8x`LgIaa5)&3%@6HJt?lMfHP1(B`6vQf<91N~aPTM}S?3 zl*+?dHXsGp+zxfwoOAgCle`ec7JUbyROwJzo8wY`I@n^dy7dJ5yJ{r?Gr`S+Wfb>b(r`IeR|{An6LY1U32 z-i(}Yv5)buB1*=K_)#yg7S+gF;a9i7nW^Gy|M`^BAu$sA1z0@b9H~3}0m_%2RLJoN zL6Z6;{V{`Y?6Of2?>yjU>92h(4Eu0^e9LfrpouymvKl+Wy|(huGB2kRS}bjCqu@i} z7EyWaY$}>9-41ZC9+ajfv#sdF{J3xbU(@mFKQ`9?+lBzK!vlc)`rcXNs2s1wwdcct@MI7my1o#*&! zs^Lirk2YC3{=!?r5qqyI#{%e+egT~$F!RMyN>=~wo4NKREwPtLjkH#D#w{|k&aW-6 zb3XAV4WP>-@0h&x{RSb|ZH)vm-?i>CI>0@MZPXVfH zQ;}1t85d4BP7QjYYrW{=B>wH<7UKn$7M;Ed9ByM2R(F}bllc$y>-t&tb3U+ zQibUIeVV3?p@t%?Yg7!WiX>$vkn6)EJJ+vefj+-&7BzGH%RQC#BK%C_Y{WaZW5G+o zuXHm!xiun6^wX=7v@`xlsJLvXqIg8M1N^6C2rUe6vDDyCZ9GByV4P+3l&(ZiB3sm;DrDz3yG`e>_MH5LYVk-u;hJE}c8dV_w#(7wU83F6j}^)syt2z;CS zcS;f8$EaZzS75PgYC{M%<6wvZ*00iKXN)~X51q@X>?Hdi3EK;IwEY8_)3=d!%B|hC z63vd1gimXlT(NO>uwDM@Dpm;`6OX=qFK@)Ty-nm1v3Yy*|!m66#^du8YGB9vl# zqnO#K*$kD?L^~(e9@+N(O0Ws*tjC&WRJH^>LiA_W)~hP2i7(oMND|eae(BD_@PW{* z!MW4P@Yy3{aK7C|tu;l4k=Wzo!(_q>!mAA*@iHKMigi}JD|xgED$iZ86)-)}HC1y% z1d@@43*)fmpDiKDwO3VFCL*JS#<<0d#zgH_!<8$g-m>01&5H0y9>IT_^9q?-7h1fv z+rgYeR;6;hoWJ|lP}VoK#c;=LQLyE$J|n_Lk>EPf3@U=6aeY3(sPsvUg3N4*RBx1c zo>)JCfU0UzIjK|A@OLRv=hqnEuGDxg0cjq+;XPr?dmODrUa}f?Dv{m=^+&ay0TPLb zu>M^Q#BW8Xkj?{}tcDJ|AKj-ZzP~p$=fIl(6KQOSoV1#g&bz?Yr8vC{uFY*5j?{cj zEEVc3!HrRTfHGsybR=MHo3ffmlnDqlr@-p`N=S%404e?oKsUaP-{XYEo?p+(1M;x| zy^TQLdKzxQip$^YG~IA^12ABU2kyL^HJw}jd(PyW>14b)VABis*#7Mu*%6a}gDtg| ztSu|9yX&%T{`%dfuhtB*>=RECfg6h1bGX>kLVoZ_*z&&szU7&(0wZFynf(UzOLh2* z6Y01=Y15yJ?(2#nf>fDFL&!s_u*2YsEafcn?*cVuW59F8E@wH)lDXdo^GUE|ce@r~ z+FlWe3tM7~06(jPWN#Y5KNLads4?Zc;=tSY?Dmy2sA=B%WWSzXlG@W57f4J3{t4IL zNbfUgj*3eUlizP%g+d{QS?qrqnm0GXy?-`(b8EDyYYWIc)QG578@ZgUw<@$uS@B{p zC)9UtmS#HifEYJC3$_j!%7_ict2S9z+``K!kX*vY$t}7D*WCIXU`xLR+|^?xPehS3 zX1^WGTXqfUCUlnrvgYiiftiJ!FCm9QU@cUon--h@_pxnjc+uCOy%y7JhrT_q{Cz*+n?2ex=!pfEJG6sT2o4xJ>>B-@@XM&>d0vVQQmdiS&ZMvxRWoJheY{w=^fY*tvEOE2 zwpaAQyuz)(W&`u1|z6y6Q6P7-zq{rWRL&KR*BuS#=M=mVy(X7wy`cam3p=o$hR zjVdWR`|$+PBqHH(uV8cQMTA6TipZDAu9o%|0bY5g!DOUNruKx9Q)EaT(yBShUc*i z1txGyV)n+{w;{A_Z5pMHU1@O9N3GLU9o`LSmOr-RBZ+4rr`V1ogeV z!{^?6B)0t*jo`Vry_Pd&Eg}Ss)DRbT;%HSzj67-aFjd5cijFEJm!`~$Mk2A!cK~}O z?N1x|933HP5MAaIqszp9V~^?uaGPO|7t39K`9M4G8JwIS)dhJ{meh`jPb&&Cx>)-X ze~H$yC6oY{>}P%!b!9kdiQ({QZYdVg!B*Pxt_9<^(-$YD z(1q8ZatEKEO&bo=ZrFZKdv><_3&9+G+)+ZelvCu=i4$jD6wAc6k<}=His=FNeleB%4YP3BKB1E zSyiF^6ditzbSaYEU>32M?Y|RoE7OpC-WJ`KV{;KQPO>gTkXBpDsc%}BM+b@Zj z&*wBecd1-0`UOYP*u%$xi*qlLU84rc+vro6!1I*zCg*>PFA&>=KA}`v)XztyrJ?KS zate3ge+~x7J}HaBC06BTj~gnl$i1j1PqZc-VV)mX2qW?ZtMfC)4r;9xRMh6~4X^wC zBuU177BAsb+?63+o8E?stfsei7c#eh`AAd-eW|trFhd#f`uG-<| zjh1h47?8Sf>D0c(X`T3!a_;YxKG*M@5sZDL8c1+e-=$rX^^)Uebz#$~kG|3@?{&G` ziEwuA)+Rjv?+QumS{V6aNzflaJFt?Gq&V(u<>Am6|Hi+zX6moz-@6XaQCWTC{XHJf zWxmclNh$uobxY~mBj5rKI{N;1fF{DiZdG_q)HxDP+ zbWr^FfmGAG07AZRVf4R64yDBm)(}taQNwJf;ZVDg5W3jHNh2@#Jq>fhvvrMH@D2WS zsQE?8VbzTo50j@h1kF(O+_&u09sY11xNhO}%ccn$KyU?*F;jygR4TP_PI7Ux5;Kb> zG4c3s-^2vh?nw`K_LN$4gG?Cdk{wb>nbdOSK5hR@)$AS15TjJm5$`Zhp|xno2NQ1N z=&Q#+iSW$Nd*Rh;p8^M4 zBe0q;x8Cfx6^pQ}nJw`dy zFplu#78b7A(XsBw%CWO--FfK6FZLl5kkWWLook+^x3{9qN@$2-8zvSvvwu!tu>ut7 z#kJ*o8_g!#CljrR`#KD>++Z&tFrs<4KM82u{4a2XS#1PKa2-XL6Y79f)v8RrkZ@b9 zE_ymSl=-aKs4lda^^w8nmfd>{hd4|8l4%#&Xd(ir57fwLFVXafvF1Ey*M0W-=rJKq ztu?g@*-FYSA~fnUT-(9g?}k^HI`^De(PUuA#}$j!IJ@zSyK>|D@7IgX#rIy1yUS99 z+`^3P>e20ciIG7nvGT}daA~8Z+2(Tn1LODUNe_(2Bb<5y`dY5*w35BR?L>U&-qh%~ z$XDIj+e_81x3^~A)p-VR`+;+}*Thg)+NTqO?)AK!+kI42amqnpvM~v?Q((Y7cNqKetK}CVgYzv$d=N|O zz3M^tyAs^vrJL0enA{Jzn!SiV``fkYtrDw~>l1`h@^ertRJfpp)UpoelY0NsS>U0| zra9a}cq1Vv9by-vFygnD(bqOyUoW8Lz-R41P;TfpVwp==cJ6TO_y=OMadOspx!iJe zAXVSktj=AOO?HZ?e@YXISzn&*EX`Ey4qNl+z>vxZ8qyqFIX*+d`QWOlDii72pz~#4 z+j|cf%O1eg6jdomQvNabB1-vlWO|zHXlm>Da}fBcg&8sld6j-$4Cy+pZr-+eVi^Pzp_d__d`B&5N&^_#KKR(RiM||? zEeAGW7%4lDYyWJii4T~SmDWQpkaUyQxIB|rib_*2H1Ed=m-3a1L z>9VB}TNX<#Q7ZZk1#Wah^5F;Z&T`C?lQ@{?l-Q7?n|CkOZhHd}jlSQ0WUTj9@Iw3+ zV((Jx4>nyx;nFOgrHH%-*SJs2Ns)PwLkik|Jn7=bG%yfPq-N3Ncz(!PaZA&tTPghjGYmj?0L`~L2f&TuMfgIr5Y#7)L_`}3h5uKd%`h?bdBrn#oS7Q0HG$FE-$hYd$7hi;5^|72aG&m zBc=s7yPW1p@cMI7MuKSL*r=)qD-$eu)d@7Dn84BC)efcpYL^t_yG0wAF>| zw+eW#L~*QMQqf;bRC`xn?+}v48FVDTJBs`vhOCvN#*V8a>h{j+IGdrH)g8DpRidYu z!S{R6sAIY<=oQ$4V5g8?edoR%x$d%%fsoN_7mra$)&-f@*YS^xH%B{C@9;9{>~k_9 zN4>qT7Mk^}IaKg}@x0%w?e-gfjehqW&9Q#zB@p~tMik^ZSDN&FvUt4hLjm5v?~rtR z+mr9Ni^zp(Yx@z8--O?kp@I`Jy);$xX03!ZI>`d|BE>GkO$I`(Sqj$vV=82dW|OX_A|>aXLb}AEmVC=^!J|*e0h8B{rl6xa}^8Ez(J+@rsWWakk&BmNvjHt z$&16#))e$DBljelsviipB}o&CZvW`Zqj!dH%{NK-U=*=_QAKF3EYDEtSrCh#9X;{p zA|o>8*9YcureWJ&YpZ@|Y|*TtPnxjZ3t1_2mh6P)>nWM95baqx7mL)W&XdL&e01&_@R$=Zatu|{XGZW< zHYp{mdn}@pxjE=A*2Z$jgrIoVZCl-l#;|)CZ04wzmADP#Q2xr_|H=N_hS>N&vc9$- z!E4s03aNA@R636Y#x@Ee6f5%Fe(?&Kjo~0YyistlE;EMgdCfOaE!_CL4W95U~V*lw_ zZMI5QS0fHF5r@KKSDTvv#kM2$JVp3m9tgUXYW0-Nt8XaGqU$ST)*e_et$mS z&+nh7=j&cC&+*vL@pwE4Cpr38)ib8G&hhJ7`V>x*&`7j7jvI!#ke*K$lZN_&tqwp1 zuk}7R(}~hIA$i~Nj{h`s4)8b=zEj>$#<|3A)@M6*E472q)oIDaed84K)EXIzP5)Y5 zxRo2~1OHw@r-W}ZC9w*ne7BwuAX+k3%ANnf%(}lh5tR^V0PflbFIRW-xewo&jcF(( zAW5BaSOHhFPHI`jmy&!1Ee<_~<_Wr|7p*%&-_)omwNS`oulmj2!!mWOmDvY#sOakM zHOl&GoOu^w8Y{*0Ed>~rM9VTH@|tiH-8JEL&2TeU zS-nM})=!ho-OPd(n>DgIE*1N_dLqpS^(JgSeik&jXl99M^FRi-MNyKQE9}NBK{aiy zcB2;dQkOtPes)vpw8~%b%l87Si$WR}RzpTP1ZZzbsR^LAxXs)$ziXDmU3)B1S`D@WkL-%n% ziYhh~vUI*Ov`Lj}{t|xqV)xTH~z^bL!P?DCxbCFL>aNyD!q zJDn!=y7c{>m42hun zY~Wrs2BkqtElSb9Q+q!?V3bLD0mWWj{rFpgs$abWcVHo0v-!BKuA(zie2M&MY>D7;ka1z-50CpSk=J=!fJ)&?fo;W2mM( zPcM~)wiwQM1qNMBnombRLYg}}6zqD6sMd+d)>iBc7=>E8Tz-@pX6rJ0dL63csT&T= zX0SBU`aEOJ@-VsOMF&&*CnwR{U(fkXbTWtg1ohbPKW>7iQc`$uT@Dnf&_h2~W~;c4 zY#8zt>A5CFSmraeq51NYgk;1nJ8Wc$8qY1CD7%?UFw_i zdTmRm`>$Ml+L7jb_x05r1aoNSXp>! zbQ|!}DNJ24Jite}%@U4_vOr?k7|}0f1<&@;=iW%XeVQ&3Bwn%OZ@TZ;H}zy*`7sNN z9GNA3fxwxuV6Qz%<6M;ONI=?8;b@oPppp@}=;hvS4kbszYu)AW2haMvm8jEN^$$QP{H$8iMWz5Y}|7D5{^~Tea)U!+8_}SKyi9AUeiZ$^{VZ13!~}&A!}EZkO<0 zMO7TtAj)4mlku7MW;>f0CgasQ_^+n^(QI2}L z`Rw|osEujquNEk%W=A$~wQ~+0?2^*h)_!AnU*VYFoT_kTB!XHeOs~Q;_v)y*6JF8h zd7oiHeg@^8sDn)jpXJtXORdo$acAKba%L3&_~$a-&f*@S7o)%1DhdgPH4e_JB(%NX zm=E~;`7A9;gRQM09~(6b1nR0xlN8naEGloLPFN*&b&2U>g8CZtJ6obZrGelwCJX!z zo!dS3sP;r98`pJh9>~ARht#zB7o47v?z9c2iQ1$LwSKZwcP{8*pw44`IomSU z(iEfcA(3kl97@WB^1TZtRq>5vqM@`$HChTvu^z)eM?Ow%mzbG$|FD}z!2d2^_}?poI7!9o3Z@W$%_wgy(0zbftY-g}%vpNK z7pqsD8}d_&`ZC=D`+TP&Gqs4$x}Bxo1{(rur%q6-dUbmivcvl@NOUrfM$~ZP;RGom zTgoc+Xm?`nydobY`*U?MEAu|yK4=3Txj!57_Dv$iNE3EsUIjU1|sAe-X3 zQlG>gc5|q2U<82)m5Mr%l-*PulN9P7d?IX5PUg`c!1pGwt0o|JUc+|0iIsEHi??iA zwE6`$qbNDY*5UOH-3Utq!{rOEl(R>fYPG2c!p)lSGt%jTd2N-P$%zEDoR?#k>z2>1 zlI+uve`23M^&G#2qcSJ? za#S_yV4W2BPD2pysjO5~KSMe}ExP&+y0y5c2NANfOSjs0j% z{r-+?d5PrfaHg&OJx7J@rUti?SCYx??&(85p5w=A>MZVOYZ?;tg4;5e_4~J}PPy4G zD2<1F_KKsaPVyr$mmlpd2y^WT^yNH9dMC$hKKUeEyK7`$y{t9ZAQuE_lgEakENP)XUqqBK-fBxp0n>B=xi&j)Qz%`=&1LnOb%bhcb0X5 z$jrM(-cL?cOth`N#*`g1*BUc+gMOA*2yYlON|+nOJLng+4UtF`pKV|k^FkFCoAlh_ z7?K$|HrjU=5nW|?tWUY?9fk6T8>1gZ8V}XxCY0Gtq6+XDYLNtdOsDM*N60;MX$3gl zP}i^{!RS)kQ{6A|eD0Zxr_v}D`I4!MMbwxNI`AR2tCo+Pl^FBmVFNl9X4d^ji+6X8 zfWrx$Zrr(`3$^Cv)s-c5-(weDME%RqXDu1_8MBEu=?wn%hG+Op9=6B6zYI!+0{W( zKAJ`~J4TwnXZhOC%eT&2+)MWzW^2sjNDSzz`QVvW?R<9Owo;C{QHirp#NELX!USAB zqWNPeLmUN(D*afezWHj5Hz$hs8pj?ldTQ5P2Xj;~WNSz$Fttun%d<*~I$+R^gX$BX*D*OrKT#VOK!+od3V*BUC=cg4Wgbzhfk)q-(uU5gLdaF@(Tgr)2g6EyO z=pAX2PcPxA8G#Ol~dq>K5;)bG#BCvT#_-4Vx3aNI&~*vEgT z+xon(U<3(Tvl_yd43%jiEb4zorKtWFG z@KWlJcn7aot*ng#rLuDP^SzO;srKJx;~Iafgm5OeR8EH0SI%z3-s-WDvugOBvAY+W zvD2)yEiZetw^VzfE6h1*&Y1k9qgKQtYBQRy^1@q6m3QO(vMP=nYuYzG=CQBk_1M78 zyUZVjUp)mfhYZFm32qbFi*2>_og2?1jKTHC^3}y0rlwiCDkFR zK)LZ5)i%Nd#)0p@T5}IYz@>Gy_5+S?n%93w_^rUXV3HaL_8MXTT1>6<1mRw z;m5Std&sL&)D&yV{)dzTpoS9ukf2rGim|9?wY)i#Y%6u01#-XTQx+$mtj%|x9T}Oq zg&UCVX&JCah3ty!woFi{zR7yCbwM_}`nRd2)H$*W`5W!3Pd2)o!x{on1EPdVEKuGWs{|Td7!k->?^+3KQ>@B zN`Lre4=3Bl{-YrW!y~{_?o@ zo7ADp%H(QOgUWBo+8A$H%sz6mwzVfImAua}Ot4>Wb(trdEjIKxpyDggC_D5JnW;*d zNne}zI&Z$_x}QzEtv-bhfayu%o?Vuk7U`;v4KOL5lnJMB^ULwBor+_Zt&rWbdl@#i zPIxpqb;|vgY2>BdqOtA-{OG2+8_Qjh=r^gu?h1Qn7Yvp-CV;<5R&bze+_x8m0n~u7 z@^exGh4^7r>(rk0xlhHxlx}rOYUSxLvIWYzDECHJM<2!yF0 zc>XlDhu_|4%N=Ix-(P)YU?9Nq(cFK$zgcOEyma?S*O$ zP0q`+(XZp z+jEwFkC`Dh()kbU?+HotElE}0z0Y_0YQvVf(>Kspa-T)(td;DvuMCpWb+wZA3Tz}c zr7;iJLls0KyYa0|%Q-;5cW1TKr-vhj#((rN_5u|ivOj=fd?FxJ{H(abQ*Y=edYI1r z#jauI?~*K|ej)ENu_Q$88q52ns=9>@cS49UIXg26H8bxV`KJdMNqJipDmMSXfh+zB ziC!7~@zMQO9VFr-(B8G_H9TKu0zdcH;|o-qNhj$3rOK(2&72nV+J^(@Xq@~k)=vg4 zC)W+>i_1Tsb&;Cze_7 zC!qnT^xqAka=@AG+fD7g``N|YkH304bB(nz5XKTXt+_Uf1Jh7eZ zv&2m4P(sE@Ha_lL5GYz1JRq@eW9e#Zg+Vc8RBgd6E4&6J3 zOMBVV~c&s^$}&%o6~}mR@tR6Cx#im{n?qFk9eGQX>Ap? zAE#e4a97lyxQ`RARpCgF2j1tV6U%|f=1y~2y_CWO z1`3Wols{qg@dGLPi8PIY4AD@U4r`M2@NN$LjAUJg-f_HHJLla(Q?Q?tx1eq7Js>4^ z&$cWVxY7u%@aeW- zVDQeK28cksv3DW{M@s4bf)dozm5jUg?ci$uD>@wxZd+S%ykaBa9jcjq>is zyJu3X4+4b+_N?9}F4MnT?2*;0*0Exjq2%E~&0$sXUWPCA7Y`V_mW<~~V#uP3OHk>ib! z+fV2k!#@HUTmFy)gUj%dk>^5}`eh$EO?=OlkiQK9m$hPB zvwb1Ku_6p;wLV)PN8)r!L)DRknWa?F%0jvyFo zM6C5k6vY@q*&H^1&*lRJ*Qbg`JR#Gh<$^51-kDR9P<+j9M~iML!Xahb!mw{Chx_E< zNHm|M(fhuNwnHE~* z(rd#`JQ{Or&h*+?tXe+JjO9e|+NtiF9trN}>K)(fZ;Czq(DWz zS!{>=Zq#ZdB<*EX9EF{L=n`jfy4_yyO;nbhPNy%>o){0-Oy(+RqCXkAx>UFZS#9~D zmUXU$e|OEiLOyvx=~VP7LjdN@phPG8qN7_y{a#|_53yUP?qxL(dk#WtOP{W%=sZ_x zcxKRPFK|r|67M>$QWw2oC$CEAGB{~Im7Pm+MS-jv#MpH#>p4fu!E95HmRLY4Mc~l< z{IoRBUW1sluj6ZJvw*d`Th}mZ%<=TP*dU8=X6b{n^6nLq4Lp|P=g1nt(c5IpP1^sY zlMu&eXHT{N_R%WsT6DOKpn3hyJdLuM!IU8I$*`{=q_Le5D-V$5P*bq;GB|w-0^DC2 z;g{_)a7`L2+ag##34!W+46GQdS#Jf)F4Rw=KYa+4`lP~U&DIbI6n^>YQ~#~)T#CBh z`wxpus_MlTuKp)x|P-E;qX(9n@k4^Ck>J?`1S zm%go4Lq}Zf?Cpm6=nXf*@K|*oZra(8a^H@l=xmwpP(Q_-^O=oe6lYO!5ZK)irER z?=h;Yt_AbGhy9$`XHUh^{X6&``anAOo#CrIMv)?3pUzbrS zuOX)yR#|rV)f`kbOQ_NN&QOM=RotgOj_{<}B%h;~X*H)@d}-(CTP);AxPV8UuyIPf zC;g;0NoTADqA{!#@jsy8xz={t!Nb%>YH+N!MsNmlWW*UDqkbrU?QnLfcoYz>HduXV z+du5c6ji?yV4f~OVE|vI5=_N-fbVeE~b~zvK@A{-5A-tkM&677^TIF_A75WCzyep2)Y(`0IyWb{`{*c^%S~OT9@v6CQe_%Ww zW>Ff&&`I0t_HgQl;g6+5d$*ZJV8{71*}ESNZ|GJZIWD0VCzjg*_j zzBS1*D!(%D%{J~=jq}LV3B8MW#dLYm6Bb+2G^>l(4Q1UOciz)3(@|dF<=D*wr-sJT zBUb@yNNPWRtvq}JsQfK7b3gh=;7QNNTcK`YwFc6{d4y-jHro@+cTav4=yHV(@Jkrz zHXo_EIsg~DBy)Phfny%;<}Kv0P>igoo$M{E6U_}VeOiK#rS<7cnJCfZqq8-H)B#=j zbYV-OBD7>qy>*ViZW;k(l>7}Gmu=Dx1i)f->JLdcq9ap8riEaN+h@6M+El-vUGoU6 zJo1QZw^8Gxm|>20wzA7>f4};=^<85;X*Fz#a)sy6%Tp*tZmOSkBQHi^*QH07qffj8NTo()r{NV1N{NS|%Od77+I+B?_It z(+7`lb?4+ z85_zzy~>OSR!2S5Ql|%B^FH2PIeT=njk=q(+#!b2)^N5f?ag76bmq?Uae z2y0*ra&18O@>YIbDUd*8(QzkW==Duoz~J4XO8LvVcv|y1nlpAW z*J;u^AC=Ia?-$cD3X2EA`V(Adh+4Mt-POroH~Okkzxzw@AH8IEIzOoF+mkQW{eCT2 zLLeMqv!5}ya`y7xCrvw%{zI}4l=ruc;|r*M0DA`vCf-zI>7Bu(MGy3HEUaJ*&0~Z_?OrB3A?@;F#Z(mCh69h z>rCq6d%^EJzO47Q=L7fh<7>}z4ULLj#!g)@Q&(RNpp@D#m%ex+H$iYPmJ|Y^M!a2S zg}7^P3)@+p;#2ogM!R0OW%rGrAQ-gOYE?2S8*6jj-$odKmHC)q;g~h5w21Yzfe^6*}CsK1t^J|uQ8nnJb^uzT|JqZGB6nB3bP z`u#J^y%+3F*@=$LWG_5%iT>CgjHXf@Z>pA;}r26o974*la*K8`+k=*AIW6C6gq6!$>%fvYb|GX5q< zyvF)Xj$DpM_RBX|pVneR$lpxW7`M5tt=cE<^`*nrrE4!8x&Hd_J-C9p(`TP{K}9Ak zXBnkyCl3RW2JB%9E@g9IS-%MsOrEwSqSRVXR+j%DmM* zr^wP|6y_HW*_Y=pt#7@Q4~X^pvjGi>*O*!!8c{WV%o9S}Cer>RYx?L0MQw998c9hO z)3~j*mKyIdc;<$`1T=H?JvrtbWq4%PW!&|qbbU%vCG{m(ur<{u@7j=H8$PpCmt!9) z1%#1KnFhPHQXE1DgT=9114k$vOdX9d)b4J zyADM%C=JQ%LpPCdsPLtd23oXtT5(ixDO|-~qXJy@M5genW3cJB-uj5%yCjhl$6@q! zSmc1?rxKZ)32; zd1=F_l(mTS+h$0D^f6#CUyh(q5iI%<26r3DpsBM@9N zG!>9@sfr?qB@TcChw_mTF$!jG1!xB3u?2IpiVB9HBS8%m-b66;3J^=*sNe`J@#R0T z`0wxkyago>AS^OX1|rP=rvrY_6%-}_2!)qv2L`(JO(e6xLHQWoav~v2n6C`JNs1{@ z0aD)cn%WA0s5BX|=qO(d#S$1SBmsgchWEi$z~x#PoCtTYp7?JKjQ(%qd`Qq`FR=~? z8B6R9d=4%hmw^KG3u>fGan!C7%Im<0&xjzl9EiA%SHf5xQ>=9Eb#2L_P&FU(27 zu#%y~GKDzsUS1W&C72b02#0_a2{=p>L*zLq73AM%i{wZM4k}RAZpR0h99NDh$82M; zQMa^hGGOTYOqdiA5Fkb43@-p1=<9y~@-G;O5R$O?7ZgINh9KhtHjfN}fEM~bx z*Z@WO3NAvV$$3Z*8iD%Lvmy@{XXf!uEDCYurGi9pN%5%rMFlKD&^iD~I0X*?C_bqH z|JMVqNSbZ9$|^g|-o}2CR3xI~yvek75PgRgyY)Lb+=3}w@$IcYBurVVeabdyDkCcu z8yB=TyCk&I19pj#H|ybRj4SdiV~4W&8IemOqaHvUp*^UGqKOE51fU*1h5$4MRL>K^ z_?NN(s6mx`PzsBV%(mCgfU9bEcmvuJfWb9@#KZy4k^q1HD{HOLkuZcIloWi>2Uf*E zPJuOT76J+Ce8_MNlnRDq=;Z}Ghz9-r4;(j*Z9KIfJmN9&8{JZ5 zOm)Z;7R6boQ^6eal+Q9@LLtVX8fBS=S?86<6zt#d>)wDfnraEK^Nz-3kZG@~n88)n zWZ=n%xT1Eum*-8aw^XdPM&`bwyK@v#mDyV;>^)&leAg%ZPx z-jvfCn@dN+RbAE@_7mHGDZX0|VN&u{V~2Z1I1nkyL8Akq7iHsB>dO(c+LoRSc0ASL8Xb4NJwf_ReXvQGWQ2z*-QqU}-m)NBm3`j1- zU-6ZQ3`a+4kb+PDN=B7Mw8cN{BpCO15OAPNETJMmG{Izu^0fg>3;L&T1&wL2N<8n` zIxnCt4~G1cX+AJ{N#1AtjH!hLdv&8Xa>DC zy1ulZ<@rWz6CE`guZih!>d`_@N8UTnmDYNX^bGHE!mWTsC^BX{L97QItsKrU2-Ga2 z%y~&IMg_4zIw|eYdZtar%K@0Wq4ZIxqW@2!mx#v|jUv!>6=0^M0I>>60E2%xkcb{) zjhGe>gt`S#27dwOfY^gez@Zkv(o#0k0VP~7%Z4cRiG?998wd#iU4TJgjer8+4Dyzz z7r^UZGWdrcFbRM#{(j@qjzAbg`T$?|0Vo>-RsDYz9xWjDfSHH>=W|er{u^(XNKim( z|L2JZj=-P;{v-3?mt_C+uW)7zUKI_#FQvU^$>oi>pl$o5q#ZQSH-GV8T3& zLbw~^O%Y9HW`bL4lvRo&3?q?QtdQU$VY5}OGHu$IPv)hAS_SH${Myv7k%Np@Dy9kp zE%#)8{gh2-7-8sDq0DliDi7F1N2^hlvGSau$jf%pa9Mf>yw(GHv;#2Z17l=yaKo5Y zD!cP=NIDCdkwSPx$5VQR@__QU4CghG$W6wpTN1?Z>SfbGT*NN!gc%IS+l3 z8U=z{DoZZ%|;mtu{4C6*y)vvaQfN@P~gZkYf1#-9#=S6#D!#bXa{O%-s)R5tW5K zP;mmHCf-Sd3#ioyK&8BDFb6n705kTw{~LIR2uN!ORxBXCr3#7)3QYA=#&2Naqu7fX zstm{_D9q*`;ARx6odE)^6bc2fM?i~#Z46f~XFAqt|0Q+93hRXa3@wG)q%%WPy|cj5 zL9tYgN*;az8%McpIj0|pD3GTT z2MTL2l%@aLWI%I9cS89X6GY>vSe9D61q}R zD0fkvZ3im=t(fpIVhbb1T3O;Db6?A1nZidsv*RQ-&bpHC41q6w&4q0hB<8`80741FY^Z z=|YEDV6~;{9`NgzK$iT23qfTv`CI9`}MFmLXi5n;l72>|4!05F5L047U2S{nj{X)HIe>I7r| z$2Scx0PvbnJ3=m6kWerHuhmaj@`4WZdXeU8~LKL`cq|V zvGD=n={v9YH{E7M6<@7XOh#tM!{#3`sIkxDttYlmTN*0gtIy(j#|X~x8;C)*U}^LL zXK7MzWhEh8Ja+c}Q5NHxkYwPXv1%Hg+q)2a z(ex}S&5NW%#bB9OFDkm}VbK=Jq^`UreO;!yoe6QXbsduDxp*9*QL@6BH2-vJp4)sr z&kIgcV{QA+-F_@?PCz7FSjAL5fk}9jf$V(D#++oPgG{WX|3n7a4IKfIA7|PBka&jY za@E*c&K!8KggnS z6Ki7r>Lv+c>n#_J75Bx1vkGD%=9N5s+Gl+>so9bB7sH z)qkC5LDLE`bMKCaNJUoSpekl+rC1yevWZqU1PT~aO*E~E(JlFaHda^yf+_!B;}=3) zg(84L_-ADlfhDFu26F2^mVxnY;=^B~9x%N{M5rp?^Gxlf;t{Sew;qjWtp(uBao-p! z)_3mGoU(ahvwm6clNqYpZ02|E2#zBy37B5}syrcVg-4-#((jf0XrIV^X(*5SCC}|x z^U)Ema_PaL*`uxk_ng&}?%%5#dh+E_M#dIFRSoUbBUcv&R@gW2qk7mSo9v7D&#cqK zXK#trwyCA}7e{$owQ+7ZUo%QH{7JbOB#yWOyyhWY~;&t3f|ZEtl1R3`Br&FyW!I!>(MoF8inL^y_H+sTkPg zR~GELXg&GO<4tK*3T|EKly=mlxLzwUX$e_c-k zVEbz7WSUB&m%QlRXA6fC{l(e)D0`?_2)si%>(B7Ae6ONs9);c^VR%6kIHw+D$O#NxB!(X4bLRC_SZ{XJE;ap7*F#^GPEv0DE=RKpG z6k8VJUR+ZuW8Hh0J{85~4?{DCaFUWmd-^gd*@<0g@MgC@7n>k(Df^DmXCr7``{+d7 z1S&kXv|&u9XJ#?1i#NEh*D&o;1x+uk_TAaALi?Mi6tI)!pnix;@>%$54K@Ft`* z+NM*VB(UO`>g?rqn!!KdhN*!2K2x8{1Dp4~(Ue{;F{Gf`SJ?`wL#x(jzN|To^BnO8 zA45}J6-VF0oj9*p$+3fAQSX%p9`_8>k=$nPE!Eh#4v7jG3~X}{n%Hm)_!{n=6|Xm9 zCDY)p^eQxyII3JYrVK8@tM71D;pt6*v1G?^ZS^q{$~38ZU1l;4(mIWrAg#e^S*R&CmE>Rc1%jDD|~fJa5I9BJw8d|n< zcfhFIA`IVT$gfk_XTcz4+T?WYtVK6uIq0WQCzw{Zt*pnVX++}h&75@b_;ZrXXf!)u z$tust^kaLEt>QVTRjn8XO7@PoSdz!WpT`?d*FN`I7Bjif7j^p1Bae z?$oL2cMN+ z_Ik>6!~@EEY1J%sR)TPNXsB8hbv;B57%Y8o2#jb|%!^>brW#o1>r@kW%O68wVAHy>YuNS>97?A- zE=dPVvd{2;2qM=fQ_)|zH?@>ho78m!HvuS){)4pMSY`8F<`vSETxW1(4I+Y>ZuT5gu}|roEvw5in|PE}RM(lb3GZT4 zXfx8$HIH5L8>$$&D{;*Fb?pxc^|DVS>&ws3)G}LEBekdXr5x6u@DhJWN>+FGz33nC z3|oF}n)zyX!`8ch-K%14YQsy55eGgV4jlbH*%mc&O75>OCX%GxZ>jb?J#{_dBc4My z@jxH$jTQN_?krGNuXL2-E%ZAQyJ(f5LkS2nZC+D2M;Jw}t&+}o=Tr;!Rn)$8S*Q~iW#?0h469X>;003Yz&_`I1 z>yf`7Iv}}huxl(PR}>)@w{-xGWBlI$09Gyo1l;P8^L9~8hKH^7@OY#KpD}f+l@*9F zk+kz08PO^@YTUbYM~GQoCecuY{f#!I9s(1u%YKqc&8A|-E(A|KYfgqJy9sM!JS})v z^NEApUcZl0=c&VA?{43fOyo$=QOXw>+zA!flJ0i(SJ2w&-o-_eLVBD0E{P#M$A#mO z%aMwtUD7a`idx&{E+t3>3ZVSJ77Kq69^1!2?E)^m3I(86_yH6!%D3@vgKxbQBX^nt z(^N=webAuAj4$*Q-1sbb`5hRgTrwZbBT@$d-1C_5nM?zKR)?7G7K3Bq>O4xs&}#tH zf75)$Bcpj{ZmpgFjrJ>b%C3cIUE(weR3>E54PJ%63ZNw7YsQbK=nb+2K^8yjTY9L- zvM6{h&IAFdUyA;r-?ah2;Mhd=7_#b%kGw@U$+Gxg2@VR7Rcp2CRWXyJLhGZymqb=Q zUQei@iYry3JN{kMyA-i`MWPsz0d4Nt_7!JZwRln0s<*&Q{b_Of^FtZV=sJv%Idfsg zsswqy$#>;}YGj93#1N5&T*@L5O)fZT@Z&5I%AFkVq7wv)p+7p(K5>hE2keb&BB zUQc)-_{+cM&kPr)zvETmV89-q6zTH2k4(F)|a&qIx}i`SWRp_}q2sGSSp4M z5BE$u&ULHKbPeS6ud$GjbRyD%)rCkRhGP(qjEv&J{O698;lk!TI3iKF(2DcbnI$6zXPhiIT`HR%jX!Ng?A#C(Jp~E~d zw=h#fYRmNZUqdG+c_6Q*Ghd|AEj;!Ka_Ucvvxfw~iJ93+#h2aj#5mmU4-j2x4Pq#QUj1k`1R&(B1 zOcU0L57;7-E#KJ4y9-%;#-HsP-8<7zpkSEpfqYmp-JiJ>lWli)jfj_RbrSgJO&L%* zPWVu9eB{BULPOQ=n7G=*Z*9bOufFpr5zY&&%AQ2~)&R7XC$NkxQdsY+@^_*)q_;S}Agr6rPXR1R%@%;tf-Ii0GQ z{mL~y-odOYrEDSL%1yehqxN3hK3UV%_>6g>%@yom!5n;Ke?aPgm=ahEz9J{8IjItD zwf4Pj!@A$?JTSaCiec}|5O(LyG@87Xs(1;Gs632wv845;2`O#)g`_t=-oFjQL_u4* znAJX!mBX(-cabQqz>R-t_5Q6~s*G^yZ_C$FT8^8zE%`ILkTP84h!JE%*+~+oLub+`*Sbs*GLLBdgR+(zYi8hOnmD(i8_ZA z?yG#0Dj-yah!?9sVj3*-hqsiDE#rLCoq&#DqMzZd(@R(BQ;0n7&BT7L*6Xk>nA1!w z+_AdhIa}?96XN-Yjy0XoB>BApM)43IVe*%0f*6-AgNmNo4C7@(rxW3hqtaQnb%6`) z4`Q@fi(V8c9jLVhk@5?czzhkJ$mHa)u~w|Qrb-fgzfgZa*-IM9A|G|bd)}j}FD2Et zJ4*6pggni+gtpBCJXTTcWT6eCxSLCfT31S2Qz(6Uk(V5O(|aBfRH`5l+QJy zR)4p2{}!?!;?cyz1Yt{C zVBumtoLPMOOjq>e!y>gUn_G|B)=cZwH79AN%aU|$f>u4QGafB@%Fl|ExpHAlFqJ(V z8oTl6$Mxm0iuiR7`aY;?A#~a=Bt#^m31XgsDr`f8w-rT~f{J4Mrl?&qrbdd3%r;Eo z@P`r&YaL%EfWj}yxpw`5Jz5f(kv#SR{@y@GKYAedr+}KsHTqsRj!5PyKQ=BJ{uj{> zH;+BvC@x<-%*35mr(M?{s!4J^uz>`3St_l4N}0Sgt?qc2o431OztzSMdhUAW(Bb@} zJgGP0#>sQPC}5ttrND%!$#L@i;<_d{`LrG|%YNGEQKqJ#zh0alKAXPCXy+a;r=J*? z=z2&4K?VXbZWehJl z8s?SNn!V`NjcuLF#{o{2$d$gSh${{VUeIbZGrD$O==q3~D>Uyh79-0)V(1^r>Imlt zcGt|Db!vXlx>>=jDKd~qgOUyZWrK$Edsz&<_Gb3f%Q^B|1Fq)5U70~D9i>1#4pUa=^T$Vtde(ri2KH35^q9>#c;RVD?)2EF3p%R%1lBW(r$gua= zQaY~Zq#-QrDKYL&f#}#@$0(wP;Mw}98AYWQOutPH%B2fM~d9k)T z@T&%DQmJvOeOB=(>zFkNX;VBg8wy*>*K10(;})g~tIVI3AEmXd0C`q}amu?SEt7!I zuVY2ow|{E2r`QGAvG&pZA$t{Q5X_L|>Yj)mzmuteE#;qxEHY8gj)-%eQ%^|+q3kT0Yzx$cGk!}A+=iz1&Tmb=J~^4W+^`P7aXQI7Ipi2G#l3!F zUGVen&plKc8ZH%?RC{6|6xr?h%Lh$Qs_Nbw_m)~EvK&N}r9W?onPFt~qNv>;Yh(bqIKi`m?%=+GzRA8Z&V8XyH0FMQRP$&la+@FYCLeBfD96gQJ)F^5QY|Gw=sGWE z3!80Pj^1Y}SzORHo?Y)*g2Wr2^`!eU4G#FojWDn^&6e95mh>nkXSwChxMbej30=5- ze*`q(Bh*P1F%g5JC(IAwM_H;YShziC&J2}<+*j)ii_8pC7!BCL_cg<5cZ_JA62TfC z#*U{>jB+CiSxq+MCoP7}V_-rJN>eq_19zKtuQ4kd$?<$E)pyxZl2oYVSyNYs`6h;JHq#slI2GwG1 zoirgp)wn;0(!QSmvh(~5Wz~SOyqyq7YdaJ?a&hSChl+h{cJ_A`k?P=3uu0y~bICaN zdj}QcMJPuwj_P*af#@W#u4s?#h7#{d1jM=b%Z6AVmCO$D>`QhZ{x(TEQMg!sD7}W-ab$ zWG407XypAR|3~-1mAv=8S4}sVIFVGMP^HT5y%U6RWaD2rc)z_ni@fOuJ%_yr zE4b4jVqteYB&><)Vd%4}S6W$OW)}Pzp-)m0<1v^z_b0>I!lxHiZ z#nJogOSs2e`_)7KD72(uknv&$t-cS4g+lQ3m3+&B$w3P7#|+d^x5=w)JqmSW1{(M8 zjYG}fe~DKZRIX;Q`LrI8sZ~Lp`&u$vOw`-ko5j0k!Uz?xwD`#Neq1jc;eK~TFybw} z+}@v8Cf{SJa5+GF|Fk;H$+N`Ae^kqGQA%<7lfsuYXG~Gmn-oG_&>RYFj}iI@XX}>l z)=O_$ns&2)FM_|wPtK*R;~IPm&>aIqT)K3(e&J-YBfT@^0+w`ycEjTm3JD@$IwytM zv`fuE+N-?6r!WZ8z}_rbAed4|F*~fvxbY{jVbBTbnbAyqB2BZOz$&2pK0W>~fGPt1h^F9!pNY|F^c@5_I%smT!TcI^7(Z=H}e_>h64O zZy8>*5EI7uIu^7;@hEL`vfHu|orpVRI-J3C6A=He4(>wu^JCyDAddCgtM2Wo4h>b3 zpMsmCnGD?xGN2a{1PQd{Y|CP)_iT(zgWjR~hjC>39C$$}S0u~ixdMqIUnhRac^+;W tli^h_2_Zm+MNMNKjhp}5=5d#_X9K$mi^dL9nDqmE1be*mV@Hh=&C literal 0 HcmV?d00001 diff --git a/src/assets/images/loading.gif b/src/assets/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..915c1984cb8541c40f28762a09970b6578632aa3 GIT binary patch literal 3897 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/login_bg.png b/src/assets/images/login_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..17d91b87fafff7ae5bb92051ffe0830ef1107fc1 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_`5A|IT2?*XJZ3p^r=85p>QL70(Y)*K0-phB`o zkS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0x&hV7c)B=-RNPAX^Z$Rn oF0HupVP>dw*E}Dv-FVdQ&MBb@0E8(gZ2$lO literal 0 HcmV?d00001 diff --git a/src/assets/images/logo.png b/src/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..164f6cf455b7cc9c54926200fcd23c2f1cd63417 GIT binary patch literal 19068 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/woman.jpg b/src/assets/images/woman.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d4b1ca2255f579c52b057c35ab1ba123e8900b4 GIT binary patch literal 7480 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

ihlRNp$n9r%Ay*YY;Dp@nIj#cH5eVZ zH^Tz2lp0&2Pgq5OvW{4~N!pNCoI)gmFjb|k#w^{OrRpx#2{sqvf9-m7&zV3Kwngl) zGErNXYSw}Cw4=z7R02KFQcF!3cxw!|heu7dO73$VBQ=oUT4OBEi=3vIUV?jX0lsfH zw~eK}L|R08`9lkd$(NI}SMx$@!5H(4Faczznw5M5r{617_IYKBP>w{-OgiAz^_DPv z!63f(7*QQQwKv(E?Qp`;p}B2BAG%#GVf++aT6Xq`=d^kAM@P{4tsMxtGA%VaaJO#+%1 zyM|EWH&Fku%sxrqcn{z4`QR2%?18wJbK@D_6W&4q8{}YM(te5L)*yaJg{O@HiWJ)M zaHaWNPRk1M3Q08f)*#5M=%`#wK+x+An#yVCjtuhK8-!I62)QsWBzdJwmFm-Fwpoxw zJRphXljz9bIns2ymlTQ929@6eQp_e?Wj?c(;U23_5kOd<=i+~BwWHEFtcu$vbnJ1i zB~B0F*eVHKgPa0I`P7?80<})5OI@2bx&Wh&2J?C2SMhW>v^0BPt`Vu1T$d3*>XthWmQ6Y2DVmaJZd$6G+UqcIt)YK!r~3W9fwU&HUokxp%JVD-3DD zpwd(M)ML50@iu&-P~Tu;Zb_!D&V6lR5m;@UzJXSy_+L?%5_=HKKw%Q(DKH+6490$s z85WS>_N=w-UNVO7`nz6+O>%0|2+>8ft^4j?@> zMS~9}r|ZTEZ<*NI zAU9mC49?7p5N%}E=f{3BdNG+p^>{t+_neudMqp7Yh6(LTCqI0FKqzWRNZk2fY5$nS z462G&l&JwKd=w7^-{OVXdoGp-W`8GLA`hOjkxEs1)0l)6_G`bp>KC11o9;RuvbB;O z8{PhjUr);&+$iFU8rd{@5e>L;Dy=xJ5J{dGZ$BMT$&z*)jkbvohY3@Lvi<->oK+;L zE(q($pN($6&vS|U4$putUnQFDf5msT4uiEG)xY~0R@x1*%R@dl*6kO+4~paSBMwJ_a&r~LrHT1Y9ZhpPOw{%FgZfJ>eZBJ>s>gs?9y0O{PKlaPO5tHuX|Ew;y`DP zNZ+yANi}kDIE2dR4fC2kMqC6)bdp=|&+_GW={(U|IH$4Pa5Ar~|3(G>M#-=!0dILq z!xk%keBANdW&Gb?MwL4!^+ACj(NyWXe|$|Je?}OKNb<$$U!EAts=`A7Y(yTxm;e58 zFuU{?)$^=WPF6Kl{4Jmp@Z@07C`wV*>duA8Crsk{52#@ zfIc&XbvUyj1CNz%CTNyx+0~DU>aQdn-=KXgf5y?Xcnj#MQY*bMF~wsi4*jo5t6PIn zXh{LvknX9G28r0<9V%}#haj4M0%JX@4q2bzZvp)L9=;m1@9;k*WEA%Psw@M4t5I=W zm0SyOdq9v|FZDe;hh;F3o*D1oI=298jvTmeqbh7f<78JkU9C*@<>|yjs55(-*IZz< zW2SsLf@MceP>Q*l#BITI)VblgWzOh2yQ5P;twzeTx&qv%Az6DCw(y4Jj~1_;q7p$H z)>R&aBB<)9}gsHzIRapb&wGF|>c zh9tI1eV_$kMQWpX?NZnfr!2J>)G}x9n}i*ApZk3JCgxYyC&^xj6woYn;~A7&G@kiavF{61K}+Jg1}G=}mU?wX zG^2}7`RR3e" + obj.text + ""); + }); + $(idstr).btComboBox(); + _this.setDef(idstr, defval); + } else { + $.ajax({ + type: 'post', + url: val, + dataType: 'json', + success: function (json) { + $(idstr).empty(); + $.each(json, function (n, value) { + $(idstr).append(""); + }); + $(idstr).btComboBox(); + _this.setDef(idstr, defval); + } + }); + } + } else { + $(idstr).btComboBox(); + _this.setDef(idstr, defval); + } + } +} \ No newline at end of file diff --git a/src/assets/plugins/bootstrap-combobox/js/bootstrap-combobox.js b/src/assets/plugins/bootstrap-combobox/js/bootstrap-combobox.js new file mode 100644 index 0000000..e90db94 --- /dev/null +++ b/src/assets/plugins/bootstrap-combobox/js/bootstrap-combobox.js @@ -0,0 +1,493 @@ +/* ============================================================= + * bootstrap-combobox.js v1.1.8 + * ============================================================= + * Copyright 2012 Daniel Farrell + * + * 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. + * ============================================================ */ + +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + var define; + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + (function ($) { + + "use strict"; + + /* COMBOBOX PUBLIC CLASS DEFINITION + * ================================ */ + + var Combobox = function (element, options) { + this.options = $.extend({}, $.fn.combobox.defaults, options); + this.template = this.options.template || this.template + this.$source = $(element); + this.$container = this.setup(); + this.$element = this.$container.find('input[type=text]'); + this.$target = this.$container.find('input[type=hidden]'); + this.$button = this.$container.find('.dropdown-toggle'); + this.$menu = $(this.options.menu).appendTo('body'); + this.matcher = this.options.matcher || this.matcher; + this.sorter = this.options.sorter || this.sorter; + this.highlighter = this.options.highlighter || this.highlighter; + this.shown = false; + this.selected = false; + this.refresh(); + this.transferAttributes(); + this.listen(); + }; + + Combobox.prototype = { + + constructor: Combobox + + , setup: function () { + var combobox = $(this.template()); + this.$source.before(combobox); + this.$source.hide(); + return combobox; + } + + , disable: function () { + this.$element.prop('disabled', true); + this.$button.attr('disabled', true); + this.disabled = true; + this.$container.addClass('combobox-disabled'); + } + + , enable: function () { + this.$element.prop('disabled', false); + this.$button.attr('disabled', false); + this.disabled = false; + this.$container.removeClass('combobox-disabled'); + } + , parse: function () { + var that = this + , map = {} + , source = [] + , selected = false + , selectedValue = ''; + this.$source.find('option').each(function () { + var option = $(this); + if (option.val() === '') { + that.options.placeholder = option.text(); + return; + } + map[option.text()] = option.val(); + source.push(option.text()); + if (option.prop('selected')) { + selected = option.text(); + selectedValue = option.val(); + } + }) + this.map = map; + if (selected) { + this.$element.val(selected); + this.$target.val(selectedValue); + this.$container.addClass('combobox-selected'); + this.selected = true; + } + return source; + } + + , transferAttributes: function () { + this.options.placeholder = this.$source.attr('data-placeholder') || this.options.placeholder + if (this.options.appendId !== undefined) { + this.$element.attr('id', this.$source.attr('id') + this.options.appendId); + } + this.$element.attr('placeholder', this.options.placeholder) + this.$target.prop('name', this.$source.prop('name')) + this.$target.val(this.$source.val()) + this.$source.removeAttr('name') // Remove from source otherwise form will pass parameter twice. + this.$element.attr('required', this.$source.attr('required')) + this.$element.attr('rel', this.$source.attr('rel')) + this.$element.attr('title', this.$source.attr('title')) + this.$element.attr('class', this.$source.attr('class')) + this.$element.attr('tabindex', this.$source.attr('tabindex')) + this.$source.removeAttr('tabindex') + if (this.$source.attr('disabled') !== undefined) + this.disable(); + } + + , select: function () { + var val = this.$menu.find('.active').attr('data-value'); + this.$element.val(this.updater(val)).trigger('change'); + this.$target.val(this.map[val]).trigger('change'); + this.$source.val(this.map[val]).trigger('change'); + this.$container.addClass('combobox-selected'); + this.selected = true; + return this.hide(); + } + + , updater: function (item) { + return item; + } + + , show: function () { + var pos = $.extend({}, this.$element.position(), { + height: this.$element[0].offsetHeight + }); + + this.$menu + .insertAfter(this.$element) + .css({ + top: pos.top + pos.height + , left: pos.left + }) + .show(); + + $('.dropdown-menu').on('mousedown', $.proxy(this.scrollSafety, this)); + + this.shown = true; + return this; + } + + , hide: function () { + this.$menu.hide(); + $('.dropdown-menu').off('mousedown', $.proxy(this.scrollSafety, this)); + this.$element.on('blur', $.proxy(this.blur, this)); + this.shown = false; + return this; + } + + , lookup: function (event) { + this.query = this.$element.val(); + return this.process(this.source); + } + + , process: function (items) { + var that = this; + + items = $.grep(items, function (item) { + return that.matcher(item); + }) + + items = this.sorter(items); + + if (!items.length) { + return this.shown ? this.hide() : this; + } + + return this.render(items.slice(0, this.options.items)).show(); + } + + , template: function () { + if (this.options.bsVersion == '2') { + return '

' + } else { + return '
' + } + } + + , matcher: function (item) { + return ~item.toLowerCase().indexOf(this.query.toLowerCase()); + } + + , sorter: function (items) { + var beginswith = [] + , caseSensitive = [] + , caseInsensitive = [] + , item; + item = items.shift(); + while (item) { + if (!item.toLowerCase().indexOf(this.query.toLowerCase())) { beginswith.push(item); } + else if (~item.indexOf(this.query)) { caseSensitive.push(item); } + else { caseInsensitive.push(item); } + item = items.shift(); + } + + return beginswith.concat(caseSensitive, caseInsensitive); + } + + , highlighter: function (item) { + var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&'); + return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) { + return '' + match + ''; + }) + } + + , render: function (items) { + var that = this; + + items = $(items).map(function (i, item) { + i = $(that.options.item).attr('data-value', item); + i.find('a').html(that.highlighter(item)); + return i[0]; + }) + + items.first().addClass('active'); + this.$menu.html(items); + return this; + } + + , next: function (event) { + var active = this.$menu.find('.active').removeClass('active') + , next = active.next(); + + if (!next.length) { + next = $(this.$menu.find('li')[0]); + } + + next.addClass('active'); + } + + , prev: function (event) { + var active = this.$menu.find('.active').removeClass('active') + , prev = active.prev(); + + if (!prev.length) { + prev = this.$menu.find('li').last(); + } + + prev.addClass('active'); + } + + , toggle: function () { + if (!this.disabled) { + if (this.$container.hasClass('combobox-selected')) { + this.clearTarget(); + this.triggerChange(); + this.clearElement(); + } else { + if (this.shown) { + this.hide(); + } else { + this.clearElement(); + this.lookup(); + } + } + } + } + + , scrollSafety: function (e) { + if (e.target.tagName == 'UL') { + this.$element.off('blur'); + } + } + , clearElement: function () { + this.$element.val('').focus(); + } + + , clearTarget: function () { + this.$source.val(''); + this.$target.val(''); + this.$container.removeClass('combobox-selected'); + this.selected = false; + } + + , triggerChange: function () { + this.$source.trigger('change'); + } + + , refresh: function () { + this.source = this.parse(); + this.options.items = this.source.length; + } + + , listen: function () { + this.$element + .on('focus', $.proxy(this.focus, this)) + .on('blur', $.proxy(this.blur, this)) + .on('keypress', $.proxy(this.keypress, this)) + .on('keyup', $.proxy(this.keyup, this)); + + if (this.eventSupported('keydown')) { + this.$element.on('keydown', $.proxy(this.keydown, this)); + } + + this.$menu + .on('click', $.proxy(this.click, this)) + .on('mouseenter', 'li', $.proxy(this.mouseenter, this)) + .on('mouseleave', 'li', $.proxy(this.mouseleave, this)); + + this.$button + .on('click', $.proxy(this.toggle, this)); + } + + , eventSupported: function (eventName) { + var isSupported = eventName in this.$element; + if (!isSupported) { + this.$element.setAttribute(eventName, 'return;'); + isSupported = typeof this.$element[eventName] === 'function'; + } + return isSupported; + } + + , move: function (e) { + if (!this.shown) { return; } + + switch (e.keyCode) { + case 9: // tab + case 13: // enter + case 27: // escape + e.preventDefault(); + break; + + case 38: // up arrow + e.preventDefault(); + this.prev(); + this.fixMenuScroll(); + break; + + case 40: // down arrow + e.preventDefault(); + this.next(); + this.fixMenuScroll(); + break; + } + + e.stopPropagation(); + } + + , fixMenuScroll: function () { + var active = this.$menu.find('.active'); + if (active.length) { + var top = active.position().top; + var bottom = top + active.height(); + var scrollTop = this.$menu.scrollTop(); + var menuHeight = this.$menu.height(); + if (bottom > menuHeight) { + this.$menu.scrollTop(scrollTop + bottom - menuHeight); + } else if (top < 0) { + this.$menu.scrollTop(scrollTop + top); + } + } + } + + , keydown: function (e) { + this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40, 38, 9, 13, 27]); + this.move(e); + } + + , keypress: function (e) { + if (this.suppressKeyPressRepeat) { return; } + this.move(e); + } + + , keyup: function (e) { + switch (e.keyCode) { + case 40: // down arrow + if (!this.shown) { + this.toggle(); + } + break; + case 39: // right arrow + case 38: // up arrow + case 37: // left arrow + case 36: // home + case 35: // end + case 16: // shift + case 17: // ctrl + case 18: // alt + break; + + case 9: // tab + case 13: // enter + if (!this.shown) { return; } + this.select(); + break; + + case 27: // escape + if (!this.shown) { return; } + this.hide(); + break; + + default: + this.clearTarget(); + this.lookup(); + } + + e.stopPropagation(); + e.preventDefault(); + } + + , focus: function (e) { + this.focused = true; + } + + , blur: function (e) { + var that = this; + this.focused = false; + var val = this.$element.val(); + if (!this.selected && val !== '') { + this.$element.val(''); + this.$source.val('').trigger('change'); + this.$target.val('').trigger('change'); + } + if (!this.mousedover && this.shown) { setTimeout(function () { that.hide(); }, 200); } + } + + , click: function (e) { + e.stopPropagation(); + e.preventDefault(); + this.select(); + this.$element.focus(); + } + + , mouseenter: function (e) { + this.mousedover = true; + this.$menu.find('.active').removeClass('active'); + $(e.currentTarget).addClass('active'); + } + + , mouseleave: function (e) { + this.mousedover = false; + } + }; + + /* COMBOBOX PLUGIN DEFINITION + * =========================== */ + $.fn.combobox = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('combobox') + , options = typeof option == 'object' && option; + if (!data) { $this.data('combobox', (data = new Combobox(this, options))); } + if (typeof option == 'string') { data[option](); } + }); + }; + + $.fn.combobox.defaults = { + bsVersion: '4' + , menu: '' + , item: '
  • ' + }; + + $.fn.combobox.Constructor = Combobox; + + $.fn.btComboBox = $.fn.combobox; + $.fn.btComboBox.defaults = $.fn.combobox.defaults; + $.fn.btComboBox.Constructor = Combobox; + + }(jQuery)); +})); + + diff --git a/src/assets/plugins/bootstrap-datepicker/css/datepicker3.css b/src/assets/plugins/bootstrap-datepicker/css/datepicker3.css new file mode 100644 index 0000000..d21cebd --- /dev/null +++ b/src/assets/plugins/bootstrap-datepicker/css/datepicker3.css @@ -0,0 +1,853 @@ +/*! + * Datepicker for Bootstrap + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ +.datepicker { + padding: 4px; + border-radius: 4px; + direction: ltr; + /*.dow { + border-top: 1px solid #ddd !important; + }*/ +} + +.datepicker-inline { + width: 100%; +} + +.datepicker.datepicker-rtl { + direction: rtl; +} + +.datepicker.datepicker-rtl table tr td span { + float: right; +} + +.datepicker-dropdown { + top: 0; + left: 0; +} + +.datepicker-dropdown:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-top: 0; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; +} + +.datepicker-dropdown:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-top: 0; + position: absolute; +} + +.datepicker-dropdown.datepicker-orient-left:before { + left: 6px; +} + +.datepicker-dropdown.datepicker-orient-left:after { + left: 7px; +} + +.datepicker-dropdown.datepicker-orient-right:before { + right: 6px; +} + +.datepicker-dropdown.datepicker-orient-right:after { + right: 7px; +} + +.datepicker-dropdown.datepicker-orient-top:before { + top: -7px; +} + +.datepicker-dropdown.datepicker-orient-top:after { + top: -6px; +} + +.datepicker-dropdown.datepicker-orient-bottom:before { + bottom: -7px; + border-bottom: 0; + border-top: 7px solid #999; +} + +.datepicker-dropdown.datepicker-orient-bottom:after { + bottom: -6px; + border-bottom: 0; + border-top: 6px solid #fff; +} + +.datepicker>div { + display: none; +} + +.datepicker.days div.datepicker-days { + display: block; +} + +.datepicker.months div.datepicker-months { + display: block; +} + +.datepicker.years div.datepicker-years { + display: block; +} + +.datepicker table { + margin: 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.datepicker table tr td, +.datepicker table tr th { + text-align: center; + width: 30px; + height: 30px; + border-radius: 4px; + border: none; +} + +.table-striped .datepicker table tr td, +.table-striped .datepicker table tr th { + background-color: transparent; +} + +.datepicker table tr td.day:hover, +.datepicker table tr td.day.focused { + background: rgba(0, 0, 0, 0.2); + cursor: pointer; +} + +.datepicker table tr td.old, +.datepicker table tr td.new { + color: #777; +} + +.datepicker table tr td.disabled, +.datepicker table tr td.disabled:hover { + background: none; + color: #444; + cursor: default; +} + +.datepicker table tr td.today, +.datepicker table tr td.today:hover, +.datepicker table tr td.today.disabled, +.datepicker table tr td.today.disabled:hover { + color: #000000; + background: rgba(0, 0, 0, 0.2); + border-color: #ffb733; +} + +.datepicker table tr td.today:hover, +.datepicker table tr td.today:hover:hover, +.datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today.disabled:hover:hover, +.datepicker table tr td.today:focus, +.datepicker table tr td.today:hover:focus, +.datepicker table tr td.today.disabled:focus, +.datepicker table tr td.today.disabled:hover:focus, +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.today, +.open .dropdown-toggle.datepicker table tr td.today:hover, +.open .dropdown-toggle.datepicker table tr td.today.disabled, +.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { + color: #000000; + background: rgba(0, 0, 0, 0.2); + border-color: #f59e00; +} + +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.today, +.open .dropdown-toggle.datepicker table tr td.today:hover, +.open .dropdown-toggle.datepicker table tr td.today.disabled, +.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { + background-image: none; +} + +.datepicker table tr td.today.disabled, +.datepicker table tr td.today:hover.disabled, +.datepicker table tr td.today.disabled.disabled, +.datepicker table tr td.today.disabled:hover.disabled, +.datepicker table tr td.today[disabled], +.datepicker table tr td.today:hover[disabled], +.datepicker table tr td.today.disabled[disabled], +.datepicker table tr td.today.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.today, +fieldset[disabled] .datepicker table tr td.today:hover, +fieldset[disabled] .datepicker table tr td.today.disabled, +fieldset[disabled] .datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today:hover.disabled:hover, +.datepicker table tr td.today.disabled.disabled:hover, +.datepicker table tr td.today.disabled:hover.disabled:hover, +.datepicker table tr td.today[disabled]:hover, +.datepicker table tr td.today:hover[disabled]:hover, +.datepicker table tr td.today.disabled[disabled]:hover, +.datepicker table tr td.today.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.today:hover, +fieldset[disabled] .datepicker table tr td.today:hover:hover, +fieldset[disabled] .datepicker table tr td.today.disabled:hover, +fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover, +.datepicker table tr td.today.disabled:focus, +.datepicker table tr td.today:hover.disabled:focus, +.datepicker table tr td.today.disabled.disabled:focus, +.datepicker table tr td.today.disabled:hover.disabled:focus, +.datepicker table tr td.today[disabled]:focus, +.datepicker table tr td.today:hover[disabled]:focus, +.datepicker table tr td.today.disabled[disabled]:focus, +.datepicker table tr td.today.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.today:focus, +fieldset[disabled] .datepicker table tr td.today:hover:focus, +fieldset[disabled] .datepicker table tr td.today.disabled:focus, +fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today:hover.disabled:active, +.datepicker table tr td.today.disabled.disabled:active, +.datepicker table tr td.today.disabled:hover.disabled:active, +.datepicker table tr td.today[disabled]:active, +.datepicker table tr td.today:hover[disabled]:active, +.datepicker table tr td.today.disabled[disabled]:active, +.datepicker table tr td.today.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.today:active, +fieldset[disabled] .datepicker table tr td.today:hover:active, +fieldset[disabled] .datepicker table tr td.today.disabled:active, +fieldset[disabled] .datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today:hover.disabled.active, +.datepicker table tr td.today.disabled.disabled.active, +.datepicker table tr td.today.disabled:hover.disabled.active, +.datepicker table tr td.today[disabled].active, +.datepicker table tr td.today:hover[disabled].active, +.datepicker table tr td.today.disabled[disabled].active, +.datepicker table tr td.today.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.today.active, +fieldset[disabled] .datepicker table tr td.today:hover.active, +fieldset[disabled] .datepicker table tr td.today.disabled.active, +fieldset[disabled] .datepicker table tr td.today.disabled:hover.active { + background: rgba(0, 0, 0, 0.2); + border-color: #ffb733; +} + +.datepicker table tr td.today:hover:hover { + color: #000; +} + +.datepicker table tr td.today.active:hover { + color: #fff; +} + +.datepicker table tr td.range, +.datepicker table tr td.range:hover, +.datepicker table tr td.range.disabled, +.datepicker table tr td.range.disabled:hover { + background: rgba(0, 0, 0, 0.2); + border-radius: 0; +} + +.datepicker table tr td.range.today, +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today.disabled:hover { + color: #000000; + background: rgba(0, 0, 0, 0.2); + border-color: #f1a417; + border-radius: 0; +} + +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today:hover:hover, +.datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today.disabled:hover:hover, +.datepicker table tr td.range.today:focus, +.datepicker table tr td.range.today:hover:focus, +.datepicker table tr td.range.today.disabled:focus, +.datepicker table tr td.range.today.disabled:hover:focus, +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.range.today, +.open .dropdown-toggle.datepicker table tr td.range.today:hover, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { + color: #000000; + background: rgba(0, 0, 0, 0.2); + border-color: #bf800c; +} + +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.range.today, +.open .dropdown-toggle.datepicker table tr td.range.today:hover, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled, +.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { + background-image: none; +} + +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today:hover.disabled, +.datepicker table tr td.range.today.disabled.disabled, +.datepicker table tr td.range.today.disabled:hover.disabled, +.datepicker table tr td.range.today[disabled], +.datepicker table tr td.range.today:hover[disabled], +.datepicker table tr td.range.today.disabled[disabled], +.datepicker table tr td.range.today.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.range.today, +fieldset[disabled] .datepicker table tr td.range.today:hover, +fieldset[disabled] .datepicker table tr td.range.today.disabled, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today:hover.disabled:hover, +.datepicker table tr td.range.today.disabled.disabled:hover, +.datepicker table tr td.range.today.disabled:hover.disabled:hover, +.datepicker table tr td.range.today[disabled]:hover, +.datepicker table tr td.range.today:hover[disabled]:hover, +.datepicker table tr td.range.today.disabled[disabled]:hover, +.datepicker table tr td.range.today.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.range.today:hover, +fieldset[disabled] .datepicker table tr td.range.today:hover:hover, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover, +.datepicker table tr td.range.today.disabled:focus, +.datepicker table tr td.range.today:hover.disabled:focus, +.datepicker table tr td.range.today.disabled.disabled:focus, +.datepicker table tr td.range.today.disabled:hover.disabled:focus, +.datepicker table tr td.range.today[disabled]:focus, +.datepicker table tr td.range.today:hover[disabled]:focus, +.datepicker table tr td.range.today.disabled[disabled]:focus, +.datepicker table tr td.range.today.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.range.today:focus, +fieldset[disabled] .datepicker table tr td.range.today:hover:focus, +fieldset[disabled] .datepicker table tr td.range.today.disabled:focus, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today:hover.disabled:active, +.datepicker table tr td.range.today.disabled.disabled:active, +.datepicker table tr td.range.today.disabled:hover.disabled:active, +.datepicker table tr td.range.today[disabled]:active, +.datepicker table tr td.range.today:hover[disabled]:active, +.datepicker table tr td.range.today.disabled[disabled]:active, +.datepicker table tr td.range.today.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.range.today:active, +fieldset[disabled] .datepicker table tr td.range.today:hover:active, +fieldset[disabled] .datepicker table tr td.range.today.disabled:active, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today:hover.disabled.active, +.datepicker table tr td.range.today.disabled.disabled.active, +.datepicker table tr td.range.today.disabled:hover.disabled.active, +.datepicker table tr td.range.today[disabled].active, +.datepicker table tr td.range.today:hover[disabled].active, +.datepicker table tr td.range.today.disabled[disabled].active, +.datepicker table tr td.range.today.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.range.today.active, +fieldset[disabled] .datepicker table tr td.range.today:hover.active, +fieldset[disabled] .datepicker table tr td.range.today.disabled.active, +fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active { + background: rgba(0, 0, 0, 0.2); + border-color: #f1a417; +} + +.datepicker table tr td.selected, +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected.disabled:hover { + color: #ffffff; + background: rgba(0, 0, 0, 0.2); + border-color: #555555; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected:hover:hover, +.datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected.disabled:hover:hover, +.datepicker table tr td.selected:focus, +.datepicker table tr td.selected:hover:focus, +.datepicker table tr td.selected.disabled:focus, +.datepicker table tr td.selected.disabled:hover:focus, +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.selected, +.open .dropdown-toggle.datepicker table tr td.selected:hover, +.open .dropdown-toggle.datepicker table tr td.selected.disabled, +.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { + color: #ffffff; + background: rgba(0, 0, 0, 0.2); + border-color: #373737; +} + +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.selected, +.open .dropdown-toggle.datepicker table tr td.selected:hover, +.open .dropdown-toggle.datepicker table tr td.selected.disabled, +.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { + background-image: none; +} + +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected:hover.disabled, +.datepicker table tr td.selected.disabled.disabled, +.datepicker table tr td.selected.disabled:hover.disabled, +.datepicker table tr td.selected[disabled], +.datepicker table tr td.selected:hover[disabled], +.datepicker table tr td.selected.disabled[disabled], +.datepicker table tr td.selected.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.selected, +fieldset[disabled] .datepicker table tr td.selected:hover, +fieldset[disabled] .datepicker table tr td.selected.disabled, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected:hover.disabled:hover, +.datepicker table tr td.selected.disabled.disabled:hover, +.datepicker table tr td.selected.disabled:hover.disabled:hover, +.datepicker table tr td.selected[disabled]:hover, +.datepicker table tr td.selected:hover[disabled]:hover, +.datepicker table tr td.selected.disabled[disabled]:hover, +.datepicker table tr td.selected.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.selected:hover, +fieldset[disabled] .datepicker table tr td.selected:hover:hover, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover, +.datepicker table tr td.selected.disabled:focus, +.datepicker table tr td.selected:hover.disabled:focus, +.datepicker table tr td.selected.disabled.disabled:focus, +.datepicker table tr td.selected.disabled:hover.disabled:focus, +.datepicker table tr td.selected[disabled]:focus, +.datepicker table tr td.selected:hover[disabled]:focus, +.datepicker table tr td.selected.disabled[disabled]:focus, +.datepicker table tr td.selected.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.selected:focus, +fieldset[disabled] .datepicker table tr td.selected:hover:focus, +fieldset[disabled] .datepicker table tr td.selected.disabled:focus, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected:hover.disabled:active, +.datepicker table tr td.selected.disabled.disabled:active, +.datepicker table tr td.selected.disabled:hover.disabled:active, +.datepicker table tr td.selected[disabled]:active, +.datepicker table tr td.selected:hover[disabled]:active, +.datepicker table tr td.selected.disabled[disabled]:active, +.datepicker table tr td.selected.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.selected:active, +fieldset[disabled] .datepicker table tr td.selected:hover:active, +fieldset[disabled] .datepicker table tr td.selected.disabled:active, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected:hover.disabled.active, +.datepicker table tr td.selected.disabled.disabled.active, +.datepicker table tr td.selected.disabled:hover.disabled.active, +.datepicker table tr td.selected[disabled].active, +.datepicker table tr td.selected:hover[disabled].active, +.datepicker table tr td.selected.disabled[disabled].active, +.datepicker table tr td.selected.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.selected.active, +fieldset[disabled] .datepicker table tr td.selected:hover.active, +fieldset[disabled] .datepicker table tr td.selected.disabled.active, +fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active { + background: rgba(0, 0, 0, 0.2); + border-color: #555555; +} + +.datepicker table tr td.active, +.datepicker table tr td.active:hover, +.datepicker table tr td.active.disabled, +.datepicker table tr td.active.disabled:hover { + color: #ffffff; + background: rgba(0, 0, 0, 0.2); + border-color: #357ebd; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.datepicker table tr td.active:hover, +.datepicker table tr td.active:hover:hover, +.datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active.disabled:hover:hover, +.datepicker table tr td.active:focus, +.datepicker table tr td.active:hover:focus, +.datepicker table tr td.active.disabled:focus, +.datepicker table tr td.active.disabled:hover:focus, +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.active, +.open .dropdown-toggle.datepicker table tr td.active:hover, +.open .dropdown-toggle.datepicker table tr td.active.disabled, +.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { + color: #ffffff; + background: rgba(0, 0, 0, 0.5); + border-color: #285e8e; +} + +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td.active, +.open .dropdown-toggle.datepicker table tr td.active:hover, +.open .dropdown-toggle.datepicker table tr td.active.disabled, +.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { + background-image: none; +} + +.datepicker table tr td.active.disabled, +.datepicker table tr td.active:hover.disabled, +.datepicker table tr td.active.disabled.disabled, +.datepicker table tr td.active.disabled:hover.disabled, +.datepicker table tr td.active[disabled], +.datepicker table tr td.active:hover[disabled], +.datepicker table tr td.active.disabled[disabled], +.datepicker table tr td.active.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td.active, +fieldset[disabled] .datepicker table tr td.active:hover, +fieldset[disabled] .datepicker table tr td.active.disabled, +fieldset[disabled] .datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active:hover.disabled:hover, +.datepicker table tr td.active.disabled.disabled:hover, +.datepicker table tr td.active.disabled:hover.disabled:hover, +.datepicker table tr td.active[disabled]:hover, +.datepicker table tr td.active:hover[disabled]:hover, +.datepicker table tr td.active.disabled[disabled]:hover, +.datepicker table tr td.active.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td.active:hover, +fieldset[disabled] .datepicker table tr td.active:hover:hover, +fieldset[disabled] .datepicker table tr td.active.disabled:hover, +fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover, +.datepicker table tr td.active.disabled:focus, +.datepicker table tr td.active:hover.disabled:focus, +.datepicker table tr td.active.disabled.disabled:focus, +.datepicker table tr td.active.disabled:hover.disabled:focus, +.datepicker table tr td.active[disabled]:focus, +.datepicker table tr td.active:hover[disabled]:focus, +.datepicker table tr td.active.disabled[disabled]:focus, +.datepicker table tr td.active.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td.active:focus, +fieldset[disabled] .datepicker table tr td.active:hover:focus, +fieldset[disabled] .datepicker table tr td.active.disabled:focus, +fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active:hover.disabled:active, +.datepicker table tr td.active.disabled.disabled:active, +.datepicker table tr td.active.disabled:hover.disabled:active, +.datepicker table tr td.active[disabled]:active, +.datepicker table tr td.active:hover[disabled]:active, +.datepicker table tr td.active.disabled[disabled]:active, +.datepicker table tr td.active.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td.active:active, +fieldset[disabled] .datepicker table tr td.active:hover:active, +fieldset[disabled] .datepicker table tr td.active.disabled:active, +fieldset[disabled] .datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active:hover.disabled.active, +.datepicker table tr td.active.disabled.disabled.active, +.datepicker table tr td.active.disabled:hover.disabled.active, +.datepicker table tr td.active[disabled].active, +.datepicker table tr td.active:hover[disabled].active, +.datepicker table tr td.active.disabled[disabled].active, +.datepicker table tr td.active.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td.active.active, +fieldset[disabled] .datepicker table tr td.active:hover.active, +fieldset[disabled] .datepicker table tr td.active.disabled.active, +fieldset[disabled] .datepicker table tr td.active.disabled:hover.active { + background-color: #428bca; + border-color: #357ebd; +} + +.datepicker table tr td span { + display: block; + width: 23%; + height: 54px; + line-height: 54px; + float: left; + margin: 1%; + cursor: pointer; + border-radius: 4px; +} + +.datepicker table tr td span:hover { + background: rgba(0, 0, 0, 0.2); +} + +.datepicker table tr td span.disabled, +.datepicker table tr td span.disabled:hover { + background: none; + color: #444; + cursor: default; +} + +.datepicker table tr td span.active, +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active.disabled:hover { + color: #ffffff; + background-color: #428bca; + border-color: #357ebd; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active:hover:hover, +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active.disabled:hover:hover, +.datepicker table tr td span.active:focus, +.datepicker table tr td span.active:hover:focus, +.datepicker table tr td span.active.disabled:focus, +.datepicker table tr td span.active.disabled:hover:focus, +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td span.active, +.open .dropdown-toggle.datepicker table tr td span.active:hover, +.open .dropdown-toggle.datepicker table tr td span.active.disabled, +.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { + color: #ffffff; + background-color: #3276b1; + border-color: #285e8e; +} + +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active, +.open .dropdown-toggle.datepicker table tr td span.active, +.open .dropdown-toggle.datepicker table tr td span.active:hover, +.open .dropdown-toggle.datepicker table tr td span.active.disabled, +.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { + background-image: none; +} + +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active:hover.disabled, +.datepicker table tr td span.active.disabled.disabled, +.datepicker table tr td span.active.disabled:hover.disabled, +.datepicker table tr td span.active[disabled], +.datepicker table tr td span.active:hover[disabled], +.datepicker table tr td span.active.disabled[disabled], +.datepicker table tr td span.active.disabled:hover[disabled], +fieldset[disabled] .datepicker table tr td span.active, +fieldset[disabled] .datepicker table tr td span.active:hover, +fieldset[disabled] .datepicker table tr td span.active.disabled, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active:hover.disabled:hover, +.datepicker table tr td span.active.disabled.disabled:hover, +.datepicker table tr td span.active.disabled:hover.disabled:hover, +.datepicker table tr td span.active[disabled]:hover, +.datepicker table tr td span.active:hover[disabled]:hover, +.datepicker table tr td span.active.disabled[disabled]:hover, +.datepicker table tr td span.active.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td span.active:hover, +fieldset[disabled] .datepicker table tr td span.active:hover:hover, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover, +.datepicker table tr td span.active.disabled:focus, +.datepicker table tr td span.active:hover.disabled:focus, +.datepicker table tr td span.active.disabled.disabled:focus, +.datepicker table tr td span.active.disabled:hover.disabled:focus, +.datepicker table tr td span.active[disabled]:focus, +.datepicker table tr td span.active:hover[disabled]:focus, +.datepicker table tr td span.active.disabled[disabled]:focus, +.datepicker table tr td span.active.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td span.active:focus, +fieldset[disabled] .datepicker table tr td span.active:hover:focus, +fieldset[disabled] .datepicker table tr td span.active.disabled:focus, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active:hover.disabled:active, +.datepicker table tr td span.active.disabled.disabled:active, +.datepicker table tr td span.active.disabled:hover.disabled:active, +.datepicker table tr td span.active[disabled]:active, +.datepicker table tr td span.active:hover[disabled]:active, +.datepicker table tr td span.active.disabled[disabled]:active, +.datepicker table tr td span.active.disabled:hover[disabled]:active, +fieldset[disabled] .datepicker table tr td span.active:active, +fieldset[disabled] .datepicker table tr td span.active:hover:active, +fieldset[disabled] .datepicker table tr td span.active.disabled:active, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active:hover.disabled.active, +.datepicker table tr td span.active.disabled.disabled.active, +.datepicker table tr td span.active.disabled:hover.disabled.active, +.datepicker table tr td span.active[disabled].active, +.datepicker table tr td span.active:hover[disabled].active, +.datepicker table tr td span.active.disabled[disabled].active, +.datepicker table tr td span.active.disabled:hover[disabled].active, +fieldset[disabled] .datepicker table tr td span.active.active, +fieldset[disabled] .datepicker table tr td span.active:hover.active, +fieldset[disabled] .datepicker table tr td span.active.disabled.active, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active { + background-color: #428bca; + border-color: #357ebd; +} + +.datepicker table tr td span.old, +.datepicker table tr td span.new { + color: #444; +} + +.datepicker th.datepicker-switch { + width: 145px; +} + +.datepicker thead tr:first-child th, +.datepicker tfoot tr th { + cursor: pointer; +} + +.datepicker thead tr:first-child th:hover, +.datepicker tfoot tr th:hover { + background: rgba(0, 0, 0, 0.2); +} + +.datepicker .cw { + font-size: 10px; + width: 12px; + padding: 0 2px 0 5px; + vertical-align: middle; +} + +.datepicker thead tr:first-child th.cw { + cursor: default; + background-color: transparent; +} + +.input-group.date .input-group-addon i { + cursor: pointer; + width: 16px; + height: 16px; +} + +.input-daterange input { + text-align: center; +} + +.input-daterange input:first-child { + border-radius: 3px 0 0 3px; +} + +.input-daterange input:last-child { + border-radius: 0 3px 3px 0; +} + +.input-daterange .input-group-addon { + width: auto; + min-width: 16px; + padding: 4px 5px; + font-weight: normal; + line-height: 1.428571429; + text-align: center; + text-shadow: 0 1px 0 #fff; + vertical-align: middle; + background-color: #eeeeee; + border: solid #cccccc; + border-width: 1px 0; + margin-left: -5px; + margin-right: -5px; +} + +.datepicker.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + float: left; + display: none; + min-width: 160px; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 5px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + *border-right-width: 2px; + *border-bottom-width: 2px; + color: #333333; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 1.428571429; +} + +.datepicker.dropdown-menu th, +.datepicker.dropdown-menu td { + padding: 4px 5px; +} \ No newline at end of file diff --git a/src/assets/plugins/bootstrap-datepicker/js/bootstrap-datepicker.js b/src/assets/plugins/bootstrap-datepicker/js/bootstrap-datepicker.js new file mode 100644 index 0000000..541ab17 --- /dev/null +++ b/src/assets/plugins/bootstrap-datepicker/js/bootstrap-datepicker.js @@ -0,0 +1,2046 @@ +/*! + * Datepicker for Bootstrap v1.10.0 (https://github.com/uxsolutions/bootstrap-datepicker) + * + * Licensed under the Apache License v2.0 (https://www.apache.org/licenses/LICENSE-2.0) + */ + +(function (factory) { + var define; + if (typeof define === 'function' && define.amd) { + define(['jquery'], factory); + } else if (typeof exports === 'object') { + factory(require('jquery')); + } else { + factory(jQuery); + } +}(function ($, obj = undefined) { + function UTCDate() { + return new Date(Date.UTC.apply(Date, arguments)); + } + function UTCToday() { + var today = new Date(); + return UTCDate(today.getFullYear(), today.getMonth(), today.getDate()); + } + function isUTCEquals(date1, date2) { + return ( + date1.getUTCFullYear() === date2.getUTCFullYear() && + date1.getUTCMonth() === date2.getUTCMonth() && + date1.getUTCDate() === date2.getUTCDate() + ); + } + function alias(method, deprecationMsg) { + return function () { + if (deprecationMsg !== undefined) { + $.fn.datepicker.deprecated(deprecationMsg); + } + + return this[method].apply(this, arguments); + }; + } + function isValidDate(d) { + return d && !isNaN(d.getTime()); + } + + var DateArray = (function () { + var extras = { + get: function (i) { + return this.slice(i)[0]; + }, + contains: function (d) { + // Array.indexOf is not cross-browser; + // $.inArray doesn't work with Dates + var val = d && d.valueOf(); + for (var i = 0, l = this.length; i < l; i++) + // Use date arithmetic to allow dates with different times to match + if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1000 * 60 * 60 * 24) + return i; + return -1; + }, + remove: function (i) { + this.splice(i, 1); + }, + replace: function (new_array) { + if (!new_array) + return; + if (!Array.isArray(new_array)) + new_array = [new_array]; + this.clear(); + this.push.apply(this, new_array); + }, + clear: function () { + this.length = 0; + }, + copy: function () { + var a = new DateArray(); + a.replace(this); + return a; + } + }; + + return function () { + var a = []; + a.push.apply(a, arguments); + $.extend(a, extras); + return a; + }; + })(); + + + // Picker object + + var Datepicker = function (element, options) { + $.data(element, 'datepicker', this); + + this._events = []; + this._secondaryEvents = []; + + this._process_options(options); + + this.dates = new DateArray(); + this.viewDate = this.o.defaultViewDate; + this.focusDate = null; + + this.element = $(element); + this.isInput = this.element.is('input'); + this.inputField = this.isInput ? this.element : this.element.find('input'); + this.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn') : false; + if (this.component && this.component.length === 0) { + this.component = false; + } + + if (this.o.isInline === null) { + this.isInline = !this.component && !this.isInput; + } else { + this.isInline = this.o.isInline; + } + + this.picker = $(DPGlobal.template); + + // Checking templates and inserting + if (this._check_template(this.o.templates.leftArrow)) { + this.picker.find('.prev').html(this.o.templates.leftArrow); + } + + if (this._check_template(this.o.templates.rightArrow)) { + this.picker.find('.next').html(this.o.templates.rightArrow); + } + + this._buildEvents(); + this._attachEvents(); + + if (this.isInline) { + this.picker.addClass('datepicker-inline').appendTo(this.element); + } + else { + this.picker.addClass('datepicker-dropdown dropdown-menu'); + } + + if (this.o.rtl) { + this.picker.addClass('datepicker-rtl'); + } + + if (this.o.calendarWeeks) { + this.picker.find('.datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear') + .attr('colspan', function (i, val) { + return Number(val) + 1; + }); + } + + this._process_options({ + startDate: this._o.startDate, + endDate: this._o.endDate, + daysOfWeekDisabled: this.o.daysOfWeekDisabled, + daysOfWeekHighlighted: this.o.daysOfWeekHighlighted, + datesDisabled: this.o.datesDisabled + }); + + this._allow_update = false; + this.setViewMode(this.o.startView); + this._allow_update = true; + + this.fillDow(); + this.fillMonths(); + + this.update(); + + if (this.isInline) { + this.show(); + } + }; + + Datepicker.prototype = { + constructor: Datepicker, + + _resolveViewName: function (view) { + $.each(DPGlobal.viewModes, function (i, viewMode) { + if (view === i || $.inArray(view, viewMode.names) !== -1) { + view = i; + return false; + } + }); + + return view; + }, + + _resolveDaysOfWeek: function (daysOfWeek) { + if (!Array.isArray(daysOfWeek)) + daysOfWeek = daysOfWeek.split(/[,\s]*/); + return $.map(daysOfWeek, Number); + }, + + _check_template: function (tmp) { + try { + // If empty + if (tmp === undefined || tmp === "") { + return false; + } + // If no html, everything ok + if ((tmp.match(/[<>]/g) || []).length <= 0) { + return true; + } + // Checking if html is fine + var jDom = $(tmp); + return jDom.length > 0; + } + catch (ex) { + return false; + } + }, + + _process_options: function (opts) { + // Store raw options for reference + this._o = $.extend({}, this._o, opts); + // Processed options + var o = this.o = $.extend({}, this._o); + + // Check if "de-DE" style date is available, if not language should + // fallback to 2 letter code eg "de" + var lang = o.language; + if (!dates[lang]) { + lang = lang.split('-')[0]; + if (!dates[lang]) + lang = defaults.language; + } + o.language = lang; + + // Retrieve view index from any aliases + o.startView = this._resolveViewName(o.startView); + o.minViewMode = this._resolveViewName(o.minViewMode); + o.maxViewMode = this._resolveViewName(o.maxViewMode); + + // Check view is between min and max + o.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, o.startView)); + + // true, false, or Number > 0 + if (o.multidate !== true) { + o.multidate = Number(o.multidate) || false; + if (o.multidate !== false) + o.multidate = Math.max(0, o.multidate); + } + o.multidateSeparator = String(o.multidateSeparator); + + o.weekStart %= 7; + o.weekEnd = (o.weekStart + 6) % 7; + + var format = DPGlobal.parseFormat(o.format); + if (o.startDate !== -Infinity) { + if (!o.startDate) { + if (o.startDate instanceof Date) + o.startDate = this._local_to_utc(this._zero_time(o.startDate)); + else + o.startDate = DPGlobal.parseDate(o.startDate, format, o.language, o.assumeNearbyYear); + } + else { + o.startDate = -Infinity; + } + } + if (o.endDate !== Infinity) { + if (!o.endDate) { + if (o.endDate instanceof Date) + o.endDate = this._local_to_utc(this._zero_time(o.endDate)); + else + o.endDate = DPGlobal.parseDate(o.endDate, format, o.language, o.assumeNearbyYear); + } + else { + o.endDate = Infinity; + } + } + + o.daysOfWeekDisabled = this._resolveDaysOfWeek(o.daysOfWeekDisabled || []); + o.daysOfWeekHighlighted = this._resolveDaysOfWeek(o.daysOfWeekHighlighted || []); + + o.datesDisabled = o.datesDisabled || []; + if (!Array.isArray(o.datesDisabled)) { + o.datesDisabled = o.datesDisabled.split(','); + } + o.datesDisabled = $.map(o.datesDisabled, function (d) { + return DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear); + }); + + var plc = String(o.orientation).toLowerCase().split(/\s+/g), + _plc = o.orientation.toLowerCase(); + plc = $.grep(plc, function (word) { + return /^auto|left|right|top|bottom$/.test(word); + }); + o.orientation = { x: 'auto', y: 'auto' }; + if (!_plc || _plc === 'auto') + ; // no action + else if (plc.length === 1) { + switch (plc[0]) { + case 'top': + case 'bottom': + o.orientation.y = plc[0]; + break; + case 'left': + case 'right': + o.orientation.x = plc[0]; + break; + } + } + else { + _plc = $.grep(plc, function (word) { + return /^left|right$/.test(word); + }); + o.orientation.x = _plc[0] || 'auto'; + + _plc = $.grep(plc, function (word) { + return /^top|bottom$/.test(word); + }); + o.orientation.y = _plc[0] || 'auto'; + } + if (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === 'string') { + o.defaultViewDate = DPGlobal.parseDate(o.defaultViewDate, format, o.language, o.assumeNearbyYear); + } else if (o.defaultViewDate) { + var year = o.defaultViewDate.year || new Date().getFullYear(); + var month = o.defaultViewDate.month || 0; + var day = o.defaultViewDate.day || 1; + o.defaultViewDate = UTCDate(year, month, day); + } else { + o.defaultViewDate = UTCToday(); + } + }, + _applyEvents: function (evs) { + for (var i = 0, el, ch, ev; i < evs.length; i++) { + el = evs[i][0]; + if (evs[i].length === 2) { + ch = undefined; + ev = evs[i][1]; + } else if (evs[i].length === 3) { + ch = evs[i][1]; + ev = evs[i][2]; + } + el.on(ev, ch); + } + }, + _unapplyEvents: function (evs) { + for (var i = 0, el, ev, ch; i < evs.length; i++) { + el = evs[i][0]; + if (evs[i].length === 2) { + ch = undefined; + ev = evs[i][1]; + } else if (evs[i].length === 3) { + ch = evs[i][1]; + ev = evs[i][2]; + } + el.off(ev, ch); + } + }, + _buildEvents: function () { + var events = { + keyup: $.proxy(function (e) { + if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1) + this.update(); + }, this), + keydown: $.proxy(this.keydown, this), + paste: $.proxy(this.paste, this) + }; + + if (this.o.showOnFocus === true) { + events.focus = $.proxy(this.show, this); + } + + if (this.isInput) { // single input + this._events = [ + [this.element, events] + ]; + } + // component: input + button + else if (this.component && this.inputField.length) { + this._events = [ + // For components that are not readonly, allow keyboard nav + [this.inputField, events], + [this.component, { + click: $.proxy(this.show, this) + }] + ]; + } + else { + this._events = [ + [this.element, { + click: $.proxy(this.show, this), + keydown: $.proxy(this.keydown, this) + }] + ]; + } + this._events.push( + // Component: listen for blur on element descendants + [this.element, '*', { + blur: $.proxy(function (e) { + this._focused_from = e.target; + }, this) + }], + // Input: listen for blur on element + [this.element, { + blur: $.proxy(function (e) { + this._focused_from = e.target; + }, this) + }] + ); + + if (this.o.immediateUpdates) { + // Trigger input updates immediately on changed year/month + this._events.push([this.element, { + 'changeYear changeMonth': $.proxy(function (e) { + this.update(e.date); + }, this) + }]); + } + + this._secondaryEvents = [ + [this.picker, { + click: $.proxy(this.click, this) + }], + [this.picker, '.prev, .next', { + click: $.proxy(this.navArrowsClick, this) + }], + [this.picker, '.day:not(.disabled)', { + click: $.proxy(this.dayCellClick, this) + }], + [$(window), { + resize: $.proxy(this.place, this) + }], + [$(document), { + 'mousedown touchstart': $.proxy(function (e) { + // Clicked outside the datepicker, hide it + if (!( + this.element.is(e.target) || + this.element.find(e.target).length || + this.picker.is(e.target) || + this.picker.find(e.target).length || + this.isInline + )) { + this.hide(); + } + }, this) + }] + ]; + }, + _attachEvents: function () { + this._detachEvents(); + this._applyEvents(this._events); + }, + _detachEvents: function () { + this._unapplyEvents(this._events); + }, + _attachSecondaryEvents: function () { + this._detachSecondaryEvents(); + this._applyEvents(this._secondaryEvents); + }, + _detachSecondaryEvents: function () { + this._unapplyEvents(this._secondaryEvents); + }, + _trigger: function (event, altdate) { + var date = altdate || this.dates.get(-1), + local_date = this._utc_to_local(date); + + this.element.trigger({ + type: event, + date: local_date, + viewMode: this.viewMode, + dates: $.map(this.dates, this._utc_to_local), + format: $.proxy(function (ix, format) { + if (arguments.length === 0) { + ix = this.dates.length - 1; + format = this.o.format; + } else if (typeof ix === 'string') { + format = ix; + ix = this.dates.length - 1; + } + format = format || this.o.format; + var date = this.dates.get(ix); + return DPGlobal.formatDate(date, format, this.o.language); + }, this) + }); + }, + + show: function () { + if (this.inputField.is(':disabled') || (this.inputField.prop('readonly') && this.o.enableOnReadonly === false)) + return; + if (!this.isInline) + this.picker.appendTo(this.o.container); + this.place(); + this.picker.show(); + this._attachSecondaryEvents(); + this._trigger('show'); + if ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) { + $(this.element).blur(); + } + return this; + }, + + hide: function () { + if (this.isInline || !this.picker.is(':visible')) + return this; + this.focusDate = null; + this.picker.hide().detach(); + this._detachSecondaryEvents(); + this.setViewMode(this.o.startView); + + if (this.o.forceParse && this.inputField.val()) + this.setValue(); + this._trigger('hide'); + return this; + }, + + destroy: function () { + this.hide(); + this._detachEvents(); + this._detachSecondaryEvents(); + this.picker.remove(); + delete this.element.data().datepicker; + if (!this.isInput) { + delete this.element.data().date; + } + return this; + }, + + paste: function (e) { + var dateString; + if (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types + && $.inArray('text/plain', e.originalEvent.clipboardData.types) !== -1) { + dateString = e.originalEvent.clipboardData.getData('text/plain'); + } else if (window.clipboardData) { + dateString = window.clipboardData.getData('Text'); + } else { + return; + } + this.setDate(dateString); + this.update(); + e.preventDefault(); + }, + + _utc_to_local: function (utc) { + if (!utc) { + return utc; + } + + var local = new Date(utc.getTime() + (utc.getTimezoneOffset() * 60000)); + + if (local.getTimezoneOffset() !== utc.getTimezoneOffset()) { + local = new Date(utc.getTime() + (local.getTimezoneOffset() * 60000)); + } + + return local; + }, + _local_to_utc: function (local) { + return local && new Date(local.getTime() - (local.getTimezoneOffset() * 60000)); + }, + _zero_time: function (local) { + return local && new Date(local.getFullYear(), local.getMonth(), local.getDate()); + }, + _zero_utc_time: function (utc) { + return utc && UTCDate(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate()); + }, + + getDates: function () { + return $.map(this.dates, this._utc_to_local); + }, + + getUTCDates: function () { + return $.map(this.dates, function (d) { + return new Date(d); + }); + }, + + getDate: function () { + return this._utc_to_local(this.getUTCDate()); + }, + + getUTCDate: function () { + var selected_date = this.dates.get(-1); + if (selected_date !== undefined) { + return new Date(selected_date); + } else { + return null; + } + }, + + clearDates: function () { + this.inputField.val(''); + this._trigger('changeDate'); + this.update(); + if (this.o.autoclose) { + this.hide(); + } + }, + + setDates: function () { + var args = Array.isArray(arguments[0]) ? arguments[0] : arguments; + this.update.apply(this, args); + this._trigger('changeDate'); + this.setValue(); + return this; + }, + + setUTCDates: function () { + var args = Array.isArray(arguments[0]) ? arguments[0] : arguments; + this.setDates.apply(this, $.map(args, this._utc_to_local)); + return this; + }, + + setDate: alias('setDates'), + setUTCDate: alias('setUTCDates'), + remove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'), + + setValue: function () { + var formatted = this.getFormattedDate(); + this.inputField.val(formatted); + return this; + }, + + getFormattedDate: function (format) { + if (format === undefined) + format = this.o.format; + + var lang = this.o.language; + return $.map(this.dates, function (d) { + return DPGlobal.formatDate(d, format, lang); + }).join(this.o.multidateSeparator); + }, + + getStartDate: function () { + return this.o.startDate; + }, + + setStartDate: function (startDate) { + this._process_options({ startDate: startDate }); + this.update(); + this.updateNavArrows(); + return this; + }, + + getEndDate: function () { + return this.o.endDate; + }, + + setEndDate: function (endDate) { + this._process_options({ endDate: endDate }); + this.update(); + this.updateNavArrows(); + return this; + }, + + setDaysOfWeekDisabled: function (daysOfWeekDisabled) { + this._process_options({ daysOfWeekDisabled: daysOfWeekDisabled }); + this.update(); + return this; + }, + + setDaysOfWeekHighlighted: function (daysOfWeekHighlighted) { + this._process_options({ daysOfWeekHighlighted: daysOfWeekHighlighted }); + this.update(); + return this; + }, + + setDatesDisabled: function (datesDisabled) { + this._process_options({ datesDisabled: datesDisabled }); + this.update(); + return this; + }, + + place: function () { + if (this.isInline) + return this; + var calendarWidth = this.picker.outerWidth(), + calendarHeight = this.picker.outerHeight(), + visualPadding = 10, + container = $(this.o.container), + windowWidth = container.width(), + scrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(), + appendOffset = container.offset(); + + var parentsZindex = [0]; + this.element.parents().each(function () { + var itemZIndex = $(this).css('z-index'); + if (itemZIndex !== 'auto' && Number(itemZIndex) !== 0) parentsZindex.push(Number(itemZIndex)); + }); + var zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset; + var offset = this.component ? this.component.parent().offset() : this.element.offset(); + var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false); + var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false); + var left = offset.left - appendOffset.left; + var top = offset.top - appendOffset.top; + + if (this.o.container !== 'body') { + top += scrollTop; + } + + this.picker.removeClass( + 'datepicker-orient-top datepicker-orient-bottom ' + + 'datepicker-orient-right datepicker-orient-left' + ); + + if (this.o.orientation.x !== 'auto') { + this.picker.addClass('datepicker-orient-' + this.o.orientation.x); + if (this.o.orientation.x === 'right') + left -= calendarWidth - width; + } + // auto x orientation is best-placement: if it crosses a window + // edge, fudge it sideways + else { + if (offset.left < 0) { + // component is outside the window on the left side. Move it into visible range + this.picker.addClass('datepicker-orient-left'); + left -= offset.left - visualPadding; + } else if (left + calendarWidth > windowWidth) { + // the calendar passes the widow right edge. Align it to component right side + this.picker.addClass('datepicker-orient-right'); + left += width - calendarWidth; + } else { + if (this.o.rtl) { + // Default to right + this.picker.addClass('datepicker-orient-right'); + } else { + // Default to left + this.picker.addClass('datepicker-orient-left'); + } + } + } + + // auto y orientation is best-situation: top or bottom, no fudging, + // decision based on which shows more of the calendar + var yorient = this.o.orientation.y, + top_overflow; + if (yorient === 'auto') { + top_overflow = -scrollTop + top - calendarHeight; + yorient = top_overflow < 0 ? 'bottom' : 'top'; + } + + this.picker.addClass('datepicker-orient-' + yorient); + if (yorient === 'top') + top -= calendarHeight + parseInt(this.picker.css('padding-top')); + else + top += height; + + if (this.o.rtl) { + var right = windowWidth - (left + width); + this.picker.css({ + top: top, + right: right, + zIndex: zIndex + }); + } else { + this.picker.css({ + top: top, + left: left, + zIndex: zIndex + }); + } + return this; + }, + + _allow_update: true, + update: function () { + if (!this._allow_update) + return this; + + var oldDates = this.dates.copy(), + dates = [], + fromArgs = false; + if (arguments.length) { + $.each(arguments, $.proxy(function (i, date) { + if (date instanceof Date) + date = this._local_to_utc(date); + dates.push(date); + }, this)); + fromArgs = true; + } else { + dates = this.isInput + ? this.element.val() + : this.element.data('date') || this.inputField.val(); + if (dates && this.o.multidate) + dates = dates.split(this.o.multidateSeparator); + else + dates = [dates]; + delete this.element.data().date; + } + + dates = $.map(dates, $.proxy(function (date) { + return DPGlobal.parseDate(date, this.o.format, this.o.language, this.o.assumeNearbyYear); + }, this)); + dates = $.grep(dates, $.proxy(function (date) { + return ( + !this.dateWithinRange(date) || + !date + ); + }, this), true); + this.dates.replace(dates); + + if (this.o.updateViewDate) { + if (this.dates.length) + this.viewDate = new Date(this.dates.get(-1)); + else if (this.viewDate < this.o.startDate) + this.viewDate = new Date(this.o.startDate); + else if (this.viewDate > this.o.endDate) + this.viewDate = new Date(this.o.endDate); + else + this.viewDate = this.o.defaultViewDate; + } + + if (fromArgs) { + // setting date by clicking + this.setValue(); + this.element.change(); + } + else if (this.dates.length) { + // setting date by typing + if (String(oldDates) !== String(this.dates) && fromArgs) { + this._trigger('changeDate'); + this.element.change(); + } + } + if (!this.dates.length && oldDates.length) { + this._trigger('clearDate'); + this.element.change(); + } + + this.fill(); + return this; + }, + + fillDow: function () { + if (this.o.showWeekDays) { + var dowCnt = this.o.weekStart, + html = ''; + if (this.o.calendarWeeks) { + html += ' '; + } + while (dowCnt < this.o.weekStart + 7) { + html += '' + dates[this.o.language].daysMin[(dowCnt++) % 7] + ''; + } + html += ''; + this.picker.find('.datepicker-days thead').append(html); + } + }, + + fillMonths: function () { + var localDate = this._utc_to_local(this.viewDate); + var html = ''; + var focused; + for (var i = 0; i < 12; i++) { + focused = localDate && localDate.getMonth() === i ? ' focused' : ''; + html += '' + dates[this.o.language].monthsShort[i] + ''; + } + this.picker.find('.datepicker-months td').html(html); + }, + + setRange: function (range) { + if (!range || !range.length) + delete this.range; + else + this.range = $.map(range, function (d) { + return d.valueOf(); + }); + this.fill(); + }, + + getClassNames: function (date) { + var cls = [], + year = this.viewDate.getUTCFullYear(), + month = this.viewDate.getUTCMonth(), + today = UTCToday(); + if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)) { + cls.push('old'); + } else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)) { + cls.push('new'); + } + if (this.focusDate && date.valueOf() === this.focusDate.valueOf()) + cls.push('focused'); + // Compare internal UTC date with UTC today, not local today + if (this.o.todayHighlight && isUTCEquals(date, today)) { + cls.push('today'); + } + if (this.dates.contains(date) !== -1) + cls.push('active'); + if (!this.dateWithinRange(date)) { + cls.push('disabled'); + } + if (this.dateIsDisabled(date)) { + cls.push('disabled', 'disabled-date'); + } + if ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1) { + cls.push('highlighted'); + } + + if (this.range) { + if (date > this.range[0] && date < this.range[this.range.length - 1]) { + cls.push('range'); + } + if ($.inArray(date.valueOf(), this.range) !== -1) { + cls.push('selected'); + } + if (date.valueOf() === this.range[0]) { + cls.push('range-start'); + } + if (date.valueOf() === this.range[this.range.length - 1]) { + cls.push('range-end'); + } + } + return cls; + }, + + _fill_yearsView: function (selector, cssClass, factor, year, startYear, endYear, beforeFn) { + var html = ''; + var step = factor / 10; + var view = this.picker.find(selector); + var startVal = Math.floor(year / factor) * factor; + var endVal = startVal + step * 9; + var focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step; + var selected = $.map(this.dates, function (d) { + return Math.floor(d.getUTCFullYear() / step) * step; + }); + + var classes, tooltip, before; + for (var currVal = startVal - step; currVal <= endVal + step; currVal += step) { + classes = [cssClass]; + tooltip = null; + + if (currVal === startVal - step) { + classes.push('old'); + } else if (currVal === endVal + step) { + classes.push('new'); + } + if ($.inArray(currVal, selected) !== -1) { + classes.push('active'); + } + if (currVal < startYear || currVal > endYear) { + classes.push('disabled'); + } + if (currVal === focusedVal) { + classes.push('focused'); + } + + if (beforeFn !== $.noop) { + before = beforeFn(new Date(currVal, 0, 1)); + if (before === undefined) { + before = {}; + } else if (typeof before === 'boolean') { + before = { enabled: before }; + } else if (typeof before === 'string') { + before = { classes: before }; + } + if (before.enabled === false) { + classes.push('disabled'); + } + if (before.classes) { + classes = classes.concat(before.classes.split(/\s+/)); + } + if (before.tooltip) { + tooltip = before.tooltip; + } + } + + html += '' + currVal + ''; + } + + view.find('.datepicker-switch').text(startVal + '-' + endVal); + view.find('td').html(html); + }, + + fill: function () { + var d = new Date(this.viewDate), + year = d.getUTCFullYear(), + month = d.getUTCMonth(), + startYear = this.o.startDate !== -Infinity ? new Date(this.o.startDate).getUTCFullYear() : -Infinity, + startMonth = this.o.startDate !== -Infinity ? new Date(this.o.startDate).getUTCMonth() : -Infinity, + endYear = this.o.endDate !== Infinity ? new Date(this.o.endDate).getUTCFullYear() : Infinity, + endMonth = this.o.endDate !== Infinity ? new Date(this.o.endDate).getUTCMonth() : Infinity, + todaytxt = dates[this.o.language].today || dates['en'].today || '', + cleartxt = dates[this.o.language].clear || dates['en'].clear || '', + titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat, + todayDate = UTCToday(), + titleBtnVisible = (this.o.todayBtn === true || this.o.todayBtn === 'linked') && todayDate >= this.o.startDate && todayDate <= this.o.endDate && !this.weekOfDateIsDisabled(todayDate), + tooltip, + before; + if (isNaN(year) || isNaN(month)) + return; + this.picker.find('.datepicker-days .datepicker-switch') + .text(DPGlobal.formatDate(d, titleFormat, this.o.language)); + this.picker.find('tfoot .today') + .text(todaytxt) + .css('display', titleBtnVisible ? 'table-cell' : 'none'); + this.picker.find('tfoot .clear') + .text(cleartxt) + .css('display', this.o.clearBtn === true ? 'table-cell' : 'none'); + this.picker.find('thead .datepicker-title') + .text(this.o.title) + .css('display', typeof this.o.title === 'string' && this.o.title !== '' ? 'table-cell' : 'none'); + this.updateNavArrows(); + this.fillMonths(); + var prevMonth = UTCDate(year, month, 0), + day = prevMonth.getUTCDate(); + prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7) % 7); + var nextMonth = new Date(prevMonth); + if (prevMonth.getUTCFullYear() < 100) { + nextMonth.setUTCFullYear(prevMonth.getUTCFullYear()); + } + nextMonth.setUTCDate(nextMonth.getUTCDate() + 42); + nextMonth = nextMonth.valueOf(); + var html = []; + var weekDay, clsName; + while (prevMonth.valueOf() < nextMonth) { + weekDay = prevMonth.getUTCDay(); + if (weekDay === this.o.weekStart) { + html.push(''); + if (this.o.calendarWeeks) { + // ISO 8601: First week contains first thursday. + // ISO also states week starts on Monday, but we can be more abstract here. + var + // Start of current week: based on weekstart/current date + ws = new Date(+prevMonth + (this.o.weekStart - weekDay - 7) % 7 * 864e5), + // Thursday of this week + th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5), + // First Thursday of year, year from thursday + yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5), + // Calendar week: ms between thursdays, div ms per day, div 7 days + calWeek = (th - yth) / 864e5 / 7 + 1; + html.push('' + calWeek + ''); + } + } + clsName = this.getClassNames(prevMonth); + clsName.push('day'); + + var content = prevMonth.getUTCDate(); + + if (this.o.beforeShowDay !== $.noop) { + before = this.o.beforeShowDay(this._utc_to_local(prevMonth)); + if (before === undefined) + before = {}; + else if (typeof before === 'boolean') + before = { enabled: before }; + else if (typeof before === 'string') + before = { classes: before }; + if (before.enabled === false) + clsName.push('disabled'); + if (before.classes) + clsName = clsName.concat(before.classes.split(/\s+/)); + if (before.tooltip) + tooltip = before.tooltip; + if (before.content) + content = before.content; + } + + //Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2) + //Fallback to unique function for older jquery versions + if (typeof $.uniqueSort === "function") { + clsName = $.uniqueSort(clsName); + } else { + clsName = $.unique(clsName); + } + + html.push('' + content + ''); + tooltip = null; + if (weekDay === this.o.weekEnd) { + html.push(''); + } + prevMonth.setUTCDate(prevMonth.getUTCDate() + 1); + } + this.picker.find('.datepicker-days tbody').html(html.join('')); + + var monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months'; + var months = this.picker.find('.datepicker-months') + .find('.datepicker-switch') + .text(this.o.maxViewMode < 2 ? monthsTitle : year) + .end() + .find('tbody span').removeClass('active'); + + $.each(this.dates, function (i, d) { + if (d.getUTCFullYear() === year) + months.eq(d.getUTCMonth()).addClass('active'); + }); + + if (year < startYear || year > endYear) { + months.addClass('disabled'); + } + if (year === startYear) { + months.slice(0, startMonth).addClass('disabled'); + } + if (year === endYear) { + months.slice(endMonth + 1).addClass('disabled'); + } + + if (this.o.beforeShowMonth !== $.noop) { + var that = this; + $.each(months, function (i, month) { + var moDate = new Date(year, i, 1); + var before = that.o.beforeShowMonth(moDate); + if (before === undefined) + before = {}; + else if (typeof before === 'boolean') + before = { enabled: before }; + else if (typeof before === 'string') + before = { classes: before }; + if (before.enabled === false && !$(month).hasClass('disabled')) + $(month).addClass('disabled'); + if (before.classes) + $(month).addClass(before.classes); + if (before.tooltip) + $(month).prop('title', before.tooltip); + }); + } + + // Generating decade/years picker + this._fill_yearsView( + '.datepicker-years', + 'year', + 10, + year, + startYear, + endYear, + this.o.beforeShowYear + ); + + // Generating century/decades picker + this._fill_yearsView( + '.datepicker-decades', + 'decade', + 100, + year, + startYear, + endYear, + this.o.beforeShowDecade + ); + + // Generating millennium/centuries picker + this._fill_yearsView( + '.datepicker-centuries', + 'century', + 1000, + year, + startYear, + endYear, + this.o.beforeShowCentury + ); + }, + + updateNavArrows: function () { + if (!this._allow_update) + return; + + var d = new Date(this.viewDate), + year = d.getUTCFullYear(), + month = d.getUTCMonth(), + startYear = this.o.startDate !== -Infinity ? new Date(this.o.startDate).getUTCFullYear() : -Infinity, + startMonth = this.o.startDate !== -Infinity ? new Date(this.o.startDate).getUTCMonth() : -Infinity, + endYear = this.o.endDate !== Infinity ? new Date(this.o.endDate).getUTCFullYear() : Infinity, + endMonth = this.o.endDate !== Infinity ? new Date(this.o.endDate).getUTCMonth() : Infinity, + prevIsDisabled, + nextIsDisabled, + factor = 1; + switch (this.viewMode) { + case 4: + factor *= 10; + /* falls through */ + case 3: + factor *= 10; + /* falls through */ + case 2: + factor *= 10; + /* falls through */ + case 1: + prevIsDisabled = Math.floor(year / factor) * factor <= startYear; + nextIsDisabled = Math.floor(year / factor) * factor + factor > endYear; + break; + case 0: + prevIsDisabled = year <= startYear && month <= startMonth; + nextIsDisabled = year >= endYear && month >= endMonth; + break; + } + + this.picker.find('.prev').toggleClass('disabled', prevIsDisabled); + this.picker.find('.next').toggleClass('disabled', nextIsDisabled); + }, + + click: function (e) { + e.preventDefault(); + e.stopPropagation(); + + var target, dir, day, year, month; + target = $(e.target); + + // Clicked on the switch + if (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode) { + this.setViewMode(this.viewMode + 1); + } + + // Clicked on today button + if (target.hasClass('today') && !target.hasClass('day')) { + this.setViewMode(0); + this._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view'); + } + + // Clicked on clear button + if (target.hasClass('clear')) { + this.clearDates(); + } + + if (!target.hasClass('disabled')) { + // Clicked on a month, year, decade, century + if (target.hasClass('month') + || target.hasClass('year') + || target.hasClass('decade') + || target.hasClass('century')) { + this.viewDate.setUTCDate(1); + + day = 1; + if (this.viewMode === 1) { + month = target.parent().find('span').index(target); + year = this.viewDate.getUTCFullYear(); + this.viewDate.setUTCMonth(month); + } else { + month = 0; + year = Number(target.text()); + this.viewDate.setUTCFullYear(year); + } + + this._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate); + + if (this.viewMode === this.o.minViewMode) { + this._setDate(UTCDate(year, month, day)); + } else { + this.setViewMode(this.viewMode - 1); + this.fill(); + } + } + } + + if (this.picker.is(':visible') && this._focused_from) { + this._focused_from.focus(); + } + delete this._focused_from; + }, + + dayCellClick: function (e) { + var $target = $(e.currentTarget); + var timestamp = $target.data('date'); + var date = new Date(timestamp); + + if (this.o.updateViewDate) { + if (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) { + this._trigger('changeYear', this.viewDate); + } + + if (date.getUTCMonth() !== this.viewDate.getUTCMonth()) { + this._trigger('changeMonth', this.viewDate); + } + } + this._setDate(date); + }, + + // Clicked on prev or next + navArrowsClick: function (e) { + var $target = $(e.currentTarget); + var dir = $target.hasClass('prev') ? -1 : 1; + if (this.viewMode !== 0) { + dir *= DPGlobal.viewModes[this.viewMode].navStep * 12; + } + this.viewDate = this.moveMonth(this.viewDate, dir); + this._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate); + this.fill(); + }, + + _toggle_multidate: function (date) { + var ix = this.dates.contains(date); + if (!date) { + this.dates.clear(); + } + + if (ix !== -1) { + if (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive) { + this.dates.remove(ix); + } + } else if (this.o.multidate === false) { + this.dates.clear(); + this.dates.push(date); + } + else { + this.dates.push(date); + } + + if (typeof this.o.multidate === 'number') + while (this.dates.length > this.o.multidate) + this.dates.remove(0); + }, + + _setDate: function (date, which) { + if (!which || which === 'date') + this._toggle_multidate(date && new Date(date)); + if ((!which && this.o.updateViewDate) || which === 'view') + this.viewDate = date && new Date(date); + + this.fill(); + this.setValue(); + if (!which || which !== 'view') { + this._trigger('changeDate'); + } + this.inputField.trigger('change'); + if (this.o.autoclose && (!which || which === 'date')) { + this.hide(); + } + }, + + moveDay: function (date, dir) { + var newDate = new Date(date); + newDate.setUTCDate(date.getUTCDate() + dir); + + return newDate; + }, + + moveWeek: function (date, dir) { + return this.moveDay(date, dir * 7); + }, + + moveMonth: function (date, dir) { + if (!isValidDate(date)) + return this.o.defaultViewDate; + if (!dir) + return date; + var new_date = new Date(date.valueOf()), + day = new_date.getUTCDate(), + month = new_date.getUTCMonth(), + mag = Math.abs(dir), + new_month, test; + dir = dir > 0 ? 1 : -1; + if (mag === 1) { + test = dir === -1 + // If going back one month, make sure month is not current month + // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02) + ? function () { + return new_date.getUTCMonth() === month; + } + // If going forward one month, make sure month is as expected + // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02) + : function () { + return new_date.getUTCMonth() !== new_month; + }; + new_month = month + dir; + new_date.setUTCMonth(new_month); + // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11 + new_month = (new_month + 12) % 12; + } + else { + // For magnitudes >1, move one month at a time... + for (var i = 0; i < mag; i++) + // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)... + new_date = this.moveMonth(new_date, dir); + // ...then reset the day, keeping it in the new month + new_month = new_date.getUTCMonth(); + new_date.setUTCDate(day); + test = function () { + return new_month !== new_date.getUTCMonth(); + }; + } + // Common date-resetting loop -- if date is beyond end of month, make it + // end of month + while (test()) { + new_date.setUTCDate(--day); + new_date.setUTCMonth(new_month); + } + return new_date; + }, + + moveYear: function (date, dir) { + return this.moveMonth(date, dir * 12); + }, + + moveAvailableDate: function (date, dir, fn) { + do { + date = this[fn](date, dir); + + if (!this.dateWithinRange(date)) + return false; + + fn = 'moveDay'; + } + while (this.dateIsDisabled(date)); + + return date; + }, + + weekOfDateIsDisabled: function (date) { + return $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1; + }, + + dateIsDisabled: function (date) { + return ( + this.weekOfDateIsDisabled(date) || + $.grep(this.o.datesDisabled, function (d) { + return isUTCEquals(date, d); + }).length > 0 + ); + }, + + dateWithinRange: function (date) { + return date >= this.o.startDate && date <= this.o.endDate; + }, + + keydown: function (e) { + if (!this.picker.is(':visible')) { + if (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker + this.show(); + e.stopPropagation(); + } + return; + } + var dateChanged = false, + dir, newViewDate, + focusDate = this.focusDate || this.viewDate; + switch (e.keyCode) { + case 27: // escape + if (this.focusDate) { + this.focusDate = null; + this.viewDate = this.dates.get(-1) || this.viewDate; + this.fill(); + } + else + this.hide(); + e.preventDefault(); + e.stopPropagation(); + break; + case 37: // left + case 38: // up + case 39: // right + case 40: // down + if (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7) + break; + dir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1; + if (this.viewMode === 0) { + if (e.ctrlKey) { + newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear'); + + if (newViewDate) + this._trigger('changeYear', this.viewDate); + } else if (e.shiftKey) { + newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth'); + + if (newViewDate) + this._trigger('changeMonth', this.viewDate); + } else if (e.keyCode === 37 || e.keyCode === 39) { + newViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay'); + } else if (!this.weekOfDateIsDisabled(focusDate)) { + newViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek'); + } + } else if (this.viewMode === 1) { + if (e.keyCode === 38 || e.keyCode === 40) { + dir = dir * 4; + } + newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth'); + } else if (this.viewMode === 2) { + if (e.keyCode === 38 || e.keyCode === 40) { + dir = dir * 4; + } + newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear'); + } + if (newViewDate) { + this.focusDate = this.viewDate = newViewDate; + this.setValue(); + this.fill(); + e.preventDefault(); + } + break; + case 13: // enter + if (!this.o.forceParse) + break; + focusDate = this.focusDate || this.dates.get(-1) || this.viewDate; + if (this.o.keyboardNavigation) { + this._toggle_multidate(focusDate); + dateChanged = true; + } + this.focusDate = null; + this.viewDate = this.dates.get(-1) || this.viewDate; + this.setValue(); + this.fill(); + if (this.picker.is(':visible')) { + e.preventDefault(); + e.stopPropagation(); + if (this.o.autoclose) + this.hide(); + } + break; + case 9: // tab + this.focusDate = null; + this.viewDate = this.dates.get(-1) || this.viewDate; + this.fill(); + this.hide(); + break; + } + if (dateChanged) { + if (this.dates.length) + this._trigger('changeDate'); + else + this._trigger('clearDate'); + this.inputField.trigger('change'); + } + }, + + setViewMode: function (viewMode) { + this.viewMode = viewMode; + this.picker + .children('div') + .hide() + .filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName) + .show(); + this.updateNavArrows(); + this._trigger('changeViewMode', new Date(this.viewDate)); + } + }; + + var DateRangePicker = function (element, options) { + $.data(element, 'datepicker', this); + this.element = $(element); + this.inputs = $.map(options.inputs, function (i) { + return i.jquery ? i[0] : i; + }); + delete options.inputs; + + this.keepEmptyValues = options.keepEmptyValues; + delete options.keepEmptyValues; + + datepickerPlugin.call($(this.inputs), options) + .on('changeDate', $.proxy(this.dateUpdated, this)); + + this.pickers = $.map(this.inputs, function (i) { + return $.data(i, 'datepicker'); + }); + this.updateDates(); + }; + DateRangePicker.prototype = { + updateDates: function () { + this.dates = $.map(this.pickers, function (i) { + return i.getUTCDate(); + }); + this.updateRanges(); + }, + updateRanges: function () { + var range = $.map(this.dates, function (d) { + return d.valueOf(); + }); + $.each(this.pickers, function (i, p) { + p.setRange(range); + }); + }, + clearDates: function () { + $.each(this.pickers, function (i, p) { + p.clearDates(); + }); + }, + dateUpdated: function (e) { + // `this.updating` is a workaround for preventing infinite recursion + // between `changeDate` triggering and `setUTCDate` calling. Until + // there is a better mechanism. + if (this.updating) + return; + this.updating = true; + + var dp = $.data(e.target, 'datepicker'); + + if (dp === undefined) { + return; + } + + var new_date = dp.getUTCDate(), + keep_empty_values = this.keepEmptyValues, + i = $.inArray(e.target, this.inputs), + j = i - 1, + k = i + 1, + l = this.inputs.length; + if (i === -1) + return; + + $.each(this.pickers, function (i, p) { + if (!p.getUTCDate() && (p === dp || !keep_empty_values)) + p.setUTCDate(new_date); + }); + + if (new_date < this.dates[j]) { + // Date being moved earlier/left + while (j >= 0 && new_date < this.dates[j] && (this.pickers[j].element.val() || "").length > 0) { + this.pickers[j--].setUTCDate(new_date); + } + } else if (new_date > this.dates[k]) { + // Date being moved later/right + while (k < l && new_date > this.dates[k] && (this.pickers[k].element.val() || "").length > 0) { + this.pickers[k++].setUTCDate(new_date); + } + } + this.updateDates(); + + delete this.updating; + }, + destroy: function () { + $.map(this.pickers, function (p) { p.destroy(); }); + $(this.inputs).off('changeDate', this.dateUpdated); + delete this.element.data().datepicker; + }, + remove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead') + }; + + function opts_from_el(el, prefix) { + // Derive options from element data-attrs + var data = $(el).data(), + out = {}, inkey, + replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])'); + prefix = new RegExp('^' + prefix.toLowerCase()); + function re_lower(_, a) { + return a.toLowerCase(); + } + for (var key in data) + if (prefix.test(key)) { + inkey = key.replace(replace, re_lower); + out[inkey] = data[key]; + } + return out; + } + + function opts_from_locale(lang) { + // Derive options from locale plugins + var out = {}; + // Check if "de-DE" style date is available, if not language should + // fallback to 2 letter code eg "de" + if (!dates[lang]) { + lang = lang.split('-')[0]; + if (!dates[lang]) + return; + } + var d = dates[lang]; + $.each(locale_opts, function (i, k) { + if (k in d) + out[k] = d[k]; + }); + return out; + } + + var old = $.fn.datepicker; + var datepickerPlugin = function (option) { + var args = Array.apply(null, arguments); + args.shift(); + var internal_return; + this.each(function () { + var $this = $(this), + data = $this.data('datepicker'), + options = typeof option === 'object' && option; + if (!data) { + var elopts = opts_from_el(this, 'date'), + // Preliminary otions + xopts = $.extend({}, defaults, elopts, options), + locopts = opts_from_locale(xopts.language), + // Options priority: js args, data-attrs, locales, defaults + opts = $.extend({}, defaults, locopts, elopts, options); + if ($this.hasClass('input-daterange') || opts.inputs) { + $.extend(opts, { + inputs: opts.inputs || $this.find('input').toArray() + }); + data = new DateRangePicker(this, opts); + } + else { + data = new Datepicker(this, opts); + } + $this.data('datepicker', data); + } + if (typeof option === 'string' && typeof data[option] === 'function') { + internal_return = data[option].apply(data, args); + } + }); + + if ( + internal_return === undefined || + internal_return instanceof Datepicker || + internal_return instanceof DateRangePicker + ) + return this; + + if (this.length > 1) + throw new Error('Using only allowed for the collection of a single element (' + option + ' function)'); + else + return internal_return; + }; + $.fn.datepicker = datepickerPlugin; + + var defaults = $.fn.datepicker.defaults = { + assumeNearbyYear: false, + autoclose: false, + beforeShowDay: $.noop, + beforeShowMonth: $.noop, + beforeShowYear: $.noop, + beforeShowDecade: $.noop, + beforeShowCentury: $.noop, + calendarWeeks: false, + clearBtn: false, + toggleActive: false, + daysOfWeekDisabled: [], + daysOfWeekHighlighted: [], + datesDisabled: [], + endDate: Infinity, + forceParse: true, + format: 'mm/dd/yyyy', + isInline: null, + keepEmptyValues: false, + keyboardNavigation: true, + language: 'en', + minViewMode: 0, + maxViewMode: 4, + multidate: false, + multidateSeparator: ',', + orientation: "auto", + rtl: false, + startDate: -Infinity, + startView: 0, + todayBtn: false, + todayHighlight: false, + updateViewDate: true, + weekStart: 0, + disableTouchKeyboard: false, + enableOnReadonly: true, + showOnFocus: true, + zIndexOffset: 10, + container: 'body', + immediateUpdates: false, + title: '', + templates: { + leftArrow: '«', + rightArrow: '»' + }, + showWeekDays: true + }; + var locale_opts = $.fn.datepicker.locale_opts = [ + 'format', + 'rtl', + 'weekStart' + ]; + $.fn.datepicker.Constructor = Datepicker; + var dates = $.fn.datepicker.dates = { + en: { + days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], + months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + today: "Today", + clear: "Clear", + titleFormat: "MM yyyy" + } + }; + + var DPGlobal = { + viewModes: [ + { + names: ['days', 'month'], + clsName: 'days', + e: 'changeMonth' + }, + { + names: ['months', 'year'], + clsName: 'months', + e: 'changeYear', + navStep: 1 + }, + { + names: ['years', 'decade'], + clsName: 'years', + e: 'changeDecade', + navStep: 10 + }, + { + names: ['decades', 'century'], + clsName: 'decades', + e: 'changeCentury', + navStep: 100 + }, + { + names: ['centuries', 'millennium'], + clsName: 'centuries', + e: 'changeMillennium', + navStep: 1000 + } + ], + validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g, + nonpunctuation: /[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g, + parseFormat: function (format) { + if (typeof format.toValue === 'function' && typeof format.toDisplay === 'function') + return format; + // IE treats \0 as a string end in inputs (truncating the value), + // so it's a bad format delimiter, anyway + var separators = format.replace(this.validParts, '\0').split('\0'), + parts = format.match(this.validParts); + if (!separators || !separators.length || !parts || parts.length === 0) { + throw new Error("Invalid date format."); + } + return { separators: separators, parts: parts }; + }, + parseDate: function (date, format, language, assumeNearby) { + if (!date) + return undefined; + if (date instanceof Date) + return date; + if (typeof format === 'string') + format = DPGlobal.parseFormat(format); + if (format.toValue) + return format.toValue(date, format, language); + var fn_map = { + d: 'moveDay', + m: 'moveMonth', + w: 'moveWeek', + y: 'moveYear' + }, + dateAliases = { + yesterday: '-1d', + today: '+0d', + tomorrow: '+1d' + }, + parts, part, dir, i, fn; + if (date in dateAliases) { + date = dateAliases[date]; + } + if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(date)) { + parts = date.match(/([\-+]\d+)([dmwy])/gi); + date = new Date(); + for (i = 0; i < parts.length; i++) { + part = parts[i].match(/([\-+]\d+)([dmwy])/i); + dir = Number(part[1]); + fn = fn_map[part[2].toLowerCase()]; + date = Datepicker.prototype[fn](date, dir); + } + return Datepicker.prototype._zero_utc_time(date); + } + + parts = date && date.match(this.nonpunctuation) || []; + + function applyNearbyYear(year, threshold) { + if (threshold === true) + threshold = 10; + + // if year is 2 digits or less, than the user most likely is trying to get a recent century + if (year < 100) { + year += 2000; + // if the new year is more than threshold years in advance, use last century + if (year > ((new Date()).getFullYear() + threshold)) { + year -= 100; + } + } + + return year; + } + + var parsed = {}, + setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'], + setters_map = { + yyyy: function (d, v) { + return d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v); + }, + m: function (d, v) { + if (isNaN(d)) + return d; + v -= 1; + while (v < 0) v += 12; + v %= 12; + d.setUTCMonth(v); + while (d.getUTCMonth() !== v) + d.setUTCDate(d.getUTCDate() - 1); + return d; + }, + d: function (d, v) { + return d.setUTCDate(v); + } + }, + val, filtered; + setters_map['yy'] = setters_map['yyyy']; + setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m']; + setters_map['dd'] = setters_map['d']; + date = UTCToday(); + var fparts = format.parts.slice(); + // Remove noop parts + if (parts.length !== fparts.length) { + fparts = $(fparts).filter(function (i, p) { + return $.inArray(p, setters_order) !== -1; + }).toArray(); + } + // Process remainder + function match_part() { + var m = this.slice(0, parts[i].length), + p = parts[i].slice(0, m.length); + return m.toLowerCase() === p.toLowerCase(); + } + if (parts.length === fparts.length) { + var cnt; + for (i = 0, cnt = fparts.length; i < cnt; i++) { + val = parseInt(parts[i], 10); + part = fparts[i]; + if (isNaN(val)) { + switch (part) { + case 'MM': + filtered = $(dates[language].months).filter(match_part); + val = $.inArray(filtered[0], dates[language].months) + 1; + break; + case 'M': + filtered = $(dates[language].monthsShort).filter(match_part); + val = $.inArray(filtered[0], dates[language].monthsShort) + 1; + break; + } + } + parsed[part] = val; + } + var _date, s; + for (i = 0; i < setters_order.length; i++) { + s = setters_order[i]; + if (s in parsed && !isNaN(parsed[s])) { + _date = new Date(date); + setters_map[s](_date, parsed[s]); + if (!isNaN(_date)) + date = _date; + } + } + } + return date; + }, + formatDate: function (date, format, language) { + if (!date) + return ''; + if (typeof format === 'string') + format = DPGlobal.parseFormat(format); + if (format.toDisplay) + return format.toDisplay(date, format, language); + var val = { + d: date.getUTCDate(), + D: dates[language].daysShort[date.getUTCDay()], + DD: dates[language].days[date.getUTCDay()], + m: date.getUTCMonth() + 1, + M: dates[language].monthsShort[date.getUTCMonth()], + MM: dates[language].months[date.getUTCMonth()], + yy: date.getUTCFullYear().toString().substring(2), + yyyy: date.getUTCFullYear() + }; + val.dd = (val.d < 10 ? '0' : '') + val.d; + val.mm = (val.m < 10 ? '0' : '') + val.m; + date = []; + var seps = $.extend([], format.separators); + for (var i = 0, cnt = format.parts.length; i <= cnt; i++) { + if (seps.length) + date.push(seps.shift()); + date.push(val[format.parts[i]]); + } + return date.join(''); + }, + headTemplate: '' + + '' + + '' + + '' + + '' + + '' + defaults.templates.leftArrow + '' + + '' + + '' + defaults.templates.rightArrow + '' + + '' + + '', + contTemplate: '', + footTemplate: '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + }; + DPGlobal.template = '
    ' + + '
    ' + + '' + + DPGlobal.headTemplate + + '' + + DPGlobal.footTemplate + + '
    ' + + '
    ' + + '
    ' + + '' + + DPGlobal.headTemplate + + DPGlobal.contTemplate + + DPGlobal.footTemplate + + '
    ' + + '
    ' + + '
    ' + + '' + + DPGlobal.headTemplate + + DPGlobal.contTemplate + + DPGlobal.footTemplate + + '
    ' + + '
    ' + + '
    ' + + '' + + DPGlobal.headTemplate + + DPGlobal.contTemplate + + DPGlobal.footTemplate + + '
    ' + + '
    ' + + '
    ' + + '' + + DPGlobal.headTemplate + + DPGlobal.contTemplate + + DPGlobal.footTemplate + + '
    ' + + '
    ' + + '
    '; + + $.fn.datepicker.DPGlobal = DPGlobal; + + + /* DATEPICKER NO CONFLICT + * =================== */ + + $.fn.datepicker.noConflict = function () { + $.fn.datepicker = old; + return this; + }; + + /* DATEPICKER VERSION + * =================== */ + $.fn.datepicker.version = '1.10.0'; + + $.fn.datepicker.deprecated = function (msg) { + var console = window.console; + if (console && console.warn) { + console.warn('DEPRECATED: ' + msg); + } + }; + + + /* DATEPICKER DATA-API + * ================== */ + + $(document).on( + 'focus.datepicker.data-api click.datepicker.data-api', + '[data-provide="datepicker"]', + function (e) { + var $this = $(this); + if ($this.data('datepicker')) + return; + e.preventDefault(); + // component click requires us to explicitly show it + datepickerPlugin.call($this, 'show'); + } + ); + $(function () { + datepickerPlugin.call($('[data-provide="datepicker-inline"]')); + }); + +})); \ No newline at end of file diff --git a/src/assets/plugins/bootstrap-datetimepicker/css/bootstrap-datetimepicker.css b/src/assets/plugins/bootstrap-datetimepicker/css/bootstrap-datetimepicker.css new file mode 100644 index 0000000..fc0f297 --- /dev/null +++ b/src/assets/plugins/bootstrap-datetimepicker/css/bootstrap-datetimepicker.css @@ -0,0 +1,419 @@ +/*! + * Datetimepicker for Bootstrap + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ +.datetimepicker { + padding: 4px; + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + direction: ltr +} + +.datetimepicker-inline { + width: 220px +} + +.datetimepicker.datetimepicker-rtl { + direction: rtl +} + +.datetimepicker.datetimepicker-rtl table tr td span { + float: right +} + +.datetimepicker-dropdown, +.datetimepicker-dropdown-left { + top: 0; + left: 0 +} + +[class*=" datetimepicker-dropdown"]:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute +} + +[class*=" datetimepicker-dropdown"]:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + position: absolute +} + +[class*=" datetimepicker-dropdown-top"]:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-top: 7px solid #ccc; + border-top-color: rgba(0, 0, 0, 0.2); + border-bottom: 0 +} + +[class*=" datetimepicker-dropdown-top"]:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid #fff; + border-bottom: 0 +} + +.datetimepicker-dropdown-bottom-left:before { + top: -7px; + right: 6px +} + +.datetimepicker-dropdown-bottom-left:after { + top: -6px; + right: 7px +} + +.datetimepicker-dropdown-bottom-right:before { + top: -7px; + left: 6px +} + +.datetimepicker-dropdown-bottom-right:after { + top: -6px; + left: 7px +} + +.datetimepicker-dropdown-top-left:before { + bottom: -7px; + right: 6px +} + +.datetimepicker-dropdown-top-left:after { + bottom: -6px; + right: 7px +} + +.datetimepicker-dropdown-top-right:before { + bottom: -7px; + left: 6px +} + +.datetimepicker-dropdown-top-right:after { + bottom: -6px; + left: 7px +} + +.datetimepicker>div { + display: none +} + +.datetimepicker.minutes div.datetimepicker-minutes { + display: block +} + +.datetimepicker.hours div.datetimepicker-hours { + display: block +} + +.datetimepicker.days div.datetimepicker-days { + display: block +} + +.datetimepicker.months div.datetimepicker-months { + display: block +} + +.datetimepicker.years div.datetimepicker-years { + display: block +} + +.datetimepicker table { + margin: 0 +} + +.datetimepicker td, +.datetimepicker th { + text-align: center; + width: 20px; + height: 20px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + border: 0 +} + +.table-striped .datetimepicker table tr td, +.table-striped .datetimepicker table tr th { + background-color: transparent +} + +.datetimepicker table tr td.minute:hover { + background: #eee; + cursor: pointer +} + +.datetimepicker table tr td.hour:hover { + background: #eee; + cursor: pointer +} + +.datetimepicker table tr td.day:hover { + background: #eee; + cursor: pointer +} + +.datetimepicker table tr td.old, +.datetimepicker table tr td.new { + color: #999 +} + +.datetimepicker table tr td.disabled, +.datetimepicker table tr td.disabled:hover { + background: 0; + color: #999; + cursor: default +} + +.datetimepicker table tr td.today, +.datetimepicker table tr td.today:hover, +.datetimepicker table tr td.today.disabled, +.datetimepicker table tr td.today.disabled:hover { + background-color: #fde19a; + background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a); + background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a)); + background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a); + background-image: -o-linear-gradient(top, #fdd49a, #fdf59a); + background-image: linear-gradient(top, #fdd49a, #fdf59a); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0); + border-color: #fdf59a #fdf59a #fbed50; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false) +} + +.datetimepicker table tr td.today:hover, +.datetimepicker table tr td.today:hover:hover, +.datetimepicker table tr td.today.disabled:hover, +.datetimepicker table tr td.today.disabled:hover:hover, +.datetimepicker table tr td.today:active, +.datetimepicker table tr td.today:hover:active, +.datetimepicker table tr td.today.disabled:active, +.datetimepicker table tr td.today.disabled:hover:active, +.datetimepicker table tr td.today.active, +.datetimepicker table tr td.today:hover.active, +.datetimepicker table tr td.today.disabled.active, +.datetimepicker table tr td.today.disabled:hover.active, +.datetimepicker table tr td.today.disabled, +.datetimepicker table tr td.today:hover.disabled, +.datetimepicker table tr td.today.disabled.disabled, +.datetimepicker table tr td.today.disabled:hover.disabled, +.datetimepicker table tr td.today[disabled], +.datetimepicker table tr td.today:hover[disabled], +.datetimepicker table tr td.today.disabled[disabled], +.datetimepicker table tr td.today.disabled:hover[disabled] { + background-color: #fdf59a +} + +.datetimepicker table tr td.today:active, +.datetimepicker table tr td.today:hover:active, +.datetimepicker table tr td.today.disabled:active, +.datetimepicker table tr td.today.disabled:hover:active, +.datetimepicker table tr td.today.active, +.datetimepicker table tr td.today:hover.active, +.datetimepicker table tr td.today.disabled.active, +.datetimepicker table tr td.today.disabled:hover.active { + background-color: #fbf069 +} + +.datetimepicker table tr td.active, +.datetimepicker table tr td.active:hover, +.datetimepicker table tr td.active.disabled, +.datetimepicker table tr td.active.disabled:hover { + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #08c, #04c); + background-image: -ms-linear-gradient(top, #08c, #04c); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#04c)); + background-image: -webkit-linear-gradient(top, #08c, #04c); + background-image: -o-linear-gradient(top, #08c, #04c); + background-image: linear-gradient(top, #08c, #04c); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); + border-color: #04c #04c #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) +} + +.datetimepicker table tr td.active:hover, +.datetimepicker table tr td.active:hover:hover, +.datetimepicker table tr td.active.disabled:hover, +.datetimepicker table tr td.active.disabled:hover:hover, +.datetimepicker table tr td.active:active, +.datetimepicker table tr td.active:hover:active, +.datetimepicker table tr td.active.disabled:active, +.datetimepicker table tr td.active.disabled:hover:active, +.datetimepicker table tr td.active.active, +.datetimepicker table tr td.active:hover.active, +.datetimepicker table tr td.active.disabled.active, +.datetimepicker table tr td.active.disabled:hover.active, +.datetimepicker table tr td.active.disabled, +.datetimepicker table tr td.active:hover.disabled, +.datetimepicker table tr td.active.disabled.disabled, +.datetimepicker table tr td.active.disabled:hover.disabled, +.datetimepicker table tr td.active[disabled], +.datetimepicker table tr td.active:hover[disabled], +.datetimepicker table tr td.active.disabled[disabled], +.datetimepicker table tr td.active.disabled:hover[disabled] { + background-color: #04c +} + +.datetimepicker table tr td.active:active, +.datetimepicker table tr td.active:hover:active, +.datetimepicker table tr td.active.disabled:active, +.datetimepicker table tr td.active.disabled:hover:active, +.datetimepicker table tr td.active.active, +.datetimepicker table tr td.active:hover.active, +.datetimepicker table tr td.active.disabled.active, +.datetimepicker table tr td.active.disabled:hover.active { + background-color: #039 +} + +.datetimepicker table tr td span { + display: block; + width: 23%; + height: 54px; + line-height: 54px; + float: left; + margin: 1%; + cursor: pointer; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px +} + +.datetimepicker .datetimepicker-hours span { + height: 26px; + line-height: 26px +} + +.datetimepicker .datetimepicker-hours table tr td span.hour_am, +.datetimepicker .datetimepicker-hours table tr td span.hour_pm { + width: 14.6% +} + +.datetimepicker .datetimepicker-hours fieldset legend, +.datetimepicker .datetimepicker-minutes fieldset legend { + margin-bottom: inherit; + line-height: 30px +} + +.datetimepicker .datetimepicker-minutes span { + height: 26px; + line-height: 26px +} + +.datetimepicker table tr td span:hover { + background: #eee +} + +.datetimepicker table tr td span.disabled, +.datetimepicker table tr td span.disabled:hover { + background: 0; + color: #999; + cursor: default +} + +.datetimepicker table tr td span.active, +.datetimepicker table tr td span.active:hover, +.datetimepicker table tr td span.active.disabled, +.datetimepicker table tr td span.active.disabled:hover { + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #08c, #04c); + background-image: -ms-linear-gradient(top, #08c, #04c); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#04c)); + background-image: -webkit-linear-gradient(top, #08c, #04c); + background-image: -o-linear-gradient(top, #08c, #04c); + background-image: linear-gradient(top, #08c, #04c); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); + border-color: #04c #04c #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) +} + +.datetimepicker table tr td span.active:hover, +.datetimepicker table tr td span.active:hover:hover, +.datetimepicker table tr td span.active.disabled:hover, +.datetimepicker table tr td span.active.disabled:hover:hover, +.datetimepicker table tr td span.active:active, +.datetimepicker table tr td span.active:hover:active, +.datetimepicker table tr td span.active.disabled:active, +.datetimepicker table tr td span.active.disabled:hover:active, +.datetimepicker table tr td span.active.active, +.datetimepicker table tr td span.active:hover.active, +.datetimepicker table tr td span.active.disabled.active, +.datetimepicker table tr td span.active.disabled:hover.active, +.datetimepicker table tr td span.active.disabled, +.datetimepicker table tr td span.active:hover.disabled, +.datetimepicker table tr td span.active.disabled.disabled, +.datetimepicker table tr td span.active.disabled:hover.disabled, +.datetimepicker table tr td span.active[disabled], +.datetimepicker table tr td span.active:hover[disabled], +.datetimepicker table tr td span.active.disabled[disabled], +.datetimepicker table tr td span.active.disabled:hover[disabled] { + background-color: #04c +} + +.datetimepicker table tr td span.active:active, +.datetimepicker table tr td span.active:hover:active, +.datetimepicker table tr td span.active.disabled:active, +.datetimepicker table tr td span.active.disabled:hover:active, +.datetimepicker table tr td span.active.active, +.datetimepicker table tr td span.active:hover.active, +.datetimepicker table tr td span.active.disabled.active, +.datetimepicker table tr td span.active.disabled:hover.active { + background-color: #039 +} + +.datetimepicker table tr td span.old { + color: #999 +} + +.datetimepicker th.switch { + width: 145px +} + +.datetimepicker th span.glyphicon { + pointer-events: none +} + +.datetimepicker thead tr:first-child th, +.datetimepicker tfoot th { + cursor: pointer +} + +.datetimepicker thead tr:first-child th:hover, +.datetimepicker tfoot th:hover { + background: #eee +} + +.input-append.date .add-on i, +.input-prepend.date .add-on i, +.input-group.date .input-group-addon span { + cursor: pointer; + width: 14px; + height: 14px +} \ No newline at end of file diff --git a/src/assets/plugins/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js b/src/assets/plugins/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js new file mode 100644 index 0000000..f45e7a0 --- /dev/null +++ b/src/assets/plugins/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js @@ -0,0 +1,1694 @@ +(function(a) { + var define; + if (typeof define === "function" && define.amd) { + define(["jquery"], a) + } else { + if (typeof exports === "object") { + a(require("jquery")) + } else { + a(jQuery) + } + } +}(function(f, c) { + if (!("indexOf"in Array.prototype)) { + Array.prototype.indexOf = function(k, j) { + if (j === c) { + j = 0 + } + if (j < 0) { + j += this.length + } + if (j < 0) { + j = 0 + } + for (var l = this.length; j < l; j++) { + if (j in this && this[j] === k) { + return j + } + } + return -1 + } + } + function e(l) { + var k = f(l); + var j = k.add(k.parents()); + var m = false; + j.each(function() { + if (f(this).css("position") === "fixed") { + m = true; + return false + } + }); + return m + } + function h() { + return new Date(Date.UTC.apply(Date, arguments)) + } + function d() { + var j = new Date(); + return h(j.getUTCFullYear(), j.getUTCMonth(), j.getUTCDate(), j.getUTCHours(), j.getUTCMinutes(), j.getUTCSeconds(), 0) + } + var i = function(l, k) { + var n = this; + this.element = f(l); + this.container = k.container || "body"; + this.language = k.language || this.element.data("date-language") || "en"; + this.language = this.language in a ? this.language : this.language.split("-")[0]; + this.language = this.language in a ? this.language : "en"; + this.isRTL = a[this.language].rtl || false; + this.formatType = k.formatType || this.element.data("format-type") || "standard"; + this.format = g.parseFormat(k.format || this.element.data("date-format") || a[this.language].format || g.getDefaultFormat(this.formatType, "input"), this.formatType); + this.isInline = false; + this.isVisible = false; + this.isInput = this.element.is("input"); + this.fontAwesome = k.fontAwesome || this.element.data("font-awesome") || false; + this.bootcssVer = k.bootcssVer || (this.isInput ? (this.element.is(".form-control") ? 3 : 2) : (this.bootcssVer = this.element.is(".input-group") ? 3 : 2)); + this.component = this.element.is(".date") ? (this.bootcssVer == 3 ? this.element.find(".input-group-addon .glyphicon-th, .input-group-addon .glyphicon-time, .input-group-addon .glyphicon-remove, .input-group-addon .glyphicon-calendar, .input-group-addon .fa-calendar, .input-group-addon .fa-clock-o").parent() : this.element.find(".add-on .icon-th, .add-on .icon-time, .add-on .icon-calendar, .add-on .fa-calendar, .add-on .fa-clock-o").parent()) : false; + this.componentReset = this.element.is(".date") ? (this.bootcssVer == 3 ? this.element.find(".input-group-addon .glyphicon-remove, .input-group-addon .fa-times").parent() : this.element.find(".add-on .icon-remove, .add-on .fa-times").parent()) : false; + this.hasInput = this.component && this.element.find("input").length; + if (this.component && this.component.length === 0) { + this.component = false + } + this.linkField = k.linkField || this.element.data("link-field") || false; + this.linkFormat = g.parseFormat(k.linkFormat || this.element.data("link-format") || g.getDefaultFormat(this.formatType, "link"), this.formatType); + this.minuteStep = k.minuteStep || this.element.data("minute-step") || 5; + this.pickerPosition = k.pickerPosition || this.element.data("picker-position") || "bottom-right"; + this.showMeridian = k.showMeridian || this.element.data("show-meridian") || false; + this.initialDate = k.initialDate || new Date(); + this.zIndex = k.zIndex || this.element.data("z-index") || c; + this.title = typeof k.title === "undefined" ? false : k.title; + this.icons = { + leftArrow: this.fontAwesome ? "fa-arrow-left" : (this.bootcssVer === 3 ? "glyphicon-arrow-left" : "icon-arrow-left"), + rightArrow: this.fontAwesome ? "fa-arrow-right" : (this.bootcssVer === 3 ? "glyphicon-arrow-right" : "icon-arrow-right") + }; + this.icontype = this.fontAwesome ? "fa" : "glyphicon"; + this._attachEvents(); + this.clickedOutside = function(o) { + if (f(o.target).closest(".datetimepicker").length === 0) { + n.hide() + } + } + ; + this.formatViewType = "datetime"; + if ("formatViewType"in k) { + this.formatViewType = k.formatViewType + } else { + if ("formatViewType"in this.element.data()) { + this.formatViewType = this.element.data("formatViewType") + } + } + this.minView = 0; + if ("minView"in k) { + this.minView = k.minView + } else { + if ("minView"in this.element.data()) { + this.minView = this.element.data("min-view") + } + } + this.minView = g.convertViewMode(this.minView); + this.maxView = g.modes.length - 1; + if ("maxView"in k) { + this.maxView = k.maxView + } else { + if ("maxView"in this.element.data()) { + this.maxView = this.element.data("max-view") + } + } + this.maxView = g.convertViewMode(this.maxView); + this.wheelViewModeNavigation = false; + if ("wheelViewModeNavigation"in k) { + this.wheelViewModeNavigation = k.wheelViewModeNavigation + } else { + if ("wheelViewModeNavigation"in this.element.data()) { + this.wheelViewModeNavigation = this.element.data("view-mode-wheel-navigation") + } + } + this.wheelViewModeNavigationInverseDirection = false; + if ("wheelViewModeNavigationInverseDirection"in k) { + this.wheelViewModeNavigationInverseDirection = k.wheelViewModeNavigationInverseDirection + } else { + if ("wheelViewModeNavigationInverseDirection"in this.element.data()) { + this.wheelViewModeNavigationInverseDirection = this.element.data("view-mode-wheel-navigation-inverse-dir") + } + } + this.wheelViewModeNavigationDelay = 100; + if ("wheelViewModeNavigationDelay"in k) { + this.wheelViewModeNavigationDelay = k.wheelViewModeNavigationDelay + } else { + if ("wheelViewModeNavigationDelay"in this.element.data()) { + this.wheelViewModeNavigationDelay = this.element.data("view-mode-wheel-navigation-delay") + } + } + this.startViewMode = 2; + if ("startView"in k) { + this.startViewMode = k.startView + } else { + if ("startView"in this.element.data()) { + this.startViewMode = this.element.data("start-view") + } + } + this.startViewMode = g.convertViewMode(this.startViewMode); + this.viewMode = this.startViewMode; + this.viewSelect = this.minView; + if ("viewSelect"in k) { + this.viewSelect = k.viewSelect + } else { + if ("viewSelect"in this.element.data()) { + this.viewSelect = this.element.data("view-select") + } + } + this.viewSelect = g.convertViewMode(this.viewSelect); + this.forceParse = true; + if ("forceParse"in k) { + this.forceParse = k.forceParse + } else { + if ("dateForceParse"in this.element.data()) { + this.forceParse = this.element.data("date-force-parse") + } + } + var m = this.bootcssVer === 3 ? g.templateV3 : g.template; + while (m.indexOf("{iconType}") !== -1) { + m = m.replace("{iconType}", this.icontype) + } + while (m.indexOf("{leftArrow}") !== -1) { + m = m.replace("{leftArrow}", this.icons.leftArrow) + } + while (m.indexOf("{rightArrow}") !== -1) { + m = m.replace("{rightArrow}", this.icons.rightArrow) + } + this.picker = f(m).appendTo(this.isInline ? this.element : this.container).on({ + click: f.proxy(this.click, this), + mousedown: f.proxy(this.mousedown, this) + }); + if (this.wheelViewModeNavigation) { + if (f.fn.mousewheel) { + this.picker.on({ + mousewheel: f.proxy(this.mousewheel, this) + }) + } else { + console.log("Mouse Wheel event is not supported. Please include the jQuery Mouse Wheel plugin before enabling this option") + } + } + if (this.isInline) { + this.picker.addClass("datetimepicker-inline") + } else { + this.picker.addClass("datetimepicker-dropdown-" + this.pickerPosition + " dropdown-menu") + } + if (this.isRTL) { + this.picker.addClass("datetimepicker-rtl"); + var j = this.bootcssVer === 3 ? ".prev span, .next span" : ".prev i, .next i"; + this.picker.find(j).toggleClass(this.icons.leftArrow + " " + this.icons.rightArrow) + } + f(document).on("mousedown", this.clickedOutside); + this.autoclose = false; + if ("autoclose"in k) { + this.autoclose = k.autoclose + } else { + if ("dateAutoclose"in this.element.data()) { + this.autoclose = this.element.data("date-autoclose") + } + } + this.keyboardNavigation = true; + if ("keyboardNavigation"in k) { + this.keyboardNavigation = k.keyboardNavigation + } else { + if ("dateKeyboardNavigation"in this.element.data()) { + this.keyboardNavigation = this.element.data("date-keyboard-navigation") + } + } + this.todayBtn = (k.todayBtn || this.element.data("date-today-btn") || false); + this.clearBtn = (k.clearBtn || this.element.data("date-clear-btn") || false); + this.todayHighlight = (k.todayHighlight || this.element.data("date-today-highlight") || false); + this.weekStart = ((k.weekStart || this.element.data("date-weekstart") || a[this.language].weekStart || 0) % 7); + this.weekEnd = ((this.weekStart + 6) % 7); + this.startDate = -Infinity; + this.endDate = Infinity; + this.datesDisabled = []; + this.daysOfWeekDisabled = []; + this.setStartDate(k.startDate || this.element.data("date-startdate")); + this.setEndDate(k.endDate || this.element.data("date-enddate")); + this.setDatesDisabled(k.datesDisabled || this.element.data("date-dates-disabled")); + this.setDaysOfWeekDisabled(k.daysOfWeekDisabled || this.element.data("date-days-of-week-disabled")); + this.setMinutesDisabled(k.minutesDisabled || this.element.data("date-minute-disabled")); + this.setHoursDisabled(k.hoursDisabled || this.element.data("date-hour-disabled")); + this.fillDow(); + this.fillMonths(); + this.update(); + this.showMode(); + if (this.isInline) { + this.show() + } + }; + i.prototype = { + constructor: i, + _events: [], + _attachEvents: function() { + this._detachEvents(); + if (this.isInput) { + this._events = [[this.element, { + focus: f.proxy(this.show, this), + keyup: f.proxy(this.update, this), + keydown: f.proxy(this.keydown, this) + }]] + } else { + if (this.component && this.hasInput) { + this._events = [[this.element.find("input"), { + focus: f.proxy(this.show, this), + keyup: f.proxy(this.update, this), + keydown: f.proxy(this.keydown, this) + }], [this.component, { + click: f.proxy(this.show, this) + }]]; + if (this.componentReset) { + this._events.push([this.componentReset, { + click: f.proxy(this.reset, this) + }]) + } + } else { + if (this.element.is("div")) { + this.isInline = true + } else { + this._events = [[this.element, { + click: f.proxy(this.show, this) + }]] + } + } + } + for (var j = 0, k, l; j < this._events.length; j++) { + k = this._events[j][0]; + l = this._events[j][1]; + k.on(l) + } + }, + _detachEvents: function() { + for (var j = 0, k, l; j < this._events.length; j++) { + k = this._events[j][0]; + l = this._events[j][1]; + k.off(l) + } + this._events = [] + }, + show: function(j) { + this.picker.show(); + this.height = this.component ? this.component.outerHeight() : this.element.outerHeight(); + if (this.forceParse) { + this.update() + } + this.place(); + f(window).on("resize", f.proxy(this.place, this)); + if (j) { + j.stopPropagation(); + j.preventDefault() + } + this.isVisible = true; + this.element.trigger({ + type: "show", + date: this.date + }) + }, + hide: function(j) { + if (!this.isVisible) { + return + } + if (this.isInline) { + return + } + this.picker.hide(); + f(window).off("resize", this.place); + this.viewMode = this.startViewMode; + this.showMode(); + if (!this.isInput) { + f(document).off("mousedown", this.hide) + } + if (this.forceParse && (this.isInput && this.element.val() || this.hasInput && this.element.find("input").val())) { + this.setValue() + } + this.isVisible = false; + this.element.trigger({ + type: "hide", + date: this.date + }) + }, + remove: function() { + this._detachEvents(); + f(document).off("mousedown", this.clickedOutside); + this.picker.remove(); + delete this.picker; + delete this.element.data().datetimepicker + }, + getDate: function() { + var j = this.getUTCDate(); + return new Date(j.getTime() + (j.getTimezoneOffset() * 60000)) + }, + getUTCDate: function() { + return this.date + }, + setDate: function(j) { + this.setUTCDate(new Date(j.getTime() - (j.getTimezoneOffset() * 60000))) + }, + setUTCDate: function(j) { + if (j >= this.startDate && j <= this.endDate) { + this.date = j; + this.setValue(); + this.viewDate = this.date; + this.fill() + } else { + this.element.trigger({ + type: "outOfRange", + date: j, + startDate: this.startDate, + endDate: this.endDate + }) + } + }, + setFormat: function(k) { + this.format = g.parseFormat(k, this.formatType); + var j; + if (this.isInput) { + j = this.element + } else { + if (this.component) { + j = this.element.find("input") + } + } + if (j && j.val()) { + this.setValue() + } + }, + setValue: function() { + var j = this.getFormattedDate(); + if (!this.isInput) { + if (this.component) { + this.element.find("input").val(j) + } + this.element.data("date", j) + } else { + this.element.val(j) + } + if (this.linkField) { + f("#" + this.linkField).val(this.getFormattedDate(this.linkFormat)) + } + }, + getFormattedDate: function(j) { + if (j == c) { + j = this.format + } + return g.formatDate(this.date, j, this.language, this.formatType) + }, + setStartDate: function(j) { + this.startDate = j || -Infinity; + if (this.startDate !== -Infinity) { + this.startDate = g.parseDate(this.startDate, this.format, this.language, this.formatType) + } + this.update(); + this.updateNavArrows() + }, + setEndDate: function(j) { + this.endDate = j || Infinity; + if (this.endDate !== Infinity) { + this.endDate = g.parseDate(this.endDate, this.format, this.language, this.formatType) + } + this.update(); + this.updateNavArrows() + }, + setDatesDisabled: function(j) { + this.datesDisabled = j || []; + if (!f.isArray(this.datesDisabled)) { + this.datesDisabled = this.datesDisabled.split(/,\s*/) + } + this.datesDisabled = f.map(this.datesDisabled, function(k) { + return g.parseDate(k, this.format, this.language, this.formatType).toDateString() + }); + this.update(); + this.updateNavArrows() + }, + setTitle: function(j, k) { + return this.picker.find(j).find("th:eq(1)").text(this.title === false ? k : this.title) + }, + setDaysOfWeekDisabled: function(j) { + this.daysOfWeekDisabled = j || []; + if (!f.isArray(this.daysOfWeekDisabled)) { + this.daysOfWeekDisabled = this.daysOfWeekDisabled.split(/,\s*/) + } + this.daysOfWeekDisabled = f.map(this.daysOfWeekDisabled, function(k) { + return parseInt(k, 10) + }); + this.update(); + this.updateNavArrows() + }, + setMinutesDisabled: function(j) { + this.minutesDisabled = j || []; + if (!f.isArray(this.minutesDisabled)) { + this.minutesDisabled = this.minutesDisabled.split(/,\s*/) + } + this.minutesDisabled = f.map(this.minutesDisabled, function(k) { + return parseInt(k, 10) + }); + this.update(); + this.updateNavArrows() + }, + setHoursDisabled: function(j) { + this.hoursDisabled = j || []; + if (!f.isArray(this.hoursDisabled)) { + this.hoursDisabled = this.hoursDisabled.split(/,\s*/) + } + this.hoursDisabled = f.map(this.hoursDisabled, function(k) { + return parseInt(k, 10) + }); + this.update(); + this.updateNavArrows() + }, + place: function() { + if (this.isInline) { + return + } + if (!this.zIndex) { + var k = 0; + f("div").each(function() { + var p = parseInt(f(this).css("zIndex"), 10); + if (p > k) { + k = p + } + }); + this.zIndex = k + 10 + } + var o, n, m, l; + if (this.container instanceof f) { + l = this.container.offset() + } else { + l = f(this.container).offset() + } + if (this.component) { + o = this.component.offset(); + m = o.left; + if (this.pickerPosition == "bottom-left" || this.pickerPosition == "top-left") { + m += this.component.outerWidth() - this.picker.outerWidth() + } + } else { + o = this.element.offset(); + m = o.left; + if (this.pickerPosition == "bottom-left" || this.pickerPosition == "top-left") { + m += this.element.outerWidth() - this.picker.outerWidth() + } + } + var j = document.body.clientWidth || window.innerWidth; + if (m + 220 > j) { + m = j - 220 + } + if (this.component) { + n = n - l.top + 169; + m = m - l.left + 210 + } else { + if (this.pickerPosition == "top-left" || this.pickerPosition == "top-right") { + n = o.top - this.picker.outerHeight() + } else { + n = o.top + this.height + } + } + this.picker.css({ + top: n, + left: m, + zIndex: this.zIndex + }) + }, + update: function() { + var j, k = false; + if (arguments && arguments.length && (typeof arguments[0] === "string" || arguments[0]instanceof Date)) { + j = arguments[0]; + k = true + } else { + j = (this.isInput ? this.element.val() : this.element.find("input").val()) || this.element.data("date") || this.initialDate; + if (typeof j == "string" || j instanceof String) { + j = j.replace(/^\s+|\s+$/g, "") + } + } + if (!j) { + j = new Date(); + k = false + } + this.date = g.parseDate(j, this.format, this.language, this.formatType); + if (k) { + this.setValue() + } + if (this.date < this.startDate) { + this.viewDate = new Date(this.startDate) + } else { + if (this.date > this.endDate) { + this.viewDate = new Date(this.endDate) + } else { + this.viewDate = new Date(this.date) + } + } + this.fill() + }, + fillDow: function() { + var j = this.weekStart + , k = ""; + while (j < this.weekStart + 7) { + k += '' + a[this.language].daysMin[(j++) % 7] + "" + } + k += ""; + this.picker.find(".datetimepicker-days thead").append(k) + }, + fillMonths: function() { + var k = "" + , j = 0; + while (j < 12) { + k += '' + a[this.language].monthsShort[j++] + "" + } + this.picker.find(".datetimepicker-months td").html(k) + }, + fill: function() { + if (this.date == null || this.viewDate == null) { + return + } + var H = new Date(this.viewDate) + , u = H.getUTCFullYear() + , I = H.getUTCMonth() + , n = H.getUTCDate() + , D = H.getUTCHours() + , y = H.getUTCMinutes() + , z = this.startDate !== -Infinity ? this.startDate.getUTCFullYear() : -Infinity + , E = this.startDate !== -Infinity ? this.startDate.getUTCMonth() + 1 : -Infinity + , q = this.endDate !== Infinity ? this.endDate.getUTCFullYear() : Infinity + , A = this.endDate !== Infinity ? this.endDate.getUTCMonth() + 1 : Infinity + , r = (new h(this.date.getUTCFullYear(),this.date.getUTCMonth(),this.date.getUTCDate())).valueOf() + , G = new Date(); + this.setTitle(".datetimepicker-days", a[this.language].months[I] + " " + u); + if (this.formatViewType == "time") { + var k = this.getFormattedDate(); + this.setTitle(".datetimepicker-hours", k); + this.setTitle(".datetimepicker-minutes", k) + } else { + this.setTitle(".datetimepicker-hours", n + " " + a[this.language].months[I] + " " + u); + this.setTitle(".datetimepicker-minutes", n + " " + a[this.language].months[I] + " " + u) + } + this.picker.find("tfoot th.today").text(a[this.language].today || a.en.today).toggle(this.todayBtn !== false); + this.picker.find("tfoot th.clear").text(a[this.language].clear || a.en.clear).toggle(this.clearBtn !== false); + this.updateNavArrows(); + this.fillMonths(); + var K = h(u, I - 1, 28, 0, 0, 0, 0) + , C = g.getDaysInMonth(K.getUTCFullYear(), K.getUTCMonth()); + K.setUTCDate(C); + K.setUTCDate(C - (K.getUTCDay() - this.weekStart + 7) % 7); + var j = new Date(K); + j.setUTCDate(j.getUTCDate() + 42); + j = j.valueOf(); + var s = []; + var v; + while (K.valueOf() < j) { + if (K.getUTCDay() == this.weekStart) { + s.push("") + } + v = ""; + if (K.getUTCFullYear() < u || (K.getUTCFullYear() == u && K.getUTCMonth() < I)) { + v += " old" + } else { + if (K.getUTCFullYear() > u || (K.getUTCFullYear() == u && K.getUTCMonth() > I)) { + v += " new" + } + } + if (this.todayHighlight && K.getUTCFullYear() == G.getFullYear() && K.getUTCMonth() == G.getMonth() && K.getUTCDate() == G.getDate()) { + v += " today" + } + if (K.valueOf() == r) { + v += " active" + } + if ((K.valueOf() + 86400000) <= this.startDate || K.valueOf() > this.endDate || f.inArray(K.getUTCDay(), this.daysOfWeekDisabled) !== -1 || f.inArray(K.toDateString(), this.datesDisabled) !== -1) { + v += " disabled" + } + s.push('' + K.getUTCDate() + ""); + if (K.getUTCDay() == this.weekEnd) { + s.push("") + } + K.setUTCDate(K.getUTCDate() + 1) + } + this.picker.find(".datetimepicker-days tbody").empty().append(s.join("")); + s = []; + var w = "" + , F = "" + , t = ""; + var l = this.hoursDisabled || []; + for (var B = 0; B < 24; B++) { + if (l.indexOf(B) !== -1) { + continue + } + var x = h(u, I, n, B); + v = ""; + if ((x.valueOf() + 3600000) <= this.startDate || x.valueOf() > this.endDate) { + v += " disabled" + } else { + if (D == B) { + v += " active" + } + } + if (this.showMeridian && a[this.language].meridiem.length == 2) { + F = (B < 12 ? a[this.language].meridiem[0] : a[this.language].meridiem[1]); + if (F != t) { + if (t != "") { + s.push("") + } + s.push('
    ' + F.toUpperCase() + "") + } + t = F; + w = (B % 12 ? B % 12 : 12); + s.push('' + w + ""); + if (B == 23) { + s.push("
    ") + } + } else { + w = B + ":00"; + s.push('' + w + "") + } + } + this.picker.find(".datetimepicker-hours td").html(s.join("")); + s = []; + w = "", + F = "", + t = ""; + var m = this.minutesDisabled || []; + for (let B = 0; B < 60; B += this.minuteStep) { + if (m.indexOf(B) !== -1) { + continue + } + let x = h(u, I, n, D, B, 0); + v = ""; + if (x.valueOf() < this.startDate || x.valueOf() > this.endDate) { + v += " disabled" + } else { + if (Math.floor(y / this.minuteStep) == Math.floor(B / this.minuteStep)) { + v += " active" + } + } + if (this.showMeridian && a[this.language].meridiem.length == 2) { + F = (D < 12 ? a[this.language].meridiem[0] : a[this.language].meridiem[1]); + if (F != t) { + if (t != "") { + s.push("") + } + s.push('
    ' + F.toUpperCase() + "") + } + t = F; + w = (D % 12 ? D % 12 : 12); + s.push('' + w + ":" + (B < 10 ? "0" + B : B) + ""); + if (B == 59) { + s.push("
    ") + } + } else { + w = B + ":00"; + s.push('' + D + ":" + (B < 10 ? "0" + B : B) + "") + } + } + this.picker.find(".datetimepicker-minutes td").html(s.join("")); + var L = this.date.getUTCFullYear(); + var p = this.setTitle(".datetimepicker-months", u).end().find("span").removeClass("active"); + if (L == u) { + var o = p.length - 12; + p.eq(this.date.getUTCMonth() + o).addClass("active") + } + if (u < z || u > q) { + p.addClass("disabled") + } + if (u == z) { + p.slice(0, E + 1).addClass("disabled") + } + if (u == q) { + p.slice(A).addClass("disabled") + } + s = ""; + u = parseInt(u / 10, 10) * 10; + var J = this.setTitle(".datetimepicker-years", u + "-" + (u + 9)).end().find("td"); + u -= 1; + for (let B = -1; B < 11; B++) { + s += ' q ? " disabled" : "") + '">' + u + ""; + u += 1 + } + J.html(s); + this.place() + }, + updateNavArrows: function() { + var n = new Date(this.viewDate) + , l = n.getUTCFullYear() + , m = n.getUTCMonth() + , k = n.getUTCDate() + , j = n.getUTCHours(); + switch (this.viewMode) { + case 0: + if (this.startDate !== -Infinity && l <= this.startDate.getUTCFullYear() && m <= this.startDate.getUTCMonth() && k <= this.startDate.getUTCDate() && j <= this.startDate.getUTCHours()) { + this.picker.find(".prev").css({ + visibility: "hidden" + }) + } else { + this.picker.find(".prev").css({ + visibility: "visible" + }) + } + if (this.endDate !== Infinity && l >= this.endDate.getUTCFullYear() && m >= this.endDate.getUTCMonth() && k >= this.endDate.getUTCDate() && j >= this.endDate.getUTCHours()) { + this.picker.find(".next").css({ + visibility: "hidden" + }) + } else { + this.picker.find(".next").css({ + visibility: "visible" + }) + } + break; + case 1: + if (this.startDate !== -Infinity && l <= this.startDate.getUTCFullYear() && m <= this.startDate.getUTCMonth() && k <= this.startDate.getUTCDate()) { + this.picker.find(".prev").css({ + visibility: "hidden" + }) + } else { + this.picker.find(".prev").css({ + visibility: "visible" + }) + } + if (this.endDate !== Infinity && l >= this.endDate.getUTCFullYear() && m >= this.endDate.getUTCMonth() && k >= this.endDate.getUTCDate()) { + this.picker.find(".next").css({ + visibility: "hidden" + }) + } else { + this.picker.find(".next").css({ + visibility: "visible" + }) + } + break; + case 2: + if (this.startDate !== -Infinity && l <= this.startDate.getUTCFullYear() && m <= this.startDate.getUTCMonth()) { + this.picker.find(".prev").css({ + visibility: "hidden" + }) + } else { + this.picker.find(".prev").css({ + visibility: "visible" + }) + } + if (this.endDate !== Infinity && l >= this.endDate.getUTCFullYear() && m >= this.endDate.getUTCMonth()) { + this.picker.find(".next").css({ + visibility: "hidden" + }) + } else { + this.picker.find(".next").css({ + visibility: "visible" + }) + } + break; + case 3: + case 4: + if (this.startDate !== -Infinity && l <= this.startDate.getUTCFullYear()) { + this.picker.find(".prev").css({ + visibility: "hidden" + }) + } else { + this.picker.find(".prev").css({ + visibility: "visible" + }) + } + if (this.endDate !== Infinity && l >= this.endDate.getUTCFullYear()) { + this.picker.find(".next").css({ + visibility: "hidden" + }) + } else { + this.picker.find(".next").css({ + visibility: "visible" + }) + } + break + } + }, + mousewheel: function(k) { + k.preventDefault(); + k.stopPropagation(); + if (this.wheelPause) { + return + } + this.wheelPause = true; + var j = k.originalEvent; + var m = j.wheelDelta; + var l = m > 0 ? 1 : (m === 0) ? 0 : -1; + if (this.wheelViewModeNavigationInverseDirection) { + l = -l + } + this.showMode(l); + setTimeout(f.proxy(function() { + this.wheelPause = false + }, this), this.wheelViewModeNavigationDelay) + }, + click: function(n) { + n.stopPropagation(); + n.preventDefault(); + var o = f(n.target).closest("span, td, th, legend"); + if (o.is("." + this.icontype)) { + o = f(o).parent().closest("span, td, th, legend") + } + if (o.length == 1) { + if (o.is(".disabled")) { + this.element.trigger({ + type: "outOfRange", + date: this.viewDate, + startDate: this.startDate, + endDate: this.endDate + }); + return + } + switch (o[0].nodeName.toLowerCase()) { + case "th": + switch (o[0].className) { + case "switch": + this.showMode(1); + break; + case "prev": + case "next": + var j = g.modes[this.viewMode].navStep * (o[0].className == "prev" ? -1 : 1); + switch (this.viewMode) { + case 0: + this.viewDate = this.moveHour(this.viewDate, j); + break; + case 1: + this.viewDate = this.moveDate(this.viewDate, j); + break; + case 2: + this.viewDate = this.moveMonth(this.viewDate, j); + break; + case 3: + case 4: + this.viewDate = this.moveYear(this.viewDate, j); + break + } + this.fill(); + this.element.trigger({ + type: o[0].className + ":" + this.convertViewModeText(this.viewMode), + date: this.viewDate, + startDate: this.startDate, + endDate: this.endDate + }); + break; + case "clear": + this.reset(); + if (this.autoclose) { + this.hide() + } + break; + case "today": + var k = new Date(); + k = h(k.getFullYear(), k.getMonth(), k.getDate(), k.getHours(), k.getMinutes(), k.getSeconds(), 0); + if (k < this.startDate) { + k = this.startDate + } else { + if (k > this.endDate) { + k = this.endDate + } + } + this.viewMode = this.startViewMode; + this.showMode(0); + this._setDate(k); + this.fill(); + if (this.autoclose) { + this.hide() + } + break + } + break; + case "span": + if (!o.is(".disabled")) { + var q = this.viewDate.getUTCFullYear() + , p = this.viewDate.getUTCMonth() + , r = this.viewDate.getUTCDate() + , s = this.viewDate.getUTCHours() + , l = this.viewDate.getUTCMinutes() + , t = this.viewDate.getUTCSeconds(); + if (o.is(".month")) { + this.viewDate.setUTCDate(1); + p = o.parent().find("span").index(o); + r = this.viewDate.getUTCDate(); + this.viewDate.setUTCMonth(p); + this.element.trigger({ + type: "changeMonth", + date: this.viewDate + }); + if (this.viewSelect >= 3) { + this._setDate(h(q, p, r, s, l, t, 0)) + } + } else { + if (o.is(".year")) { + this.viewDate.setUTCDate(1); + q = parseInt(o.text(), 10) || 0; + this.viewDate.setUTCFullYear(q); + this.element.trigger({ + type: "changeYear", + date: this.viewDate + }); + if (this.viewSelect >= 4) { + this._setDate(h(q, p, r, s, l, t, 0)) + } + } else { + if (o.is(".hour")) { + s = parseInt(o.text(), 10) || 0; + if (o.hasClass("hour_am") || o.hasClass("hour_pm")) { + if (s == 12 && o.hasClass("hour_am")) { + s = 0 + } else { + if (s != 12 && o.hasClass("hour_pm")) { + s += 12 + } + } + } + this.viewDate.setUTCHours(s); + this.element.trigger({ + type: "changeHour", + date: this.viewDate + }); + if (this.viewSelect >= 1) { + this._setDate(h(q, p, r, s, l, t, 0)) + } + } else { + if (o.is(".minute")) { + l = parseInt(o.text().substr(o.text().indexOf(":") + 1), 10) || 0; + this.viewDate.setUTCMinutes(l); + this.element.trigger({ + type: "changeMinute", + date: this.viewDate + }); + if (this.viewSelect >= 0) { + this._setDate(h(q, p, r, s, l, t, 0)) + } + } + } + } + } + if (this.viewMode != 0) { + var m = this.viewMode; + this.showMode(-1); + this.fill(); + if (m == this.viewMode && this.autoclose) { + this.hide() + } + } else { + this.fill(); + if (this.autoclose) { + this.hide() + } + } + } + break; + case "td": + if (o.is(".day") && !o.is(".disabled")) { + let r = parseInt(o.text(), 10) || 1; + let q = this.viewDate.getUTCFullYear() + , p = this.viewDate.getUTCMonth() + , s = this.viewDate.getUTCHours() + , l = this.viewDate.getUTCMinutes() + , t = this.viewDate.getUTCSeconds(); + if (o.is(".old")) { + if (p === 0) { + p = 11; + q -= 1 + } else { + p -= 1 + } + } else { + if (o.is(".new")) { + if (p == 11) { + p = 0; + q += 1 + } else { + p += 1 + } + } + } + this.viewDate.setUTCFullYear(q); + this.viewDate.setUTCMonth(p, r); + this.element.trigger({ + type: "changeDay", + date: this.viewDate + }); + if (this.viewSelect >= 2) { + this._setDate(h(q, p, r, s, l, t, 0)) + } + } + m = this.viewMode; + this.showMode(-1); + this.fill(); + if (m == this.viewMode && this.autoclose) { + this.hide() + } + break + } + } + }, + _setDate: function(j, l) { + if (!l || l == "date") { + this.date = j + } + if (!l || l == "view") { + this.viewDate = j + } + this.fill(); + this.setValue(); + var k; + if (this.isInput) { + k = this.element + } else { + if (this.component) { + k = this.element.find("input") + } + } + if (k) { + k.change(); + if (this.autoclose && (!l || l == "date")) ; + } + this.element.trigger({ + type: "changeDate", + date: this.getDate() + }); + if (j == null) { + this.date = this.viewDate + } + }, + moveMinute: function(k, j) { + if (!j) { + return k + } + var l = new Date(k.valueOf()); + l.setUTCMinutes(l.getUTCMinutes() + (j * this.minuteStep)); + return l + }, + moveHour: function(k, j) { + if (!j) { + return k + } + var l = new Date(k.valueOf()); + l.setUTCHours(l.getUTCHours() + j); + return l + }, + moveDate: function(k, j) { + if (!j) { + return k + } + var l = new Date(k.valueOf()); + l.setUTCDate(l.getUTCDate() + j); + return l + }, + moveMonth: function(j, k) { + if (!k) { + return j + } + var n = new Date(j.valueOf()), r = n.getUTCDate(), o = n.getUTCMonth(), m = Math.abs(k), q, p; + k = k > 0 ? 1 : -1; + if (m == 1) { + p = k == -1 ? function() { + return n.getUTCMonth() == o + } + : function() { + return n.getUTCMonth() != q + } + ; + q = o + k; + n.setUTCMonth(q); + if (q < 0 || q > 11) { + q = (q + 12) % 12 + } + } else { + for (var l = 0; l < m; l++) { + n = this.moveMonth(n, k) + } + q = n.getUTCMonth(); + n.setUTCDate(r); + p = function() { + return q != n.getUTCMonth() + } + } + while (p()) { + n.setUTCDate(--r); + n.setUTCMonth(q) + } + return n + }, + moveYear: function(k, j) { + return this.moveMonth(k, j * 12) + }, + dateWithinRange: function(j) { + return j >= this.startDate && j <= this.endDate + }, + keydown: function(n) { + let viewMode; + if (this.picker.is(":not(:visible)")) { + if (n.keyCode == 27) { + this.show() + } + return + } + var p = false, k, q, o, r, j; + switch (n.keyCode) { + case 27: + this.hide(); + n.preventDefault(); + break; + case 37: + case 39: + if (!this.keyboardNavigation) { + break + } + k = n.keyCode == 37 ? -1 : 1; + viewMode = this.viewMode; + if (n.ctrlKey) { + viewMode += 2 + } else { + if (n.shiftKey) { + viewMode += 1 + } + } + if (viewMode == 4) { + r = this.moveYear(this.date, k); + j = this.moveYear(this.viewDate, k) + } else { + if (viewMode == 3) { + r = this.moveMonth(this.date, k); + j = this.moveMonth(this.viewDate, k) + } else { + if (viewMode == 2) { + r = this.moveDate(this.date, k); + j = this.moveDate(this.viewDate, k) + } else { + if (viewMode == 1) { + r = this.moveHour(this.date, k); + j = this.moveHour(this.viewDate, k) + } else { + if (viewMode == 0) { + r = this.moveMinute(this.date, k); + j = this.moveMinute(this.viewDate, k) + } + } + } + } + } + if (this.dateWithinRange(r)) { + this.date = r; + this.viewDate = j; + this.setValue(); + this.update(); + n.preventDefault(); + p = true + } + break; + case 38: + case 40: + if (!this.keyboardNavigation) { + break + } + k = n.keyCode == 38 ? -1 : 1; + viewMode = this.viewMode; + if (n.ctrlKey) { + viewMode += 2 + } else { + if (n.shiftKey) { + viewMode += 1 + } + } + if (viewMode == 4) { + r = this.moveYear(this.date, k); + j = this.moveYear(this.viewDate, k) + } else { + if (viewMode == 3) { + r = this.moveMonth(this.date, k); + j = this.moveMonth(this.viewDate, k) + } else { + if (viewMode == 2) { + r = this.moveDate(this.date, k * 7); + j = this.moveDate(this.viewDate, k * 7) + } else { + if (viewMode == 1) { + if (this.showMeridian) { + r = this.moveHour(this.date, k * 6); + j = this.moveHour(this.viewDate, k * 6) + } else { + r = this.moveHour(this.date, k * 4); + j = this.moveHour(this.viewDate, k * 4) + } + } else { + if (viewMode == 0) { + r = this.moveMinute(this.date, k * 4); + j = this.moveMinute(this.viewDate, k * 4) + } + } + } + } + } + if (this.dateWithinRange(r)) { + this.date = r; + this.viewDate = j; + this.setValue(); + this.update(); + n.preventDefault(); + p = true + } + break; + case 13: + if (this.viewMode != 0) { + var m = this.viewMode; + this.showMode(-1); + this.fill(); + if (m == this.viewMode && this.autoclose) { + this.hide() + } + } else { + this.fill(); + if (this.autoclose) { + this.hide() + } + } + n.preventDefault(); + break; + case 9: + this.hide(); + break + } + if (p) { + var l; + if (this.isInput) { + l = this.element + } else { + if (this.component) { + l = this.element.find("input") + } + } + if (l) { + l.change() + } + this.element.trigger({ + type: "changeDate", + date: this.getDate() + }) + } + }, + showMode: function(j) { + if (j) { + var k = Math.max(0, Math.min(g.modes.length - 1, this.viewMode + j)); + if (k >= this.minView && k <= this.maxView) { + this.element.trigger({ + type: "changeMode", + date: this.viewDate, + oldViewMode: this.viewMode, + newViewMode: k + }); + this.viewMode = k + } + } + this.picker.find(">div").hide().filter(".datetimepicker-" + g.modes[this.viewMode].clsName).css("display", "block"); + this.updateNavArrows() + }, + reset: function(j) { + this._setDate(null, "date") + }, + convertViewModeText: function(j) { + switch (j) { + case 4: + return "decade"; + case 3: + return "year"; + case 2: + return "month"; + case 1: + return "day"; + case 0: + return "hour" + } + } + }; + var b = f.fn.datetimepicker; + f.fn.datetimepicker = function(l) { + var j = Array.apply(null, arguments); + j.shift(); + var k; + this.each(function() { + var o = f(this) + , n = o.data("datetimepicker") + , m = typeof l == "object" && l; + if (!n) { + o.data("datetimepicker", (n = new i(this,f.extend({}, f.fn.datetimepicker.defaults, m)))) + } + if (typeof l == "string" && typeof n[l] == "function") { + k = n[l].apply(n, j); + if (k !== c) { + return false + } + } + }); + if (k !== c) { + return k + } else { + return this + } + } + ; + f.fn.datetimepicker.defaults = {}; + f.fn.datetimepicker.Constructor = i; + var a = f.fn.datetimepicker.dates = { + en: { + days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], + daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], + daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"], + months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + meridiem: ["am", "pm"], + suffix: ["st", "nd", "rd", "th"], + today: "Today", + clear: "Clear" + } + }; + var g = { + modes: [{ + clsName: "minutes", + navFnc: "Hours", + navStep: 1 + }, { + clsName: "hours", + navFnc: "Date", + navStep: 1 + }, { + clsName: "days", + navFnc: "Month", + navStep: 1 + }, { + clsName: "months", + navFnc: "FullYear", + navStep: 1 + }, { + clsName: "years", + navFnc: "FullYear", + navStep: 10 + }], + isLeapYear: function(j) { + return (((j % 4 === 0) && (j % 100 !== 0)) || (j % 400 === 0)) + }, + getDaysInMonth: function(j, k) { + return [31, (g.isLeapYear(j) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][k] + }, + getDefaultFormat: function(j, k) { + if (j == "standard") { + if (k == "input") { + return "yyyy-mm-dd hh:ii" + } else { + return "yyyy-mm-dd hh:ii:ss" + } + } else { + if (j == "php") { + if (k == "input") { + return "Y-m-d H:i" + } else { + return "Y-m-d H:i:s" + } + } else { + throw new Error("Invalid format type.") + } + } + }, + validParts: function(j) { + if (j == "standard") { + return /t|hh?|HH?|p|P|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g + } else { + if (j == "php") { + return /[dDjlNwzFmMnStyYaABgGhHis]/g + } else { + throw new Error("Invalid format type.") + } + } + }, + nonpunctuation: /[^ -\/:-@\[-`{-~\t\n\rTZ]+/g, + parseFormat: function(m, k) { + var j = m.replace(this.validParts(k), "\0").split("\0") + , l = m.match(this.validParts(k)); + if (!j || !j.length || !l || l.length == 0) { + throw new Error("Invalid date format.") + } + return { + separators: j, + parts: l + } + }, + parseDate: function(n, w, q, u) { + let x; + if (n instanceof Date) { + var y = new Date(n.valueOf() - n.getTimezoneOffset() * 60000); + y.setMilliseconds(0); + return y + } + if (/^\d{4}\-\d{1,2}\-\d{1,2}$/.test(n)) { + w = this.parseFormat("yyyy-mm-dd", u) + } + if (/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}$/.test(n)) { + w = this.parseFormat("yyyy-mm-dd hh:ii", u) + } + if (/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}\:\d{1,2}[Z]{0,1}$/.test(n)) { + w = this.parseFormat("yyyy-mm-dd hh:ii:ss", u) + } + if (/^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(n)) { + var z = /([-+]\d+)([dmwy])/, o = n.match(/([-+]\d+)([dmwy])/g), j, m; + n = new Date(); + for (var p = 0; p < o.length; p++) { + j = z.exec(o[p]); + m = parseInt(j[1]); + switch (j[2]) { + case "d": + n.setUTCDate(n.getUTCDate() + m); + break; + case "m": + n = i.prototype.moveMonth.call(i.prototype, n, m); + break; + case "w": + n.setUTCDate(n.getUTCDate() + m * 7); + break; + case "y": + n = i.prototype.moveYear.call(i.prototype, n, m); + break + } + } + return h(n.getUTCFullYear(), n.getUTCMonth(), n.getUTCDate(), n.getUTCHours(), n.getUTCMinutes(), n.getUTCSeconds(), 0) + } + o = n && n.toString().match(this.nonpunctuation) || [], x = { + hh: function(B, s) { + return B.setUTCHours(s) + }, + h: function(B, s) { + return B.setUTCHours(s) + }, + HH: function(B, s) { + return B.setUTCHours(s == 12 ? 0 : s) + }, + H: function(B, s) { + return B.setUTCHours(s == 12 ? 0 : s) + }, + ii: function(B, s) { + return B.setUTCMinutes(s) + }, + i: function(B, s) { + return B.setUTCMinutes(s) + }, + ss: function(B, s) { + return B.setUTCSeconds(s) + }, + s: function(B, s) { + return B.setUTCSeconds(s) + }, + yyyy: function(B, s) { + return B.setUTCFullYear(s) + }, + yy: function(B, s) { + return B.setUTCFullYear(2000 + s) + }, + m: function(B, s) { + s -= 1; + while (s < 0) { + s += 12 + } + s %= 12; + B.setUTCMonth(s); + while (B.getUTCMonth() != s) { + if (isNaN(B.getUTCMonth())) { + return B + } else { + B.setUTCDate(B.getUTCDate() - 1) + } + } + return B + }, + d: function(B, s) { + return B.setUTCDate(s) + }, + p: function(B, s) { + return B.setUTCHours(s == 1 ? B.getUTCHours() + 12 : B.getUTCHours()) + } + }; + let t = {}, v = ["hh", "h", "ii", "i", "ss", "s", "yyyy", "yy", "M", "MM", "m", "mm", "D", "DD", "d", "dd", "H", "HH", "p", "P"], l, r; + n = new Date(0,0,0,0,0,0,0); + x.M = x.MM = x.mm = x.m; + x.dd = x.d; + x.P = x.p; + n = h(n.getFullYear(), n.getMonth(), n.getDate(), n.getHours(), n.getMinutes(), n.getSeconds()); + if (o.length == w.parts.length) { + for (let p = 0, k = w.parts.length; p < k; p++) { + l = parseInt(o[p], 10); + j = w.parts[p]; + if (isNaN(l)) { + switch (j) { + case "MM": + r = f(a[q].months).filter(function() { + var s = this.slice(0, o[p].length) + , B = o[p].slice(0, s.length); + return s == B + }); + l = f.inArray(r[0], a[q].months) + 1; + break; + case "M": + r = f(a[q].monthsShort).filter(function() { + var s = this.slice(0, o[p].length) + , B = o[p].slice(0, s.length); + return s.toLowerCase() == B.toLowerCase() + }); + l = f.inArray(r[0], a[q].monthsShort) + 1; + break; + case "p": + case "P": + l = f.inArray(o[p].toLowerCase(), a[q].meridiem); + break + } + } + t[j] = l; + } + for (let p = 0, A; p < v.length; p++) { + A = v[p]; + if (A in t && !isNaN(t[A])) { + x[A](n, t[A]) + } + } + } + return n + }, + formatDate: function(j, o, q, m) { + if (j == null) { + return "" + } + var p; + if (m == "standard") { + p = { + t: j.getTime(), + yy: j.getUTCFullYear().toString().substring(2), + yyyy: j.getUTCFullYear(), + m: j.getUTCMonth() + 1, + M: a[q].monthsShort[j.getUTCMonth()], + MM: a[q].months[j.getUTCMonth()], + d: j.getUTCDate(), + D: a[q].daysShort[j.getUTCDay()], + DD: a[q].days[j.getUTCDay()], + p: ((a[q].meridiem && a[q].meridiem.length == 2) ? a[q].meridiem[j.getUTCHours() < 12 ? 0 : 1] : ""), + h: j.getUTCHours(), + i: j.getUTCMinutes(), + s: j.getUTCSeconds() + }; + if (a[q].meridiem && a[q].meridiem.length == 2) { + p.H = (p.h % 12 == 0 ? 12 : p.h % 12) + } else { + p.H = p.h + } + p.HH = (p.H < 10 ? "0" : "") + p.H; + p.P = p.p.toUpperCase(); + p.hh = (p.h < 10 ? "0" : "") + p.h; + p.ii = (p.i < 10 ? "0" : "") + p.i; + p.ss = (p.s < 10 ? "0" : "") + p.s; + p.dd = (p.d < 10 ? "0" : "") + p.d; + p.mm = (p.m < 10 ? "0" : "") + p.m + } else { + if (m == "php") { + p = { + y: j.getUTCFullYear().toString().substring(2), + Y: j.getUTCFullYear(), + F: a[q].months[j.getUTCMonth()], + M: a[q].monthsShort[j.getUTCMonth()], + n: j.getUTCMonth() + 1, + t: g.getDaysInMonth(j.getUTCFullYear(), j.getUTCMonth()), + j: j.getUTCDate(), + l: a[q].days[j.getUTCDay()], + D: a[q].daysShort[j.getUTCDay()], + w: j.getUTCDay(), + N: (j.getUTCDay() == 0 ? 7 : j.getUTCDay()), + S: (j.getUTCDate() % 10 <= a[q].suffix.length ? a[q].suffix[j.getUTCDate() % 10 - 1] : ""), + a: (a[q].meridiem.length == 2 ? a[q].meridiem[j.getUTCHours() < 12 ? 0 : 1] : ""), + g: (j.getUTCHours() % 12 == 0 ? 12 : j.getUTCHours() % 12), + G: j.getUTCHours(), + i: j.getUTCMinutes(), + s: j.getUTCSeconds() + }; + p.m = (p.n < 10 ? "0" : "") + p.n; + p.d = (p.j < 10 ? "0" : "") + p.j; + p.A = p.a.toString().toUpperCase(); + p.h = (p.g < 10 ? "0" : "") + p.g; + p.H = (p.G < 10 ? "0" : "") + p.G; + p.i = (p.i < 10 ? "0" : "") + p.i; + p.s = (p.s < 10 ? "0" : "") + p.s + } else { + throw new Error("Invalid format type.") + } + } + j = []; + var n = f.extend([], o.separators); + for (var l = 0, k = o.parts.length; l < k; l++) { + if (n.length) { + j.push(n.shift()) + } + j.push(p[o.parts[l]]) + } + if (n.length) { + j.push(n.shift()) + } + return j.join("") + }, + convertViewMode: function(j) { + switch (j) { + case 4: + case "decade": + j = 4; + break; + case 3: + case "year": + j = 3; + break; + case 2: + case "month": + j = 2; + break; + case 1: + case "day": + j = 1; + break; + case 0: + case "hour": + j = 0; + break + } + return j + }, + headTemplate: '', + headTemplateV3: ' ', + contTemplate: '', + footTemplate: '' + }; + g.template = '
    ' + g.headTemplate + g.contTemplate + g.footTemplate + '
    ' + g.headTemplate + g.contTemplate + g.footTemplate + '
    ' + g.headTemplate + "" + g.footTemplate + '
    ' + g.headTemplate + g.contTemplate + g.footTemplate + '
    ' + g.headTemplate + g.contTemplate + g.footTemplate + "
    "; + g.templateV3 = '
    ' + g.headTemplateV3 + g.contTemplate + g.footTemplate + '
    ' + g.headTemplateV3 + g.contTemplate + g.footTemplate + '
    ' + g.headTemplateV3 + "" + g.footTemplate + '
    ' + g.headTemplateV3 + g.contTemplate + g.footTemplate + '
    ' + g.headTemplateV3 + g.contTemplate + g.footTemplate + "
    "; + f.fn.datetimepicker.DPGlobal = g; + f.fn.datetimepicker.noConflict = function() { + f.fn.datetimepicker = b; + return this + } + ; + f(document).on("focus.datetimepicker.data-api click.datetimepicker.data-api", '[data-provide="datetimepicker"]', function(k) { + var j = f(this); + if (j.data("datetimepicker")) { + return + } + k.preventDefault(); + j.datetimepicker("show") + }); + f(function() { + f('[data-provide="datetimepicker-inline"]').datetimepicker() + }) +})); diff --git a/src/assets/plugins/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js b/src/assets/plugins/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js new file mode 100644 index 0000000..7e6228e --- /dev/null +++ b/src/assets/plugins/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js @@ -0,0 +1,14 @@ +/** + * Simplified Chinese translation for bootstrap-datetimepicker + * Yuan Cheung + */ +(function ($) { + $.fn.datetimepicker.dates['zh-CN'] = { + days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"], + daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"], + daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"], + months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], + monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], + today: "今日" + }; +}(jQuery)); diff --git a/src/assets/plugins/bootstrap-multiselect/css/bootstrap-multiselect.css b/src/assets/plugins/bootstrap-multiselect/css/bootstrap-multiselect.css new file mode 100644 index 0000000..6ca65b1 --- /dev/null +++ b/src/assets/plugins/bootstrap-multiselect/css/bootstrap-multiselect.css @@ -0,0 +1,190 @@ +/** + * Bootstrap Multiselect (http://davidstutz.de/bootstrap-multiselect/) + * + * Apache License, Version 2.0: + * Copyright (c) 2012 - 2021 David Stutz + * + * 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. + * + * BSD 3-Clause License: + * Copyright (c) 2012 - 2021 David Stutz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * - Neither the name of David Stutz nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +span.multiselect-native-select { + position: relative; +} + +span.multiselect-native-select select { + border: 0 !important; + clip: rect(0 0 0 0) !important; + height: 1px !important; + margin: -1px -1px -1px -3px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + width: 1px !important; + left: 50%; + top: 30px; +} + +.multiselect.dropdown-toggle:after { + display: none; +} + +.multiselect { + overflow: hidden; + text-overflow: ellipsis; +} + +.multiselect-container { + position: absolute; + list-style-type: none; + margin: 0; + padding: 0; +} + +.multiselect-container .multiselect-reset .input-group { + width: 93%; +} + +.multiselect-container .multiselect-filter>.fa-search { + z-index: 1; + padding-left: 0.75rem; +} + +.multiselect-container .multiselect-filter>input.multiselect-search { + border: none; + border-bottom: 1px solid lightgrey; + padding-left: 2rem; + margin-left: -1.625rem; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.multiselect-container .multiselect-filter>input.multiselect-search:focus { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.multiselect-container .multiselect-filter>.multiselect-moz-clear-filter { + margin-left: -1.5rem; + display: none; +} + +.multiselect-container .multiselect-option.multiselect-group-option-indented { + padding-left: 1.75rem; +} + +.multiselect-container .multiselect-option, +.multiselect-container .multiselect-group, +.multiselect-container .multiselect-all { + padding: 0.25rem 0.25rem 0.25rem 0.75rem; +} + +.multiselect-container .multiselect-option.dropdown-item, +.multiselect-container .multiselect-group.dropdown-item, +.multiselect-container .multiselect-all.dropdown-item, +.multiselect-container .multiselect-option.dropdown-toggle, +.multiselect-container .multiselect-group.dropdown-toggle, +.multiselect-container .multiselect-all.dropdown-toggle { + cursor: pointer; +} + +.multiselect-container .multiselect-option .form-check-label, +.multiselect-container .multiselect-group .form-check-label, +.multiselect-container .multiselect-all .form-check-label { + cursor: pointer; +} + +.multiselect-container .multiselect-option.active:not(.multiselect-active-item-fallback), +.multiselect-container .multiselect-group.active:not(.multiselect-active-item-fallback), +.multiselect-container .multiselect-all.active:not(.multiselect-active-item-fallback), +.multiselect-container .multiselect-option:not(.multiselect-active-item-fallback):active, +.multiselect-container .multiselect-group:not(.multiselect-active-item-fallback):active, +.multiselect-container .multiselect-all:not(.multiselect-active-item-fallback):active { + background-color: lightgrey; + color: black; +} + +.multiselect-container .multiselect-option:hover, +.multiselect-container .multiselect-group:hover, +.multiselect-container .multiselect-all:hover, +.multiselect-container .multiselect-option:focus, +.multiselect-container .multiselect-group:focus, +.multiselect-container .multiselect-all:focus { + background-color: darkgray !important; +} + +.multiselect-container .multiselect-option .form-check, +.multiselect-container .multiselect-group .form-check, +.multiselect-container .multiselect-all .form-check { + padding: 0 5px 0 20px; +} + +.multiselect-container .multiselect-option:focus, +.multiselect-container .multiselect-group:focus, +.multiselect-container .multiselect-all:focus { + outline: none; +} + +.form-inline .multiselect-container span.form-check { + padding: 3px 20px 3px 40px; +} + +.input-group.input-group-sm>.multiselect-native-select .multiselect { + padding: .25rem .5rem; + font-size: .875rem; + line-height: 1.5; + padding-right: 1.75rem; + height: calc(4em); +} + +.input-group>.multiselect-native-select { + flex: 1 1 auto; + width: 1%; +} + +.input-group>.multiselect-native-select>div.btn-group { + width: 100%; +} + +.input-group>.multiselect-native-select:not(:first-child) .multiselect { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group>.multiselect-native-select:not(:last-child) .multiselect { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} \ No newline at end of file diff --git a/src/assets/plugins/bootstrap-multiselect/js/bootstrap-multiselect.js b/src/assets/plugins/bootstrap-multiselect/js/bootstrap-multiselect.js new file mode 100644 index 0000000..5828305 --- /dev/null +++ b/src/assets/plugins/bootstrap-multiselect/js/bootstrap-multiselect.js @@ -0,0 +1,2017 @@ +/** + * Bootstrap Multiselect (http://davidstutz.de/bootstrap-multiselect/) + * + * Apache License, Version 2.0: + * Copyright (c) 2012 - 2021 David Stutz + * + * 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. + * + * BSD 3-Clause License: + * Copyright (c) 2012 - 2021 David Stutz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * - Neither the name of David Stutz nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function (root, factory) { + var define; + // check to see if 'knockout' AMD module is specified if using requirejs + if (typeof define === 'function' && define.amd && + typeof require === 'function' && typeof require.specified === 'function' && require.specified('knockout')) { + + // AMD. Register as an anonymous module. + define(['jquery', 'knockout'], factory); + } else { + // Browser globals + factory(require("jquery"), root.ko); + } +})(this, function ($, ko) { + "use strict";// jshint ;_; + + if (typeof ko !== 'undefined' && ko.bindingHandlers && !ko.bindingHandlers.multiselect) { + ko.bindingHandlers.multiselect = { + after: ['options', 'value', 'selectedOptions', 'enable', 'disable'], + + init: function (element, valueAccessor, allBindings, viewModel, bindingContext) { + var $element = $(element); + var config = ko.toJS(valueAccessor()); + + $element.multiselect(config); + + if (allBindings.has('options')) { + var options = allBindings.get('options'); + if (ko.isObservable(options)) { + ko.computed({ + read: function () { + options(); + setTimeout(function () { + var ms = $element.data('multiselect'); + if (ms) + ms.updateOriginalOptions();//Not sure how beneficial this is. + $element.multiselect('rebuild'); + }, 1); + }, + disposeWhenNodeIsRemoved: element + }); + } + } + + //value and selectedOptions are two-way, so these will be triggered even by our own actions. + //It needs some way to tell if they are triggered because of us or because of outside change. + //It doesn't loop but it's a waste of processing. + if (allBindings.has('value')) { + var value = allBindings.get('value'); + if (ko.isObservable(value)) { + ko.computed({ + read: function () { + value(); + setTimeout(function () { + $element.multiselect('refresh'); + }, 1); + }, + disposeWhenNodeIsRemoved: element + }).extend({ rateLimit: 100, notifyWhenChangesStop: true }); + } + } + + //Switched from arrayChange subscription to general subscription using 'refresh'. + //Not sure performance is any better using 'select' and 'deselect'. + if (allBindings.has('selectedOptions')) { + var selectedOptions = allBindings.get('selectedOptions'); + if (ko.isObservable(selectedOptions)) { + ko.computed({ + read: function () { + selectedOptions(); + setTimeout(function () { + $element.multiselect('refresh'); + }, 1); + }, + disposeWhenNodeIsRemoved: element + }).extend({ rateLimit: 100, notifyWhenChangesStop: true }); + } + } + + var setEnabled = function (enable) { + setTimeout(function () { + if (enable) + $element.multiselect('enable'); + else + $element.multiselect('disable'); + }); + }; + + if (allBindings.has('enable')) { + var enable = allBindings.get('enable'); + if (ko.isObservable(enable)) { + ko.computed({ + read: function () { + setEnabled(enable()); + }, + disposeWhenNodeIsRemoved: element + }).extend({ rateLimit: 100, notifyWhenChangesStop: true }); + } else { + setEnabled(enable); + } + } + + if (allBindings.has('disable')) { + var disable = allBindings.get('disable'); + if (ko.isObservable(disable)) { + ko.computed({ + read: function () { + setEnabled(!disable()); + }, + disposeWhenNodeIsRemoved: element + }).extend({ rateLimit: 100, notifyWhenChangesStop: true }); + } else { + setEnabled(!disable); + } + } + + ko.utils.domNodeDisposal.addDisposeCallback(element, function () { + $element.multiselect('destroy'); + }); + }, + + update: function (element, valueAccessor, allBindings, viewModel, bindingContext) { + var $element = $(element); + var config = ko.toJS(valueAccessor()); + + $element.multiselect('setOptions', config); + $element.multiselect('rebuild'); + } + }; + } + + function forEach(array, callback) { + for (var index = 0; index < array.length; ++index) { + callback(array[index], index); + } + } + + /** + * Constructor to create a new multiselect using the given select. + * + * @param {jQuery} select + * @param {Object} options + * @returns {Multiselect} + */ + function Multiselect(select, options) { + + this.$select = $(select); + this.options = this.mergeOptions($.extend({}, options, this.$select.data())); + + // Placeholder via data attributes + if (this.$select.attr("data-placeholder")) { + this.options.nonSelectedText = this.$select.data("placeholder"); + } + + // Initialization. + // We have to clone to create a new reference. + this.originalOptions = this.$select.clone()[0].options; + this.query = ''; + this.searchTimeout = null; + this.lastToggledInput = null; + + this.options.multiple = this.$select.attr('multiple') === "multiple"; + this.options.onChange = $.proxy(this.options.onChange, this); + this.options.onSelectAll = $.proxy(this.options.onSelectAll, this); + this.options.onDeselectAll = $.proxy(this.options.onDeselectAll, this); + this.options.onDropdownShow = $.proxy(this.options.onDropdownShow, this); + this.options.onDropdownHide = $.proxy(this.options.onDropdownHide, this); + this.options.onDropdownShown = $.proxy(this.options.onDropdownShown, this); + this.options.onDropdownHidden = $.proxy(this.options.onDropdownHidden, this); + this.options.onInitialized = $.proxy(this.options.onInitialized, this); + this.options.onFiltering = $.proxy(this.options.onFiltering, this); + + // Build select all if enabled. + this.buildContainer(); + this.buildButton(); + this.buildDropdown(); + this.buildReset(); + this.buildSelectAll(); + this.buildDropdownOptions(); + this.buildFilter(); + this.buildButtons(); + + this.updateButtonText(); + this.updateSelectAll(true); + + if (this.options.enableClickableOptGroups && this.options.multiple) { + this.updateOptGroups(); + } + + this.options.wasDisabled = this.$select.prop('disabled'); + if (this.options.disableIfEmpty && $('option', this.$select).length <= 0 && !this.options.wasDisabled) { + this.disable(true); + } + + this.$select.wrap('').after(this.$container); + this.$select.prop('tabindex', '-1'); + + if (this.options.widthSynchronizationMode !== 'never') { + this.synchronizeButtonAndPopupWidth(); + } + + this.options.onInitialized(this.$select, this.$container); + } + + Multiselect.prototype = { + + defaults: { + /** + * Default text function will either print 'None selected' in case no + * option is selected or a list of the selected options up to a length + * of 3 selected options. + * + * @param {jQuery} options + * @param {jQuery} select + * @returns {String} + */ + buttonText: function (selectedOptions, select) { + if (this.disabledText.length > 0 && select.prop('disabled')) { + return this.disabledText; + } + else if (selectedOptions.length === 0) { + return this.nonSelectedText; + } + else if (this.allSelectedText + && selectedOptions.length === $('option', $(select)).length + && $('option', $(select)).length !== 1 + && this.multiple) { + + if (this.selectAllNumber) { + return this.allSelectedText + ' (' + selectedOptions.length + ')'; + } + else { + return this.allSelectedText; + } + } + else if (this.numberDisplayed != 0 && selectedOptions.length > this.numberDisplayed) { + return selectedOptions.length + ' ' + this.nSelectedText; + } + else { + var selected = ''; + var delimiter = this.delimiterText; + + selectedOptions.each(function () { + var label = ($(this).attr('label') !== undefined) ? $(this).attr('label') : $(this).text(); + selected += label + delimiter; + }); + + return selected.substr(0, selected.length - this.delimiterText.length); + } + }, + /** + * Updates the title of the button similar to the buttonText function. + * + * @param {jQuery} options + * @param {jQuery} select + * @returns {@exp;selected@call;substr} + */ + buttonTitle: function (options, select) { + if (options.length === 0) { + return this.nonSelectedText; + } + else { + var selected = ''; + var delimiter = this.delimiterText; + + options.each(function () { + var label = ($(this).attr('label') !== undefined) ? $(this).attr('label') : $(this).text(); + selected += label + delimiter; + }); + return selected.substr(0, selected.length - this.delimiterText.length); + } + }, + checkboxName: function (option) { + return false; // no checkbox name + }, + /** + * Create a label. + * + * @param {jQuery} element + * @returns {String} + */ + optionLabel: function (element) { + return $(element).attr('label') || $(element).text(); + }, + /** + * Create a class. + * + * @param {jQuery} element + * @returns {String} + */ + optionClass: function (element) { + return $(element).attr('class') || ''; + }, + /** + * Triggered on change of the multiselect. + * + * Not triggered when selecting/deselecting options manually. + * + * @param {jQuery} option + * @param {Boolean} checked + */ + onChange: function (option, checked) { + + }, + /** + * Triggered when the dropdown is shown. + * + * @param {jQuery} event + */ + onDropdownShow: function (event) { + + }, + /** + * Triggered when the dropdown is hidden. + * + * @param {jQuery} event + */ + onDropdownHide: function (event) { + + }, + /** + * Triggered after the dropdown is shown. + * + * @param {jQuery} event + */ + onDropdownShown: function (event) { + + }, + /** + * Triggered after the dropdown is hidden. + * + * @param {jQuery} event + */ + onDropdownHidden: function (event) { + + }, + /** + * Triggered on select all. + */ + onSelectAll: function () { + + }, + /** + * Triggered on deselect all. + */ + onDeselectAll: function () { + + }, + /** + * Triggered after initializing. + * + * @param {jQuery} $select + * @param {jQuery} $container + */ + onInitialized: function ($select, $container) { + + }, + /** + * Triggered on filtering. + * + * @param {jQuery} $filter + */ + onFiltering: function ($filter) { + + }, + enableHTML: false, + buttonClass: 'custom-select', + inheritClass: false, + buttonWidth: 'auto', + buttonContainer: '
    ', + dropRight: false, + dropUp: false, + selectedClass: 'active', + // Maximum height of the dropdown menu. + // If maximum height is exceeded a scrollbar will be displayed. + maxHeight: false, + includeSelectAllOption: false, + includeSelectAllIfMoreThan: 0, + selectAllText: ' Select all', + selectAllValue: 'multiselect-all', + selectAllName: false, + selectAllNumber: true, + selectAllJustVisible: true, + enableFiltering: false, + enableCaseInsensitiveFiltering: false, + enableFullValueFiltering: false, + enableClickableOptGroups: false, + enableCollapsibleOptGroups: false, + collapseOptGroupsByDefault: false, + filterPlaceholder: 'Search', + // possible options: 'text', 'value', 'both' + filterBehavior: 'text', + includeFilterClearBtn: true, + preventInputChangeEvent: false, + nonSelectedText: 'None selected', + nSelectedText: 'selected', + allSelectedText: 'All selected', + resetButtonText: 'Reset', + numberDisplayed: 3, + disableIfEmpty: false, + disabledText: '', + delimiterText: ', ', + includeResetOption: false, + includeResetDivider: false, + resetText: 'Reset', + indentGroupOptions: true, + // possible options: 'never', 'always', 'ifPopupIsSmaller', 'ifPopupIsWider' + widthSynchronizationMode: 'never', + buttonTextAlignment: 'center', + enableResetButton: false, + templates: { + button: '', + popupContainer: '', + filter: '
    ', + buttonGroup: '
    ', + buttonGroupReset: '', + option: '', + divider: '', + optionGroup: '', + resetButton: '
    ' + } + }, + + constructor: Multiselect, + + /** + * Builds the container of the multiselect. + */ + buildContainer: function () { + this.$container = $(this.options.buttonContainer); + if (this.options.widthSynchronizationMode !== 'never') { + this.$container.on('show.bs.dropdown', $.proxy(function () { + // the width needs to be synchronized again in case the width of the button changed in between + this.synchronizeButtonAndPopupWidth(); + this.options.onDropdownShow(); + }, this)); + } + else { + this.$container.on('show.bs.dropdown', this.options.onDropdownShow); + } + this.$container.on('hide.bs.dropdown', this.options.onDropdownHide); + this.$container.on('shown.bs.dropdown', this.options.onDropdownShown); + this.$container.on('hidden.bs.dropdown', this.options.onDropdownHidden); + }, + + /** + * Builds the button of the multiselect. + */ + buildButton: function () { + this.$button = $(this.options.templates.button).addClass(this.options.buttonClass); + if (this.$select.attr('class') && this.options.inheritClass) { + this.$button.addClass(this.$select.attr('class')); + } + // Adopt active state. + if (this.$select.prop('disabled')) { + this.disable(); + } + else { + this.enable(); + } + + // Manually add button width if set. + if (this.options.buttonWidth && this.options.buttonWidth !== 'auto') { + this.$button.css({ + 'width': '100%' //this.options.buttonWidth, + }); + this.$container.css({ + 'width': this.options.buttonWidth + }); + } + + if (this.options.buttonTextAlignment) { + switch (this.options.buttonTextAlignment) { + case 'left': + this.$button.addClass('text-left'); + break; + case 'center': + this.$button.addClass('text-center'); + break; + case 'right': + this.$button.addClass('text-right'); + break; + } + } + + // Keep the tab index from the select. + var tabindex = this.$select.attr('tabindex'); + if (tabindex) { + this.$button.attr('tabindex', tabindex); + } + + this.$container.prepend(this.$button); + }, + + /** + * Builds the popup container representing the dropdown menu. + */ + buildDropdown: function () { + + // Build popup container. + this.$popupContainer = $(this.options.templates.popupContainer); + + if (this.options.dropRight) { + this.$container.addClass('dropright'); + } + else if (this.options.dropUp) { + this.$container.addClass("dropup"); + } + + // Set max height of dropdown menu to activate auto scrollbar. + if (this.options.maxHeight) { + // TODO: Add a class for this option to move the css declarations. + this.$popupContainer.css({ + 'max-height': this.options.maxHeight + 'px', + 'overflow-y': 'auto', + 'overflow-x': 'hidden' + }); + } + + if (this.options.widthSynchronizationMode !== 'never') { + this.$popupContainer.css('overflow-x', 'hidden'); + } + + this.$popupContainer.on("touchstart click", function (e) { + e.stopPropagation(); + }); + + this.$container.append(this.$popupContainer); + }, + + synchronizeButtonAndPopupWidth: function () { + if (!this.$popupContainer || this.options.widthSynchronizationMode === 'never') { + return; + } + + var buttonWidth = this.$button.outerWidth(); + switch (this.options.widthSynchronizationMode) { + case 'always': + this.$popupContainer.css('min-width', buttonWidth); + this.$popupContainer.css('max-width', buttonWidth); + break; + case 'ifPopupIsSmaller': + this.$popupContainer.css('min-width', buttonWidth); + break; + case 'ifPopupIsWider': + this.$popupContainer.css('max-width', buttonWidth); + break; + } + }, + + /** + * Build the dropdown options and binds all necessary events. + * + * Uses createDivider and createOptionValue to create the necessary options. + */ + buildDropdownOptions: function () { + + this.$select.children().each($.proxy(function (index, element) { + + var $element = $(element); + // Support optgroups and options without a group simultaneously. + var tag = $element.prop('tagName') + .toLowerCase(); + + if ($element.prop('value') === this.options.selectAllValue) { + return; + } + + if (tag === 'optgroup') { + this.createOptgroup(element); + } + else if (tag === 'option') { + + if ($element.data('role') === 'divider') { + this.createDivider(); + } + else { + this.createOptionValue(element, false); + } + + } + + // Other illegal tags will be ignored. + }, this)); + + // Bind the change event on the dropdown elements. + $(this.$popupContainer).off('change', '> *:not(.multiselect-group) input[type="checkbox"], > *:not(.multiselect-group) input[type="radio"]'); + $(this.$popupContainer).on('change', '> *:not(.multiselect-group) input[type="checkbox"], > *:not(.multiselect-group) input[type="radio"]', $.proxy(function (event) { + var $target = $(event.target); + + var checked = $target.prop('checked') || false; + var isSelectAllOption = $target.val() === this.options.selectAllValue; + + // Apply or unapply the configured selected class. + if (this.options.selectedClass) { + if (checked) { + $target.closest('.multiselect-option') + .addClass(this.options.selectedClass); + } + else { + $target.closest('.multiselect-option') + .removeClass(this.options.selectedClass); + } + } + + // Get the corresponding option. + var value = $target.val(); + var $option = this.getOptionByValue(value); + + var $optionsNotThis = $('option', this.$select).not($option); + var $checkboxesNotThis = $('input', this.$container).not($target); + + if (isSelectAllOption) { + + if (checked) { + this.selectAll(this.options.selectAllJustVisible, true); + } + else { + this.deselectAll(this.options.selectAllJustVisible, true); + } + } + else { + if (checked) { + $option.prop('selected', true); + + if (this.options.multiple) { + // Simply select additional option. + $option.prop('selected', true); + } + else { + // Unselect all other options and corresponding checkboxes. + if (this.options.selectedClass) { + $($checkboxesNotThis).closest('.dropdown-item').removeClass(this.options.selectedClass); + } + + $($checkboxesNotThis).prop('checked', false); + $optionsNotThis.prop('selected', false); + + // It's a single selection, so close. + this.$button.click(); + } + + if (this.options.selectedClass === "active") { + $optionsNotThis.closest(".dropdown-item").css("outline", ""); + } + } + else { + // Unselect option. + $option.prop('selected', false); + } + + // To prevent select all from firing onChange: #575 + this.options.onChange($option, checked); + + // Do not update select all or optgroups on select all change! + this.updateSelectAll(); + + if (this.options.enableClickableOptGroups && this.options.multiple) { + this.updateOptGroups(); + } + } + + this.$select.change(); + this.updateButtonText(); + + if (this.options.preventInputChangeEvent) { + return false; + } + }, this)); + + $('.multiselect-option', this.$popupContainer).off('mousedown'); + $('.multiselect-option', this.$popupContainer).on('mousedown', function (e) { + if (e.shiftKey) { + // Prevent selecting text by Shift+click + return false; + } + }); + + $(this.$popupContainer).off('touchstart click', '.multiselect-option, .multiselect-all, .multiselect-group'); + $(this.$popupContainer).on('touchstart click', '.multiselect-option, .multiselect-all, .multiselect-group', $.proxy(function (event) { + event.stopPropagation(); + + var $target = $(event.target); + + if (event.shiftKey && this.options.multiple) { + if (!$target.is("input")) { // Handles checkbox selection manually (see https://github.com/davidstutz/bootstrap-multiselect/issues/431) + event.preventDefault(); + $target = $target.closest(".multiselect-option").find("input"); + $target.prop("checked", !$target.prop("checked")); + } + var checked = $target.prop('checked') || false; + + if (this.lastToggledInput !== null && this.lastToggledInput !== $target) { // Make sure we actually have a range + var from = this.$popupContainer.find(".multiselect-option:visible").index($target.closest(".multiselect-option")); + var to = this.$popupContainer.find(".multiselect-option:visible").index(this.lastToggledInput.closest(".multiselect-option")); + + if (from > to) { // Swap the indices + var tmp = to; + to = from; + from = tmp; + } + + // Make sure we grab all elements since slice excludes the last index + ++to; + + // Change the checkboxes and underlying options + var range = this.$popupContainer.find(".multiselect-option:not(.multiselect-filter-hidden)").slice(from, to).find("input"); + + range.prop('checked', checked); + + if (this.options.selectedClass) { + range.closest('.multiselect-option') + .toggleClass(this.options.selectedClass, checked); + } + + for (var i = 0, j = range.length; i < j; i++) { + let $checkbox = $(range[i]); + + var $option = this.getOptionByValue($checkbox.val()); + + $option.prop('selected', checked); + } + } + + // Trigger the select "change" event + $target.trigger("change"); + } + else if (!$target.is('input')) { + var $checkbox = $target.closest('.multiselect-option, .multiselect-all').find('.form-check-input'); + if ($checkbox.length > 0) { + if (this.options.multiple || !$checkbox.prop('checked')) { + $checkbox.prop('checked', !$checkbox.prop('checked')); + $checkbox.change(); + } + } + else if (this.options.enableClickableOptGroups && this.options.multiple && !$target.hasClass("caret-container")) { + var groupItem = $target; + if (!groupItem.hasClass("multiselect-group")) { + groupItem = $target.closest('.multiselect-group'); + } + $checkbox = groupItem.find(".form-check-input"); + if ($checkbox.length > 0) { + $checkbox.prop('checked', !$checkbox.prop('checked')); + $checkbox.change(); + } + } + + event.preventDefault(); + } + + // Remembers last clicked option + var $input = $target.closest(".multiselect-option").find("input[type='checkbox'], input[type='radio']"); + if ($input.length > 0) { + this.lastToggledInput = $target; + } + else { + this.lastToggledInput = null; + } + + $target.blur(); + }, this)); + + //Keyboard support. + this.$container.off('keydown.multiselect').on('keydown.multiselect', $.proxy(function (event) { + var $items = $(this.$container).find(".multiselect-option:not(.disabled), .multiselect-group:not(.disabled), .multiselect-all").filter(":visible"); + var index = $items.index($items.filter(':focus')); + var $search = $('.multiselect-search', this.$container); + + // keyCode 9 == Tab + if (event.keyCode === 9 && this.$container.hasClass('show')) { + this.$button.click(); + } + // keyCode 13 = Enter + else if (event.keyCode == 13) { + var $current = $items.eq(index); + setTimeout(function () { + $current.focus(); + }, 1); + } + // keyCode 38 = Arrow Up + else if (event.keyCode == 38) { + if (index == 0 && !$search.is(':focus')) { + setTimeout(function () { + $search.focus(); + }, 1); + } + } + // keyCode 40 = Arrow Down + else if (event.keyCode == 40) { + if ($search.is(':focus')) { + var $first = $items.eq(0); + setTimeout(function () { + $search.blur(); + $first.focus(); + }, 1); + } + else if (index == -1) { + setTimeout(function () { + $search.focus(); + }, 1); + } + } + }, this)); + + if (this.options.enableClickableOptGroups && this.options.multiple) { + $(".multiselect-group input", this.$popupContainer).off("change"); + $(".multiselect-group input", this.$popupContainer).on("change", $.proxy(function (event) { + event.stopPropagation(); + + var $target = $(event.target); + var checked = $target.prop('checked') || false; + + var $item = $(event.target).closest('.dropdown-item'); + var $group = $item.nextUntil(".multiselect-group") + .not('.multiselect-filter-hidden') + .not('.disabled'); + + var $inputs = $group.find("input"); + + var $options = []; + + if (this.options.selectedClass) { + if (checked) { + $item.addClass(this.options.selectedClass); + } + else { + $item.removeClass(this.options.selectedClass); + } + } + + $.each($inputs, $.proxy(function (index, input) { + var $input = $(input); + var value = $input.val(); + var $option = this.getOptionByValue(value); + + if (checked) { + $input.prop('checked', true); + $input.closest('.dropdown-item') + .addClass(this.options.selectedClass); + + $option.prop('selected', true); + } + else { + $input.prop('checked', false); + $input.closest('.dropdown-item') + .removeClass(this.options.selectedClass); + + $option.prop('selected', false); + } + + $options.push(this.getOptionByValue(value)); + }, this)) + + // Cannot use select or deselect here because it would call updateOptGroups again. + + this.options.onChange($options, checked); + + this.$select.change(); + this.updateButtonText(); + this.updateSelectAll(); + }, this)); + } + + if (this.options.enableCollapsibleOptGroups && this.options.multiple) { + $(".multiselect-group .caret-container", this.$popupContainer).off("click"); + $(".multiselect-group .caret-container", this.$popupContainer).on("click", $.proxy(function (event) { + var $group = $(event.target).closest('.multiselect-group'); + var $inputs = $group.nextUntil(".multiselect-group") + .not('.multiselect-filter-hidden'); + + var visible = true; + $inputs.each(function () { + visible = visible && !$(this).hasClass('multiselect-collapsible-hidden'); + }); + + if (visible) { + $inputs.hide() + .addClass('multiselect-collapsible-hidden'); + } + else { + $inputs.show() + .removeClass('multiselect-collapsible-hidden'); + } + }, this)); + } + }, + + /** + * Create a checkbox container with input and label based on given values + * @param {JQuery} $item + * @param {String} label + * @param {String} name + * @param {String} value + * @param {String} inputType + * @returns {JQuery} + */ + createCheckbox: function ($item, labelContent, name, value, title, inputType) { + var $wrapper = $(''); + $wrapper.addClass("form-check"); + var $checkboxLabel; + if (this.options.enableHTML && $(labelContent).length > 0) { + $checkboxLabel = $('
    '); + html.push(''); + }); + + this.$tableFooter.find('tr').html(html.join('')); + clearTimeout(this.timeoutFooter_); + this.timeoutFooter_ = setTimeout($.proxy(this.fitFooter, this), + this.$el.is(':hidden') ? 100 : 0); + }; + + BootstrapTable.prototype.fitFooter = function () { + var that = this, + $footerTd, + elWidth, + scrollWidth; + + clearTimeout(this.timeoutFooter_); + if (this.$el.is(':hidden')) { + this.timeoutFooter_ = setTimeout($.proxy(this.fitFooter, this), 100); + return; + } + + elWidth = this.$el.css('width'); + scrollWidth = elWidth > this.$tableBody.width() ? getScrollBarWidth() : 0; + + this.$tableFooter.css({ + 'margin-right': scrollWidth + }).find('table').css('width', elWidth) + .attr('class', this.$el.attr('class')); + + $footerTd = this.$tableFooter.find('td'); + + this.$body.find('>tr:first-child:not(.no-records-found) > *').each(function (i) { + var $this = $(this); + + $footerTd.eq(i).find('.fht-cell').width($this.innerWidth()); + }); + }; + + BootstrapTable.prototype.toggleColumn = function (index, checked, needUpdate) { + if (index === -1) { + return; + } + this.columns[index].visible = checked; + this.initHeader(); + this.initSearch(); + this.initPagination(); + this.initBody(); + + if (this.options.showColumns) { + var $items = this.$toolbar.find('.keep-open input').prop('disabled', false); + + if (needUpdate) { + $items.filter(sprintf('[value="%s"]', index)).prop('checked', checked); + } + + if ($items.filter(':checked').length <= this.options.minimumCountColumns) { + $items.filter(':checked').prop('disabled', true); + } + } + }; + + BootstrapTable.prototype.toggleRow = function (index, uniqueId, visible) { + if (index === -1) { + return; + } + this.$body.find(typeof index !== 'undefined' ? + sprintf('tr[data-index="%s"]', index) : + sprintf('tr[data-uniqueid="%s"]', uniqueId))[visible ? 'show' : 'hide'](); + }; + + BootstrapTable.prototype.getVisibleFields = function () { + var that = this, + visibleFields = []; + + $.each(this.header.fields, function (j, field) { + var column = that.columns[getFieldIndex(that.columns, field)]; + + if (!column.visible) { + return; + } + visibleFields.push(field); + }); + return visibleFields; + }; + + // PUBLIC FUNCTION DEFINITION + // ======================= + + BootstrapTable.prototype.resetView = function (params) { + var padding = 0; + + if (params && params.height) { + this.options.height = params.height; + } + + this.$selectAll.prop('checked', this.$selectItem.length > 0 && + this.$selectItem.length === this.$selectItem.filter(':checked').length); + + if (this.options.height) { + var toolbarHeight = getRealHeight(this.$toolbar), + paginationHeight = getRealHeight(this.$pagination), + height = this.options.height - toolbarHeight - paginationHeight; + + this.$tableContainer.css('height', height + 'px'); + } + + if (this.options.cardView) { + // remove the element css + this.$el.css('margin-top', '0'); + this.$tableContainer.css('padding-bottom', '0'); + return; + } + + if (this.options.showHeader && this.options.height) { + this.$tableHeader.show(); + this.resetHeader(); + padding += this.$header.outerHeight(); + } else { + this.$tableHeader.hide(); + this.trigger('post-header'); + } + + if (this.options.showFooter) { + this.resetFooter(); + if (this.options.height) { + padding += this.$tableFooter.outerHeight() + 1; + } + } + + // Assign the correct sortable arrow + this.getCaret(); + this.$tableContainer.css('padding-bottom', padding + 'px'); + this.trigger('reset-view'); + }; + + BootstrapTable.prototype.getData = function (useCurrentPage) { + return (this.searchText || !$.isEmptyObject(this.filterColumns) || !$.isEmptyObject(this.filterColumnsPartial)) ? + (useCurrentPage ? this.data.slice(this.pageFrom - 1, this.pageTo) : this.data) : + (useCurrentPage ? this.options.data.slice(this.pageFrom - 1, this.pageTo) : this.options.data); + }; + + BootstrapTable.prototype.load = function (data) { + var fixedScroll = false; + + // #431: support pagination + if (this.options.sidePagination === 'server') { + this.options.totalRows = data.total; + fixedScroll = data.fixedScroll; + data = data[this.options.dataField]; + } else if (!$.isArray(data)) { // support fixedScroll + fixedScroll = data.fixedScroll; + data = data.data; + } + + this.initData(data); + this.initSearch(); + this.initPagination(); + this.initBody(fixedScroll); + }; + + BootstrapTable.prototype.append = function (data) { + this.initData(data, 'append'); + this.initSearch(); + this.initPagination(); + this.initSort(); + this.initBody(true); + }; + + BootstrapTable.prototype.prepend = function (data) { + this.initData(data, 'prepend'); + this.initSearch(); + this.initPagination(); + this.initSort(); + this.initBody(true); + }; + + BootstrapTable.prototype.remove = function (params) { + var len = this.options.data.length, + i, row; + + if (!Object.prototype.hasOwnProperty.call(params, "field") || !Object.prototype.hasOwnProperty.call(params, "values")) { + return; + } + + for (i = len - 1; i >= 0; i--) { + row = this.options.data[i]; + + if (!Object.prototype.hasOwnProperty.call(row, params.field)) { + continue; + } + if ($.inArray(row[params.field], params.values) !== -1) { + this.options.data.splice(i, 1); + } + } + + if (len === this.options.data.length) { + return; + } + + this.initSearch(); + this.initPagination(); + this.initSort(); + this.initBody(true); + }; + + BootstrapTable.prototype.removeAll = function () { + if (this.options.data.length > 0) { + this.options.data.splice(0, this.options.data.length); + this.initSearch(); + this.initPagination(); + this.initBody(true); + } + }; + + BootstrapTable.prototype.getRowByUniqueId = function (id) { + var uniqueId = this.options.uniqueId, + len = this.options.data.length, + dataRow = null, + i, row, rowUniqueId; + + for (i = len - 1; i >= 0; i--) { + row = this.options.data[i]; + + if (Object.prototype.hasOwnProperty.call(row, uniqueId)) { // uniqueId is a column + rowUniqueId = row[uniqueId]; + } else if (row._data && Object.prototype.hasOwnProperty.call(row._data, uniqueId)) { // uniqueId is a row data property + rowUniqueId = row._data[uniqueId]; + } else { + continue; + } + if (typeof rowUniqueId === 'string') { + id = id.toString(); + } else if (typeof rowUniqueId === 'number') { + if ((Number(rowUniqueId) === rowUniqueId) && (rowUniqueId % 1 === 0)) { + id = parseInt(id); + } else if ((rowUniqueId === Number(rowUniqueId)) && (rowUniqueId !== 0)) { + id = parseFloat(id); + } + } + + if (rowUniqueId === id) { + dataRow = row; + break; + } + } + + return dataRow; + }; + + BootstrapTable.prototype.removeByUniqueId = function (id) { + var len = this.options.data.length, + row = this.getRowByUniqueId(id); + + if (row) { + this.options.data.splice(this.options.data.indexOf(row), 1); + } + + if (len === this.options.data.length) { + return; + } + + this.initSearch(); + this.initPagination(); + this.initBody(true); + }; + + BootstrapTable.prototype.updateByUniqueId = function (params) { + var rowId; + + if (!Object.prototype.hasOwnProperty.call(params, 'id') || !Object.prototype.hasOwnProperty.call(params, 'row')) { + return; + } + + rowId = $.inArray(this.getRowByUniqueId(params.id), this.options.data); + + if (rowId === -1) { + return; + } + + $.extend(this.data[rowId], params.row); + this.initSort(); + this.initBody(true); + }; + + BootstrapTable.prototype.insertRow = function (params) { + if (!Object.prototype.hasOwnProperty.call(params, 'index') || !Object.prototype.hasOwnProperty.call(params, 'row')) { + return; + } + this.data.splice(params.index, 0, params.row); + this.initSearch(); + this.initPagination(); + this.initSort(); + this.initBody(true); + }; + + BootstrapTable.prototype.updateRow = function (params) { + if (!Object.prototype.hasOwnProperty.call(params, 'index') || !Object.prototype.hasOwnProperty.call(params, 'row')) { + return; + } + $.extend(this.data[params.index], params.row); + this.initSort(); + this.initBody(true); + }; + + BootstrapTable.prototype.showRow = function (params) { + if (!Object.prototype.hasOwnProperty.call(params, 'index') && !Object.prototype.hasOwnProperty.call(params, 'uniqueId')) { + return; + } + this.toggleRow(params.index, params.uniqueId, true); + }; + + BootstrapTable.prototype.hideRow = function (params) { + if (!Object.prototype.hasOwnProperty.call(params, 'index') && !Object.prototype.hasOwnProperty.call(params, 'uniqueId')) { + return; + } + this.toggleRow(params.index, params.uniqueId, false); + }; + + BootstrapTable.prototype.getRowsHidden = function (show) { + var rows = $(this.$body[0]).children().filter(':hidden'), + i = 0; + if (show) { + for (; i < rows.length; i++) { + $(rows[i]).show(); + } + } + return rows; + }; + + BootstrapTable.prototype.mergeCells = function (options) { + var row = options.index, + col = $.inArray(options.field, this.getVisibleFields()), + rowspan = options.rowspan || 1, + colspan = options.colspan || 1, + i, j, + $tr = this.$body.find('>tr'), + $td; + + if (this.options.detailView && !this.options.cardView) { + col += 1; + } + + $td = $tr.eq(row).find('>td').eq(col); + + if (row < 0 || col < 0 || row >= this.data.length) { + return; + } + + for (i = row; i < row + rowspan; i++) { + for (j = col; j < col + colspan; j++) { + $tr.eq(i).find('>td').eq(j).hide(); + } + } + + $td.attr('rowspan', rowspan).attr('colspan', colspan).show(); + }; + + BootstrapTable.prototype.updateCell = function (params) { + if (!Object.prototype.hasOwnProperty.call(params, 'index') || + !Object.prototype.hasOwnProperty.call(params, 'field') || + !Object.prototype.hasOwnProperty.call(params, 'value')) { + return; + } + this.data[params.index][params.field] = params.value; + + if (params.reinit === false) { + return; + } + this.initSort(); + this.initBody(true); + }; + + BootstrapTable.prototype.getOptions = function () { + return this.options; + }; + + BootstrapTable.prototype.getSelections = function () { + var that = this; + + return $.grep(this.data, function (row) { + return row[that.header.stateField]; + }); + }; + + BootstrapTable.prototype.getAllSelections = function () { + var that = this; + + return $.grep(this.options.data, function (row) { + return row[that.header.stateField]; + }); + }; + + BootstrapTable.prototype.checkAll = function () { + this.checkAll_(true); + }; + + BootstrapTable.prototype.uncheckAll = function () { + this.checkAll_(false); + }; + + BootstrapTable.prototype.checkInvert = function () { + var that = this; + var rows = that.$selectItem.filter(':enabled'); + var checked = rows.filter(':checked'); + rows.each(function () { + $(this).prop('checked', !$(this).prop('checked')); + }); + that.updateRows(); + that.updateSelected(); + that.trigger('uncheck-some', checked); + checked = that.getSelections(); + that.trigger('check-some', checked); + }; + + BootstrapTable.prototype.checkAll_ = function (checked) { + var rows; + if (!checked) { + rows = this.getSelections(); + } + this.$selectAll.add(this.$selectAll_).prop('checked', checked); + this.$selectItem.filter(':enabled').prop('checked', checked); + this.updateRows(); + if (checked) { + rows = this.getSelections(); + } + this.trigger(checked ? 'check-all' : 'uncheck-all', rows); + }; + + BootstrapTable.prototype.check = function (index) { + this.check_(true, index); + }; + + BootstrapTable.prototype.uncheck = function (index) { + this.check_(false, index); + }; + + BootstrapTable.prototype.check_ = function (checked, index) { + var $el = this.$selectItem.filter(sprintf('[data-index="%s"]', index)).prop('checked', checked); + this.data[index][this.header.stateField] = checked; + this.updateSelected(); + this.trigger(checked ? 'check' : 'uncheck', this.data[index], $el); + }; + + BootstrapTable.prototype.checkBy = function (obj) { + this.checkBy_(true, obj); + }; + + BootstrapTable.prototype.uncheckBy = function (obj) { + this.checkBy_(false, obj); + }; + + BootstrapTable.prototype.checkBy_ = function (checked, obj) { + if (!Object.prototype.hasOwnProperty.call(obj, 'field') || !Object.prototype.hasOwnProperty.call(obj, 'values')) { + return; + } + + var that = this, + rows = []; + $.each(this.options.data, function (index, row) { + if (!Object.prototype.hasOwnProperty.call(row, obj.field)) { + return false; + } + if ($.inArray(row[obj.field], obj.values) !== -1) { + var $el = that.$selectItem.filter(':enabled') + .filter(sprintf('[data-index="%s"]', index)).prop('checked', checked); + row[that.header.stateField] = checked; + rows.push(row); + that.trigger(checked ? 'check' : 'uncheck', row, $el); + } + }); + this.updateSelected(); + this.trigger(checked ? 'check-some' : 'uncheck-some', rows); + }; + + BootstrapTable.prototype.destroy = function () { + this.$el.insertBefore(this.$container); + $(this.options.toolbar).insertBefore(this.$el); + this.$container.next().remove(); + this.$container.remove(); + this.$el.html(this.$el_.html()) + .css('margin-top', '0') + .attr('class', this.$el_.attr('class') || ''); // reset the class + }; + + BootstrapTable.prototype.showLoading = function () { + this.$tableLoading.show(); + }; + + BootstrapTable.prototype.hideLoading = function () { + this.$tableLoading.hide(); + }; + + BootstrapTable.prototype.togglePagination = function () { + this.options.pagination = !this.options.pagination; + var button = this.$toolbar.find('button[name="paginationSwitch"] i'); + if (this.options.pagination) { + button.attr("class", this.options.iconsPrefix + " " + this.options.icons.paginationSwitchDown); + } else { + button.attr("class", this.options.iconsPrefix + " " + this.options.icons.paginationSwitchUp); + } + this.updatePagination(); + }; + + BootstrapTable.prototype.refresh = function (params) { + if (params && params.url) { + this.options.url = params.url; + this.options.pageNumber = 1; + } + this.initServer(params && params.silent, params && params.query); + }; + + BootstrapTable.prototype.resetWidth = function () { + if (this.options.showHeader && this.options.height) { + this.fitHeader(); + } + if (this.options.showFooter) { + this.fitFooter(); + } + }; + + BootstrapTable.prototype.showColumn = function (field) { + this.toggleColumn(getFieldIndex(this.columns, field), true, true); + }; + + BootstrapTable.prototype.hideColumn = function (field) { + this.toggleColumn(getFieldIndex(this.columns, field), false, true); + }; + + BootstrapTable.prototype.getHiddenColumns = function () { + return $.grep(this.columns, function (column) { + return !column.visible; + }); + }; + + BootstrapTable.prototype.filterBy = function (columns) { + this.filterColumns = $.isEmptyObject(columns) ? {} : columns; + this.options.pageNumber = 1; + this.initSearch(); + this.updatePagination(); + }; + + BootstrapTable.prototype.scrollTo = function (value) { + if (typeof value === 'string') { + value = value === 'bottom' ? this.$tableBody[0].scrollHeight : 0; + } + if (typeof value === 'number') { + this.$tableBody.scrollTop(value); + } + if (typeof value === 'undefined') { + return this.$tableBody.scrollTop(); + } + }; + + BootstrapTable.prototype.getScrollPosition = function () { + return this.scrollTo(); + }; + + BootstrapTable.prototype.selectPage = function (page) { + if (page > 0 && page <= this.options.totalPages) { + this.options.pageNumber = page; + this.updatePagination(); + } + }; + + BootstrapTable.prototype.prevPage = function () { + if (this.options.pageNumber > 1) { + this.options.pageNumber--; + this.updatePagination(); + } + }; + + BootstrapTable.prototype.nextPage = function () { + if (this.options.pageNumber < this.options.totalPages) { + this.options.pageNumber++; + this.updatePagination(); + } + }; + + BootstrapTable.prototype.toggleView = function () { + this.options.cardView = !this.options.cardView; + this.initHeader(); + // Fixed remove toolbar when click cardView button. + //that.initToolbar(); + this.initBody(); + this.trigger('toggle', this.options.cardView); + }; + + BootstrapTable.prototype.refreshOptions = function (options) { + //If the objects are equivalent then avoid the call of destroy / init methods + if (compareObjects(this.options, options, true)) { + return; + } + this.options = $.extend(this.options, options); + this.trigger('refresh-options', this.options); + this.destroy(); + this.init(); + }; + + BootstrapTable.prototype.resetSearch = function (text) { + var $search = this.$toolbar.find('.search input'); + $search.val(text || ''); + this.onSearch({ currentTarget: $search }); + }; + + BootstrapTable.prototype.expandRow_ = function (expand, index) { + var $tr = this.$body.find(sprintf('> tr[data-index="%s"]', index)); + if ($tr.next().is('tr.detail-view') === (expand ? false : true)) { + $tr.find('> td > .detail-icon').click(); + } + }; + + BootstrapTable.prototype.expandRow = function (index) { + this.expandRow_(true, index); + }; + + BootstrapTable.prototype.collapseRow = function (index) { + this.expandRow_(false, index); + }; + + BootstrapTable.prototype.expandAllRows = function (isSubTable) { + if (isSubTable) { + var $tr = this.$body.find(sprintf('> tr[data-index="%s"]', 0)), + that = this, + detailIcon = null, + executeInterval = false, + idInterval = -1; + + if (!$tr.next().is('tr.detail-view')) { + $tr.find('> td > .detail-icon').click(); + executeInterval = true; + } else if (!$tr.next().next().is('tr.detail-view')) { + $tr.next().find(".detail-icon").click(); + executeInterval = true; + } + + if (executeInterval) { + try { + idInterval = setInterval(function () { + detailIcon = that.$body.find("tr.detail-view").last().find(".detail-icon"); + if (detailIcon.length > 0) { + detailIcon.click(); + } else { + clearInterval(idInterval); + } + }, 1); + } catch (ex) { + clearInterval(idInterval); + } + } + } else { + var trs = this.$body.children(); + for (var i = 0; i < trs.length; i++) { + this.expandRow_(true, $(trs[i]).data("index")); + } + } + }; + + BootstrapTable.prototype.collapseAllRows = function (isSubTable) { + if (isSubTable) { + this.expandRow_(false, 0); + } else { + var trs = this.$body.children(); + for (var i = 0; i < trs.length; i++) { + this.expandRow_(false, $(trs[i]).data("index")); + } + } + }; + + BootstrapTable.prototype.updateFormatText = function (name, text) { + if (this.options[sprintf('format%s', name)]) { + if (typeof text === 'string') { + this.options[sprintf('format%s', name)] = function () { + return text; + }; + } else if (typeof text === 'function') { + this.options[sprintf('format%s', name)] = text; + } + } + this.initToolbar(); + this.initPagination(); + this.initBody(); + }; + + // BOOTSTRAP TABLE PLUGIN DEFINITION + // ======================= + + var allowedMethods = [ + 'getOptions', + 'getSelections', 'getAllSelections', 'getData', + 'load', 'append', 'prepend', 'remove', 'removeAll', + 'insertRow', 'updateRow', 'updateCell', 'updateByUniqueId', 'removeByUniqueId', + 'getRowByUniqueId', 'showRow', 'hideRow', 'getRowsHidden', + 'mergeCells', + 'checkAll', 'uncheckAll', 'checkInvert', + 'check', 'uncheck', + 'checkBy', 'uncheckBy', + 'refresh', + 'resetView', + 'resetWidth', + 'destroy', + 'showLoading', 'hideLoading', + 'showColumn', 'hideColumn', 'getHiddenColumns', + 'filterBy', + 'scrollTo', + 'getScrollPosition', + 'selectPage', 'prevPage', 'nextPage', + 'togglePagination', + 'toggleView', + 'refreshOptions', + 'resetSearch', + 'expandRow', 'collapseRow', 'expandAllRows', 'collapseAllRows', + 'updateFormatText' + ]; + + $.fn.bootstrapTable = function (option) { + var value, + args = Array.prototype.slice.call(arguments, 1); + + this.each(function () { + var $this = $(this), + data = $this.data('bootstrap.table'), + options = $.extend({}, BootstrapTable.DEFAULTS, $this.data(), + typeof option === 'object' && option); + + if (typeof option === 'string') { + if ($.inArray(option, allowedMethods) < 0) { + throw new Error("Unknown method: " + option); + } + + if (!data) { + return; + } + + value = data[option].apply(data, args); + + if (option === 'destroy') { + $this.removeData('bootstrap.table'); + } + } + + if (!data) { + $this.data('bootstrap.table', (data = new BootstrapTable(this, options))); + } + }); + + return typeof value === 'undefined' ? this : value; + }; + + $.fn.bootstrapTable.Constructor = BootstrapTable; + $.fn.bootstrapTable.defaults = BootstrapTable.DEFAULTS; + $.fn.bootstrapTable.columnDefaults = BootstrapTable.COLUMN_DEFAULTS; + $.fn.bootstrapTable.locales = BootstrapTable.LOCALES; + $.fn.bootstrapTable.methods = allowedMethods; + $.fn.bootstrapTable.utils = { + sprintf: sprintf, + getFieldIndex: getFieldIndex, + compareObjects: compareObjects, + calculateObjectValue: calculateObjectValue + }; + + // BOOTSTRAP TABLE INIT + // ======================= + + $(function () { + $('[data-toggle="table"]').bootstrapTable(); + }); + }(jQuery); +})); \ No newline at end of file diff --git a/src/assets/plugins/bootstrap-table/js/extensions/editable/bootstrap-table-editable.js b/src/assets/plugins/bootstrap-table/js/extensions/editable/bootstrap-table-editable.js new file mode 100644 index 0000000..61f8022 --- /dev/null +++ b/src/assets/plugins/bootstrap-table/js/extensions/editable/bootstrap-table-editable.js @@ -0,0 +1,146 @@ +/** + * @author zhixin wen + * extensions: https://github.com/vitalets/x-editable + */ + +(function (root, factory) { + var define; + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + + !function ($) { + + 'use strict'; + + $.extend($.fn.bootstrapTable.defaults, { + editable: true, + onEditableInit: function () { + return false; + }, + onEditableSave: function (field, row, oldValue, $el) { + return false; + }, + onEditableShown: function (field, row, $el, editable) { + return false; + }, + onEditableHidden: function (field, row, $el, reason) { + return false; + } + }); + + $.extend($.fn.bootstrapTable.Constructor.EVENTS, { + 'editable-init.bs.table': 'onEditableInit', + 'editable-save.bs.table': 'onEditableSave', + 'editable-shown.bs.table': 'onEditableShown', + 'editable-hidden.bs.table': 'onEditableHidden' + }); + + var BootstrapTable = $.fn.bootstrapTable.Constructor, + _initTable = BootstrapTable.prototype.initTable, + _initBody = BootstrapTable.prototype.initBody; + + BootstrapTable.prototype.initTable = function () { + var that = this; + _initTable.apply(this, Array.prototype.slice.apply(arguments)); + + if (!this.options.editable) { + return; + } + + $.each(this.columns, function (i, column) { + if (!column.editable) { + return; + } + + var editableOptions = {}, editableDataMarkup = [], editableDataPrefix = 'editable-'; + + var processDataOptions = function (key, value) { + // Replace camel case with dashes. + var dashKey = key.replace(/([A-Z])/g, function ($1) { return "-" + $1.toLowerCase(); }); + if (dashKey.slice(0, editableDataPrefix.length) == editableDataPrefix) { + var dataKey = dashKey.replace(editableDataPrefix, 'data-'); + editableOptions[dataKey] = value; + } + }; + + $.each(that.options, processDataOptions); + + var _formatter = column.formatter; + column.formatter = function (value, row, index) { + var result = _formatter ? _formatter(value, row, index) : value; + + $.each(column, processDataOptions); + + $.each(editableOptions, function (key, value) { + editableDataMarkup.push(' ' + key + '="' + value + '"'); + }); + + return ['' + '' + ].join(''); + }; + }); + }; + + BootstrapTable.prototype.initBody = function () { + var that = this; + _initBody.apply(this, Array.prototype.slice.apply(arguments)); + + if (!this.options.editable) { + return; + } + + $.each(this.columns, function (i, column) { + if (!column.editable) { + return; + } + + that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable) + .off('save').on('save', function (e, params) { + var data = that.getData(), + index = $(this).parents('tr[data-index]').data('index'), + row = data[index], + oldValue = row[column.field]; + + $(this).data('value', params.submitValue); + row[column.field] = params.submitValue; + that.trigger('editable-save', column.field, row, oldValue, $(this)); + }); + that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable) + .off('shown').on('shown', function (e, editable) { + var data = that.getData(), + index = $(this).parents('tr[data-index]').data('index'), + row = data[index]; + + that.trigger('editable-shown', column.field, row, $(this), editable); + }); + that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable) + .off('hidden').on('hidden', function (e, reason) { + var data = that.getData(), + index = $(this).parents('tr[data-index]').data('index'), + row = data[index]; + + that.trigger('editable-hidden', column.field, row, $(this), reason); + }); + }); + this.trigger('editable-init'); + }; + + }(jQuery); +})); \ No newline at end of file diff --git a/src/assets/plugins/bootstrap-table/js/locale/bootstrap-table-zh-CN.js b/src/assets/plugins/bootstrap-table/js/locale/bootstrap-table-zh-CN.js new file mode 100644 index 0000000..dc8e061 --- /dev/null +++ b/src/assets/plugins/bootstrap-table/js/locale/bootstrap-table-zh-CN.js @@ -0,0 +1,60 @@ +/** + * Bootstrap Table Chinese translation + * Author: Zhixin Wen + */ + +(function (root, factory) { + var define; + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(jQuery); + } +}(this, function (jQuery) { + + (function ($) { + 'use strict'; + + $.fn.bootstrapTable.locales['zh-CN'] = { + formatLoadingMessage: function () { + return '正在努力地加载数据中,请稍候……'; + }, + formatRecordsPerPage: function (pageNumber) { + return '每页显示 ' + pageNumber + ' 条记录'; + }, + formatShowingRows: function (pageFrom, pageTo, totalRows) { + return '显示第 ' + pageFrom + ' 到第 ' + pageTo + ' 条记录,总共 ' + totalRows + ' 条记录'; + }, + formatSearch: function () { + return '搜索'; + }, + formatNoMatches: function () { + return '没有找到匹配的记录'; + }, + formatPaginationSwitch: function () { + return '隐藏/显示分页'; + }, + formatRefresh: function () { + return '刷新'; + }, + formatToggle: function () { + return '切换'; + }, + formatColumns: function () { + return '列'; + } + }; + + $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-CN']); + + })(jQuery); +})); + diff --git a/src/assets/plugins/bootstrap-treeview/css/bootstrap-treeview.min.css b/src/assets/plugins/bootstrap-treeview/css/bootstrap-treeview.min.css new file mode 100644 index 0000000..0090fc5 --- /dev/null +++ b/src/assets/plugins/bootstrap-treeview/css/bootstrap-treeview.min.css @@ -0,0 +1,18 @@ +.treeview .list-group-item { + cursor: pointer +} + +.treeview span.indent { + margin-left: 10px; + margin-right: 10px +} + +.treeview span.icon { + width: 12px; + margin-right: 5px +} + +.treeview .node-disabled { + color: silver; + cursor: not-allowed +} \ No newline at end of file diff --git a/src/assets/plugins/bootstrap-treeview/js/bootstrap-treeview.min.js b/src/assets/plugins/bootstrap-treeview/js/bootstrap-treeview.min.js new file mode 100644 index 0000000..ccfc1de --- /dev/null +++ b/src/assets/plugins/bootstrap-treeview/js/bootstrap-treeview.min.js @@ -0,0 +1,593 @@ +!function(a, b, c, d) { + "use strict"; + var e = "treeview" + , f = {}; + f.settings = { + injectStyle: !0, + levels: 2, + expandIcon: "glyphicon glyphicon-plus", + collapseIcon: "glyphicon glyphicon-minus", + emptyIcon: "glyphicon", + nodeIcon: "", + selectedIcon: "", + checkedIcon: "glyphicon glyphicon-check", + uncheckedIcon: "glyphicon glyphicon-unchecked", + color: d, + backColor: d, + borderColor: d, + onhoverColor: "#F5F5F5", + selectedColor: "#FFFFFF", + selectedBackColor: "#428bca", + searchResultColor: "#D9534F", + searchResultBackColor: d, + enableLinks: !1, + highlightSelected: !0, + highlightSearchResults: !0, + showBorder: !0, + showIcon: !0, + showCheckbox: !1, + showTags: !1, + multiSelect: !1, + onNodeChecked: d, + onNodeCollapsed: d, + onNodeDisabled: d, + onNodeEnabled: d, + onNodeExpanded: d, + onNodeSelected: d, + onNodeUnchecked: d, + onNodeUnselected: d, + onSearchComplete: d, + onSearchCleared: d + }, + f.options = { + silent: !1, + ignoreChildren: !1 + }, + f.searchOptions = { + ignoreCase: !0, + exactMatch: !1, + revealResults: !0 + }; + var g = function(b, c) { + return this.$element = a(b), + this.elementId = b.id, + this.styleId = this.elementId + "-style", + this.init(c), + { + options: this.options, + init: a.proxy(this.init, this), + remove: a.proxy(this.remove, this), + getNode: a.proxy(this.getNode, this), + getParent: a.proxy(this.getParent, this), + getSiblings: a.proxy(this.getSiblings, this), + getSelected: a.proxy(this.getSelected, this), + getUnselected: a.proxy(this.getUnselected, this), + getExpanded: a.proxy(this.getExpanded, this), + getCollapsed: a.proxy(this.getCollapsed, this), + getChecked: a.proxy(this.getChecked, this), + getUnchecked: a.proxy(this.getUnchecked, this), + getDisabled: a.proxy(this.getDisabled, this), + getEnabled: a.proxy(this.getEnabled, this), + selectNode: a.proxy(this.selectNode, this), + unselectNode: a.proxy(this.unselectNode, this), + toggleNodeSelected: a.proxy(this.toggleNodeSelected, this), + collapseAll: a.proxy(this.collapseAll, this), + collapseNode: a.proxy(this.collapseNode, this), + expandAll: a.proxy(this.expandAll, this), + expandNode: a.proxy(this.expandNode, this), + toggleNodeExpanded: a.proxy(this.toggleNodeExpanded, this), + revealNode: a.proxy(this.revealNode, this), + checkAll: a.proxy(this.checkAll, this), + checkNode: a.proxy(this.checkNode, this), + uncheckAll: a.proxy(this.uncheckAll, this), + uncheckNode: a.proxy(this.uncheckNode, this), + toggleNodeChecked: a.proxy(this.toggleNodeChecked, this), + disableAll: a.proxy(this.disableAll, this), + disableNode: a.proxy(this.disableNode, this), + enableAll: a.proxy(this.enableAll, this), + enableNode: a.proxy(this.enableNode, this), + toggleNodeDisabled: a.proxy(this.toggleNodeDisabled, this), + search: a.proxy(this.search, this), + clearSearch: a.proxy(this.clearSearch, this) + } + }; + g.prototype.init = function(b) { + this.tree = [], + this.nodes = [], + b.data && ("string" == typeof b.data && (b.data = a.parseJSON(b.data)), + this.tree = a.extend(!0, [], b.data), + delete b.data), + this.options = a.extend({}, f.settings, b), + this.destroy(), + this.subscribeEvents(), + this.setInitialStates({ + nodes: this.tree + }, 0), + this.render() + } + , + g.prototype.remove = function() { + this.destroy(), + a.removeData(this, e), + a("#" + this.styleId).remove() + } + , + g.prototype.destroy = function() { + this.initialized && (this.$wrapper.remove(), + this.$wrapper = null, + this.unsubscribeEvents(), + this.initialized = !1) + } + , + g.prototype.unsubscribeEvents = function() { + this.$element.off("click"), + this.$element.off("nodeChecked"), + this.$element.off("nodeCollapsed"), + this.$element.off("nodeDisabled"), + this.$element.off("nodeEnabled"), + this.$element.off("nodeExpanded"), + this.$element.off("nodeSelected"), + this.$element.off("nodeUnchecked"), + this.$element.off("nodeUnselected"), + this.$element.off("searchComplete"), + this.$element.off("searchCleared") + } + , + g.prototype.subscribeEvents = function() { + this.unsubscribeEvents(), + this.$element.on("click", a.proxy(this.clickHandler, this)), + "function" == typeof this.options.onNodeChecked && this.$element.on("nodeChecked", this.options.onNodeChecked), + "function" == typeof this.options.onNodeCollapsed && this.$element.on("nodeCollapsed", this.options.onNodeCollapsed), + "function" == typeof this.options.onNodeDisabled && this.$element.on("nodeDisabled", this.options.onNodeDisabled), + "function" == typeof this.options.onNodeEnabled && this.$element.on("nodeEnabled", this.options.onNodeEnabled), + "function" == typeof this.options.onNodeExpanded && this.$element.on("nodeExpanded", this.options.onNodeExpanded), + "function" == typeof this.options.onNodeSelected && this.$element.on("nodeSelected", this.options.onNodeSelected), + "function" == typeof this.options.onNodeUnchecked && this.$element.on("nodeUnchecked", this.options.onNodeUnchecked), + "function" == typeof this.options.onNodeUnselected && this.$element.on("nodeUnselected", this.options.onNodeUnselected), + "function" == typeof this.options.onSearchComplete && this.$element.on("searchComplete", this.options.onSearchComplete), + "function" == typeof this.options.onSearchCleared && this.$element.on("searchCleared", this.options.onSearchCleared) + } + , + g.prototype.setInitialStates = function(b, c) { + if (b.nodes) { + c += 1; + var d = b + , e = this; + a.each(b.nodes, function(a, b) { + b.nodeId = e.nodes.length, + b.parentId = d.nodeId, + Object.prototype.hasOwnProperty.call(b, "selectable") || (b.selectable = !0), + b.state = b.state || {}, + Object.prototype.hasOwnProperty.call(b.state, "checked") || (b.state.checked = !1), + Object.prototype.hasOwnProperty.call(b.state, "disabled") || (b.state.disabled = !1), + Object.prototype.hasOwnProperty.call(b.state, "expanded") || (!b.state.disabled && c < e.options.levels && b.nodes && b.nodes.length > 0 ? b.state.expanded = !0 : b.state.expanded = !1), + Object.prototype.hasOwnProperty.call(b.state, "selected") || (b.state.selected = !1), + e.nodes.push(b), + b.nodes && e.setInitialStates(b, c) + }) + } + } + , + g.prototype.clickHandler = function(b) { + this.options.enableLinks || b.preventDefault(); + var c = a(b.target) + , d = this.findNode(c); + if (d && !d.state.disabled) { + var e = c.attr("class") ? c.attr("class").split(" ") : []; + -1 !== e.indexOf("expand-icon") ? (this.toggleExpandedState(d, f.options), + this.render()) : -1 !== e.indexOf("check-icon") ? (this.toggleCheckedState(d, f.options), + this.render()) : (d.selectable ? this.toggleSelectedState(d, f.options) : this.toggleExpandedState(d, f.options), + this.render()) + } + } + , + g.prototype.findNode = function(a) { + var b = a.closest("li.list-group-item").attr("data-nodeid") + , c = this.nodes[b]; + return c || console.log("Error: node does not exist"), + c + } + , + g.prototype.toggleExpandedState = function(a, b) { + a && this.setExpandedState(a, !a.state.expanded, b) + } + , + g.prototype.setExpandedState = function(b, c, d) { + c !== b.state.expanded && (c && b.nodes ? (b.state.expanded = !0, + d.silent || this.$element.trigger("nodeExpanded", a.extend(!0, {}, b))) : c || (b.state.expanded = !1, + d.silent || this.$element.trigger("nodeCollapsed", a.extend(!0, {}, b)), + b.nodes && !d.ignoreChildren && a.each(b.nodes, a.proxy(function(a, b) { + this.setExpandedState(b, !1, d) + }, this)))) + } + , + g.prototype.toggleSelectedState = function(a, b) { + a && this.setSelectedState(a, !a.state.selected, b) + } + , + g.prototype.setSelectedState = function(b, c, d) { + c !== b.state.selected && (c ? (this.options.multiSelect || a.each(this.findNodes("true", "g", "state.selected"), a.proxy(function(a, b) { + this.setSelectedState(b, !1, d) + }, this)), + b.state.selected = !0, + d.silent || this.$element.trigger("nodeSelected", a.extend(!0, {}, b))) : (b.state.selected = !1, + d.silent || this.$element.trigger("nodeUnselected", a.extend(!0, {}, b)))) + } + , + g.prototype.toggleCheckedState = function(a, b) { + a && this.setCheckedState(a, !a.state.checked, b) + } + , + g.prototype.setCheckedState = function(b, c, d) { + c !== b.state.checked && (c ? (b.state.checked = !0, + d.silent || this.$element.trigger("nodeChecked", a.extend(!0, {}, b))) : (b.state.checked = !1, + d.silent || this.$element.trigger("nodeUnchecked", a.extend(!0, {}, b)))) + } + , + g.prototype.setDisabledState = function(b, c, d) { + c !== b.state.disabled && (c ? (b.state.disabled = !0, + this.setExpandedState(b, !1, d), + this.setSelectedState(b, !1, d), + this.setCheckedState(b, !1, d), + d.silent || this.$element.trigger("nodeDisabled", a.extend(!0, {}, b))) : (b.state.disabled = !1, + d.silent || this.$element.trigger("nodeEnabled", a.extend(!0, {}, b)))) + } + , + g.prototype.render = function() { + this.initialized || (this.$element.addClass(e), + this.$wrapper = a(this.template.list), + this.injectStyle(), + this.initialized = !0), + this.$element.empty().append(this.$wrapper.empty()), + this.buildTree(this.tree, 0) + } + , + g.prototype.buildTree = function(b, c) { + if (b) { + c += 1; + var d = this; + a.each(b, function(b, e) { + for (var f = a(d.template.item).addClass("node-" + d.elementId).addClass(e.state.checked ? "node-checked" : "").addClass(e.state.disabled ? "node-disabled" : "").addClass(e.state.selected ? "node-selected" : "").addClass(e.searchResult ? "search-result" : "").attr("data-nodeid", e.nodeId).attr("style", d.buildStyleOverride(e)), g = 0; c - 1 > g; g++) + f.append(d.template.indent); + var h = []; + if (e.nodes ? (h.push("expand-icon"), + h.push(e.state.expanded ? d.options.collapseIcon : d.options.expandIcon)) : h.push(d.options.emptyIcon), + f.append(a(d.template.icon).addClass(h.join(" "))), + d.options.showIcon) { + h = ["node-icon"]; + h.push(e.icon || d.options.nodeIcon), + e.state.selected && (h.pop(), + h.push(e.selectedIcon || d.options.selectedIcon || e.icon || d.options.nodeIcon)), + f.append(a(d.template.icon).addClass(h.join(" "))) + } + if (d.options.showCheckbox) { + h = ["check-icon"]; + h.push(e.state.checked ? d.options.checkedIcon : d.options.uncheckedIcon), + f.append(a(d.template.icon).addClass(h.join(" "))) + } + return f.append(d.options.enableLinks ? a(d.template.link).attr("href", e.href).append(e.text) : e.text), + d.options.showTags && e.tags && a.each(e.tags, function(b, c) { + f.append(a(d.template.badge).append(c)) + }), + d.$wrapper.append(f), + e.nodes && e.state.expanded && !e.state.disabled ? d.buildTree(e.nodes, c) : void 0 + }) + } + } + , + g.prototype.buildStyleOverride = function(a) { + if (a.state.disabled) + return ""; + var b = a.color + , c = a.backColor; + return this.options.highlightSelected && a.state.selected && (this.options.selectedColor && (b = this.options.selectedColor), + this.options.selectedBackColor && (c = this.options.selectedBackColor)), + this.options.highlightSearchResults && a.searchResult && !a.state.disabled && (this.options.searchResultColor && (b = this.options.searchResultColor), + this.options.searchResultBackColor && (c = this.options.searchResultBackColor)), + "color:" + b + ";background-color:" + c + ";" + } + , + g.prototype.injectStyle = function() { + this.options.injectStyle && !c.getElementById(this.styleId) && a('").appendTo("head") + } + , + g.prototype.buildStyle = function() { + var a = ".node-" + this.elementId + "{"; + return this.options.color && (a += "color:" + this.options.color + ";"), + this.options.backColor && (a += "background-color:" + this.options.backColor + ";"), + this.options.showBorder ? this.options.borderColor && (a += "border:1px solid " + this.options.borderColor + ";") : a += "border:none;", + a += "}", + this.options.onhoverColor && (a += ".node-" + this.elementId + ":not(.node-disabled):hover{background-color:" + this.options.onhoverColor + ";}"), + this.css + a + } + , + g.prototype.template = { + list: '
      ', + item: '
    • ', + indent: '', + icon: '', + link: '', + badge: '' + }, + g.prototype.css = ".treeview .list-group-item{cursor:pointer}.treeview span.indent{margin-left:10px;margin-right:10px}.treeview span.icon{width:12px;margin-right:5px}.treeview .node-disabled{color:silver;cursor:not-allowed}", + g.prototype.getNode = function(a) { + return this.nodes[a] + } + , + g.prototype.getParent = function(a) { + var b = this.identifyNode(a); + return this.nodes[b.parentId] + } + , + g.prototype.getSiblings = function(a) { + var b = this.identifyNode(a) + , c = this.getParent(b) + , d = c ? c.nodes : this.tree; + return d.filter(function(a) { + return a.nodeId !== b.nodeId + }) + } + , + g.prototype.getSelected = function() { + return this.findNodes("true", "g", "state.selected") + } + , + g.prototype.getUnselected = function() { + return this.findNodes("false", "g", "state.selected") + } + , + g.prototype.getExpanded = function() { + return this.findNodes("true", "g", "state.expanded") + } + , + g.prototype.getCollapsed = function() { + return this.findNodes("false", "g", "state.expanded") + } + , + g.prototype.getChecked = function() { + return this.findNodes("true", "g", "state.checked") + } + , + g.prototype.getUnchecked = function() { + return this.findNodes("false", "g", "state.checked") + } + , + g.prototype.getDisabled = function() { + return this.findNodes("true", "g", "state.disabled") + } + , + g.prototype.getEnabled = function() { + return this.findNodes("false", "g", "state.disabled") + } + , + g.prototype.selectNode = function(b, c) { + this.forEachIdentifier(b, c, a.proxy(function(a, b) { + this.setSelectedState(a, !0, b) + }, this)), + this.render() + } + , + g.prototype.unselectNode = function(b, c) { + this.forEachIdentifier(b, c, a.proxy(function(a, b) { + this.setSelectedState(a, !1, b) + }, this)), + this.render() + } + , + g.prototype.toggleNodeSelected = function(b, c) { + this.forEachIdentifier(b, c, a.proxy(function(a, b) { + this.toggleSelectedState(a, b) + }, this)), + this.render() + } + , + g.prototype.collapseAll = function(b) { + var c = this.findNodes("true", "g", "state.expanded"); + this.forEachIdentifier(c, b, a.proxy(function(a, b) { + this.setExpandedState(a, !1, b) + }, this)), + this.render() + } + , + g.prototype.collapseNode = function(b, c) { + this.forEachIdentifier(b, c, a.proxy(function(a, b) { + this.setExpandedState(a, !1, b) + }, this)), + this.render() + } + , + g.prototype.expandAll = function(b) { + if (b = a.extend({}, f.options, b), + b && b.levels) + this.expandLevels(this.tree, b.levels, b); + else { + var c = this.findNodes("false", "g", "state.expanded"); + this.forEachIdentifier(c, b, a.proxy(function(a, b) { + this.setExpandedState(a, !0, b) + }, this)) + } + this.render() + } + , + g.prototype.expandNode = function(b, c) { + this.forEachIdentifier(b, c, a.proxy(function(a, b) { + this.setExpandedState(a, !0, b), + a.nodes && b && b.levels && this.expandLevels(a.nodes, b.levels - 1, b) + }, this)), + this.render() + } + , + g.prototype.expandLevels = function(b, c, d) { + d = a.extend({}, f.options, d), + a.each(b, a.proxy(function(a, b) { + this.setExpandedState(b, c > 0 ? !0 : !1, d), + b.nodes && this.expandLevels(b.nodes, c - 1, d) + }, this)) + } + , + g.prototype.revealNode = function(b, c) { + this.forEachIdentifier(b, c, a.proxy(function(a, b) { + for (var c = this.getParent(a); c; ) + this.setExpandedState(c, !0, b), + c = this.getParent(c) + }, this)), + this.render() + } + , + g.prototype.toggleNodeExpanded = function(b, c) { + this.forEachIdentifier(b, c, a.proxy(function(a, b) { + this.toggleExpandedState(a, b) + }, this)), + this.render() + } + , + g.prototype.checkAll = function(b) { + var c = this.findNodes("false", "g", "state.checked"); + this.forEachIdentifier(c, b, a.proxy(function(a, b) { + this.setCheckedState(a, !0, b) + }, this)), + this.render() + } + , + g.prototype.checkNode = function(b, c) { + this.forEachIdentifier(b, c, a.proxy(function(a, b) { + this.setCheckedState(a, !0, b) + }, this)), + this.render() + } + , + g.prototype.uncheckAll = function(b) { + var c = this.findNodes("true", "g", "state.checked"); + this.forEachIdentifier(c, b, a.proxy(function(a, b) { + this.setCheckedState(a, !1, b) + }, this)), + this.render() + } + , + g.prototype.uncheckNode = function(b, c) { + this.forEachIdentifier(b, c, a.proxy(function(a, b) { + this.setCheckedState(a, !1, b) + }, this)), + this.render() + } + , + g.prototype.toggleNodeChecked = function(b, c) { + this.forEachIdentifier(b, c, a.proxy(function(a, b) { + this.toggleCheckedState(a, b) + }, this)), + this.render() + } + , + g.prototype.disableAll = function(b) { + var c = this.findNodes("false", "g", "state.disabled"); + this.forEachIdentifier(c, b, a.proxy(function(a, b) { + this.setDisabledState(a, !0, b) + }, this)), + this.render() + } + , + g.prototype.disableNode = function(b, c) { + this.forEachIdentifier(b, c, a.proxy(function(a, b) { + this.setDisabledState(a, !0, b) + }, this)), + this.render() + } + , + g.prototype.enableAll = function(b) { + var c = this.findNodes("true", "g", "state.disabled"); + this.forEachIdentifier(c, b, a.proxy(function(a, b) { + this.setDisabledState(a, !1, b) + }, this)), + this.render() + } + , + g.prototype.enableNode = function(b, c) { + this.forEachIdentifier(b, c, a.proxy(function(a, b) { + this.setDisabledState(a, !1, b) + }, this)), + this.render() + } + , + g.prototype.toggleNodeDisabled = function(b, c) { + this.forEachIdentifier(b, c, a.proxy(function(a, b) { + this.setDisabledState(a, !a.state.disabled, b) + }, this)), + this.render() + } + , + g.prototype.forEachIdentifier = function(b, c, d) { + c = a.extend({}, f.options, c), + b instanceof Array || (b = [b]), + a.each(b, a.proxy(function(a, b) { + d(this.identifyNode(b), c) + }, this)) + } + , + g.prototype.identifyNode = function(a) { + return "number" == typeof a ? this.nodes[a] : a + } + , + g.prototype.search = function(b, c) { + c = a.extend({}, f.searchOptions, c), + this.clearSearch({ + render: !1 + }); + var d = []; + if (b && b.length > 0) { + c.exactMatch && (b = "^" + b + "$"); + var e = "g"; + c.ignoreCase && (e += "i"), + d = this.findNodes(b, e), + a.each(d, function(a, b) { + b.searchResult = !0 + }) + } + return c.revealResults ? this.revealNode(d) : this.render(), + this.$element.trigger("searchComplete", a.extend(!0, {}, d)), + d + } + , + g.prototype.clearSearch = function(b) { + b = a.extend({}, { + render: !0 + }, b); + var c = a.each(this.findNodes("true", "g", "searchResult"), function(a, b) { + b.searchResult = !1 + }); + b.render && this.render(), + this.$element.trigger("searchCleared", a.extend(!0, {}, c)) + } + , + g.prototype.findNodes = function(b, c, d) { + c = c || "g", + d = d || "text"; + var e = this; + return a.grep(this.nodes, function(a) { + var f = e.getNodeValue(a, d); + return "string" == typeof f ? f.match(new RegExp(b,c)) : void 0 + }) + } + , + g.prototype.getNodeValue = function(a, b) { + var c = b.indexOf("."); + if (c > 0) { + var e = a[b.substring(0, c)] + , f = b.substring(c + 1, b.length); + return this.getNodeValue(e, f) + } + return Object.prototype.hasOwnProperty.call(a, b) ? a[b].toString() : d + } + ; + var h = function(a) { + b.console && b.console.error(a) + }; + a.fn[e] = function(b, c) { + var d; + return this.each(function() { + var f = a.data(this, e); + "string" == typeof b ? f ? a.isFunction(f[b]) && "_" !== b.charAt(0) ? (c instanceof Array || (c = [c]), + d = f[b].apply(f, c)) : h("No such method : " + b) : h("Not initialized, can not call method : " + b) : "boolean" == typeof b ? d = f : a.data(this, e, new g(this,a.extend(!0, {}, b))) + }), + d || this + } +}(jQuery, window, document); diff --git a/src/assets/plugins/clipboard/js/clipboard.min.js b/src/assets/plugins/clipboard/js/clipboard.min.js new file mode 100644 index 0000000..106ebdb --- /dev/null +++ b/src/assets/plugins/clipboard/js/clipboard.min.js @@ -0,0 +1,562 @@ +/*! + * clipboard.js v1.7.1 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +!function(t) { + var define; + if ("object" == typeof exports && "undefined" != typeof module) + module.exports = t(); + else if ("function" == typeof define && define.amd) + define([], t); + else { + var e; + e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this, + e.Clipboard = t() + } +}(function() { + var t, e, n; + return function t(e, n, o) { + function i(a, c) { + if (!n[a]) { + if (!e[a]) { + var l = "function" == typeof require && require; + if (!c && l) + return l(a, !0); + if (r) + return r(a, !0); + var s = new Error("Cannot find module '" + a + "'"); + throw s.code = "MODULE_NOT_FOUND", + s + } + var u = n[a] = { + exports: {} + }; + e[a][0].call(u.exports, function(t) { + var n = e[a][1][t]; + return i(n || t) + }, u, u.exports, t, e, n, o) + } + return n[a].exports + } + for (var r = "function" == typeof require && require, a = 0; a < o.length; a++) + i(o[a]); + return i + }({ + 1: [function(t, e, n) { + function o(t, e) { + for (; t && t.nodeType !== i; ) { + if ("function" == typeof t.matches && t.matches(e)) + return t; + t = t.parentNode + } + } + var i = 9; + if ("undefined" != typeof Element && !Element.prototype.matches) { + var r = Element.prototype; + r.matches = r.matchesSelector || r.mozMatchesSelector || r.msMatchesSelector || r.oMatchesSelector || r.webkitMatchesSelector + } + e.exports = o + } + , {}], + 2: [function(t, e, n) { + function o(t, e, n, o, r) { + var a = i.apply(this, arguments); + return t.addEventListener(n, a, r), + { + destroy: function() { + t.removeEventListener(n, a, r) + } + } + } + function i(t, e, n, o) { + return function(n) { + n.delegateTarget = r(n.target, e), + n.delegateTarget && o.call(t, n) + } + } + var r = t("./closest"); + e.exports = o + } + , { + "./closest": 1 + }], + 3: [function(t, e, n) { + n.node = function(t) { + return void 0 !== t && t instanceof HTMLElement && 1 === t.nodeType + } + , + n.nodeList = function(t) { + var e = Object.prototype.toString.call(t); + return void 0 !== t && ("[object NodeList]" === e || "[object HTMLCollection]" === e) && "length"in t && (0 === t.length || n.node(t[0])) + } + , + n.string = function(t) { + return "string" == typeof t || t instanceof String + } + , + n.fn = function(t) { + return "[object Function]" === Object.prototype.toString.call(t) + } + } + , {}], + 4: [function(t, e, n) { + function o(t, e, n) { + if (!t && !e && !n) + throw new Error("Missing required arguments"); + if (!c.string(e)) + throw new TypeError("Second argument must be a String"); + if (!c.fn(n)) + throw new TypeError("Third argument must be a Function"); + if (c.node(t)) + return i(t, e, n); + if (c.nodeList(t)) + return r(t, e, n); + if (c.string(t)) + return a(t, e, n); + throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList") + } + function i(t, e, n) { + return t.addEventListener(e, n), + { + destroy: function() { + t.removeEventListener(e, n) + } + } + } + function r(t, e, n) { + return Array.prototype.forEach.call(t, function(t) { + t.addEventListener(e, n) + }), + { + destroy: function() { + Array.prototype.forEach.call(t, function(t) { + t.removeEventListener(e, n) + }) + } + } + } + function a(t, e, n) { + return l(document.body, t, e, n) + } + var c = t("./is") + , l = t("delegate"); + e.exports = o + } + , { + "./is": 3, + delegate: 2 + }], + 5: [function(t, e, n) { + function o(t) { + var e; + if ("SELECT" === t.nodeName) + t.focus(), + e = t.value; + else if ("INPUT" === t.nodeName || "TEXTAREA" === t.nodeName) { + var n = t.hasAttribute("readonly"); + n || t.setAttribute("readonly", ""), + t.select(), + t.setSelectionRange(0, t.value.length), + n || t.removeAttribute("readonly"), + e = t.value + } else { + t.hasAttribute("contenteditable") && t.focus(); + var o = window.getSelection() + , i = document.createRange(); + i.selectNodeContents(t), + o.removeAllRanges(), + o.addRange(i), + e = o.toString() + } + return e + } + e.exports = o + } + , {}], + 6: [function(t, e, n) { + function o() {} + o.prototype = { + on: function(t, e, n) { + var o = this.e || (this.e = {}); + return (o[t] || (o[t] = [])).push({ + fn: e, + ctx: n + }), + this + }, + once: function(t, e, n) { + function o() { + i.off(t, o), + e.apply(n, arguments) + } + var i = this; + return o._ = e, + this.on(t, o, n) + }, + emit: function(t) { + var e = [].slice.call(arguments, 1) + , n = ((this.e || (this.e = {}))[t] || []).slice() + , o = 0 + , i = n.length; + for (o; o < i; o++) + n[o].fn.apply(n[o].ctx, e); + return this + }, + off: function(t, e) { + var n = this.e || (this.e = {}) + , o = n[t] + , i = []; + if (o && e) + for (var r = 0, a = o.length; r < a; r++) + o[r].fn !== e && o[r].fn._ !== e && i.push(o[r]); + return i.length ? n[t] = i : delete n[t], + this + } + }, + e.exports = o + } + , {}], + 7: [function(e, n, o) { + !function(i, r) { + if ("function" == typeof t && t.amd) + t(["module", "select"], r); + else if (void 0 !== o) + r(n, e("select")); + else { + var a = { + exports: {} + }; + r(a, i.select), + i.clipboardAction = a.exports + } + }(this, function(t, e) { + "use strict"; + function n(t) { + return t && t.__esModule ? t : { + default: t + } + } + function o(t, e) { + if (!(t instanceof e)) + throw new TypeError("Cannot call a class as a function") + } + var i = n(e) + , r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { + return typeof t + } + : function(t) { + return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t + } + , a = function() { + function t(t, e) { + for (var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(t, o.key, o) + } + } + return function(e, n, o) { + return n && t(e.prototype, n), + o && t(e, o), + e + } + }() + , c = function() { + function t(e) { + o(this, t), + this.resolveOptions(e), + this.initSelection() + } + return a(t, [{ + key: "resolveOptions", + value: function t() { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + this.action = e.action, + this.container = e.container, + this.emitter = e.emitter, + this.target = e.target, + this.text = e.text, + this.trigger = e.trigger, + this.selectedText = "" + } + }, { + key: "initSelection", + value: function t() { + this.text ? this.selectFake() : this.target && this.selectTarget() + } + }, { + key: "selectFake", + value: function t() { + var e = this + , n = "rtl" == document.documentElement.getAttribute("dir"); + this.removeFake(), + this.fakeHandlerCallback = function() { + return e.removeFake() + } + , + this.fakeHandler = this.container.addEventListener("click", this.fakeHandlerCallback) || !0, + this.fakeElem = document.createElement("textarea"), + this.fakeElem.style.fontSize = "12pt", + this.fakeElem.style.border = "0", + this.fakeElem.style.padding = "0", + this.fakeElem.style.margin = "0", + this.fakeElem.style.position = "absolute", + this.fakeElem.style[n ? "right" : "left"] = "-9999px"; + var o = window.pageYOffset || document.documentElement.scrollTop; + this.fakeElem.style.top = o + "px", + this.fakeElem.setAttribute("readonly", ""), + this.fakeElem.value = this.text, + this.container.appendChild(this.fakeElem), + this.selectedText = (0, + i.default)(this.fakeElem), + this.copyText() + } + }, { + key: "removeFake", + value: function t() { + this.fakeHandler && (this.container.removeEventListener("click", this.fakeHandlerCallback), + this.fakeHandler = null, + this.fakeHandlerCallback = null), + this.fakeElem && (this.container.removeChild(this.fakeElem), + this.fakeElem = null) + } + }, { + key: "selectTarget", + value: function t() { + this.selectedText = (0, + i.default)(this.target), + this.copyText() + } + }, { + key: "copyText", + value: function t() { + var e = void 0; + try { + e = document.execCommand(this.action) + } catch (t) { + e = !1 + } + this.handleResult(e) + } + }, { + key: "handleResult", + value: function t(e) { + this.emitter.emit(e ? "success" : "error", { + action: this.action, + text: this.selectedText, + trigger: this.trigger, + clearSelection: this.clearSelection.bind(this) + }) + } + }, { + key: "clearSelection", + value: function t() { + this.trigger && this.trigger.focus(), + window.getSelection().removeAllRanges() + } + }, { + key: "destroy", + value: function t() { + this.removeFake() + } + }, { + key: "action", + set: function t() { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "copy"; + if (this._action = e, + "copy" !== this._action && "cut" !== this._action) + throw new Error('Invalid "action" value, use either "copy" or "cut"') + }, + get: function t() { + return this._action + } + }, { + key: "target", + set: function t(e) { + if (void 0 !== e) { + if (!e || "object" !== (void 0 === e ? "undefined" : r(e)) || 1 !== e.nodeType) + throw new Error('Invalid "target" value, use a valid Element'); + if ("copy" === this.action && e.hasAttribute("disabled")) + throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); + if ("cut" === this.action && (e.hasAttribute("readonly") || e.hasAttribute("disabled"))) + throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); + this._target = e + } + }, + get: function t() { + return this._target + } + }]), + t + }(); + t.exports = c + }) + } + , { + select: 5 + }], + 8: [function(e, n, o) { + !function(i, r) { + if ("function" == typeof t && t.amd) + t(["module", "./clipboard-action", "tiny-emitter", "good-listener"], r); + else if (void 0 !== o) + r(n, e("./clipboard-action"), e("tiny-emitter"), e("good-listener")); + else { + var a = { + exports: {} + }; + r(a, i.clipboardAction, i.tinyEmitter, i.goodListener), + i.clipboard = a.exports + } + }(this, function(t, e, n, o) { + "use strict"; + function i(t) { + return t && t.__esModule ? t : { + default: t + } + } + function r(t, e) { + if (!(t instanceof e)) + throw new TypeError("Cannot call a class as a function") + } + function a(t, e) { + if (!t) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !e || "object" != typeof e && "function" != typeof e ? t : e + } + function c(t, e) { + if ("function" != typeof e && null !== e) + throw new TypeError("Super expression must either be null or a function, not " + typeof e); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e) + } + function l(t, e) { + var n = "data-clipboard-" + t; + if (e.hasAttribute(n)) + return e.getAttribute(n) + } + var s = i(e) + , u = i(n) + , f = i(o) + , d = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { + return typeof t + } + : function(t) { + return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t + } + , h = function() { + function t(t, e) { + for (var n = 0; n < e.length; n++) { + var o = e[n]; + o.enumerable = o.enumerable || !1, + o.configurable = !0, + "value"in o && (o.writable = !0), + Object.defineProperty(t, o.key, o) + } + } + return function(e, n, o) { + return n && t(e.prototype, n), + o && t(e, o), + e + } + }() + , p = function(t) { + function e(t, n) { + r(this, e); + var o = a(this, (e.__proto__ || Object.getPrototypeOf(e)).call(this)); + return o.resolveOptions(n), + o.listenClick(t), + o + } + return c(e, t), + h(e, [{ + key: "resolveOptions", + value: function t() { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; + this.action = "function" == typeof e.action ? e.action : this.defaultAction, + this.target = "function" == typeof e.target ? e.target : this.defaultTarget, + this.text = "function" == typeof e.text ? e.text : this.defaultText, + this.container = "object" === d(e.container) ? e.container : document.body + } + }, { + key: "listenClick", + value: function t(e) { + var n = this; + this.listener = (0, + f.default)(e, "click", function(t) { + return n.onClick(t) + }) + } + }, { + key: "onClick", + value: function t(e) { + var n = e.delegateTarget || e.currentTarget; + this.clipboardAction && (this.clipboardAction = null), + this.clipboardAction = new s.default({ + action: this.action(n), + target: this.target(n), + text: this.text(n), + container: this.container, + trigger: n, + emitter: this + }) + } + }, { + key: "defaultAction", + value: function t(e) { + return l("action", e) + } + }, { + key: "defaultTarget", + value: function t(e) { + var n = l("target", e); + if (n) + return document.querySelector(n) + } + }, { + key: "defaultText", + value: function t(e) { + return l("text", e) + } + }, { + key: "destroy", + value: function t() { + this.listener.destroy(), + this.clipboardAction && (this.clipboardAction.destroy(), + this.clipboardAction = null) + } + }], [{ + key: "isSupported", + value: function t() { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : ["copy", "cut"] + , n = "string" == typeof e ? [e] : e + , o = !!document.queryCommandSupported; + return n.forEach(function(t) { + o = o && !!document.queryCommandSupported(t) + }), + o + } + }]), + e + }(u.default); + t.exports = p + }) + } + , { + "./clipboard-action": 7, + "good-listener": 4, + "tiny-emitter": 6 + }] + }, {}, [8])(8) +}); diff --git a/src/assets/plugins/jQuery-Validation-Engine/css/validationEngine.jquery.css b/src/assets/plugins/jQuery-Validation-Engine/css/validationEngine.jquery.css new file mode 100644 index 0000000..d0ccf73 --- /dev/null +++ b/src/assets/plugins/jQuery-Validation-Engine/css/validationEngine.jquery.css @@ -0,0 +1,196 @@ +/* Z-INDEX */ +.formError { + z-index: 990; +} + +.formError .formErrorContent { + z-index: 991; +} + +.formError .formErrorArrow { + z-index: 996; +} + +.ui-dialog .formError { + z-index: 5000; +} + +.ui-dialog .formError .formErrorContent { + z-index: 5001; +} + +.ui-dialog .formError .formErrorArrow { + z-index: 5006; +} + + + + +.inputContainer { + position: relative; + float: left; +} + +.formError { + position: absolute; + top: 300px; + left: 300px; + display: block; + cursor: pointer; + text-align: left; +} + +.formError.inline { + position: relative; + top: 0; + left: 0; + display: inline-block; +} + +.ajaxSubmit { + padding: 20px; + background: #55ea55; + border: 1px solid #999; + display: none; +} + +.formError .formErrorContent { + width: 100%; + background: #ee0101; + position: relative; + color: #fff; + min-width: 120px; + font-size: 11px; + border: 2px solid #ddd; + box-shadow: 0 0 6px #000; + -moz-box-shadow: 0 0 6px #000; + -webkit-box-shadow: 0 0 6px #000; + -o-box-shadow: 0 0 6px #000; + padding: 4px 10px 4px 10px; + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + -o-border-radius: 6px; +} + +.formError.inline .formErrorContent { + box-shadow: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + -o-box-shadow: none; + border: none; + border-radius: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; + -o-border-radius: 0; +} + +.greenPopup .formErrorContent { + background: #33be40; +} + +.blackPopup .formErrorContent { + background: #393939; + color: #FFF; +} + +.formError .formErrorArrow { + width: 15px; + margin: -2px 0 0 13px; + position: relative; +} + +body[dir='rtl'] .formError .formErrorArrow, +body.rtl .formError .formErrorArrow { + margin: -2px 13px 0 0; +} + +.formError .formErrorArrowBottom { + box-shadow: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + -o-box-shadow: none; + margin: 0px 0 0 12px; + top: 2px; +} + +.formError .formErrorArrow div { + border-left: 2px solid #ddd; + border-right: 2px solid #ddd; + box-shadow: 0 2px 3px #444; + -moz-box-shadow: 0 2px 3px #444; + -webkit-box-shadow: 0 2px 3px #444; + -o-box-shadow: 0 2px 3px #444; + font-size: 0px; + height: 1px; + background: #ee0101; + margin: 0 auto; + line-height: 0; + font-size: 0; + display: block; +} + +.formError .formErrorArrowBottom div { + box-shadow: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + -o-box-shadow: none; +} + +.greenPopup .formErrorArrow div { + background: #33be40; +} + +.blackPopup .formErrorArrow div { + background: #393939; + color: #FFF; +} + +.formError .formErrorArrow .line10 { + width: 13px; + border: none; +} + +.formError .formErrorArrow .line9 { + width: 11px; + border: none; +} + +.formError .formErrorArrow .line8 { + width: 11px; +} + +.formError .formErrorArrow .line7 { + width: 9px; +} + +.formError .formErrorArrow .line6 { + width: 7px; +} + +.formError .formErrorArrow .line5 { + width: 5px; +} + +.formError .formErrorArrow .line4 { + width: 3px; +} + +.formError .formErrorArrow .line3 { + width: 1px; + border-left: 2px solid #ddd; + border-right: 2px solid #ddd; + border-bottom: 0 solid #ddd; +} + +.formError .formErrorArrow .line2 { + width: 3px; + border: none; + background: #ddd; +} + +.formError .formErrorArrow .line1 { + width: 1px; + border: none; + background: #ddd; +} \ No newline at end of file diff --git a/src/assets/plugins/jQuery-Validation-Engine/js/jquery.validationEngine.js b/src/assets/plugins/jQuery-Validation-Engine/js/jquery.validationEngine.js new file mode 100644 index 0000000..02803b0 --- /dev/null +++ b/src/assets/plugins/jQuery-Validation-Engine/js/jquery.validationEngine.js @@ -0,0 +1,2163 @@ +/* + * Inline Form Validation Engine 2.6.2, jQuery plugin + * + * Copyright(c) 2010, Cedric Dugas + * http://www.position-absolute.com + * + * 2.0 Rewrite by Olivier Refalo + * http://www.crionics.com + * + * Form validation engine allowing custom regex rules to be added. + * Licensed under the MIT License + */ +(function ($) { + + "use strict"; + + var methods = { + + /** + * Kind of the constructor, called before any action + * @param {Map} user options + */ + init: function (options) { + var form = this; + if (!form.data('jqv') || form.data('jqv') == null) { + options = methods._saveOptions(form, options); + // bind all formError elements to close on click + $(document).on("click", ".formError", function () { + $(this).fadeOut(150, function () { + // remove prompt once invisible + $(this).closest('.formError').remove(); + }); + }); + } + return this; + }, + /** + * Attachs jQuery.validationEngine to form.submit and field.blur events + * Takes an optional params: a list of options + * ie. jQuery("#formID1").validationEngine('attach', {promptPosition : "centerRight"}); + */ + attach: function (userOptions) { + + var form = this; + var options; + + if (userOptions) + options = methods._saveOptions(form, userOptions); + else + options = form.data('jqv'); + + options.validateAttribute = (form.find("[data-validation-engine*=validate]").length) ? "data-validation-engine" : "class"; + if (options.binded) { + + // delegate fields + form.on(options.validationEventTrigger, "[" + options.validateAttribute + "*=validate]:not([type=checkbox]):not([type=radio]):not(.datepicker)", methods._onFieldEvent); + form.on("click", "[" + options.validateAttribute + "*=validate][type=checkbox],[" + options.validateAttribute + "*=validate][type=radio]", methods._onFieldEvent); + form.on(options.validationEventTrigger, "[" + options.validateAttribute + "*=validate][class*=datepicker]", { "delay": 300 }, methods._onFieldEvent); + } + if (options.autoPositionUpdate) { + $(window).bind("resize", { + "noAnimation": true, + "formElem": form + }, methods.updatePromptsPosition); + } + form.on("click", "a[data-validation-engine-skip], a[class*='validate-skip'], button[data-validation-engine-skip], button[class*='validate-skip'], input[data-validation-engine-skip], input[class*='validate-skip']", methods._submitButtonClick); + form.removeData('jqv_submitButton'); + + // bind form.submit + form.on("submit", methods._onSubmitEvent); + return this; + }, + /** + * Unregisters any bindings that may point to jQuery.validaitonEngine + */ + detach: function () { + + var form = this; + var options = form.data('jqv'); + + // unbind fields + form.off(options.validationEventTrigger, "[" + options.validateAttribute + "*=validate]:not([type=checkbox]):not([type=radio]):not(.datepicker)", methods._onFieldEvent); + form.off("click", "[" + options.validateAttribute + "*=validate][type=checkbox],[" + options.validateAttribute + "*=validate][type=radio]", methods._onFieldEvent); + form.off(options.validationEventTrigger, "[" + options.validateAttribute + "*=validate][class*=datepicker]", methods._onFieldEvent); + + // unbind form.submit + form.off("submit", methods._onSubmitEvent); + form.removeData('jqv'); + + form.off("click", "a[data-validation-engine-skip], a[class*='validate-skip'], button[data-validation-engine-skip], button[class*='validate-skip'], input[data-validation-engine-skip], input[class*='validate-skip']", methods._submitButtonClick); + form.removeData('jqv_submitButton'); + + if (options.autoPositionUpdate) + $(window).off("resize", methods.updatePromptsPosition); + + return this; + }, + /** + * Validates either a form or a list of fields, shows prompts accordingly. + * Note: There is no ajax form validation with this method, only field ajax validation are evaluated + * + * @return true if the form validates, false if it fails + */ + validate: function (userOptions) { + var element = $(this); + var valid = null; + var options; + + if (element.is("form") || element.hasClass("validationEngineContainer")) { + if (element.hasClass('validating')) { + // form is already validating. + // Should abort old validation and start new one. I don't know how to implement it. + return false; + } else { + element.addClass('validating'); + if (userOptions) + options = methods._saveOptions(element, userOptions); + else + options = element.data('jqv'); + valid = methods._validateFields(this); + + // If the form doesn't validate, clear the 'validating' class before the user has a chance to submit again + setTimeout(function () { + element.removeClass('validating'); + }, 100); + if (valid && options.onSuccess) { + options.onSuccess(); + } else if (!valid && options.onFailure) { + options.onFailure(); + } + } + } else if (element.is('form') || element.hasClass('validationEngineContainer')) { + element.removeClass('validating'); + } else { + // field validation + var form = element.closest('form, .validationEngineContainer'); + options = (form.data('jqv')) ? form.data('jqv') : $.validationEngine.defaults; + valid = methods._validateField(element, options); + + if (valid && options.onFieldSuccess) + options.onFieldSuccess(); + else if (options.onFieldFailure && options.InvalidFields.length > 0) { + options.onFieldFailure(); + } + + return !valid; + } + if (options.onValidationComplete) { + // !! ensures that an undefined return is interpreted as return false but allows a onValidationComplete() to possibly return true and have form continue processing + return !!options.onValidationComplete(form, valid); + } + return valid; + }, + /** + * Redraw prompts position, useful when you change the DOM state when validating + */ + updatePromptsPosition: function (event) { + var form; + if (event && this == window) { + form = event.data.formElem; + var noAnimation = event.data.noAnimation; + } + else + form = $(this.closest('form, .validationEngineContainer')); + + var options = form.data('jqv'); + // No option, take default one + if (!options) + options = methods._saveOptions(form, options); + form.find('[' + options.validateAttribute + '*=validate]').not(":disabled").each(function () { + var field = $(this); + if (options.prettySelect && field.is(":hidden")) + field = form.find("#" + options.usePrefix + field.attr('id') + options.useSuffix); + var prompt = methods._getPrompt(field); + var promptText = $(prompt).find(".formErrorContent").html(); + + if (prompt) + methods._updatePrompt(field, $(prompt), promptText, undefined, false, options, noAnimation); + }); + return this; + }, + /** + * Displays a prompt on a element. + * Note that the element needs an id! + * + * @param {String} promptText html text to display type + * @param {String} type the type of bubble: 'pass' (green), 'load' (black) anything else (red) + * @param {String} possible values topLeft, topRight, bottomLeft, centerRight, bottomRight + */ + showPrompt: function (promptText, type, promptPosition, showArrow) { + var form = this.closest('form, .validationEngineContainer'); + var options = form.data('jqv'); + // No option, take default one + if (!options) + options = methods._saveOptions(this, options); + if (promptPosition) + options.promptPosition = promptPosition; + options.showArrow = showArrow == true; + + methods._showPrompt(this, promptText, type, false, options); + return this; + }, + /** + * Closes form error prompts, CAN be invidual + */ + hide: function () { + var form = $(this).closest('form, .validationEngineContainer'); + var options = form.data('jqv'); + // No option, take default one + if (!options) + options = methods._saveOptions(form, options); + var fadeDuration = (options && options.fadeDuration) ? options.fadeDuration : 0.3; + var closingtag; + + if (form.is("form") || form.hasClass("validationEngineContainer")) { + closingtag = "parentForm" + methods._getClassName($(form).attr("id")); + } else { + closingtag = methods._getClassName($(form).attr("id")) + "formError"; + } + $('.' + closingtag).fadeTo(fadeDuration, 0, function () { + $(this).closest('.formError').remove(); + }); + return this; + }, + /** + * Closes all error prompts on the page + */ + hideAll: function () { + var form = this; + var options = form.data('jqv'); + var duration = options ? options.fadeDuration : 300; + $('.formError').fadeTo(duration, 0, function () { + $(this).closest('.formError').remove(); + }); + return this; + }, + /** + * Typically called when user exists a field using tab or a mouse click, triggers a field + * validation + */ + _onFieldEvent: function (event) { + var field = $(this); + var form = field.closest('form, .validationEngineContainer'); + var options = form.data('jqv'); + // No option, take default one + if (!options) + options = methods._saveOptions(form, options); + options.eventTrigger = "field"; + + if (options.notEmpty == true) { + + if (field.val().length > 0) { + // validate the current field + window.setTimeout(function () { + methods._validateField(field, options); + }, (event.data) ? event.data.delay : 0); + + } + + } else { + + // validate the current field + window.setTimeout(function () { + methods._validateField(field, options); + }, (event.data) ? event.data.delay : 0); + + } + + + + + }, + /** + * Called when the form is submited, shows prompts accordingly + * + * @param {jqObject} + * form + * @return false if form submission needs to be cancelled + */ + _onSubmitEvent: function () { + var form = $(this); + var options = form.data('jqv'); + + //check if it is trigger from skipped button + if (form.data("jqv_submitButton")) { + var submitButton = $("#" + form.data("jqv_submitButton")); + if (submitButton) { + if (submitButton.length > 0) { + if (submitButton.hasClass("validate-skip") || submitButton.attr("data-validation-engine-skip") == "true") + return true; + } + } + } + + options.eventTrigger = "submit"; + + // validate each field + // (- skip field ajax validation, not necessary IF we will perform an ajax form validation) + var r = methods._validateFields(form); + + if (r && options.ajaxFormValidation) { + methods._validateFormWithAjax(form, options); + // cancel form auto-submission - process with async call onAjaxFormComplete + return false; + } + + if (options.onValidationComplete) { + // !! ensures that an undefined return is interpreted as return false but allows a onValidationComplete() to possibly return true and have form continue processing + return !!options.onValidationComplete(form, r); + } + return r; + }, + /** + * Return true if the ajax field validations passed so far + * @param {Object} options + * @return true, is all ajax validation passed so far (remember ajax is async) + */ + _checkAjaxStatus: function (options) { + var status = true; + $.each(options.ajaxValidCache, function (key, value) { + if (!value) { + status = false; + // break the each + return false; + } + }); + return status; + }, + + /** + * Return true if the ajax field is validated + * @param {String} fieldid + * @param {Object} options + * @return true, if validation passed, false if false or doesn't exist + */ + _checkAjaxFieldStatus: function (fieldid, options) { + return options.ajaxValidCache[fieldid] == true; + }, + /** + * Validates form fields, shows prompts accordingly + * + * @param {jqObject} + * form + * @param {skipAjaxFieldValidation} + * boolean - when set to true, ajax field validation is skipped, typically used when the submit button is clicked + * + * @return true if form is valid, false if not, undefined if ajax form validation is done + */ + _validateFields: function (form) { + var options = form.data('jqv'); + + // this variable is set to true if an error is found + var errorFound = false; + + // Trigger hook, start validation + form.trigger("jqv.form.validating"); + // first, evaluate status of non ajax fields + var first_err = null; + form.find('[' + options.validateAttribute + '*=validate]').not(":disabled").each(function () { + var field = $(this); + var names = []; + if ($.inArray(field.attr('name'), names) < 0) { + errorFound |= methods._validateField(field, options); + if (errorFound && first_err == null) + if (field.is(":hidden") && options.prettySelect) + first_err = field = form.find("#" + options.usePrefix + methods._jqSelector(field.attr('id')) + options.useSuffix); + else { + + //Check if we need to adjust what element to show the prompt on + //and and such scroll to instead + if (field.data('jqv-prompt-at') instanceof jQuery) { + field = field.data('jqv-prompt-at'); + } else if (field.data('jqv-prompt-at')) { + field = $(field.data('jqv-prompt-at')); + } + first_err = field; + } + if (options.doNotShowAllErrosOnSubmit) + return false; + names.push(field.attr('name')); + + //if option set, stop checking validation rules after one error is found + if (options.showOneMessage == true && errorFound) { + return false; + } + } + }); + + // second, check to see if all ajax calls completed ok + // errorFound |= !methods._checkAjaxStatus(options); + + // third, check status and scroll the container accordingly + form.trigger("jqv.form.result", [errorFound]); + + if (errorFound) { + if (options.scroll) { + var destination = first_err.offset().top; + var fixleft = first_err.offset().left; + + //prompt positioning adjustment support. Usage: positionType:Xshift,Yshift (for ex.: bottomLeft:+20 or bottomLeft:-20,+10) + var positionType = options.promptPosition; + if (typeof (positionType) == 'string' && positionType.indexOf(":") != -1) + positionType = positionType.substring(0, positionType.indexOf(":")); + + if (positionType != "bottomRight" && positionType != "bottomLeft") { + var prompt_err = methods._getPrompt(first_err); + if (prompt_err) { + destination = prompt_err.offset().top; + } + } + + // Offset the amount the page scrolls by an amount in px to accomodate fixed elements at top of page + if (options.scrollOffset) { + destination -= options.scrollOffset; + } + + // get the position of the first error, there should be at least one, no need to check this + //var destination = form.find(".formError:not('.greenPopup'):first").offset().top; + if (options.isOverflown) { + var overflowDIV = $(options.overflownDIV); + if (!overflowDIV.length) return false; + var scrollContainerScroll = overflowDIV.scrollTop(); + var scrollContainerPos = -parseInt(overflowDIV.offset().top); + + destination += scrollContainerScroll + scrollContainerPos - 5; + var scrollContainer = $(options.overflownDIV).filter(":not(:animated)"); + + scrollContainer.animate({ scrollTop: destination }, 1100, function () { + if (options.focusFirstField) first_err.focus(); + }); + + } else { + $("html, body").animate({ + scrollTop: destination + }, 1100, function () { + if (options.focusFirstField) first_err.focus(); + }); + $("html, body").animate({ scrollLeft: fixleft }, 1100) + } + + } else if (options.focusFirstField) + first_err.focus(); + return false; + } + return true; + }, + /** + * This method is called to perform an ajax form validation. + * During this process all the (field, value) pairs are sent to the server which returns a list of invalid fields or true + * + * @param {jqObject} form + * @param {Map} options + */ + _validateFormWithAjax: function (form, options) { + + var data = form.serialize(); + var type = (options.ajaxFormValidationMethod) ? options.ajaxFormValidationMethod : "GET"; + var url = (options.ajaxFormValidationURL) ? options.ajaxFormValidationURL : form.attr("action"); + var dataType = (options.dataType) ? options.dataType : "json"; + $.ajax({ + type: type, + url: url, + cache: false, + dataType: dataType, + data: data, + form: form, + methods: methods, + options: options, + beforeSend: function () { + return options.onBeforeAjaxFormValidation(form, options); + }, + error: function (data, transport) { + if (options.onFailure) { + options.onFailure(data, transport); + } else { + methods._ajaxError(data, transport); + } + }, + success: function (json) { + if ((dataType == "json") && (json !== true)) { + // getting to this case doesn't necessary means that the form is invalid + // the server may return green or closing prompt actions + // this flag helps figuring it out + var errorInForm = false; + for (var i = 0; i < json.length; i++) { + var value = json[i]; + + var errorFieldId = value[0]; + var errorField = $($("#" + errorFieldId)[0]); + + // make sure we found the element + if (errorField.length == 1) { + + // promptText or selector + var msg = value[2]; + // if the field is valid + if (value[1] == true) { + + if (msg == "" || !msg) { + // if for some reason, status==true and error="", just close the prompt + methods._closePrompt(errorField); + } else { + // the field is valid, but we are displaying a green prompt + if (options.allrules[msg]) { + var txt = options.allrules[msg].alertTextOk; + if (txt) + msg = txt; + } + if (options.showPrompts) methods._showPrompt(errorField, msg, "pass", false, options, true); + } + } else { + // the field is invalid, show the red error prompt + errorInForm |= true; + if (options.allrules[msg]) { + let txt = options.allrules[msg].alertText; + if (txt) + msg = txt; + } + if (options.showPrompts) methods._showPrompt(errorField, msg, "", false, options, true); + } + } + } + options.onAjaxFormComplete(!errorInForm, form, json, options); + } else + options.onAjaxFormComplete(true, form, json, options); + + } + }); + + }, + /** + * Validates field, shows prompts accordingly + * + * @param {jqObject} + * field + * @param {Array[String]} + * field's validation rules + * @param {Map} + * user options + * @return false if field is valid (It is inversed for *fields*, it return false on validate and true on errors.) + */ + _validateField: function (field, options, skipAjaxValidation) { + if (!field.attr("id")) { + field.attr("id", "form-validation-field-" + $.validationEngine.fieldIdCounter); + ++$.validationEngine.fieldIdCounter; + } + + if (field.hasClass(options.ignoreFieldsWithClass)) + return false; + + if (!options.validateNonVisibleFields && (field.is(":hidden") && !options.prettySelect || field.parent().is(":hidden"))) + return false; + + var rulesParsing = field.attr(options.validateAttribute); + var getRules = /validate\[(.*)\]/.exec(rulesParsing); + + if (!getRules) + return false; + var str = getRules[1]; + var rules = str.split(/\[|,|\]/); + + // true if we ran the ajax validation, tells the logic to stop messing with prompts + var isAjaxValidator = false; + var fieldName = field.attr("name"); + var promptText = ""; + var promptType = ""; + var required = false; + var limitErrors = false; + options.isError = false; + options.showArrow = true; + + // If the programmer wants to limit the amount of error messages per field, + if (options.maxErrorsPerField > 0) { + limitErrors = true; + } + + var form = $(field.closest("form, .validationEngineContainer")); + // Fix for adding spaces in the rules + for (var i = 0; i < rules.length; i++) { + rules[i] = rules[i].toString().replace(" ", "");//.toString to worked on IE8 + // Remove any parsing errors + if (rules[i] === '') { + delete rules[i]; + } + } + + for (let i = 0, field_errors = 0; i < rules.length; i++) { + + // If we are limiting errors, and have hit the max, break + if (limitErrors && field_errors >= options.maxErrorsPerField) { + // If we haven't hit a required yet, check to see if there is one in the validation rules for this + // field and that it's index is greater or equal to our current index + if (!required) { + var have_required = $.inArray('required', rules); + required = (have_required != -1 && have_required >= i); + } + break; + } + + + var errorMsg = undefined; + var classGroup; + switch (rules[i]) { + + case "required": + required = true; + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._required); + break; + case "custom": + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._custom); + break; + case "groupRequired": + // Check is its the first of group, if not, reload validation with first field + // AND continue normal validation on present field + classGroup = "[" + options.validateAttribute + "*=" + rules[i + 1] + "]"; + var firstOfGroup = form.find(classGroup).eq(0); + if (firstOfGroup[0] != field[0]) { + + methods._validateField(firstOfGroup, options, skipAjaxValidation); + options.showArrow = true; + + } + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._groupRequired); + if (errorMsg) required = true; + options.showArrow = false; + break; + case "ajax": + // AJAX defaults to returning it's loading message + errorMsg = methods._ajax(field, rules, i, options); + if (errorMsg) { + promptType = "load"; + } + break; + case "minSize": + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._minSize); + break; + case "maxSize": + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._maxSize); + break; + case "min": + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._min); + break; + case "max": + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._max); + break; + case "past": + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._past); + break; + case "future": + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._future); + break; + case "dateRange": + classGroup = "[" + options.validateAttribute + "*=" + rules[i + 1] + "]"; + options.firstOfGroup = form.find(classGroup).eq(0); + options.secondOfGroup = form.find(classGroup).eq(1); + + //if one entry out of the pair has value then proceed to run through validation + if (options.firstOfGroup[0].value || options.secondOfGroup[0].value) { + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._dateRange); + } + if (errorMsg) required = true; + options.showArrow = false; + break; + + case "dateTimeRange": + classGroup = "[" + options.validateAttribute + "*=" + rules[i + 1] + "]"; + options.firstOfGroup = form.find(classGroup).eq(0); + options.secondOfGroup = form.find(classGroup).eq(1); + + //if one entry out of the pair has value then proceed to run through validation + if (options.firstOfGroup[0].value || options.secondOfGroup[0].value) { + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._dateTimeRange); + } + if (errorMsg) required = true; + options.showArrow = false; + break; + case "maxCheckbox": + field = $(form.find("input[name='" + fieldName + "']")); + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._maxCheckbox); + break; + case "minCheckbox": + field = $(form.find("input[name='" + fieldName + "']")); + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._minCheckbox); + break; + case "equals": + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._equals); + break; + case "funcCall": + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._funcCall); + break; + case "creditCard": + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._creditCard); + break; + case "condRequired": + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._condRequired); + if (errorMsg !== undefined) { + required = true; + } + break; + case "funcCallRequired": + errorMsg = methods._getErrorMessage(form, field, rules[i], rules, i, options, methods._funcCallRequired); + if (errorMsg !== undefined) { + required = true; + } + break; + + default: + } + + var end_validation = false; + + // If we were passed back an message object, check what the status was to determine what to do + if (typeof errorMsg == "object") { + switch (errorMsg.status) { + case "_break": + end_validation = true; + break; + // If we have an error message, set errorMsg to the error message + case "_error": + errorMsg = errorMsg.message; + break; + // If we want to throw an error, but not show a prompt, return early with true + case "_error_no_prompt": + return true; + // Anything else we continue on + default: + break; + } + } + + //funcCallRequired, first in rules, and has error, skip anything else + if (i == 0 && str.indexOf('funcCallRequired') == 0 && errorMsg !== undefined) { + if (promptText != '') { + promptText += "
      "; + } + promptText += errorMsg; + options.isError = true; + field_errors++; + end_validation = true; + } + + // If it has been specified that validation should end now, break + if (end_validation) { + break; + } + + // If we have a string, that means that we have an error, so add it to the error message. + if (typeof errorMsg == 'string') { + if (promptText != '') { + promptText += "
      "; + } + promptText += errorMsg; + options.isError = true; + field_errors++; + } + } + // If the rules required is not added, an empty field is not validated + //the 3rd condition is added so that even empty password fields should be equal + //otherwise if one is filled and another left empty, the "equal" condition would fail + //which does not make any sense + if (!required && !(field.val()) && field.val().length < 1 && $.inArray('equals', rules) < 0) options.isError = false; + + // Hack for radio/checkbox group button, the validation go into the + // first radio/checkbox of the group + var fieldType = field.prop("type"); + var positionType = field.data("promptPosition") || options.promptPosition; + + if ((fieldType == "radio" || fieldType == "checkbox") && form.find("input[name='" + fieldName + "']").size() > 1) { + if (positionType === 'inline') { + field = $(form.find("input[name='" + fieldName + "'][type!=hidden]:last")); + } else { + field = $(form.find("input[name='" + fieldName + "'][type!=hidden]:first")); + } + options.showArrow = options.showArrowOnRadioAndCheckbox; + } + + if (field.is(":hidden") && options.prettySelect) { + field = form.find("#" + options.usePrefix + methods._jqSelector(field.attr('id')) + options.useSuffix); + } + + if (options.isError && options.showPrompts) { + methods._showPrompt(field, promptText, promptType, false, options); + } else { + if (!isAjaxValidator) methods._closePrompt(field); + } + + if (!isAjaxValidator) { + field.trigger("jqv.field.result", [field, options.isError, promptText]); + } + + /* Record error */ + var errindex = $.inArray(field[0], options.InvalidFields); + if (errindex == -1) { + if (options.isError) + options.InvalidFields.push(field[0]); + } else if (!options.isError) { + options.InvalidFields.splice(errindex, 1); + } + + methods._handleStatusCssClasses(field, options); + + /* run callback function for each field */ + if (options.isError && options.onFieldFailure) + options.onFieldFailure(field); + + if (!options.isError && options.onFieldSuccess) + options.onFieldSuccess(field); + + return options.isError; + }, + /** + * Handling css classes of fields indicating result of validation + * + * @param {jqObject} + * field + * @param {Array[String]} + * field's validation rules + * @private + */ + _handleStatusCssClasses: function (field, options) { + /* remove all classes */ + if (options.addSuccessCssClassToField) + field.removeClass(options.addSuccessCssClassToField); + + if (options.addFailureCssClassToField) + field.removeClass(options.addFailureCssClassToField); + + /* Add classes */ + if (options.addSuccessCssClassToField && !options.isError) + field.addClass(options.addSuccessCssClassToField); + + if (options.addFailureCssClassToField && options.isError) + field.addClass(options.addFailureCssClassToField); + }, + + /******************** + * _getErrorMessage + * + * @param form + * @param field + * @param rule + * @param rules + * @param i + * @param options + * @param originalValidationMethod + * @return {*} + * @private + */ + _getErrorMessage: function (form, field, rule, rules, i, options, originalValidationMethod) { + // If we are using the custon validation type, build the index for the rule. + // Otherwise if we are doing a function call, make the call and return the object + // that is passed back. + var rule_index = jQuery.inArray(rule, rules); + if (rule === "custom" || rule === "funcCall" || rule === "funcCallRequired") { + var custom_validation_type = rules[rule_index + 1]; + rule = rule + "[" + custom_validation_type + "]"; + // Delete the rule from the rules array so that it doesn't try to call the + // same rule over again + delete (rules[rule_index]); + } + // Change the rule to the composite rule, if it was different from the original + var alteredRule = rule; + + + var element_classes = (field.attr("data-validation-engine")) ? field.attr("data-validation-engine") : field.attr("class"); + var element_classes_array = element_classes.split(" "); + + // Call the original validation method. If we are dealing with dates or checkboxes, also pass the form + var errorMsg; + if (rule == "future" || rule == "past" || rule == "maxCheckbox" || rule == "minCheckbox") { + errorMsg = originalValidationMethod(form, field, rules, i, options); + } else { + errorMsg = originalValidationMethod(field, rules, i, options); + } + + // If the original validation method returned an error and we have a custom error message, + // return the custom message instead. Otherwise return the original error message. + if (errorMsg != undefined) { + var custom_message = methods._getCustomErrorMessage($(field), element_classes_array, alteredRule, options); + if (custom_message) errorMsg = custom_message; + } + return errorMsg; + + }, + _getCustomErrorMessage: function (field, classes, rule, options) { + var custom_message = false; + var validityProp = /^custom\[.*\]$/.test(rule) ? methods._validityProp["custom"] : methods._validityProp[rule]; + // If there is a validityProp for this rule, check to see if the field has an attribute for it + if (validityProp != undefined) { + custom_message = field.attr("data-errormessage-" + validityProp); + // If there was an error message for it, return the message + if (custom_message != undefined) + return custom_message; + } + custom_message = field.attr("data-errormessage"); + // If there is an inline custom error message, return it + if (custom_message != undefined) + return custom_message; + var id = '#' + field.attr("id"); + // If we have custom messages for the element's id, get the message for the rule from the id. + // Otherwise, if we have custom messages for the element's classes, use the first class message we find instead. + if (typeof options.custom_error_messages[id] != "undefined" && + typeof options.custom_error_messages[id][rule] != "undefined") { + custom_message = options.custom_error_messages[id][rule]['message']; + } else if (classes.length > 0) { + for (var i = 0; i < classes.length && classes.length > 0; i++) { + var element_class = "." + classes[i]; + if (typeof options.custom_error_messages[element_class] != "undefined" && + typeof options.custom_error_messages[element_class][rule] != "undefined") { + custom_message = options.custom_error_messages[element_class][rule]['message']; + break; + } + } + } + if (!custom_message && + typeof options.custom_error_messages[rule] != "undefined" && + typeof options.custom_error_messages[rule]['message'] != "undefined") { + custom_message = options.custom_error_messages[rule]['message']; + } + return custom_message; + }, + _validityProp: { + "required": "value-missing", + "custom": "custom-error", + "groupRequired": "value-missing", + "ajax": "custom-error", + "minSize": "range-underflow", + "maxSize": "range-overflow", + "min": "range-underflow", + "max": "range-overflow", + "past": "type-mismatch", + "future": "type-mismatch", + "dateRange": "type-mismatch", + "dateTimeRange": "type-mismatch", + "maxCheckbox": "range-overflow", + "minCheckbox": "range-underflow", + "equals": "pattern-mismatch", + "funcCall": "custom-error", + "funcCallRequired": "custom-error", + "creditCard": "pattern-mismatch", + "condRequired": "value-missing" + }, + /** + * Required validation + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @param {bool} condRequired flag when method is used for internal purpose in condRequired check + * @return an error string if validation failed + */ + _required: function (field, rules, i, options, condRequired) { + switch (field.prop("type")) { + case "radio": + case "checkbox": + // new validation style to only check dependent field + if (condRequired) { + if (!field.prop('checked')) { + return options.allrules[rules[i]].alertTextCheckboxMultiple; + } + break; + } + // old validation style + var form = field.closest("form, .validationEngineContainer"); + var name = field.attr("name"); + if (form.find("input[name='" + name + "']:checked").size() == 0) { + if (form.find("input[name='" + name + "']:visible").size() == 1) + return options.allrules[rules[i]].alertTextCheckboxe; + else + return options.allrules[rules[i]].alertTextCheckboxMultiple; + } + break; + case "text": + case "password": + case "textarea": + case "file": + case "select-one": + case "select-multiple": + default: + var field_val = $.trim(field.val()); + var dv_placeholder = $.trim(field.attr("data-validation-placeholder")); + var placeholder = $.trim(field.attr("placeholder")); + if ( + (!field_val) + || (dv_placeholder && field_val == dv_placeholder) + || (placeholder && field_val == placeholder) + ) { + return options.allrules[rules[i]].alertText; + } + break; + } + }, + /** + * Validate that 1 from the group field is required + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @return an error string if validation failed + */ + _groupRequired: function (field, rules, i, options) { + var classGroup = "[" + options.validateAttribute + "*=" + rules[i + 1] + "]"; + var isValid = false; + // Check all fields from the group + field.closest("form, .validationEngineContainer").find(classGroup).each(function () { + if (!methods._required($(this), rules, i, options)) { + isValid = true; + return false; + } + }); + + if (!isValid) { + return options.allrules[rules[i]].alertText; + } + }, + /** + * Validate rules + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @return an error string if validation failed + */ + _custom: function (field, rules, i, options) { + var customRule = rules[i + 1]; + var rule = options.allrules[customRule]; + var fn; + if (!rule) { + alert("jqv:custom rule not found - " + customRule); + return; + } + + if (rule["regex"]) { + var ex = rule.regex; + if (!ex) { + alert("jqv:custom regex not found - " + customRule); + return; + } + var pattern = new RegExp(ex); + + if (!pattern.test(field.val())) return options.allrules[customRule].alertText; + + } else if (rule["func"]) { + fn = rule["func"]; + + if (typeof (fn) !== "function") { + alert("jqv:custom parameter 'function' is no function - " + customRule); + return; + } + + if (!fn(field, rules, i, options)) + return options.allrules[customRule].alertText; + } else { + alert("jqv:custom type not allowed " + customRule); + return; + } + }, + /** + * Validate custom function outside of the engine scope + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @return an error string if validation failed + */ + _funcCall: function (field, rules, i, options) { + var functionName = rules[i + 1]; + var fn; + if (functionName.indexOf('.') > -1) { + var namespaces = functionName.split('.'); + var scope = window; + while (namespaces.length) { + scope = scope[namespaces.shift()]; + } + fn = scope; + } + else + fn = window[functionName] || options.customFunctions[functionName]; + if (typeof (fn) == 'function') + return fn(field, rules, i, options); + + }, + _funcCallRequired: function (field, rules, i, options) { + return methods._funcCall(field, rules, i, options); + }, + /** + * Field match + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @return an error string if validation failed + */ + _equals: function (field, rules, i, options) { + var equalsField = rules[i + 1]; + + if (field.val() != $("#" + equalsField).val()) + return options.allrules.equals.alertText; + }, + /** + * Check the maximum size (in characters) + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @return an error string if validation failed + */ + _maxSize: function (field, rules, i, options) { + var max = rules[i + 1]; + var len = field.val().length; + + if (len > max) { + var rule = options.allrules.maxSize; + return rule.alertText + max + rule.alertText2; + } + }, + /** + * Check the minimum size (in characters) + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @return an error string if validation failed + */ + _minSize: function (field, rules, i, options) { + var min = rules[i + 1]; + var len = field.val().length; + + if (len < min) { + var rule = options.allrules.minSize; + return rule.alertText + min + rule.alertText2; + } + }, + /** + * Check number minimum value + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @return an error string if validation failed + */ + _min: function (field, rules, i, options) { + var min = parseFloat(rules[i + 1]); + var len = parseFloat(field.val()); + + if (len < min) { + var rule = options.allrules.min; + if (rule.alertText2) return rule.alertText + min + rule.alertText2; + return rule.alertText + min; + } + }, + /** + * Check number maximum value + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @return an error string if validation failed + */ + _max: function (field, rules, i, options) { + var max = parseFloat(rules[i + 1]); + var len = parseFloat(field.val()); + + if (len > max) { + var rule = options.allrules.max; + if (rule.alertText2) return rule.alertText + max + rule.alertText2; + //orefalo: to review, also do the translations + return rule.alertText + max; + } + }, + /** + * Checks date is in the past + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @return an error string if validation failed + */ + _past: function (form, field, rules, i, options) { + + var p = rules[i + 1]; + var fieldAlt = $(form.find("*[name='" + p.replace(/^#+/, '') + "']")); + var pdate; + + if (p.toLowerCase() == "now") { + pdate = new Date(); + } else if (undefined != fieldAlt.val()) { + if (fieldAlt.is(":disabled")) + return; + pdate = methods._parseDate(fieldAlt.val()); + } else { + pdate = methods._parseDate(p); + } + var vdate = methods._parseDate(field.val()); + + if (vdate > pdate) { + var rule = options.allrules.past; + if (rule.alertText2) return rule.alertText + methods._dateToString(pdate) + rule.alertText2; + return rule.alertText + methods._dateToString(pdate); + } + }, + /** + * Checks date is in the future + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @return an error string if validation failed + */ + _future: function (form, field, rules, i, options) { + + var p = rules[i + 1]; + var fieldAlt = $(form.find("*[name='" + p.replace(/^#+/, '') + "']")); + var pdate; + + if (p.toLowerCase() == "now") { + pdate = new Date(); + } else if (undefined != fieldAlt.val()) { + if (fieldAlt.is(":disabled")) + return; + pdate = methods._parseDate(fieldAlt.val()); + } else { + pdate = methods._parseDate(p); + } + var vdate = methods._parseDate(field.val()); + + if (vdate < pdate) { + var rule = options.allrules.future; + if (rule.alertText2) + return rule.alertText + methods._dateToString(pdate) + rule.alertText2; + return rule.alertText + methods._dateToString(pdate); + } + }, + /** + * Checks if valid date + * + * @param {string} date string + * @return a bool based on determination of valid date + */ + _isDate: function (value) { + var dateRegEx = new RegExp(/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$|^(?:(?:(?:0?[13578]|1[02])(\/|-)31)|(?:(?:0?[1,3-9]|1[0-2])(\/|-)(?:29|30)))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^(?:(?:0?[1-9]|1[0-2])(\/|-)(?:0?[1-9]|1\d|2[0-8]))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^(0?2(\/|-)29)(\/|-)(?:(?:0[48]00|[13579][26]00|[2468][048]00)|(?:\d\d)?(?:0[48]|[2468][048]|[13579][26]))$/); + return dateRegEx.test(value); + }, + /** + * Checks if valid date time + * + * @param {string} date string + * @return a bool based on determination of valid date time + */ + _isDateTime: function (value) { + var dateTimeRegEx = new RegExp(/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])\s+(1[012]|0?[1-9]){1}:(0?[1-5]|[0-6][0-9]){1}:(0?[0-6]|[0-6][0-9]){1}\s+(am|pm|AM|PM){1}$|^(?:(?:(?:0?[13578]|1[02])(\/|-)31)|(?:(?:0?[1,3-9]|1[0-2])(\/|-)(?:29|30)))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^((1[012]|0?[1-9]){1}\/(0?[1-9]|[12][0-9]|3[01]){1}\/\d{2,4}\s+(1[012]|0?[1-9]){1}:(0?[1-5]|[0-6][0-9]){1}:(0?[0-6]|[0-6][0-9]){1}\s+(am|pm|AM|PM){1})$/); + return dateTimeRegEx.test(value); + }, + //Checks if the start date is before the end date + //returns true if end is later than start + _dateCompare: function (start, end) { + return (new Date(start.toString()) < new Date(end.toString())); + }, + /** + * Checks date range + * + * @param {jqObject} first field name + * @param {jqObject} second field name + * @return an error string if validation failed + */ + _dateRange: function (field, rules, i, options) { + //are not both populated + if ((!options.firstOfGroup[0].value && options.secondOfGroup[0].value) || (options.firstOfGroup[0].value && !options.secondOfGroup[0].value)) { + return options.allrules[rules[i]].alertText + options.allrules[rules[i]].alertText2; + } + + //are not both dates + if (!methods._isDate(options.firstOfGroup[0].value) || !methods._isDate(options.secondOfGroup[0].value)) { + return options.allrules[rules[i]].alertText + options.allrules[rules[i]].alertText2; + } + + //are both dates but range is off + if (!methods._dateCompare(options.firstOfGroup[0].value, options.secondOfGroup[0].value)) { + return options.allrules[rules[i]].alertText + options.allrules[rules[i]].alertText2; + } + }, + /** + * Checks date time range + * + * @param {jqObject} first field name + * @param {jqObject} second field name + * @return an error string if validation failed + */ + _dateTimeRange: function (field, rules, i, options) { + //are not both populated + if ((!options.firstOfGroup[0].value && options.secondOfGroup[0].value) || (options.firstOfGroup[0].value && !options.secondOfGroup[0].value)) { + return options.allrules[rules[i]].alertText + options.allrules[rules[i]].alertText2; + } + //are not both dates + if (!methods._isDateTime(options.firstOfGroup[0].value) || !methods._isDateTime(options.secondOfGroup[0].value)) { + return options.allrules[rules[i]].alertText + options.allrules[rules[i]].alertText2; + } + //are both dates but range is off + if (!methods._dateCompare(options.firstOfGroup[0].value, options.secondOfGroup[0].value)) { + return options.allrules[rules[i]].alertText + options.allrules[rules[i]].alertText2; + } + }, + /** + * Max number of checkbox selected + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @return an error string if validation failed + */ + _maxCheckbox: function (form, field, rules, i, options) { + + var nbCheck = rules[i + 1]; + var groupname = field.attr("name"); + var groupSize = form.find("input[name='" + groupname + "']:checked").size(); + if (groupSize > nbCheck) { + options.showArrow = false; + if (options.allrules.maxCheckbox.alertText2) + return options.allrules.maxCheckbox.alertText + " " + nbCheck + " " + options.allrules.maxCheckbox.alertText2; + return options.allrules.maxCheckbox.alertText; + } + }, + /** + * Min number of checkbox selected + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @return an error string if validation failed + */ + _minCheckbox: function (form, field, rules, i, options) { + + var nbCheck = rules[i + 1]; + var groupname = field.attr("name"); + var groupSize = form.find("input[name='" + groupname + "']:checked").size(); + if (groupSize < nbCheck) { + options.showArrow = false; + return options.allrules.minCheckbox.alertText + " " + nbCheck + " " + options.allrules.minCheckbox.alertText2; + } + }, + /** + * Checks that it is a valid credit card number according to the + * Luhn checksum algorithm. + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @return an error string if validation failed + */ + _creditCard: function (field, rules, i, options) { + //spaces and dashes may be valid characters, but must be stripped to calculate the checksum. + var valid = false, cardNumber = field.val().replace(/ +/g, '').replace(/-+/g, ''); + + var numDigits = cardNumber.length; + if (numDigits >= 14 && numDigits <= 16 && parseInt(cardNumber) > 0) { + + let sum = 0, i = numDigits - 1, pos = 1, digit, luhn = new String(); + do { + digit = parseInt(cardNumber.charAt(i)); + luhn += (pos++ % 2 == 0) ? digit * 2 : digit; + } while (--i >= 0) + + for (i = 0; i < luhn.length; i++) { + sum += parseInt(luhn.charAt(i)); + } + valid = sum % 10 == 0; + } + if (!valid) return options.allrules.creditCard.alertText; + }, + /** + * Ajax field validation + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @return nothing! the ajax validator handles the prompts itself + */ + _ajax: function (field, rules, i, options) { + + var errorSelector = rules[i + 1]; + var rule = options.allrules[errorSelector]; + var extraData = rule.extraData; + var extraDataDynamic = rule.extraDataDynamic; + var data = { + "fieldId": field.attr("id"), + "fieldValue": field.val() + }; + + if (typeof extraData === "object") { + $.extend(data, extraData); + } else if (typeof extraData === "string") { + var tempData = extraData.split("&"); + for (let i = 0; i < tempData.length; i++) { + var values = tempData[i].split("="); + if (values[0] && values[0]) { + data[values[0]] = values[1]; + } + } + } + + if (extraDataDynamic) { + var tmpData = []; + var domIds = String(extraDataDynamic).split(","); + for (let i = 0; i < domIds.length; i++) { + var id = domIds[i]; + if ($(id).length) { + var inputValue = field.closest("form, .validationEngineContainer").find(id).val(); + var keyValue = id.replace('#', '') + '=' + escape(inputValue); + data[id.replace('#', '')] = inputValue; + } + } + } + + // If a field change event triggered this we want to clear the cache for this ID + if (options.eventTrigger == "field") { + delete (options.ajaxValidCache[field.attr("id")]); + } + + // If there is an error or if the the field is already validated, do not re-execute AJAX + if (!options.isError && !methods._checkAjaxFieldStatus(field.attr("id"), options)) { + $.ajax({ + type: options.ajaxFormValidationMethod, + url: rule.url, + cache: false, + dataType: "json", + data: data, + field: field, + rule: rule, + methods: methods, + options: options, + beforeSend: function () { }, + error: function (data, transport) { + if (options.onFailure) { + options.onFailure(data, transport); + } else { + methods._ajaxError(data, transport); + } + }, + success: function (json) { + + // asynchronously called on success, data is the json answer from the server + var errorFieldId = json[0]; + //var errorField = $($("#" + errorFieldId)[0]); + var errorField = $("#" + errorFieldId).eq(0); + + // make sure we found the element + if (errorField.length == 1) { + var status = json[1]; + // read the optional msg from the server + var msg = json[2]; + if (!status) { + // Houston we got a problem - display an red prompt + options.ajaxValidCache[errorFieldId] = false; + options.isError = true; + + // resolve the msg prompt + if (msg) { + if (options.allrules[msg]) { + var txt = options.allrules[msg].alertText; + if (txt) { + msg = txt; + } + } + } + else + msg = rule.alertText; + + if (options.showPrompts) methods._showPrompt(errorField, msg, "", true, options); + } else { + options.ajaxValidCache[errorFieldId] = true; + + // resolves the msg prompt + if (msg) { + if (options.allrules[msg]) { + let txt = options.allrules[msg].alertTextOk; + if (txt) { + msg = txt; + } + } + } + else + msg = rule.alertTextOk; + + if (options.showPrompts) { + // see if we should display a green prompt + if (msg) + methods._showPrompt(errorField, msg, "pass", true, options); + else + methods._closePrompt(errorField); + } + + // If a submit form triggered this, we want to re-submit the form + if (options.eventTrigger == "submit") + field.closest("form").submit(); + } + } + errorField.trigger("jqv.field.result", [errorField, options.isError, msg]); + } + }); + + return rule.alertTextLoad; + } + }, + /** + * Common method to handle ajax errors + * + * @param {Object} data + * @param {Object} transport + */ + _ajaxError: function (data, transport) { + if (data.status == 0 && transport == null) + alert("The page is not served from a server! ajax call failed"); + else if (typeof console != "undefined") + console.log("Ajax error: " + data.status + " " + transport); + }, + /** + * date -> string + * + * @param {Object} date + */ + _dateToString: function (date) { + return date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate(); + }, + /** + * Parses an ISO date + * @param {String} d + */ + _parseDate: function (d) { + + var dateParts = d.split("-"); + if (dateParts == d) + dateParts = d.split("/"); + if (dateParts == d) { + dateParts = d.split("."); + return new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]); + } + return new Date(dateParts[0], (dateParts[1] - 1), dateParts[2]); + }, + /** + * Builds or updates a prompt with the given information + * + * @param {jqObject} field + * @param {String} promptText html text to display type + * @param {String} type the type of bubble: 'pass' (green), 'load' (black) anything else (red) + * @param {boolean} ajaxed - use to mark fields than being validated with ajax + * @param {Map} options user options + */ + _showPrompt: function (field, promptText, type, ajaxed, options, ajaxform) { + //Check if we need to adjust what element to show the prompt on + if (field.data('jqv-prompt-at') instanceof jQuery) { + field = field.data('jqv-prompt-at'); + } else if (field.data('jqv-prompt-at')) { + field = $(field.data('jqv-prompt-at')); + } + + var prompt = methods._getPrompt(field); + // The ajax submit errors are not see has an error in the form, + // When the form errors are returned, the engine see 2 bubbles, but those are ebing closed by the engine at the same time + // Because no error was found befor submitting + if (ajaxform) prompt = false; + // Check that there is indded text + if ($.trim(promptText)) { + if (prompt) + methods._updatePrompt(field, prompt, promptText, type, ajaxed, options); + else + methods._buildPrompt(field, promptText, type, ajaxed, options); + } + }, + /** + * Builds and shades a prompt for the given field. + * + * @param {jqObject} field + * @param {String} promptText html text to display type + * @param {String} type the type of bubble: 'pass' (green), 'load' (black) anything else (red) + * @param {boolean} ajaxed - use to mark fields than being validated with ajax + * @param {Map} options user options + */ + _buildPrompt: function (field, promptText, type, ajaxed, options) { + + // create the prompt + var prompt = $('
      '); + prompt.addClass(methods._getClassName(field.attr("id")) + "formError"); + // add a class name to identify the parent form of the prompt + prompt.addClass("parentForm" + methods._getClassName(field.closest('form, .validationEngineContainer').attr("id"))); + prompt.addClass("formError"); + + switch (type) { + case "pass": + prompt.addClass("greenPopup"); + break; + case "load": + prompt.addClass("blackPopup"); + break; + default: + /* it has error */ + //alert("unknown popup type:"+type); + } + if (ajaxed) + prompt.addClass("ajaxed"); + + // create the prompt content + var promptContent = $('
      ').addClass("formErrorContent").html(promptText).appendTo(prompt); + + // determine position type + var positionType = field.data("promptPosition") || options.promptPosition; + + // create the css arrow pointing at the field + // note that there is no triangle on max-checkbox and radio + if (options.showArrow) { + var arrow = $('
      ').addClass("formErrorArrow"); + + //prompt positioning adjustment support. Usage: positionType:Xshift,Yshift (for ex.: bottomLeft:+20 or bottomLeft:-20,+10) + if (typeof (positionType) == 'string') { + var pos = positionType.indexOf(":"); + if (pos != -1) + positionType = positionType.substring(0, pos); + } + + switch (positionType) { + case "bottomLeft": + case "bottomRight": + prompt.find(".formErrorContent").before(arrow); + arrow.addClass("formErrorArrowBottom").html('
      '); + break; + case "topLeft": + case "topRight": + arrow.html('
      '); + prompt.append(arrow); + break; + } + } + // Add custom prompt class + if (options.addPromptClass) + prompt.addClass(options.addPromptClass); + + // Add custom prompt class defined in element + var requiredOverride = field.attr('data-required-class'); + if (requiredOverride !== undefined) { + prompt.addClass(requiredOverride); + } else { + if (options.prettySelect) { + if ($('#' + field.attr('id')).next().is('select')) { + var prettyOverrideClass = $('#' + field.attr('id').substr(options.usePrefix.length).substring(options.useSuffix.length)).attr('data-required-class'); + if (prettyOverrideClass !== undefined) { + prompt.addClass(prettyOverrideClass); + } + } + } + } + + prompt.css({ + "opacity": 0 + }); + if (positionType === 'inline') { + prompt.addClass("inline"); + if (typeof field.attr('data-prompt-target') !== 'undefined' && $('#' + field.attr('data-prompt-target')).length > 0) { + prompt.appendTo($('#' + field.attr('data-prompt-target'))); + } else { + field.after(prompt); + } + } else { + field.before(prompt); + } + + pos = methods._calculatePosition(field, prompt, options); + // Support RTL layouts by @yasser_lotfy ( Yasser Lotfy ) + if ($('body').hasClass('rtl')) { + prompt.css({ + 'position': positionType === 'inline' ? 'relative' : 'absolute', + "top": pos.callerTopPosition, + "left": "initial", + "right": pos.callerleftPosition, + "marginTop": pos.marginTopSize, + "opacity": 0 + }).data("callerField", field); + } else { + prompt.css({ + 'position': positionType === 'inline' ? 'relative' : 'absolute', + "top": pos.callerTopPosition, + "left": pos.callerleftPosition, + "right": "initial", + "marginTop": pos.marginTopSize, + "opacity": 0 + }).data("callerField", field); + } + + + if (options.autoHidePrompt) { + setTimeout(function () { + prompt.animate({ + "opacity": 0 + }, function () { + prompt.closest('.formError').remove(); + }); + }, options.autoHideDelay); + } + return prompt.animate({ + "opacity": 0.87 + }); + }, + /** + * Updates the prompt text field - the field for which the prompt + * @param {jqObject} field + * @param {String} promptText html text to display type + * @param {String} type the type of bubble: 'pass' (green), 'load' (black) anything else (red) + * @param {boolean} ajaxed - use to mark fields than being validated with ajax + * @param {Map} options user options + */ + _updatePrompt: function (field, prompt, promptText, type, ajaxed, options, noAnimation) { + + if (prompt) { + if (typeof type !== "undefined") { + if (type == "pass") + prompt.addClass("greenPopup"); + else + prompt.removeClass("greenPopup"); + + if (type == "load") + prompt.addClass("blackPopup"); + else + prompt.removeClass("blackPopup"); + } + if (ajaxed) + prompt.addClass("ajaxed"); + else + prompt.removeClass("ajaxed"); + + prompt.find(".formErrorContent").html(promptText); + + var pos = methods._calculatePosition(field, prompt, options); + // Support RTL layouts by @yasser_lotfy ( Yasser Lotfy ) + var css; + if ($('body').hasClass('rtl')) { + css = { + "top": pos.callerTopPosition, + "left": "initial", + "right": pos.callerleftPosition, + "marginTop": pos.marginTopSize, + "opacity": 0.87 + }; + } else { + css = { + "top": pos.callerTopPosition, + "left": pos.callerleftPosition, + "right": "initial", + "marginTop": pos.marginTopSize, + "opacity": 0.87 + }; + } + + prompt.css({ + "opacity": 0, + "display": "block" + }); + + if (noAnimation) + prompt.css(css); + else + prompt.animate(css); + } + }, + /** + * Closes the prompt associated with the given field + * + * @param {jqObject} + * field + */ + _closePrompt: function (field) { + var prompt = methods._getPrompt(field); + if (prompt) + prompt.fadeTo("fast", 0, function () { + prompt.closest('.formError').remove(); + }); + }, + closePrompt: function (field) { + return methods._closePrompt(field); + }, + /** + * Returns the error prompt matching the field if any + * + * @param {jqObject} + * field + * @return undefined or the error prompt (jqObject) + */ + _getPrompt: function (field) { + var formId = $(field).closest('form, .validationEngineContainer').attr('id'); + var className = methods._getClassName(field.attr("id")) + "formError"; + var match = $("." + methods._escapeExpression(className) + '.parentForm' + methods._getClassName(formId))[0]; + if (match) + return $(match); + }, + /** + * Returns the escapade classname + * + * @param {selector} + * className + */ + _escapeExpression: function (selector) { + return selector.replace(/([#;&,\.\+\*\~':"\!\^$\[\]\(\)=>\|])/g, "\\$1"); + }, + /** + * returns true if we are in a RTLed document + * + * @param {jqObject} field + */ + isRTL: function (field) { + var $document = $(document); + var $body = $('body'); + var rtl = + (field && field.hasClass('rtl')) || + (field && (field.attr('dir') || '').toLowerCase() === 'rtl') || + $document.hasClass('rtl') || + ($document.attr('dir') || '').toLowerCase() === 'rtl' || + $body.hasClass('rtl') || + ($body.attr('dir') || '').toLowerCase() === 'rtl'; + return Boolean(rtl); + }, + /** + * Calculates prompt position + * + * @param {jqObject} + * field + * @param {jqObject} + * the prompt + * @param {Map} + * options + * @return positions + */ + _calculatePosition: function (field, promptElmt, options) { + + var promptTopPosition, promptleftPosition, marginTopSize; + var fieldWidth = field.width(); + var fieldLeft = field.position().left; + var fieldTop = field.position().top; + var fieldHeight = field.height(); + var promptHeight = promptElmt.height(); + + + // is the form contained in an overflown container? + promptTopPosition = promptleftPosition = 0; + // compensation for the arrow + marginTopSize = -promptHeight; + + + //prompt positioning adjustment support + //now you can adjust prompt position + //usage: positionType:Xshift,Yshift + //for example: + // bottomLeft:+20 means bottomLeft position shifted by 20 pixels right horizontally + // topRight:20, -15 means topRight position shifted by 20 pixels to right and 15 pixels to top + //You can use +pixels, - pixels. If no sign is provided than + is default. + var positionType = field.data("promptPosition") || options.promptPosition; + var shift1 = ""; + var shift2 = ""; + var shiftX = 0; + var shiftY = 0; + if (typeof (positionType) == 'string') { + //do we have any position adjustments ? + if (positionType.indexOf(":") != -1) { + shift1 = positionType.substring(positionType.indexOf(":") + 1); + positionType = positionType.substring(0, positionType.indexOf(":")); + + //if any advanced positioning will be needed (percents or something else) - parser should be added here + //for now we use simple parseInt() + + //do we have second parameter? + if (shift1.indexOf(",") != -1) { + shift2 = shift1.substring(shift1.indexOf(",") + 1); + shift1 = shift1.substring(0, shift1.indexOf(",")); + shiftY = parseInt(shift2); + if (isNaN(shiftY)) shiftY = 0; + } + + shiftX = parseInt(shift1); + if (isNaN(shift1)) shift1 = 0; + + } + } + + + switch (positionType) { + default: + case "topRight": + promptleftPosition += fieldLeft + fieldWidth - 27; + promptTopPosition += fieldTop; + break; + + case "topLeft": + promptTopPosition += fieldTop; + promptleftPosition += fieldLeft; + break; + + case "centerRight": + promptTopPosition = fieldTop + 4; + marginTopSize = 0; + promptleftPosition = fieldLeft + field.outerWidth(true) + 5; + break; + case "centerLeft": + promptleftPosition = fieldLeft - (promptElmt.width() + 2); + promptTopPosition = fieldTop + 4; + marginTopSize = 0; + + break; + + case "bottomLeft": + promptTopPosition = fieldTop + field.height() + 5; + marginTopSize = 0; + promptleftPosition = fieldLeft; + break; + case "bottomRight": + promptleftPosition = fieldLeft + fieldWidth - 27; + promptTopPosition = fieldTop + field.height() + 5; + marginTopSize = 0; + break; + case "inline": + promptleftPosition = 0; + promptTopPosition = 0; + marginTopSize = 0; + } + + + + //apply adjusments if any + promptleftPosition += shiftX; + promptTopPosition += shiftY; + + return { + "callerTopPosition": promptTopPosition + "px", + "callerleftPosition": promptleftPosition + "px", + "marginTopSize": marginTopSize + "px" + }; + }, + /** + * Saves the user options and variables in the form.data + * + * @param {jqObject} + * form - the form where the user option should be saved + * @param {Map} + * options - the user options + * @return the user options (extended from the defaults) + */ + _saveOptions: function (form, options) { + + // is there a language localisation ? + if ($.validationEngineLanguage) + var allRules = $.validationEngineLanguage.allRules; + else + $.error("jQuery.validationEngine rules are not loaded, plz add localization files to the page"); + // --- Internals DO NOT TOUCH or OVERLOAD --- + // validation rules and i18 + $.validationEngine.defaults.allrules = allRules; + + var userOptions = $.extend(true, {}, $.validationEngine.defaults, options); + + form.data('jqv', userOptions); + return userOptions; + }, + + /** + * Removes forbidden characters from class name + * @param {String} className + */ + _getClassName: function (className) { + if (className) + return className.replace(/:/g, "_").replace(/\./g, "_"); + }, + /** + * Escape special character for jQuery selector + * http://totaldev.com/content/escaping-characters-get-valid-jquery-id + * @param {String} selector + */ + _jqSelector: function (str) { + return str.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1'); + }, + /** + * Conditionally required field + * + * @param {jqObject} field + * @param {Array[String]} rules + * @param {int} i rules index + * @param {Map} + * user options + * @return an error string if validation failed + */ + _condRequired: function (field, rules, i, options) { + var idx, dependingField; + + for (idx = (i + 1); idx < rules.length; idx++) { + dependingField = jQuery("#" + rules[idx]).first(); + + /* Use _required for determining wether dependingField has a value. + * There is logic there for handling all field types, and default value; so we won't replicate that here + * Indicate this special use by setting the last parameter to true so we only validate the dependingField on chackboxes and radio buttons (#462) + */ + if (dependingField.length && methods._required(dependingField, ["required"], 0, options, true) == undefined) { + /* We now know any of the depending fields has a value, + * so we can validate this field as per normal required code + */ + return methods._required(field, ["required"], 0, options); + } + } + }, + + _submitButtonClick: function (event) { + var button = $(this); + var form = button.closest('form, .validationEngineContainer'); + form.data("jqv_submitButton", button.attr("id")); + } + }; + + /** + * Plugin entry point. + * You may pass an action as a parameter or a list of options. + * if none, the init and attach methods are being called. + * Remember: if you pass options, the attached method is NOT called automatically + * + * @param {String} + * method (optional) action + */ + $.fn.validationEngine = function (method) { + + var form = $(this); + if (!form[0]) return form; // stop here if the form does not exist + + if (typeof (method) == 'string' && method.charAt(0) != '_' && methods[method]) { + + // make sure init is called once + if (method != "showPrompt" && method != "hide" && method != "hideAll") + methods.init.apply(form); + + return methods[method].apply(form, Array.prototype.slice.call(arguments, 1)); + } else if (typeof method == 'object' || !method) { + + // default constructor with or without arguments + methods.init.apply(form, arguments); + return methods.attach.apply(form); + } else { + $.error('Method ' + method + ' does not exist in jQuery.validationEngine'); + } + }; + + + + // LEAK GLOBAL OPTIONS + $.validationEngine = { + fieldIdCounter: 0, defaults: { + + // Name of the event triggering field validation + validationEventTrigger: "blur", + // Automatically scroll viewport to the first error + scroll: true, + // Focus on the first input + focusFirstField: true, + // Show prompts, set to false to disable prompts + showPrompts: true, + // Should we attempt to validate non-visible input fields contained in the form? (Useful in cases of tabbed containers, e.g. jQuery-UI tabs) + validateNonVisibleFields: false, + // ignore the validation for fields with this specific class (Useful in cases of tabbed containers AND hidden fields we don't want to validate) + ignoreFieldsWithClass: 'ignoreMe', + // Opening box position, possible locations are: topLeft, + // topRight, bottomLeft, centerRight, bottomRight, inline + // inline gets inserted after the validated field or into an element specified in data-prompt-target + promptPosition: "topRight", + bindMethod: "bind", + // internal, automatically set to true when it parse a _ajax rule + inlineAjax: false, + // if set to true, the form data is sent asynchronously via ajax to the form.action url (get) + ajaxFormValidation: false, + // The url to send the submit ajax validation (default to action) + ajaxFormValidationURL: false, + // HTTP method used for ajax validation + ajaxFormValidationMethod: 'get', + // Ajax form validation callback method: boolean onComplete(form, status, errors, options) + // retuns false if the form.submit event needs to be canceled. + onAjaxFormComplete: $.noop, + // called right before the ajax call, may return false to cancel + onBeforeAjaxFormValidation: $.noop, + // Stops form from submitting and execute function assiciated with it + onValidationComplete: false, + + // Used when you have a form fields too close and the errors messages are on top of other disturbing viewing messages + doNotShowAllErrosOnSubmit: false, + // Object where you store custom messages to override the default error messages + custom_error_messages: {}, + // true if you want to validate the input fields on blur event + binded: true, + // set to true if you want to validate the input fields on blur only if the field it's not empty + notEmpty: false, + // set to true, when the prompt arrow needs to be displayed + showArrow: true, + // set to false, determines if the prompt arrow should be displayed when validating + // checkboxes and radio buttons + showArrowOnRadioAndCheckbox: false, + // did one of the validation fail ? kept global to stop further ajax validations + isError: false, + // Limit how many displayed errors a field can have + maxErrorsPerField: false, + + // Caches field validation status, typically only bad status are created. + // the array is used during ajax form validation to detect issues early and prevent an expensive submit + ajaxValidCache: {}, + // Auto update prompt position after window resize + autoPositionUpdate: false, + + InvalidFields: [], + onFieldSuccess: false, + onFieldFailure: false, + onSuccess: false, + onFailure: false, + validateAttribute: "class", + addSuccessCssClassToField: "", + addFailureCssClassToField: "", + + // Auto-hide prompt + autoHidePrompt: false, + // Delay before auto-hide + autoHideDelay: 10000, + // Fade out duration while hiding the validations + fadeDuration: 300, + // Use Prettify select library + prettySelect: false, + // Add css class on prompt + addPromptClass: "", + // Custom ID uses prefix + usePrefix: "", + // Custom ID uses suffix + useSuffix: "", + // Only show one message per error prompt + showOneMessage: false + } + }; + $(function () { $.validationEngine.defaults.promptPosition = methods.isRTL() ? 'topLeft' : "topRight" }); +})(jQuery); diff --git a/src/assets/plugins/jQuery-Validation-Engine/js/languages/jquery.validationEngine-zh_CN.js b/src/assets/plugins/jQuery-Validation-Engine/js/languages/jquery.validationEngine-zh_CN.js new file mode 100644 index 0000000..9435674 --- /dev/null +++ b/src/assets/plugins/jQuery-Validation-Engine/js/languages/jquery.validationEngine-zh_CN.js @@ -0,0 +1,181 @@ +(function ($) { + $.fn.validationEngineLanguage = function () { + }; + $.validationEngineLanguage = { + newLang: function () { + $.validationEngineLanguage.allRules = { + "required": { // Add your regex rules here, you can take telephone as an example + "regex": "none", + "alertText": "* 此处不可空白", + "alertTextCheckboxMultiple": "* 请选择一个项目", + "alertTextCheckboxe": "* 您必须钩选此栏", + "alertTextDateRange": "* 日期范围不可空白" + }, + "requiredInFunction": { + "func": function (field, rules, i, options) { + return (field.val() == "test") ? true : false; + }, + "alertText": "* Field must equal test" + }, + "dateRange": { + "regex": "none", + "alertText": "* 无效的 ", + "alertText2": " 日期范围" + }, + "dateTimeRange": { + "regex": "none", + "alertText": "* 无效的 ", + "alertText2": " 时间范围" + }, + "minSize": { + "regex": "none", + "alertText": "* 最少 ", + "alertText2": " 个字符" + }, + "maxSize": { + "regex": "none", + "alertText": "* 最多 ", + "alertText2": " 个字符" + }, + "groupRequired": { + "regex": "none", + "alertText": "* 你必需选填其中一个栏位" + }, + "min": { + "regex": "none", + "alertText": "* 最小值為 " + }, + "max": { + "regex": "none", + "alertText": "* 最大值为 " + }, + "past": { + "regex": "none", + "alertText": "* 日期必需早于 " + }, + "future": { + "regex": "none", + "alertText": "* 日期必需晚于 " + }, + "maxCheckbox": { + "regex": "none", + "alertText": "* 最多选取 ", + "alertText2": " 个项目" + }, + "minCheckbox": { + "regex": "none", + "alertText": "* 请选择 ", + "alertText2": " 个项目" + }, + "equals": { + "regex": "none", + "alertText": "* 请输入与上面相同的密码" + }, + "creditCard": { + "regex": "none", + "alertText": "* 无效的信用卡号码" + }, + "phone": { + // credit: jquery.h5validate.js / orefalo + "regex": /^([\+][0-9]{1,3}([ \.\-])?)?([\(][0-9]{1,6}[\)])?([0-9 \.\-]{1,32})(([A-Za-z \:]{1,11})?[0-9]{1,4}?)$/, + "alertText": "* 无效的电话号码" + }, + "email": { + // Shamelessly lifted from Scott Gonzalez via the Bassistance Validation plugin http://projects.scottsplayground.com/email_address_validation/ + "regex": /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, + "alertText": "* 邮件地址无效" + }, + "integer": { + "regex": /^[\-\+]?\d+$/, + "alertText": "* 不是有效的整数" + }, + "number": { + // Number, including positive, negative, and floating decimal. credit: orefalo + "regex": /^[\-\+]?((([0-9]{1,3})([,][0-9]{3})*)|([0-9]+))?([\.]([0-9]+))?$/, + "alertText": "* 无效的数字" + }, + "date": { + "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/, + "alertText": "* 无效的日期,格式必需为 YYYY-MM-DD" + }, + "ipv4": { + "regex": /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/, + "alertText": "* 无效的 IP 地址" + }, + "url": { + "regex": /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i, + "alertText": "* Invalid URL" + }, + "onlyNumberSp": { + "regex": /^[0-9\ ]+$/, + "alertText": "* 只能填数字" + }, + "onlyLetterSp": { + "regex": /^[a-zA-Z\ \']+$/, + "alertText": "* 只接受英文字母大小写" + }, + "onlyLetterAccentSp": { + "regex": /^[a-z\u00C0-\u017F\ ]+$/i, + "alertText": "* 只接受英文字母大小写" + }, + "onlyLetterNumber": { + "regex": /^[0-9a-zA-Z]+$/, + "alertText": "* 不接受特殊字符" + }, + // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings + "ajaxUserCall": { + "url": "ajaxValidateFieldUser", + // you may want to pass extra data on the ajax call + "extraData": "name=eric", + "alertText": "* 此名称已被其他人使用", + "alertTextLoad": "* 正在确认名称是否有其他人使用,请稍等。" + }, + "ajaxUserCallPhp": { + "url": "phpajax/ajaxValidateFieldUser.php", + // you may want to pass extra data on the ajax call + "extraData": "name=eric", + // if you provide an "alertTextOk", it will show as a green prompt when the field validates + "alertTextOk": "* 此帐号名称可以使用", + "alertText": "* 此名称已被其他人使用", + "alertTextLoad": "* 正在确认帐号名称是否有其他人使用,请稍等。" + }, + "ajaxNameCall": { + // remote json service location + "url": "ajaxValidateFieldName", + // error + "alertText": "* 此名称可以使用", + // if you provide an "alertTextOk", it will show as a green prompt when the field validates + "alertTextOk": "* 此名称已被其他人使用", + // speaks by itself + "alertTextLoad": "* 正在确认名称是否有其他人使用,请稍等。" + }, + "ajaxNameCallPhp": { + // remote json service location + "url": "phpajax/ajaxValidateFieldName.php", + // error + "alertText": "* 此名称已被其他人使用", + // speaks by itself + "alertTextLoad": "* 正在确认名称是否有其他人使用,请稍等。" + }, + "validate2fields": { + "alertText": "* 请输入 HELLO" + }, + //tls warning:homegrown not fielded + "dateFormat": { + "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$|^(?:(?:(?:0?[13578]|1[02])(\/|-)31)|(?:(?:0?[1,3-9]|1[0-2])(\/|-)(?:29|30)))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^(?:(?:0?[1-9]|1[0-2])(\/|-)(?:0?[1-9]|1\d|2[0-8]))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^(0?2(\/|-)29)(\/|-)(?:(?:0[48]00|[13579][26]00|[2468][048]00)|(?:\d\d)?(?:0[48]|[2468][048]|[13579][26]))$/, + "alertText": "* 无效的日期格式" + }, + //tls warning:homegrown not fielded + "dateTimeFormat": { + "regex": /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])\s+(1[012]|0?[1-9]){1}:(0?[1-5]|[0-6][0-9]){1}:(0?[0-6]|[0-6][0-9]){1}\s+(am|pm|AM|PM){1}$|^(?:(?:(?:0?[13578]|1[02])(\/|-)31)|(?:(?:0?[1,3-9]|1[0-2])(\/|-)(?:29|30)))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^((1[012]|0?[1-9]){1}\/(0?[1-9]|[12][0-9]|3[01]){1}\/\d{2,4}\s+(1[012]|0?[1-9]){1}:(0?[1-5]|[0-6][0-9]){1}:(0?[0-6]|[0-6][0-9]){1}\s+(am|pm|AM|PM){1})$/, + "alertText": "* 无效的日期或时间格式", + "alertText2": "可接受的格式: ", + "alertText3": "mm/dd/yyyy hh:mm:ss AM|PM 或 ", + "alertText4": "yyyy-mm-dd hh:mm:ss AM|PM" + } + }; + + } + }; + $.validationEngineLanguage.newLang(); +})(jQuery); diff --git a/src/assets/plugins/jquery/jquery.form.js b/src/assets/plugins/jquery/jquery.form.js new file mode 100644 index 0000000..751a8e7 --- /dev/null +++ b/src/assets/plugins/jquery/jquery.form.js @@ -0,0 +1,1280 @@ +/*! + * jQuery Form Plugin + * version: 3.51.0-2014.06.20 + * Requires jQuery v1.5 or later + * Copyright (c) 2014 M. Alsup + * Examples and documentation at: http://malsup.com/jquery/form/ + * Project repository: https://github.com/malsup/form + * Dual licensed under the MIT and GPL licenses. + * https://github.com/malsup/form#copyright-and-license + */ +/*global ActiveXObject */ + +// AMD support +(function (factory) { + "use strict"; + var define; + if (typeof define === 'function' && define.amd) { + // using AMD; register as anon module + define(['jquery'], factory); + } else { + // no AMD; invoke directly + factory((typeof (jQuery) != 'undefined') ? jQuery : window.Zepto); + } +}(function ($) { + "use strict"; + + /* + Usage Note: + ----------- + Do not use both ajaxSubmit and ajaxForm on the same form. These + functions are mutually exclusive. Use ajaxSubmit if you want + to bind your own submit handler to the form. For example, + + $(document).ready(function() { + $('#myForm').on('submit', function(e) { + e.preventDefault(); // <-- important + $(this).ajaxSubmit({ + target: '#output' + }); + }); + }); + + Use ajaxForm when you want the plugin to manage all the event binding + for you. For example, + + $(document).ready(function() { + $('#myForm').ajaxForm({ + target: '#output' + }); + }); + + You can also use ajaxForm with delegation (requires jQuery v1.7+), so the + form does not have to exist when you invoke ajaxForm: + + $('#myForm').ajaxForm({ + delegation: true, + target: '#output' + }); + + When using ajaxForm, the ajaxSubmit function will be invoked for you + at the appropriate time. + */ + + /** + * Feature detection + */ + var feature = {}; + feature.fileapi = $("").get(0).files !== undefined; + feature.formdata = window.FormData !== undefined; + + var hasProp = !!$.fn.prop; + + // attr2 uses prop when it can but checks the return type for + // an expected string. this accounts for the case where a form + // contains inputs with names like "action" or "method"; in those + // cases "prop" returns the element + $.fn.attr2 = function () { + if (!hasProp) { + return this.attr.apply(this, arguments); + } + var val = this.prop.apply(this, arguments); + if ((val && val.jquery) || typeof val === 'string') { + return val; + } + return this.attr.apply(this, arguments); + }; + + /** + * ajaxSubmit() provides a mechanism for immediately submitting + * an HTML form using AJAX. + */ + $.fn.ajaxSubmit = function (options) { + /*jshint scripturl:true */ + + // fast fail if nothing selected (http://dev.jquery.com/ticket/2752) + if (!this.length) { + log('ajaxSubmit: skipping submit process - no element selected'); + return this; + } + + var method, action, url, $form = this; + + if (typeof options == 'function') { + options = { success: options }; + } + else if (options === undefined) { + options = {}; + } + + method = options.type || this.attr2('method'); + action = options.url || this.attr2('action'); + + url = (typeof action === 'string') ? $.trim(action) : ''; + url = url || window.location.href || ''; + if (url) { + // clean url (don't include hash vaue) + url = (url.match(/^([^#]+)/) || [])[1]; + } + + options = $.extend(true, { + url: url, + success: $.ajaxSettings.success, + type: method || $.ajaxSettings.type, + iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank' + }, options); + + // hook for manipulating the form data before it is extracted; + // convenient for use with rich editors like tinyMCE or FCKEditor + var veto = {}; + this.trigger('form-pre-serialize', [this, options, veto]); + if (veto.veto) { + log('ajaxSubmit: submit vetoed via form-pre-serialize trigger'); + return this; + } + + // provide opportunity to alter form data before it is serialized + if (options.beforeSerialize && options.beforeSerialize(this, options) === false) { + log('ajaxSubmit: submit aborted via beforeSerialize callback'); + return this; + } + + var traditional = options.traditional; + if (traditional === undefined) { + traditional = $.ajaxSettings.traditional; + } + + var elements = []; + var qx, a = this.formToArray(options.semantic, elements); + if (options.data) { + options.extraData = options.data; + qx = $.param(options.data, traditional); + } + + // give pre-submit callback an opportunity to abort the submit + if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) { + log('ajaxSubmit: submit aborted via beforeSubmit callback'); + return this; + } + + // fire vetoable 'validate' event + this.trigger('form-submit-validate', [a, this, options, veto]); + if (veto.veto) { + log('ajaxSubmit: submit vetoed via form-submit-validate trigger'); + return this; + } + + var q = $.param(a, traditional); + if (qx) { + q = (q ? (q + '&' + qx) : qx); + } + if (options.type.toUpperCase() == 'GET') { + options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q; + options.data = null; // data is null for 'get' + } + else { + options.data = q; // data is the query string for 'post' + } + + var callbacks = []; + if (options.resetForm) { + callbacks.push(function () { $form.resetForm(); }); + } + if (options.clearForm) { + callbacks.push(function () { $form.clearForm(options.includeHidden); }); + } + + // perform a load on the target only if dataType is not provided + if (!options.dataType && options.target) { + var oldSuccess = options.success || function () { }; + callbacks.push(function (data) { + var fn = options.replaceTarget ? 'replaceWith' : 'html'; + $(options.target)[fn](data).each(oldSuccess, arguments); + }); + } + else if (options.success) { + callbacks.push(options.success); + } + + options.success = function (data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg + var context = options.context || this; // jQuery 1.4+ supports scope context + for (var i = 0, max = callbacks.length; i < max; i++) { + callbacks[i].apply(context, [data, status, xhr || $form, $form]); + } + }; + + if (options.error) { + var oldError = options.error; + options.error = function (xhr, status, error) { + var context = options.context || this; + oldError.apply(context, [xhr, status, error, $form]); + }; + } + + if (options.complete) { + var oldComplete = options.complete; + options.complete = function (xhr, status) { + var context = options.context || this; + oldComplete.apply(context, [xhr, status, $form]); + }; + } + + // are there files to upload? + + // [value] (issue #113), also see comment: + // https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219 + var fileInputs = $('input[type=file]:enabled', this).filter(function () { return $(this).val() !== ''; }); + + var hasFileInputs = fileInputs.length > 0; + var mp = 'multipart/form-data'; + var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp); + + var fileAPI = feature.fileapi && feature.formdata; + log("fileAPI :" + fileAPI); + var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI; + + var jqxhr; + + // options.iframe allows user to force iframe mode + // 06-NOV-09: now defaulting to iframe mode if file input is detected + if (options.iframe !== false && (options.iframe || shouldUseFrame)) { + // hack to fix Safari hang (thanks to Tim Molendijk for this) + // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d + if (options.closeKeepAlive) { + $.get(options.closeKeepAlive, function () { + jqxhr = fileUploadIframe(a); + }); + } + else { + jqxhr = fileUploadIframe(a); + } + } + else if ((hasFileInputs || multipart) && fileAPI) { + jqxhr = fileUploadXhr(a); + } + else { + jqxhr = $.ajax(options); + } + + $form.removeData('jqxhr').data('jqxhr', jqxhr); + + // clear element array + for (var k = 0; k < elements.length; k++) { + elements[k] = null; + } + + // fire 'notify' event + this.trigger('form-submit-notify', [this, options]); + return this; + + // utility fn for deep serialization + function deepSerialize(extraData) { + var serialized = $.param(extraData, options.traditional).split('&'); + var len = serialized.length; + var result = []; + var i, part; + for (i = 0; i < len; i++) { + // #252; undo param space replacement + serialized[i] = serialized[i].replace(/\+/g, ' '); + part = serialized[i].split('='); + // #278; use array instead of object storage, favoring array serializations + result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]); + } + return result; + } + + // XMLHttpRequest Level 2 file uploads (big hat tip to francois2metz) + function fileUploadXhr(a) { + var formdata = new FormData(); + + for (var i = 0; i < a.length; i++) { + formdata.append(a[i].name, a[i].value); + } + + if (options.extraData) { + var serializedData = deepSerialize(options.extraData); + for (i = 0; i < serializedData.length; i++) { + if (serializedData[i]) { + formdata.append(serializedData[i][0], serializedData[i][1]); + } + } + } + + options.data = null; + + var s = $.extend(true, {}, $.ajaxSettings, options, { + contentType: false, + processData: false, + cache: false, + type: method || 'POST' + }); + + if (options.uploadProgress) { + // workaround because jqXHR does not expose upload property + s.xhr = function () { + var xhr = $.ajaxSettings.xhr(); + if (xhr.upload) { + xhr.upload.addEventListener('progress', function (event) { + var percent = 0; + var position = event.loaded || event.position; /*event.position is deprecated*/ + var total = event.total; + if (event.lengthComputable) { + percent = Math.ceil(position / total * 100); + } + options.uploadProgress(event, position, total, percent); + }, false); + } + return xhr; + }; + } + + s.data = null; + var beforeSend = s.beforeSend; + s.beforeSend = function (xhr, o) { + //Send FormData() provided by user + if (options.formData) { + o.data = options.formData; + } + else { + o.data = formdata; + } + if (beforeSend) { + beforeSend.call(this, xhr, o); + } + }; + return $.ajax(s); + } + + // private function for handling file uploads (hat tip to YAHOO!) + function fileUploadIframe(a) { + var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle; + var deferred = $.Deferred(); + + // #341 + deferred.abort = function (status) { + xhr.abort(status); + }; + + if (a) { + // ensure that every serialized input is still enabled + for (i = 0; i < elements.length; i++) { + el = $(elements[i]); + if (hasProp) { + el.prop('disabled', false); + } + else { + el.removeAttr('disabled'); + } + } + } + + s = $.extend(true, {}, $.ajaxSettings, options); + s.context = s.context || s; + id = 'jqFormIO' + (new Date().getTime()); + if (s.iframeTarget) { + $io = $(s.iframeTarget); + n = $io.attr2('name'); + if (!n) { + $io.attr2('name', id); + } + else { + id = n; + } + } + else { + $io = $('