Repository: 71yuu/YMall Branch: master Commit: 73787a3f021b Files: 928 Total size: 10.1 MB Directory structure: gitextract_igooiayh/ ├── .gitattributes ├── .gitignore ├── README.md ├── pom.xml ├── sql/ │ └── ymall.sql ├── ymall-commons/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com.yuu.ymall.commons/ │ ├── consts/ │ │ └── Consts.java │ ├── dto/ │ │ └── BaseResult.java │ ├── execption/ │ │ └── YmallUploadException.java │ ├── geetest/ │ │ ├── GeetInit.java │ │ └── GeetestLib.java │ ├── persistence/ │ │ └── BaseMapper.java │ ├── redis/ │ │ └── RedisCacheManager.java │ └── utils/ │ ├── EsUtil.java │ ├── HttpUtil.java │ ├── IDUtil.java │ ├── MapperUtil.java │ ├── SendSmsUtil.java │ └── TimeUtil.java ├── ymall-dependencies/ │ ├── libs/ │ │ └── alipay-trade-sdk-20161215.jar │ └── pom.xml ├── ymall-domain/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── yuu/ │ └── ymall/ │ └── domain/ │ ├── TbAddress.java │ ├── TbExpress.java │ ├── TbItem.java │ ├── TbItemCat.java │ ├── TbItemDesc.java │ ├── TbMember.java │ ├── TbOrder.java │ ├── TbOrderItem.java │ ├── TbOrderShipping.java │ ├── TbPanel.java │ ├── TbPanelContent.java │ └── TbUser.java ├── ymall-web-admin/ │ ├── .rebel.xml.bak │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── yuu/ │ │ └── ymall/ │ │ └── web/ │ │ └── admin/ │ │ ├── commons/ │ │ │ ├── consts/ │ │ │ │ └── Consts.java │ │ │ ├── dto/ │ │ │ │ ├── ChartData.java │ │ │ │ ├── City.java │ │ │ │ ├── DataTablesResult.java │ │ │ │ ├── IpWeatherResult.java │ │ │ │ ├── ItemDto.java │ │ │ │ ├── OrderChartData.java │ │ │ │ ├── OrderDetail.java │ │ │ │ └── ZTreeNode.java │ │ │ ├── es/ │ │ │ │ └── ESItem.java │ │ │ ├── shiro/ │ │ │ │ └── MyRealm.java │ │ │ ├── swagger/ │ │ │ │ └── SwaggerConfiguration.java │ │ │ └── utils/ │ │ │ ├── DtoUtil.java │ │ │ ├── IDUtil.java │ │ │ ├── IPInfoUtil.java │ │ │ ├── ObjectUtil.java │ │ │ ├── QiniuUtil.java │ │ │ └── ThreadPoolUtil.java │ │ ├── mapper/ │ │ │ ├── TbAddressMapper.java │ │ │ ├── TbExpressMapper.java │ │ │ ├── TbItemCatMapper.java │ │ │ ├── TbItemDescMapper.java │ │ │ ├── TbItemMapper.java │ │ │ ├── TbMemberMapper.java │ │ │ ├── TbOrderItemMapper.java │ │ │ ├── TbOrderMapper.java │ │ │ ├── TbOrderShippingMapper.java │ │ │ ├── TbPanelContentMapper.java │ │ │ ├── TbPanelMapper.java │ │ │ └── TbUserMapper.java │ │ ├── repositories/ │ │ │ └── ItemRepository.java │ │ ├── service/ │ │ │ ├── ContentService.java │ │ │ ├── CountService.java │ │ │ ├── ExpressService.java │ │ │ ├── ItemCatService.java │ │ │ ├── ItemService.java │ │ │ ├── MemberService.java │ │ │ ├── OrderService.java │ │ │ ├── PanelService.java │ │ │ ├── SearchService.java │ │ │ ├── SystemService.java │ │ │ ├── UserService.java │ │ │ └── impl/ │ │ │ ├── ContentServiceImpl.java │ │ │ ├── CountServiceImpl.java │ │ │ ├── ExpressServiceImpl.java │ │ │ ├── ItemCatServiceImpl.java │ │ │ ├── ItemServiceImpl.java │ │ │ ├── MemberServiceImpl.java │ │ │ ├── OrderServiceImpl.java │ │ │ ├── PanelServiceImpl.java │ │ │ ├── SearchServiceImpl.java │ │ │ ├── SystemServiceImpl.java │ │ │ └── UserServiceImpl.java │ │ └── web/ │ │ ├── controller/ │ │ │ ├── ContentController.java │ │ │ ├── CountController.java │ │ │ ├── ExpressController.java │ │ │ ├── ItemCatController.java │ │ │ ├── ItemController.java │ │ │ ├── MemberController.java │ │ │ ├── OrderController.java │ │ │ ├── PageController.java │ │ │ ├── PanelController.java │ │ │ ├── SwaggerController.java │ │ │ ├── SystemController.java │ │ │ ├── UploadController.java │ │ │ └── UserController.java │ │ └── interceptor/ │ │ └── PermissionInterceptor.java │ ├── resources/ │ │ ├── generatorConfig.xml │ │ ├── log4j.properties │ │ ├── mapper/ │ │ │ ├── TbAddressMapper.xml │ │ │ ├── TbExpressMapper.xml │ │ │ ├── TbItemCatMapper.xml │ │ │ ├── TbItemDescMapper.xml │ │ │ ├── TbItemMapper.xml │ │ │ ├── TbMemberMapper.xml │ │ │ ├── TbOrderItemMapper.xml │ │ │ ├── TbOrderMapper.xml │ │ │ ├── TbOrderShippingMapper.xml │ │ │ ├── TbPanelContentMapper.xml │ │ │ ├── TbPanelMapper.xml │ │ │ └── TbUserMapper.xml │ │ ├── mybatis-config.xml │ │ ├── resource.properties │ │ ├── spring-context-druid.xml │ │ ├── spring-context-elasticsearch.xml │ │ ├── spring-context-mybatis.xml │ │ ├── spring-context-redis.xml │ │ ├── spring-context-shiro.xml │ │ ├── spring-context.xml │ │ ├── spring-mvc.xml │ │ └── ymall.properties │ └── webapp/ │ ├── WEB-INF/ │ │ ├── includes/ │ │ │ ├── footer.jsp │ │ │ └── header.jsp │ │ ├── views/ │ │ │ ├── admin-form.jsp │ │ │ ├── admin-list.jsp │ │ │ ├── change-admin-password.jsp │ │ │ ├── change-password.jsp │ │ │ ├── chart-order.jsp │ │ │ ├── choose-category.jsp │ │ │ ├── choose-parent-category.jsp │ │ │ ├── choose-product.jsp │ │ │ ├── content-common-form.jsp │ │ │ ├── content-common-list.jsp │ │ │ ├── content-header-list.jsp │ │ │ ├── content-panel-add.jsp │ │ │ ├── content-panel.jsp │ │ │ ├── index.jsp │ │ │ ├── lock-screen.jsp │ │ │ ├── login.jsp │ │ │ ├── member-ban.jsp │ │ │ ├── member-form.jsp │ │ │ ├── member-list.jsp │ │ │ ├── order-deliver.jsp │ │ │ ├── order-list.jsp │ │ │ ├── order-print.jsp │ │ │ ├── product-category-add.jsp │ │ │ ├── product-category.jsp │ │ │ ├── product-form.jsp │ │ │ ├── product-list.jsp │ │ │ ├── system-express-form.jsp │ │ │ ├── system-express.jsp │ │ │ └── welcome.jsp │ │ └── web.xml │ └── static/ │ └── assets/ │ ├── app/ │ │ ├── app.js │ │ ├── common.js │ │ ├── const.js │ │ └── validate.js │ ├── lib/ │ │ ├── DD_belatedPNG_0.0.8a-min.js │ │ ├── Hui-iconfont/ │ │ │ └── 1.0.8/ │ │ │ ├── demo.html │ │ │ └── iconfont.css │ │ ├── My97DatePicker/ │ │ │ └── 4.8/ │ │ │ ├── WdatePicker.js │ │ │ ├── calendar.js │ │ │ ├── lang/ │ │ │ │ ├── en.js │ │ │ │ ├── zh-cn.js │ │ │ │ └── zh-tw.js │ │ │ └── skin/ │ │ │ ├── WdatePicker.css │ │ │ ├── default/ │ │ │ │ └── datepicker.css │ │ │ ├── twoer/ │ │ │ │ ├── datepicker-dev.css │ │ │ │ └── datepicker.css │ │ │ └── whyGreen/ │ │ │ └── datepicker.css │ │ ├── busuanzi.pure.mini.js │ │ ├── changyan.js │ │ ├── datatables/ │ │ │ └── Chinese.json │ │ ├── expressInstall.swf │ │ ├── flatlab/ │ │ │ ├── assets/ │ │ │ │ ├── font-awesome/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── font-awesome-ie7.css │ │ │ │ │ │ └── font-awesome.css │ │ │ │ │ ├── font/ │ │ │ │ │ │ └── FontAwesome.otf │ │ │ │ │ ├── less/ │ │ │ │ │ │ ├── bootstrap.less │ │ │ │ │ │ ├── core.less │ │ │ │ │ │ ├── extras.less │ │ │ │ │ │ ├── font-awesome-ie7.less │ │ │ │ │ │ ├── font-awesome.less │ │ │ │ │ │ ├── icons.less │ │ │ │ │ │ ├── mixins.less │ │ │ │ │ │ ├── path.less │ │ │ │ │ │ └── variables.less │ │ │ │ │ └── scss/ │ │ │ │ │ ├── _bootstrap.scss │ │ │ │ │ ├── _core.scss │ │ │ │ │ ├── _extras.scss │ │ │ │ │ ├── _icons.scss │ │ │ │ │ ├── _mixins.scss │ │ │ │ │ ├── _path.scss │ │ │ │ │ ├── _variables.scss │ │ │ │ │ ├── font-awesome-ie7.scss │ │ │ │ │ └── font-awesome.scss │ │ │ │ └── jquery-easy-pie-chart/ │ │ │ │ ├── Makefile │ │ │ │ ├── Readme.md │ │ │ │ ├── examples/ │ │ │ │ │ ├── excanvas.js │ │ │ │ │ ├── index.html │ │ │ │ │ └── style.css │ │ │ │ ├── jquery.easy-pie-chart.coffee │ │ │ │ ├── jquery.easy-pie-chart.css │ │ │ │ └── jquery.easy-pie-chart.js │ │ │ ├── css/ │ │ │ │ ├── bootstrap-reset.css │ │ │ │ ├── bootstrap.css │ │ │ │ ├── owl.carousel.css │ │ │ │ ├── style-responsive.css │ │ │ │ └── style.css │ │ │ └── js/ │ │ │ ├── bootstrap.js │ │ │ ├── common-scripts.js │ │ │ ├── count.js │ │ │ ├── easy-pie-chart.js │ │ │ ├── html5shiv.js │ │ │ ├── jquery.dcjqaccordion.2.7.js │ │ │ ├── jquery.js │ │ │ ├── jquery.nicescroll.js │ │ │ ├── jquery.sparkline.js │ │ │ ├── owl.carousel.js │ │ │ └── sparkline-chart.js │ │ ├── fonts/ │ │ │ └── FontAwesome.otf │ │ ├── gt.js │ │ ├── html5shiv.js │ │ ├── jQuery.print.js │ │ ├── jquery/ │ │ │ └── 1.9.1/ │ │ │ └── jquery.js │ │ ├── jquery.contextmenu/ │ │ │ └── jquery.contextmenu.r2.js │ │ ├── jquery.validation/ │ │ │ └── 1.14.0/ │ │ │ ├── additional-methods.js │ │ │ ├── jquery.validate.js │ │ │ ├── messages_zh.js │ │ │ └── validate-methods.js │ │ ├── jselect-1.0.js │ │ ├── kindeditor/ │ │ │ ├── kindeditor.js │ │ │ ├── lang/ │ │ │ │ ├── ar.js │ │ │ │ ├── en.js │ │ │ │ ├── ko.js │ │ │ │ ├── ru.js │ │ │ │ ├── zh-CN.js │ │ │ │ └── zh-TW.js │ │ │ ├── plugins/ │ │ │ │ ├── anchor/ │ │ │ │ │ └── anchor.js │ │ │ │ ├── autoheight/ │ │ │ │ │ └── autoheight.js │ │ │ │ ├── baidumap/ │ │ │ │ │ ├── baidumap.js │ │ │ │ │ ├── index.html │ │ │ │ │ └── map.html │ │ │ │ ├── clearhtml/ │ │ │ │ │ └── clearhtml.js │ │ │ │ ├── code/ │ │ │ │ │ ├── code.js │ │ │ │ │ ├── prettify.css │ │ │ │ │ └── prettify.js │ │ │ │ ├── emoticons/ │ │ │ │ │ └── emoticons.js │ │ │ │ ├── filemanager/ │ │ │ │ │ └── filemanager.js │ │ │ │ ├── fixtoolbar/ │ │ │ │ │ └── fixtoolbar.js │ │ │ │ ├── flash/ │ │ │ │ │ └── flash.js │ │ │ │ ├── image/ │ │ │ │ │ └── image.js │ │ │ │ ├── insertfile/ │ │ │ │ │ └── insertfile.js │ │ │ │ ├── lineheight/ │ │ │ │ │ └── lineheight.js │ │ │ │ ├── link/ │ │ │ │ │ └── link.js │ │ │ │ ├── map/ │ │ │ │ │ ├── map.html │ │ │ │ │ └── map.js │ │ │ │ ├── media/ │ │ │ │ │ └── media.js │ │ │ │ ├── multiimage/ │ │ │ │ │ ├── images/ │ │ │ │ │ │ └── swfupload.swf │ │ │ │ │ └── multiimage.js │ │ │ │ ├── pagebreak/ │ │ │ │ │ └── pagebreak.js │ │ │ │ ├── plainpaste/ │ │ │ │ │ └── plainpaste.js │ │ │ │ ├── preview/ │ │ │ │ │ └── preview.js │ │ │ │ ├── quickformat/ │ │ │ │ │ └── quickformat.js │ │ │ │ ├── table/ │ │ │ │ │ └── table.js │ │ │ │ ├── template/ │ │ │ │ │ ├── html/ │ │ │ │ │ │ ├── 1.html │ │ │ │ │ │ ├── 2.html │ │ │ │ │ │ └── 3.html │ │ │ │ │ └── template.js │ │ │ │ └── wordpaste/ │ │ │ │ └── wordpaste.js │ │ │ └── themes/ │ │ │ ├── default/ │ │ │ │ └── default.css │ │ │ ├── qq/ │ │ │ │ └── qq.css │ │ │ └── simple/ │ │ │ └── simple.css │ │ ├── layer/ │ │ │ └── 2.4/ │ │ │ ├── layer.js │ │ │ └── skin/ │ │ │ └── layer.css │ │ ├── laypage/ │ │ │ └── 1.2/ │ │ │ ├── laypage.js │ │ │ └── skin/ │ │ │ └── laypage.css │ │ ├── lightbox2/ │ │ │ └── 2.8.1/ │ │ │ ├── css/ │ │ │ │ └── lightbox.css │ │ │ ├── examples.html │ │ │ └── js/ │ │ │ ├── lightbox-plus-jquery.js │ │ │ └── lightbox.js │ │ ├── login/ │ │ │ ├── font-awesome.css │ │ │ └── style.css │ │ ├── nprogress/ │ │ │ └── 0.2.0/ │ │ │ ├── nprogress.css │ │ │ └── nprogress.js │ │ ├── province/ │ │ │ ├── distpicker.data.js │ │ │ └── distpicker.js │ │ ├── squid.js │ │ ├── swfobject.js │ │ ├── webuploader/ │ │ │ └── 0.1.5/ │ │ │ ├── README.md │ │ │ ├── Uploader.swf │ │ │ ├── cropper/ │ │ │ │ ├── cropper.js │ │ │ │ ├── index.html │ │ │ │ └── uploader.js │ │ │ ├── expressInstall.swf │ │ │ ├── image-upload/ │ │ │ │ ├── index.html │ │ │ │ └── upload.js │ │ │ ├── images/ │ │ │ │ ├── icons.psd │ │ │ │ └── progress.psd │ │ │ ├── md5-demo/ │ │ │ │ ├── index.html │ │ │ │ └── script.js │ │ │ ├── requirejs/ │ │ │ │ ├── app.js │ │ │ │ ├── index.html │ │ │ │ └── require.js │ │ │ ├── server/ │ │ │ │ ├── crossdomain.xml │ │ │ │ ├── fileupload.php │ │ │ │ ├── fileupload2.php │ │ │ │ └── preview.php │ │ │ ├── webuploader.css │ │ │ ├── webuploader.custom.js │ │ │ ├── webuploader.fis.js │ │ │ ├── webuploader.flashonly.js │ │ │ ├── webuploader.html5only.js │ │ │ ├── webuploader.js │ │ │ ├── webuploader.noimage.js │ │ │ ├── webuploader.nolog.js │ │ │ └── webuploader.withoutimage.js │ │ └── zTree/ │ │ └── v3/ │ │ ├── api/ │ │ │ ├── API_cn.html │ │ │ ├── API_en.html │ │ │ ├── apiCss/ │ │ │ │ ├── api.js │ │ │ │ ├── common.css │ │ │ │ ├── common_ie6.css │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ └── zTreeStyleForApi.css │ │ │ ├── cn/ │ │ │ │ ├── fn.zTree._z.html │ │ │ │ ├── fn.zTree.destroy.html │ │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ │ ├── fn.zTree.init.html │ │ │ │ ├── setting.async.autoParam.html │ │ │ │ ├── setting.async.contentType.html │ │ │ │ ├── setting.async.dataFilter.html │ │ │ │ ├── setting.async.dataType.html │ │ │ │ ├── setting.async.enable.html │ │ │ │ ├── setting.async.otherParam.html │ │ │ │ ├── setting.async.type.html │ │ │ │ ├── setting.async.url.html │ │ │ │ ├── setting.callback.beforeAsync.html │ │ │ │ ├── setting.callback.beforeCheck.html │ │ │ │ ├── setting.callback.beforeClick.html │ │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ │ ├── setting.callback.beforeDrag.html │ │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ │ ├── setting.callback.beforeDrop.html │ │ │ │ ├── setting.callback.beforeEditName.html │ │ │ │ ├── setting.callback.beforeExpand.html │ │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ │ ├── setting.callback.beforeRemove.html │ │ │ │ ├── setting.callback.beforeRename.html │ │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ │ ├── setting.callback.onAsyncError.html │ │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ │ ├── setting.callback.onCheck.html │ │ │ │ ├── setting.callback.onClick.html │ │ │ │ ├── setting.callback.onCollapse.html │ │ │ │ ├── setting.callback.onDblClick.html │ │ │ │ ├── setting.callback.onDrag.html │ │ │ │ ├── setting.callback.onDragMove.html │ │ │ │ ├── setting.callback.onDrop.html │ │ │ │ ├── setting.callback.onExpand.html │ │ │ │ ├── setting.callback.onMouseDown.html │ │ │ │ ├── setting.callback.onMouseUp.html │ │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ │ ├── setting.callback.onRemove.html │ │ │ │ ├── setting.callback.onRename.html │ │ │ │ ├── setting.callback.onRightClick.html │ │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ │ ├── setting.check.chkStyle.html │ │ │ │ ├── setting.check.chkboxType.html │ │ │ │ ├── setting.check.enable.html │ │ │ │ ├── setting.check.nocheckInherit.html │ │ │ │ ├── setting.check.radioType.html │ │ │ │ ├── setting.data.keep.leaf.html │ │ │ │ ├── setting.data.keep.parent.html │ │ │ │ ├── setting.data.key.checked.html │ │ │ │ ├── setting.data.key.children.html │ │ │ │ ├── setting.data.key.name.html │ │ │ │ ├── setting.data.key.title.html │ │ │ │ ├── setting.data.key.url.html │ │ │ │ ├── setting.data.simpleData.enable.html │ │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ │ ├── setting.edit.drag.inner.html │ │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ │ ├── setting.edit.drag.isMove.html │ │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ │ ├── setting.edit.drag.next.html │ │ │ │ ├── setting.edit.drag.prev.html │ │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ │ ├── setting.edit.enable.html │ │ │ │ ├── setting.edit.removeTitle.html │ │ │ │ ├── setting.edit.renameTitle.html │ │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ │ ├── setting.treeId.html │ │ │ │ ├── setting.treeObj.html │ │ │ │ ├── setting.view.addDiyDom.html │ │ │ │ ├── setting.view.addHoverDom.html │ │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ │ ├── setting.view.dblClickExpand.html │ │ │ │ ├── setting.view.expandSpeed.html │ │ │ │ ├── setting.view.fontCss.html │ │ │ │ ├── setting.view.nameIsHTML.html │ │ │ │ ├── setting.view.removeHoverDom.html │ │ │ │ ├── setting.view.selectedMulti.html │ │ │ │ ├── setting.view.showIcon.html │ │ │ │ ├── setting.view.showLine.html │ │ │ │ ├── setting.view.showTitle.html │ │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ │ ├── treeNode.check_Child_State.html │ │ │ │ ├── treeNode.check_Focus.html │ │ │ │ ├── treeNode.checked.html │ │ │ │ ├── treeNode.checkedOld.html │ │ │ │ ├── treeNode.children.html │ │ │ │ ├── treeNode.chkDisabled.html │ │ │ │ ├── treeNode.click.html │ │ │ │ ├── treeNode.diy.html │ │ │ │ ├── treeNode.editNameFlag.html │ │ │ │ ├── treeNode.getCheckStatus.html │ │ │ │ ├── treeNode.getNextNode.html │ │ │ │ ├── treeNode.getParentNode.html │ │ │ │ ├── treeNode.getPreNode.html │ │ │ │ ├── treeNode.halfCheck.html │ │ │ │ ├── treeNode.icon.html │ │ │ │ ├── treeNode.iconClose.html │ │ │ │ ├── treeNode.iconOpen.html │ │ │ │ ├── treeNode.iconSkin.html │ │ │ │ ├── treeNode.isAjaxing.html │ │ │ │ ├── treeNode.isFirstNode.html │ │ │ │ ├── treeNode.isHidden.html │ │ │ │ ├── treeNode.isHover.html │ │ │ │ ├── treeNode.isLastNode.html │ │ │ │ ├── treeNode.isParent.html │ │ │ │ ├── treeNode.level.html │ │ │ │ ├── treeNode.name.html │ │ │ │ ├── treeNode.nocheck.html │ │ │ │ ├── treeNode.open.html │ │ │ │ ├── treeNode.parentTId.html │ │ │ │ ├── treeNode.tId.html │ │ │ │ ├── treeNode.target.html │ │ │ │ ├── treeNode.url.html │ │ │ │ ├── treeNode.zAsync.html │ │ │ │ ├── zTreeObj.addNodes.html │ │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ │ ├── zTreeObj.checkNode.html │ │ │ │ ├── zTreeObj.copyNode.html │ │ │ │ ├── zTreeObj.destroy.html │ │ │ │ ├── zTreeObj.editName.html │ │ │ │ ├── zTreeObj.expandAll.html │ │ │ │ ├── zTreeObj.expandNode.html │ │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ │ ├── zTreeObj.getNodes.html │ │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ │ ├── zTreeObj.hideNode.html │ │ │ │ ├── zTreeObj.hideNodes.html │ │ │ │ ├── zTreeObj.moveNode.html │ │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ │ ├── zTreeObj.refresh.html │ │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ │ ├── zTreeObj.removeNode.html │ │ │ │ ├── zTreeObj.selectNode.html │ │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ │ ├── zTreeObj.setEditable.html │ │ │ │ ├── zTreeObj.setting.html │ │ │ │ ├── zTreeObj.showNode.html │ │ │ │ ├── zTreeObj.showNodes.html │ │ │ │ ├── zTreeObj.transformToArray.html │ │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ │ └── zTreeObj.updateNode.html │ │ │ └── en/ │ │ │ ├── fn.zTree._z.html │ │ │ ├── fn.zTree.destroy.html │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ ├── fn.zTree.init.html │ │ │ ├── setting.async.autoParam.html │ │ │ ├── setting.async.contentType.html │ │ │ ├── setting.async.dataFilter.html │ │ │ ├── setting.async.dataType.html │ │ │ ├── setting.async.enable.html │ │ │ ├── setting.async.otherParam.html │ │ │ ├── setting.async.type.html │ │ │ ├── setting.async.url.html │ │ │ ├── setting.callback.beforeAsync.html │ │ │ ├── setting.callback.beforeCheck.html │ │ │ ├── setting.callback.beforeClick.html │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ ├── setting.callback.beforeDrag.html │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ ├── setting.callback.beforeDrop.html │ │ │ ├── setting.callback.beforeEditName.html │ │ │ ├── setting.callback.beforeExpand.html │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ ├── setting.callback.beforeRemove.html │ │ │ ├── setting.callback.beforeRename.html │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ ├── setting.callback.onAsyncError.html │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ ├── setting.callback.onCheck.html │ │ │ ├── setting.callback.onClick.html │ │ │ ├── setting.callback.onCollapse.html │ │ │ ├── setting.callback.onDblClick.html │ │ │ ├── setting.callback.onDrag.html │ │ │ ├── setting.callback.onDragMove.html │ │ │ ├── setting.callback.onDrop.html │ │ │ ├── setting.callback.onExpand.html │ │ │ ├── setting.callback.onMouseDown.html │ │ │ ├── setting.callback.onMouseUp.html │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ ├── setting.callback.onRemove.html │ │ │ ├── setting.callback.onRename.html │ │ │ ├── setting.callback.onRightClick.html │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ ├── setting.check.chkStyle.html │ │ │ ├── setting.check.chkboxType.html │ │ │ ├── setting.check.enable.html │ │ │ ├── setting.check.nocheckInherit.html │ │ │ ├── setting.check.radioType.html │ │ │ ├── setting.data.keep.leaf.html │ │ │ ├── setting.data.keep.parent.html │ │ │ ├── setting.data.key.checked.html │ │ │ ├── setting.data.key.children.html │ │ │ ├── setting.data.key.name.html │ │ │ ├── setting.data.key.title.html │ │ │ ├── setting.data.key.url.html │ │ │ ├── setting.data.simpleData.enable.html │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ ├── setting.edit.drag.inner.html │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ ├── setting.edit.drag.isMove.html │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ ├── setting.edit.drag.next.html │ │ │ ├── setting.edit.drag.prev.html │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ ├── setting.edit.enable.html │ │ │ ├── setting.edit.removeTitle.html │ │ │ ├── setting.edit.renameTitle.html │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ ├── setting.treeId.html │ │ │ ├── setting.treeObj.html │ │ │ ├── setting.view.addDiyDom.html │ │ │ ├── setting.view.addHoverDom.html │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ ├── setting.view.dblClickExpand.html │ │ │ ├── setting.view.expandSpeed.html │ │ │ ├── setting.view.fontCss.html │ │ │ ├── setting.view.nameIsHTML.html │ │ │ ├── setting.view.removeHoverDom.html │ │ │ ├── setting.view.selectedMulti.html │ │ │ ├── setting.view.showIcon.html │ │ │ ├── setting.view.showLine.html │ │ │ ├── setting.view.showTitle.html │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ ├── treeNode.check_Child_State.html │ │ │ ├── treeNode.check_Focus.html │ │ │ ├── treeNode.checked.html │ │ │ ├── treeNode.checkedOld.html │ │ │ ├── treeNode.children.html │ │ │ ├── treeNode.chkDisabled.html │ │ │ ├── treeNode.click.html │ │ │ ├── treeNode.diy.html │ │ │ ├── treeNode.editNameFlag.html │ │ │ ├── treeNode.getCheckStatus.html │ │ │ ├── treeNode.getNextNode.html │ │ │ ├── treeNode.getParentNode.html │ │ │ ├── treeNode.getPreNode.html │ │ │ ├── treeNode.halfCheck.html │ │ │ ├── treeNode.icon.html │ │ │ ├── treeNode.iconClose.html │ │ │ ├── treeNode.iconOpen.html │ │ │ ├── treeNode.iconSkin.html │ │ │ ├── treeNode.isAjaxing.html │ │ │ ├── treeNode.isFirstNode.html │ │ │ ├── treeNode.isHidden.html │ │ │ ├── treeNode.isHover.html │ │ │ ├── treeNode.isLastNode.html │ │ │ ├── treeNode.isParent.html │ │ │ ├── treeNode.level.html │ │ │ ├── treeNode.name.html │ │ │ ├── treeNode.nocheck.html │ │ │ ├── treeNode.open.html │ │ │ ├── treeNode.parentTId.html │ │ │ ├── treeNode.tId.html │ │ │ ├── treeNode.target.html │ │ │ ├── treeNode.url.html │ │ │ ├── treeNode.zAsync.html │ │ │ ├── zTreeObj.addNodes.html │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ ├── zTreeObj.checkNode.html │ │ │ ├── zTreeObj.copyNode.html │ │ │ ├── zTreeObj.destroy.html │ │ │ ├── zTreeObj.editName.html │ │ │ ├── zTreeObj.expandAll.html │ │ │ ├── zTreeObj.expandNode.html │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ ├── zTreeObj.getNodes.html │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ ├── zTreeObj.hideNode.html │ │ │ ├── zTreeObj.hideNodes.html │ │ │ ├── zTreeObj.moveNode.html │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ ├── zTreeObj.refresh.html │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ ├── zTreeObj.removeNode.html │ │ │ ├── zTreeObj.selectNode.html │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ ├── zTreeObj.setEditable.html │ │ │ ├── zTreeObj.setting.html │ │ │ ├── zTreeObj.showNode.html │ │ │ ├── zTreeObj.showNodes.html │ │ │ ├── zTreeObj.transformToArray.html │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ └── zTreeObj.updateNode.html │ │ ├── css/ │ │ │ ├── metroStyle/ │ │ │ │ └── metroStyle.css │ │ │ └── zTreeStyle/ │ │ │ └── zTreeStyle.css │ │ └── js/ │ │ ├── jquery.ztree.all-3.5.js │ │ ├── jquery.ztree.core-3.5.js │ │ ├── jquery.ztree.excheck-3.5.js │ │ ├── jquery.ztree.exedit-3.5.js │ │ ├── jquery.ztree.exedit.js │ │ └── jquery.ztree.exhide-3.5.js │ ├── plugins/ │ │ ├── ajaxfileupload/ │ │ │ └── ajaxfileupload.js │ │ ├── dropzone/ │ │ │ ├── basic.css │ │ │ ├── dropzone-amd-module.js │ │ │ ├── dropzone.css │ │ │ ├── dropzone.js │ │ │ └── readme.md │ │ ├── iCheck/ │ │ │ ├── all.css │ │ │ ├── flat/ │ │ │ │ ├── _all.css │ │ │ │ ├── aero.css │ │ │ │ ├── blue.css │ │ │ │ ├── flat.css │ │ │ │ ├── green.css │ │ │ │ ├── grey.css │ │ │ │ ├── orange.css │ │ │ │ ├── pink.css │ │ │ │ ├── purple.css │ │ │ │ ├── red.css │ │ │ │ └── yellow.css │ │ │ ├── futurico/ │ │ │ │ └── futurico.css │ │ │ ├── icheck.js │ │ │ ├── line/ │ │ │ │ ├── _all.css │ │ │ │ ├── aero.css │ │ │ │ ├── blue.css │ │ │ │ ├── green.css │ │ │ │ ├── grey.css │ │ │ │ ├── line.css │ │ │ │ ├── orange.css │ │ │ │ ├── pink.css │ │ │ │ ├── purple.css │ │ │ │ ├── red.css │ │ │ │ └── yellow.css │ │ │ ├── minimal/ │ │ │ │ ├── _all.css │ │ │ │ ├── aero.css │ │ │ │ ├── blue.css │ │ │ │ ├── green.css │ │ │ │ ├── grey.css │ │ │ │ ├── minimal.css │ │ │ │ ├── orange.css │ │ │ │ ├── pink.css │ │ │ │ ├── purple.css │ │ │ │ ├── red.css │ │ │ │ └── yellow.css │ │ │ ├── polaris/ │ │ │ │ └── polaris.css │ │ │ └── square/ │ │ │ ├── _all.css │ │ │ ├── aero.css │ │ │ ├── blue.css │ │ │ ├── green.css │ │ │ ├── grey.css │ │ │ ├── orange.css │ │ │ ├── pink.css │ │ │ ├── purple.css │ │ │ ├── red.css │ │ │ ├── square.css │ │ │ └── yellow.css │ │ ├── treeTable/ │ │ │ ├── demo/ │ │ │ │ ├── style/ │ │ │ │ │ └── demo.css │ │ │ │ └── treeTable.html │ │ │ ├── jquery.treeTable.js │ │ │ └── themes/ │ │ │ ├── default/ │ │ │ │ └── treeTable.css │ │ │ └── vsStyle/ │ │ │ ├── allbgs.psd │ │ │ └── treeTable.css │ │ └── wangEditor/ │ │ ├── wangEditor-fullscreen-plugin.css │ │ ├── wangEditor-fullscreen-plugin.js │ │ ├── wangEditor.css │ │ └── wangEditor.js │ └── static/ │ ├── h-ui/ │ │ ├── css/ │ │ │ ├── H-ui.css │ │ │ ├── H-ui.ie.css │ │ │ └── H-ui.reset.css │ │ └── js/ │ │ └── H-ui.js │ ├── h-ui.admin/ │ │ ├── css/ │ │ │ ├── H-ui.admin.css │ │ │ ├── H-ui.login.css │ │ │ └── style.css │ │ ├── js/ │ │ │ ├── H-ui.admin.js │ │ │ └── de_DE.txt │ │ └── skin/ │ │ ├── black/ │ │ │ └── skin.css │ │ ├── default/ │ │ │ └── skin.css │ │ ├── green/ │ │ │ └── skin.css │ │ ├── orange/ │ │ │ └── skin.css │ │ ├── red/ │ │ │ └── skin.css │ │ └── yellow/ │ │ └── skin.css │ └── swagger/ │ ├── css/ │ │ ├── print.css │ │ ├── reset.css │ │ ├── screen.css │ │ ├── style.css │ │ └── typography.css │ ├── index.html │ ├── lang/ │ │ ├── el.js │ │ ├── en.js │ │ ├── es.js │ │ ├── fr.js │ │ ├── geo.js │ │ ├── it.js │ │ ├── ja.js │ │ ├── ko-kr.js │ │ ├── pl.js │ │ ├── pt.js │ │ ├── ru.js │ │ ├── tr.js │ │ ├── translator.js │ │ └── zh-cn.js │ ├── lib/ │ │ ├── backbone-min.js │ │ ├── es5-shim.js │ │ ├── handlebars-4.0.5.js │ │ ├── highlight.9.1.0.pack.js │ │ ├── highlight.9.1.0.pack_extended.js │ │ ├── marked.js │ │ ├── object-assign-pollyfill.js │ │ └── swagger-oauth.js │ ├── o2c.html │ └── swagger-ui.js ├── ymall-web-api/ │ ├── pom.xml │ ├── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── yuu/ │ │ │ └── ymall/ │ │ │ └── web/ │ │ │ └── api/ │ │ │ ├── common/ │ │ │ │ ├── config/ │ │ │ │ │ ├── AlipayConfig.java │ │ │ │ │ ├── SwaggerConfiguration.java │ │ │ │ │ └── ThymeleafConfig.java │ │ │ │ └── utils/ │ │ │ │ ├── EmailUtil.java │ │ │ │ ├── IPInfoUtil.java │ │ │ │ ├── ObjectUtil.java │ │ │ │ └── QiniuUtil.java │ │ │ ├── controller/ │ │ │ │ ├── CartController.java │ │ │ │ ├── GoodsController.java │ │ │ │ ├── MemberController.java │ │ │ │ └── OrderController.java │ │ │ ├── domain/ │ │ │ │ └── ESItem.java │ │ │ ├── dto/ │ │ │ │ ├── Cart.java │ │ │ │ ├── CartProduct.java │ │ │ │ ├── CateProductsResult.java │ │ │ │ ├── CategoryProductPageInfo.java │ │ │ │ ├── EmailCode.java │ │ │ │ ├── Member.java │ │ │ │ ├── MemberLogin.java │ │ │ │ ├── Order.java │ │ │ │ ├── OrderInfo.java │ │ │ │ ├── OrderPay.java │ │ │ │ ├── PageOrder.java │ │ │ │ ├── ProductDet.java │ │ │ │ ├── TbCate.java │ │ │ │ ├── TbPanelContentDto.java │ │ │ │ ├── TbPanelDto.java │ │ │ │ └── UploadImg.java │ │ │ ├── job/ │ │ │ │ └── OrderCloseJob.java │ │ │ ├── mapper/ │ │ │ │ ├── TbAddressMapper.java │ │ │ │ ├── TbExpressMapper.java │ │ │ │ ├── TbItemCatMapper.java │ │ │ │ ├── TbItemDescMapper.java │ │ │ │ ├── TbItemMapper.java │ │ │ │ ├── TbMemberMapper.java │ │ │ │ ├── TbOrderItemMapper.java │ │ │ │ ├── TbOrderMapper.java │ │ │ │ ├── TbOrderShippingMapper.java │ │ │ │ ├── TbPanelContentMapper.java │ │ │ │ ├── TbPanelMapper.java │ │ │ │ └── TbUserMapper.java │ │ │ ├── repositories/ │ │ │ │ └── ItemRepository.java │ │ │ └── service/ │ │ │ ├── CartService.java │ │ │ ├── ContentService.java │ │ │ ├── ItemCatService.java │ │ │ ├── MemberService.java │ │ │ ├── OrderService.java │ │ │ ├── ProductService.java │ │ │ └── impl/ │ │ │ ├── CartServiceImpl.java │ │ │ ├── ContentServiceImpl.java │ │ │ ├── ItemCatServiceImpl.java │ │ │ ├── MemberServieImpl.java │ │ │ ├── OrderServiceImpl.java │ │ │ └── ProductServiceImpl.java │ │ ├── resources/ │ │ │ ├── generatorConfig.xml │ │ │ ├── log4j.properties │ │ │ ├── log4j2.properties │ │ │ ├── mapper/ │ │ │ │ ├── TbAddressMapper.xml │ │ │ │ ├── TbExpressMapper.xml │ │ │ │ ├── TbItemCatMapper.xml │ │ │ │ ├── TbItemDescMapper.xml │ │ │ │ ├── TbItemMapper.xml │ │ │ │ ├── TbMemberMapper.xml │ │ │ │ ├── TbOrderItemMapper.xml │ │ │ │ ├── TbOrderMapper.xml │ │ │ │ ├── TbOrderShippingMapper.xml │ │ │ │ ├── TbPanelContentMapper.xml │ │ │ │ ├── TbPanelMapper.xml │ │ │ │ └── TbUserMapper.xml │ │ │ ├── mybatis-config.xml │ │ │ ├── resource.properties │ │ │ ├── spring-context-druid.xml │ │ │ ├── spring-context-elasticsearch.xml │ │ │ ├── spring-context-mybatis.xml │ │ │ ├── spring-context-redis.xml │ │ │ ├── spring-context.xml │ │ │ ├── spring-mvc.xml │ │ │ ├── ymall.properties │ │ │ └── zfbinfo.properties │ │ └── webapp/ │ │ └── WEB-INF/ │ │ ├── templates/ │ │ │ ├── reset-pass.html │ │ │ └── update-email.html │ │ └── web.xml │ └── test/ │ └── com/ │ └── yuu/ │ └── ymall/ │ └── web/ │ └── api/ │ └── test/ │ └── EsTest.java └── ymall-web-ui/ ├── .babelrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .postcssrc.js ├── build/ │ ├── build.js │ ├── check-versions.js │ ├── dev-client.js │ ├── dev-server.js │ ├── utils.js │ ├── vue-loader.conf.js │ ├── webpack.base.conf.js │ ├── webpack.dev.conf.js │ └── webpack.prod.conf.js ├── config/ │ ├── dev.env.js │ ├── index.js │ └── prod.env.js ├── index.html ├── package.json ├── src/ │ ├── App.vue │ ├── api/ │ │ ├── cart.js │ │ ├── goods.js │ │ ├── index.js │ │ ├── member.js │ │ ├── order.js │ │ └── public.js │ ├── assets/ │ │ ├── icon/ │ │ │ └── iconfont.css │ │ └── style/ │ │ ├── common.scss │ │ ├── index.scss │ │ ├── mixin.scss │ │ ├── reset.scss │ │ └── theme.scss │ ├── common/ │ │ ├── footer.vue │ │ └── header.vue │ ├── components/ │ │ ├── YButton.vue │ │ ├── buynum.vue │ │ ├── countDown.vue │ │ ├── mallGoods.vue │ │ ├── popup.vue │ │ ├── product.vue │ │ └── shelf.vue │ ├── main.js │ ├── page/ │ │ ├── Cart/ │ │ │ └── cart.vue │ │ ├── Checkout/ │ │ │ └── checkout.vue │ │ ├── Goods/ │ │ │ ├── goods.vue │ │ │ └── goodsDetails.vue │ │ ├── Home/ │ │ │ └── home.vue │ │ ├── Login/ │ │ │ ├── forgetPassword.vue │ │ │ ├── login.vue │ │ │ └── register.vue │ │ ├── Order/ │ │ │ ├── order.vue │ │ │ ├── payment.vue │ │ │ └── paysuccess.vue │ │ ├── Refresh/ │ │ │ └── refreshsearch.vue │ │ ├── Search/ │ │ │ └── search.vue │ │ ├── User/ │ │ │ ├── children/ │ │ │ │ ├── addressList.vue │ │ │ │ ├── information.vue │ │ │ │ ├── order.vue │ │ │ │ └── orderDetail.vue │ │ │ └── user.vue │ │ └── index.vue │ ├── router/ │ │ └── index.js │ ├── store/ │ │ ├── action.js │ │ ├── index.js │ │ ├── mutation-types.js │ │ └── mutations.js │ └── utils/ │ └── storage.js └── static/ ├── .gitkeep ├── geetest/ │ └── gt.js ├── images/ │ └── global-logo-red@2x.psd └── js/ ├── 3.c565d4ee71bdb3ac0105.js ├── 7.0814cc986a8375eb2381.js └── app.e28b119acf7c187f0fbf.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitattributes ================================================ # Windows-specific files that require CRLF: *.bat eol=crlf *.txt eol=crlf # Unix-specific files that require LF: *.java eol=lf *.sh eol=lf *.js linguist-language=Java ================================================ FILE: .gitignore ================================================ target/ !.mvn/wrapper/maven-wrapper.jar ### STS ### .apt_generated .classpath .factorypath .project .settings .springBeans ### IntelliJ IDEA ### .idea/* *.iws *.iml *.ipr ### JRebel ### rebel.xml ### MAC ### .DS_Store ### Other ### logs/ temp/ /.idea/ ================================================ FILE: README.md ================================================ ## YMall ## 开发环境 - 操作系统:Windows 10 Enterprise - 开发工具:Intellij IDEA - 数据库:MySQL 8.0.13 - Java SDK:Oracle JDK 1.8.152 ## 项目管理工具 - 项目构建:Maven - 代码管理:Git ## 后台主要技术栈 - 核心框架:Spring + Spring MVC + MyBatis - 数据库连接池:Alibaba Druid - 数据库缓存:Redis - 接口文档引擎:Swagger2 RESTful 风格 API 文档生成 - 全文检索引擎:Elasticsearch - 系统任务调度:Quartz ## 前后分离 - 前端框架:NodeJS + Vue + Axios - 前端模板:ElementUI ## 项目截图 ### YMall 商城前台 - 首页 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/首页.png) ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/首页-1.png) ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/首页-2.png) - 分类商品页 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/分类商品页.png) - 商品详情页 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/商品详情页-1.png) ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/商品详情页-2.png) - 购物车 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/购物车.png) - 下单 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/下单-1.png) ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/下单-2.png) - 支付 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/支付-1.png) ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/支付-2.png) - 会员中心-我的订单 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/会员中心-1.png) ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/会员中心-1-1.png) - 会员中心-账号资料 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/会员中心-2.png) - 会员中心-修改地址 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/会员中心-3.png) - 注册 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/注册.png) - 登录 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/登录.png) - 忘记密码 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/忘记密码.png) ### YMall 商城后台 - 首页 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/后台首页.png) ## 项目部署 ### 1. 运行项目所需环境 - JDK 1.8 - IDEA - MySQL 5.5 以上 - Tomcat 8 - Elasticsearch 5.6 - Redis 确保你已经安装上述环境,以上安装教程可自行百度...,安装记得修改 `ymall-web-api` 和 `ymall-web-admin` 的 Redis 和 Elasticsearch 的连接地址 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_2020-09-06_13-13-20.png) - 还需要七牛云的图片服务器和阿里云沙箱支付的密钥,请自行申请 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_2020-09-06_13-51-23.png) ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_2020-09-06_13-51-45.png) ### 2. 导入项目 - `IDEA` -> `open` ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113094747.png) - 手动安装 `alipay` 依赖到本地仓库 因为 Mavan 中央仓库没有 alipay 的依赖所以需要手动安装依赖本地仓库,`alipay` 的 jar 文件在 `ymall-dependencies` 下的 `lib` 目录 在 jar 包的目录,执行 Maven 安装依赖的命令: ```java mvn install:install-file -DgroupId=com.alipay -DartifactId=alipay-trade-sdk -Dversion=20161215 -Dpackaging=jar -Dfile=alipay-trade-sdk-20161215.jar ``` - 刷新依赖 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113095010.png) ### 3. 导入 SQL 文件 sql 文件在 `sql\ymall.sql` ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113103213.png) ### 4. 部署接口项目 由于前台使用的是前后分离,所以接口项目是给前台 Vue 项目使用的 - 配置 `Tomcat` ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113103534.png) ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113103657.png) - 选择文件部署 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113104301.png) - 配置端口号 `9090` JMX port `1100` ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113104354.png) - 运行 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113104506.png) ### 5. 部署后台项目 后台项目暂时为 SSM + Jsp 项目,后期可能会重构为 VUE 项目 部署方式与接口项目一致,只需要改端口号和 JMX port 即可 ![](https://yuu-blog.oss-cn-shenzhen.aliyuncs.com/Yuu_20191113104946.png) ### 6. 启动前台 vue 项目 - 确保已安装 `node.js` - `npm install` 安装依赖 - `npm install node-sass` 安装 sass - `npm run dev` 运行项目 ================================================ FILE: pom.xml ================================================ 4.0.0 com.yuu ymall 1.0.0-SNAPSHOT pom ymall-dependencies ymall-commons ymall-domain ymall-web-admin ymall-web-api ================================================ FILE: sql/ymall.sql ================================================ /* SQLyog Ultimate v12.5.0 (64 bit) MySQL - 5.5.60 : Database - ymall ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; CREATE DATABASE /*!32312 IF NOT EXISTS*/`ymall` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `ymall`; /*Table structure for table `tb_address` */ DROP TABLE IF EXISTS `tb_address`; CREATE TABLE `tb_address` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '地址编号', `user_id` bigint(20) DEFAULT NULL COMMENT '会员编号', `user_name` varchar(255) DEFAULT NULL COMMENT '名称', `tel` varchar(255) DEFAULT NULL COMMENT '电话', `street_name` varchar(255) DEFAULT NULL COMMENT '地址详细信息', `is_default` tinyint(1) DEFAULT NULL COMMENT '是否为默认地址', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; /*Data for the table `tb_address` */ insert into `tb_address`(`id`,`user_id`,`user_name`,`tel`,`street_name`,`is_default`) values (14,78,'Yuu','13055206361','福建省厦门市集美区集美大学诚毅学院',0), (15,78,'杨雨衡','13055206361','福建省厦门市集美区集美大学诚毅学院',1); /*Table structure for table `tb_express` */ DROP TABLE IF EXISTS `tb_express`; CREATE TABLE `tb_express` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '快递编号', `express_name` varchar(255) DEFAULT NULL COMMENT '快递名称', `sort_order` int(11) DEFAULT NULL COMMENT '排序值', `created` datetime DEFAULT NULL COMMENT '创建时间', `updated` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='商品描述表'; /*Data for the table `tb_express` */ insert into `tb_express`(`id`,`express_name`,`sort_order`,`created`,`updated`) values (4,'顺丰快递',1,'2019-07-10 11:05:50','2019-07-10 11:05:50'), (5,'中通快递',2,'2019-07-10 11:05:58','2019-07-10 11:05:58'), (6,'韵达快递',3,'2019-07-10 11:06:05','2019-07-10 11:06:05'), (7,'申通快递',4,'2019-07-10 11:06:15','2019-07-10 11:06:15'), (8,'Y速运',0,'2019-07-10 11:06:26','2019-07-10 11:06:26'); /*Table structure for table `tb_item` */ DROP TABLE IF EXISTS `tb_item`; CREATE TABLE `tb_item` ( `id` bigint(20) NOT NULL COMMENT '商品编号', `title` varchar(100) DEFAULT NULL COMMENT '商品标题', `sell_point` varchar(100) DEFAULT NULL COMMENT '商品卖点', `price` decimal(10,2) DEFAULT '0.00' COMMENT '商品价格', `num` int(11) DEFAULT NULL COMMENT '库存数量', `limit_num` int(11) DEFAULT NULL COMMENT '售卖数量限制', `image` varchar(2000) DEFAULT NULL COMMENT '商品图片', `cid` bigint(11) DEFAULT NULL COMMENT '所属分类', `status` int(1) DEFAULT '1' COMMENT '商品状态 1正常 0下架', `created` datetime DEFAULT NULL COMMENT '创建时间', `updated` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`), KEY `cid` (`cid`), KEY `status` (`status`), KEY `updated` (`updated`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品表'; /*Data for the table `tb_item` */ insert into `tb_item`(`id`,`title`,`sell_point`,`price`,`num`,`limit_num`,`image`,`cid`,`status`,`created`,`updated`) values (156268231822963,'HUAWEI P30 Pro 麒麟980 超感光徕卡四摄 屏内指纹 双景录像 ','8GB+128GB 全网通版(天空之境)',5488.00,999,10,'http://pub7lsomw.bkt.clouddn.com/FpKQOpEUgDUuda0qObUovy454Ubd,http://pub7lsomw.bkt.clouddn.com/FkdP5QRm_0H3abio19Aie39RRF9j,http://pub7lsomw.bkt.clouddn.com/Fux2wRIMI1HDFm42BKro3J5V1-8p,http://pub7lsomw.bkt.clouddn.com/Fqg2ASg782ZQOlwZKC2z_-ukbNYD,http://pub7lsomw.bkt.clouddn.com/FptgIlZ-ukR4_XAxl5Pg5iUaDw6T',1235,1,'2019-07-09 22:25:18','2019-07-09 22:48:06'), (156268365230771,'HUAWEI nova 5 8GB+128GB 全网通版','【nova 5新品将于7.13日开始预订,7.20日首销,敬请期待】',2799.00,999,5,'http://pub7lsomw.bkt.clouddn.com/FnK_JTCL57pocGQVz-Zp20HGNvqW,http://pub7lsomw.bkt.clouddn.com/Fr_aVXduBnaInGL7s4f-i43vgAiM,http://pub7lsomw.bkt.clouddn.com/Fjt_DKhvAo4Xwj3yNXT7k5LIHOYi,http://pub7lsomw.bkt.clouddn.com/FsHn1FemvV1hGiHyFhPRtcqcSEWa,http://pub7lsomw.bkt.clouddn.com/Fs2_dvgllnhG-4Vr2-dpFO8x371_',1247,1,'2019-07-09 22:47:32','2019-07-09 23:02:50'), (156269705828174,'荣耀Note10 全网通 6GB+64GB 幻影蓝 AMOLED全面屏手机 AI智能 GT游戏加速 双卡双待 长续航','【到手价1899】①限时优惠900元②享3期/6期免息; 麒麟970AI芯片|液冷双Turbo|6.95英寸全面屏',1899.00,999,20,'http://pub7lsomw.bkt.clouddn.com/FvQQ7z7CmNs_RCAW0cundgE6Ho9S,http://pub7lsomw.bkt.clouddn.com/Fl5RdjBWrM2HYgCClA8IMZo9HXq0,http://pub7lsomw.bkt.clouddn.com/Ft9LWvfh6c-VTQe2VX2iDzW_Wno7,http://pub7lsomw.bkt.clouddn.com/FmZY-Du13VkJIC-ul_JHtXRGtVFJ,http://pub7lsomw.bkt.clouddn.com/FmTwXP4qzFIMqzwYYU2XTPGqJdS2',1234,1,'2019-07-10 02:30:58','2019-07-10 02:57:49'), (156269945407026,'荣耀8X Max 骁龙660 7.12英寸高屏占比珍珠屏 5000mAh大电池 全网通 6GB+64GB(魅海蓝)',' 7.12英寸90%屏占比珍珠屏 随身影院 5000mAh大电池',1399.00,998,20,'http://pub7lsomw.bkt.clouddn.com/FtUbjDFl4PJtNwALeVNgve9QcnIv,http://pub7lsomw.bkt.clouddn.com/FhyzRQUYRw6PaV-wE1Cz0vlmkR8s,http://pub7lsomw.bkt.clouddn.com/FsgkuYsYjhVFQ4wyi8DzZSHln27f,http://pub7lsomw.bkt.clouddn.com/FkkXEzlxkGgCPhQnlDEpCQDulQgJ,http://pub7lsomw.bkt.clouddn.com/FnHh-OAB9C9IxjWl75SlhQm3-VTE',1234,1,'2019-07-10 03:10:54','2019-07-10 03:20:31'), (156271863486747,'荣耀10青春版 幻彩渐变 2400万AI自拍 6.21英寸高屏占比珍珠屏 全网通 4GB+64GB(渐变蓝)','优惠300,成交价1099!',1099.00,999,10,'http://pub7lsomw.bkt.clouddn.com/FsD8plGUl9aSSTEobuQsewLd4l8e,http://pub7lsomw.bkt.clouddn.com/FpjsmsV6g0c2h08Azl6-MujgtTFX,http://pub7lsomw.bkt.clouddn.com/FmideoIREC0_50lxsxI7umVYVag6,http://pub7lsomw.bkt.clouddn.com/Fm87xVbflJUQw7c33EiDsfLmjcFD,http://pub7lsomw.bkt.clouddn.com/FgzUwHgH46jz7fxPJKLtpEHvNipZ',1234,1,'2019-07-10 08:30:34','2019-07-10 08:30:34'), (156271954394859,'HUAWEI Mate 20 X 6GB+128GB 全网通版(宝石蓝)','麒麟980新一代人工智能芯片,4000万超大广角徕卡三摄,5000mAh大电池,石墨烯液冷散热技术加持旗舰手机',4099.00,999,10,'http://pub7lsomw.bkt.clouddn.com/FujL3yUs0vkqKYiz70Kewx5Wm6G-,http://pub7lsomw.bkt.clouddn.com/Fj6xJ3l-WqDh-EM6mEBXw9PKJNu-,http://pub7lsomw.bkt.clouddn.com/Ft0mfQuRx8-OK3ON2MFi18XzSP_E,http://pub7lsomw.bkt.clouddn.com/FoKCzHlOBv3PhUqBg5y03ZyEZuT4,http://pub7lsomw.bkt.clouddn.com/FoJpbDfzSNjxJtIBD347z6V0vYXn',1248,1,'2019-07-10 08:45:43','2019-07-10 08:45:43'), (156272085015807,'荣耀Magic2 魔法全视屏 麒麟980AI芯片 屏内指纹 超广角AI三摄 全网通 6GB+128GB 渐变黑','麒麟980 AI处理器,后置2400万 AI三摄,40W安全超级快充。',2499.00,999,10,'http://pub7lsomw.bkt.clouddn.com/FvaioHuROssa58-WubEN6RzsLkMX,http://pub7lsomw.bkt.clouddn.com/Fl2yKYN91x7MYP-1-mMS-zU5ihQK,http://pub7lsomw.bkt.clouddn.com/FjrY2auIZ6F2W3SUBXcKXnd57YAf,http://pub7lsomw.bkt.clouddn.com/Fob962hE38xjhuGuT90OkzNGSkVi,http://pub7lsomw.bkt.clouddn.com/FvnIfbbBJBCTTjEjWljJKUHh-_Dh',1234,1,'2019-07-10 09:07:30','2019-07-10 09:07:30'), (156272096620228,'HUAWEI nova 4 4800万超广角三摄 自拍极点全面屏 高配 8GB+128GB 全网通版(蜜语红·星耀版)',' 6.4英寸极点全面屏,4800万超广角三摄,2500万海报级自拍,AI微塑美颜,来电视频铃声,AI视频专家自动剪辑主角故事。',2799.00,998,10,'http://pub7lsomw.bkt.clouddn.com/Fo2lgi24IsyTcUy8Vzx_6-PHNI33,http://pub7lsomw.bkt.clouddn.com/Fi6ZLAkm362MZvqug0WKpODNvr1d,http://pub7lsomw.bkt.clouddn.com/FviVJduugrDkGigsVP89taEFpKvP,http://pub7lsomw.bkt.clouddn.com/FmHIIRxJnBXkz-EYUM_iYcEjuDig,http://pub7lsomw.bkt.clouddn.com/FjE__GdtP-aEWYKFkrjkttdO0ccY',1247,1,'2019-07-10 09:09:26','2019-07-10 09:09:26'), (156272121662666,'荣耀畅玩8A 6.09英寸珍珠全面屏 震撼大音量 标配版 全网通 3GB+32GB(幻夜黑)','【到手价:749元】①下单立减50!②送原厂手机壳 ③晒单抽奖赢好礼!④送超值券包',799.00,998,10,'http://pub7lsomw.bkt.clouddn.com/FjkGpyu7wzBeRD0Sb3ePgNk3y9sl,http://pub7lsomw.bkt.clouddn.com/FgMuNXTHEhhzgvoUx0e9M_Sxqvlx,http://pub7lsomw.bkt.clouddn.com/FnX606l3BbD1I7zHYSrGIglfT68U,http://pub7lsomw.bkt.clouddn.com/FpowJ1Pd24F2Qv45QSmy4Nabb0Vw,http://pub7lsomw.bkt.clouddn.com/FtRWHvpISqVRUFM3YptPzYCXRYyz',1249,1,'2019-07-10 09:13:36','2019-07-10 09:13:36'), (156272133543147,'HUAWEI nova 4e 3200万立体美颜 AI超广角三摄 4GB+128GB 全网通版(雀翎蓝)',' 3200万立体美颜,AI超广角三摄,3D曲面玻璃,128GB大内存',1799.00,999,10,'http://pub7lsomw.bkt.clouddn.com/FtExSRPJRGsDXEDLFjly_ZMjSljI,http://pub7lsomw.bkt.clouddn.com/FtB2HlS25f9-9jPu0AYQIkPYboyM,http://pub7lsomw.bkt.clouddn.com/Fp_aY2PfiNtscRLclwKXcr75KldO,http://pub7lsomw.bkt.clouddn.com/FoL7ZyfaY7WjM9tUMDUjUePikz-Y',1247,1,'2019-07-10 09:15:35','2019-07-10 09:15:35'); /*Table structure for table `tb_item_cat` */ DROP TABLE IF EXISTS `tb_item_cat`; CREATE TABLE `tb_item_cat` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类编号', `parent_id` bigint(20) DEFAULT NULL COMMENT '父分类ID=0时代表一级根分类', `name` varchar(50) DEFAULT NULL COMMENT '分类名称', `status` int(1) DEFAULT '1' COMMENT '状态 1启用 0禁用', `sort_order` int(4) DEFAULT NULL COMMENT '排列序号', `is_parent` tinyint(1) DEFAULT '1' COMMENT '是否为父分类 1为true 0为false', `created` datetime DEFAULT NULL COMMENT '创建时间', `updated` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`), KEY `parent_id` (`parent_id`,`status`) USING BTREE, KEY `sort_order` (`sort_order`) ) ENGINE=InnoDB AUTO_INCREMENT=1250 DEFAULT CHARSET=utf8 COMMENT='商品类目'; /*Data for the table `tb_item_cat` */ insert into `tb_item_cat`(`id`,`parent_id`,`name`,`status`,`sort_order`,`is_parent`,`created`,`updated`) values (-1,0,'所有商品',1,0,1,'2019-07-09 17:08:00','2019-07-09 17:08:03'), (1214,0,'手机',1,1,1,'2019-07-09 17:08:56','2019-07-09 17:08:56'), (1221,0,'笔记本&平板',1,2,1,NULL,'2019-07-09 22:05:38'), (1234,1214,'荣耀系列',1,1,0,NULL,'2019-07-10 08:42:54'), (1235,1214,'HUAWEI P系列',1,2,0,'2019-07-09 22:06:15','2019-07-09 22:06:15'), (1236,1221,'平板电脑',1,1,0,'2019-07-09 22:07:10','2019-07-09 22:07:10'), (1237,1221,'笔记本电脑',1,2,0,'2019-07-09 22:07:21','2019-07-09 22:07:21'), (1238,1221,'笔记本配件',1,3,0,'2019-07-09 22:07:30','2019-07-09 22:07:30'), (1239,0,'智能穿戴',1,3,1,'2019-07-09 22:07:43','2019-07-09 22:07:43'), (1240,1239,'手环',1,1,0,'2019-07-09 22:07:52','2019-07-09 22:07:52'), (1241,1239,'电视盒子',1,2,0,'2019-07-09 22:07:58','2019-07-09 22:07:58'), (1242,1239,'照明',1,3,0,'2019-07-09 22:08:06','2019-07-09 22:08:06'), (1243,0,'热销配件',1,4,1,'2019-07-09 22:08:13','2019-07-09 22:08:13'), (1244,1243,'保护壳',1,1,0,'2019-07-09 22:08:20','2019-07-09 22:08:20'), (1245,1243,'移动电源',1,2,0,'2019-07-09 22:08:26','2019-07-09 22:08:26'), (1246,1243,'耳机',1,3,0,NULL,'2019-07-09 22:08:39'), (1247,1214,'HUAWEI nova系列',1,3,0,NULL,'2019-07-10 09:17:22'), (1248,1214,'Mate 系列',1,4,0,'2019-07-10 08:42:50','2019-07-10 08:42:50'), (1249,1214,'畅玩系列',1,5,0,'2019-07-10 09:10:33','2019-07-10 09:10:33'); /*Table structure for table `tb_item_desc` */ DROP TABLE IF EXISTS `tb_item_desc`; CREATE TABLE `tb_item_desc` ( `item_id` bigint(20) NOT NULL COMMENT '商品编号', `item_desc` text COMMENT '商品描述', `created` datetime DEFAULT NULL COMMENT '创建时间', `updated` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`item_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品描述表'; /*Data for the table `tb_item_desc` */ insert into `tb_item_desc`(`item_id`,`item_desc`,`created`,`updated`) values (156266413524759,'


','2019-07-09 17:22:15','2019-07-09 17:25:47'), (156267056226257,'


','2019-07-09 19:09:22','2019-07-09 20:51:29'), (156267834403843,'


','2019-07-09 21:19:04','2019-07-09 21:24:27'), (156267929355630,'


','2019-07-09 21:34:55','2019-07-09 21:39:00'), (156268007938096,'


','2019-07-09 21:47:59','2019-07-09 22:04:24'), (156268231822963,'


','2019-07-09 22:25:18','2019-07-09 22:48:06'), (156268365230771,'


','2019-07-09 22:47:32','2019-07-09 23:02:50'), (156269705828174,'


','2019-07-10 02:30:58','2019-07-10 02:57:49'), (156269945407026,'


','2019-07-10 03:10:54','2019-07-10 03:20:31'), (156271863486747,'


','2019-07-10 08:30:34','2019-07-10 08:30:34'), (156271954394859,'


','2019-07-10 08:45:43','2019-07-10 08:45:43'), (156272085015807,'


','2019-07-10 09:07:30','2019-07-10 09:07:30'), (156272096620228,'


','2019-07-10 09:09:26','2019-07-10 09:09:26'), (156272121662666,'


','2019-07-10 09:13:36','2019-07-10 09:13:36'), (156272133543147,'


','2019-07-10 09:15:35','2019-07-10 09:15:35'); /*Table structure for table `tb_member` */ DROP TABLE IF EXISTS `tb_member`; CREATE TABLE `tb_member` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '会员编号', `username` varchar(50) DEFAULT NULL COMMENT '用户名', `password` varchar(32) NOT NULL COMMENT '密码,加密存储', `phone` varchar(20) DEFAULT NULL COMMENT '注册手机号', `email` varchar(50) DEFAULT NULL COMMENT '注册邮箱', `sex` varchar(2) DEFAULT NULL COMMENT '性别', `state` int(1) DEFAULT '0' COMMENT '会员状态 1正常 2封禁', `file` varchar(255) DEFAULT 'https://yuu-1257159061.cos.ap-guangzhou.myqcloud.com/ymall/default-user-avatar.png' COMMENT '头像', `description` varchar(500) DEFAULT NULL COMMENT '会员描述', `created` datetime DEFAULT NULL COMMENT '创建时间', `updated` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `phone` (`phone`) USING BTREE, UNIQUE KEY `email` (`email`) USING BTREE, KEY `username` (`username`) ) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8 COMMENT='用户表'; /*Data for the table `tb_member` */ insert into `tb_member`(`id`,`username`,`password`,`phone`,`email`,`sex`,`state`,`file`,`description`,`created`,`updated`) values (78,NULL,'93bb7f2ba5d3d4be1af978726b97b4be','13055206361',NULL,NULL,1,'http://pub7lsomw.bkt.clouddn.com/1562726657635.png',NULL,'2019-07-10 10:38:34','2019-07-10 10:38:34'); /*Table structure for table `tb_order` */ DROP TABLE IF EXISTS `tb_order`; CREATE TABLE `tb_order` ( `id` varchar(50) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '订单编号', `payment` decimal(10,2) DEFAULT NULL COMMENT '实付金额', `payment_type` int(1) DEFAULT NULL COMMENT '支付类型 1在线支付 2货到付款', `post_fee` decimal(10,2) DEFAULT NULL COMMENT '邮费', `status` int(1) DEFAULT NULL COMMENT '状态 0未付款 1已付款 2未发货 3已发货 4交易成功 5交易关闭 6交易失败', `payment_time` datetime DEFAULT NULL COMMENT '付款时间', `consign_time` datetime DEFAULT NULL COMMENT '发货时间', `end_time` datetime DEFAULT NULL COMMENT '交易完成时间', `close_time` datetime DEFAULT NULL COMMENT '交易关闭时间', `shipping_name` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT '物流名称', `shipping_code` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT '物流单号', `user_id` bigint(20) DEFAULT NULL COMMENT '会员编号', `buyer_message` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '买家留言', `buyer_nick` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '买家昵称', `buyer_comment` tinyint(1) DEFAULT NULL COMMENT '买家是否已经评价', `created` datetime DEFAULT NULL COMMENT '订单创建时间', `updated` datetime DEFAULT NULL COMMENT '订单更新时间', PRIMARY KEY (`id`), KEY `buyer_nick` (`buyer_nick`), KEY `status` (`status`), KEY `payment_type` (`payment_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; /*Data for the table `tb_order` */ insert into `tb_order`(`id`,`payment`,`payment_type`,`post_fee`,`status`,`payment_time`,`consign_time`,`end_time`,`close_time`,`shipping_name`,`shipping_code`,`user_id`,`buyer_message`,`buyer_nick`,`buyer_comment`,`created`,`updated`) values ('156272657441294',9195.00,NULL,NULL,4,NULL,NULL,NULL,NULL,NULL,NULL,78,NULL,'13055206361',NULL,'2019-07-10 10:42:54','2019-07-10 10:42:54'); /*Table structure for table `tb_order_item` */ DROP TABLE IF EXISTS `tb_order_item`; CREATE TABLE `tb_order_item` ( `id` varchar(20) COLLATE utf8_bin NOT NULL, `item_id` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '商品id', `order_id` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '订单id', `num` int(10) DEFAULT NULL COMMENT '商品购买数量', `title` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '商品标题', `price` decimal(10,2) DEFAULT NULL COMMENT '商品单价', `total_fee` decimal(10,2) DEFAULT NULL COMMENT '商品总金额', `pic_path` varchar(1000) COLLATE utf8_bin DEFAULT NULL COMMENT '商品图片地址', PRIMARY KEY (`id`), KEY `item_id` (`item_id`), KEY `order_id` (`order_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; /*Data for the table `tb_order_item` */ insert into `tb_order_item`(`id`,`item_id`,`order_id`,`num`,`title`,`price`,`total_fee`,`pic_path`) values ('156272657442857','156272121662666','156272657441294',1,'荣耀畅玩8A 6.09英寸珍珠全面屏 震撼大音量 标配版 全网通 3GB+32GB(幻夜黑)',799.00,799.00,'http://pub7lsomw.bkt.clouddn.com/FjkGpyu7wzBeRD0Sb3ePgNk3y9sl'), ('156272657444263','156272096620228','156272657441294',1,'HUAWEI nova 4 4800万超广角三摄 自拍极点全面屏 高配 8GB+128GB 全网通版(蜜语红·星耀版)',2799.00,2799.00,'http://pub7lsomw.bkt.clouddn.com/Fo2lgi24IsyTcUy8Vzx_6-PHNI33'), ('156272657444438','156269945407026','156272657441294',2,'荣耀8X Max 骁龙660 7.12英寸高屏占比珍珠屏 5000mAh大电池 全网通 6GB+64GB(魅海蓝)',1399.00,2798.00,'http://pub7lsomw.bkt.clouddn.com/FtUbjDFl4PJtNwALeVNgve9QcnIv'), ('156272657444678','156268365230771','156272657441294',1,'HUAWEI nova 5 8GB+128GB 全网通版',2799.00,2799.00,'http://pub7lsomw.bkt.clouddn.com/FnK_JTCL57pocGQVz-Zp20HGNvqW'); /*Table structure for table `tb_order_shipping` */ DROP TABLE IF EXISTS `tb_order_shipping`; CREATE TABLE `tb_order_shipping` ( `order_id` varchar(50) NOT NULL COMMENT '订单ID', `receiver_name` varchar(20) DEFAULT NULL COMMENT '收货人全名', `receiver_phone` varchar(20) DEFAULT NULL COMMENT '固定电话', `receiver_mobile` varchar(30) DEFAULT NULL COMMENT '移动电话', `receiver_province` varchar(10) DEFAULT NULL COMMENT '省份', `receiver_city` varchar(10) DEFAULT NULL COMMENT '城市', `receiver_district` varchar(20) DEFAULT NULL COMMENT '区/县', `receiver_address` varchar(200) DEFAULT NULL COMMENT '收货地址,如:xx路xx号', `receiver_zip` varchar(6) DEFAULT NULL COMMENT '邮政编码,如:310001', `created` datetime DEFAULT NULL COMMENT '创建时间', `updated` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`order_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*Data for the table `tb_order_shipping` */ insert into `tb_order_shipping`(`order_id`,`receiver_name`,`receiver_phone`,`receiver_mobile`,`receiver_province`,`receiver_city`,`receiver_district`,`receiver_address`,`receiver_zip`,`created`,`updated`) values ('156272657441294','杨雨衡','13055206361',NULL,NULL,NULL,NULL,'福建省厦门市集美区集美大学诚毅学院',NULL,'2019-07-10 10:42:54','2019-07-10 10:42:54'); /*Table structure for table `tb_panel` */ DROP TABLE IF EXISTS `tb_panel`; CREATE TABLE `tb_panel` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '类目ID', `name` varchar(50) DEFAULT NULL COMMENT '板块名称', `type` int(1) DEFAULT NULL COMMENT '类型 0轮播图 1板块种类一 2板块种类二 3板块种类三 ', `sort_order` int(4) DEFAULT NULL COMMENT '排列序号', `position` int(1) DEFAULT NULL COMMENT '所属位置 0首页 1商品推荐 2我要捐赠', `limit_num` int(4) DEFAULT NULL COMMENT '板块限制商品数量', `status` int(1) DEFAULT '1' COMMENT '状态', `created` datetime DEFAULT NULL COMMENT '创建时间', `updated` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`), KEY `parent_id` (`status`) USING BTREE, KEY `sort_order` (`sort_order`) ) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COMMENT='内容分类'; /*Data for the table `tb_panel` */ insert into `tb_panel`(`id`,`name`,`type`,`sort_order`,`position`,`limit_num`,`status`,`created`,`updated`) values (11,'轮播图',0,0,0,5,1,'2019-07-09 17:00:00','2019-07-09 17:00:00'), (12,'活动板块1',1,1,0,4,1,'2019-07-09 18:56:18','2019-07-09 18:56:18'), (13,'热销单品',2,2,0,4,1,NULL,'2019-07-09 23:28:48'), (14,'精品推荐',3,3,0,8,1,NULL,'2019-07-10 00:10:52'), (15,'手机',3,4,0,8,1,NULL,'2019-07-10 00:10:59'), (16,'精品平板',3,6,0,8,1,NULL,'2019-07-10 00:37:49'), (17,'笔记本电脑',3,5,0,8,1,NULL,'2019-07-10 00:47:24'), (18,'智能穿戴',3,7,0,7,1,NULL,'2019-07-10 00:53:54'), (19,'智能家居',3,8,0,7,1,NULL,'2019-07-10 00:54:14'), (20,'热销配件',3,9,0,7,1,NULL,'2019-07-10 00:54:19'), (21,'生态精品',3,10,0,7,1,NULL,'2019-07-10 00:54:21'), (22,'精选配件',3,11,0,7,1,NULL,'2019-07-10 00:54:24'); /*Table structure for table `tb_panel_content` */ DROP TABLE IF EXISTS `tb_panel_content`; CREATE TABLE `tb_panel_content` ( `id` int(11) NOT NULL AUTO_INCREMENT, `panel_id` int(11) NOT NULL COMMENT '所属板块id', `type` int(1) DEFAULT NULL COMMENT '类型 0关联商品 1其他链接 2关联商品(封面)3关联商品(封面)', `product_id` bigint(20) DEFAULT NULL COMMENT '关联商品id', `sort_order` int(4) DEFAULT NULL COMMENT '排序值', `full_url` varchar(500) DEFAULT NULL COMMENT '其他链接', `pic_url` varchar(500) DEFAULT NULL COMMENT '图片', `pic_url2` varchar(500) DEFAULT NULL COMMENT '3d轮播图备用', `pic_url3` varchar(500) DEFAULT NULL COMMENT '3d轮播图备用', `created` datetime DEFAULT NULL COMMENT '创建时间', `updated` datetime DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`), KEY `category_id` (`panel_id`), KEY `updated` (`updated`) ) ENGINE=InnoDB AUTO_INCREMENT=158 DEFAULT CHARSET=utf8; /*Data for the table `tb_panel_content` */ insert into `tb_panel_content`(`id`,`panel_id`,`type`,`product_id`,`sort_order`,`full_url`,`pic_url`,`pic_url2`,`pic_url3`,`created`,`updated`) values (78,11,0,156268231822963,1,'','http://pub7lsomw.bkt.clouddn.com/FgboEB3GoUaOhhVVrV2iUs_0j4rd',NULL,NULL,NULL,'2019-07-09 22:30:02'), (79,11,0,156268365230771,2,'','http://pub7lsomw.bkt.clouddn.com/FmRYkuEFYde6xI-dDcXqsOfSKK3o',NULL,NULL,'2019-07-09 22:48:34','2019-07-09 22:48:34'), (80,12,0,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/FnK_JTCL57pocGQVz-Zp20HGNvqW',NULL,NULL,'2019-07-09 23:07:15','2019-07-09 23:07:15'), (81,12,0,156268231822963,2,'','http://pub7lsomw.bkt.clouddn.com/FmyoVNNUwRlMq9L65u6rsJnX-_jD',NULL,NULL,'2019-07-09 23:09:56','2019-07-09 23:09:56'), (82,12,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/FtvjyajKpyy6xteuuDeUmVpxkq2z',NULL,NULL,'2019-07-09 23:10:19','2019-07-09 23:10:19'), (83,12,0,156268231822963,4,'','http://pub7lsomw.bkt.clouddn.com/FmYF8urf5luGTp7EzETexBMTvAz5',NULL,NULL,'2019-07-09 23:10:31','2019-07-09 23:10:31'), (84,13,0,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/FurHro4g_v6KrvZVVumIdtD3VRVf',NULL,NULL,'2019-07-09 23:26:27','2019-07-09 23:26:27'), (85,13,0,156268365230771,0,'','http://pub7lsomw.bkt.clouddn.com/FmyoVNNUwRlMq9L65u6rsJnX-_jD',NULL,NULL,'2019-07-09 23:27:26','2019-07-09 23:27:26'), (86,14,0,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/FrekC0IfRuSfFdZMh9pxVdfEWzFI',NULL,NULL,NULL,'2019-07-09 23:51:14'), (87,14,0,156268231822963,2,'','http://pub7lsomw.bkt.clouddn.com/FhVtfCRfReyM37ELaa7canqnSDJy',NULL,NULL,'2019-07-09 23:39:49','2019-07-09 23:39:49'), (88,14,0,156268231822963,3,'','http://pub7lsomw.bkt.clouddn.com/FuxZbjWZL3g0ZltDwhPGEjju7ynv',NULL,NULL,'2019-07-09 23:40:31','2019-07-09 23:40:31'), (89,14,0,156268365230771,4,'','http://pub7lsomw.bkt.clouddn.com/FncB80rXZ6K-549TYrLom-VOQPKb',NULL,NULL,'2019-07-09 23:40:54','2019-07-09 23:40:54'), (91,14,0,156268231822963,6,'','http://pub7lsomw.bkt.clouddn.com/FnEmbcH6sDuaBZW47d6hXOFqeUx5',NULL,NULL,'2019-07-09 23:47:20','2019-07-09 23:47:20'), (92,14,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/FtXF9v_EbPcinP4sIQvaAWZq5NxC',NULL,NULL,'2019-07-09 23:47:37','2019-07-09 23:47:37'), (93,14,0,156268231822963,0,'','http://pub7lsomw.bkt.clouddn.com/FsTOANA4z23QZDbOnlWijWyeTWOZ',NULL,NULL,NULL,'2019-07-10 00:11:31'), (94,15,0,156269705828174,1,'','http://pub7lsomw.bkt.clouddn.com/FiAl6TJLp__NvL8_3f0vbLxUhO03',NULL,NULL,NULL,'2019-07-10 02:58:49'), (95,15,0,156271863486747,2,'','http://pub7lsomw.bkt.clouddn.com/FiNn5h9bT1Wg0EDT2bs4ak5wn0G7',NULL,NULL,NULL,'2019-07-10 08:30:46'), (96,15,0,156271954394859,3,'','http://pub7lsomw.bkt.clouddn.com/FhmzWEQ5aJxi00lS90199e34YLy7',NULL,NULL,NULL,'2019-07-10 08:46:01'), (97,14,0,156268231822963,8,'','http://pub7lsomw.bkt.clouddn.com/FnKW_5yeMQJ7W2plr6Yk7TE-6A5k',NULL,NULL,NULL,'2019-07-10 00:12:27'), (98,15,0,156272085015807,4,'','http://pub7lsomw.bkt.clouddn.com/FvaioHuROssa58-WubEN6RzsLkMX',NULL,NULL,NULL,'2019-07-10 09:08:01'), (99,15,0,156272096620228,5,'','http://pub7lsomw.bkt.clouddn.com/Fo2lgi24IsyTcUy8Vzx_6-PHNI33',NULL,NULL,NULL,'2019-07-10 09:09:45'), (100,15,0,156272121662666,6,'','http://pub7lsomw.bkt.clouddn.com/Fi2cL3eRANv3iMysg3t0DCsqFpH5',NULL,NULL,NULL,'2019-07-10 09:15:47'), (101,15,0,156272133543147,7,'','http://pub7lsomw.bkt.clouddn.com/FnEmbcH6sDuaBZW47d6hXOFqeUx5',NULL,NULL,NULL,'2019-07-10 09:15:53'), (102,15,0,156269945407026,1,'','http://pub7lsomw.bkt.clouddn.com/FtUbjDFl4PJtNwALeVNgve9QcnIv',NULL,NULL,NULL,'2019-07-10 03:11:13'), (103,11,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/Fn5aIOj1sPy9_HPAyy3Us_CRwmLb',NULL,NULL,'2019-07-10 00:21:52','2019-07-10 00:21:52'), (104,11,0,156268365230771,4,'','http://pub7lsomw.bkt.clouddn.com/FpkqZw5MHFGD0iOaP6DwfbCfkiof',NULL,NULL,'2019-07-10 00:22:10','2019-07-10 00:22:10'), (105,11,1,NULL,5,'https://www.71yuu.com/','http://pub7lsomw.bkt.clouddn.com/Fka1NhCLE19wPupRlGSSR-UxtD12',NULL,NULL,'2019-07-10 00:22:36','2019-07-10 00:22:36'), (106,16,0,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/Fkb_AeosFyYNFe_giwHo-Gr2IMv2',NULL,NULL,'2019-07-10 00:27:44','2019-07-10 00:27:44'), (107,16,0,156268231822963,2,'','http://pub7lsomw.bkt.clouddn.com/Fh41PYzAklpyqqApDFfCTfYljcab',NULL,NULL,'2019-07-10 00:29:12','2019-07-10 00:29:12'), (108,16,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/Fm4gchBeRRVHvzik8PlHxVk02p5H',NULL,NULL,'2019-07-10 00:31:19','2019-07-10 00:31:19'), (109,16,0,156268231822963,4,'','http://pub7lsomw.bkt.clouddn.com/FpA6Nge5X8hMsC4tGz8TkVMrpnQI',NULL,NULL,'2019-07-10 00:32:27','2019-07-10 00:32:27'), (110,16,0,156268231822963,5,'','http://pub7lsomw.bkt.clouddn.com/FnGy7u1Mtw9xpin9nbBgxFDT8GsZ',NULL,NULL,'2019-07-10 00:33:54','2019-07-10 00:33:54'), (111,16,0,156268365230771,6,'','http://pub7lsomw.bkt.clouddn.com/FlD1YI-YO4n8Sm502c9WeGBbV7sS',NULL,NULL,'2019-07-10 00:34:58','2019-07-10 00:34:58'), (112,16,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/FjsM5dug05E_vzFox7Nh24vxItVI',NULL,NULL,'2019-07-10 00:35:40','2019-07-10 00:35:40'), (113,16,0,156268365230771,8,'','http://pub7lsomw.bkt.clouddn.com/FvkKDWnd_dNViTlDYkNEW9qUDDQ7',NULL,NULL,'2019-07-10 00:36:00','2019-07-10 00:36:00'), (114,17,0,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/FsTUuP-MY2p8_Rtu75yshgLc9HAA',NULL,NULL,'2019-07-10 00:41:47','2019-07-10 00:41:47'), (115,17,0,156268365230771,2,'','http://pub7lsomw.bkt.clouddn.com/FsHMvN6Sh5bYfS1hUwDSSUovV1Iz',NULL,NULL,'2019-07-10 00:42:34','2019-07-10 00:42:34'), (116,17,0,156268231822963,3,'','http://pub7lsomw.bkt.clouddn.com/Fhq53yhpC8sRp5sYCDCuKMdsxR5x',NULL,NULL,'2019-07-10 00:43:07','2019-07-10 00:43:07'), (117,17,0,156268365230771,4,'','http://pub7lsomw.bkt.clouddn.com/FpX5ofiu2JRNceYT1KKfhZEwk5hV',NULL,NULL,'2019-07-10 00:45:14','2019-07-10 00:45:14'), (118,17,0,156268365230771,5,'','http://pub7lsomw.bkt.clouddn.com/Fmg1g_m9jvOkI_C0_oZxrEYnjbMk',NULL,NULL,'2019-07-10 00:45:33','2019-07-10 00:45:33'), (119,17,0,156268365230771,6,'','http://pub7lsomw.bkt.clouddn.com/FkOP4JouTXsE3XxRcl4Qs3cD70Sa',NULL,NULL,'2019-07-10 00:46:21','2019-07-10 00:46:21'), (120,17,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/FnOZnlOUbVJPZwdDWYyJOGDz5Wao',NULL,NULL,'2019-07-10 00:46:38','2019-07-10 00:46:38'), (121,17,0,156268365230771,8,'','http://pub7lsomw.bkt.clouddn.com/FuuLFcc1xLCcOwj5QeyWCA2dfxTl',NULL,NULL,'2019-07-10 00:47:09','2019-07-10 00:47:09'), (122,18,2,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/FmeWoAGMO4arsC-mswaCRP6Cf2Om',NULL,NULL,NULL,'2019-07-10 00:53:23'), (123,18,0,156268231822963,2,'','http://pub7lsomw.bkt.clouddn.com/FjHoRljhhq9JQBcVbH7878v-H7_s',NULL,NULL,'2019-07-10 00:49:51','2019-07-10 00:49:51'), (124,18,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/FmnICU_SGBZTSGCf2ofNz56onMJI',NULL,NULL,'2019-07-10 00:50:34','2019-07-10 00:50:34'), (125,18,0,156268365230771,4,'','http://pub7lsomw.bkt.clouddn.com/FhCPEwQhyqSYziYqMekP4EO-9Kfk',NULL,NULL,'2019-07-10 00:51:04','2019-07-10 00:51:04'), (126,18,0,156268365230771,5,'','http://pub7lsomw.bkt.clouddn.com/FgelPcSEB2lkd-4t620GUgaAlf4h',NULL,NULL,'2019-07-10 00:51:38','2019-07-10 00:51:38'), (127,18,0,156268231822963,6,'','http://pub7lsomw.bkt.clouddn.com/FjAI4QZEHoyvE7jNepqhx3h1zZnJ',NULL,NULL,'2019-07-10 00:52:12','2019-07-10 00:52:12'), (128,18,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/Fg5atYssfQJFLtDJmQzpXByxfWER',NULL,NULL,'2019-07-10 00:52:38','2019-07-10 00:52:38'), (130,19,2,156268231822963,1,'','http://pub7lsomw.bkt.clouddn.com/FmPsY2qDUIdQ5mUOyWNz_LDWVLFc',NULL,NULL,'2019-07-10 00:54:59','2019-07-10 00:54:59'), (131,19,0,156268365230771,2,'','http://pub7lsomw.bkt.clouddn.com/FrpvBCfcQNauK6z8ntxayEbThtbn',NULL,NULL,'2019-07-10 00:55:15','2019-07-10 00:55:15'), (132,19,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/FhEGelnrvmfRP7LHxYuf3CK7QBAZ',NULL,NULL,'2019-07-10 00:55:31','2019-07-10 00:55:31'), (133,19,0,156268365230771,4,'','http://pub7lsomw.bkt.clouddn.com/FgS8KX5kQ43ze3Jrmxqb-OzcHb12',NULL,NULL,'2019-07-10 00:55:45','2019-07-10 00:55:45'), (134,19,0,156268365230771,6,'','http://pub7lsomw.bkt.clouddn.com/FjmtIGK_CbH1lWkz1F2IqDROWNrQ',NULL,NULL,'2019-07-10 00:56:07','2019-07-10 00:56:07'), (135,19,0,156268365230771,5,'','http://pub7lsomw.bkt.clouddn.com/FgS8KX5kQ43ze3Jrmxqb-OzcHb12',NULL,NULL,'2019-07-10 00:56:25','2019-07-10 00:56:25'), (136,19,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/FkxA9knjUc29Vw-XNYWHnxHzmf6v',NULL,NULL,'2019-07-10 00:56:38','2019-07-10 00:56:38'), (137,20,2,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/FoYaHbVA1_6fln3Zht2F0SoaMTOj',NULL,NULL,NULL,'2019-07-10 00:58:47'), (138,20,0,156268365230771,2,'','http://pub7lsomw.bkt.clouddn.com/Fv9DBHm1MEHEMJhRnmMrW58p45w4',NULL,NULL,'2019-07-10 00:57:22','2019-07-10 00:57:22'), (139,20,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/FlEvT-WvZBjuiHtAwL4QCDWRMVgs',NULL,NULL,'2019-07-10 00:57:33','2019-07-10 00:57:33'), (140,20,0,156268365230771,4,'','http://pub7lsomw.bkt.clouddn.com/FrlETSAFEVnIWUvjpUgJcPu_a7AL',NULL,NULL,'2019-07-10 00:57:47','2019-07-10 00:57:47'), (141,20,0,156268365230771,5,'','http://pub7lsomw.bkt.clouddn.com/Flrx2EBC2lobY2eJmAeNALZF_BNI',NULL,NULL,'2019-07-10 00:58:01','2019-07-10 00:58:01'), (142,20,0,156268365230771,6,'','http://pub7lsomw.bkt.clouddn.com/Ftq4x8X8oSzjNq8c9JTfh_kwUKiY',NULL,NULL,'2019-07-10 00:58:12','2019-07-10 00:58:12'), (143,20,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/Fkd9mlW2K23UooLUsSgL05wggcxN',NULL,NULL,'2019-07-10 00:58:28','2019-07-10 00:58:28'), (144,21,2,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/Fi8CiUEL5N57JoTFOc4i4mm9AEjO',NULL,NULL,'2019-07-10 00:59:07','2019-07-10 00:59:07'), (145,21,0,156268365230771,2,'','http://pub7lsomw.bkt.clouddn.com/FivVNRyn8aNjFpwXbD4nzh_-3qZu',NULL,NULL,'2019-07-10 00:59:29','2019-07-10 00:59:29'), (146,21,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/Foox3uBjTPgWIOjVRDLqWTLRx3bp',NULL,NULL,NULL,'2019-07-10 01:00:11'), (147,21,0,156268231822963,4,'','http://pub7lsomw.bkt.clouddn.com/Fttk_HMnMpUy4in9PRxOc7uZjMg5',NULL,NULL,'2019-07-10 01:00:00','2019-07-10 01:00:00'), (148,21,0,156268365230771,5,'','http://pub7lsomw.bkt.clouddn.com/FrzmdkpUdoHe32DRog7jafiLff9c',NULL,NULL,'2019-07-10 01:00:28','2019-07-10 01:00:28'), (149,21,0,156268365230771,6,'','http://pub7lsomw.bkt.clouddn.com/FrTiUKMvry8N2as8DN6TQfbQUfUW',NULL,NULL,'2019-07-10 01:00:45','2019-07-10 01:00:45'), (150,21,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/Fj8scPW_HBIo4MMJbXQA6ajs5LFF',NULL,NULL,'2019-07-10 01:00:58','2019-07-10 01:00:58'), (151,22,2,156268365230771,1,'','http://pub7lsomw.bkt.clouddn.com/FoZIcvdU6vkX2HDAshrG7np_07wY',NULL,NULL,NULL,'2019-07-10 01:02:34'), (152,22,0,156268231822963,2,'','http://pub7lsomw.bkt.clouddn.com/FjY39dK5GGIekyCMggPuM1W7LCEA',NULL,NULL,NULL,'2019-07-10 01:02:27'), (153,22,0,156268365230771,3,'','http://pub7lsomw.bkt.clouddn.com/Fq9IcTpReMj9SgjEqZX4YSf5HoBO',NULL,NULL,'2019-07-10 01:02:46','2019-07-10 01:02:46'), (154,22,0,156268365230771,4,'','http://pub7lsomw.bkt.clouddn.com/FrgJHhcQNf5UyufKhyyBoFDMWeQg',NULL,NULL,'2019-07-10 01:03:00','2019-07-10 01:03:00'), (155,22,0,156268231822963,5,'','http://pub7lsomw.bkt.clouddn.com/FurE0pcGxMisGkmxCTrzb8uyAAP3',NULL,NULL,'2019-07-10 01:03:10','2019-07-10 01:03:10'), (156,22,0,156268231822963,6,'','http://pub7lsomw.bkt.clouddn.com/Fg02vwvb86oQGOwQgGoxz6DAIEWV',NULL,NULL,'2019-07-10 01:03:19','2019-07-10 01:03:19'), (157,22,0,156268365230771,7,'','http://pub7lsomw.bkt.clouddn.com/Fm7d4f9IAx1vb3cPklDh704LvsD1',NULL,NULL,'2019-07-10 01:03:30','2019-07-10 01:03:30'); /*Table structure for table `tb_user` */ DROP TABLE IF EXISTS `tb_user`; CREATE TABLE `tb_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '管理员编号', `username` varchar(50) NOT NULL COMMENT '用户名', `password` varchar(32) NOT NULL COMMENT '密码 md5加密存储', `created` datetime NOT NULL COMMENT '创建时间', `updated` datetime NOT NULL COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用户表'; /*Data for the table `tb_user` */ insert into `tb_user`(`id`,`username`,`password`,`created`,`updated`) values (1,'admin','e10adc3949ba59abbe56e057f20f883e','2017-09-05 21:27:54','2017-10-18 22:57:08'); /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; ================================================ FILE: ymall-commons/pom.xml ================================================ 4.0.0 com.yuu ymall-dependencies 1.0.0-SNAPSHOT ../ymall-dependencies/pom.xml ymall-commons jar ymall-commons General Tool Class junit junit ${junit.version} org.springframework spring-test ${spring.version} org.apache.commons commons-lang3 org.apache.commons commons-io commons-net commons-net commons-fileupload commons-fileupload org.apache.httpcomponents httpclient com.fasterxml.jackson.core jackson-databind com.fasterxml.jackson.core jackson-core com.fasterxml.jackson.core jackson-annotations org.json json org.slf4j slf4j-api org.slf4j slf4j-log4j12 ${slf4j.version} org.slf4j jcl-over-slf4j org.slf4j jul-to-slf4j log4j log4j org.projectlombok lombok org.springframework spring-context com.aliyun aliyun-java-sdk-core redis.clients jedis org.springframework.data spring-data-redis org.elasticsearch elasticsearch org.elasticsearch.client transport org.springframework.data spring-data-elasticsearch ================================================ FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/consts/Consts.java ================================================ package com.yuu.ymall.commons.consts; /** * @author by Yuu * @classname Consts * @date 2019/6/24 16:52 */ public class Consts { /** * ####### 会员状态 1 正常,2 封禁 */ /** * 会员状态正常 */ public static final Integer MEMBER_STATUS_NORMAL = 1; /** * 会员状态封禁 */ public static final Integer MEMBER_STATUS_BAN = 2; /** * ###### 订单状态 0 未支付,1 已支付,2 未发货,3 已发货,4 交易成功,5 交易关闭 */ /** * 未支付 */ public static final Integer ORDER_STATUS_NOPAY = 0; /** * 已支付 */ public static final Integer ORDER_STATUS_PAY = 1; /** * 未发货 */ public static final Integer ORDER_STATUS_NOSEND = 2; /** * 已发货 */ public static final Integer ORDER_STATUS_SEND = 3; /** * 交易成功 */ public static final Integer ORDER_STATUS_SUCCESS = 4; /** * 交易关闭 */ public static final Integer ORDER_STATUS_CLOSE = 5; } ================================================ FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/dto/BaseResult.java ================================================ package com.yuu.ymall.commons.dto; import lombok.Data; import java.io.Serializable; /** * 前后端交互数据标准 * * @Classname BaseResult * @Date 2019/5/12 12:25 * @Created by Yuu */ @Data public class BaseResult implements Serializable { public static final int STATUS_SUCCESS = 200; public static final int STATUS_FALL = 500; /** * 返回状态码 */ private int status; /** * 返回消息 */ private String message; /** * 返回数据 */ private Object result; /** * 返回时间 */ private long timestamp = System.currentTimeMillis(); /** * 创建返回对象 * * @param status 返回状态 * @param message 返回消息 * @param result 返回数据 * @return */ private static BaseResult createResult(int status, String message, Object result) { BaseResult baseResult = new BaseResult(); baseResult.setStatus(status); baseResult.setMessage(message); baseResult.setResult(result); return baseResult; } /** * 默认返回成功方法 * * @return */ public static BaseResult success() { return BaseResult.createResult(STATUS_SUCCESS, "成功", null); } /** * 返回成功带消息 * * @param message 返回消息 * @return */ public static BaseResult success(String message) { return BaseResult.createResult(STATUS_SUCCESS, message, null); } /** * 返回成功带数据 * * @param result 返回数据 * @return */ public static BaseResult success(Object result) { return BaseResult.createResult(STATUS_SUCCESS, "成功", result); } /** * 返回成功带消息和数据 * * @param message 返回消息 * @param result 返回数据 * @return */ public static BaseResult success(String message, Object result) { return BaseResult.createResult(STATUS_SUCCESS, message, result); } /** * 默认返回失败方法 * * @return */ public static BaseResult fail() { return BaseResult.createResult(STATUS_FALL, "失败", null); } /** * 返回失败带消息 * * @param message 返回消息 * @return */ public static BaseResult fail(String message) { return BaseResult.createResult(STATUS_FALL, message, null); } /** * 返回失败带消息和数据 * * @param message 返回消息 * @param result 返回数据 * @return */ public static BaseResult fail(String message, Object result) { return BaseResult.createResult(STATUS_FALL, message, result); } } ================================================ FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/execption/YmallUploadException.java ================================================ package com.yuu.ymall.commons.execption; /** * @Classname YMallUploadException * @Date 2019/5/24 20:53 * @Created by Yuu */ public class YmallUploadException extends RuntimeException { private String msg; public YmallUploadException(String msg) { this.msg = msg; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } } ================================================ FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/geetest/GeetInit.java ================================================ package com.yuu.ymall.commons.geetest; import java.io.Serializable; /** * @author by Yuu * @classname GeetInit * @date 2019/6/26 8:47 */ public class GeetInit implements Serializable { private int success; private String challenge; private String gt; private String statusKey; public int getSuccess() { return success; } public void setSuccess(int success) { this.success = success; } public String getChallenge() { return challenge; } public void setChallenge(String challenge) { this.challenge = challenge; } public String getGt() { return gt; } public void setGt(String gt) { this.gt = gt; } public String getStatusKey() { return statusKey; } public void setStatusKey(String statusKey) { this.statusKey = statusKey; } } ================================================ FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/geetest/GeetestLib.java ================================================ package com.yuu.ymall.commons.geetest; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.HashMap; /** * 极验 SDK * * @author by Yuu * @classname GeetestLib * @date 2019/6/26 8:17 */ public class GeetestLib { public static final String id = "33d7d578860c50a433de5a48e55c6b1d"; public static final String key = "1a92d3aa44daa8e5501cbcf1a6a0ed7f"; public static final boolean newfailback = true; protected final String verName = "4.0"; protected final String sdkLang = "java"; protected final String apiUrl = "http://api.geetest.com"; protected final String registerUrl = "/register.php"; protected final String validateUrl = "/validate.php"; protected final String json_format = "1"; /** * 极验验证二次验证表单数据 chllenge */ public static final String fn_geetest_challenge = "geetest_challenge"; /** * 极验验证二次验证表单数据 validate */ public static final String fn_geetest_validate = "geetest_validate"; /** * 极验验证二次验证表单数据 seccode */ public static final String fn_geetest_seccode = "geetest_seccode"; /** * 公钥 */ private String captchaId = ""; /** * 私钥 */ private String privateKey = ""; /** * 是否开启新的failback */ private boolean newFailback = false; /** * 返回字符串 */ private String responseStr = ""; /** * 调试开关,是否输出调试日志 */ public boolean debugCode = true; /** * 极验验证API服务状态Session Key */ public String gtServerStatusSessionKey = "gt_server_status"; /** * 带参数构造函数 * * @param captchaId * @param privateKey */ public GeetestLib(String captchaId, String privateKey, boolean newFailback) { this.captchaId = captchaId; this.privateKey = privateKey; this.newFailback = newFailback; } /** * 获取本次验证初始化返回字符串 * * @return 初始化结果 */ public String getResponseStr() { return responseStr; } public String getVersionInfo() { return verName; } /** * 预处理失败后的返回格式串 * * @return */ private String getFailPreProcessRes() { Long rnd1 = Math.round(Math.random() * 100); Long rnd2 = Math.round(Math.random() * 100); String md5Str1 = md5Encode(rnd1 + ""); String md5Str2 = md5Encode(rnd2 + ""); String challenge = md5Str1 + md5Str2.substring(0, 2); JSONObject jsonObject = new JSONObject(); try { jsonObject.put("success", 0); jsonObject.put("gt", this.captchaId); jsonObject.put("challenge", challenge); jsonObject.put("new_captcha", this.newFailback); } catch (JSONException e) { gtlog("json dumps error"); } return jsonObject.toString(); } /** * 预处理成功后的标准串 * */ private String getSuccessPreProcessRes(String challenge) { gtlog("challenge:" + challenge); JSONObject jsonObject = new JSONObject(); try { jsonObject.put("success", 1); jsonObject.put("gt", this.captchaId); jsonObject.put("challenge", challenge); } catch (JSONException e) { gtlog("json dumps error"); } return jsonObject.toString(); } /** * 验证初始化预处理 * * @return 1表示初始化成功,0表示初始化失败 */ public int preProcess(HashMap data) { if (registerChallenge(data) != 1) { this.responseStr = this.getFailPreProcessRes(); return 0; } return 1; } /** * 用captchaID进行注册,更新challenge * * @return 1表示注册成功,0表示注册失败 */ private int registerChallenge(HashMapdata) { try { String userId = data.get("user_id"); String clientType = data.get("client_type"); String ipAddress = data.get("ip_address"); String getUrl = apiUrl + registerUrl + "?"; String param = "gt=" + this.captchaId + "&json_format=" + this.json_format; if (userId != null){ param = param + "&user_id=" + userId; } if (clientType != null){ param = param + "&client_type=" + clientType; } if (ipAddress != null){ param = param + "&ip_address=" + ipAddress; } gtlog("GET_URL:" + getUrl + param); String result_str = readContentFromGet(getUrl + param); if (result_str == "fail"){ gtlog("gtServer register challenge failed"); return 0; } gtlog("result:" + result_str); JSONObject jsonObject = new JSONObject(result_str); String return_challenge = jsonObject.getString("challenge"); gtlog("return_challenge:" + return_challenge); if (return_challenge.length() == 32) { this.responseStr = this.getSuccessPreProcessRes(this.md5Encode(return_challenge + this.privateKey)); return 1; } else { gtlog("gtServer register challenge error"); return 0; } } catch (Exception e) { gtlog(e.toString()); gtlog("exception:register api"); } return 0; } /** * 判断一个表单对象值是否为空 * * @param gtObj * @return */ protected boolean objIsEmpty(Object gtObj) { if (gtObj == null) { return true; } if (gtObj.toString().trim().length() == 0) { return true; } return false; } /** * 检查客户端的请求是否合法,三个只要有一个为空,则判断不合法 * @param challenge * @param validate * @param seccode * @return */ private boolean resquestIsLegal(String challenge, String validate, String seccode) { if (objIsEmpty(challenge)) { return false; } if (objIsEmpty(validate)) { return false; } if (objIsEmpty(seccode)) { return false; } return true; } /** * 服务正常的情况下使用的验证方式,向gt-server进行二次验证,获取验证结果 * * @param challenge * @param validate * @param seccode * @return 验证结果,1表示验证成功0表示验证失败 */ public int enhencedValidateRequest(String challenge, String validate, String seccode, HashMap data) { if (!resquestIsLegal(challenge, validate, seccode)) { return 0; } gtlog("request legitimate"); String userId = data.get("user_id"); String clientType = data.get("client_type"); String ipAddress = data.get("ip_address"); String postUrl = this.apiUrl + this.validateUrl; String param = String.format("challenge=%s&validate=%s&seccode=%s&json_format=%s", challenge, validate, seccode, this.json_format); if (userId != null){ param = param + "&user_id=" + userId; } if (clientType != null){ param = param + "&client_type=" + clientType; } if (ipAddress != null){ param = param + "&ip_address=" + ipAddress; } gtlog("param:" + param); String response = ""; try { if (validate.length() <= 0) { return 0; } if (!checkResultByPrivate(challenge, validate)) { return 0; } gtlog("checkResultByPrivate"); response = readContentFromPost(postUrl, param); gtlog("response: " + response); } catch (Exception e) { e.printStackTrace(); } String return_seccode = ""; try { JSONObject return_map = new JSONObject(response); return_seccode = return_map.getString("seccode"); gtlog("md5: " + md5Encode(return_seccode)); if (return_seccode.equals(md5Encode(seccode))) { return 1; } else { return 0; } } catch (JSONException e) { gtlog("json load error"); return 0; } } /** * failback使用的验证方式 * * @param challenge * @param validate * @param seccode * @return 验证结果,1表示验证成功0表示验证失败 */ public int failbackValidateRequest(String challenge, String validate, String seccode) { gtlog("in failback validate"); if (!resquestIsLegal(challenge, validate, seccode)) { return 0; } gtlog("request legitimate"); return 1; } /** * 输出debug信息,需要开启debugCode * * @param message */ public void gtlog(String message) { if (debugCode) { System.out.println("gtlog: " + message); } } protected boolean checkResultByPrivate(String challenge, String validate) { String encodeStr = md5Encode(privateKey + "geetest" + challenge); return validate.equals(encodeStr); } /** * 发送GET请求,获取服务器返回结果 * @param URL * @return * @throws IOException */ private String readContentFromGet(String URL) throws IOException { java.net.URL getUrl = new URL(URL); HttpURLConnection connection = (HttpURLConnection) getUrl .openConnection(); connection.setConnectTimeout(2000);// 设置连接主机超时(单位:毫秒) connection.setReadTimeout(2000);// 设置从主机读取数据超时(单位:毫秒) // 建立与服务器的连接,并未发送数据 connection.connect(); if (connection.getResponseCode() == 200) { // 发送数据到服务器并使用Reader读取返回的数据 StringBuffer sBuffer = new StringBuffer(); InputStream inStream = null; byte[] buf = new byte[1024]; inStream = connection.getInputStream(); for (int n; (n = inStream.read(buf)) != -1;) { sBuffer.append(new String(buf, 0, n, "UTF-8")); } inStream.close(); connection.disconnect();// 断开连接 return sBuffer.toString(); } else { return "fail"; } } /** * 发送POST请求,获取服务器返回结果 * @param URL * @param data * @return * @throws IOException */ private String readContentFromPost(String URL, String data) throws IOException { gtlog(data); URL postUrl = new URL(URL); HttpURLConnection connection = (HttpURLConnection) postUrl .openConnection(); connection.setConnectTimeout(2000);// 设置连接主机超时(单位:毫秒) connection.setReadTimeout(2000);// 设置从主机读取数据超时(单位:毫秒) connection.setRequestMethod("POST"); connection.setDoInput(true); connection.setDoOutput(true); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // 建立与服务器的连接,并未发送数据 connection.connect(); OutputStreamWriter outputStreamWriter = new OutputStreamWriter(connection.getOutputStream(), "utf-8"); outputStreamWriter.write(data); outputStreamWriter.flush(); outputStreamWriter.close(); if (connection.getResponseCode() == 200) { // 发送数据到服务器并使用Reader读取返回的数据 StringBuffer sBuffer = new StringBuffer(); InputStream inStream = null; byte[] buf = new byte[1024]; inStream = connection.getInputStream(); for (int n; (n = inStream.read(buf)) != -1;) { sBuffer.append(new String(buf, 0, n, "UTF-8")); } inStream.close(); connection.disconnect();// 断开连接 return sBuffer.toString(); } else { return "fail"; } } /** * md5 加密 * * @time 2014年7月10日 下午3:30:01 * @param plainText * @return */ private String md5Encode(String plainText) { String re_md5 = new String(); try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(plainText.getBytes()); byte b[] = md.digest(); int i; StringBuffer buf = new StringBuffer(""); for (int offset = 0; offset < b.length; offset++) { i = b[offset]; if (i < 0){ i += 256; } if (i < 16){ buf.append("0"); } buf.append(Integer.toHexString(i)); } re_md5 = buf.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return re_md5; } } ================================================ FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/persistence/BaseMapper.java ================================================ package com.yuu.ymall.commons.persistence; import java.util.List; /** * 所有数据访问层的基类 * * @Classname BaseMapper * @Date 2019/5/22 11:14 * @Created by Yuu */ public interface BaseMapper { /** * 新增 * * @param record 对象 * @return */ int insert(T record); /** * 根据主键 id 查询 * * @param id * @return */ T selectByPrimaryKey(Long id); /** * 查询所有数据 * * @return */ List selectAll(); /** * 根据主键 id 更新 * * @param record * @return */ int updateByPrimaryKey(T record); } ================================================ FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/redis/RedisCacheManager.java ================================================ package com.yuu.ymall.commons.redis; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; /** * 缓存管理 * * @author by Yuu * @classname RegisCacheManager * @date 2019/6/26 8:23 */ @Component public class RedisCacheManager { @Autowired private RedisTemplate redisTemplate; /** * 指定缓存失效时间 * * @param key 键 * @param time 失效时间 * @return */ public boolean expire(String key, long time) { try { if (time > 0) { redisTemplate.expire(key, time, TimeUnit.SECONDS); } return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 根据 key 获取过期时间 * * @param key 键 * @return */ public long getExpire(String key) { return redisTemplate.getExpire(key); } /** * 判断 key 是否存在 * * @param key 键 * @return */ public boolean hasKey(String key) { try { return redisTemplate.hasKey(key); } catch (Exception e) { e.printStackTrace(); return false; } } /** * 删除缓存 * * @param key 键 */ public boolean del(String... key) { try { if (key != null && key.length > 0) { if (key.length == 1) { redisTemplate.delete(key[0]); } else { redisTemplate.delete(CollectionUtils.arrayToList(key)); } } return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 普通缓存获取 * * @param key 键 * @return */ public Object get(String key) { return key == null ? null : redisTemplate.opsForValue().get(key); } /** * 普通缓存放入 * * @param key 键 * @param value 值 * @return */ public boolean set(String key, Object value) { try { redisTemplate.opsForValue().set(key, value); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 普通缓存放入并设置时间 * time 要大于 0,如果 time 小于等于 0 ,将设置无限期 * * * @param key * @param value * @param time * @return */ public boolean set(String key, Object value, long time) { try { if (time > 0) { redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); } else{ set(key, value); } return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 存放单个 Hash * * @param key Redis key * @param hashKey Hash key * @param hashValue Hash value * @return */ public boolean setHash(String key, String hashKey, String hashValue) { try { redisTemplate.opsForHash().put(key, hashKey, hashValue); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 存放 HashMap 值 * * @param key redis key * @param hashKey hash key * @param hashValue hash value * @return */ public boolean setHashMap(String key, HashMap hashMap) { try { redisTemplate.opsForHash().putAll(key, hashMap); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 判断 Hash Key 是否存在 * * @param key Redis 缓存 key * @param field Hash key * @return */ public boolean hasHashKye(String key, String field) { try { return redisTemplate.opsForHash().hasKey(key, field); } catch (Exception e) { e.printStackTrace(); return false; } } /** * 获取 Hash 值 * * @param key Redis 缓存 key * @param field Hash key * @return */ public Object getHash(String key, String field) { return key == null || field == null ? null : redisTemplate.opsForHash().get(key, field); } /** * 根据 Redis key, 获取 Hash * @param key * @return */ public Map getHashByKey(String key) { return key == null ? null : redisTemplate.opsForHash().entries(key); } /** * 删除 Hash * * @param key redis key * @param field hash key * @return */ public boolean deleteHash(String key, String field) { try { redisTemplate.opsForHash().delete(key, field); return true; } catch (Exception e) { e.printStackTrace(); return false; } } } ================================================ FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/EsUtil.java ================================================ package com.yuu.ymall.commons.utils; import org.springframework.stereotype.Component; /** * ElasticSearch 客户端连接工具 * * @author by Yuu * @classname EsUtil * @date 2019/6/29 17:51 */ @Component public class EsUtil { } ================================================ FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/HttpUtil.java ================================================ package com.yuu.ymall.commons.utils; import org.apache.http.HttpEntity; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.util.Arrays; /** * * @Classname HttpUtil * @Date 2019/5/13 17:01 * @Created by Yuu */ public class HttpUtil { public static final String GET = "get"; public static final String POST = "post"; public static final String REQUEST_HEADER_CONNECTION = "keep-alive"; public static final String REQUEST_HEADER_USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36"; /** * GET 请求 * * @param url 请求地址 * @return */ public static String doGet(String url) { return createRequest(url, GET, null); } /** * GET 请求 * * @param url 请求地址 * @param cookie cookie * @return */ public static String doGet(String url, String cookie) { return createRequest(url, GET, cookie); } /** * POST 请求 * * @param url 请求地址 * @param params 请求参数(可选) * @return */ public static String doPost(String url, BasicNameValuePair... params) { return createRequest(url, POST, null, params); } /** * POST 请求 * * @param url 请求地址 * @param cookie cookie * @param params 请求参数(可选) * @return */ public static String doPost(String url, String cookie, BasicNameValuePair... params) { return createRequest(url, POST, cookie, params); } /** * 创建请求 * * @param url 请求地址 * @param requestMethod 请求方式 GET/POST * @param cookie cookie * @param params 请求参数 仅限于 POST 请求用 * @return */ private static String createRequest(String url, String requestMethod, String cookie, BasicNameValuePair... params) { CloseableHttpClient httpClient = HttpClients.createDefault(); String result = null; try { // 请求结果 result = null; // 请求方式 HttpGet httpGet = null; HttpPost httpPost = null; // 响应 CloseableHttpResponse httpResponse = null; // GET 请求 if (GET.equals(requestMethod)) { httpGet = new HttpGet(url); httpGet.setHeader("Connection", REQUEST_HEADER_CONNECTION); httpGet.setHeader("Cookie", cookie); httpGet.setHeader("User-Agent", REQUEST_HEADER_USER_AGENT); httpResponse = httpClient.execute(httpGet); } // POST 请求 else if (POST.equals(requestMethod)) { httpPost = new HttpPost(url); httpPost.setHeader("Connection", REQUEST_HEADER_CONNECTION); httpPost.setHeader("Cookie", cookie); httpPost.setHeader("User-Agent", REQUEST_HEADER_USER_AGENT); // 有参数进来 if (params != null && params.length > 0) { httpPost.setEntity(new UrlEncodedFormEntity(Arrays.asList(params), "UTF-8")); } httpResponse = httpClient.execute(httpPost); } HttpEntity httpEntity = httpResponse.getEntity(); result = EntityUtils.toString(httpEntity); } catch (IOException e) { e.printStackTrace(); } finally { if (httpClient != null) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } } ================================================ FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/IDUtil.java ================================================ package com.yuu.ymall.commons.utils; import java.util.Random; /** * @Classname IDUtil * @Date 2019/6/5 23:46 * @Created by Yuu */ public class IDUtil { /** * 随机 id 生成 * * @return */ public static Long getRandomId() { Long millis = System.currentTimeMillis(); // 加上两位随机数 Random random = new Random(); int end = random.nextInt(99); // 如果不足两位前面补 0 String str = millis + String.format("%02d", end); Long id = new Long(str); return id; } } ================================================ FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/MapperUtil.java ================================================ package com.yuu.ymall.commons.utils; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * JSON 转换工具类 * * @Classname MapperUtil * @Date 2019/5/13 19:46 * @Created by Yuu */ public class MapperUtil { private final static ObjectMapper objectMapper = new ObjectMapper(); public static ObjectMapper getInstance() { return objectMapper; } /** * 转换为 JSON 字符串 * * @param obj * @return * @throws Exception */ public static String obj2json(Object obj) throws Exception { return objectMapper.writeValueAsString(obj); } /** * 转换为 JSON 字符串,忽略空值 * * @param obj * @return * @throws Exception */ public static String obj2jsonIgnoreNull(Object obj) throws Exception { ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); return mapper.writeValueAsString(obj); } /** * 转换为 JavaBean * * @param jsonString * @param clazz * @return * @throws Exception */ public static T json2pojo(String jsonString, Class clazz) throws Exception { objectMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); return objectMapper.readValue(jsonString, clazz); } /** * 将指定节点的 JSON 数据转换为 JavaBean * * @param jsonString * @param clazz * @return * @throws Exception */ public static T json2pojoByTree(String jsonString, String treeNode, Class clazz) throws Exception { JsonNode jsonNode = objectMapper.readTree(jsonString); JsonNode data = jsonNode.findPath(treeNode); return json2pojo(data.toString(), clazz); } /** * 字符串转换为 Map * * @param jsonString * @return * @throws Exception */ public static Map json2map(String jsonString) throws Exception { ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); return mapper.readValue(jsonString, Map.class); } /** * 字符串转换为 Map */ public static Map json2map(String jsonString, Class clazz) throws Exception { Map> map = objectMapper.readValue(jsonString, new TypeReference>() { }); Map result = new HashMap(); for (Map.Entry> entry : map.entrySet()) { result.put(entry.getKey(), map2pojo(entry.getValue(), clazz)); } return result; } /** * 深度转换 JSON 成 Map * * @param json * @return */ public static Map json2mapDeeply(String json) throws Exception { return json2MapRecursion(json, objectMapper); } /** * 把 JSON 解析成 List,如果 List 内部的元素存在 jsonString,继续解析 * * @param json * @param mapper 解析工具 * @return * @throws Exception */ private static List json2ListRecursion(String json, ObjectMapper mapper) throws Exception { if (json == null) { return null; } List list = mapper.readValue(json, List.class); for (Object obj : list) { if (obj != null && obj instanceof String) { String str = (String) obj; if (str.startsWith("[")) { obj = json2ListRecursion(str, mapper); } else if (obj.toString().startsWith("{")) { obj = json2MapRecursion(str, mapper); } } } return list; } /** * 把 JSON 解析成 Map,如果 Map 内部的 Value 存在 jsonString,继续解析 * * @param json * @param mapper * @return * @throws Exception */ private static Map json2MapRecursion(String json, ObjectMapper mapper) throws Exception { if (json == null) { return null; } Map map = mapper.readValue(json, Map.class); for (Map.Entry entry : map.entrySet()) { Object obj = entry.getValue(); if (obj != null && obj instanceof String) { String str = ((String) obj); if (str.startsWith("[")) { List list = json2ListRecursion(str, mapper); map.put(entry.getKey(), list); } else if (str.startsWith("{")) { Map mapRecursion = json2MapRecursion(str, mapper); map.put(entry.getKey(), mapRecursion); } } } return map; } /** * 将 JSON 数组转换为集合 * * @param jsonArrayStr * @param clazz * @return * @throws Exception */ public static List json2list(String jsonArrayStr, Class clazz) throws Exception { JavaType javaType = getCollectionType(ArrayList.class, clazz); List list = (List) objectMapper.readValue(jsonArrayStr, javaType); return list; } /** * 将指定节点的 JSON 数组转换为集合 * @param jsonStr JSON 字符串 * @param treeNode 查找 JSON 中的节点 * @return * @throws Exception */ public static List json2listByTree(String jsonStr, String treeNode, Class clazz) throws Exception { JsonNode jsonNode = objectMapper.readTree(jsonStr); JsonNode data = jsonNode.findPath(treeNode); return json2list(data.toString(), clazz); } /** * 获取泛型的 Collection Type * * @param collectionClass 泛型的Collection * @param elementClasses 元素类 * @return JavaType Java类型 * @since 1.0 */ public static JavaType getCollectionType(Class collectionClass, Class... elementClasses) { return objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses); } /** * 将 Map 转换为 JavaBean * * @param map * @param clazz * @return */ public static T map2pojo(Map map, Class clazz) { return objectMapper.convertValue(map, clazz); } /** * 将 Map 转换为 JSON * * @param map * @return */ public static String mapToJson(Map map) { try { return objectMapper.writeValueAsString(map); } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 将 JSON 对象转换为 JavaBean * * @param obj * @param clazz * @return */ public static T obj2pojo(Object obj, Class clazz) { return objectMapper.convertValue(obj, clazz); } } ================================================ FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/SendSmsUtil.java ================================================ package com.yuu.ymall.commons.utils; import com.aliyuncs.CommonRequest; import com.aliyuncs.CommonResponse; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.http.MethodType; import com.aliyuncs.profile.DefaultProfile; /** * @author by Yuu * @classname SendSmsUtil * @date 2019/6/24 9:06 */ public class SendSmsUtil { /** * 阿里云短信 accesskey_id */ private static final String ACCESSKEYID = "LTAIF9a6WQp8ubSP"; /** * 阿里云短信 secret */ private static final String SECRET = "VL5pg3reFZcWckwS9uwyCy5XP64Yll"; /** * 阿里云短信签名名称 */ private static final String SIGNNAME = "YMall"; /** * 阿里云短信模板Code */ private static final String TEMPLATECODE = "SMS_168592535"; /** * 阿里云短信模板变量对应的实际值,JSON 格式 */ private static final String TEMPLATEPARAM = "{\"code\":\"123\"}"; /** * 发送短信 * * @param phone 手机号 * @return */ public static String sendSms(String phone) { DefaultProfile profile = DefaultProfile.getProfile("default", ACCESSKEYID, SECRET); IAcsClient client = new DefaultAcsClient(profile); CommonRequest request = new CommonRequest(); request.setMethod(MethodType.POST); request.setDomain("dysmsapi.aliyuncs.com"); request.setVersion("2017-05-25"); request.setAction("SendSms"); request.putQueryParameter("PhoneNumbers", phone); request.putQueryParameter("SignName", SIGNNAME); request.putQueryParameter("TemplateCode", TEMPLATECODE); String numeric = String.valueOf((int)((Math.random() * 9 + 1) * 100000)); request.putQueryParameter("TemplateParam", "{\"code\":\""+ numeric +"\"}"); String result = ""; try { CommonResponse response = client.getCommonResponse(request); result = response.getData(); System.out.println(result); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } return numeric; } } ================================================ FILE: ymall-commons/src/main/java/com.yuu.ymall.commons/utils/TimeUtil.java ================================================ package com.yuu.ymall.commons.utils; import java.sql.Timestamp; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * 时间工具类 * * @author by Yuu * @classname TimeUtil * @date 2019/6/21 13:26 */ public class TimeUtil { /** * 获取本周的开始时间 * * @return */ public static Date getBeginDayOfWeek() { Date date = new Date(); if (date == null) { return null; } Calendar cal = Calendar.getInstance(); cal.setTime(date); int dayofweek = cal.get(Calendar.DAY_OF_WEEK); if (dayofweek == 1) { dayofweek += 7; } cal.add(Calendar.DATE, 2 - dayofweek); return getDayStartTime(cal.getTime()); } /** * 获取本周的结束时间 * * @return */ public static Date getEndDayOfWeek(){ Calendar cal = Calendar.getInstance(); cal.setTime(getBeginDayOfWeek()); cal.add(Calendar.DAY_OF_WEEK, 6); Date weekEndSta = cal.getTime(); return getDayEndTime(weekEndSta); } /** * 获取本月的开始时间 * * @return */ public static Date getBeginDayOfMonth() { Calendar calendar = Calendar.getInstance(); calendar.set(getNowYear(), getNowMonth() - 1, 1); return getDayStartTime(calendar.getTime()); } /** * 获取本月的结束时间 * * @return */ public static Date getEndDayOfMonth() { Calendar calendar = Calendar.getInstance(); calendar.set(getNowYear(), getNowMonth() - 1, 1); int day = calendar.getActualMaximum(5); calendar.set(getNowYear(), getNowMonth() - 1, day); return getDayEndTime(calendar.getTime()); } /** * 获取上个月的开始时间 * * @return */ public static Date getBeginDayOfLastMonth() { Calendar calendar = Calendar.getInstance(); calendar.set(getNowYear(), getNowMonth() - 2, 1); return getDayStartTime(calendar.getTime()); } /** * 获取上个月的结束时间 * * @return */ public static Date getEndDayOfLastMonth() { Calendar calendar = Calendar.getInstance(); calendar.set(getNowYear(), getNowMonth() - 2, 1); int day = calendar.getActualMaximum(5); calendar.set(getNowYear(), getNowMonth() - 2, day); return getDayEndTime(calendar.getTime()); } /** * 获取本年的开始时间 * * @return */ public static Date getBeginDayOfYear(Integer year) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); // cal.set cal.set(Calendar.MONTH, Calendar.JANUARY); cal.set(Calendar.DATE, 1); return getDayStartTime(cal.getTime()); } /** * 获取本年的结束时间 * * @return */ public static Date getEndDayOfYear(Integer year) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, Calendar.DECEMBER); cal.set(Calendar.DATE, 31); return getDayEndTime(cal.getTime()); } /** * 获取某个日期的开始时间 * * @param d * @return */ public static Timestamp getDayStartTime(Date d) { Calendar calendar = Calendar.getInstance(); if(null != d){ calendar.setTime(d); } calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0); calendar.set(Calendar.MILLISECOND, 0); return new Timestamp(calendar.getTimeInMillis()); } /** * 获取某个日期的结束时间 * * @param d * @return */ public static Timestamp getDayEndTime(Date d) { Calendar calendar = Calendar.getInstance(); if(null != d) { calendar.setTime(d); } calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59); calendar.set(Calendar.MILLISECOND, 999); return new Timestamp(calendar.getTimeInMillis()); } /** * 获取今年是哪一年 * * @return */ public static Integer getNowYear() { Date date = new Date(); GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); gc.setTime(date); return Integer.valueOf(gc.get(1)); } /** * 获取本月是哪一月 * * @return */ public static int getNowMonth() { Date date = new Date(); GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); gc.setTime(date); return gc.get(2) + 1; } } ================================================ FILE: ymall-dependencies/pom.xml ================================================ 4.0.0 com.yuu ymall 1.0.0-SNAPSHOT ../pom.xml ymall-dependencies pom ymall-dependencies Unified Dependency Management UTF-8 UTF-8 1.8 1.1.6 4.1.0 3.7.110.ALL 3.3.2 1.1.1 1.3.2 3.3 1.3.3 5.6.2 2.3.23 4.5.3 4.0.5 2.9.1 3.21.0-GA 2.9.0 1.2 20171018 2.9.9 4.12 1.2.17 2.9.1 1.16.18 1.5.0-b01 1.3.1 3.4.5 5.1.44 1.2.15 4.1.6 7.2.0 2.2.3 3.1.0 1.8.0-alpha2 5.0.4.RELEASE 1.8.22.RELEASE 3.0.5.RELEASE 1.4.0 2.9.2 3.0.5.RELEASE junit junit ${junit.version} org.springframework spring-test ${spring.version} org.springframework spring-core ${spring.version} joda-time joda-time ${joda-time.version} org.apache.commons commons-lang3 ${commons-lang3.version} org.apache.commons commons-io ${commons-io.version} commons-net commons-net ${commons-net.version} commons-fileupload commons-fileupload ${commons-fileupload.version} commons-logging commons-logging ${commons-logging.version} com.fasterxml.jackson.core jackson-databind ${jackson.version} com.fasterxml.jackson.core jackson-core ${jackson.version} com.fasterxml.jackson.core jackson-annotations ${jackson.version} org.apache.httpcomponents httpclient ${httpclient.version} org.slf4j slf4j-api ${slf4j.version} org.slf4j slf4j-log4j12 ${slf4j.version} org.slf4j jcl-over-slf4j ${slf4j.version} org.slf4j jul-to-slf4j ${slf4j.version} log4j log4j ${log4j.version} com.alibaba druid ${alibaba-druid.version} mysql mysql-connector-java ${mysql.version} org.mybatis mybatis ${mybatis.version} org.mybatis mybatis-spring ${mybaits-spring.version} org.springframework spring-jdbc ${spring.version} com.github.miemiedev mybatis-paginator ${mybatis-paginator.version} com.github.pagehelper pagehelper ${pagehelper.version} org.springframework spring-context ${spring.version} org.springframework spring-webmvc ${spring.version} org.springframework spring-aspects ${spring.version} org.springframework spring-tx ${spring.version} org.springframework spring-context-support ${spring.version} javax.servlet javax.servlet-api ${servlet-api.version} provided javax.servlet jstl ${jstl.version} redis.clients jedis ${jedis.version} org.springframework.data spring-data-redis ${spring-data-redis.version} org.freemarker freemarker ${freemarker.version} org.javassist javassist ${javassist.version} org.elasticsearch elasticsearch ${elasticsearch.version} org.elasticsearch.client transport ${elasticsearch.version} org.springframework.data spring-data-elasticsearch ${spring-data-elasticsearch.version} org.elasticsearch.plugin transport-netty3-clientn org.apache.shiro shiro-all ${shiro.version} org.json json ${json.version} javax.mail mail ${mail.version} cn.hutool hutool-all ${hutool.version} org.json json ${json.version} org.thymeleaf thymeleaf-spring4 ${thymeleaf.version} org.projectlombok lombok ${lombok.version} io.springfox springfox-swagger2 ${swegger2.version} io.springfox springfox-swagger-ui ${swegger2.version} com.qiniu qiniu-java-sdk ${qiniuyun.version} com.aliyun aliyun-java-sdk-core ${aliyun-sms.version} com.alipay.sdk alipay-sdk-java ${alipay.version} com.alipay alipay-trade-sdk 20161215 org.quartz-scheduler quartz ${quartz.version} org.springframework spring-web ${spring.version} org.apache.maven.plugins maven-install-plugin 2.5.2 org.apache.maven.plugins maven-compiler-plugin 3.7.0 ${java.version} ${java.version} ${project.build.sourceEncoding} true ${project.basedir}/src/main/webapp/lib org.apache.maven.plugins maven-install-plugin 2.5.2 install-external-alipay clean ${project.basedir}/libs/alipay-trade-sdk-20161215.jar default com.alibaba alipay-trade-sdk 20161215 jar true install-file src/main/java **/*.java src/main/resources ================================================ FILE: ymall-domain/pom.xml ================================================ 4.0.0 com.yuu ymall-dependencies 1.0.0-SNAPSHOT ../ymall-dependencies/pom.xml ymall-domain jar ymall-domain Domain Model com.yuu ymall-commons ${project.parent.version} ================================================ FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbAddress.java ================================================ package com.yuu.ymall.domain; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * 地址实体 */ @Data public class TbAddress implements Serializable { /** * 地址 id */ private Long id; /** * 用户 id */ private Long userId; /** * 用户名 */ private String userName; /** * 电话 */ private String tel; /** * 省份 */ private String state; /** * 城市 */ private String city; /** * 区/县 */ private String district; /** * 街道地址 */ private String streetName; /** * 是否为默认地址 */ private Boolean isDefault; /** * 创建日期 */ private Date created; /** * 更新日期 */ private Date updated; /** * 详细地址 */ private String detailsAddress; } ================================================ FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbExpress.java ================================================ package com.yuu.ymall.domain; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * 快递实体 */ @Data public class TbExpress implements Serializable { /** * 快递 id */ private Integer id; /** * 快递名称 */ private String expressName; /** * 排列序号 */ private Integer sortOrder; /** * 创建时间 */ private Date created; /** * 更新时间 */ private Date updated; } ================================================ FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbItem.java ================================================ package com.yuu.ymall.domain; import lombok.Data; import org.apache.commons.lang3.StringUtils; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; /** * 商品实体 */ @Data public class TbItem implements Serializable { /** * 商品 id */ private Long id; /** * 商品标题 */ private String title; /** * 商品卖点 */ private String sellPoint; /** * 商品价格 */ private BigDecimal price; /** * 商品库存 */ private Integer num; /** * 一次最多购买多少件 */ private Integer limitNum; /** * 商品图片 */ private String image; /** * 商品分类 id */ private Long cid; /** * 商品状态 */ private Integer status; /** * 创建时间 */ private Date created; /** * 更新时间 */ private Date updated; /** * 获取图片地址数组 * * @return */ public String[] getImages() { if (!StringUtils.isBlank(this.image)) { String[] images = this.image.split(","); return images; } return null; } } ================================================ FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbItemCat.java ================================================ package com.yuu.ymall.domain; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * 商品类目实体 */ @Data public class TbItemCat implements Serializable { /** * 类目 id */ private Long id; /** * 父分类 ID = 0 代表一级根分类 */ private Long parentId; /** * 分类名称 */ private String name; /** * 分类状态 */ private Integer status; /** * 排列序号 */ private Integer sortOrder; /** * 是否为父分类 1 为 true 0 为 false */ private Boolean isParent; /** * 创建时间 */ private Date created; /** * 更新时间 */ private Date updated; } ================================================ FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbItemDesc.java ================================================ package com.yuu.ymall.domain; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * 商品描述实体 */ @Data public class TbItemDesc implements Serializable { /** * 商品 id */ private Long itemId; /** * 商品描述信息 */ private String itemDesc; /** * 创建时间 */ private Date created; /** * 更新时间 */ private Date updated; } ================================================ FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbMember.java ================================================ package com.yuu.ymall.domain; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * 会员实体 */ @Data public class TbMember implements Serializable { /** * 会员 id */ private Long id; /** * 会员用户名 */ private String username; /** * 会员密码 */ private String password; /** * 会员手机号 */ private String phone; /** * 会员邮箱 */ private String email; /** * 会员性别 */ private String sex; /** * 会员状态 */ private Integer state; /** * 会员头像 */ private String file; /** * 会员描述 */ private String description; /** * 创建时间 */ private Date created; /** * 更新时间 */ private Date updated; /** * 前台登录 Token */ private String token; } ================================================ FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbOrder.java ================================================ package com.yuu.ymall.domain; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; /** * 订单实体 */ @Data public class TbOrder implements Serializable { /** * 订单 id */ private String id; /** * 实付金额 */ private BigDecimal payment; /** * 支付类型 1 在线支付 2 货到付款 */ private Integer paymentType; /** * 邮费 */ private BigDecimal postFee; /** * 0 未付款 * 1 已付款 * 2 未发货 * 3 已发货 * 4 交易成功 * 5 交易关闭 * 6 交易失败 */ private Integer status; /** * 付款时间 */ private Date paymentTime; /** * 发货时间 */ private Date consignTime; /** * 交易完成时间 */ private Date endTime; /** * 交易关闭时间 */ private Date closeTime; /** * 物流名称 */ private String shippingName; /** * 物流单号 */ private String shippingCode; /** * 用户 id */ private Long userId; /** * 买家留言 */ private String buyerMessage; /** * 买家昵称 */ private String buyerNick; /** * 买家是否已经评论 */ private Boolean buyerComment; /** * 创建时间 */ private Date created; /** * 更新时间 */ private Date updated; } ================================================ FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbOrderItem.java ================================================ package com.yuu.ymall.domain; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; /** * 订单项实体 */ @Data public class TbOrderItem implements Serializable { /** * 订单项 id */ private String id; /** * 商品 id */ private String itemId; /** * 订单 id */ private String orderId; /** * 商品购买数量 */ private Integer num; /** * 商品标题 */ private String title; /** * 商品单价 */ private BigDecimal price; /** * 商品总金额 */ private BigDecimal totalFee; /** * 商品图片地址 */ private String picPath; /** * 本周卖出总数 */ private Integer total; } ================================================ FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbOrderShipping.java ================================================ package com.yuu.ymall.domain; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * 订单物流信息实体 */ @Data public class TbOrderShipping implements Serializable { /** * 订单物流 id */ private String orderId; /** * 收货人全名 */ private String receiverName; /** * 固定电话 */ private String receiverPhone; /** * 移动电话 */ private String receiverMobile; /** * 省份 */ private String receiverProvince; /** * 城市 */ private String receiverCity; /** * 区/县 */ private String receiverDistrict; /** * 收获地址 */ private String receiverAddress; /** * 邮政编码 */ private String receiverZip; /** * 创建时间 */ private Date created; /** * 更新时间 */ private Date updated; } ================================================ FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbPanel.java ================================================ package com.yuu.ymall.domain; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * 板块实体 */ @Data public class TbPanel implements Serializable { /** * 板块 id */ private Integer id; /** * 板块名称 */ private String name; /** * 板块类型 0 轮播图 1 板块种类一 2 板块种类二 3 板块种类三 */ private Integer type; /** * 排列序号 */ private Integer sortOrder; /** * 所属位置 0 首页 1 商品推荐 2 我要捐赠 */ private Integer position; /** * 板块限制商品数量 */ private Integer limitNum; /** * 板块状态 */ private Integer status; /** * 创建时间 */ private Date created; /** * 更新时间 */ private Date updated; } ================================================ FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbPanelContent.java ================================================ package com.yuu.ymall.domain; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; /** * 板块内容实体 */ @Data public class TbPanelContent implements Serializable { /** * 板块内容 id */ private Integer id; /** * 所属板块 id */ private Integer panelId; /** * 板块内容类型 0 关联商品 1 其他链接 */ private Integer type; /** * 关联商品 id */ private Long productId; /** * 排列序号 */ private Integer sortOrder; /** * 其它链接 */ private String fullUrl; /** * 图片地址 */ private String picUrl; /** * 3d 轮播图备用1 */ private String picUrl2; /** * 3d 轮播图备用2 */ private String picUrl3; /** * 创建时间 */ private Date created; /** * 更新时间 */ private Date updated; /** * 关联商品价格 */ private BigDecimal salePrice; /** * 关联商品名称 */ private String productName; /** * 关联商品标题 */ private String subTitle; } ================================================ FILE: ymall-domain/src/main/java/com/yuu/ymall/domain/TbUser.java ================================================ package com.yuu.ymall.domain; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * 用户实体 */ @Data public class TbUser implements Serializable { /** * 用户 id */ private Long id; /** * 用户名 */ private String username; /** * 用户密码 */ private String password; /** * 创建时间 */ private Date created; /** * 更新时间 */ private Date updated; } ================================================ FILE: ymall-web-admin/.rebel.xml.bak ================================================ ================================================ FILE: ymall-web-admin/pom.xml ================================================ 4.0.0 com.yuu ymall-dependencies 1.0.0-SNAPSHOT ../ymall-dependencies/pom.xml ymall-web-admin war ymall-web-admin Back Admin Management com.alibaba druid mysql mysql-connector-java org.mybatis mybatis org.mybatis mybatis-spring org.springframework spring-jdbc com.github.miemiedev mybatis-paginator com.github.pagehelper pagehelper com.yuu ymall-commons ${project.parent.version} com.yuu ymall-domain ${project.parent.version} org.springframework spring-webmvc org.springframework spring-aspects org.springframework spring-context-support javax.servlet javax.servlet-api provided javax.servlet jstl org.apache.shiro shiro-all io.springfox springfox-swagger2 io.springfox springfox-swagger-ui com.qiniu qiniu-java-sdk cn.hutool hutool-all ${hutool.version} org.mybatis.generator mybatis-generator-maven-plugin 1.3.2 src/main/resources/generatorConfig.xml true true mysql mysql-connector-java ${mysql.version} ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/consts/Consts.java ================================================ package com.yuu.ymall.web.admin.commons.consts; /** * 常量类 * * @Classname Consts * @Date 2019/6/15 20:13 * @Created by Yuu */ public class Consts { /** * ####### 订单状态 */ /** * 订单未付款 */ public static final Integer ORDER_STATE_UNPAID = 0; /** * 订单已付款 */ public static final Integer ORDER_STATE_PAID = 1; /** * 订单未发货 */ public static final Integer ORDER_STATE_UNSHIPPED = 2; /** * 订单已发货 */ public static final Integer ORDER_STATE_SHIPPED = 3; /** * 订单交易成功 */ public static final Integer ORDER_STATE_SUCCESS = 4; /** * 订单交易关闭 */ public static final Integer ORDER_STATE_CLOSE = 5; /** * 交易失败 */ public static final Integer ORDER_STATE_FAILED = 6; /** * ######### 会员状态 */ /** * 会员启用,正常状态 */ public static final Integer MEMBER_START = 1; /** * 会员被封禁 */ public static final Integer MEMBER_BAN = 2; /** * ######### 报表统计 */ /** * 自定义查询报表 */ public static final Integer CUSTOM_DATE = -1; /** * 按年统计 */ public static final Integer CUSTOM_YEAR = -2; /** * 本周 */ public static final Integer THIS_WEEK = 0; /** * 本月 */ public static final Integer THIS_MONTH = 1; /** * 上个月 */ public static final Integer LAST_MONTH = 2; } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/ChartData.java ================================================ package com.yuu.ymall.web.admin.commons.dto; import java.io.Serializable; import java.util.List; /** * EChart 数据传输对象 * * @author by Yuu * @classname ChartData * @date 2019/6/21 11:00 */ public class ChartData implements Serializable { /** * x 轴数据 */ private List xDatas; /** * y 轴数据 */ private List yDatas; /** * 总计 */ private Object countAll; public List getxDatas() { return xDatas; } public void setxDatas(List xDatas) { this.xDatas = xDatas; } public List getyDatas() { return yDatas; } public void setyDatas(List yDatas) { this.yDatas = yDatas; } public Object getCountAll() { return countAll; } public void setCountAll(Object countAll) { this.countAll = countAll; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/City.java ================================================ package com.yuu.ymall.web.admin.commons.dto; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.io.Serializable; /** * @Classname City * @Date 2019/5/13 19:43 * @Created by Yuu */ @JsonIgnoreProperties(ignoreUnknown = true) public class City implements Serializable { /** * 城市 */ String city; /** * 区域 */ String distrct; public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getDistrct() { return distrct; } public void setDistrct(String distrct) { this.distrct = distrct; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/DataTablesResult.java ================================================ package com.yuu.ymall.web.admin.commons.dto; import lombok.Getter; import lombok.Setter; import javax.servlet.http.HttpServletRequest; import java.io.Serializable; import java.util.List; /** * 分页展示对象 * * @Classname PageInfo * @Date 2019/5/16 23:53 * @Created by Yuu */ @Setter @Getter public class DataTablesResult implements Serializable { private int draw; private int recordsTotal; private int recordsFiltered; private List data; private String error; private int start = 0; private int length = 10; private int pageNum = 1; /** * 初始化 DataTables 数据 * @param request */ public DataTablesResult(HttpServletRequest request) { String strDraw = request.getParameter("draw"); String strStart = request.getParameter("start"); String strLength = request.getParameter("length"); this.draw = strDraw == null ? 0 : Integer.parseInt(strDraw); this.start = strStart == null ? 0 : Integer.parseInt(strStart); this.length = strLength == null ? 10 : Integer.parseInt(strLength); // 计算页面 this.pageNum = start/length + 1; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/IpWeatherResult.java ================================================ package com.yuu.ymall.web.admin.commons.dto; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.io.Serializable; import java.util.List; /** * @Classname IpWeatherResult * @Date 2019/5/13 19:42 * @Created by Yuu */ @JsonIgnoreProperties(ignoreUnknown = true) public class IpWeatherResult implements Serializable { /** * 消息 */ String msg; /** * 返回数据 */ List result; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public List getResult() { return result; } public void setResult(List result) { this.result = result; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/ItemDto.java ================================================ package com.yuu.ymall.web.admin.commons.dto; import com.yuu.ymall.domain.TbItem; import lombok.Data; /** * @Classname ItemDto * @Date 2019/6/5 23:19 * @Created by Yuu */ @Data public class ItemDto extends TbItem { /** * 商品描述 */ private String detail; /** * 商品分类名称 */ private String cname; } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/OrderChartData.java ================================================ package com.yuu.ymall.web.admin.commons.dto; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; /** * 订单统计数据传输对象 * * @author by Yuu * @classname OrderChartData * @date 2019/6/21 11:31 */ public class OrderChartData implements Serializable { /** * 日期 */ Date time; /** * 总销量 */ BigDecimal money; public Date getTime() { return time; } public void setTime(Date time) { this.time = time; } public BigDecimal getMoney() { return money; } public void setMoney(BigDecimal money) { this.money = money; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/OrderDetail.java ================================================ package com.yuu.ymall.web.admin.commons.dto; import com.yuu.ymall.domain.TbOrder; import com.yuu.ymall.domain.TbOrderItem; import com.yuu.ymall.domain.TbOrderShipping; import java.io.Serializable; import java.util.List; /** * 订单详情 * * @Classname OrderDetail * @Date 2019/6/14 22:09 * @Created by Yuu */ public class OrderDetail implements Serializable { /** * 订单信息 */ private TbOrder tbOrder; /** * 订单项集合 */ private List tbOrderItemList; /** * 订单收货信息 */ private TbOrderShipping tbOrderShipping; public TbOrder getTbOrder() { return tbOrder; } public void setTbOrder(TbOrder tbOrder) { this.tbOrder = tbOrder; } public List getTbOrderItemList() { return tbOrderItemList; } public void setTbOrderItemList(List tbOrderItemList) { this.tbOrderItemList = tbOrderItemList; } public TbOrderShipping getTbOrderShipping() { return tbOrderShipping; } public void setTbOrderShipping(TbOrderShipping tbOrderShipping) { this.tbOrderShipping = tbOrderShipping; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/dto/ZTreeNode.java ================================================ package com.yuu.ymall.web.admin.commons.dto; import lombok.Getter; import lombok.Setter; import java.io.Serializable; /** * @Classname ZTreeNode * @Date 2019/5/20 8:48 * @Created by Yuu */ @Getter @Setter public class ZTreeNode implements Serializable { private int id; private int pId; private String name; private Boolean isParent; private Boolean open; private String icon; private int status; private int sortOrder; private String remark; /** * 板块限制商品数量 */ private int limitNum; /** * 板块类型 */ private int type; } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/es/ESItem.java ================================================ package com.yuu.ymall.web.admin.commons.es; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; /** * Elasticsearch 对应实体类 * * @author by Yuu * @classname ESItem * @date 2019/6/29 21:39 */ @Document(indexName = "item", type = "itemList", shards = 1, replicas = 0) public class ESItem { /** * 商品 ID */ @Id private Long id; /** * 商品名称 */ @Field(type = FieldType.text, analyzer = "ik_max_word") private String productName; /** * 商品副标题 */ @Field(type = FieldType.text, analyzer = "ik_max_word") private String subTitle; /** * 商品 id */ @Field(type = FieldType.Long) private Long productId; /** * 分类 id */ @Field(type = FieldType.Long) private Long cid; /** * 商品售价 */ @Field(type = FieldType.Double) private Double salePrice; /** * 商品大图 1 张 */ @Field(type = FieldType.keyword) private String picUrl; /** * 商品销量 */ @Field(type = FieldType.Integer) private Integer orderNum; /** * 商品限制购买数量 */ @Field(type = FieldType.Integer) private Integer limit; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getProductName() { return productName; } public void setProductName(String productName) { this.productName = productName; } public String getSubTitle() { return subTitle; } public void setSubTitle(String subTitle) { this.subTitle = subTitle; } public Long getProductId() { return productId; } public void setProductId(Long productId) { this.productId = productId; } public Long getCid() { return cid; } public void setCid(Long cid) { this.cid = cid; } public Double getSalePrice() { return salePrice; } public void setSalePrice(Double salePrice) { this.salePrice = salePrice; } public String getPicUrl() { return picUrl; } public void setPicUrl(String picUrl) { this.picUrl = picUrl; } public Integer getOrderNum() { return orderNum; } public void setOrderNum(Integer orderNum) { this.orderNum = orderNum; } public Integer getLimit() { return limit; } public void setLimit(Integer limit) { this.limit = limit; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/shiro/MyRealm.java ================================================ package com.yuu.ymall.web.admin.commons.shiro; import com.yuu.ymall.domain.TbUser; import com.yuu.ymall.web.admin.service.UserService; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.authc.SimpleAuthenticationInfo; import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.realm.AuthorizingRealm; import org.apache.shiro.subject.PrincipalCollection; import org.springframework.beans.factory.annotation.Autowired; /** * @Classname MyRealm * @Date 2019/5/11 18:47 * @Created by Yuu */ public class MyRealm extends AuthorizingRealm { @Autowired private UserService userService; /** * 先执行登录验证 * * @param authenticationToken * @return * @throws AuthenticationException */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { // 获取用户名密码 String username = authenticationToken.getPrincipal().toString(); TbUser tbUser = userService.getUserByUsername(username); if (tbUser != null) { // 得到用户账号和密码存放到 authenticationInfo 用于 Controller 层的权限判断,第三个参数随意不能为空 AuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(tbUser.getUsername(), tbUser.getPassword(), tbUser.getUsername()); return authenticationInfo; } return null; } @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { return null; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/swagger/SwaggerConfiguration.java ================================================ package com.yuu.ymall.web.admin.commons.swagger; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * @Classname Swagger2Confinguration * @Date 2019/5/12 11:33 * @Created by Yuu */ @Configuration // 让 Spring 来加载该配置类 @EnableWebMvc // 非 Spring Boot 需启用 @EnableSwagger2 // 启用 Swagger2 @ComponentScan(basePackages = "com.yuu.ymall.web.admin.web.controller") public class SwaggerConfiguration { public static final Logger log = LoggerFactory.getLogger(SwaggerConfiguration.class); @Bean public Docket createRestApi() { log.info("开始加载Swagger2..."); return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() // 扫描指定包中的 swagger 注解 //.apis(RequestHandlerSelectors.basePackage("com.yuu.ymall.controller.admin.controller")) // 扫描所有有注解的 api,用这种方式更灵活 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("YMall API Documentation") .description("YMall 商城管理后台API接口") .termsOfServiceUrl("https://www.71yuu.com") .contact(new Contact("Yuu", "https://www.71yuu.com", "1225459207@qq.com")) .version("1.0.0") .build(); } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/DtoUtil.java ================================================ package com.yuu.ymall.web.admin.commons.utils; import com.yuu.ymall.domain.TbItemCat; import com.yuu.ymall.domain.TbPanel; import com.yuu.ymall.web.admin.commons.dto.ZTreeNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @Classname DtoUtil * @Date 2019/5/20 9:21 * @Created by Yuu */ public class DtoUtil { private final static Logger log = LoggerFactory.getLogger(DtoUtil.class); /** * 板块类目封装 ZTreeNode 对象 * * @param tbPanel 板块类目 * @return */ public static ZTreeNode TbPanel2ZTreeNode(TbPanel tbPanel) { ZTreeNode zTreeNode = new ZTreeNode(); zTreeNode.setId(tbPanel.getId()); zTreeNode.setIsParent(false); zTreeNode.setPId(0); zTreeNode.setName(tbPanel.getName()); zTreeNode.setSortOrder(tbPanel.getSortOrder()); zTreeNode.setStatus(tbPanel.getStatus()); zTreeNode.setLimitNum(tbPanel.getLimitNum()); zTreeNode.setType(tbPanel.getType()); return zTreeNode; } /** * 商品分类封装 ZTreeNode 对象 * * @param tbItemCat 商品分类 * @return */ public static ZTreeNode TbItemCat2ZTreeNode(TbItemCat tbItemCat) { ZTreeNode zTreeNode = new ZTreeNode(); zTreeNode.setId(Math.toIntExact(tbItemCat.getId())); zTreeNode.setStatus(tbItemCat.getStatus()); zTreeNode.setSortOrder(tbItemCat.getSortOrder()); zTreeNode.setName(tbItemCat.getName()); zTreeNode.setPId(Math.toIntExact(tbItemCat.getParentId())); zTreeNode.setIsParent(tbItemCat.getIsParent()); return zTreeNode; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/IDUtil.java ================================================ package com.yuu.ymall.web.admin.commons.utils; import java.util.Random; /** * @Classname IDUtil * @Date 2019/6/5 23:46 * @Created by Yuu */ public class IDUtil { /** * 随机 id 生成 * * @return */ public static Long getRandomId() { Long millis = System.currentTimeMillis(); // 加上两位随机数 Random random = new Random(); int end = random.nextInt(99); // 如果不足两位前面补 0 String str = millis + String.format("%02d", end); Long id = new Long(str); return id; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/IPInfoUtil.java ================================================ package com.yuu.ymall.web.admin.commons.utils; import com.yuu.ymall.commons.utils.HttpUtil; import com.yuu.ymall.commons.utils.MapperUtil; import com.yuu.ymall.web.admin.commons.dto.IpWeatherResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.http.HttpServletRequest; import java.net.InetAddress; import java.net.UnknownHostException; /** * IP 信息工具类 * * @Classname IPInfoUtil * @Date 2019/5/13 14:09 * @Created by Yuu */ public class IPInfoUtil { private static final Logger log = LoggerFactory.getLogger(IPInfoUtil.class); /** * Mob全国天气预报接口 */ private final static String GET_WEATHER="http://apicloud.mob.com/v1/weather/ip?key=2b1e8ccdabd32&ip="; /** * 获取客户端 IP 地址 * * @param request 请求 * @return */ public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); if (ip.equals("127.0.0.1")) { //根据网卡取本机配置的IP InetAddress inet = null; try { inet = InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace(); } ip = inet.getHostAddress(); } } // 对于通过多个代理的情况下,第一个 IP 为客户端真实 IP ,多个 IP 按照‘,’分割 if (ip != null && ip.length() > 15) { if (ip.indexOf(",") > 0) { ip = ip.substring(0, ip.indexOf(",")); } } if("0:0:0:0:0:0:0:1".equals(ip)){ ip="127.0.0.1"; } return ip; } /** * 获取 IP 返回天气 * @param ip ip 地址 * @return */ public static String getIpInfo(String ip) { if (null != ip) { String url = GET_WEATHER + ip; String result = HttpUtil.doGet(url); return result; } return null; } /** * 获取 IP 返回地理信息 * * @param ip ip 地址 * @return */ public static String getIpCity(String ip) { if (ip != null) { String url = GET_WEATHER + ip; String json = HttpUtil.doGet(url); IpWeatherResult weather = null; String result = "未知"; try { weather = MapperUtil.json2pojo(json, IpWeatherResult.class); } catch (Exception e) { e.printStackTrace(); } result = weather.getResult().get(0).getCity() + " " + weather.getResult().get(0).getDistrct(); return result; } return null; } public static void main(String[] args) { log.info(getIpInfo("192.168.23.1")); } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/ObjectUtil.java ================================================ package com.yuu.ymall.web.admin.commons.utils; import com.google.common.collect.Maps; import com.yuu.ymall.commons.utils.MapperUtil; import org.springframework.cglib.beans.BeanMap; import java.util.HashMap; import java.util.Map; /** * @Classname ObjectUtil * @Date 2019/5/13 16:26 * @Created by Yuu */ public class ObjectUtil { /** * Bean 转 Map * @param bean * @param * @return */ public static Map beanToMap(T bean) { Map map = Maps.newHashMap(); if (bean != null) { BeanMap beanMap = BeanMap.create(bean); for (Object key : beanMap.keySet()) { map.put(key+"", beanMap.get(key)); } } return map; } public static String mapToStringAll(Map paramMap) throws Exception { if (paramMap == null) { return ""; } Map params = new HashMap<>(16); for (Map.Entry param : paramMap.entrySet()) { String key = param.getKey(); String paramValue = (param.getValue() != null && param.getValue().length > 0 ? param.getValue()[0] : ""); params.put(key, paramValue); } return MapperUtil.obj2json(params); } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/QiniuUtil.java ================================================ package com.yuu.ymall.web.admin.commons.utils; import com.google.gson.Gson; import com.qiniu.common.QiniuException; import com.qiniu.common.Zone; import com.qiniu.http.Response; import com.qiniu.storage.Configuration; import com.qiniu.storage.UploadManager; import com.qiniu.storage.model.DefaultPutRet; import com.qiniu.util.Auth; import com.qiniu.util.StringMap; import com.qiniu.util.UrlSafeBase64; import com.yuu.ymall.commons.execption.YmallUploadException; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.FileInputStream; import java.io.IOException; import java.util.Arrays; import java.util.HashMap; /** * 七牛云图片上传工具类 * @Classname QiniuUtil * @Date 2019/5/24 20:38 * @Created by Yuu */ public class QiniuUtil { private final static Logger log = LoggerFactory.getLogger(QiniuUtil.class); /** * 生成上传凭证,然后准备上传 */ private static String accessKey = "1v01i-JOwyKIbxFKhrDj6YfwRREUR47W_nh0sSEh"; private static String secretKey = "mFmbgY9JehH9ovJvPXQMajMWJv5feqNXaXi9_r6B"; private static String bucket = "ymall"; private static String origin = "http://pub7lsomw.bkt.clouddn.com/"; private static Auth auth = Auth.create(accessKey, secretKey); /** * 普通方式上传 * @param filePath * @return */ public static String qiniuUpload(String filePath){ //构造一个带指定Zone对象的配置类 zone2华南 Configuration cfg = new Configuration(Zone.zone2()); UploadManager uploadManager = new UploadManager(cfg); String localFilePath = filePath; //默认不指定key的情况下,以文件内容的hash值作为文件名 String key = null; Auth auth = Auth.create(accessKey, secretKey); String upToken = auth.uploadToken(bucket); try { Response response = uploadManager.put(localFilePath, key, upToken); //解析上传成功的结果 DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class); return origin + putRet.key; }catch(QiniuException ex){ Response r = ex.response; log.warn(r.toString()); try { return r.bodyString(); } catch (QiniuException e) { throw new YmallUploadException(e.toString()); } } } /** * 文件流上传 * @param file * @param key 文件名 * @return */ public static String qiniuInputStreamUpload(FileInputStream file, String key){ //构造一个带指定Zone对象的配置类 zone2华南 Configuration cfg = new Configuration(Zone.zone2()); UploadManager uploadManager = new UploadManager(cfg); Auth auth = Auth.create(accessKey, secretKey); String upToken = auth.uploadToken(bucket); try { Response response = uploadManager.put(file,key,upToken,null, null); //解析上传成功的结果 DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class); return origin+putRet.key; } catch (QiniuException ex) { Response r = ex.response; log.warn(r.toString()); try { return r.bodyString(); } catch (QiniuException e) { throw new YmallUploadException(e.toString()); } } } public static String getUpToken() { return auth.uploadToken(bucket, null, 3600, new StringMap().put("insertOnly", 1)); } public static String qiniuBase64Upload(String data64){ String key = renamePic(".png"); Auth auth = Auth.create(accessKey, secretKey); String upToken = auth.uploadToken(bucket); //服务端http://up-z2.qiniup.com String url = "http://up-z2.qiniup.com/putb64/-1/key/"+ UrlSafeBase64.encodeToString(key); RequestBody rb = RequestBody.create(null, data64); Request request = new Request.Builder(). url(url). addHeader("Content-Type", "application/octet-stream") .addHeader("Authorization", "UpToken " + getUpToken()) .post(rb).build(); OkHttpClient client = new OkHttpClient(); okhttp3.Response response = null; try { response = client.newCall(request).execute(); } catch (IOException e) { e.printStackTrace(); } return origin+key; } public static String base64Data(String data){ if(data==null||data.isEmpty()){ return ""; } String base64 =data.substring(data.lastIndexOf(",")+1); return base64; } /** * 以时间戳重命名 * @param fileName * @return */ public static String renamePic(String fileName){ String extName = fileName.substring(fileName.lastIndexOf(".")); return System.currentTimeMillis()+extName; } public static String isValidImage(HttpServletRequest request, MultipartFile file){ //最大文件大小 long maxSize = 5242880; //定义允许上传的文件扩展名 HashMap extMap = new HashMap(); extMap.put("image", "gif,jpg,jpeg,png,bmp"); if(!ServletFileUpload.isMultipartContent(request)){ return "请选择文件"; } if(file.getSize() > maxSize){ return "上传文件大小超过5MB限制"; } //检查扩展名 String fileName=file.getOriginalFilename(); String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase(); if(!Arrays.asList(extMap.get("image").split(",")).contains(fileExt)){ return "上传文件扩展名是不允许的扩展名\n只允许" + extMap.get("image") + "格式"; } return "valid"; } public static String checkExt(String fileName,String dirName){ //定义允许上传的文件扩展名 HashMap extMap = new HashMap(); extMap.put("image", "gif,jpg,jpeg,png,bmp"); extMap.put("flash", "swf,flv"); extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb"); //检查扩展名 String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase(); if(!Arrays.asList(extMap.get(dirName).split(",")).contains(fileExt)){ return "上传文件扩展名是不允许的扩展名\n只允许" + extMap.get(dirName) + "格式"; } return "valid"; } public static void main(String[] args){ base64Data("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2"); } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/commons/utils/ThreadPoolUtil.java ================================================ package com.yuu.ymall.web.admin.commons.utils; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** * 线程池工具类 * * @Classname ThreadPoolUtil * @Date 2019/5/13 16:43 * @Created by Yuu */ public class ThreadPoolUtil { //线程缓冲队列 private static BlockingQueue bqueue = new ArrayBlockingQueue(100); // 核心线程数,会一直存活,即使没有任务,线程池也会维护线程的最少数量 private static final int SIZE_CORE_POOL = 5; // 线程池维护线程的最大数量 private static final int SIZE_MAX_POOL = 10; // 线程池维护线程所允许的空闲时间 private static final long ALIVE_TIME = 2000; private static ThreadPoolExecutor pool = new ThreadPoolExecutor(SIZE_CORE_POOL, SIZE_MAX_POOL, ALIVE_TIME, TimeUnit.MILLISECONDS, bqueue, new ThreadPoolExecutor.CallerRunsPolicy()); static { pool.prestartAllCoreThreads(); } public static ThreadPoolExecutor getPool() { return pool; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbAddressMapper.java ================================================ package com.yuu.ymall.web.admin.mapper; import com.yuu.ymall.commons.persistence.BaseMapper; import com.yuu.ymall.domain.TbAddress; public interface TbAddressMapper extends BaseMapper { /** * 根据主键 id 删除数据 * * @param id * @return */ int deleteByPrimaryKey(Long id); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbExpressMapper.java ================================================ package com.yuu.ymall.web.admin.mapper; import com.yuu.ymall.commons.persistence.BaseMapper; import com.yuu.ymall.domain.TbExpress; import java.util.List; import java.util.Map; public interface TbExpressMapper extends BaseMapper { /** * 根据主键 id 删除数据 * * @param id * @return */ int deleteByPrimaryKey(Integer id); /** * 获取快递列表 * * @param params 参数 * @return */ List getExpressList(Map params); /** * 获取快递总数 * * @param params 参数 * @return */ int getTbExpressCount(Map params); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbItemCatMapper.java ================================================ package com.yuu.ymall.web.admin.mapper; import com.yuu.ymall.commons.persistence.BaseMapper; import com.yuu.ymall.domain.TbItemCat; import java.util.List; public interface TbItemCatMapper extends BaseMapper { /** * 根据主键 id 删除数据 * * @param id * @return */ int deleteByPrimaryKey(Long id); /** * 根据父 ID 查询分类列表 * * @param parentId 父 id * @return */ List getItemCatList(Long parentId); /** * 查询该分类最大的排序值 * * @param parentId 父 id * @return */ int getMaxSortOrder(Long parentId); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbItemDescMapper.java ================================================ package com.yuu.ymall.web.admin.mapper; import com.yuu.ymall.commons.persistence.BaseMapper; import com.yuu.ymall.domain.TbItemDesc; public interface TbItemDescMapper extends BaseMapper { /** * 根据主键 id 删除数据 * * @param id * @return */ int deleteByPrimaryKey(Long id); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbItemMapper.java ================================================ package com.yuu.ymall.web.admin.mapper; import com.yuu.ymall.commons.persistence.BaseMapper; import com.yuu.ymall.domain.TbItem; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; public interface TbItemMapper extends BaseMapper { /** * 根据主键 id 删除数据 * * @param id * @return */ int deleteByPrimaryKey(Long id); /** * 获取商品总数 * * @return */ int getAllItemCount(); /** * 有条件的查询商品集合 * @param cid 分类 id * @return */ List selectItemByCondition(@Param("cid") Long cid, @Param("search") String search); /** * 根据分类 id 查询商品集合 * * @param params 查询条件 * @return */ List getItemByCid(Map params); /** * 查询分类商品总数 * * @param params 查询条件 * @return */ int getTbItemByCidCount(Map params); /** * 下架商品 * * @param id 商品 id */ int stopItemById(Long id); /** * 发布商品 * * @param id 商品 id */ int startItemById(Long id); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbMemberMapper.java ================================================ package com.yuu.ymall.web.admin.mapper; import com.yuu.ymall.commons.persistence.BaseMapper; import com.yuu.ymall.domain.TbMember; import org.apache.ibatis.annotations.Param; import java.util.List; public interface TbMemberMapper extends BaseMapper { /** * 根据主键 id 删除数据 * * @param id * @return */ int deleteByPrimaryKey(Long id); /** * 获取会员总数 * * @return */ int getAllMemberCount(); /** * 获取会员列表 * * @param search 查询条件 * @return */ List getMemberList(@Param("search") String search); /** * 获取会员列表总数 * * @param search 查询条件 * @return */ int getMemberListCount(@Param("search") String search); /** * 根据会员名查询会员 * * @param username 会员名 * @return */ TbMember getMemberByUsername(String username); /** * 根据手机号查询会员 * * @param phone 手机号 * @return */ TbMember getMemberByPhone(String phone); /** * 根据邮箱查询会员 * * @param email 邮箱 * @return */ TbMember getMemberByEmail(String email); /** * 获取被封禁的会员列表 * * @param search 搜索条件 * @return */ List getMemberBanList(@Param("search") String search); /** * 获取被封禁的会员总数 * * @param search 搜索条件 * @return */ int getMemberBanListCount(@Param("search") String search); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbOrderItemMapper.java ================================================ package com.yuu.ymall.web.admin.mapper; import com.yuu.ymall.commons.persistence.BaseMapper; import com.yuu.ymall.domain.TbOrderItem; import java.util.List; public interface TbOrderItemMapper extends BaseMapper { /** * 根据主键 id 删除数据 * * @param id * @return */ int deleteByPrimaryKey(String id); /** * 获取本周热门商品 * * @return */ List getWeekHot(); /** * 查看商品是否有订单项 * * @param id 商品 id * @return */ int selectByItemId(Long id); /** * 根据订单 id,查询所有订单项 * * @param id 订单 id * @return */ List selectOrderItemByOrderId(String orderId); /** * 查询该商品订单数量 * * @param itemId 商品 id * @return */ int selectOrderNumByItemId(Long itemId); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbOrderMapper.java ================================================ package com.yuu.ymall.web.admin.mapper; import com.yuu.ymall.commons.persistence.BaseMapper; import com.yuu.ymall.domain.TbOrder; import com.yuu.ymall.web.admin.commons.dto.OrderChartData; import org.apache.ibatis.annotations.Param; import java.util.Date; import java.util.List; import java.util.Map; public interface TbOrderMapper extends BaseMapper { /** * 根据主键 id 删除数据 * * @param id * @return */ int deleteByPrimaryKey(String id); /** * 根据主键 id 查询 * * @param id * @return */ TbOrder selectByPrimaryKey(String id); /** * 获取订单总数 * * @return */ int getAllOrderCount(); /** * 获取订单列表 * * @param params 参数 * @return */ List getOrderList(Map params); /** * 获取订单列表数量 * * @param params 参数 * @return */ int getTbOrderCount(Map params); /** * 查询图表数据 * * @param startTime 开始时间 * @param endTime 结束时间 * @return */ List selectOrderChart(@Param("startTime") Date startTime, @Param("endTime") Date endTime); /** * 按年份查询图表数据 * * @param year 年份 * @return */ List selectOrderChartByYear(int year); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbOrderShippingMapper.java ================================================ package com.yuu.ymall.web.admin.mapper; import com.yuu.ymall.commons.persistence.BaseMapper; import com.yuu.ymall.domain.TbOrderShipping; public interface TbOrderShippingMapper extends BaseMapper { /** * 根据主键 id 删除数据 * * @param id * @return */ int deleteByPrimaryKey(String id); /** * 根据主键 id 查询 * * @param id * @return */ TbOrderShipping selectByPrimaryKey(String id); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbPanelContentMapper.java ================================================ package com.yuu.ymall.web.admin.mapper; import com.yuu.ymall.commons.persistence.BaseMapper; import com.yuu.ymall.domain.TbPanelContent; import java.util.List; import java.util.Map; public interface TbPanelContentMapper extends BaseMapper { /** * 根据主键 id 删除数据 * @param id * @return */ int deleteByPrimaryKey(Integer id); /** * 添加查询板块内容 * @param params 参数 * @return */ List getTbPanelContentByPanelId(Map params); /** * 条件查询板块内容总数目 * @param params 查询参数 * @return */ int getTbPanelContentCount(Map params); /** * 根据商品 ID 查询商品是否关联首页内容 * @param id 商品 id * @return */ int selectContentByIid(Long id); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbPanelMapper.java ================================================ package com.yuu.ymall.web.admin.mapper; import com.yuu.ymall.commons.persistence.BaseMapper; import com.yuu.ymall.domain.TbPanel; import java.util.List; import java.util.Map; public interface TbPanelMapper extends BaseMapper { /** * 根据主键 id 删除数据 * * @param id * @return */ int deleteByPrimaryKey(Integer id); /** * 根据条件查询所有板块 * * @param params * @return */ List getPanelList(Map params); /** * 根据板块的类型查询板块 * * @param type * @return */ TbPanel getPanelByType(int type); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/mapper/TbUserMapper.java ================================================ package com.yuu.ymall.web.admin.mapper; import com.yuu.ymall.commons.persistence.BaseMapper; import com.yuu.ymall.domain.TbUser; import org.apache.ibatis.annotations.Param; import java.util.List; public interface TbUserMapper extends BaseMapper { /** * 根据主键 id 删除数据 * * @param id * @return */ int deleteByPrimaryKey(Long id); /** * 根据用户名获取用户 * * @param username 用户名 * @return */ TbUser getUserByUsername(String username); /** * 获取用户列表 * * @param search 搜索条件 * @return */ List getUserList(@Param("search") String search); /** * 获取用户总数 * * @param search 搜索条件 * @return */ int getUserListCount(@Param("search") String search); /** * 根据手机号获取用户 * * @param phone 手机号 * @return */ TbUser getUserByPhone(String phone); /** * 根据邮箱获取用户 * * @param email 邮箱 * @return */ TbUser getUserByEmail(String email); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/repositories/ItemRepository.java ================================================ package com.yuu.ymall.web.admin.repositories; import com.yuu.ymall.web.admin.commons.es.ESItem; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; /** * @author by Yuu * @classname ItemRepository * @date 2019/7/9 19:51 */ public interface ItemRepository extends ElasticsearchRepository { } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ContentService.java ================================================ package com.yuu.ymall.web.admin.service; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbPanelContent; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import javax.servlet.http.HttpServletRequest; /** * @Classname ContentService * @Date 2019/5/16 23:52 * @Created by Yuu */ public interface ContentService { /** * 通过板块 id 分页查询板块内容 * * @param request 请求 * @param panelId 板块 id * @param search 搜索条件 * @return */ DataTablesResult getPanelContentListByPanelId(HttpServletRequest request, int panelId, String search); /** * 删除板块内容 * * @param id 板块内容 id 集合 * @return */ BaseResult deletePanelContent(int[] ids); /** * 新增或编辑板块内容 * * @param tbPanelContent 板块内容 * @return */ BaseResult saveContent(TbPanelContent tbPanelContent); /** * 查询商品是否关联首页板块内容 * * @param id 商品 id */ int selectContentByIid(Long id); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/CountService.java ================================================ package com.yuu.ymall.web.admin.service; import com.yuu.ymall.commons.dto.BaseResult; /** * @author by Yuu * @classname CountService * @date 2019/6/21 11:03 */ public interface CountService { /** * 订单销量统计 * * @param type 类型 * @param startTime 开始时间 * @param endTime 结束时间 * @param year 年份 * @return */ BaseResult countOrder(int type, String startTime, String endTime, int year); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ExpressService.java ================================================ package com.yuu.ymall.web.admin.service; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbExpress; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import javax.servlet.http.HttpServletRequest; /** * @Classname ExpressService * @Date 2019/6/15 18:59 * @Created by Yuu */ public interface ExpressService { /** * 获取快递列表 * * @param request 请求 * @param search 搜索参数 * @return */ DataTablesResult getExpressList(HttpServletRequest request, String search); /** * 保存快递 * * @param tbExpress 快递 * @return */ BaseResult save(TbExpress tbExpress); /** * 删除快递 * @param ids * @return */ BaseResult delete(Integer[] ids); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ItemCatService.java ================================================ package com.yuu.ymall.web.admin.service; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbItemCat; import com.yuu.ymall.web.admin.commons.dto.ZTreeNode; import java.util.List; /** * @Classname ItemCatService * @Date 2019/6/3 14:52 * @Created by Yuu */ public interface ItemCatService { /** * 根据父类 id 查询分类列表 * * @param parentId 根据父类 id 查询分类列表 * @param type zTree 展示数据类型 -1 不展示所有商品,0 展示所有商品 * @return */ List getItemCatList(Long parentId, int type); /** * 添加编辑商品分类 * * @param tbItemCat 商品分类 * @return */ BaseResult saveItemCat(TbItemCat tbItemCat); /** * 删除商品分类 * * @param id 分类 id * @return */ BaseResult deleteItemCat(Long id); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/ItemService.java ================================================ package com.yuu.ymall.web.admin.service; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbItem; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import com.yuu.ymall.web.admin.commons.dto.ItemDto; import javax.servlet.http.HttpServletRequest; /** * @Classname ItemService * @Date 2019/5/15 22:28 * @Created by Yuu */ public interface ItemService { /** * 获取商品总数 * @return */ int getAllItemCount(); /** * 分页搜索排序获取商品列表 * * @param request 请求 * @param cid 分类 id * @param search 查询条件 * @return */ DataTablesResult getItemListByCid(HttpServletRequest request, Long cid, String search); /** * 根据商品 id 集合,删除商品 * * @param ids 商品 id 集合 * @return */ BaseResult deleteItem(Long[] ids); /** * 根据商品 id 下架商品 * * @param id 商品 id * @return */ BaseResult stopItem(Long id); /** * 根据商品 id 发布商品 * * @param id 商品 id * @return */ BaseResult startItem(Long id); /** * 保存商品:有 id 编辑商品,无 id 新增商品 * * @param itemDto 商品 DTO * @return */ BaseResult saveItem(ItemDto itemDto); /** * 根据商品 ID 获取商品 * * @param itemId 商品 ID * @return */ BaseResult getItemById(Long itemId); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/MemberService.java ================================================ package com.yuu.ymall.web.admin.service; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbMember; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import javax.servlet.http.HttpServletRequest; /** * @Classname MemberService * @Date 2019/5/15 22:12 * @Created by Yuu */ public interface MemberService { /** * 获取会员总数 * * @return */ int getAllMemberCount(); /** * 获取会员列表 * * @param request 请求 * @param search 搜索条件 * @return */ DataTablesResult getMemberList(HttpServletRequest request, String search); /** * 封禁会员 * * @param id 会员 id * @return */ BaseResult banMember(Long id); /** * 解封会员 * * @param id 会员 id 集合 * @return */ BaseResult startMember(Long[] ids); /** * 保存会员 * * @param tbMember 会员 * @return */ BaseResult saveMember(TbMember tbMember); /** * 根据会员名获取会员 * * @param username 会员名 * @param id 会员 id * @return */ Boolean getMemberByUsername(String username, Long id); /** * 根据手机号获取会员 * * @param phone 手机号 * @param id 会员 id * @return */ Boolean getMemberByPhone(String phone, Long id); /** * 根据邮箱获取会员 * * @param email 邮箱 * @param id 会员 id * @return */ Boolean getMemberByEmail(String email, Long id); /** * 修改会员密码 * * @param id 会员 id * @param password 会员 密码 * @return */ BaseResult changeMemberPassword(Long id, String password); /** * 删除会员 * @param ids * @return */ BaseResult deleteMember(Long[] ids); /** * 获取被封禁的会员列表 * * @param request 请求 * @param search 搜索条件 * @return */ DataTablesResult getMemberBanList(HttpServletRequest request, String search); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/OrderService.java ================================================ package com.yuu.ymall.web.admin.service; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbOrder; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import javax.servlet.http.HttpServletRequest; /** * @Classname OrderService * @Date 2019/5/15 22:35 * @Created by Yuu */ public interface OrderService { /** * 获取订单总数 * * @return */ int getAllOrderCount(); /** * 获取订单列表 * * @param request 请求 * @param search 查询条件 * @param status 订单状态 * @return */ DataTablesResult getOrderList(HttpServletRequest request, String search, int status); /** * 获取订单详情 * * @param id 订单 id * @return */ BaseResult getOrderDetail(String id); /** * 订单发货 * * @param orderId 订单 id * @param shippingName 快递名称 * @param shippingCode 快递单号 * @return */ BaseResult deliver(String orderId, String shippingName, String shippingCode); /** * 管理员取消订单 * * @param orderId 订单id * @return */ BaseResult cancelOrderByAdmin(String orderId); /** * 根据订单 id 集合删除订单 * * @param ids 订单 id 集合 * @return */ BaseResult deleteOrderByIds(String[] ids); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/PanelService.java ================================================ package com.yuu.ymall.web.admin.service; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbPanel; import com.yuu.ymall.web.admin.commons.dto.ZTreeNode; import java.util.List; /** * @Classname PanelService * @Date 2019/5/20 8:54 * @Created by Yuu */ public interface PanelService { /** * 获取板块类目 * * @param type * @return */ List getPanelList(int type); /** * 编辑内容板块 * * @param tbPanel 板块 * @return */ BaseResult updatePanel(TbPanel tbPanel); /** * 根据板块 id 删除板块 * * @param id 板块 id * @return */ BaseResult deletePanelById(int id); /** * 新增内容板块 * * @param tbPanel 板块 * @return */ BaseResult addPanel(TbPanel tbPanel); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/SearchService.java ================================================ package com.yuu.ymall.web.admin.service; /** * 搜索服务 * * @author by Yuu * @classname SearchService * @date 2019/7/9 19:48 */ public interface SearchService { /** * 同步单个索引 * * @param type 0 更新索引 1 删除索引 * @param itemId 商品 id * @return */ void refreshItem(int type, Long itemId); /** * 同步所有索引 * * @return */ void importAllItems(); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/SystemService.java ================================================ package com.yuu.ymall.web.admin.service; import com.yuu.ymall.commons.dto.BaseResult; /** * @Classname SystemService * @Date 2019/5/11 20:21 * @Created by Yuu */ public interface SystemService { /** * 获取本周热销商品 * * @return */ BaseResult getWeekHot(); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/UserService.java ================================================ package com.yuu.ymall.web.admin.service; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbUser; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import javax.servlet.http.HttpServletRequest; /** * @Classname UserService * @Date 2019/5/11 18:49 * @author by Yuu */ public interface UserService { /** * 根据用户名获取用户信息 * * @param username * @return */ TbUser getUserByUsername(String username); /** * 获取用户列表 * @param request 请求 * @param search 搜索条件 * @return */ DataTablesResult getUserList(HttpServletRequest request, String search); /** * 验证用户名是否存在 * * @param id 用户 id * @param username 用户名 * @return */ Boolean validateUsername(Long id, String username); /** * 验证手机号是否存在 * * @param id 用户 id * @param phone 手机号 * @return */ Boolean validatePhone(Long id, String phone); /** * 验证邮箱是否存在 * * @param id 用户 id * @param email 邮箱 * @return */ Boolean validateEmail(Long id, String email); /** * 保存用户 * * @param tbUser 用户 * @return */ BaseResult save(TbUser tbUser); /** * 修改密码 * * @param id 用户 id * @param password 用户密码 * @return */ BaseResult changePass(Long id, String password); /** * 删除用户 * * @param ids 用户 id 的集合 * @return */ BaseResult delete(Long[] ids); } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/ContentServiceImpl.java ================================================ package com.yuu.ymall.web.admin.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.commons.redis.RedisCacheManager; import com.yuu.ymall.domain.TbItem; import com.yuu.ymall.domain.TbPanelContent; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import com.yuu.ymall.web.admin.mapper.TbItemMapper; import com.yuu.ymall.web.admin.mapper.TbPanelContentMapper; import com.yuu.ymall.web.admin.service.ContentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Classname ContentServiceImpl * @Date 2019/5/16 23:52 * @Created by Yuu */ @Service @Transactional(readOnly = true) public class ContentServiceImpl implements ContentService { @Autowired private TbPanelContentMapper tbPanelContentMapper; @Autowired private TbItemMapper tbItemMapper; @Autowired private RedisCacheManager redisCacheManager; /** * 首页商品缓存 key */ @Value("PRODUCT_HOME") private String PRODUCT_HOME; @Value("0") private int HEADER_PANEL_ID; @Value("HEADER_PANEL") private String HEADER_PANEL; @Override public DataTablesResult getPanelContentListByPanelId(HttpServletRequest request, int panelId, String search) { DataTablesResult result = new DataTablesResult<>(request); Map params = new HashMap<>(); params.put("panelId", panelId); params.put("search", search); // 分页查询 PageHelper.startPage(result.getPageNum(), result.getLength()); List tbPanelContentList = tbPanelContentMapper.getTbPanelContentByPanelId(params); // 封装内容 for (TbPanelContent tbPanelContent : tbPanelContentList) { if (tbPanelContent.getProductId() != null) { TbItem tbItem = tbItemMapper.selectByPrimaryKey(tbPanelContent.getProductId()); tbPanelContent.setProductName(tbItem.getTitle()); tbPanelContent.setSalePrice(tbItem.getPrice()); tbPanelContent.setSubTitle(tbItem.getSellPoint()); } } PageInfo tbPanelContentPageInfo = new PageInfo<>(tbPanelContentList); result.setRecordsFiltered((int) tbPanelContentPageInfo.getTotal()); result.setRecordsTotal(tbPanelContentMapper.getTbPanelContentCount(params)); result.setDraw(result.getDraw()); result.setData(tbPanelContentList); return result; } @Transactional(readOnly = false) @Override public BaseResult deletePanelContent(int[] ids) { // 删除板块内容 int result = 0; for (int id : ids) { result = tbPanelContentMapper.deleteByPrimaryKey(id); if (result != 1) { return BaseResult.fail("删除板块内容失败!"); } // 同步导航栏缓存 if (id == HEADER_PANEL_ID) { updateNavListRedis(); } } // 同步缓存 deleteHomeRedis(); return BaseResult.success(); } @Transactional(readOnly = false) @Override public BaseResult saveContent(TbPanelContent tbPanelContent) { tbPanelContent.setUpdated(new Date()); int result; // 新增 if (tbPanelContent.getId() == null) { tbPanelContent.setCreated(new Date()); result = tbPanelContentMapper.insert(tbPanelContent); if (result == 0) { return BaseResult.fail("添加导航栏失败!"); } } // 编辑 else { result = tbPanelContentMapper.updateByPrimaryKey(tbPanelContent); // 更新失败 if (result != 1) { return BaseResult.fail("更新板块内容失败!"); } } // 删除导航栏缓存 if (tbPanelContent.getPanelId() == HEADER_PANEL_ID) { updateNavListRedis(); } // 删除首页缓存 deleteHomeRedis(); return BaseResult.success("保存导航栏成功!"); } @Override public int selectContentByIid(Long id) { return tbPanelContentMapper.selectContentByIid(id); } /** * 删除导航栏缓存 */ private void updateNavListRedis() { redisCacheManager.del(HEADER_PANEL); } /** * 同步缓存 */ private void deleteHomeRedis() { redisCacheManager.del(PRODUCT_HOME); } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/CountServiceImpl.java ================================================ package com.yuu.ymall.web.admin.service.impl; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.commons.utils.TimeUtil; import com.yuu.ymall.web.admin.commons.consts.Consts; import com.yuu.ymall.web.admin.commons.dto.ChartData; import com.yuu.ymall.web.admin.commons.dto.OrderChartData; import com.yuu.ymall.web.admin.mapper.TbOrderMapper; import com.yuu.ymall.web.admin.service.CountService; import org.apache.commons.lang3.time.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; /** * @author by Yuu * @classname CountServiceImpl * @date 2019/6/21 11:03 */ @Service public class CountServiceImpl implements CountService { @Autowired private TbOrderMapper tbOrderMapper; @Override public BaseResult countOrder(int type, String startTime, String endTime, int year) { ChartData chartData = new ChartData(); Date startDate = null, endDate = null; if (type == Consts.CUSTOM_DATE) { startDate = DateUtil.beginOfDay(DateUtil.parse(startTime)); endDate = DateUtil.endOfDay(DateUtil.parse(endTime)); long betweenDay = DateUtil.between(startDate, endDate, DateUnit.DAY); if (betweenDay > 31) { return BaseResult.fail("所选日期范围过长,最多不能超过31天"); } } List list = getOrderCountData(type, startDate, endDate, year); List xDatas = new ArrayList<>(); List yDatas = new ArrayList<>(); BigDecimal countAll = new BigDecimal("0"); for (OrderChartData orderChartData : list) { if (type == Consts.CUSTOM_YEAR) { xDatas.add(DateUtil.format(orderChartData.getTime(), "yyyy-MM")); } else { xDatas.add(DateUtil.formatDate(orderChartData.getTime())); } yDatas.add(orderChartData.getMoney()); countAll = countAll.add(orderChartData.getMoney()); } chartData.setxDatas(xDatas); chartData.setyDatas(yDatas); chartData.setCountAll(countAll); return BaseResult.success(chartData); } private List getOrderCountData(int type, Date startTime, Date endTime, int year) { List fullData = new ArrayList<>(); List data; switch (type) { // 本周 case 0: data = tbOrderMapper.selectOrderChart(TimeUtil.getBeginDayOfWeek(), TimeUtil.getEndDayOfWeek()); fullData = getFullData(data, TimeUtil.getBeginDayOfWeek(), TimeUtil.getEndDayOfWeek()); break; // 本月 case 1: data = tbOrderMapper.selectOrderChart(TimeUtil.getBeginDayOfMonth(), TimeUtil.getEndDayOfMonth()); fullData = getFullData(data, TimeUtil.getBeginDayOfMonth(), TimeUtil.getEndDayOfMonth()); break; // 上月 case 2: data = tbOrderMapper.selectOrderChart(TimeUtil.getBeginDayOfLastMonth(), TimeUtil.getEndDayOfLastMonth()); fullData = getFullData(data, TimeUtil.getBeginDayOfLastMonth(), TimeUtil.getEndDayOfLastMonth()); break; // 自定义 case -1: data = tbOrderMapper.selectOrderChart(startTime, endTime); fullData = getFullData(data, startTime, endTime); break; // 按年份 case -2: data = tbOrderMapper.selectOrderChartByYear(year); fullData = getFullYearData(data, year); break; } return fullData; } /** * 无数据补0 * * @param data 数据 * @param startTime 开始时间 * @param endTime 结束时间 * @return */ private List getFullData(List data, Date startTime, Date endTime) { List fullData = new ArrayList<>(); // 相差 long betweenDay = DateUtil.between(startTime, endTime, DateUnit.DAY); // 起始时间 Date everyday = startTime; int count = -1; for (int i = 0; i <= betweenDay; i++) { boolean flag = true; for (OrderChartData chartData : data) { if (DateUtils.isSameDay(chartData.getTime(), everyday)) { // 有数据 flag = false; count++; break; } } if (!flag) { fullData.add(data.get(count)); } else { OrderChartData orderChartData = new OrderChartData(); orderChartData.setTime(everyday); orderChartData.setMoney(new BigDecimal("0")); fullData.add(orderChartData); } // 时间 +1 天 Calendar cal = Calendar.getInstance(); cal.setTime(everyday); cal.add(Calendar.DAY_OF_MONTH, 1); everyday = cal.getTime(); } return fullData; } /** * 无数据补0 * * @param data 数据 * @param year 年份 * @return */ public List getFullYearData(List data, int year) { List fullData = new ArrayList<>(); //起始月份 Date everyMonth = TimeUtil.getBeginDayOfYear(year); int count = -1; for (int i = 0; i < 12; i++) { boolean flag = true; for (OrderChartData chartData : data) { if (DateUtil.month(chartData.getTime()) == DateUtil.month(everyMonth)) { //有数据 flag = false; count++; break; } } if (!flag) { fullData.add(data.get(count)); } else { OrderChartData orderChartData = new OrderChartData(); orderChartData.setTime(everyMonth); orderChartData.setMoney(new BigDecimal("0")); fullData.add(orderChartData); } //时间+1天 Calendar cal = Calendar.getInstance(); cal.setTime(everyMonth); cal.add(Calendar.MONTH, 1); everyMonth = cal.getTime(); } return fullData; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/ExpressServiceImpl.java ================================================ package com.yuu.ymall.web.admin.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbExpress; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import com.yuu.ymall.web.admin.mapper.TbExpressMapper; import com.yuu.ymall.web.admin.service.ExpressService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Classname ExpressServiceImpl * @Date 2019/6/15 19:00 * @Created by Yuu */ @Service @Transactional(readOnly = true) public class ExpressServiceImpl implements ExpressService { @Autowired private TbExpressMapper tbExpressMapper; @Override public DataTablesResult getExpressList(HttpServletRequest request, String search) { DataTablesResult result = new DataTablesResult<>(request); Map params = new HashMap<>(); params.put("search", search); // 分页查询 PageHelper.startPage(result.getPageNum(), result.getLength()); List tbExpressList = tbExpressMapper.getExpressList(params); // 封装 PageInfo PageInfo tbItemPageInfo = new PageInfo<>(tbExpressList); result.setRecordsFiltered((int) tbItemPageInfo.getTotal()); result.setRecordsTotal(tbExpressMapper.getTbExpressCount(params)); result.setDraw(result.getDraw()); result.setData(tbExpressList); return result; } @Transactional @Override public BaseResult save(TbExpress tbExpress) { // 设置更新时间 tbExpress.setUpdated(new Date()); // 新增 if (tbExpress.getId() == null) { tbExpress.setCreated(new Date()); tbExpressMapper.insert(tbExpress); } // 编辑 else { tbExpressMapper.updateByPrimaryKey(tbExpress); } return BaseResult.success("保存物流信息成功!"); } @Transactional @Override public BaseResult delete(Integer[] ids) { for (Integer id : ids) { tbExpressMapper.deleteByPrimaryKey(id); } return BaseResult.success("删除快递成功!"); } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/ItemCatServiceImpl.java ================================================ package com.yuu.ymall.web.admin.service.impl; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.commons.redis.RedisCacheManager; import com.yuu.ymall.domain.TbItemCat; import com.yuu.ymall.web.admin.commons.dto.ZTreeNode; import com.yuu.ymall.web.admin.commons.utils.DtoUtil; import com.yuu.ymall.web.admin.mapper.TbItemCatMapper; import com.yuu.ymall.web.admin.service.ItemCatService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * @Classname ItemCatServiceImpl * @Date 2019/6/3 14:53 * @Created by Yuu */ @Service @Transactional(readOnly = true) public class ItemCatServiceImpl implements ItemCatService { @Autowired private TbItemCatMapper tbItemCatMapper; @Autowired private RedisCacheManager redisCacheManager; @Value("${HEADER_CATE}") private String HEADER_CATE; @Override public List getItemCatList(Long parentId, int type) { // 根据父 id 查询分类列表 List tbItemCats = tbItemCatMapper.getItemCatList(parentId); // 转换成 ZTreeNode List resultList = new ArrayList<>(); // 如果 type = -1 不展示所有商品,type = 0 展示所有商品 if (type == -1 && parentId == 0) { tbItemCats.remove(0); } for (TbItemCat tbItemCat : tbItemCats) { ZTreeNode node = DtoUtil.TbItemCat2ZTreeNode(tbItemCat); resultList.add(node); } return resultList; } @Transactional(readOnly = false) @Override public BaseResult saveItemCat(TbItemCat tbItemCat) { tbItemCat.setUpdated(new Date()); int result; // 编辑商品分类 if (tbItemCat.getId() != null) { result = tbItemCatMapper.updateByPrimaryKey(tbItemCat); } // 添加商品分类 else { // 查询该子分类最大的排序值 int maxSortOrder = tbItemCatMapper.getMaxSortOrder(tbItemCat.getParentId()); // 默认排序值 +1 tbItemCat.setSortOrder(maxSortOrder + 1); // 设置默认状态,开启 tbItemCat.setStatus(1); tbItemCat.setCreated(new Date()); result = tbItemCatMapper.insert(tbItemCat); } // 删除 Redis 缓存 redisCacheManager.del(HEADER_CATE); if (result != 1) { return BaseResult.fail("保存商品分类失败"); } return BaseResult.success("保存商品分类成功"); } @Transactional(readOnly = false) @Override public BaseResult deleteItemCat(Long id) { // 查询该节点所有子节点 List nodes = getItemCatList(id, -1); if (nodes.size() > 0) { // 如果有子节点,则遍历删除子节点 for (ZTreeNode node : nodes) { deleteItemCat((long) node.getId()); } } // 没有则直接删除节点 int result = tbItemCatMapper.deleteByPrimaryKey(id); if (result != 1) { return BaseResult.fail("删除商品分类失败!"); } // 删除 Redis 缓存 redisCacheManager.del(HEADER_CATE); return BaseResult.success("删除商品分类成功"); } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/ItemServiceImpl.java ================================================ package com.yuu.ymall.web.admin.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.commons.redis.RedisCacheManager; import com.yuu.ymall.domain.TbItem; import com.yuu.ymall.domain.TbItemCat; import com.yuu.ymall.domain.TbItemDesc; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import com.yuu.ymall.web.admin.commons.dto.ItemDto; import com.yuu.ymall.web.admin.commons.utils.IDUtil; import com.yuu.ymall.web.admin.mapper.*; import com.yuu.ymall.web.admin.service.ItemService; import com.yuu.ymall.web.admin.service.SearchService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Classname ItemServcieImpl * @Date 2019/5/15 22:28 * @Created by Yuu */ @Service @Transactional(readOnly = true) public class ItemServiceImpl implements ItemService { @Autowired private TbItemMapper tbItemMapper; @Autowired private TbItemDescMapper tbItemDescMapper; @Autowired private TbItemCatMapper tbItemCatMapper; @Autowired private TbPanelContentMapper tbPanelContentMapper; @Autowired private TbOrderItemMapper tbOrderItemMapper; @Autowired private RedisCacheManager redisCacheManager; @Autowired private SearchService searchService; @Value("${PRODUCT_ITEM}") private String PRODUCT_ITEM; @Override public int getAllItemCount() { int itemCount = tbItemMapper.getAllItemCount(); return itemCount; } @Override public DataTablesResult getItemListByCid(HttpServletRequest request, Long cid, String search) { DataTablesResult result = new DataTablesResult<>(request); Map params = new HashMap<>(); params.put("cid", cid); params.put("search", search); // 分页查询 PageHelper.startPage(result.getPageNum(), result.getLength()); List tbItemList = tbItemMapper.getItemByCid(params); // 封装 PageInfo PageInfo tbItemPageInfo = new PageInfo<>(tbItemList); result.setRecordsFiltered((int) tbItemPageInfo.getTotal()); result.setRecordsTotal(tbItemMapper.getTbItemByCidCount(params)); result.setDraw(result.getDraw()); result.setData(tbItemList); return result; } @Transactional(readOnly = false) @Override public BaseResult deleteItem(Long[] ids) { // 删除商品 for (Long id : ids) { tbItemMapper.deleteByPrimaryKey(id); } return BaseResult.success("删除商品成功!"); } @Transactional(readOnly = false) @Override public BaseResult stopItem(Long id) { tbItemMapper.stopItemById(id); // 删除 ES 索引 searchService.refreshItem(-1, id); return BaseResult.success("下架商品成功!"); } @Transactional(readOnly = false) @Override public BaseResult startItem(Long id) { tbItemMapper.startItemById(id); // 增加索引 searchService.refreshItem(0, id); return BaseResult.success("发布商品成功!"); } @Transactional(readOnly = false) @Override public BaseResult saveItem(ItemDto itemDto) { // 封装 TbItem TbItem newTbItem = new TbItem(); BeanUtils.copyProperties(itemDto, newTbItem); newTbItem.setUpdated(new Date()); // 封装 TbItemDesc TbItemDesc tbItemDesc = new TbItemDesc(); tbItemDesc.setItemDesc(itemDto.getDetail()); tbItemDesc.setUpdated(new Date()); // 编辑商品 if (itemDto.getId() != null) { // 编辑商品 TbItem oldTbItem = tbItemMapper.selectByPrimaryKey(itemDto.getId()); newTbItem.setStatus(oldTbItem.getStatus()); newTbItem.setCreated(oldTbItem.getCreated()); tbItemMapper.updateByPrimaryKey(newTbItem); // 编辑商品详情 tbItemDesc.setItemId(newTbItem.getId()); tbItemDesc.setCreated(oldTbItem.getCreated()); tbItemDescMapper.updateByPrimaryKey(tbItemDesc); // 同步缓存 redisCacheManager.del(PRODUCT_ITEM + ":" + newTbItem.getId()); // 更新 ES 索引库 searchService.refreshItem(0, itemDto.getId()); } // 新增商品 else { // 新增商品 Long id = IDUtil.getRandomId(); newTbItem.setId(id); newTbItem.setStatus(1); newTbItem.setCreated(new Date()); tbItemMapper.insert(newTbItem); // 新增商品详情 tbItemDesc.setItemId(id); tbItemDesc.setCreated(new Date()); tbItemDescMapper.insert(tbItemDesc); // 更新 ES 索引库 searchService.refreshItem(0, id); } return BaseResult.success("保存商品成功!"); } @Override public BaseResult getItemById(Long itemId) { ItemDto itemDto = new ItemDto(); // 封装 TbItem 属性 TbItem tbItem = tbItemMapper.selectByPrimaryKey(itemId); BeanUtils.copyProperties(tbItem, itemDto); // 封装 Cname TbItemCat tbItemCat = tbItemCatMapper.selectByPrimaryKey(tbItem.getCid()); itemDto.setCname(tbItemCat.getName()); // 封装 TbItemDesc TbItemDesc tbItemDesc = tbItemDescMapper.selectByPrimaryKey(itemId); itemDto.setDetail(tbItemDesc.getItemDesc()); return BaseResult.success(itemDto); } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/MemberServiceImpl.java ================================================ package com.yuu.ymall.web.admin.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbMember; import com.yuu.ymall.web.admin.commons.consts.Consts; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import com.yuu.ymall.web.admin.mapper.TbMemberMapper; import com.yuu.ymall.web.admin.service.MemberService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.DigestUtils; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.List; /** * @Classname MemberServiceImpl * @Date 2019/5/15 22:12 * @Created by Yuu */ @Service @Transactional(readOnly = true) public class MemberServiceImpl implements MemberService { @Autowired private TbMemberMapper tbMemberMapper; @Override public int getAllMemberCount() { int memberCount = tbMemberMapper.getAllMemberCount(); return memberCount; } @Override public DataTablesResult getMemberList(HttpServletRequest request, String search) { // 初始化 DataTableResult DataTablesResult result = new DataTablesResult<>(request); // 设置 PageHelper PageHelper.startPage(result.getPageNum(), result.getLength()); List tbMemberList = tbMemberMapper.getMemberList(search); // 删除密码 for (TbMember tbMember : tbMemberList) { tbMember.setPassword(""); } // 封装 PageHelper PageInfo tbMemberPageInfo = new PageInfo<>(tbMemberList); result.setRecordsFiltered((int) tbMemberPageInfo.getTotal()); result.setRecordsTotal(tbMemberMapper.getMemberListCount(search)); result.setDraw(result.getDraw()); result.setData(tbMemberList); return result; } @Transactional @Override public BaseResult banMember(Long id) { // 查询会员 TbMember tbMember = tbMemberMapper.selectByPrimaryKey(id); // 设置会员状态 tbMember.setState(Consts.MEMBER_BAN); tbMember.setUpdated(new Date()); // 更新会员 tbMemberMapper.updateByPrimaryKey(tbMember); return BaseResult.success("封禁会员成功!"); } @Transactional @Override public BaseResult startMember(Long[] ids) { for (Long id : ids) { // 查询会员 TbMember tbMember = tbMemberMapper.selectByPrimaryKey(id); // 设置会员状态 tbMember.setState(Consts.MEMBER_START); tbMember.setUpdated(new Date()); // 更新会员 tbMemberMapper.updateByPrimaryKey(tbMember); } return BaseResult.success("解封会员成功!"); } @Transactional @Override public BaseResult saveMember(TbMember tbMember) { // 查询用户名、手机号、邮箱是否被注册 if (!getMemberByUsername(tbMember.getUsername(), tbMember.getId())) { return BaseResult.fail("用户名已被注册!"); } else if (!getMemberByPhone(tbMember.getPhone(), tbMember.getId())) { return BaseResult.fail("手机号已被注册!"); } else if (!getMemberByEmail(tbMember.getEmail(), tbMember.getId())) { return BaseResult.fail("邮箱已被注册!"); } // 封装 TbMember TbMember newTbMember = new TbMember(); BeanUtils.copyProperties(tbMember, newTbMember); newTbMember.setUpdated(new Date()); // 编辑会员 if (tbMember.getId() != null && tbMember.getId() != 0) { // 查询出旧会员,封装数据 TbMember oldTbMember = tbMemberMapper.selectByPrimaryKey(tbMember.getId()); newTbMember.setState(oldTbMember.getState()); newTbMember.setCreated(oldTbMember.getCreated()); newTbMember.setPassword(oldTbMember.getPassword()); // 更新会员 tbMemberMapper.updateByPrimaryKey(newTbMember); } // 新增会员 else { // 设置初始值 newTbMember.setCreated(new Date()); newTbMember.setState(Consts.MEMBER_START); // 加密密码 newTbMember.setPassword(DigestUtils.md5DigestAsHex(tbMember.getPassword().getBytes())); // 新增会员 tbMemberMapper.insert(newTbMember); } return BaseResult.success("保存会员成功!"); } @Override public Boolean getMemberByUsername(String username, Long id) { TbMember tbMember = tbMemberMapper.getMemberByUsername(username); TbMember idTebMember = null; if (id != null || id != 0) { idTebMember = tbMemberMapper.selectByPrimaryKey(id); if (idTebMember != null && tbMember != null) { if (idTebMember.getUsername().equals(tbMember.getUsername())) { return true; } } } // 会员不存在,返回 true if (tbMember == null) { return true; } return false; } @Override public Boolean getMemberByPhone(String phone, Long id) { TbMember tbMember = tbMemberMapper.getMemberByPhone(phone); TbMember idTebMember = null; if (id != null || id != 0) { idTebMember = tbMemberMapper.selectByPrimaryKey(id); if (idTebMember != null && tbMember != null) { if (idTebMember.getPhone().equals(tbMember.getPhone())) { return true; } } } // 会员不存在,返回 true if (tbMember == null) { return true; } return false; } @Override public Boolean getMemberByEmail(String email, Long id) { TbMember tbMember = tbMemberMapper.getMemberByEmail(email); TbMember idTebMember = null; if (id != null || id != 0) { idTebMember = tbMemberMapper.selectByPrimaryKey(id); if (idTebMember != null && tbMember != null) { if (idTebMember.getEmail().equals(tbMember.getEmail())) { return true; } } } // 会员不存在,返回 true if (tbMember == null) { return true; } return false; } @Transactional @Override public BaseResult changeMemberPassword(Long id, String password) { // 根据 id 查询会员 TbMember tbMember = tbMemberMapper.selectByPrimaryKey(id); // 用户不存在 if (tbMember == null) { return BaseResult.fail("用户不存在!"); } // 设置新密码 tbMember.setPassword(DigestUtils.md5DigestAsHex(password.getBytes())); // 更新会员 tbMemberMapper.updateByPrimaryKey(tbMember); return BaseResult.success("更改密码成功!"); } @Transactional @Override public BaseResult deleteMember(Long[] ids) { for (Long id : ids) { tbMemberMapper.deleteByPrimaryKey(id); } return BaseResult.success("删除会员成功!"); } @Override public DataTablesResult getMemberBanList(HttpServletRequest request, String search) { // 初始化 DataTableResult DataTablesResult result = new DataTablesResult<>(request); // 设置 PageHelper PageHelper.startPage(result.getPageNum(), result.getLength()); List tbMemberList = tbMemberMapper.getMemberBanList(search); // 删除密码 for (TbMember tbMember : tbMemberList) { tbMember.setPassword(""); } // 封装 PageHelper PageInfo tbMemberPageInfo = new PageInfo<>(tbMemberList); result.setRecordsFiltered((int) tbMemberPageInfo.getTotal()); result.setRecordsTotal(tbMemberMapper.getMemberBanListCount(search)); result.setDraw(result.getDraw()); result.setData(tbMemberList); return result; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/OrderServiceImpl.java ================================================ package com.yuu.ymall.web.admin.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbOrder; import com.yuu.ymall.domain.TbOrderItem; import com.yuu.ymall.domain.TbOrderShipping; import com.yuu.ymall.web.admin.commons.consts.Consts; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import com.yuu.ymall.web.admin.commons.dto.OrderDetail; import com.yuu.ymall.web.admin.mapper.TbOrderItemMapper; import com.yuu.ymall.web.admin.mapper.TbOrderMapper; import com.yuu.ymall.web.admin.mapper.TbOrderShippingMapper; import com.yuu.ymall.web.admin.service.OrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Classname OrderServiceImpl * @Date 2019/5/15 22:35 * @Created by Yuu */ @Service @Transactional(readOnly = true) public class OrderServiceImpl implements OrderService { @Autowired private TbOrderMapper tbOrderMapper; @Autowired private TbOrderItemMapper tbOrderItemMapper; @Autowired private TbOrderShippingMapper tbOrderShippingMapper; @Override public int getAllOrderCount() { int orderCount = tbOrderMapper.getAllOrderCount(); return orderCount; } @Override public DataTablesResult getOrderList(HttpServletRequest request, String search, int status) { DataTablesResult result = new DataTablesResult<>(request); Map params = new HashMap<>(); params.put("search", search); params.put("status", status); // 分页查询 PageHelper.startPage(result.getPageNum(), result.getLength()); List tbOrderList = tbOrderMapper.getOrderList(params); // 封装 PageInfo PageInfo tbOrderPageInfo = new PageInfo<>(tbOrderList); result.setRecordsFiltered((int) tbOrderPageInfo.getTotal()); result.setRecordsTotal(tbOrderMapper.getTbOrderCount(params)); result.setDraw(result.getDraw()); result.setData(tbOrderList); return result; } @Override public BaseResult getOrderDetail(String id) { // 根据 id 查询订单信息 OrderDetail orderDetail = new OrderDetail(); TbOrder tbOrder = tbOrderMapper.selectByPrimaryKey(id); // 查询所有订单项 List tbOrderItemList = tbOrderItemMapper.selectOrderItemByOrderId(id); // 查询订单收货信息 TbOrderShipping tbOrderShipping = tbOrderShippingMapper.selectByPrimaryKey(id); // 封装 OrderDetail orderDetail.setTbOrder(tbOrder); orderDetail.setTbOrderItemList(tbOrderItemList); orderDetail.setTbOrderShipping(tbOrderShipping); return BaseResult.success(orderDetail); } @Transactional @Override public BaseResult deliver(String orderId, String shippingName, String shippingCode) { // 查询出订单 TbOrder tbOrder = tbOrderMapper.selectByPrimaryKey(orderId); // 设置快递信息 tbOrder.setShippingName(shippingName); tbOrder.setShippingCode(shippingCode); // 发货时间 tbOrder.setConsignTime(new Date()); tbOrder.setUpdated(new Date()); // 订单状态 tbOrder.setStatus(Consts.ORDER_STATE_SHIPPED); // 更新订单信息 tbOrderMapper.updateByPrimaryKey(tbOrder); return BaseResult.success(); } @Transactional @Override public BaseResult cancelOrderByAdmin(String orderId) { // 查询订单 TbOrder tbOrder = tbOrderMapper.selectByPrimaryKey(orderId); // 设置订单状态 tbOrder.setStatus(Consts.ORDER_STATE_CLOSE); // 更新订单 tbOrderMapper.updateByPrimaryKey(tbOrder); return BaseResult.success("取消订单成功"); } @Transactional @Override public BaseResult deleteOrderByIds(String[] ids) { // 遍历删除订单 for (String id : ids) { tbOrderMapper.deleteByPrimaryKey(id); } return BaseResult.success("删除订单成功"); } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/PanelServiceImpl.java ================================================ package com.yuu.ymall.web.admin.service.impl; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.commons.redis.RedisCacheManager; import com.yuu.ymall.domain.TbPanel; import com.yuu.ymall.web.admin.commons.dto.ZTreeNode; import com.yuu.ymall.web.admin.commons.utils.DtoUtil; import com.yuu.ymall.web.admin.mapper.TbPanelMapper; import com.yuu.ymall.web.admin.service.PanelService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; /** * @Classname PanelServiceImpl * @Date 2019/5/20 8:54 * @Created by Yuu */ @Service @Transactional(readOnly = true) public class PanelServiceImpl implements PanelService { @Autowired private TbPanelMapper tbPanelMapper; @Autowired private RedisCacheManager redisCacheManager; @Value("PRODUCT_HOME") private String PRODUCT_HOME; @Override public List getPanelList(int type) { Map params = new HashMap<>(); // type = 1 时,查询所有,不需要 type 条件 if (type != 1) { params.put("type", type); } // 首页板块 params.put("position", "0"); List tbPanelList = tbPanelMapper.getPanelList(params); // 封装 ZTreeNode List zTreeNodeList = new ArrayList<>(); for (TbPanel tbPanel : tbPanelList) { ZTreeNode zTreeNode = DtoUtil.TbPanel2ZTreeNode(tbPanel); zTreeNodeList.add(zTreeNode); } return zTreeNodeList; } @Transactional(readOnly = false) @Override public BaseResult updatePanel(TbPanel tbPanel) { tbPanel.setUpdated(new Date()); int result = tbPanelMapper.updateByPrimaryKey(tbPanel); // 更新失败 if (result != 1) { return BaseResult.fail("更新板块失败"); } // 同步缓存 deleteHomeRedis(); return BaseResult.success("更新板块成功"); } @Transactional(readOnly = false) @Override public BaseResult deletePanelById(int id) { int result = tbPanelMapper.deleteByPrimaryKey(id); // 删除失败 if (result != 1) { return BaseResult.fail("删除板块失败"); } // 同步缓存 deleteHomeRedis(); return BaseResult.success("删除板块成功"); } @Transactional(readOnly = false) @Override public BaseResult addPanel(TbPanel tbPanel) { // 判断是否为轮播图板块,首页只能有一个轮播图板块 if (tbPanel.getType() == 0) { TbPanel isExistTbPanel = tbPanelMapper.getPanelByType(0); if (isExistTbPanel != null) { return BaseResult.fail("已有轮播图板块,轮播图板块仅能添加 1 个"); } } tbPanel.setCreated(new Date()); tbPanel.setUpdated(new Date()); int result = tbPanelMapper.insert(tbPanel); // 添加板块失败 if (result != 1) { return BaseResult.fail("添加板块失败!"); } // 同步缓存 deleteHomeRedis(); return BaseResult.success("添加板块成功!"); } /** * 删除首页缓存 */ private void deleteHomeRedis() { redisCacheManager.del(PRODUCT_HOME); } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/SearchServiceImpl.java ================================================ package com.yuu.ymall.web.admin.service.impl; import com.yuu.ymall.domain.TbItem; import com.yuu.ymall.web.admin.commons.es.ESItem; import com.yuu.ymall.web.admin.mapper.TbItemMapper; import com.yuu.ymall.web.admin.mapper.TbOrderItemMapper; import com.yuu.ymall.web.admin.repositories.ItemRepository; import com.yuu.ymall.web.admin.service.SearchService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * @author by Yuu * @classname SearchSeviceImpl * @date 2019/7/9 19:50 */ @Service public class SearchServiceImpl implements SearchService { @Autowired private ItemRepository itemRepository; @Autowired private TbItemMapper tbItemMapper; @Autowired private TbOrderItemMapper tbOrderItemMapper; @Override public void refreshItem(int type, Long itemId) { // 更新索引 if (type == 0) { // 从数据库中查出数据 TbItem tbItem = tbItemMapper.selectByPrimaryKey(itemId); // 设置 ESItem if (tbItem != null) { ESItem esItem = new ESItem(); esItem.setId(tbItem.getId()); esItem.setProductId(tbItem.getId()); esItem.setProductName(tbItem.getTitle()); esItem.setSubTitle(tbItem.getSellPoint()); esItem.setSalePrice(tbItem.getPrice().doubleValue()); esItem.setPicUrl(tbItem.getImages()[0]); esItem.setCid(tbItem.getCid()); if (tbItem.getLimitNum() > tbItem.getNum()) { esItem.setLimit(tbItem.getNum()); } else { esItem.setLimit(tbItem.getLimitNum()); } // 查询该商品订单数量 int orderNum = tbOrderItemMapper.selectOrderNumByItemId(tbItem.getId()); esItem.setOrderNum(orderNum); // 更新索引 itemRepository.save(esItem); } } // 删除索引 else { itemRepository.deleteById(itemId); } } @Override public void importAllItems() { // 从数据库中查询所有商品 List tbItemList = tbItemMapper.selectAll(); List esItems = new ArrayList<>(); for (TbItem tbItem : tbItemList) { ESItem esItem = new ESItem(); esItem.setId(tbItem.getId()); esItem.setProductId(tbItem.getId()); esItem.setProductName(tbItem.getTitle()); esItem.setSubTitle(tbItem.getSellPoint()); esItem.setSalePrice(tbItem.getPrice().doubleValue()); esItem.setPicUrl(tbItem.getImages()[0]); esItem.setCid(tbItem.getCid()); if (tbItem.getLimitNum() > tbItem.getNum()) { esItem.setLimit(tbItem.getNum()); } else { esItem.setLimit(tbItem.getLimitNum()); } esItems.add(esItem); } // 批量新增 itemRepository.saveAll(esItems); } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/SystemServiceImpl.java ================================================ package com.yuu.ymall.web.admin.service.impl; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbOrderItem; import com.yuu.ymall.web.admin.mapper.TbOrderItemMapper; import com.yuu.ymall.web.admin.service.SystemService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * @Classname SystemServiceImpl * @Date 2019/5/11 20:21 * @Created by Yuu */ @Service @Transactional(readOnly = true) public class SystemServiceImpl implements SystemService { @Autowired private TbOrderItemMapper tbOrderItemMapper; @Override public BaseResult getWeekHot() { List tbOrderItemList = tbOrderItemMapper.getWeekHot(); if (tbOrderItemList.size() == 0) { TbOrderItem tbOrderItem = new TbOrderItem(); tbOrderItem.setTotal(0); tbOrderItem.setTitle("暂无数据"); tbOrderItem.setPicPath(""); return BaseResult.success(tbOrderItem); } return BaseResult.success(tbOrderItemList.get(0)); } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/service/impl/UserServiceImpl.java ================================================ package com.yuu.ymall.web.admin.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbUser; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import com.yuu.ymall.web.admin.mapper.TbUserMapper; import com.yuu.ymall.web.admin.service.UserService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.DigestUtils; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.List; /** * @Classname UserServiceImpl * @Date 2019/5/11 18:49 * @Created by Yuu */ @Service @Transactional(readOnly = true) public class UserServiceImpl implements UserService { @Autowired private TbUserMapper tbUserMapper; @Override public TbUser getUserByUsername(String username) { return tbUserMapper.getUserByUsername(username); } @Override public DataTablesResult getUserList(HttpServletRequest request, String search) { DataTablesResult result = new DataTablesResult<>(request); // 分页查询 PageHelper.startPage(result.getPageNum(), result.getLength()); List tbUserList = tbUserMapper.getUserList(search); // 封装 PageInfo PageInfo tbItemPageInfo = new PageInfo<>(tbUserList); result.setRecordsFiltered((int) tbItemPageInfo.getTotal()); result.setRecordsTotal(tbUserMapper.getUserListCount(search)); result.setDraw(result.getDraw()); result.setData(tbUserList); return result; } @Override public Boolean validateUsername(Long id, String username) { // 根据用户名查询出会员 TbUser tbUser = tbUserMapper.getUserByUsername(username); // 判断用户名是否为用户原用户名 if (id != 0 && tbUser != null) { TbUser idTbUser = tbUserMapper.selectByPrimaryKey(id); if (idTbUser.getUsername().equals(tbUser.getUsername())) { return true; } } // 用户名不存在 if (tbUser == null) { return true; } return false; } @Override public Boolean validatePhone(Long id, String phone) { // 根据用户手机号查询出会员 TbUser tbUser = tbUserMapper.getUserByPhone(phone); /*// 判断用户名是否为用户原用户名 if (id != 0 && tbUser != null) { TbUser idTbUser = tbUserMapper.selectByPrimaryKey(id); if (idTbUser.getPhone().equals(tbUser.getPhone())) { return true; } }*/ // 用户名不存在 if (tbUser == null) { return true; } return false; } @Override public Boolean validateEmail(Long id, String email) { // 根据用户手机号查询出会员 TbUser tbUser = tbUserMapper.getUserByEmail(email); // 判断用户名是否为用户原用户名 if (id != 0 && tbUser != null) { /*TbUser idTbUser = tbUserMapper.selectByPrimaryKey(id); if (idTbUser.getEmail().equals(tbUser.getEmail())) { return true; }*/ } // 用户名不存在 if (tbUser == null) { return true; } return false; } @Transactional @Override public BaseResult save(TbUser tbUser) { // 查询用户名是否被注册 if (!validateUsername(tbUser.getId(), tbUser.getUsername())) { return BaseResult.fail("用户名已被注册!"); } // 封装 TbUser TbUser newTbUser = new TbUser(); BeanUtils.copyProperties(tbUser, newTbUser); newTbUser.setUpdated(new Date()); newTbUser.setCreated(new Date()); // 加密密码 newTbUser.setPassword(DigestUtils.md5DigestAsHex(newTbUser.getPassword().getBytes())); // 新增会员 tbUserMapper.insert(newTbUser); return BaseResult.success("保存用户成功!"); } @Transactional @Override public BaseResult changePass(Long id, String password) { // 查询出旧的用户 TbUser tbUser = tbUserMapper.selectByPrimaryKey(id); // 用户不存在 if (tbUser == null) { return BaseResult.fail("用户不存在!"); } // 设置新密码 tbUser.setPassword(DigestUtils.md5DigestAsHex(password.getBytes())); // 更新用户 tbUserMapper.updateByPrimaryKey(tbUser); return BaseResult.success("更改密码成功!"); } @Transactional @Override public BaseResult delete(Long[] ids) { for (Long id : ids) { if (id.equals(1l)) { return BaseResult.success("不能删除超级管理员!!!"); } tbUserMapper.deleteByPrimaryKey(id); } return BaseResult.success("删除用户成功!"); } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/ContentController.java ================================================ package com.yuu.ymall.web.admin.web.controller; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbPanelContent; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import com.yuu.ymall.web.admin.service.ContentService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; /** * @Classname ContentController * @Date 2019/5/16 23:51 * @Created by Yuu */ @RestController @Api(description = "内容列表信息") @RequestMapping("content") public class ContentController { @Autowired private ContentService contentService; /** * 通过 panelId 获取板块内容列表 * * @param panelId 板块 id * @return */ @GetMapping("list/{panelId}") @ApiOperation("通过 panelId 获取板块内容列表") public DataTablesResult getContentByCid(@PathVariable int panelId, HttpServletRequest request, @RequestParam(value = "search[value]", required = false) String search) { DataTablesResult result = contentService.getPanelContentListByPanelId(request, panelId, search); return result; } /** * 新增或编辑内容 * 有 id 则为编辑,无 id 则为 新增 * * @param tbPanelContent * @return */ @PostMapping("save") @ApiOperation(value = "新增或编辑内容") public BaseResult saveContent(@ModelAttribute TbPanelContent tbPanelContent) { BaseResult baseResult = contentService.saveContent(tbPanelContent); return baseResult; } /** * 删除板块内容 * * @param ids 板块内容的 id 数组 * @return */ @DeleteMapping("delete/{ids}") @ApiOperation(value = "删除板块内容") public BaseResult deleteContent(@PathVariable int[] ids) { BaseResult baseResult = contentService.deletePanelContent(ids); return baseResult; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/CountController.java ================================================ package com.yuu.ymall.web.admin.web.controller; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.web.admin.service.CountService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * 统计 Controler * * @author by Yuu * @classname CountController * @date 2019/6/21 10:56 */ @RestController @Api(description = "统计") @RequestMapping("count") public class CountController { @Autowired private CountService countService; /** * 订单销量 * * @param type 类型 * @param startTime 开始时间 * @param endTime 结束时间 * @param year 年份 * @return */ @GetMapping("order") @ApiOperation(value = "订单销量统计") public BaseResult countOrder(@RequestParam int type, @RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) int year) { BaseResult baseResult = countService.countOrder(type, startTime, endTime, year); return baseResult; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/ExpressController.java ================================================ package com.yuu.ymall.web.admin.web.controller; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbExpress; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import com.yuu.ymall.web.admin.service.ExpressService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; /** * @Classname ExpressController * @Date 2019/6/15 18:58 * @Created by Yuu */ @RestController @Api(description = "快递管理") @RequestMapping("express") public class ExpressController { @Autowired private ExpressService expressService; /** * 获取快递列表 * * @param request 请求 * @param search 搜索参数 * @return */ @GetMapping("list") @ApiOperation(value = "获得所有快递") public DataTablesResult getEXPressList(HttpServletRequest request, @RequestParam(value = "search[value]", required = false) String search) { DataTablesResult dataTablesResult = expressService.getExpressList(request, search); return dataTablesResult; } /** * 保存快递信息 * * @param tbExpress 快递信息 * @return */ @PostMapping("save") @ApiOperation(value = "保存快递") public BaseResult save(TbExpress tbExpress) { BaseResult baseResult = expressService.save(tbExpress); return baseResult; } /** * 删除快递信息 * * @param ids 快递的 id 集合 * @return */ @DeleteMapping("delete/{ids}") @ApiOperation(value = "删除快递") public BaseResult delete(@PathVariable Integer[] ids) { BaseResult baseResult = expressService.delete(ids); return baseResult; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/ItemCatController.java ================================================ package com.yuu.ymall.web.admin.web.controller; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbItemCat; import com.yuu.ymall.web.admin.commons.dto.ZTreeNode; import com.yuu.ymall.web.admin.service.ItemCatService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; /** * @Classname ItemCatController * @Date 2019/6/3 14:51 * @Created by Yuu */ @RestController @Api(description = "商品分类管理") @RequestMapping("item/cat") public class ItemCatController { @Autowired private ItemCatService itemCatService; /** * 通过父 ID 获取商品分类列表 * * @param parentId 父 ID * @param type zTree 展示数据类型 -1 不展示所有商品,0 展示所有商品 * @return */ @GetMapping("list/{type}") @ApiOperation(value = "通过父 ID 获取商品分类列表") public List getItemCatList(@RequestParam(name = "id", defaultValue = "0") Long parentId, @PathVariable int type) { List list = itemCatService.getItemCatList(parentId, type); return list; } /** * 编辑或添加商品分类 * * @param tbItemCat 商品分类 * @return */ @PostMapping("save") @ApiOperation(value = "编辑商品分类") public BaseResult saveItemCategory(@ModelAttribute TbItemCat tbItemCat) { BaseResult baseResult = itemCatService.saveItemCat(tbItemCat); return baseResult; } /** * 删除商品分类 * * @param id 商品分类 id * @return */ @DeleteMapping("del/{id}") @ApiOperation(value = "删除商品分类") public BaseResult deleteItemCategory(@PathVariable Long id) { BaseResult baseResult = itemCatService.deleteItemCat(id); return baseResult; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/ItemController.java ================================================ package com.yuu.ymall.web.admin.web.controller; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbItem; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import com.yuu.ymall.web.admin.commons.dto.ItemDto; import com.yuu.ymall.web.admin.mapper.TbOrderItemMapper; import com.yuu.ymall.web.admin.service.ContentService; import com.yuu.ymall.web.admin.service.ItemService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; /** * @Classname ItemController * @Date 2019/5/15 22:23 * @Created by Yuu */ @RestController @Api(description = "商品管理") @RequestMapping("item") public class ItemController { @Autowired private ItemService itemService; @Autowired private ContentService contentService; @Autowired private TbOrderItemMapper tbOrderItemMapper; /** * 获取商品总数目 * * @return */ @GetMapping("count") @ApiOperation(value = "获取商品总数目") public BaseResult getAllItemCount() { int itemCount = itemService.getAllItemCount(); return BaseResult.success(itemCount); } /** * 通过 Cid 获取商品列表 * * @param cid 分类 id * @param request 请求 * @param search 查询条件 * @return */ @GetMapping("list/{cid}") @ApiOperation(value = "分页搜索排序获取商品列表") public DataTablesResult getItemList(@PathVariable Long cid, HttpServletRequest request, @RequestParam("search[value]") String search) { DataTablesResult result = itemService.getItemListByCid(request, cid, search); return result; } /** * 删除商品 * * @param ids 商品 id 集合 * @return */ @DeleteMapping("delete/{ids}") @ApiOperation(value = "删除商品") public BaseResult deleteItem(@PathVariable Long[] ids) { // 判断首页是否关联 for (Long id : ids) { int result = contentService.selectContentByIid(id); if (result > 0) { return BaseResult.fail("删除商品失败!包含首页展示关联的商品,商品ID:"+ id +",请先从首页配置中删除该商品关联"); } // 判断商品是否已有订单,有订单则不能删除 result = tbOrderItemMapper.selectByItemId(id); if (result > 0) { return BaseResult.fail("删除商品失败!包含已有订单的商品,商品ID:"+ id +",请使用下架处理该商品!"); } } BaseResult baseResult = itemService.deleteItem(ids); return baseResult; } /** * 下架商品 * * @param id 商品 id * @return */ @DeleteMapping("stop/{id}") @ApiOperation(value = "下架商品") public BaseResult stopItem(@PathVariable Long id) { // 判断首页是否关联 int result = contentService.selectContentByIid(id); if (result > 0) { return BaseResult.fail("下架商品失败!包含首页展示关联的商品,商品ID:"+ id +",请先从首页配置中删除该商品关联"); } BaseResult baseResult = itemService.stopItem(id); return baseResult; } /** * 发布商品 * * @param id 商品 id * @return */ @DeleteMapping("start/{id}") @ApiOperation(value = "发布商品") public BaseResult startItem(@PathVariable Long id) { BaseResult baseResult = itemService.startItem(id); return baseResult; } /** * 保存商品:有 id 编辑商品,无 id 新增商品 * * @param itemDto 商品 DTO * @return */ @PostMapping("save") @ApiOperation(value = "保存商品") public BaseResult saveItem(ItemDto itemDto) { BaseResult baseResult = itemService.saveItem(itemDto); // 更新索引库 return baseResult; } /** * 根据商品 ID 获取商品 * * @param itemId 商品 ID * @return */ @GetMapping("{itemId}") @ApiOperation(value = "通过商品ID获取商品") public BaseResult getItemById(@PathVariable Long itemId) { BaseResult baseResult = itemService.getItemById(itemId); return baseResult; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/MemberController.java ================================================ package com.yuu.ymall.web.admin.web.controller; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbMember; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import com.yuu.ymall.web.admin.service.MemberService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; /** * @Classname MemberController * @Date 2019/5/15 22:08 * @Created by Yuu */ @RestController @Api(description = "会员管理") @RequestMapping("member") public class MemberController { private final static Logger log = LoggerFactory.getLogger(MemberController.class); @Autowired private MemberService memberService; /** * 获取总会员数目 * * @return */ @GetMapping("count") @ApiOperation(value = "获取总会员数目") public BaseResult getAllMemberCount() { int memberCount = memberService.getAllMemberCount(); return BaseResult.success(memberCount); } /** * 获取会员列表 * * @param request 请求 * @param search 搜索条件 * @return */ @GetMapping("list") @ApiOperation(value = "获取会员列表") public DataTablesResult getMemberList(HttpServletRequest request, @RequestParam("search[value]") String search) { DataTablesResult dataTablesResult = memberService.getMemberList(request, search); return dataTablesResult; } /** * 封禁会员 * * @param id 会员 id * @return */ @DeleteMapping("ban/{id}") @ApiOperation(value = "封禁会员") public BaseResult banMember(@PathVariable Long id) { BaseResult baseResult = memberService.banMember(id); return baseResult; } /** * 解封会员 * * @param id 会员 id * @return */ @DeleteMapping("start/{ids}") @ApiOperation(value = "解封会员") public BaseResult startMember(@PathVariable Long[] ids) { BaseResult baseResult = memberService.startMember(ids); return baseResult; } /** * 验证注册会员名是否存在 * * @param username 会员名 * @return */ @GetMapping("username") @ApiOperation(value = "验证注册会员名是否存在") public Boolean validateUsername(String username, Long id) { Boolean flag = memberService.getMemberByUsername(username, id); return flag; } /** * 验证注册手机号是否存在 * * @param phone 手机号 * @return */ @GetMapping("phone") @ApiOperation(value = "验证注册手机号是否存在") public Boolean validatePhone(String phone, Long id) { Boolean flag = memberService.getMemberByPhone(phone, id); return flag; } /** * 验证注册邮箱是否存在 * * @param email 邮箱 * @return */ @GetMapping("email") @ApiOperation(value = "验证注册邮箱是否存在") public Boolean validateEmail(String email, Long id) { Boolean flag = memberService.getMemberByEmail(email, id); return flag; } /** * 保存会员 * * @param tbMember 会员 * @return */ @PostMapping("save") @ApiOperation(value = "保存会员") public BaseResult saveMember(TbMember tbMember) { BaseResult baseResult = memberService.saveMember(tbMember); return baseResult; } /** * 修改会员密码 * * @param id 会员 id * @param tbMember 会员 * @return */ @PostMapping("changePass/{id}") @ApiOperation(value = "修改会员密码") public BaseResult changeMemberPassword(@PathVariable Long id, String password) { BaseResult baseResult = memberService.changeMemberPassword(id, password); return baseResult; } /** * 删除会员 * * @param ids 会员 id 集合 * @return */ @DeleteMapping("delete/{ids}") @ApiOperation(value = "删除会员") public BaseResult deleteMember(@PathVariable Long[] ids) { BaseResult baseResult = memberService.deleteMember(ids); return baseResult; } /** * 封禁的会员列表 * * @param request 请求 * @param search 搜索条件 * @return */ @GetMapping("ban/list") @ApiOperation(value = "封禁的会员列表") public DataTablesResult getBanMemberList(HttpServletRequest request, @RequestParam("search[value]") String search) { DataTablesResult dataTablesResult = memberService.getMemberBanList(request, search); return dataTablesResult; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/OrderController.java ================================================ package com.yuu.ymall.web.admin.web.controller; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbOrder; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import com.yuu.ymall.web.admin.service.OrderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; /** * @Classname OrderController * @Date 2019/5/15 22:31 * @Created by Yuu */ @RestController @Api(description = "订单管理") @RequestMapping("order") public class OrderController { private final static Logger logger = LoggerFactory.getLogger(OrderController.class); @Autowired private OrderService orderService; /** * 获取订单总数目 * * @return */ @GetMapping("count") @ApiOperation(value = "获取订单总数目") public BaseResult getOrderCount() { int orderCount = orderService.getAllOrderCount(); return BaseResult.success(orderCount); } /** * 获取订单列表 * * @return */ @GetMapping("list") @ApiOperation(value = "获取订单列表") public DataTablesResult getOrderList(HttpServletRequest request, @RequestParam("search[value]") String search,@RequestParam(defaultValue = "-1") int status) { DataTablesResult result = orderService.getOrderList(request, search, status); return result; } /** * 获取订单详情 * * @param id 订单 id * @return */ @GetMapping("detail/{id}") @ApiOperation(value = "获取订单详情") public BaseResult getOrderDetail(@PathVariable String id) { BaseResult baseResult = orderService.getOrderDetail(id); return baseResult; } /** * 订单发货 * * @param orderId 订单 id * @param shippingName 快递名称 * @param shippingCode 快递单号 * @param postFee 运费 * @return */ @PostMapping("deliver") @ApiOperation(value = "订单发货") public BaseResult deliver(@RequestParam String orderId, @RequestParam String shippingName, @RequestParam String shippingCode) { BaseResult baseResult = orderService.deliver(orderId, shippingName, shippingCode); return baseResult; } /** * 管理员取消订单 * * @param orderId 订单 id * @return */ @DeleteMapping("cancel/{orderId}") @ApiOperation(value = "订单取消") public BaseResult cancelOrderByAdmin(@PathVariable String orderId) { BaseResult baseResult = orderService.cancelOrderByAdmin(orderId); return baseResult; } /** * 删除订单 * * @param ids 订单集合 * @return */ @DeleteMapping("delete/{ids}") @ApiOperation(value = "删除订单") public BaseResult deleteOrderByIds(@PathVariable String[] ids) { BaseResult baseResult = orderService.deleteOrderByIds(ids); return baseResult; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/PageController.java ================================================ package com.yuu.ymall.web.admin.web.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; /** * 页面跳转 * * @Classname PageController * @Date 2019/5/11 22:22 * @Created by Yuu */ @Controller public class PageController { /** * 跳转到首页 * * @return */ @GetMapping("/") public String showIndex() { return "index"; } /** * 通用的跳转方法 * * @param page * @return */ @GetMapping("{page}") public String showPage(@PathVariable String page) { return page; } /** * 通用的板块内容管理页面跳转 * * @param type 类型 -1 板块内容管理 0 轮播图管理 * @return */ @GetMapping("content-common-list") public String contentCommonListPage(@ModelAttribute("type") Integer type) { return "content-common-list"; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/PanelController.java ================================================ package com.yuu.ymall.web.admin.web.controller; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.domain.TbPanel; import com.yuu.ymall.web.admin.commons.dto.ZTreeNode; import com.yuu.ymall.web.admin.service.PanelService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; /** * @Classname PanelController * @Date 2019/5/20 8:46 * @Created by Yuu */ @RestController @Api(description = "内容板块管理") @RequestMapping("panel") public class PanelController { private final static Logger log = LoggerFactory.getLogger(PanelController.class); @Autowired private PanelService panelService; /** * 通过的获取板块内容 * type: 0 仅含轮播,-1 非轮播,1 所有 * * @param type 类型 * @param showAll * @return */ @GetMapping("common/list/{type}") @ApiOperation(value = "通用的获取板块内容") @ApiImplicitParams({ @ApiImplicitParam(name = "type", value = "类型", required = true, dataType = "int", paramType = "path"), }) public List getCommonPanel(@PathVariable int type) { List zTreeNodeList = panelService.getPanelList(type); return zTreeNodeList; } /** * 编辑板块 * * @param tbPanel 板块信息 * @return */ @PostMapping("update") @ApiOperation(value = "编辑内容板块") public BaseResult updateContentPanel(@ModelAttribute TbPanel tbPanel) { BaseResult baseResult = panelService.updatePanel(tbPanel); return baseResult; } /** * 删除内容板块 * * @param id 板块 id * @return */ @DeleteMapping("del/{id}") @ApiOperation(value = "删除内容板块") public BaseResult deleteContentPanel(@PathVariable int id) { BaseResult baseResult = panelService.deletePanelById(id); return baseResult; } /** * 添加内容板块 * * @param tbPanel 板块 * @return */ @PostMapping("add") @ApiOperation(value = "添加内容板块") public BaseResult addContentPanel(@ModelAttribute TbPanel tbPanel) { BaseResult baseResult = panelService.addPanel(tbPanel); return baseResult; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/SwaggerController.java ================================================ package com.yuu.ymall.web.admin.web.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import springfox.documentation.swagger.web.ApiResourceController; import springfox.documentation.swagger.web.SwaggerResource; import java.util.List; /** * @Classname SwaggerController * @Date 2019/5/20 19:32 * @Created by Yuu */ @RestController public class SwaggerController { @Autowired private ApiResourceController apiResourceController; /** * swagger-resources 路径映射 * * @return */ @GetMapping("/swagger-resources") public ResponseEntity> swaggerResources() { return apiResourceController.swaggerResources(); } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/SystemController.java ================================================ package com.yuu.ymall.web.admin.web.controller; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.web.admin.commons.utils.IPInfoUtil; import com.yuu.ymall.web.admin.service.SystemService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; /** * 系统Controller * * @Classname SystemController * @Date 2019/5/12 21:54 * @Created by Yuu */ @RestController @Api(description = "系统配置管理") @RequestMapping("sys") public class SystemController { @Autowired private SystemService systemService; /** * 获取天气信息 * * @param request * @return */ @GetMapping("weather") @ApiOperation(value = "获取天气信息") public BaseResult getWeather(HttpServletRequest request) { // todo 修改 ip String result = IPInfoUtil.getIpInfo(IPInfoUtil.getIpAddr(request)); return BaseResult.success((Object)result); } /** * 获取本周热销商品数据 * * @return */ @GetMapping("weekHot") @ApiOperation(value = "获取本周热销商品数据") public BaseResult getWeekHot() { BaseResult baseResult = systemService.getWeekHot(); return baseResult; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/UploadController.java ================================================ package com.yuu.ymall.web.admin.web.controller; import com.yuu.ymall.web.admin.commons.utils.QiniuUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Classname UploadController * @Date 2019/5/24 20:21 * @Created by Yuu */ @RestController @Api(description = "图片上传统一接口") public class UploadController { private static final String UPLOAD_PATH = "/static/upload/"; /** * 文件上传 * * @param dropFile 文件 * @param request 请求 * @return */ @PostMapping("upload") @ApiOperation(value = "DropZone 图片上传") public Map uploadFile(MultipartFile dropFile, MultipartFile[] editorFiles, MultipartFile userFile, HttpServletRequest request) { Map result = new HashMap(); String imagePath = ""; // Dropzone 上传 if (dropFile != null) { imagePath = writeFile(dropFile, request); if (imagePath.contains("error")) { result.put("status", 500); result.put("message", "上传图片失败"); } else { result.put("status", 200); result.put("fileName", imagePath); } } // wangEditor 上传 if (editorFiles != null && editorFiles.length > 0) { List imagePaths = new ArrayList<>(); for (MultipartFile editorFile : editorFiles) { imagePath = writeFile(editorFile, request); if (imagePath.contains("error")) { result.put("errno", 1); return result; } imagePaths.add(imagePath); } result.put("errno", 0); result.put("data", imagePaths); } // 头像上传 if (userFile != null) { imagePath = writeFile(userFile, request); if (imagePath.contains("error")) { result.put("status", 500); result.put("message", "上传图片失败"); } else { result.put("status", 200); result.put("imagePath", imagePath); } } return result; } /** * 将图片上传到服务器 * * @param multipartFile * @param request * @return 返回文件完整路径 */ private String writeFile(MultipartFile multipartFile, HttpServletRequest request) { // 七牛云上传图片路径地址 String imagePath = ""; // 文件保存路径 String filePath = request.getSession().getServletContext().getRealPath(UPLOAD_PATH); // 转存文件 try { File file = new File(filePath); if (!file.exists()) { file.mkdirs(); } // 重命名 file = new File(filePath, QiniuUtil.renamePic(multipartFile.getOriginalFilename())); // 保存至本地 multipartFile.transferTo(file); // 上传到七牛云服务器 imagePath = QiniuUtil.qiniuUpload(file.getPath()); // 本地路径为文件且不为空则进行删除 if (file.isFile() && file.exists()) { file.delete(); } } catch (IOException e) { e.printStackTrace(); } return imagePath; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/controller/UserController.java ================================================ package com.yuu.ymall.web.admin.web.controller; import com.yuu.ymall.commons.dto.BaseResult; import com.yuu.ymall.commons.geetest.GeetestLib; import com.yuu.ymall.domain.TbUser; import com.yuu.ymall.web.admin.commons.dto.DataTablesResult; import com.yuu.ymall.web.admin.service.UserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.Subject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.DigestUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.HashMap; /** * 用户 Controller * * @Classname UserController * @Date 2019/5/11 22:20 * @Created by Yuu */ @RestController @Api(description = "管理员管理") @RequestMapping("user") public class UserController { public static Logger log = LoggerFactory.getLogger(UserController.class); @Autowired private UserService userService; /** * 极验初始化 * * @param session * @return */ @GetMapping("geetestInit") @ApiOperation(value = "极验初始化") public String geetestInit(HttpSession session) { GeetestLib gtSdk = new GeetestLib(GeetestLib.id, GeetestLib.key, GeetestLib.newfailback); String resStr = "{}"; // 自定义参数,可选择添加 HashMap param = new HashMap<>(); // 进行验证预处理 int getServerStatus = gtSdk.preProcess(param); session.setAttribute(gtSdk.gtServerStatusSessionKey, getServerStatus); resStr = gtSdk.getResponseStr(); return resStr; } /** * 用户登录 * * @param username 用户名 * @param password 密码 * @return */ @PostMapping("login") @ApiOperation(value = "用户登录") public BaseResult login(String username, String password, String challenge, String validate, String seccode, HttpSession session) { // 极验验证 GeetestLib gtSdk = new GeetestLib(GeetestLib.id, GeetestLib.key,GeetestLib.newfailback); // 从 session 中获取 gt-server 状态 int gt_server_status_code = (int) session.getAttribute(gtSdk.gtServerStatusSessionKey); // 自定义参数,可选择添加 HashMap param = new HashMap<>(); int gtResult = 0; if (gt_server_status_code == 1) { // gt-server 正常,向 gt-server 进行二次验证 gtResult = gtSdk.enhencedValidateRequest(challenge, validate, seccode, param); } else { // gt-server 非正常情况下,进行 failback 模式验证 gtResult = gtSdk.failbackValidateRequest(challenge, validate, seccode); } // 验证成功 if (gtResult == 1) { Subject subject = SecurityUtils.getSubject(); // MD5 加密 String md5Pass = DigestUtils.md5DigestAsHex(password.getBytes()); UsernamePasswordToken token = new UsernamePasswordToken(username, md5Pass); // 登录 try { subject.login(token); return BaseResult.success(); } catch (Exception e) { return BaseResult.fail("用户名或密码错误"); } } // 验证失败 else { return BaseResult.fail("验证失败"); } } /** * 退出登录 * * @return */ @GetMapping("logout") @ApiOperation(value = "退出登录") public BaseResult logout() { Subject subject = SecurityUtils.getSubject(); subject.logout(); return BaseResult.success(); } /** * 获取用户信息 * * @return */ @GetMapping("userInfo") @ApiOperation(value = "获取用户信息") public BaseResult getUserInfo() { String username = SecurityUtils.getSubject().getPrincipal().toString(); TbUser tbUser = userService.getUserByUsername(username); if (tbUser == null) { return BaseResult.fail("获取用户信息失败!"); } tbUser.setPassword(null); return BaseResult.success(tbUser); } /** * 用户解锁 * * @param password 密码 * @return */ @GetMapping("unlock") @ApiOperation(value = "用户解锁") public BaseResult unlock(String password) { String username = SecurityUtils.getSubject().getPrincipal().toString(); TbUser tbUser = userService.getUserByUsername(username); if (tbUser == null) { return BaseResult.fail("用户不存在!"); } String md5Pwd = DigestUtils.md5DigestAsHex(password.getBytes()); if (!tbUser.getPassword().equals(md5Pwd)) { return BaseResult.fail("密码不正确!"); } return BaseResult.success(); } /** * 获取用户列表 * * @param request 请求 * @param search 搜索条件 * @return */ @GetMapping("list") @ApiOperation(value = "获取用户列表") public DataTablesResult getUserList(HttpServletRequest request, @RequestParam("search[value]") String search) { DataTablesResult dataTablesResult = userService.getUserList(request, search); return dataTablesResult; } /** * 验证用户名是否存在 * * @param id 用户 id * @param username 用户名 * @return */ @GetMapping("username/{id}") @ApiOperation(value = "验证用户名是否存在") public Boolean validateUsername(@PathVariable Long id, String username) { Boolean flag = userService.validateUsername(id, username); return flag; } /** * 验证手机号是否存在 * * @param id 用户 id * @param phone 手机号 * @return */ @GetMapping("phone/{id}") @ApiOperation(value = "验证手机号是否存在") public Boolean validatePhone(@PathVariable Long id, String phone) { Boolean flag = userService.validatePhone(id, phone); return flag; } /** * 验证邮箱是否存在 * * @param id 用户 id * @param email 邮箱 * @return */ @GetMapping("email/{id}") @ApiOperation(value = "验证邮箱是否存在") public Boolean validateEmail(@PathVariable Long id, String email) { Boolean flag = userService.validateEmail(id, email); return flag; } /** * 保存用户 * * @param tbUser 用户 * @return */ @PostMapping("save") @ApiOperation(value = "保存用户") public BaseResult save(TbUser tbUser) { BaseResult baseResult = userService.save(tbUser); return baseResult; } /** * 修改密码 * * @param id 用户 id * @param password 用户密码 * @return */ @PostMapping("changePass") @ApiOperation(value = "修改密码") public BaseResult changePass(Long id, String password) { BaseResult baseResult = userService.changePass(id, password); return baseResult; } /** * 删除用户 * * @param ids * @return */ @DeleteMapping("delete/{ids}") @ApiOperation(value = "删除用户") public BaseResult delete(@PathVariable Long[] ids) { BaseResult baseResult = userService.delete(ids); return baseResult; } } ================================================ FILE: ymall-web-admin/src/main/java/com/yuu/ymall/web/admin/web/interceptor/PermissionInterceptor.java ================================================ package com.yuu.ymall.web.admin.web.interceptor; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 权限拦截器 * * @Classname PermissionInterceptor * @Date 2019/5/12 22:31 * @Created by Yuu */ public class PermissionInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { return true; } @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { // 以 login 结尾的请求 if (modelAndView != null && modelAndView.getViewName() != null && modelAndView.getViewName().endsWith("login")) { Subject subject = SecurityUtils.getSubject(); if (subject.isAuthenticated()) { httpServletResponse.sendRedirect("/"); } } } @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { } } ================================================ FILE: ymall-web-admin/src/main/resources/generatorConfig.xml ================================================
================================================ FILE: ymall-web-admin/src/main/resources/log4j.properties ================================================ log4j.rootLogger=INFO, console, file log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d %p [%c] - %m%n log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=logs/log.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.A3.MaxFileSize=1024KB log4j.appender.A3.MaxBackupIndex=10 log4j.appender.file.layout.ConversionPattern=%d %p [%c] - %m%n ================================================ FILE: ymall-web-admin/src/main/resources/mapper/TbAddressMapper.xml ================================================ delete from tb_address where id = #{id,jdbcType=BIGINT} SELECT LAST_INSERT_ID() insert into tb_address (user_id, user_name, tel, street_name, is_default, created, updated) values (#{userId,jdbcType=BIGINT}, #{userName,jdbcType=VARCHAR}, #{tel,jdbcType=VARCHAR}, #{streetName,jdbcType=VARCHAR}, #{isDefault,jdbcType=BIT}, #{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP}) update tb_address set user_id = #{userId,jdbcType=BIGINT}, user_name = #{userName,jdbcType=VARCHAR}, tel = #{tel,jdbcType=VARCHAR}, street_name = #{streetName,jdbcType=VARCHAR}, is_default = #{isDefault,jdbcType=BIT}, created = #{created,jdbcType=TIMESTAMP}, updated = #{updated,jdbcType=TIMESTAMP} where id = #{id,jdbcType=BIGINT} ================================================ FILE: ymall-web-admin/src/main/resources/mapper/TbExpressMapper.xml ================================================ delete from tb_express where id = #{id,jdbcType=INTEGER} SELECT LAST_INSERT_ID() insert into tb_express (express_name, sort_order, created, updated) values (#{expressName,jdbcType=VARCHAR}, #{sortOrder,jdbcType=INTEGER}, #{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP}) update tb_express set express_name = #{expressName,jdbcType=VARCHAR}, sort_order = #{sortOrder,jdbcType=INTEGER}, created = #{created,jdbcType=TIMESTAMP}, updated = #{updated,jdbcType=TIMESTAMP} where id = #{id,jdbcType=INTEGER} a.id, a.express_name, a.sort_order, a.created, a.updated ================================================ FILE: ymall-web-admin/src/main/resources/mapper/TbItemCatMapper.xml ================================================ delete from tb_item_cat where id = #{id,jdbcType=BIGINT} SELECT LAST_INSERT_ID() insert into tb_item_cat (parent_id, name, status, sort_order, is_parent, created, updated ) values (#{parentId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{sortOrder,jdbcType=INTEGER}, #{isParent,jdbcType=BIT}, #{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP} ) update tb_item_cat set parent_id = #{parentId,jdbcType=BIGINT}, name = #{name,jdbcType=VARCHAR}, status = #{status,jdbcType=INTEGER}, sort_order = #{sortOrder,jdbcType=INTEGER}, is_parent = #{isParent,jdbcType=BIT}, created = #{created,jdbcType=TIMESTAMP}, updated = #{updated,jdbcType=TIMESTAMP} where id = #{id,jdbcType=BIGINT} ================================================ FILE: ymall-web-admin/src/main/resources/mapper/TbItemDescMapper.xml ================================================ delete from tb_item_desc where item_id = #{itemId,jdbcType=BIGINT} insert into tb_item_desc (item_id, created, updated, item_desc ) values (#{itemId,jdbcType=BIGINT}, #{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP}, #{itemDesc,jdbcType=LONGVARCHAR} ) update tb_item_desc set created = #{created,jdbcType=TIMESTAMP}, updated = #{updated,jdbcType=TIMESTAMP}, item_desc = #{itemDesc,jdbcType=LONGVARCHAR} where item_id = #{itemId,jdbcType=BIGINT} ================================================ FILE: ymall-web-admin/src/main/resources/mapper/TbItemMapper.xml ================================================ delete from tb_item where id = #{id,jdbcType=BIGINT} insert into tb_item (id, title, sell_point, price, num, limit_num, image, cid, status, created, updated) values (#{id,jdbcType=BIGINT}, #{title,jdbcType=VARCHAR}, #{sellPoint,jdbcType=VARCHAR}, #{price,jdbcType=DECIMAL}, #{num,jdbcType=INTEGER}, #{limitNum,jdbcType=INTEGER}, #{image,jdbcType=VARCHAR}, #{cid,jdbcType=BIGINT}, #{status,jdbcType=INTEGER}, #{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP}) update tb_item set title = #{title,jdbcType=VARCHAR}, sell_point = #{sellPoint,jdbcType=VARCHAR}, price = #{price,jdbcType=DECIMAL}, num = #{num,jdbcType=INTEGER}, limit_num = #{limitNum,jdbcType=INTEGER}, image = #{image,jdbcType=VARCHAR}, cid = #{cid,jdbcType=BIGINT}, status = #{status,jdbcType=INTEGER}, created = #{created,jdbcType=TIMESTAMP}, updated = #{updated,jdbcType=TIMESTAMP} where id = #{id,jdbcType=BIGINT} a.id, a.title, a.sell_point, a.price, a.num, a.limit_num, a.image, a.cid, a.status, a.created, a.updated update tb_item set status = 0 where id = #{id} update tb_item set status = 1 where id = #{id} ================================================ FILE: ymall-web-admin/src/main/resources/mapper/TbMemberMapper.xml ================================================ delete from tb_member where id = #{id,jdbcType=BIGINT} SELECT LAST_INSERT_ID() insert into tb_member (username, password, phone, email, sex, state, file, description, created, updated) values (#{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{state,jdbcType=INTEGER}, #{file,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP}) update tb_member set username = #{username,jdbcType=VARCHAR}, password = #{password,jdbcType=VARCHAR}, phone = #{phone,jdbcType=VARCHAR}, email = #{email,jdbcType=VARCHAR}, sex = #{sex,jdbcType=VARCHAR}, state = #{state,jdbcType=INTEGER}, file = #{file,jdbcType=VARCHAR}, description = #{description,jdbcType=VARCHAR}, created = #{created,jdbcType=TIMESTAMP}, updated = #{updated,jdbcType=TIMESTAMP} where id = #{id,jdbcType=BIGINT} a.id, a.username, a.password, a.phone, a.email, a.sex, a.state, a.file, a.description, a.created, a.updated ================================================ FILE: ymall-web-admin/src/main/resources/mapper/TbOrderItemMapper.xml ================================================ delete from tb_order_item where id = #{id,jdbcType=VARCHAR} SELECT LAST_INSERT_ID() insert into tb_order_item (item_id, order_id, num, title, price, total_fee, pic_path ) values (#{itemId,jdbcType=VARCHAR}, #{orderId,jdbcType=VARCHAR}, #{num,jdbcType=INTEGER}, #{title,jdbcType=VARCHAR}, #{price,jdbcType=DECIMAL}, #{totalFee,jdbcType=DECIMAL}, #{picPath,jdbcType=VARCHAR} ) update tb_order_item set item_id = #{itemId,jdbcType=VARCHAR}, order_id = #{orderId,jdbcType=VARCHAR}, num = #{num,jdbcType=INTEGER}, title = #{title,jdbcType=VARCHAR}, price = #{price,jdbcType=DECIMAL}, total_fee = #{totalFee,jdbcType=DECIMAL}, pic_path = #{picPath,jdbcType=VARCHAR}, where id = #{id,jdbcType=VARCHAR} a.id, a.item_id, a.order_id, a.num, a.title, a.price, a.total_fee, a.pic_path ================================================ FILE: ymall-web-admin/src/main/resources/mapper/TbOrderMapper.xml ================================================ delete from tb_order where id = #{id,jdbcType=VARCHAR} SELECT LAST_INSERT_ID() insert into tb_order (payment, payment_type, post_fee, status, created, updated, payment_time, consign_time, end_time, close_time, shipping_name, shipping_code, user_id, buyer_message, buyer_nick, buyer_comment) values (#{payment,jdbcType=DECIMAL}, #{paymentType,jdbcType=INTEGER}, #{postFee,jdbcType=DECIMAL}, #{status,jdbcType=INTEGER}, #{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP}, #{paymentTime,jdbcType=TIMESTAMP}, #{consignTime,jdbcType=TIMESTAMP}, #{endTime,jdbcType=TIMESTAMP}, #{closeTime,jdbcType=TIMESTAMP}, #{shippingName,jdbcType=VARCHAR}, #{shippingCode,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT}, #{buyerMessage,jdbcType=VARCHAR}, #{buyerNick,jdbcType=VARCHAR}, #{buyerComment,jdbcType=BIT}) update tb_order set payment = #{payment,jdbcType=DECIMAL}, payment_type = #{paymentType,jdbcType=INTEGER}, post_fee = #{postFee,jdbcType=DECIMAL}, status = #{status,jdbcType=INTEGER}, created = #{created,jdbcType=TIMESTAMP}, updated = #{updated,jdbcType=TIMESTAMP}, payment_time = #{paymentTime,jdbcType=TIMESTAMP}, consign_time = #{consignTime,jdbcType=TIMESTAMP}, end_time = #{endTime,jdbcType=TIMESTAMP}, close_time = #{closeTime,jdbcType=TIMESTAMP}, shipping_name = #{shippingName,jdbcType=VARCHAR}, shipping_code = #{shippingCode,jdbcType=VARCHAR}, user_id = #{userId,jdbcType=BIGINT}, buyer_message = #{buyerMessage,jdbcType=VARCHAR}, buyer_nick = #{buyerNick,jdbcType=VARCHAR}, buyer_comment = #{buyerComment,jdbcType=BIT} where id = #{id,jdbcType=VARCHAR} a.id, a.payment, a.payment_type, a.post_fee, a.status, a.created, a.updated, a.payment_time, a.consign_time, a.end_time, a.close_time, a.shipping_name, a.shipping_code, a.user_id, a.buyer_message, a.buyer_nick, a.buyer_comment ================================================ FILE: ymall-web-admin/src/main/resources/mapper/TbOrderShippingMapper.xml ================================================ delete from tb_order_shipping where order_id = #{orderId,jdbcType=VARCHAR} SELECT LAST_INSERT_ID() insert into tb_order_shipping (receiver_name, receiver_phone, receiver_mobile, receiver_province, receiver_city, receiver_district, receiver_address, receiver_zip, created, updated) values (#{receiverName,jdbcType=VARCHAR}, #{receiverPhone,jdbcType=VARCHAR}, #{receiverMobile,jdbcType=VARCHAR}, #{receiverProvince,jdbcType=VARCHAR}, #{receiverCity,jdbcType=VARCHAR}, #{receiverDistrict,jdbcType=VARCHAR}, #{receiverAddress,jdbcType=VARCHAR}, #{receiverZip,jdbcType=VARCHAR}, #{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP}) update tb_order_shipping set receiver_name = #{receiverName,jdbcType=VARCHAR}, receiver_phone = #{receiverPhone,jdbcType=VARCHAR}, receiver_mobile = #{receiverMobile,jdbcType=VARCHAR}, receiver_province = #{receiverProvince,jdbcType=VARCHAR}, receiver_city = #{receiverCity,jdbcType=VARCHAR}, receiver_district = #{receiverDistrict,jdbcType=VARCHAR}, receiver_address = #{receiverAddress,jdbcType=VARCHAR}, receiver_zip = #{receiverZip,jdbcType=VARCHAR}, created = #{created,jdbcType=TIMESTAMP}, updated = #{updated,jdbcType=TIMESTAMP} where order_id = #{id,jdbcType=VARCHAR} ================================================ FILE: ymall-web-admin/src/main/resources/mapper/TbPanelContentMapper.xml ================================================ delete from tb_panel_content where id = #{id,jdbcType=INTEGER} SELECT LAST_INSERT_ID() insert into tb_panel_content (panel_id, type, product_id, sort_order, full_url, pic_url, pic_url2, pic_url3, created, updated) values (#{panelId,jdbcType=INTEGER}, #{type,jdbcType=INTEGER}, #{productId,jdbcType=BIGINT}, #{sortOrder,jdbcType=INTEGER}, #{fullUrl,jdbcType=VARCHAR}, #{picUrl,jdbcType=VARCHAR}, #{picUrl2,jdbcType=VARCHAR}, #{picUrl3,jdbcType=VARCHAR}, #{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP}) update tb_panel_content set panel_id = #{panelId,jdbcType=INTEGER}, type = #{type,jdbcType=INTEGER}, product_id = #{productId,jdbcType=BIGINT}, sort_order = #{sortOrder,jdbcType=INTEGER}, full_url = #{fullUrl,jdbcType=VARCHAR}, pic_url = #{picUrl,jdbcType=VARCHAR}, pic_url2 = #{picUrl2,jdbcType=VARCHAR}, pic_url3 = #{picUrl3,jdbcType=VARCHAR}, created = #{created,jdbcType=TIMESTAMP}, updated = #{updated,jdbcType=TIMESTAMP} where id = #{id,jdbcType=INTEGER} a.id, a.panel_id, a.type, a.product_id, a.sort_order, a.full_url, a.pic_url, a.pic_url2, a.pic_url3, a.created, a.updated ================================================ FILE: ymall-web-admin/src/main/resources/mapper/TbPanelMapper.xml ================================================ delete from tb_panel where id = #{id,jdbcType=INTEGER} SELECT LAST_INSERT_ID() insert into tb_panel (name, type, sort_order, position, limit_num, status, created, updated ) values (#{name,jdbcType=VARCHAR}, #{type,jdbcType=INTEGER}, #{sortOrder,jdbcType=INTEGER}, #{position,jdbcType=INTEGER}, #{limitNum,jdbcType=INTEGER}, #{status,jdbcType=INTEGER}, #{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP} ) update tb_panel set name = #{name,jdbcType=VARCHAR}, type = #{type,jdbcType=INTEGER}, sort_order = #{sortOrder,jdbcType=INTEGER}, position = #{position,jdbcType=INTEGER}, limit_num = #{limitNum,jdbcType=INTEGER}, status = #{status,jdbcType=INTEGER}, created = #{created,jdbcType=TIMESTAMP}, updated = #{updated,jdbcType=TIMESTAMP} where id = #{id,jdbcType=INTEGER} a.id, a.name, a.type, a.sort_order, a.position, a.limit_num, a.status, a.created, a.updated ================================================ FILE: ymall-web-admin/src/main/resources/mapper/TbUserMapper.xml ================================================ delete from tb_user where id = #{id,jdbcType=BIGINT} SELECT LAST_INSERT_ID() insert into tb_user (username, password, created, updated) values (#{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP} ) update tb_user set username = #{username,jdbcType=VARCHAR}, password = #{password,jdbcType=VARCHAR}, created = #{created,jdbcType=TIMESTAMP}, updated = #{updated,jdbcType=TIMESTAMP} where id = #{id,jdbcType=BIGINT} a.id, a.username, a.password, a.created, a.updated ================================================ FILE: ymall-web-admin/src/main/resources/mybatis-config.xml ================================================ ================================================ FILE: ymall-web-admin/src/main/resources/resource.properties ================================================ # Ʒ黺ǰ׺ PRODUCT_ITEM=PRODUCT_ITEM # ໺ key HEADER_CATE=HEADER_CATE ================================================ FILE: ymall-web-admin/src/main/resources/spring-context-druid.xml ================================================ ================================================ FILE: ymall-web-admin/src/main/resources/spring-context-elasticsearch.xml ================================================ ================================================ FILE: ymall-web-admin/src/main/resources/spring-context-mybatis.xml ================================================ ================================================ FILE: ymall-web-admin/src/main/resources/spring-context-redis.xml ================================================ ================================================ FILE: ymall-web-admin/src/main/resources/spring-context-shiro.xml ================================================ /static/assets/** = anon /user/geetestInit = anon /user/login = anon /** = authc ================================================ FILE: ymall-web-admin/src/main/resources/spring-context.xml ================================================ ================================================ FILE: ymall-web-admin/src/main/resources/spring-mvc.xml ================================================ Spring MVC Configuration ================================================ FILE: ymall-web-admin/src/main/resources/ymall.properties ================================================ #============================# #==== Database settings ====# #============================# # JDBC jdbc.driverClass=com.mysql.jdbc.Driver jdbc.connectionURL=jdbc:mysql:///ymall?useUnicode=true&characterEncoding=utf-8&useSSL=false jdbc.username=root jdbc.password=123456 # JDBC Pool jdbc.pool.init=1 jdbc.pool.minIdle=3 jdbc.pool.maxActive=20 # JDBC Test jdbc.testSql=SELECT 'x' FROM DUAL #============================# #==== Redis settings ====# #============================# redis.host=192.168.106.154 redis.port=6379 redis.password=" redis.maxIdle=400 redis.maxTotal=6000 redis.maxWaitMillis=1000 redis.blockWhenExhausted=true redis.testOnBorrow=true reids.timeout=10000 #============================# #==== Framework settings ====# #============================# # \u89c6\u56fe\u6587\u4ef6\u5b58\u653e\u8def\u5f84 web.view.prefix=/WEB-INF/views/ web.view.suffix=.jsp web.maxUploadSize=52428800 ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/includes/footer.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/includes/header.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/admin-form.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 编辑管理员
================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/admin-list.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 管理员列表
ID 登录名 创建时间 操作
================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/change-admin-password.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 修改密码
================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/change-password.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 修改密码 - 会员管理
================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/chart-order.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 订单销量统计
本周 本月 上个月   指定日期范围: -   确定 总销售额:0.00
================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/choose-category.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 产品分类
    ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/choose-parent-category.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 产品分类
      ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/choose-product.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 选择商品
      ID 缩略图 商品名称 描述 单价 创建日期 更新日期 状态 操作
      ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/content-common-form.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/content-common-list.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %>
        首页板块
        ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/content-header-list.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 导航栏管理
        ID 名称 跳转链接 类型 排序值 操作
        ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/content-panel-add.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 添加板块
        ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/content-panel.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 首页板块
          ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/index.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> YMall后台管理系统
          • 关闭当前
          • 关闭全部
          ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/lock-screen.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> YMall后台管理系统 v1.0 Lock Screen
          lock avatar

          Yuu

          Locked
          ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/login.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> YMall后台管理系统

          YMall后台管理系统

          Login Here





          正在加载验证码...

          ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/member-ban.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 删除的用户
          ID 用户名 性别 手机 邮箱 地址 创建时间 状态 操作
          ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/member-form.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 添加用户
          ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/member-list.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 用户管理
          ID 用户名 手机 邮箱 创建时间 更新时间 状态 操作
          ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/order-deliver.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 发货
          ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/order-list.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 订单列表
          批量删除 订单打印
          订单号 支付金额(¥) 用户账号 物流号 备注 创建时间 支付时间 关闭时间 完成时间 订单状态 操作
          ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/order-print.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 订单信息

          YMall商城订单信息

          会员名称:
          下单时间:
          订单编号:
          支付方式:
          付款时间:
          发货时间:
          发货单号:
          收货人:
          手机:
          收货地址:
          商品名称 商品ID号 价格(¥) 数量(件) 小计(¥)
          订单总金额:¥
          订单备注:
          ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/product-category-add.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 添加产品分类
          ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/product-category.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 商品分类
            ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/product-form.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% request.setCharacterEncoding("UTF-8"); String htmlData = request.getParameter("detail") != null ? request.getParameter("detail") : ""; %>
            <%=htmlData%>
            ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/product-list.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 商品列表
              商品分类
              ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/system-express-form.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 编辑快递
              ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/system-express.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> 快递管理
              ID 快递名称 排序值 操作
              ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/views/welcome.jsp ================================================ <%@ page contentType="text/html;charset=UTF-8" language="java" %> YMall后台管理系统 v1.0

              ...

              用户总数

              ...

              商品总数

              ...

              订单总数

              YMall项目日志

              This is a project timeline

              04:00 pm

              2019年7月12日

              Yuu 正在进行项目评审与答辩

              07:00 pm

              2019年6月20日

              Yuu 启动 YMall 项目

              05:00 pm

              2019年6月20日

              Yuu 完成了 数据库设计文档

              02:30 pm

              2019年6月19日

              Yuu 完成了 需求分析文档

              05:00 pm

              2019年6月18日

              Yuu 完成了 项目计划文档

               
              ...
              ...
              • 湿度
                ...
              • 空气质量
                ...
              • 风力
                ...
              Copyright ©2019 Yuu All Rights Reserved. 本后台系统由 H-uiFlatLab 提供前端静态页面支持
              ================================================ FILE: ymall-web-admin/src/main/webapp/WEB-INF/web.xml ================================================ contextConfigLocation classpath:spring-context*.xml org.springframework.web.context.ContextLoaderListener shiroFilter org.springframework.web.filter.DelegatingFilterProxy targetFilterLifecycle true shiroFilter /* encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true encodingFilter /* springServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath*:/spring-mvc*.xml 1 springServlet / DruidStatView com.alibaba.druid.support.http.StatViewServlet DruidStatView /druid/* default /swagger-ui.html ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/app/app.js ================================================ var App = function () { // iCheck var _masterCheckbox; var _checkbox; // 用于存放 ID 的数组 var _idArray; /** * 私有方法,初始化 ICheck */ var handlerInitCheckbox = function () { // 激活 $('input[type="checkbox"].minimal, input[type="radio"].minimal').iCheck({ checkboxClass: 'icheckbox_minimal-blue', radioClass : 'iradio_minimal-blue' }); // 获取控制端 Checkbox _masterCheckbox = $('input[type="checkbox"].minimal.icheck_master'); // 获取全部 Checkbox 集合 _checkbox = $('input[type="checkbox"].minimal'); }; /** * Checkbox 全选功能 */ var handlerCheckboxAll = function () { _masterCheckbox.on("ifClicked", function (e) { // 返回 true 表示未选中 if (e.target.checked) { _checkbox.iCheck("uncheck"); } // 选中状态 else { _checkbox.iCheck("check"); } }) }; /** * 消息提示方法 */ var handlerMsgSuccess = function (content) { layer.msg(content, {icon: 1, time: 3000}); }; /** * 初始化 DataTables */ var handlerInitDataTables = function (url, columns) { var _dataTable = $("#dataTable").DataTable({ "ordering": false, "processing": true, "searching": true, "serverSide": true, "deferRender": true, "ajax": { url: url, type: 'GET' }, "columns": columns, language: { url: '/static/assets/lib/datatables/Chinese.json' }, "drawCallback": function () { handlerInitCheckbox(); handlerCheckboxAll(); } }); return _dataTable; }; /** * 初始化 zTree * * @param url 请求路径 * @param autoParam * @param callback */ var handlerInitZTree = function (url, callback) { var setting = { view: { // 禁止多选 selectedMulti: false }, data: { simpleData: { enable:true, idKey: "id", pIdKey: "pId", rootPId: "" } }, async: { // 开启异步加载 enable: true, // 远程访问地址 url: url, // 请求方式 type: "GET", contentType: "application/json", autoParam: ["id"] }, callback: callback }; $.fn.zTree.init($("#myTree"), setting); }; /** * 弹窗并全屏打开 * * @param title 标题 * @param url 打开的页面路径 */ var handlerOpenAndFull = function (title, url) { var index = layer.open({ type: 2, title: title, content: url }); layer.full(index); }; /** * 自定义弹窗 * * @param title 标题 * @param url 打开的页面路径 * @param w 宽度 * @param h 高度 */ var handlerShow = function (title, url, w, h) { layer_show(title, url, w, h); }; /** * 删除单笔数据 * * @param confirmMsg 确认消息 * @param url 请求路径 * @param successMethod 成功回调方法 */ var handlerDeleteSingle = function (confirmMsg, url, successMethod) { layer.confirm(confirmMsg, {icon:0},function () { var index = layer.load(3); $.ajax({ type: 'DELETE', url: url, dataType: 'json', success: function (data) { layer.close(index); if (data.status == 200) { successMethod(data); } else { layer.alert(data.message, {title: "错误信息", icon: 2}); } }, error: function () { layer.close(index); layer.alert(ERROR_REQUEST_MESSAGE, {title: "错误信息", icon: 2}); } }) }); }; /** * 批量删除 * * @param url 路径 * @param successMsg 成功回调方法 */ var handlerDeleteMulti = function (url, successMethod) { _idArray = new Array(); // 将选中的元素 ID 放入数组中 _checkbox.each(function () { var _id = $(this).attr("id"); if (_id != null && _id != "undefine" && $(this).is(":checked")) { _idArray.push(_id); } }); // 判断用户是否选择了数据项 if (_idArray.length === 0) { layer.msg('您还未勾选任何数据!', {icon:5, time:3000}); return; } // 确认删除 layer.confirm('确定要删除所选的'+ _idArray.length +'条数据吗?', {icon:0}, function () { var index = layer.load(3); $.ajax({ type: 'DELETE', url: url + _idArray, dataType: 'json', success: function (data) { layer.close(index); if (data.status == 200) { successMethod(data); } else { layer.alert(data.message, {title: "错误信息", icon: 2}); } }, error: function () { layer.close(index); layer.alert(ERROR_REQUEST_MESSAGE, {title: "错误信息", icon: 2}); } }); }); }; /** * 通用的 Ajax 请求方法,不带数据 * * @param url 请求地址 * @param type 请求类型 * @param successMethod 请求成功调用的方法 */ var handlerAjax = function (url, type, successMethod) { $.ajax({ url: url, type: type, dataType: 'json', success:function (data) { if (data.status == 200) { successMethod(data); } else { layer.alert(data.message, {title: "错误信息", icon: 2}); } }, error:function(){ layer.alert(ERROR_REQUEST_MESSAGE, {title: '错误信息',icon: 2}); } }); }; /** * 通用的 Ajax 请求方法,带数据 * * @param url * @param type * @param data * @param successMethod */ var handlerAjaxWithData = function (url, type, data, successMethod) { $.ajax({ url: url, type: type, dataType: 'json', data: data, success:function (data) { if (data.status == 200) { successMethod(data); } else { layer.alert(data.message, {title: "错误信息", icon: 2}); } }, error:function(){ layer.alert(ERROR_REQUEST_MESSAGE, {title: '错误信息',icon: 2}); } }); }; /** * 图片预览 * * @param obj */ var handlerPreviewImg= function (obj, w, h) { var img = new Image(); img.src = obj.src; var imgHtml = ""; //弹出层 layer.open({ type: 1, shade: 0.8, offset: 'auto', area: [w + 'px',h+'px'], shadeClose:true, scrollbar: false, title: "图片预览", //不显示标题 content: imgHtml, //捕获的元素,注意:最好该指定的元素要存放在body最外层,否则可能被其它的相对元素所影响 cancel: function () { //layer.msg('捕获就是从页面已经存在的元素上,包裹layer的结构', { time: 5000, icon: 6 }); } }); }; return { /** * ICheck 初始化 */ initICheck: function () { handlerInitCheckbox(); handlerCheckboxAll(); }, /** * 消息提示 * * @param content 内容 */ msgSuccess: function (content) { handlerMsgSuccess(content); }, /** * 初始化 DataTables * * @param url 请求路径 * @param columns 返回参数映射 * @returns {jQuery|*} */ initDataTables: function (url, columns) { return handlerInitDataTables(url, columns); }, /** * 初始化 zTree * * @param url 请求路径 * @param callback 回调方法 */ initZtree: function (url, callback) { handlerInitZTree(url, callback); }, /** * 弹窗并全屏打开 * * @param title 标题 * @param url 打开的页面路径 */ openAndFull: function (title, url) { handlerOpenAndFull(title, url); }, /** * 自定义弹窗 * * @param title 标题 * @param url 打开的页面路径 * @param w 宽度 * @param h 高度 */ show: function(title, url, w, h) { handlerShow(title, url, w, h); }, /** * 删除单笔数据 * * @param confirmMsg 确认消息 * @param url 请求路径 * @param successMethod 成功回调方法 */ deleteSinge: function (confirmMsg, url, successMethod) { handlerDeleteSingle(confirmMsg, url, successMethod); }, /** * 批量删除 * * @param url 路径 * @param successMsg 成功回调方法 */ deleteMulti: function (url, successMethod) { handlerDeleteMulti(url, successMethod); }, /** * 通用的 Ajax 请求方法 * * @param url 请求地址 * @param type 请求类型 * @param successMethod 请求成功调用的方法 */ ajax: function (url, type, successMethod) { handlerAjax(url, type, successMethod); }, /** * 通用的 Ajax 请求方法,带数据 * * @param url * @param type * @param data * @param successMethod */ ajaxWithData: function (url, type, data, successMethod) { handlerAjaxWithData(url, type, data, successMethod); }, /** * 图片预览 * * @param obj */ previewImg: function (obj, w, h) { handlerPreviewImg(obj, w, h); } } }(); ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/app/common.js ================================================ /*刷新表格*/ function refresh(){ var table = $('.table').DataTable(); table.ajax.reload(null,false);// 刷新表格数据,分页信息不会重置 } /*时间转换*/ function date(data){ if(data==null||data==""){ return ""; } var time = new Date(data); var y = time.getFullYear();//年 var m = time.getMonth() + 1;//月 if (m >= 0 && m <= 9) { m = "0" + m; } var d = time.getDate();//日 if (d >= 0 && d <= 9) { d = "0" + d; } var h = time.getHours();//时 if (h >= 0 && h <= 9) { h = "0" + h; } var mm = time.getMinutes();//分 if (mm >= 0 && mm <= 9) { mm = "0" + mm; } return (y+"-"+m+"-"+d+" "+h+":"+mm); } /*时间转换2*/ function dateAll(data){ if(data==null||data==""){ return ""; } var time = new Date(data); var y = time.getFullYear();//年 var m = time.getMonth() + 1;//月 if (m >= 0 && m <= 9) { m = "0" + m; } var d = time.getDate();//日 if (d >= 0 && d <= 9) { d = "0" + d; } var h = time.getHours();//时 if (h >= 0 && h <= 9) { h = "0" + h; } var mm = time.getMinutes();//分 if (mm >= 0 && mm <= 9) { mm = "0" + mm; } var ss = time.getSeconds();//秒 if (ss >= 0 && ss <= 9) { ss = "0" + ss; } return (y+"-"+m+"-"+d+" "+h+":"+mm+":"+ss); } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/app/const.js ================================================ // 通用的常量 var ERROR_REQUEST_MESSAGE = "连接服务器失败,请检查您的网络信息"; ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/app/validate.js ================================================ /** * 函数对象 */ var Validate = function () { /** * 增加自定义验证规则 */ var handlerInitDecimalsValidate = function () { jQuery.validator.addMethod("decimalsValue",function(value, element) { var decimalsValue =/^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$/ ; return this.optional(element) || (decimalsValue.test(value)); }, "金额必须大于0并且只能精确到分"); }; /** * 初始化 Validae */ var handlerInitValidate = function (url, beforeSubmit, successMethod) { $("#validate-form").validate({ ignore: ":hidden",//不验证的元素 rules: { picUrl: { required: true, minlength: 1, maxlength: 20 }, fullUrl: { required: true, minlength: 10 }, sortOrder: { required: true, digits: true, maxlength: 4 }, name: { required: true, minlength: 1, maxlength: 25 }, limitNum: { required: true, digits: true, maxlength: 3 }, title: { required: true }, sellPoint: { required: true }, cname: { required: true }, price: { decimalsValue: true, required: true, maxlength: 10 }, num: { digits: true, required: true, maxlength: 5 }, shippingName: { required: true }, shippingCode: { required: true }, password: { required: true, minlength: 6, }, password2: { required: true, minlength: 6, equalTo: "#password" }, expressName:{ required:true, } }, messages: { picUrl: { required: "名称不能为空" }, fullUrl: { required: "跳转链接不能为空" }, sortOrder: { required: "排序值不能为空", }, name: { required: "板块名称不能为空" }, limitNum: { required: "限制数量不能为空" }, cname: { required: "商品分类不能" }, price: { required: "产品展示价格不能为空" }, num: { required: "库存数量不能为空" }, shippingName: { required: "请选择快递名称" }, shippingCode: { required: "请填写快递单号" }, password: { required: "请填写密码", }, password2: { required: "请确认密码", equalTo: "两次密码输入不一致" }, expressName:{ required: "快递名称不能为空" } }, submitHandler: function (form) { if (beforeSubmit != "") { if(!beforeSubmit()) { return; } } var index = layer.load(3); $(form).ajaxSubmit({ url: url, type: "POST", success: function (data) { layer.close(index); if (data.status == 200) { successMethod(data); } else { layer.alert(data.message, {title: '错误信息', icon: 2}); } }, error: function () { layer.close(index); layer.alert(ERROR_REQUEST_MESSAGE, {title: "错误信息", icon: 2}); } }); } }); }; return { /** * 验证 */ validate: function (url, beforeSubmit, successMethod) { handlerInitDecimalsValidate(); handlerInitValidate(url, beforeSubmit, successMethod); } } }(); ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/DD_belatedPNG_0.0.8a-min.js ================================================ /** * DD_belatedPNG: Adds IE6 support: PNG images for CSS background-image and HTML . * Author: Drew Diller * Email: drew.diller@gmail.com * URL: http://www.dillerdesign.com/experiment/DD_belatedPNG/ * Version: 0.0.8a * Licensed under the MIT License: http://dillerdesign.com/experiment/DD_belatedPNG/#license * * Example usage: * DD_belatedPNG.fix('.png_bg'); // argument is a CSS selector * DD_belatedPNG.fixPng( someNode ); // argument is an HTMLDomElement **/ var DD_belatedPNG={ns:"DD_belatedPNG",imgSize:{},delay:10,nodesFixed:0,createVmlNameSpace:function(){if(document.namespaces&&!document.namespaces[this.ns]){document.namespaces.add(this.ns,"urn:schemas-microsoft-com:vml")}},createVmlStyleSheet:function(){var b,a;b=document.createElement("style");b.setAttribute("media","screen");document.documentElement.firstChild.insertBefore(b,document.documentElement.firstChild.firstChild);if(b.styleSheet){b=b.styleSheet;b.addRule(this.ns+"\\:*","{behavior:url(#default#VML)}");b.addRule(this.ns+"\\:shape","position:absolute;");b.addRule("img."+this.ns+"_sizeFinder","behavior:none; border:none; position:absolute; z-index:-1; top:-10000px; visibility:hidden;");this.screenStyleSheet=b;a=document.createElement("style");a.setAttribute("media","print");document.documentElement.firstChild.insertBefore(a,document.documentElement.firstChild.firstChild);a=a.styleSheet;a.addRule(this.ns+"\\:*","{display: none !important;}");a.addRule("img."+this.ns+"_sizeFinder","{display: none !important;}")}},readPropertyChange:function(){var b,c,a;b=event.srcElement;if(!b.vmlInitiated){return}if(event.propertyName.search("background")!=-1||event.propertyName.search("border")!=-1){DD_belatedPNG.applyVML(b)}if(event.propertyName=="style.display"){c=(b.currentStyle.display=="none")?"none":"block";for(a in b.vml){if(b.vml.hasOwnProperty(a)){b.vml[a].shape.style.display=c}}}if(event.propertyName.search("filter")!=-1){DD_belatedPNG.vmlOpacity(b)}},vmlOpacity:function(b){if(b.currentStyle.filter.search("lpha")!=-1){var a=b.currentStyle.filter;a=parseInt(a.substring(a.lastIndexOf("=")+1,a.lastIndexOf(")")),10)/100;b.vml.color.shape.style.filter=b.currentStyle.filter;b.vml.image.fill.opacity=a}},handlePseudoHover:function(a){setTimeout(function(){DD_belatedPNG.applyVML(a)},1)},fix:function(a){if(this.screenStyleSheet){var c,b;c=a.split(",");for(b=0;bn.H){i.B=n.H}d.vml.image.shape.style.clip="rect("+i.T+"px "+(i.R+a)+"px "+i.B+"px "+(i.L+a)+"px)"}else{d.vml.image.shape.style.clip="rect("+f.T+"px "+f.R+"px "+f.B+"px "+f.L+"px)"}},figurePercentage:function(d,c,f,a){var b,e;e=true;b=(f=="X");switch(a){case"left":case"top":d[f]=0;break;case"center":d[f]=0.5;break;case"right":case"bottom":d[f]=1;break;default:if(a.search("%")!=-1){d[f]=parseInt(a,10)/100}else{e=false}}d[f]=Math.ceil(e?((c[b?"W":"H"]*d[f])-(c[b?"w":"h"]*d[f])):parseInt(a,10));if(d[f]%2===0){d[f]++}return d[f]},fixPng:function(c){c.style.behavior="none";var g,b,f,a,d;if(c.nodeName=="BODY"||c.nodeName=="TD"||c.nodeName=="TR"){return}c.isImg=false;if(c.nodeName=="IMG"){if(c.src.toLowerCase().search(/\.png$/)!=-1){c.isImg=true;c.style.visibility="hidden"}else{return}}else{if(c.currentStyle.backgroundImage.toLowerCase().search(".png")==-1){return}}g=DD_belatedPNG;c.vml={color:{},image:{}};b={shape:{},fill:{}};for(a in c.vml){if(c.vml.hasOwnProperty(a)){for(d in b){if(b.hasOwnProperty(d)){f=g.ns+":"+d;c.vml[a][d]=document.createElement(f)}}c.vml[a].shape.stroked=false;c.vml[a].shape.appendChild(c.vml[a].fill);c.parentNode.insertBefore(c.vml[a].shape,c)}}c.vml.image.shape.fillcolor="none";c.vml.image.fill.type="tile";c.vml.color.fill.on=false;g.attachHandlers(c);g.giveLayout(c);g.giveLayout(c.offsetParent);c.vmlInitiated=true;g.applyVML(c)}};try{document.execCommand("BackgroundImageCache",false,true)}catch(r){}DD_belatedPNG.createVmlNameSpace();DD_belatedPNG.createVmlStyleSheet(); ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/Hui-iconfont/1.0.8/demo.html ================================================ Hui-iconfont_v1.0.8

              Hui-iconfont_v1.0.8

              最后更新日期:2016.06.21 比1.0.7版本增加10个图标

              操作相关

              • 返回顶部
                &#xe684;
                .Hui-iconfont-gotop
              • 列表
                &#xe667;
                .Hui-iconfont-menu
              • 剪切
                &#xe64e;
                .Hui-iconfont-jiandao
              • 搜索2
                &#xe665;
                .Hui-iconfont-search2
              • 搜索1
                &#xe709;
                .Hui-iconfont-search1
              • 保存
                &#xe632;
                .save
              • 撤销
                &#xe66b;
                .Hui-iconfont-chexiao
              • 重做
                &#xe66c;
                .Hui-iconfont-zhongzuo
              • 下载
                &#xe640;
                .Hui-iconfont-down
              • 切换器右
                &#xe63d;
                .Hui-iconfont-slider-right
              • 切换器左
                &#xe67d;
                .Hui-iconfont-slider-left
              • 发布
                &#xe603;
                .Hui-iconfont-fabu
              • 添加
                &#xe604;
                .Hui-iconfont-add2
              • 换一批
                &#xe68f;
                .Hui-iconfont-huanyipi
              • 等待
                &#xe606;
                .Hui-iconfont-dengdai
              • 导出
                &#xe644;
                .Hui-iconfont-daochu
              • 导入
                &#xe645;
                .Hui-iconfont-daoru
              • 删除
                &#xe60b;
                .Hui-iconfont-del
              • 删除
                &#xe609;
                .Hui-iconfont-del2
              • 删除
                &#xe6e2;
                .Hui-iconfont-del3
              • 输入
                &#xe647;
                .Hui-iconfont-shuru
              • 添加
                &#xe600;
                .Hui-iconfont-add
              • 减号
                &#xe6a1;
                .Hui-iconfont-jianhao
              • 编辑
                &#xe60c;
                .Hui-iconfont-edit2
              • 编辑
                &#xe6df;
                .Hui-iconfont-edit
              • 管理
                &#xe61d;
                .Hui-iconfont-manage
              • 添加
                &#xe610;
                .Hui-iconfont-add3
              • 添加
                &#xe61f;
                .Hui-iconfont-add4
              • 密码
                &#xe63f;
                .Hui-iconfont-key
              • 解锁
                &#xe605;
                .Hui-iconfont-jiesuo
              • 锁定
                &#xe60e;
                .Hui-iconfont-suoding
              • 关闭
                &#xe6a6;
                .Hui-iconfont-close
              • 关闭2
                &#xe706;
                .Hui-iconfont-close2
              • 选择
                &#xe6a7;
                .Hui-iconfont-xuanze
              • 未选
                &#xe608;
                .Hui-iconfont-weigouxuan2
              • 选中
                &#xe6a8;
                .Hui-iconfont-xuanzhong1
              • 选中
                &#xe676;
                .Hui-iconfont-xuanzhong
              • 未选中
                &#xe677;
                .Hui-iconfont-weixuanzhong
              • 启用
                &#xe601;
                .Hui-iconfont-gouxuan2
              • 重启
                &#xe6f7;
                .Hui-iconfont-chongqi
              • 勾选
                &#xe617;
                .Hui-iconfont-selected
              • 上架
                &#xe6dc;
                .Hui-iconfont-shangjia
              • 下架
                &#xe6de;
                .Hui-iconfont-xiajia
              • 上传
                &#xe642;
                .Hui-iconfont-upload
              • 下载
                &#xe641;
                .Hui-iconfont-yundown
              • 剪裁
                &#xe6bc;
                .Hui-iconfont-caiqie
              • 旋转
                &#xe6bd;
                .Hui-iconfont-xuanzhuan
              • 启用
                &#xe615;
                .Hui-iconfont-gouxuan
              • 未勾选
                &#xe614;
                .Hui-iconfont-weigouxuan
              • 录音
                &#xe619;
                .Hui-iconfont-luyin
              • 预览
                &#xe695;
                .Hui-iconfont-yulan
              • 审核不通过
                &#xe6e0;
                .Hui-iconfont-shenhe-weitongguo
              • 审核不通过
                &#xe6dd;
                .Hui-iconfont-shenhe-butongguo2
              • 审核通过
                &#xe6e1;
                .Hui-iconfont-shenhe-tongguo
              • 停用
                &#xe631;
                .Hui-iconfont-shenhe-tingyong
              • 播放
                &#xe6e6;
                .Hui-iconfont-bofang
              • 上一首
                &#xe6db;
                .Hui-iconfont-shangyishou
              • 下一首
                &#xe6e3;
                .Hui-iconfont-xiayishou
              • 暂停
                &#xe6e5;
                .Hui-iconfont-zanting
              • 停止
                &#xe6e4;
                .Hui-iconfont-tingzhi
              • 阅读
                &#xe720;
                .Hui-iconfont-yuedu
              • 眼睛
                &#xe725;
                .Hui-iconfont-yanjing
              • 电源
                &#xe726;
                .Hui-iconfont-power
              • 图标2_橡皮擦
                &#xe72a;
                .Hui-iconfont-xiangpicha
              • 计时器
                &#xe728;
                .Hui-iconfont-jishiqi

              菜单相关

              • home
                &#xe625;
                .Hui-iconfont-home
              • 小箭头
                &#xe67f;
                .Hui-iconfont-home2
              • cmstop新闻
                &#xe616;
                .Hui-iconfont-news
              • 图片
                &#xe613;
                .Hui-iconfont-tuku
              • 音乐
                &#xe60f;
                .Hui-iconfont-music
              • 标签
                &#xe64b;
                .Hui-iconfont-tags
              • 语音
                &#xe66f;
                .Hui-iconfont-yuyin3
              • 系统
                &#xe62e;
                .Hui-iconfont-system
              • 帮助
                &#xe633;
                .Hui-iconfont-help
              • 出库
                &#xe634;
                .Hui-iconfont-chuku
              • 图片
                &#xe646;
                .Hui-iconfont-picture
              • 分类
                &#xe681;
                .Hui-iconfont-fenlei
              • 合同管理
                &#xe636;
                .Hui-iconfont-hetong
              • 全部订单
                &#xe687;
                .Hui-iconfont-quanbudingdan
              • 任务管理
                &#xe637;
                .Hui-iconfont-renwu
              • 问题反馈
                &#xe691;
                .Hui-iconfont-feedback
              • 意见反馈
                &#xe692;
                .Hui-iconfont-feedback2
              • 合同
                &#xe639;
                .Hui-iconfont-dangan
              • 日志
                &#xe623;
                .Hui-iconfont-log
              • 列表页面
                &#xe626;
                .Hui-iconfont-pages
              • 文件
                &#xe63e;
                .Hui-iconfont-file
              • 管理
                &#xe63c;
                .Hui-iconfont-manage2
              • 订单
                &#xe627;
                .Hui-iconfont-order
              • 语音
                &#xe6a4;
                .Hui-iconfont-yuyin2
              • 语音
                &#xe6a5;
                .Hui-iconfont-yuyin
              • 图片
                &#xe612;
                .Hui-iconfont-picture1
              • 图文详情
                &#xe685;
                .Hui-iconfont-tuwenxiangqing
              • 模版
                &#xe72d;
                .Hui-iconfont-moban-2
              • 节日
                &#xe727;
                .Hui-iconfont-jieri
              • 随你后台-网站
                &#xe72b;
                .Hui-iconfont-moban

              天气相关

              • 多云
                &#xe6ac;
                .Hui-iconfont-tianqi-duoyun
              • &#xe6ad;
                .Hui-iconfont-tianqi-mai
              • &#xe6ae;
                .Hui-iconfont-tianqi-qing
              • &#xe6af;
                .Hui-iconfont-tianqi-wu
              • &#xe6b0;
                .Hui-iconfont-tianqi-xue
              • &#xe6b1;
                .Hui-iconfont-tianqi-yin
              • &#xe6b2;
                .Hui-iconfont-tianqi-yu

              用户相关

              • 用户
                &#xe62c;
                .Hui-iconfont-user
              • 用户
                &#xe60d;
                .Hui-iconfont-user2
              • 用户头像
                &#xe60a;
                .Hui-iconfont-avatar
              • 个人中心
                &#xe705;
                .Hui-iconfont-avatar2
              • 添加用户
                &#xe607;
                .Hui-iconfont-user-add
              • 用户ID
                &#xe602;
                .Hui-iconfont-userid
              • 证照管理
                &#xe638;
                .Hui-iconfont-zhizhao
              • 执业证
                &#xe70d;
                .Hui-iconfont-practice
              • 群组
                &#xe62b;
                .Hui-iconfont-user-group
              • 站长
                &#xe653;
                .Hui-iconfont-user-zhanzhang
              • 管理员
                &#xe62d;
                .Hui-iconfont-root
              • 公司
                &#xe643;
                .Hui-iconfont-gongsi
              • 会员卡
                &#xe6b4;
                .Hui-iconfont-vip-card2
              • 会员
                &#xe6cc;
                .Hui-iconfont-vip
              • 群组
                &#xe611;
                .Hui-iconfont-usergroup2
              • 客服
                &#xe6d0;
                .Hui-iconfont-kefu
              • 版主
                &#xe72c;
                .Hui-iconfont-banzhu
              • 皇冠
                &#xe6d3;
                .Hui-iconfont-huangguan

              表情相关

              • 表情
                &#xe68e;
                .Hui-iconfont-face2
              • 表情
                &#xe668;
                .Hui-iconfont-face
              • 微笑
                &#xe656;
                .Hui-iconfont-face-weixiao
              • 哭脸
                &#xe688;
                .face-ku
              • 吃惊
                &#xe657;
                .Hui-iconfont-face-chijing
              • &#xe658;
                .Hui-iconfont-face-dai
              • 耍酷
                &#xe659;
                .Hui-iconfont-face-shuaku
              • 魔鬼
                &#xe65a;
                .Hui-iconfont-face-mogui
              • 尴尬
                &#xe65b;
                .Hui-iconfont-face-ganga
              • &#xe65c;
                .Hui-iconfont-face-qin
              • &#xe65d;
                .Hui-iconfont-face-nu
              • 眨眼
                &#xe65e;
                .Hui-iconfont-face-zhayan
              • 生气
                &#xe65f;
                .Hui-iconfont-face-shengqi
              • &#xe660;
                .Hui-iconfont-face-ma
              • 鄙视
                &#xe661;
                .Hui-iconfont-face-bishi
              • 卖萌
                &#xe662;
                .Hui-iconfont-face-maimeng
              • 惊呆
                &#xe663;
                .Hui-iconfont-face-jingdai
              • &#xe664;
                .Hui-iconfont-face-yun

              社区相关

              • 分享
                &#xe666;
                .Hui-iconfont-share2
              • 分享
                &#xe6aa;
                .Hui-iconfont-share
              • 人人网
                &#xe6d8;
                .Hui-iconfont-share-renren
              • 腾讯微博
                &#xe6d9;
                .Hui-iconfont-share-tweibo
              • 豆瓣
                &#xe67c;
                .Hui-iconfont-share-douban
              • 朋友圈
                &#xe693;
                .Hui-iconfont-share-pengyouquan
              • 微信
                &#xe694;
                .Hui-iconfont-share-weixin
              • QQ
                &#xe67b;
                .Hui-iconfont-share-qq
              • QQ空间
                &#xe6c8;
                .Hui-iconfont-share-qzone
              • 微博
                &#xe6da;
                .Hui-iconfont-share-weibo
              • 知乎
                &#xe689;
                .Hui-iconfont-share-zhihu
              • 更多
                &#xe715;
                .Hui-iconfont-gengduo
              • 更多
                &#xe716;
                .Hui-iconfont-gengduo2
              • 更多
                &#xe6f9;
                .Hui-iconfont-engduo3
              • 更多
                &#xe717;
                .Hui-iconfont-gengduo4
              • 喜欢
                &#xe649;
                .Hui-iconfont-like
              • 喜欢
                &#xe648;
                .Hui-iconfont-like2
              • 已关注
                &#xe680;
                .Hui-iconfont-yiguanzhu
              • 评论
                &#xe622;
                .Hui-iconfont-comment
              • 累计评价
                &#xe686;
                .Hui-iconfont-leijipingjia
              • 消息
                &#xe68a;
                .Hui-iconfont-xiaoxi
              • 收藏
                &#xe61b;
                .Hui-iconfont-cang
              • 收藏-选中
                &#xe630;
                .Hui-iconfont-cang-selected
              • 收藏
                &#xe69e;
                .Hui-iconfont-cang2
              • 收藏-选中
                &#xe69d;
                .Hui-iconfont-cang2-selected
              • 关注-更多操作
                &#xe68b;
                .Hui-iconfont-more
              • 赞扬
                &#xe66d;
                .Hui-iconfont-zan
              • 批评
                &#xe66e;
                .Hui-iconfont-cai
              • 点赞
                &#xe697;
                .Hui-iconfont-zan2
              • 通知
                &#xe62f;
                .Hui-iconfont-msg
              • 消息管理
                &#xe63b;
                .Hui-iconfont-email
              • 已关注店铺
                &#xe6a9;
                .Hui-iconfont-yiguanzhu1
              • 转发
                &#xe6ab;
                .Hui-iconfont-zhuanfa
              • 待评价
                &#xe6b3;
                .Hui-iconfont-daipingjia
              • 积分
                &#xe6b5;
                .Hui-iconfont-jifen
              • 消息
                &#xe6c5;
                .Hui-iconfont-xiaoxi1
              • 已读
                &#xe70b;
                .Hui-iconfont-read
              • 用户反馈
                &#xe70c;
                .Hui-iconfont-feedback1
              • 订阅
                &#xe6ce;
                .Hui-iconfont-dingyue
              • 提示
                &#xe6cd;
                .Hui-iconfont-tishi
              • star-o
                &#xe702;
                .Hui-iconfont-star-o
              • star
                &#xe6ff;
                .Hui-iconfont-star
              • star-half
                &#xe700;
                .Hui-iconfont-star-half
              • star-half-empty
                &#xe701;
                .Hui-iconfont-star-halfempty
              • 我的评价
                &#xe70a;
                .Hui-iconfont-comment1

              统计相关

              • 数据统计
                &#xe621;
                .Hui-iconfont-tongji-bing
              • 统计管理
                &#xe635;
                .Hui-iconfont-ad
              • 数据统计
                &#xe61e;
                .Hui-iconfont-shujutongji
              • 统计
                &#xe61a;
                .Hui-iconfont-tongji
              • 柱状统计
                &#xe618;
                .Hui-iconfont-tongji-zhu
              • 线状统计
                &#xe61c;
                .Hui-iconfont-tongji-xian
              • 排行榜
                &#xe6cf;
                .Hui-iconfont-paixingbang

              箭头相关

              • 向左
                &#xe678;
                .Hui-iconfont-arrow1-bottom
              • 向下
                &#xe674;
                .Hui-iconfont-arrow1-bottom
              • 向上
                &#xe679;
                .Hui-iconfont-arrow1-top
              • 向右
                &#xe67a;
                .Hui-iconfont-arrow1-right
              • 向左
                &#xe6d4;
                .Hui-iconfont-arrow2-left
              • 向上
                &#xe6d6;
                .Hui-iconfont-arrow2-top
              • 向右
                &#xe6d7;
                .Hui-iconfont-arrow2-right
              • 向下
                &#xe6d5;
                .Hui-iconfont-arrow2-bottom
              • 向左
                &#xe69b;
                .Hui-iconfont-arrow3-left
              • 向上
                &#xe699;
                .Hui-iconfont-arrow3-top
              • 向右
                &#xe69a;
                .Hui-iconfont-arrow3-right
              • 向下
                &#xe698;
                .Hui-iconfont-arrow3-bottom
              • 向右
                &#xe67e;
                .Hui-iconfont-sanjiao

              电商相关

              • 物流
                &#xe669;
                .Hui-iconfont-wuliu
              • 店铺
                &#xe66a;
                .Hui-iconfont-dianpu
              • 购物车
                &#xe670;
                .Hui-iconfont-cart2-selected
              • 购物车满
                &#xe672;
                .Hui-iconfont-cart2-man
              • 购物车空
                &#xe673;
                .Hui-iconfont-card2-kong
              • 购物车-选中
                &#xe6b8;
                .Hui-iconfont-cart-selected
              • 购物车
                &#xe6b9;
                .Hui-iconfont-cart-kong
              • 降价
                &#xe6ba;
                .Hui-iconfont-jiangjia
              • 信用卡还款
                &#xe628;
                .Hui-iconfont-bank
              • 礼物
                &#xe6bb;
                .Hui-iconfont-liwu
              • 优惠券
                &#xe6b6;
                .Hui-iconfont-youhuiquan
              • 红包
                &#xe6b7;
                .Hui-iconfont-hongbao
              • 优惠券
                &#xe6ca;
                .Hui-iconfont-hongbao2
              • 资金
                &#xe63a;
                .Hui-iconfont-money
              • 商品
                &#xe620;
                .Hui-iconfont-goods

              编辑器

              • code
                &#xe6ee;
                .Hui-iconfont-code
              • 左对齐
                &#xe710;
                .Hui-iconfont-align-left
              • 居中对齐
                &#xe70e;
                .Hui-iconfont-align-center
              • 右对齐
                &#xe711;
                .Hui-iconfont-align-right
              • 两头对齐
                &#xe70f;
                .Hui-iconfont-align-justify
              • 字体
                &#xe6ec;
                .Hui-iconfont-font
              • 加粗
                &#xe6e7;
                .Hui-iconfont-bold
              • 倾斜
                &#xe6e9;
                .Hui-iconfont-italic
              • 下划线
                &#xe6fe;
                .Hui-iconfont-underline
              • text-height
                &#xe6fc;
                .Hui-iconfont-text-height
              • text-width
                &#xe6fd;
                .Hui-iconfont-text-width
              • link
                &#xe6f1;
                .Hui-iconfont-link
              • 有序列表
                &#xe6f3;
                .Hui-iconfont-ordered-list
              • 无序列表
                &#xe6f5;
                .Hui-iconfont-unordered-list
              • 剪切
                &#xe6ef;
                .Hui-iconfont-cut
              • 复制
                &#xe6ea;
                .Hui-iconfont-copy
              • 粘贴
                &#xe6eb;
                .Hui-iconfont-paste
              • 新建
                &#xe6f2;
                .Hui-iconfont-new

              银行、支付相关

              • 支付宝支付1
                &#xe71f;
                .Hui-iconfont-pay-alipay-1
              • 支付宝支付2
                &#xe71c;
                .Hui-iconfont-pay-alipay-2
              • 微信支付
                &#xe719;
                .Hui-iconfont-pay-weixin
              • 中国银行
                &#xe722;
                .Hui-iconfont-zhongguoyinxing
              • 工商银行
                &#xe71d;
                .Hui-iconfont-gongshangyinxing
              • 建设银行
                &#xe6f8;
                .Hui-iconfont-jiansheyinxing
              • 交通银行
                &#xe71a;
                .Hui-iconfont-jiaotongyinxing
              • 中国农业银行
                &#xe713;
                .Hui-iconfont-zhongguonongyeyinxing
              • 邮政银行
                &#xe721;
                .Hui-iconfont-youzhengyinxing
              • 浦发银行
                &#xe71b;
                .Hui-iconfont-pufayinxing
              • 华夏银行
                &#xe71e;
                .Hui-iconfont-huaxiayinxing
              • 招商银行
                &#xe704;
                .Hui-iconfont-zhaoshangyinxing
              • 中信银行
                &#xe723;
                .Hui-iconfont-zhongxinyinxing
              • 上海银行
                &#xe724;
                .Hui-iconfont-shanghaiyinxing
              • 温州银行
                &#xe6ed;
                .Hui-iconfont-wenzhouyinxing
              • 光大银行
                &#xe6f0;
                .Hui-iconfont-guangdayinxing
              • 民生银行
                &#xe6f4;
                .Hui-iconfont-minshengyinxing
              • 青岛银行
                &#xe6f6;
                .Hui-iconfont-qingdaoyinxing
              • 北京银行
                &#xe6fb;
                .Hui-iconfont-beijingyinxing
              • 广东发展银行
                &#xe703;
                .Hui-iconfont-guangdongfazhanyinxing
              • 浙商银行
                &#xe712;
                .Hui-iconfont-zheshangyinxing
              • 成都银行
                &#xe714;
                .Hui-iconfont-cdbank
              • 杭州银行
                &#xe718;
                .Hui-iconfont-hangzhouyinxing

              其他

              • 电话
                &#xe6c7;
                .Hui-iconfont-tel
              • 电话
                &#xe6a3;
                .Hui-iconfont-tel2
              • iphone手机
                &#xe696;
                .Hui-iconfont-phone
              • 安卓手机
                &#xe708;
                .Hui-iconfont-phone-android
              • 平板电脑
                &#xe64c;
                .Hui-iconfont-pad
              • PC
                &#xe64f;
                .Hui-iconfont-xianshiqi
              • 照相机
                &#xe650;
                .Hui-iconfont-zhaoxiangji
              • 单反相机
                &#xe651;
                .Hui-iconfont-danfanxiangji
              • 打印机
                &#xe652;
                .Hui-iconfont-dayinji
              • 轮胎
                &#xe64d;
                .Hui-iconfont-lunzi
              • 插件
                &#xe654;
                .Hui-iconfont-chajian
              • 节日
                &#xe655;
                .Hui-iconfont-jieri
              • 排序
                &#xe675;
                .Hui-iconfont-paixu
              • 匿名
                &#xe624;
                .Hui-iconfont-niming
              • 换肤
                &#xe62a;
                .Hui-iconfont-pifu
              • 二维码
                &#xe6cb;
                .Hui-iconfont-2code
              • 扫一扫
                &#xe682;
                .Hui-iconfont-saoyisao
              • 搜索
                &#xe683;
                .Hui-iconfont-search
              • 中图模式
                &#xe68c;
                .Hui-iconfont-zhongtumoshi
              • 大图模式
                &#xe68d;
                .Hui-iconfont-datumoshi
              • 大图模式
                &#xe6be;
                .Hui-iconfont-bigpic
              • 中图模式
                &#xe6c0;
                .Hui-iconfont-middle
              • 列表模式
                &#xe6bf;
                .Hui-iconfont-list
              • 时间
                &#xe690;
                .Hui-iconfont-shijian
              • 更多
                &#xe69c;
                .Hui-iconfont-more2
              • SIM卡
                &#xe629;
                .Hui-iconfont-sim
              • 火热
                &#xe6c1;
                .Hui-iconfont-hot
              • 拍摄
                &#xe6c2;
                .Hui-iconfont-paishe
              • 热销
                &#xe6c3;
                .Hui-iconfont-hot1
              • 上新
                &#xe6c4;
                .Hui-iconfont-new
              • 产品参数
                &#xe6c6;
                .Hui-iconfont-canshu
              • 定位
                &#xe6c9;
                .Hui-iconfont-dingwei
              • 定位
                &#xe671;
                .Hui-iconfont-weizhi
              • HTML
                &#xe69f;
                .Hui-iconfont-html
              • CSS
                &#xe6a0;
                .Hui-iconfont-css
              • 苹果
                &#xe64a;
                .Hui-iconfont-apple
              • android
                &#xe6a2;
                .Hui-iconfont-android
              • github
                &#xe6d1;
                .Hui-iconfont-github
              • html5
                &#xe6d2;
                .Hui-iconfont-html5
              • 皇冠
                &#xe6d3;
                .Hui-iconfont-huangguan

              挑选相应图标并获取字体编码,应用于页面

              <i class="Hui-iconfont">&#xe684;</i>
              ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/Hui-iconfont/1.0.8/iconfont.css ================================================ /* -----------H-ui前端框架------------- * iconfont.css v1.0.8 * http://www.h-ui.net/ * Created & Modified by guojunhui * Date modified 2016.06.21 * * Copyright 2013-2015 北京颖杰联创科技有限公司 All rights reserved. * Licensed under MIT license. * http://opensource.org/licenses/MIT * */ @font-face {font-family: "Hui-iconfont"; src: url('iconfont.eot'); /* IE9*/ src: url('iconfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('iconfont.woff') format('woff'), /* chrome、firefox */ url('iconfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ url('iconfont.svg#Hui-iconfont') format('svg'); /* iOS 4.1- */ } .Hui-iconfont { font-family:"Hui-iconfont" !important; font-style:normal; -webkit-font-smoothing: antialiased; -webkit-text-stroke-width: 0.2px; -moz-osx-font-smoothing: grayscale; } .Hui-iconfont-gotop:before { content: "\e684"; } .Hui-iconfont-music:before { content: "\e60f"; } .Hui-iconfont-tags:before { content: "\e64b"; } .Hui-iconfont-jieri:before { content: "\e727"; } .Hui-iconfont-jishiqi:before { content: "\e728"; } .Hui-iconfont-pad:before { content: "\e64c"; } .Hui-iconfont-lunzi:before { content: "\e64d"; } .Hui-iconfont-jiandao:before { content: "\e64e"; } .Hui-iconfont-xianshiqi:before { content: "\e64f"; } .Hui-iconfont-zhaoxiangji:before { content: "\e650"; } .Hui-iconfont-danfanxiangji:before { content: "\e651"; } .Hui-iconfont-dayinji:before { content: "\e652"; } .Hui-iconfont-user-zhanzhang:before { content: "\e653"; } .Hui-iconfont-chajian:before { content: "\e654"; } .Hui-iconfont-arrow1-bottom:before { content: "\e674"; } .Hui-iconfont-arrow1-left:before { content: "\e678"; } .Hui-iconfont-arrow1-top:before { content: "\e679"; } .Hui-iconfont-arrow1-right:before { content: "\e67a"; } .Hui-iconfont-jieri1:before { content: "\e655"; } .Hui-iconfont-face-weixiao:before { content: "\e656"; } .Hui-iconfont-face-chijing:before { content: "\e657"; } .Hui-iconfont-face-dai:before { content: "\e658"; } .Hui-iconfont-face-shuaku:before { content: "\e659"; } .Hui-iconfont-face-mogui:before { content: "\e65a"; } .Hui-iconfont-face-ganga:before { content: "\e65b"; } .Hui-iconfont-face-qin:before { content: "\e65c"; } .Hui-iconfont-face-nu:before { content: "\e65d"; } .Hui-iconfont-face-zhayan:before { content: "\e65e"; } .Hui-iconfont-face-shengqi:before { content: "\e65f"; } .Hui-iconfont-face-ma:before { content: "\e660"; } .Hui-iconfont-face-bishi:before { content: "\e661"; } .Hui-iconfont-face-maimeng:before { content: "\e662"; } .Hui-iconfont-face-jingdai:before { content: "\e663"; } .Hui-iconfont-face-yun:before { content: "\e664"; } .Hui-iconfont-home2:before { content: "\e67f"; } .Hui-iconfont-search2:before { content: "\e665"; } .Hui-iconfont-share2:before { content: "\e666"; } .Hui-iconfont-face:before { content: "\e668"; } .Hui-iconfont-wuliu:before { content: "\e669"; } .Hui-iconfont-dianpu:before { content: "\e66a"; } .Hui-iconfont-chexiao:before { content: "\e66b"; } .Hui-iconfont-zhongzuo:before { content: "\e66c"; } .Hui-iconfont-zan:before { content: "\e66d"; } .Hui-iconfont-cai:before { content: "\e66e"; } .Hui-iconfont-yuyin3:before { content: "\e66f"; } .Hui-iconfont-cart2-selected:before { content: "\e670"; } .Hui-iconfont-weizhi:before { content: "\e671"; } .Hui-iconfont-face-ku:before { content: "\e688"; } .Hui-iconfont-down:before { content: "\e640"; } .Hui-iconfont-cart2-man:before { content: "\e672"; } .Hui-iconfont-card2-kong:before { content: "\e673"; } .Hui-iconfont-luyin:before { content: "\e619"; } .Hui-iconfont-html:before { content: "\e69f"; } .Hui-iconfont-css:before { content: "\e6a0"; } .Hui-iconfont-android:before { content: "\e6a2"; } .Hui-iconfont-github:before { content: "\e6d1"; } .Hui-iconfont-html5:before { content: "\e6d2"; } .Hui-iconfont-huangguan:before { content: "\e6d3"; } .Hui-iconfont-news:before { content: "\e616"; } .Hui-iconfont-slider-right:before { content: "\e63d"; } .Hui-iconfont-slider-left:before { content: "\e67d"; } .Hui-iconfont-tuku:before { content: "\e613"; } .Hui-iconfont-shuru:before { content: "\e647"; } .Hui-iconfont-sanjiao:before { content: "\e67e"; } .Hui-iconfont-share-renren:before { content: "\e6d8"; } .Hui-iconfont-share-tweibo:before { content: "\e6d9"; } .Hui-iconfont-arrow2-left:before { content: "\e6d4"; } .Hui-iconfont-paixu:before { content: "\e675"; } .Hui-iconfont-niming:before { content: "\e624"; } .Hui-iconfont-add:before { content: "\e600"; } .Hui-iconfont-root:before { content: "\e62d"; } .Hui-iconfont-xuanzhong:before { content: "\e676"; } .Hui-iconfont-weixuanzhong:before { content: "\e677"; } .Hui-iconfont-arrow2-bottom:before { content: "\e6d5"; } .Hui-iconfont-arrow2-top:before { content: "\e6d6"; } .Hui-iconfont-like2:before { content: "\e648"; } .Hui-iconfont-arrow2-right:before { content: "\e6d7"; } .Hui-iconfont-shangyishou:before { content: "\e6db"; } .Hui-iconfont-xiayishou:before { content: "\e6e3"; } .Hui-iconfont-share-weixin:before { content: "\e694"; } .Hui-iconfont-shenhe-tingyong:before { content: "\e631"; } .Hui-iconfont-gouxuan2:before { content: "\e601"; } .Hui-iconfont-selected:before { content: "\e617"; } .Hui-iconfont-jianhao:before { content: "\e6a1"; } .Hui-iconfont-user-group:before { content: "\e62b"; } .Hui-iconfont-yiguanzhu:before { content: "\e680"; } .Hui-iconfont-gengduo3:before { content: "\e6f9"; } .Hui-iconfont-comment:before { content: "\e622"; } .Hui-iconfont-tongji-zhu:before { content: "\e618"; } .Hui-iconfont-like:before { content: "\e649"; } .Hui-iconfont-shangjia:before { content: "\e6dc"; } .Hui-iconfont-save:before { content: "\e632"; } .Hui-iconfont-gongsi:before { content: "\e643"; } .Hui-iconfont-system:before { content: "\e62e"; } .Hui-iconfont-pifu:before { content: "\e62a"; } .Hui-iconfont-menu:before { content: "\e667"; } .Hui-iconfont-msg:before { content: "\e62f"; } .Hui-iconfont-huangguan1:before { content: "\e729"; } .Hui-iconfont-userid:before { content: "\e602"; } .Hui-iconfont-cang-selected:before { content: "\e630"; } .Hui-iconfont-yundown:before { content: "\e641"; } .Hui-iconfont-help:before { content: "\e633"; } .Hui-iconfont-chuku:before { content: "\e634"; } .Hui-iconfont-picture:before { content: "\e646"; } .Hui-iconfont-wenzhouyinxing:before { content: "\e6ed"; } .Hui-iconfont-ad:before { content: "\e635"; } .Hui-iconfont-fenlei:before { content: "\e681"; } .Hui-iconfont-saoyisao:before { content: "\e682"; } .Hui-iconfont-search:before { content: "\e683"; } .Hui-iconfont-tuwenxiangqing:before { content: "\e685"; } .Hui-iconfont-leijipingjia:before { content: "\e686"; } .Hui-iconfont-hetong:before { content: "\e636"; } .Hui-iconfont-tongji:before { content: "\e61a"; } .Hui-iconfont-quanbudingdan:before { content: "\e687"; } .Hui-iconfont-cang:before { content: "\e61b"; } .Hui-iconfont-xiaoxi:before { content: "\e68a"; } .Hui-iconfont-renwu:before { content: "\e637"; } .Hui-iconfont-more:before { content: "\e68b"; } .Hui-iconfont-zhizhao:before { content: "\e638"; } .Hui-iconfont-fabu:before { content: "\e603"; } .Hui-iconfont-shenhe-butongguo2:before { content: "\e6dd"; } .Hui-iconfont-share-qq:before { content: "\e67b"; } .Hui-iconfont-upload:before { content: "\e642"; } .Hui-iconfont-add2:before { content: "\e604"; } .Hui-iconfont-jiesuo:before { content: "\e605"; } .Hui-iconfont-zhongtumoshi:before { content: "\e68c"; } .Hui-iconfont-datumoshi:before { content: "\e68d"; } .Hui-iconfont-face2:before { content: "\e68e"; } .Hui-iconfont-huanyipi:before { content: "\e68f"; } .Hui-iconfont-shijian:before { content: "\e690"; } .Hui-iconfont-feedback:before { content: "\e691"; } .Hui-iconfont-feedback2:before { content: "\e692"; } .Hui-iconfont-share-pengyouquan:before { content: "\e693"; } .Hui-iconfont-zan2:before { content: "\e697"; } .Hui-iconfont-arrow3-bottom:before { content: "\e698"; } .Hui-iconfont-arrow3-top:before { content: "\e699"; } .Hui-iconfont-arrow3-right:before { content: "\e69a"; } .Hui-iconfont-arrow3-left:before { content: "\e69b"; } .Hui-iconfont-more2:before { content: "\e69c"; } .Hui-iconfont-cang2-selected:before { content: "\e69d"; } .Hui-iconfont-cang2:before { content: "\e69e"; } .Hui-iconfont-dangan:before { content: "\e639"; } .Hui-iconfont-money:before { content: "\e63a"; } .Hui-iconfont-share-weibo:before { content: "\e6da"; } .Hui-iconfont-email:before { content: "\e63b"; } .Hui-iconfont-tongji-xian:before { content: "\e61c"; } .Hui-iconfont-bank:before { content: "\e628"; } .Hui-iconfont-home:before { content: "\e625"; } .Hui-iconfont-user:before { content: "\e62c"; } .Hui-iconfont-log:before { content: "\e623"; } .Hui-iconfont-pages:before { content: "\e626"; } .Hui-iconfont-sim:before { content: "\e629"; } .Hui-iconfont-tingzhi:before { content: "\e6e4"; } .Hui-iconfont-dengdai:before { content: "\e606"; } .Hui-iconfont-user-add:before { content: "\e607"; } .Hui-iconfont-copy:before { content: "\e6ea"; } .Hui-iconfont-file:before { content: "\e63e"; } .Hui-iconfont-share-douban:before { content: "\e67c"; } .Hui-iconfont-share-zhihu:before { content: "\e689"; } .Hui-iconfont-daochu:before { content: "\e644"; } .Hui-iconfont-daoru:before { content: "\e645"; } .Hui-iconfont-weigouxuan2:before { content: "\e608"; } .Hui-iconfont-phone:before { content: "\e696"; } .Hui-iconfont-bold:before { content: "\e6e7"; } .Hui-iconfont-manage2:before { content: "\e63c"; } .Hui-iconfont-edit:before { content: "\e6df"; } .Hui-iconfont-del2:before { content: "\e609"; } .Hui-iconfont-duigou:before { content: "\e6e8"; } .Hui-iconfont-chongqi:before { content: "\e6f7"; } .Hui-iconfont-avatar:before { content: "\e60a"; } .Hui-iconfont-del:before { content: "\e60b"; } .Hui-iconfont-edit2:before { content: "\e60c"; } .Hui-iconfont-zanting:before { content: "\e6e5"; } .Hui-iconfont-apple:before { content: "\e64a"; } .Hui-iconfont-guangdayinxing:before { content: "\e6f0"; } .Hui-iconfont-minshengyinxing:before { content: "\e6f4"; } .Hui-iconfont-xiajia:before { content: "\e6de"; } .Hui-iconfont-manage:before { content: "\e61d"; } .Hui-iconfont-user2:before { content: "\e60d"; } .Hui-iconfont-code:before { content: "\e6ee"; } .Hui-iconfont-cut:before { content: "\e6ef"; } .Hui-iconfont-link:before { content: "\e6f1"; } .Hui-iconfont-new:before { content: "\e6f2"; } .Hui-iconfont-ordered-list:before { content: "\e6f3"; } .Hui-iconfont-unordered-list:before { content: "\e6f5"; } .Hui-iconfont-share-qzone:before { content: "\e6c8"; } .Hui-iconfont-suoding:before { content: "\e60e"; } .Hui-iconfont-tel2:before { content: "\e6a3"; } .Hui-iconfont-order:before { content: "\e627"; } .Hui-iconfont-shujutongji:before { content: "\e61e"; } .Hui-iconfont-del3:before { content: "\e6e2"; } .Hui-iconfont-add3:before { content: "\e610"; } .Hui-iconfont-add4:before { content: "\e61f"; } .Hui-iconfont-xiangpicha:before { content: "\e72a"; } .Hui-iconfont-key:before { content: "\e63f"; } .Hui-iconfont-yuyin2:before { content: "\e6a4"; } .Hui-iconfont-yuyin:before { content: "\e6a5"; } .Hui-iconfont-close:before { content: "\e6a6"; } .Hui-iconfont-xuanze:before { content: "\e6a7"; } .Hui-iconfont-xuanzhong1:before { content: "\e6a8"; } .Hui-iconfont-yiguanzhu1:before { content: "\e6a9"; } .Hui-iconfont-share:before { content: "\e6aa"; } .Hui-iconfont-zhuanfa:before { content: "\e6ab"; } .Hui-iconfont-tianqi-duoyun:before { content: "\e6ac"; } .Hui-iconfont-tianqi-mai:before { content: "\e6ad"; } .Hui-iconfont-tianqi-qing:before { content: "\e6ae"; } .Hui-iconfont-tianqi-wu:before { content: "\e6af"; } .Hui-iconfont-tianqi-xue:before { content: "\e6b0"; } .Hui-iconfont-tianqi-yin:before { content: "\e6b1"; } .Hui-iconfont-tianqi-yu:before { content: "\e6b2"; } .Hui-iconfont-daipingjia:before { content: "\e6b3"; } .Hui-iconfont-vip-card2:before { content: "\e6b4"; } .Hui-iconfont-jifen:before { content: "\e6b5"; } .Hui-iconfont-youhuiquan:before { content: "\e6b6"; } .Hui-iconfont-hongbao:before { content: "\e6b7"; } .Hui-iconfont-cart-selected:before { content: "\e6b8"; } .Hui-iconfont-cart-kong:before { content: "\e6b9"; } .Hui-iconfont-jiangjia:before { content: "\e6ba"; } .Hui-iconfont-liwu:before { content: "\e6bb"; } .Hui-iconfont-caiqie:before { content: "\e6bc"; } .Hui-iconfont-xuanzhuan:before { content: "\e6bd"; } .Hui-iconfont-bigpic:before { content: "\e6be"; } .Hui-iconfont-list:before { content: "\e6bf"; } .Hui-iconfont-middle:before { content: "\e6c0"; } .Hui-iconfont-hot:before { content: "\e6c1"; } .Hui-iconfont-paishe:before { content: "\e6c2"; } .Hui-iconfont-hot1:before { content: "\e6c3"; } .Hui-iconfont-new1:before { content: "\e6c4"; } .Hui-iconfont-xiaoxi1:before { content: "\e6c5"; } .Hui-iconfont-canshu:before { content: "\e6c6"; } .Hui-iconfont-tel:before { content: "\e6c7"; } .Hui-iconfont-dingwei:before { content: "\e6c9"; } .Hui-iconfont-hongbao2:before { content: "\e6ca"; } .Hui-iconfont-2code:before { content: "\e6cb"; } .Hui-iconfont-vip:before { content: "\e6cc"; } .Hui-iconfont-tishi:before { content: "\e6cd"; } .Hui-iconfont-dingyue:before { content: "\e6ce"; } .Hui-iconfont-italic:before { content: "\e6e9"; } .Hui-iconfont-yulan:before { content: "\e695"; } .Hui-iconfont-usergroup2:before { content: "\e611"; } .Hui-iconfont-goods:before { content: "\e620"; } .Hui-iconfont-paixingbang:before { content: "\e6cf"; } .Hui-iconfont-qingdaoyinxing:before { content: "\e6f6"; } .Hui-iconfont-kefu:before { content: "\e6d0"; } .Hui-iconfont-picture1:before { content: "\e612"; } .Hui-iconfont-weigouxuan:before { content: "\e614"; } .Hui-iconfont-fanqiang:before { content: "\e6fa"; } .Hui-iconfont-shenhe-weitongguo:before { content: "\e6e0"; } .Hui-iconfont-shenhe-tongguo:before { content: "\e6e1"; } .Hui-iconfont-tongji-bing:before { content: "\e621"; } .Hui-iconfont-gouxuan:before { content: "\e615"; } .Hui-iconfont-jiansheyinxing:before { content: "\e6f8"; } .Hui-iconfont-moban:before { content: "\e72b"; } .Hui-iconfont-pay-weixin:before { content: "\e719"; } .Hui-iconfont-pay-alipay-2:before { content: "\e71c"; } .Hui-iconfont-beijingyinxing:before { content: "\e6fb"; } .Hui-iconfont-guangdongfazhanyinxing:before { content: "\e703"; } .Hui-iconfont-zhaoshangyinxing:before { content: "\e704"; } .Hui-iconfont-zheshangyinxing:before { content: "\e712"; } .Hui-iconfont-zhongguonongyeyinxing:before { content: "\e713"; } .Hui-iconfont-cdbank:before { content: "\e714"; } .Hui-iconfont-gengduo2:before { content: "\e716"; } .Hui-iconfont-bofang:before { content: "\e6e6"; } .Hui-iconfont-gengduo4:before { content: "\e717"; } .Hui-iconfont-text-height:before { content: "\e6fc"; } .Hui-iconfont-text-width:before { content: "\e6fd"; } .Hui-iconfont-underline:before { content: "\e6fe"; } .Hui-iconfont-star:before { content: "\e6ff"; } .Hui-iconfont-star-half:before { content: "\e700"; } .Hui-iconfont-star-halfempty:before { content: "\e701"; } .Hui-iconfont-star-o:before { content: "\e702"; } .Hui-iconfont-font:before { content: "\e6ec"; } .Hui-iconfont-hangzhouyinxing:before { content: "\e718"; } .Hui-iconfont-jiaotongyinxing:before { content: "\e71a"; } .Hui-iconfont-gengduo:before { content: "\e715"; } .Hui-iconfont-avatar2:before { content: "\e705"; } .Hui-iconfont-close2:before { content: "\e706"; } .Hui-iconfont-about:before { content: "\e707"; } .Hui-iconfont-phone-android:before { content: "\e708"; } .Hui-iconfont-search1:before { content: "\e709"; } .Hui-iconfont-comment1:before { content: "\e70a"; } .Hui-iconfont-read:before { content: "\e70b"; } .Hui-iconfont-feedback1:before { content: "\e70c"; } .Hui-iconfont-practice:before { content: "\e70d"; } .Hui-iconfont-align-center:before { content: "\e70e"; } .Hui-iconfont-align-justify:before { content: "\e70f"; } .Hui-iconfont-align-left:before { content: "\e710"; } .Hui-iconfont-align-right:before { content: "\e711"; } .Hui-iconfont-paste:before { content: "\e6eb"; } .Hui-iconfont-pay-alipay-1:before { content: "\e71f"; } .Hui-iconfont-pufayinxing:before { content: "\e71b"; } .Hui-iconfont-gongshangyinxing:before { content: "\e71d"; } .Hui-iconfont-huaxiayinxing:before { content: "\e71e"; } .Hui-iconfont-youzhengyinxing:before { content: "\e721"; } .Hui-iconfont-zhongguoyinxing:before { content: "\e722"; } .Hui-iconfont-zhongxinyinxing:before { content: "\e723"; } .Hui-iconfont-shanghaiyinxing:before { content: "\e724"; } .Hui-iconfont-banzhu:before { content: "\e72c"; } .Hui-iconfont-yuedu:before { content: "\e720"; } .Hui-iconfont-yanjing:before { content: "\e725"; } .Hui-iconfont-power:before { content: "\e726"; } .Hui-iconfont-moban-2:before { content: "\e72d"; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/WdatePicker.js ================================================ /* * My97 DatePicker 4.8 Beta4 * License: http://www.my97.net/dp/license.asp */ var $dp,WdatePicker;(function(){var $={ $langList:[ {name:"en",charset:"UTF-8"}, {name:"zh-cn",charset:"gb2312"}, {name:"zh-tw",charset:"GBK"}], $skinList:[ {name:"default",charset:"gb2312"}, {name:"whyGreen",charset:"gb2312"}, {name:"blue",charset:"gb2312"}, {name:"green",charset:"gb2312"}, {name:"simple",charset:"gb2312"}, {name:"ext",charset:"gb2312"}, {name:"blueFresh",charset:"gb2312"}, {name:"twoer",charset:"gb2312"}, {name:"YcloudRed",charset:"gb2312"}], $wdate:true, $crossFrame:true, $preLoad:false, $dpPath:"", doubleCalendar:false, enableKeyboard:true, enableInputMask:true, autoUpdateOnChanged:null, weekMethod:"ISO8601", position:{}, lang:"auto", skin:"default", dateFmt:"yyyy-MM-dd", realDateFmt:"yyyy-MM-dd", realTimeFmt:"HH:mm:ss", realFullFmt:"%Date %Time", minDate:"1900-01-01 00:00:00", maxDate:"2099-12-31 23:59:59", startDate:"", alwaysUseStartDate:false, yearOffset:1911, firstDayOfWeek:0, isShowWeek:false, highLineWeekDay:true, isShowClear:true, isShowToday:true, isShowOK:true, isShowOthers:true, readOnly:false, errDealMode:0, autoPickDate:null, qsEnabled:true, autoShowQS:false, opposite:false, hmsMenuCfg:{H:[1,6],m:[5,6],s:[15,4]}, opposite:false, specialDates:null,specialDays:null,disabledDates:null,disabledDays:null,onpicking:null,onpicked:null,onclearing:null,oncleared:null,ychanging:null,ychanged:null,Mchanging:null,Mchanged:null,dchanging:null,dchanged:null,Hchanging:null,Hchanged:null,mchanging:null,mchanged:null,schanging:null,schanged:null,eCont:null,vel:null,elProp:"",errMsg:"",quickSel:[],has:{},getRealLang:function(){var _=$.$langList;for(var A=0;A<_.length;A++)if(_[A].name==this.lang)return _[A];return _[0]}};WdatePicker=U;var Y=window,T={innerHTML:""},N="document",H="documentElement",C="getElementsByTagName",V,A,S,G,c,X=navigator.appName;if(X=="Microsoft Internet Explorer")S=true;else if(X=="Opera")c=true;else G=true;A=$.$dpPath||J();if($.$wdate)K(A+"skin/WdatePicker.css");V=Y;if($.$crossFrame){try{while(V.parent!=V&&V.parent[N][C]("frameset").length==0)V=V.parent}catch(O){}}if(!V.$dp)V.$dp={ff:G,ie:S,opera:c,status:0,defMinDate:$.minDate,defMaxDate:$.maxDate};B();if($.$preLoad&&$dp.status==0)E(Y,"onload",function(){U(null,true)});if(!Y[N].docMD){E(Y[N],"onmousedown",D,true);Y[N].docMD=true}if(!V[N].docMD){E(V[N],"onmousedown",D,true);V[N].docMD=true}E(Y,"onunload",function(){if($dp.dd)P($dp.dd,"none")});function B(){try{V[N],V.$dp=V.$dp||{}}catch($){V=Y;$dp=$dp||{}}var A={win:Y,$:function($){return(typeof $=="string")?Y[N].getElementById($):$},$D:function($,_){return this.$DV(this.$($).value,_)},$DV:function(_,$){if(_!=""){this.dt=$dp.cal.splitDate(_,$dp.cal.dateFmt);if($)for(var B in $)if(this.dt[B]===undefined)this.errMsg="invalid property:"+B;else{this.dt[B]+=$[B];if(B=="M"){var C=$["M"]>0?1:0,A=new Date(this.dt["y"],this.dt["M"],0).getDate();this.dt["d"]=Math.min(A+C,this.dt["d"])}}if(this.dt.refresh())return this.dt}return""},show:function(){var A=V[N].getElementsByTagName("div"),$=100000;for(var B=0;B$)$=_}this.dd.style.zIndex=$+2;P(this.dd,"block");P(this.dd.firstChild,"")},unbind:function($){$=this.$($);if($.initcfg){L($,"onclick",function(){U($.initcfg)});L($,"onfocus",function(){U($.initcfg)})}},hide:function(){P(this.dd,"none")},attachEvent:E};for(var _ in A)V.$dp[_]=A[_];$dp=V.$dp}function E(B,_,A,$){if(B.addEventListener){var C=_.replace(/on/,"");A._ieEmuEventHandler=function($){return A($)};B.addEventListener(C,A._ieEmuEventHandler,$)}else B.attachEvent(_,A)}function L(A,$,_){if(A.removeEventListener){var B=$.replace(/on/,"");_._ieEmuEventHandler=function($){return _($)};A.removeEventListener(B,_._ieEmuEventHandler,false)}else A.detachEvent($,_)}function a(_,$,A){if(typeof _!=typeof $)return false;if(typeof _=="object"){if(!A)for(var B in _){if(typeof $[B]=="undefined")return false;if(!a(_[B],$[B],true))return false}return true}else if(typeof _=="function"&&typeof $=="function")return _.toString()==$.toString();else return _==$}function J(){var _,A,$=Y[N][C]("script");for(var B=0;B<$.length;B++){_=$[B].getAttribute("src")||"";_=_.substr(0,_.toLowerCase().indexOf("wdatepicker.js"));A=_.lastIndexOf("/");if(A>0)_=_.substring(0,A+1);if(_)break}return _}function K(A,$,B){var D=Y[N][C]("HEAD").item(0),_=Y[N].createElement("link");if(D){_.href=A;_.rel="stylesheet";_.type="text/css";if($)_.title=$;if(B)_.charset=B;D.appendChild(_)}}function F($){$=$||V;var A=0,_=0;while($!=V){var D=$.parent[N][C]("iframe");for(var F=0;F_.scrollTop||A.scrollLeft>_.scrollLeft))?A:_;return{"top":B.scrollTop,"left":B.scrollLeft}}function D($){try{var _=$?($.srcElement||$.target):null;if($dp.cal&&!$dp.eCont&&$dp.dd&&_!=$dp.el&&$dp.dd.style.display=="block")$dp.cal.close()}catch($){}}function Z(){$dp.status=2}var Q,_;function U(K,C){if(!$dp)return;B();var L={};for(var H in K)L[H]=K[H];for(H in $)if(H.substring(0,1)!="$"&&L[H]===undefined)L[H]=$[H];if(C){if(!J()){_=_||setInterval(function(){if(V[N].readyState=="complete")clearInterval(_);U(null,true)},50);return}if($dp.status==0){$dp.status=1;L.el=T;I(L,true)}else return}else if(L.eCont){L.eCont=$dp.$(L.eCont);L.el=T;L.autoPickDate=true;L.qsEnabled=false;I(L)}else{if($.$preLoad&&$dp.status!=2)return;var F=D();if(Y.event===F||F){L.srcEl=F.srcElement||F.target;F.cancelBubble=true}L.el=L.el=$dp.$(L.el||L.srcEl);if(!L.el||L.el["My97Mark"]===true||L.el.disabled||($dp.dd&&P($dp.dd)!="none"&&$dp.dd.style.left!="-970px")){try{if(L.el["My97Mark"])L.el["My97Mark"]=false}catch(A){}return}if(F&&L.el.nodeType==1&&!a(L.el.initcfg,K)){$dp.unbind(L.el);E(L.el,F.type=="focus"?"onclick":"onfocus",function(){U(K)});L.el.initcfg=K}I(L)}function J(){if(S&&V!=Y&&V[N].readyState!="complete")return false;return true}function D(){if(G){func=D.caller;while(func!=null){var $=func.arguments[0];if($&&($+"").indexOf("Event")>=0)return $;func=func.caller}return null}return event}}function R(_,$){return _.currentStyle?_.currentStyle[$]:document.defaultView.getComputedStyle(_,false)[$]}function P(_,$){if(_)if($!=null)_.style.display=$;else return R(_,"display")}function I(G,_){var D=G.el?G.el.nodeName:"INPUT";if(_||G.eCont||new RegExp(/input|textarea|div|span|p|a/ig).test(D))G.elProp=D=="INPUT"?"value":"innerHTML";else return;if(G.lang=="auto")G.lang=S?navigator.browserLanguage.toLowerCase():navigator.language.toLowerCase();if(!G.eCont)for(var C in G)$dp[C]=G[C];if(!$dp.dd||G.eCont||($dp.dd&&(G.getRealLang().name!=$dp.dd.lang||G.skin!=$dp.dd.skin))){if(G.eCont)E(G.eCont,G);else{$dp.dd=V[N].createElement("DIV");$dp.dd.style.cssText="position:absolute";V[N].body.appendChild($dp.dd);E($dp.dd,G);if(_)$dp.dd.style.left=$dp.dd.style.top="-970px";else{$dp.show();B($dp)}}}else if($dp.cal){$dp.show();$dp.cal.init();if(!$dp.eCont)B($dp)}function E(K,J){var I=V[N].domain,F=false,G="";K.innerHTML=G;var _=$.$langList,D=$.$skinList,H;try{H=K.lastChild.contentWindow[N]}catch(E){F=true;K.removeChild(K.lastChild);var L=V[N].createElement("iframe");L.hideFocus=true;L.frameBorder=0;L.scrolling="no";L.src="javascript:(function(){var d=document;d.open();d.domain='"+I+"';})()";K.appendChild(L);setTimeout(function(){H=K.lastChild.contentWindow[N];C()},97);return}C();function C(){var _=J.getRealLang();K.lang=_.name;K.skin=J.skin;var $=[""];if(F)$[1]="document.domain=\""+I+"\";";for(var C=0;C");$.push("");$.push("");$.push("");J.setPos=B;J.onload=Z;H.write("");H.cfg=J;H.write($.join(""));H.close()}}function B(J){var H=J.position.left,C=J.position.top,D=J.el;if(D==T)return;if(D!=J.srcEl&&(P(D)=="none"||D.type=="hidden"))D=J.srcEl;var I=W(D),$=F(Y),E=M(V),B=b(V),G=$dp.dd.offsetHeight,A=$dp.dd.offsetWidth;if(isNaN(C))C=0;if(($.topM+I.bottom+G>E.height)&&($.topM+I.top-G>0))C+=B.top+$.topM+I.top-G-2;else{C+=B.top+$.topM+I.bottom;var _=C-B.top+G-E.height;if(_>0)C-=_}if(isNaN(H))H=0;H+=B.left+Math.min($.leftM+I.left,E.width-A-5)-(S?2:0);J.dd.style.top=C+"px";J.dd.style.left=H+"px"}}})() ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/calendar.js ================================================ /* * My97 DatePicker 4.8 Beta4 * License: http://www.my97.net/dp/license.asp */ eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('l($4o.44){$f={};1b(q p 4r $2s)l(6p $2s[p]=="6o"){$f[p]={};1b(q 4G 4r $2s[p])$f[p][4G]=$2s[p][4G]}t $f[p]=$2s[p]}t $f=$2s;1b(p 4r $4o)$f[p]=$4o[p];q $c;l($69){6x.3J.7l("6U",n($){l(!$)h.2m();u $});6x.3J.7k("5I",n(){q $=h.5B;36($.5t!=1)$=$.7b;u $})}n 5C(){$c=h;h.3n=[];$d=1L.7i("z");$d.1e="4P";$d.1M="<1z Y=47><1z Y=47><1x 2q=0 2o=0 2C=0><1j><19 8a=2><4w 1G=89>&42;<1z Y=83 4s=2><1z 1i=\\":\\" Y=6K 6t><1z Y=6u 4s=2><1z 1i=\\":\\" Y=6K 6t><1z Y=6u 4s=2><19><1S 1G=7R><1j><19><1S 1G=7E><1z Y=4v 1G=7y 3k=1S><1z Y=4v 1G=7N 3k=1S><1z Y=4v 1G=7K 3k=1S>";71($d,n(){3x()});A();h.5D();$f.1X=[1L,$d.1P,$d.1y,$d.2w,$d.3a,$d.2r,$d.2V,$d.2j,$d.1U];1b(q B=0;B<$f.1X.x;B++){q b=$f.1X[B];b.3e=B==$f.1X.x-1?$f.1X[1]:$f.1X[B+1];$f.3A(b,"4k",5a)}$();55("y,M,H,m,s");$d.72.1s=n(){5g(1)};$d.75.1s=n(){5g(-1)};$d.4y.1s=n(){l($d.1H.1d.2a!="6G"){$c.4Q();3G($d.1H)}t 1o($d.1H)};1L.6R.4O($d);n A(){q b=$("a");1q=$("z"),1J=$("1z"),4t=$("1S"),5G=$("4w");$d.3M=b[0];$d.3K=b[1];$d.3L=b[3];$d.3N=b[2];$d.4b=1q[9];$d.1P=1J[0];$d.1y=1J[1];$d.4A=1q[0];$d.4f=1q[4];$d.2R=1q[6];$d.1H=1q[10];$d.2Z=1q[11];$d.34=1q[12];$d.5N=1q[13];$d.6P=1q[14];$d.73=1q[15];$d.4y=1q[16];$d.4e=1q[17];$d.2w=1J[2];$d.3a=1J[4];$d.2r=1J[6];$d.2V=1J[7];$d.2j=1J[8];$d.1U=1J[9];$d.72=4t[0];$d.75=4t[1];$d.5L=5G[0];n $($){u $d.74($)}}n $(){$d.3M.1s=n(){$1O=$1O<=0?$1O-1:-1;l($1O%5==0){$d.1y.22();u}$d.1y.1i=$o.y-1;$d.1y.2x()};$d.3K.1s=n(){$o.1V("M",-1);$d.1P.2x()};$d.3L.1s=n(){$o.1V("M",1);$d.1P.2x()};$d.3N.1s=n(){$1O=$1O>=0?$1O+1:1;l($1O%5==0){$d.1y.22();u}$d.1y.1i=$o.y+1;$d.1y.2x()}}}5C.3J={5D:n(){$1O=0;$f.5b=h;l($f.3S&&$f.Z.3S!=1h){$f.Z.3S=1c;$f.Z.4M()}h.4q();$o=h.4D=1a 1D();$1C=1a 1D();$1v=h.2B=1a 1D();$f.2N=0;h.1B=h.2P($f.1B);h.2X=$f.2X==1h?($f.18.2g&&$f.18.2g?1p:1c):$f.2X;$f.3y=$f.3y==1h?($f.4z&&$f.18.d?1p:1c):$f.3y;h.4m=h.35("7L");h.6m=h.35("7I");h.6d=h.35("7J");h.5s=h.35("7M");h.20=h.3I($f.20,$f.20!=$f.5J?$f.1T:$f.2F,$f.5J);h.1Z=h.3I($f.1Z,$f.1Z!=$f.5M?$f.1T:$f.2F,$f.5M);l(h.20.2z(h.1Z)>0)$f.4u=$1l.7Q;l(h.25()){h.5y();h.3j=$f.Z[$f.1E]}t h.3p(1p,2);3H($o);$d.5L.1M=$1l.7O;$d.2V.1i=$1l.7H;$d.2j.1i=$1l.7A;$d.1U.1i=$1l.7B;$d.1U.2e=!$c.1A($1v);h.6l();h.6V();l($f.4u)7z($f.4u);h.4B();l($f.Z.5t==1&&$f.Z["3V"]===4p){$f.3A($f.Z,"4k",5a);$f.3A($f.Z,"2x",n(){l($f&&$f.1K.1d.2a=="2u"){$c.3c();l(!$f.2N&&$f.5b.3j!=$f.Z[$f.1E]&&$f.Z.7G)5l($f.Z,"7D")}});$f.Z["3V"]=1p}$c.1k=$f.Z;3x()},5y:n(){q b=h.2S();l(b!=0){q $;l(b>0)$=h.1Z;t $=h.20;l($f.18.3Y){$o.y=$.y;$o.M=$.M;$o.d=$.d}l($f.18.2g){$o.H=$.H;$o.m=$.m;$o.s=$.s}}},3h:n(K,C,R,F,B,H,G,L,M){q $;l(K&&K.25)$=K;t{$=1a 1D();l(K!=""){C=C||$f.1B;q I,D,Q=0,P,A=/3i|2H|3l|y|2I|3o|3R|M|1K|d|%2l|53|H|4V|m|4U|s|3u|D|4T|W|w/g,b=C.2J(A);A.2t=0;l(M)P=K.4c(/\\W+/);t{q E=0,N="^";36((P=A.2U(C))!==1h){l(E>=0){D=C.1F(E,P.3Z);l(D&&"-/\\\\".1n(D)>=0)D="[\\\\-/]";N+=D}E=A.2t;2Y(P[0]){1f"3i":N+="(\\\\d{4})";1g;1f"2H":N+="(\\\\d{3})";1g;1f"2I":1f"3o":1f"3u":1f"D":N+="(\\\\D+)";1g;5v:N+="(\\\\d\\\\d?)";1g}}N+=".*$";P=1a 3v(N).2U(K);Q=1}l(P){1b(I=0;I0){1b(B=0;B<$.x;B++){A+=h.2P($[B]);l(B!=$.x-1)A+="|"}A=A?1a 3v("(?:"+A+")"):1h}t A=1h;u A},3d:n($){l($===4p)$=h.4F();l($f.Z[$f.1E]!=$)$f.Z[$f.1E]=$;h.4l()},4l:n($){q b=$f.$($f.86),$=3r($,h.4F($f.1T));l(b)b.1i=$;$f.Z["3E"]=$},2P:n(s){q 3T="3m",1r,2v,6n=/#?\\{(.*?)\\}/;s=s+"";1b(q i=0;i<3T.x;i++)s=s.1m("%"+3T.1Q(i),h.1W(3T.1Q(i),1h,$1C));l(s.1F(0,3)=="#F{"){s=s.1F(3,s.x-1);l(s.1n("u ")<0)s="u "+s;s=$f.51.4d("1a 88(\\""+s+"\\");");s=s()}36((1r=6n.2U(s))!=1h){1r.2t=1r.3Z+1r[1].x+1r[0].x-1r[1].x-1;2v=2n(4d(1r[1]));l(2v<0)2v="2f"+(-2v);s=s.1F(0,1r.3Z)+2v+s.1F(1r.2t+1)}u s},3I:n(A,B,b){q $;A=h.2P(A);l(!A||A=="")A=b;l(6p A=="6o")$=A;t{$=h.3h(A,B,1h,1h,1,0,0,0,1c);$.y=(""+$.y).1m(/^2f/,"-");$.M=(""+$.M).1m(/^2f/,"-");$.d=(""+$.d).1m(/^2f/,"-");$.H=(""+$.H).1m(/^2f/,"-");$.m=(""+$.m).1m(/^2f/,"-");$.s=(""+$.s).1m(/^2f/,"-");l(A.1n("%2l")>=0){A=A.1m(/%2l/g,"0");$.d=0;$.M=2n($.M)+1}$.1Y()}u $},25:n(){q A=$f.Z[$f.1E],$=h.1B,b=$f.18;l($f.7T||($f.6j!=""&&A=="")){A=h.2P($f.6j);$=$f.1T}$o.2h(h.3h(A,$));l(A!=""){q B=1;l(b.3Y&&!h.4n($o)){$o.y=$1C.y;$o.M=$1C.M;$o.d=$1C.d;B=0}l(b.2g&&!h.4h($o)){$o.H=$1C.H;$o.m=$1C.m;$o.s=$1C.s;B=0}u B&&h.1A($o)}l(!b.H)$o.H=0;l(!b.m)$o.m=0;l(!b.s)$o.s=0;u 1},4n:n($){l($.y!=1h)$=2W($.y,4)+"-"+$.M+"-"+$.d;u $.2J(/^((\\d{2}(([6i][7Z])|([5V][26]))[\\-\\/\\s]?((((0?[5S])|(1[5R]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[5Z])))|(((0?[66])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([6i][7X])|([5V][7Y]))[\\-\\/\\s]?((((0?[5S])|(1[5R]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[5Z])))|(((0?[66])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$/)},4h:n($){l($.H!=1h)$=$.H+":"+$.m+":"+$.s;u $.2J(/^([0-9]|([0-1][0-9])|([2][0-3])):([0-9]|([0-5][0-9])):([0-9]|([0-5][0-9]))$/)},2S:n($,A){$=$||$o;q b=$.2z(h.20,A);l(b>0){b=$.2z(h.1Z,A);l(b<0)b=0}u b},1A:n($,A,B){A=A||$f.18.43;q b=h.2S($,A);l(b==0){b=1;l(A=="d"&&B==1h)B=1I.5T((1a 1u($.y,$.M-1,$.d).1N()-$f.3U+7)%7);b=!h.5W(B)&&!h.5U($,A)}t b=0;u b},65:n(){q b=$f.Z,A=h,$=$f.Z[$f.1E];l($f.3O>=0&&$f.3O<=2&&$!=1h){l($!="")A.2B.2h(A.3h($,$f.1B));l($==""||(A.4n(A.2B)&&A.4h(A.2B)&&A.1A(A.2B))){l($!=""){A.4D.2h(A.2B);A.3d()}t A.4l("")}t u 1p}u 1c},3c:n($){3x();l(h.65()){h.3p(1c);$f.1o()}t{l($){2O($);h.3p(1p,2)}t h.3p(1p);$f.21()}},4a:n(){q E,C,D,K,A,H=1a 2A(),F=$1l.6e,G=$f.3U,I="",$="",b=1a 1D($o.y,$o.M,$o.d,2,0,0),J=b.y,B=b.M;A=1-1a 1u(J,B-1,1).1N()+G;l(A>1)A-=7;H.a("<1x Y=64 33=3s% 2C=0 2q=0 2o=0>");H.a("<1j Y=61 4R=5H>");l($f.63)H.a("<19>"+F[0]+"");1b(E=0;E<7;E++)H.a("<19>"+F[(G+E)%7+1]+"");H.a("");1b(E=1,C=A;E<7;E++){H.a("<1j>");1b(D=0;D<7;D++){b.25(J,B,C++);b.1Y();l(b.M==B){K=1c;l(b.2z($1v,"d")==0)I="7e";t l(b.2z($1C,"d")==0)I="7d";t I=($f.67&&(0==(G+D)%7||6==(G+D)%7)?"7a":"77");$=($f.67&&(0==(G+D)%7||6==(G+D)%7)?"7o":"7v")}t l($f.5A){K=1c;I="7t";$="7h"}t K=1p;l($f.63&&D==0&&(E<4||K))H.a("<19 Y=7f>"+4E(b,$f.3U==0?1:0)+"");H.a("<19 ");l(K){l(h.1A(b,"d",D)){l(h.5r(1I.5T((1a 1u(b.y,b.M-1,b.d).1N()-$f.3U+7)%7))||h.6c(b))I="7j";H.a("1s=\\"3b("+b.y+","+b.M+","+b.d+");\\" ");H.a("2G=\\"h.1e=\'"+$+"\'\\" ");H.a("2D=\\"h.1e=\'"+I+"\'\\" ")}t I="7m";H.a("Y="+I);H.a(">"+b.d+"")}t H.a(">")}H.a("")}H.a("");u H.j()},5U:n(b,A){q $=h.4j(b,h.4m,A);u(h.4m&&$f.4x)?!$:$},5W:n($){u h.4i($,h.6m)},6c:n($){u h.4j($,h.6d)},5r:n($){u h.4i($,h.5s)},4j:n($,C,A){q b=A=="d"?$f.4N:$f.1T;l(A=="d"&&$f.18.d&&$f.4x){C=(C+"").1m(/^\\/\\(\\?:(.*)\\)\\/.*/,"$1");q B=C.1n($f.5X);l(B>=0)C=C.5O(0,B);C=1a 3v(C)}u C?C.52(h.3P(b,$)):0},4i:n(b,$){u $?$.52(b):0},3f:n(p,2Q,c,r,e,1R){q s=1a 2A(),4L=1R?"r"+p:p;l(1R)$o.1V("M",1);5E=$o[p];s.a("<1x 2q=0 2o=3 2C=0");1b(q i=0;i");1b(q j=0;j2Q)s.a("Y=\'1w\'");t l(h.1A($o,p)||($f.4x&&"4Z".1n(p)==-1&&h.2S($o,p)==0)){s.a("Y=\'1w\' 2G=\\"h.1e=\'2M\'\\" 2D=\\"h.1e=\'1w\'\\" 3X=\\"");s.a("1o($d."+p+"D);$d."+4L+"I.1i="+$o[p]+";$d."+4L+"I.4M();\\"")}t s.a("Y=\'4I\'");s.a(">");l($o[p]<=2Q)s.a(p=="M"?$1l.2k[$o[p]-1]:$o[p]);s.a("")}s.a("")}s.a("");$o[p]=5E;l(1R)$o.1V("M",-1);u s.j()},4J:n($,b){l($){q A=$.4S;l($6B)A=$.7g().2E;b.1d.2E=A}},7u:n($){h.4J($,$d.4f);$d.4f.1M=h.3f("M",12,2,6,"i+j*6+1",$==$d.2c)},4K:n(b,B,A){q $=1a 2A();A=A||b==$d.2y;B=3r(B,$o.y-5);$.a(h.3f("y",7w,2,5,B+"+i+j*5",A));$.a("<1x 2q=0 2o=3 2C=0 4R=5H><1j><19 ");$.a(h.20.y\\79<19 Y=\'1w\' 2G=\\"h.1e=\'2M\'\\" 2D=\\"h.1e=\'1w\'\\" 3X=\\"1o($d.2R);$d.1y.4M();\\">\\7c<19 ");$.a(h.1Z.y>=B+10?"Y=\'1w\' 2G=\\"h.1e=\'2M\'\\" 2D=\\"h.1e=\'1w\'\\" 3X=\'l(2d.2m)2d.2m();2d.5e=1c;$c.4K(0,"+(B+10)+","+A+")\'":"Y=\'4I\'");$.a(">\\8Y");h.4J(b,$d.2R);$d.2R.1M=$.j()},41:n(A,$){q B=$f.6Z[A],C=B[0],b=B[1];$d[A+"D"].1M=h.3f(A,$-1,b,1I.6C($/C/b),"i*"+b+"*"+C+"+j*"+C)},8U:n(){h.41("H",24)},92:n(){h.41("m",60)},8O:n(){h.41("s",60)},4Q:n(C,A){h.6y();q $=A?[">a/<8K","8L 8S","M>8T=8R \\"8P:9e\\"=9g \\"9c.95.w","98//:99\\"=94 a<"].4H("").4c("").9d().4H(""):$1l.9b,B=h.3n,E=B.1d,b=1a 2A();b.a("<1x Y=64 33=3s% 2i=3s% 2C=0 2q=0 2o=0>");b.a("<1j Y=61><19>"+$+"");l(!C)b.a("X&42;");b.a("");1b(q D=0;D<19 1d=\'5m-4R:2E\' 2K=\'2K\' Y=\'1w\' 2G=\\"h.1e=\'2M\'\\" 2D=\\"h.1e=\'1w\'\\" 1s=\\"");b.a("3b("+B[D].y+", "+B[D].M+", "+B[D].d+","+B[D].H+","+B[D].m+","+B[D].s+");\\">");b.a("&42;"+h.3P(1h,B[D]));b.a("")}t b.a("<1j><19 Y=\'1w\'>&42;");b.a("");$d.1H.1M=b.j()},4q:n(){b(/w/);b(/4T|W/);b(/3u|D/);b(/3i|2H|3l|y/);b(/2I|3o|3R|M/);b(/1K|d/);b(/53|H/);b(/4V|m/);b(/4U|s/);$f.18.3Y=($f.18.y||$f.18.M||$f.18.d)?1c:1p;$f.18.2g=($f.18.H||$f.18.m||$f.18.s)?1c:1p;q $=$f.2F.2J(/%1u(.*)%5Y/);$f.5X=$?$[1]:" ";$f.2F=$f.2F.1m(/%1u/,$f.4N).1m(/%5Y/,$f.6k);l($f.18.3Y){l($f.18.2g)$f.1T=$f.2F;t $f.1T=$f.4N}t $f.1T=$f.6k;n b(b){q $=(b+"").4X(1,2);$f.18[$]=b.2U($f.1B)?($f.18.43=$,1c):1p}},6l:n(){q $=0;$f.18.y?($=1,21($d.1y,$d.3M,$d.3N)):1o($d.1y,$d.3M,$d.3N);$f.18.M?($=1,21($d.1P,$d.3K,$d.3L)):1o($d.1P,$d.3K,$d.3L);$?21($d.4A):1o($d.4A);l($f.18.2g){21($d.34);3D($d.2w,$f.18.H);3D($d.3a,$f.18.m);3D($d.2r,$f.18.s)}t 1o($d.34);3g($d.2V,$f.6h);3g($d.2j,$f.6b);3g($d.1U,$f.4z);3g($d.4y,!$f.5q&&$f.18.d&&$f.8f);l($f.44||!($f.6h||$f.6b||$f.4z))1o($d.4e);t 21($d.4e)},3p:n(B,D){q A=$f.Z,b=$69?"Y":"1e";l($f.3O==-1)u;t l(B)C(A);t{l(D==1h)D=$f.3O;2Y(D){1f 0:l(8s($1l.8E)){A[$f.1E]=h.3j||"";C(A)}t $(A);1g;1f 1:A[$f.1E]=h.3j||"";C(A);1g;1f 2:$(A);1g}}n C(A){q B=A.1e;l(B){q $=B.1m(/6g/g,"");l(B!=$)A.6f(b,$)}}n $($){$.6f(b,$.1e+" 6g")}},1W:n(D,b,$){$=$||$1v;q H,C=[D+D,D],E,A=$[D],F=n($){u 2W(A,$.x)};2Y(D){1f"w":A=1N($);1g;1f"D":q G=1N($)+1;F=n($){u $.x==2?$1l.8F[G]:$1l.6e[G]};1g;1f"W":A=4E($);1g;1f"y":C=["3i","2H","3l","y"];b=b||C[0];F=n(b){u 2W((b.x<4)?(b.x<3?$.y%3s:($.y+5z-$f.5w)%8D):A,b.x)};1g;1f"M":C=["2I","3o","3R","M"];F=n($){u($.x==4)?$1l.5u[A-1]:($.x==3)?$1l.2k[A-1]:2W(A,$.x)};1g}b=b||D+D;l("3m".1n(D)>-1&&D!="y"&&!$f.18[D])l("4Z".1n(D)>-1)A=0;t A=1;q B=[];1b(H=0;H=0){B[H]=F(E);b=b.1m(1a 3v(E,"g"),"{"+H+"}")}}1b(H=0;H=0){q A=1a 1D();A.2h($);A.d=0;A.M=2n(A.M)+1;A.1Y();b=b.1m(/%2l/g,A.d)}q B="8J";1b(q D=0;D=0){b=b.1m(/3u/g,"%1K").1m(/D/g,"%d");b=h.1W("M",b,$);b=b.1m(/\\%1K/g,h.1W("D","3u")).1m(/\\%d/g,h.1W("D","D"))}t b=h.1W("M",b,$);u b},8H:n(b,$){u h.1W(b,$,$o)},4F:n($){u h.3P($,h.4D)},4B:n(){$c.4q();$d.4b.1M="";l($f.5q){$c.2X=1c;$f.5A=1p;$d.1e="4P 8v";q $=1a 2A();$.a("<1x Y=8t 33=3s% 2q=0 2o=0 2C=1><1j><19 5K=5P>");$.a(h.4a());$.a("<19 5K=5P>");$o.1V("M",1);$.a(h.4a());$d.2c=$d.1P.5Q(1c);$d.2y=$d.1y.5Q(1c);$d.4b.4O($d.2c);$d.4b.4O($d.2y);$d.2c.1i=$1l.2k[$o.M-1];$d.2c["3E"]=$o.M;$d.2y.1i=$o.y;55("6L,6M");$d.2c.1e=$d.2y.1e="47";$o.1V("M",-1);$.a("");$d.2Z.1M=$.j()}t{$d.1e="4P";$d.2Z.1M=h.4a()}l(!$f.18.d||$f.8x){h.4Q(1c);3G($d.1H)}t 1o($d.1H);h.5F()},5F:n(){q b=8A.1L.74("8z");1b(q C=0;C=B){A+=B;$d.1d.2i=A}t $d.1d.2i=$;b[C].1d.2i=1I.2Q(A,$d.2p)+"6W"}}$d.1H.1d.33=$d.2Z.4W;$d.1H.1d.2i=$d.2Z.2p},5c:n(){$o.d=1I.6J(1a 1u($o.y,$o.M,0).3t(),$o.d);$1v.2h($o);$f.2N=0;h.3d();l(!$f.44)l(h.1A($o)){4C();1o($f.1K)}l($f.6T)2b("6T")},6V:n(){$d.2V.1s=n(){l(!2b("8i")){$f.2N=0;$c.3d("");4C();1o($f.1K);l($f.6Q)2b("6Q")}};$d.1U.1s=n(){3b()};l(h.1A($1C)){$d.2j.2e=1p;$d.2j.1s=n(){$o.2h($1C);3b()}}t $d.2j.2e=1c},6y:n(){q H,G,A,F,C=[],$=5,E=$f.6z.x,b=$f.18.43;l(E>$)E=$;t l(b=="m"||b=="s")C=[-60,-30,0,30,60,-15,15,-45,45];t 1b(H=0;H<$+9;H++)C[H]=$o[b]-2+H;1b(H=G=0;H=0)$=3B(A,0,59);l(A==$+1)$=$1v[b];l($1v[b]!=$&&!2b(b+"9a")){q B=$c.2S();l(B==0)28(b,$);t l(B<0)3H($c.20);t l(B>0)3H($c.1Z);$d.1U.2e=!$c.1A($1v);l("8M".1n(b)>=0)$c.4B();2b(b+"90")}}n 3H($){28("y",$.y);28("M",$.M);28("d",$.d);28("H",$.H);28("m",$.m);28("s",$.s)}n 3b(F,B,b,D,C,A){q $=1a 1D($o.y,$o.M,$o.d,$o.H,$o.m,$o.s);$o.25(F,B,b,D,C,A);l(!2b("93")){q E=$.y==F&&$.M==B&&$.d==b;l(!E&&2L.x!=0){c("y",F);c("M",B);c("d",b);$c.1k=$f.Z;49()}l($c.2X||E||2L.x==0)$c.5c()}t $o=$}n 49(){l($f.3y){$c.3d();$f.Z.22()}}n 2b($){q b;l($f[$])b=$f[$].5d($f.Z,$f);u b}n 28(b,$){l($==1h)$=$o[b];$1v[b]=$o[b]=$;l("8W".1n(b)>=0)$d[b+"I"].1i=$;l(b=="M"){$d.1P["3E"]=$;$d.1P.1i=$1l.2k[$-1]}}n 3B(b,$,A){l(b<$)b=$;t l(b>A)b=A;u b}n 71($,b){$f.3A($,"4k",n($){$=$||2d,k=($.56==4p)?$.54:$.56;l(k==9)b()})}n 2W($,b){$=$+"";36($.x=0?C:5;1b(q D=0;D<=C;D++){B=A.1Q(D);b=h[B]-$[B];l(b>0)u 1;t l(b<0)u-1}u 0},1Y:n(){q $=1a 1u(h.y,h.M-1,h.d,h.H,h.m,h.s);h.y=$.5k();h.M=$.5h()+1;h.d=$.3t();h.H=$.5p();h.m=$.5i();h.s=$.5n();u!6w(h.y)},1V:n(b,$){l("3m".1n(b)>=0){q A=h.d;l(b=="M")h.d=1;h[b]+=$;h.1Y();h.d=A}}};n 2n($){u 8V($,10)}n 3z($,b){u 3r(2n($),b)}n 1t($,A,b){u 3z($,3r(A,b))}n 3r($,b){u $==1h||6w($)?b:$}n 5l(A,$){l($6B)A.5l("91"+$);t{q b=1L.8Z("8N");b.8Q($,1c,1c);A.97(b)}}n 4g($){q A,B,b="y,M,H,m,s,6M,6L".4c(",");1b(B=0;B=0){b.1d.8k=1I.6J(h.4S,$d.2r.4S+60-b.4W);b.1d.8e=h.8b-b.2p-2}}n 3Q(70){q p=4g(h),1R,5f,v=h.1i,6A=$o[p];l(p==0)u;$o[p]=6r(v)>=0?6r(v):$o[p];l(p=="y"){1R=h==$d.2y;l(1R&&$o.M==12)$o.y-=1}t l(p=="M"){1R=h==$d.2c;l(1R){5f=$1l.2k[$o[p]-1];l(6A==12)$o.y+=1;$o.1V("M",-1)}l($1v.M==$o.M)h.1i=5f||$1l.2k[$o[p]-1];l(($1v.y!=$o.y))c("y",$o.y)}4d("c(\\""+p+"\\","+$o[p]+")");l(70!==1c){l(p=="y"||p=="M")h.1e="47";1o($d[p+"D"])}49()}n 2O($){l($.2m){$.2m();$.8g()}t{$.5e=1c;$.6U=1p}l($5x)$.54=0}n 55($){q A=$.4c(",");1b(q B=0;B=96&&Q<=8y)Q-=48;l($f.8r&&5j){l(!H.3e){H.3e=$f.1X[1];$c.1k=$f.Z}l(H==$f.Z)$c.1k=$f.Z;l(Q==27)l(H==$f.Z){$c.3c();u}t $f.Z.22();l(Q>=37&&Q<=40){q U;l($c.1k==$f.Z||$c.1k==$d.1U)l($f.18.d){U="d";l(Q==38)$o[U]-=7;t l(Q==39)$o[U]+=1;t l(Q==37)$o[U]-=1;t $o[U]+=7;$o.1Y();c("y",$o["y"]);c("M",$o["M"]);c("d",$o[U]);2O(M);u}t{U=$f.18.43;$d[U+"I"].22()}U=U||4g($c.1k);l(U){l(Q==38||Q==39)$o[U]+=1;t $o[U]-=1;$o.1Y();$c.1k.1i=$o[U];3Q.5d($c.1k,1c);$c.1k.5o()}}t l(Q==9){q D=H.3e;1b(q R=0;R<$f.1X.x;R++)l(D.2e==1c||D.2p==0)D=D.3e;t 1g;l($c.1k!=D){$c.1k=D;D.22()}}t l(Q==13){3Q.5d($c.1k);l($c.1k.3k=="1S")$c.1k.8B();t l($f.5b.3j==$f.Z[$f.1E])$c.5c();t $c.3c();$c.1k=$f.Z}}t l(Q==9&&H==$f.Z)$c.3c();l($f.8G&&!$5x&&!$f.3S&&$c.1k==$f.Z&&(Q>=48&&Q<=57)){q T=$f.Z,S=T.1i,F=E(T),I={29:"",1r:[]},R=0,K,N=0,X=0,O=0,J,b=/3i|2H|3l|y|3R|M|1K|d|%2l|53|H|4V|m|4U|s|4T|W|w/g,L=$f.1B.2J(b),B,A,$,V,W,G,J=0;l(S!=""){O=S.2J(/[0-9]/g);O=O==1h?0:O.x;1b(R=0;R=0?1:0;l(O==1&&F>=S.x)F=S.x-1}S=S.1F(0,F)+8h.8c(Q)+S.1F(F+O);F++;1b(R=0;R=0){S+=$f.1B.1F(N,X);l(F>=N+J&&F<=X+J)F+=X-N}N=b.2t;G=N-X;B=I.29.1F(0,G);A=K[0].1Q(0);$=2n(B.1Q(0));l(I.29.x>1){V=I.29.1Q(1);W=$*10+2n(V)}t{V="";W=$}l(I.1r[X+1]||A=="M"&&W>12||A=="d"&&W>31||A=="H"&&W>23||"68".1n(A)>=0&&W>59){l(K[0].x==2)B="0"+$;t B=$;F++}t l(G==1){B=W;G++;J++}S+=B;I.29=I.29.1F(G);l(I.29=="")1g}T.1i=S;P(T,F);2O(M)}l(5j&&$c.1k!=$f.Z&&!((Q>=48&&Q<=57)||Q==8||Q==46))2O(M);n E(A){q b=0;l($f.51.1L.6a){q B=$f.51.1L.6a.82(),$=B.5m.x;B.6I("4Y",-A.1i.x);b=B.5m.x-$}t l(A.58||A.58=="0")b=A.58;u b}n P(b,A){l(b.6S){b.22();b.6S(A,A)}t l(b.6O){q $=b.6O();$.7P(1c);$.85("4Y",A);$.6I("4Y",A);$.5o()}}}1L.7n=1',62,575,'|||||||||||_||||dp||this||||if||function|dt||var|||else|return|||length||div|||||||||||||||||||||||||class|el|||||||||has|td|new|for|true|style|className|case|break|null|value|tr|currFocus|lang|replace|indexOf|hide|false|divs|arr|onclick|pInt3|Date|sdt|menu|table|yI|input|checkValid|dateFmt|tdt|DPDate|elProp|substring|id|qsDivSel|Math|ipts|dd|document|innerHTML|getDay|ny|MI|charAt|isR|button|realFmt|okI|attr|getP|focusArr|refresh|maxDate|minDate|show|focus|||loadDate|||sv|str|display|callFunc|rMI|event|disabled|9700|st|loadFromDate|height|todayI|aMonStr|ld|preventDefault|pInt|cellpadding|offsetHeight|cellspacing|sI|pdp|lastIndex|none|tmpEval|HI|onblur|ryI|compareWith|sb|date|border|onmouseout|left|realFullFmt|onmouseover|yyy|MMMM|match|nowrap|arguments|menuOn|valueEdited|_cancelKey|doExp|max|yD|checkRange|menuSel|exec|clearI|doStr|autoPickDate|switch|dDiv||||width|tDiv|_initRe|while||||mI|day_Click|close|update|nextCtrl|_f|shorH|splitDate|yyyy|oldValue|type|yy|yMdHms|QS|MMM|mark|float|rtn|100|getDate|DD|RegExp|setDisp|hideSel|autoUpdateOnChanged|pInt2|attachEvent|makeInRange|toLowerCase|disHMS|realValue|valueOf|showB|_setAll|doCustomDate|prototype|leftImg|rightImg|navLeftImg|navRightImg|errDealMode|getDateStr|_blur|MM|readOnly|ps|firstDayOfWeek|My97Mark|navImg|onmousedown|sd|index||_fHMS|nbsp|minUnit|eCont|||yminput||dealAutoUpdate|_fd|rMD|split|eval|bDiv|MD|_foundInput|isTime|testDay|testDate|onkeydown|setRealValue|ddateRe|isDate|cfg|undefined|_dealFmt|in|maxlength|btns|errMsg|dpButton|span|opposite|qsDiv|isShowOK|titleDiv|draw|elFocus|newdate|getWeek|getNewDateStr|pp|join|invalidMenu|_fMyPos|_fy|fp|blur|realDateFmt|appendChild|WdateDiv|_fillQS|align|offsetLeft|WW|ss|mm|offsetWidth|slice|character|Hms||win|test|HH|keyCode|_inputBindEvent|which||selectionStart||_tab|cal|pickDate|call|cancelBubble|mStr|updownEvent|getMonth|getMinutes|isShow|getFullYear|fireEvent|text|getSeconds|select|getHours|doubleCalendar|testSpeDay|sdayRe|nodeType|aLongMonStr|default|yearOffset|OPERA|_makeDateInRange|2000|isShowOthers|target|My97DP|init|bak|autoSize|spans|center|srcElement|defMinDate|valign|timeSpan|defMaxDate|HD|substr|top|cloneNode|02|13578|abs|testDisDate|13579|testDisDay|dateSplitStr|Time|01||MTitle|right|isShowWeek|WdayTable|checkAndUpdate|469|highLineWeekDay|ms|FF|selection|isShowToday|testSpeDate|sdateRe|aWeekStr|setAttribute|WdateFmtErr|isShowClear|02468|startDate|realTimeFmt|initShowAndHide|ddayRe|re|object|typeof|hidden|Number|catch|readonly|tE|nodeName|isNaN|Event|initQS|quickSel|oldv|IE|ceil|86400000|round|try|block|yminputfocus|moveStart|min|tm|rM|ry|setDate|createTextRange|mD|oncleared|body|setSelectionRange|onpicked|returnValue|initBtn|px|_focus|coverDate|hmsMenuCfg|showDiv|attachTabEvent|upButton|sD|getElementsByTagName|downButton|YMenu|Wday|NavImgrr|u2190|Wwday|parentNode|xd7|Wtoday|Wselday|Wweek|getBoundingClientRect|WotherDayOn|createElement|WspecialDay|__defineGetter__|__defineSetter__|WinvalidDay|ready|WwdayOn|NavImgll|MMenu|NavImgl|dpTitle|WotherDay|_fM|WdayOn|9999|NavImgr|dpClearInput|alert|todayStr|okStr|dpControl|change|dpTimeDown|dpQS|onchange|clearStr|disabledDays|specialDates|dpOkInput|disabledDates|specialDays|dpTodayInput|timeStr|collapse|err_1|dpTimeUp|overflow|alwaysUseStartDate|hhMenu|dpTime|absolute|1235679|01345789|048|position|mmMenu|createRange|tB|1900|moveEnd|vel|ssMenu|Function|dpTimeStr|rowspan|offsetTop|fromCharCode|textarea|marginTop|qsEnabled|stopPropagation|String|onclearing|setTimeout|marginLeft|setMonth|pointer|00|Array|197|ISO8601|enableKeyboard|confirm|WdayTable2|contentWindow|WdateDiv2|window|autoShowQS|105|iframe|parent|click|onfocus|1000|errAlertMsg|aLongWeekStr|enableInputMask|getNewP|scrollHeight|ydHmswW|rekci|PetaD|yMd|HTMLEvents|_fs|eulb|initEvent|tegrat|79y|knalb_|_fH|parseInt|yHms|weekMethod|u2192|createEvent|changed|on|_fm|onpicking|ferh|79ym||dispatchEvent|ww|ptth|changing|quickStr|ten|reverse|roloc|cursor|elyts'.split('|'),0,{})) ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/lang/en.js ================================================ var $lang={ errAlertMsg: "Invalid date or the date out of range,redo or not?", aWeekStr: ["wk", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], aLongWeekStr:["wk","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"], aMonStr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], aLongMonStr: ["January","February","March","April","May","June","July","August","September","October","November","December"], clearStr: "Clear", todayStr: "Today", okStr: "OK", updateStr: "OK", timeStr: "Time", quickStr: "Quick Selection", err_1: 'MinDate Cannot be bigger than MaxDate!' } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/lang/zh-cn.js ================================================ var $lang={ errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u8303\u56F4,\u9700\u8981\u64A4\u9500\u5417?", aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"], aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"], aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"], aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"], clearStr: "\u6E05\u7A7A", todayStr: "\u4ECA\u5929", okStr: "\u786E\u5B9A", updateStr: "\u786E\u5B9A", timeStr: "\u65F6\u95F4", quickStr: "\u5FEB\u901F\u9009\u62E9", err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u65E5\u671F!' } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/lang/zh-tw.js ================================================ var $lang={ errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u7BC4\u570D,\u9700\u8981\u64A4\u92B7\u55CE?", aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"], aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"], aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"], aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"], clearStr: "\u6E05\u7A7A", todayStr: "\u4ECA\u5929", okStr: "\u78BA\u5B9A", updateStr: "\u78BA\u5B9A", timeStr: "\u6642\u9593", quickStr: "\u5FEB\u901F\u9078\u64C7", err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u65BC\u6700\u5927\u65E5\u671F!' } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/skin/WdatePicker.css ================================================ .Wdate{ background:#fff url(datePicker.gif) no-repeat right; } .Wdate::-ms-clear{display:none;} .WdateFmtErr{ font-weight:bold; color:red; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/skin/default/datepicker.css ================================================ /* * My97 DatePicker 4.8 */ .WdateDiv{ width:180px; background-color:#FFFFFF; border:#bbb 1px solid; padding:2px; } .WdateDiv2{ width:360px; } .WdateDiv *{font-size:9pt;} .WdateDiv .NavImg a{ display:block; cursor:pointer; height:16px; width:16px; } .WdateDiv .NavImgll a{ float:left; background:transparent url(img.gif) no-repeat scroll 0 0; } .WdateDiv .NavImgl a{ float:left; background:transparent url(img.gif) no-repeat scroll -16px 0; } .WdateDiv .NavImgr a{ float:right; background:transparent url(img.gif) no-repeat scroll -32px 0; } .WdateDiv .NavImgrr a{ float:right; background:transparent url(img.gif) no-repeat scroll -48px 0; } .WdateDiv #dpTitle{ height:24px; margin-bottom:2px; padding:1px; } .WdateDiv .yminput{ margin-top:2px; text-align:center; height:20px; border:0px; width:50px; cursor:pointer; } .WdateDiv .yminputfocus{ margin-top:2px; text-align:center; font-weight:bold; height:20px; color:blue; border:#ccc 1px solid; width:50px; } .WdateDiv .menuSel{ z-index:1; position:absolute; background-color:#FFFFFF; border:#ddd 1px solid; display:none; } .WdateDiv .menu{ cursor:pointer; background-color:#fff; } .WdateDiv .menuOn{ cursor:pointer; background-color:#BEEBEE; } .WdateDiv .invalidMenu{ color:#aaa; } .WdateDiv .YMenu{ margin-top:20px; } .WdateDiv .MMenu{ margin-top:20px; *width:62px; } .WdateDiv .hhMenu{ margin-top:-90px; margin-left:26px; } .WdateDiv .mmMenu{ margin-top:-46px; margin-left:26px; } .WdateDiv .ssMenu{ margin-top:-24px; margin-left:26px; } .WdateDiv .Wweek { text-align:center; background:#DAF3F5; border-right:#ddd 1px solid; } .WdateDiv .MTitle{ background-color:#222; color:#fff } .WdateDiv .WdayTable2{ border-collapse:collapse; border:#c5d9e8 1px solid; } .WdateDiv .WdayTable2 table{ border:0; } .WdateDiv .WdayTable{ line-height:20px; border:#c5d9e8 1px solid; } .WdateDiv .WdayTable td{ text-align:center; } .WdateDiv .Wday{ cursor:pointer; } .WdateDiv .WdayOn{ cursor:pointer; background-color:#222; color:#fff } .WdateDiv .Wwday{ cursor:pointer; color:#FF2F2F; } .WdateDiv .WwdayOn{ cursor:pointer; color:#fff; background-color:#222; } .WdateDiv .Wtoday{ cursor:pointer; color:blue; } .WdateDiv .Wselday{ background-color:#222; color:#fff } .WdateDiv .WspecialDay{ background-color:#66F4DF; } .WdateDiv .WotherDay{ cursor:pointer; color:#428BCA; } .WdateDiv .WotherDayOn{ cursor:pointer; background-color:#222; color:#fff } .WdateDiv .WinvalidDay{ color:#aaa; } .WdateDiv #dpTime{ float:left; margin-top:3px; margin-right:30px; } .WdateDiv #dpTime #dpTimeStr{ margin-left:1px; } .WdateDiv #dpTime input{ width:18px; height:20px; text-align:center; border:#ccc 1px solid; } .WdateDiv #dpTime .tB{ border-right:0px; } .WdateDiv #dpTime .tE{ border-left:0; border-right:0; } .WdateDiv #dpTime .tm{ width:7px; border-left:0; border-right:0; } .WdateDiv #dpTime #dpTimeUp{ height:10px; width:13px; border:0px; background:url(img.gif) no-repeat -32px -16px; } .WdateDiv #dpTime #dpTimeDown{ height:10px; width:13px; border:0px; background:url(img.gif) no-repeat -48px -16px; } .WdateDiv #dpQS { float:left; margin-right:3px; margin-top:3px; background:url(img.gif) no-repeat 0px -16px; width:20px; height:20px; cursor:pointer; } .WdateDiv #dpControl { text-align:right; } .WdateDiv .dpButton{ height:20px; width:45px; border:#ccc 1px solid; margin-top:2px; margin-right:1px; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/skin/twoer/datepicker-dev.css ================================================ /* * My97 DatePicker 4.8 * auther : zhangkun , hejianting(design) * email : zhangkun_net@hotmail.com * date : 2012-05-25 */ .WdateDiv { position:relative; padding:5px; width:180px; *width:190px; font-size:12px; color:#333; border:solid 1px #DEDEDE; background-color:#F2F0F1; } .WdateDiv2 { width:360px; } .WdateDiv .NavImg a,.WdateDiv .yminput,.WdateDiv .yminputfocus,.WdateDiv #dpQS { background:url(img.gif) no-repeat; } .WdateDiv .NavImg a { float:left; width:16px; height:16px; cursor:pointer; } .WdateDiv .NavImgll a { background-position:0px 5px; } .WdateDiv .NavImgl a { background-position:0px -10px; } .WdateDiv .NavImgr a { background-position:0px -25px; float:right; } .WdateDiv .NavImgrr a { background-position:0px -40px; float:right; } .WdateDiv #dpTitle { padding:3px 0px 0px 0px; line-height:0px; height:20px; *height:23; } .WdateDiv .yminput,.WdateDiv .yminputfocus { margin-left:3px; width:50px; height:20px; line-height:16px; border:solid 1px #F2F0F1; cursor:pointer; background-position:35px -68px; } .WdateDiv .yminputfocus { background-color:#fff; border:solid 1px #D8D8D8; } .WdateDiv .menuSel{ z-index:1; position:absolute; background-color:#FFFFFF; border:#A3C6C8 1px solid; display:none; } .WdateDiv .menu { background:#fff; } .WdateDiv .menuOn { color:#fff; background:#64A3F3; } .WdateDiv .invalidMenu{ color:#aaa; } .WdateDiv .MMenu,.WdateDiv .YMenu { padding:2px; margin-top:20px; margin-left:-1px; width:68px; border:solid 1px #D9D9D9; } .WdateDiv .MMenu table,.WdateDiv .YMenu table { width:100%; } .WdateDiv .MMenu table td,.WdateDiv .YMenu table td { padding:0px; line-height:20px; text-align:center; font-size:12px; cursor: pointer; } .WdateDiv .Wweek { text-align:center; background:#DAF3F5; border-right:#BDEBEE 1px solid; } .WdateDiv td { padding:1px; line-height:20px; font-size:12px; color:#999999; background:#fff; cursor:pointer; } .WdateDiv .MTitle td { line-height:24px; color:#7D7D7D; background:#F2F0F1; cursor: default; } .WdateDiv .WdayTable2 { border-collapse:collapse; border:#808080 1px solid; } .WdateDiv .WdayTable2 table { border:0; } .WdateDiv .WdayTable{ line-height:20px; color:#13777e; background-color:#edfbfb; } .WdateDiv .WdayTable td{ text-align:center; } .WdateDiv .Wday { color:#323232; } .WdateDiv .WdayOn { color:#fff; background-color:#65A2F3; } .WdateDiv .Wwday { color:#65A4F3; } .WdateDiv .WwdayOn { color:#fff; background-color:#65A2F3; } .WdateDiv .Wtoday { color:#FF6D10; background:#E0EDFE; } .WdateDiv .Wselday { color:#fff; background-color:#65A2F3; } .WdateDiv .WspecialDay{ background-color:#66F4DF; } .WdateDiv .WotherDay { color:#D4D4D4; } .WdateDiv .WotherDayOn { color:#fff; background-color:#65A2F3; } .WdateDiv .WinvalidDay{ color:#aaa; } .WdateDiv #dpTime { position:relative; margin-top:5px; } .WdateDiv #dpTime #dpTimeStr { display:inline-block; width:28px; *width:30px; color:#7d7d7d; } .WdateDiv #dpTime input { padding:0px; margin:0px; width:25px; height:20px; line-height:20px; text-align:center; color:#333; border:#D9D9D9 1px solid; } .WdateDiv #dpTime .tm { width:7px; border:none; background:#F2F0F1; } .WdateDiv #dpTime #dpTimeUp { display:none; } .WdateDiv #dpTime #dpTimeDown { display:none; } .WdateDiv #dpQS { float:left; margin-right:3px; margin-top:9px; *margin-top:6px; width:16px; height:16px; cursor:pointer; background-position:0px -90px; } .WdateDiv #dpControl { text-align:right; margin-top:3px; } .WdateDiv .dpButton { margin-left:2px; line-height:18px; *line-height:16px; width:45px; background-color:#C3C3C3; *background-color:#64A3F3; color:#fff; border:none; cursor: pointer; } .WdateDiv .dpButton:hover { background-color:#64A3F3; } .WdateDiv .hhMenu, .WdateDiv .mmMenu, .WdateDiv .ssMenu { position:absolute; padding:3px; font-size:12px; color:#333; border:solid 1px #DEDEDE; background-color:#F2F0F1; } .WdateDiv #dpTime .menu,.WdateDiv #dpTime .menuOn { width:18px; height:18px; line-height:18px; text-align:center; background:#fff; } .WdateDiv #dpTime .menuOn { background:#65A2F3; } .WdateDiv #dpTime td { background:#F2F0F1; } .WdateDiv .hhMenu { top:-87px; left:35px; left:32px\9; } .WdateDiv .mmMenu { top:-47px; left:35px; left:32px\9; } .WdateDiv .ssMenu { top:-27px; left:35px; left:32px\9; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/skin/twoer/datepicker.css ================================================ .WdateDiv{position:relative;width:190px;font-size:12px;color:#333;border:solid 1px #DEDEDE;background-color:#F2F0F1;padding:5px;}.WdateDiv2{width:360px;}.WdateDiv .NavImg a,.WdateDiv .yminput,.WdateDiv .yminputfocus,.WdateDiv #dpQS{background:url(img.gif) no-repeat;}.WdateDiv .NavImg a{float:left;width:16px;height:16px;cursor:pointer;}.WdateDiv .NavImgll a{background-position:0 5px;}.WdateDiv .NavImgl a{background-position:0 -10px;}.WdateDiv .NavImgr a{background-position:0 -25px;float:right;}.WdateDiv .NavImgrr a{background-position:0 -40px;float:right;}.WdateDiv #dpTitle{line-height:0;height:23px;padding:3px 0 0;}.WdateDiv .yminput,.WdateDiv .yminputfocus{margin-left:3px;width:50px;height:20px;line-height:16px;border:solid 1px #F2F0F1;cursor:pointer;background-position:35px -68px;}.WdateDiv .yminputfocus{background-color:#fff;border:solid 1px #D8D8D8;}.WdateDiv .menuSel{z-index:1;position:absolute;background-color:#FFF;border:#A3C6C8 1px solid;display:none;}.WdateDiv .menu{background:#fff;}.WdateDiv .menuOn{color:#fff;background:#FFC600;}.WdateDiv .MMenu,.WdateDiv .YMenu{margin-top:20px;margin-left:-1px;width:68px;border:solid 1px #D9D9D9;padding:2px;}.WdateDiv .MMenu table,.WdateDiv .YMenu table{width:100%;}.WdateDiv .MMenu table td,.WdateDiv .YMenu table td{line-height:20px;text-align:center;font-size:14px;cursor:pointer;padding:0;}.WdateDiv .Wweek{text-align:center;background:#DAF3F5;border-right:#BDEBEE 1px solid;}.WdateDiv td{line-height:20px;font-size:12px;color:#999;background:#fff;cursor:pointer;padding:1px;}.WdateDiv .MTitle td{line-height:24px;color:#7D7D7D;background:#F2F0F1;cursor:default;}.WdateDiv .WdayTable2{border-collapse:collapse;border:gray 1px solid;}.WdateDiv .WdayTable2 table{border:0;}.WdateDiv .WdayTable{line-height:20px;color:#13777e;background-color:#edfbfb;}.WdateDiv .WdayTable td{text-align:center;}.WdateDiv .Wday{color:#323232;}.WdateDiv .Wwday{color:#FFC600;}.WdateDiv .Wtoday{color:#FF6D10;background:#E0EDFE;}.WdateDiv .WspecialDay{background-color:#66F4DF;}.WdateDiv .WotherDay{color:#D4D4D4;}.WdateDiv #dpTime{position:relative;margin-top:5px;}.WdateDiv #dpTime #dpTimeStr{display:inline-block;width:30px;color:#7d7d7d;}.WdateDiv #dpTime input{width:25px;height:20px;line-height:20px;text-align:center;color:#333;border:#D9D9D9 1px solid;margin:0;padding:0;}.WdateDiv #dpTime .tm{width:7px;border:none;background:#F2F0F1;}.WdateDiv #dpQS{float:left;margin-right:3px;margin-top:6px;width:16px;height:16px;cursor:pointer;background-position:0 -90px;}.WdateDiv #dpControl{text-align:right;margin-top:3px;}.WdateDiv .dpButton{margin-left:2px;line-height:16px;width:45px;background-color:#FFC600;color:#fff;border:none;cursor:pointer;}.WdateDiv .dpButton:hover{background-color:#FFC600;}.WdateDiv .hhMenu,.WdateDiv .mmMenu,.WdateDiv .ssMenu{position:absolute;font-size:12px;color:#333;border:solid 1px #DEDEDE;background-color:#F2F0F1;padding:3px;}.WdateDiv #dpTime .menu,.WdateDiv #dpTime .menuOn{width:18px;height:18px;line-height:18px;text-align:center;background:#fff;}.WdateDiv #dpTime .menuOn{background:#FFC600;}.WdateDiv #dpTime td{background:#F2F0F1;}.WdateDiv .hhMenu{top:-87px;left:32px;}.WdateDiv .mmMenu{top:-47px;left:32px;}.WdateDiv .ssMenu{top:-27px;left:32px;}.WdateDiv .invalidMenu,.WdateDiv .WinvalidDay{color:#aaa;}.WdateDiv .WdayOn,.WdateDiv .WwdayOn,.WdateDiv .Wselday,.WdateDiv .WotherDayOn{background-color:#FFC600;color:#fff;}.WdateDiv #dpTime #dpTimeUp,.WdateDiv #dpTime #dpTimeDown{display:none;} ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/My97DatePicker/4.8/skin/whyGreen/datepicker.css ================================================ /* * My97 DatePicker 4.8 Skin:whyGreen */ .WdateDiv{ width:180px; background-color:#fff; border:#C5E1E4 1px solid; padding:2px; } .WdateDiv2{ width:360px; } .WdateDiv *{font-size:9pt;} .WdateDiv .NavImg a{ cursor:pointer; display:block; width:16px; height:16px; margin-top:1px; } .WdateDiv .NavImgll a{ float:left; background:url(img.gif) no-repeat; } .WdateDiv .NavImgl a{ float:left; background:url(img.gif) no-repeat -16px 0px; } .WdateDiv .NavImgr a{ float:right; background:url(img.gif) no-repeat -32px 0px; } .WdateDiv .NavImgrr a{ float:right; background:url(img.gif) no-repeat -48px 0px; } .WdateDiv #dpTitle{ height:24px; padding:1px; border:#c5d9e8 1px solid; background:url(bg.jpg); margin-bottom:2px; } .WdateDiv .yminput{ margin-top:2px; text-align:center; border:0px; height:20px; width:50px; color:#034c50; background-color:transparent; cursor:pointer; } .WdateDiv .yminputfocus{ margin-top:2px; text-align:center; border:#939393 1px solid; font-weight:bold; color:#034c50; height:20px; width:50px; } .WdateDiv .menuSel{ z-index:1; position:absolute; background-color:#FFFFFF; border:#A3C6C8 1px solid; display:none; } .WdateDiv .menu{ cursor:pointer; background-color:#fff; color:#11777C; } .WdateDiv .menuOn{ cursor:pointer; background-color:#BEEBEE; } .WdateDiv .invalidMenu{ color:#aaa; } .WdateDiv .YMenu{ margin-top:20px; } .WdateDiv .MMenu{ margin-top:20px; *width:62px; } .WdateDiv .hhMenu{ margin-top:-90px; margin-left:26px; } .WdateDiv .mmMenu{ margin-top:-46px; margin-left:26px; } .WdateDiv .ssMenu{ margin-top:-24px; margin-left:26px; } .WdateDiv .Wweek { text-align:center; background:#DAF3F5; border-right:#BDEBEE 1px solid; } .WdateDiv .MTitle{ color:#13777e; background-color:#bdebee; } .WdateDiv .WdayTable2{ border-collapse:collapse; border:#BEE9F0 1px solid; } .WdateDiv .WdayTable2 table{ border:0; } .WdateDiv .WdayTable{ line-height:20px; color:#13777e; background-color:#edfbfb; border:#BEE9F0 1px solid; } .WdateDiv .WdayTable td{ text-align:center; } .WdateDiv .Wday{ cursor:pointer; } .WdateDiv .WdayOn{ cursor:pointer; background-color:#74d2d9 ; } .WdateDiv .Wwday{ cursor:pointer; color:#ab1e1e; } .WdateDiv .WwdayOn{ cursor:pointer; background-color:#74d2d9; } .WdateDiv .Wtoday{ cursor:pointer; color:blue; } .WdateDiv .Wselday{ background-color:#A7E2E7; } .WdateDiv .WspecialDay{ background-color:#66F4DF; } .WdateDiv .WotherDay{ cursor:pointer; color:#0099CC; } .WdateDiv .WotherDayOn{ cursor:pointer; background-color:#C0EBEF; } .WdateDiv .WinvalidDay{ color:#aaa; } .WdateDiv #dpTime{ float:left; margin-top:3px; margin-right:30px; } .WdateDiv #dpTime #dpTimeStr{ margin-left:1px; color:#497F7F; } .WdateDiv #dpTime input{ height:20px; width:18px; text-align:center; color:#333; border:#61CAD0 1px solid; } .WdateDiv #dpTime .tB{ border-right:0px; } .WdateDiv #dpTime .tE{ border-left:0; border-right:0; } .WdateDiv #dpTime .tm{ width:7px; border-left:0; border-right:0; } .WdateDiv #dpTime #dpTimeUp{ height:10px; width:13px; border:0px; background:url(img.gif) no-repeat -32px -16px; } .WdateDiv #dpTime #dpTimeDown{ height:10px; width:13px; border:0px; background:url(img.gif) no-repeat -48px -16px; } .WdateDiv #dpQS { float:left; margin-right:3px; margin-top:3px; background:url(img.gif) no-repeat 0px -16px; width:20px; height:20px; cursor:pointer; } .WdateDiv #dpControl { text-align:right; margin-top:3px; } .WdateDiv .dpButton{ height:20px; width:45px; margin-top:2px; border:#38B1B9 1px solid; background-color:#CFEBEE; color:#08575B; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/busuanzi.pure.mini.js ================================================ var bszCaller,bszTag;!function(){var c,d,e,a=!1,b=[];ready=function(c){return a||"interactive"===document.readyState||"complete"===document.readyState?c.call(document):b.push(function(){return c.call(this)}),this},d=function(){for(var a=0,c=b.length;c>a;a++)b[a].apply(document);b=[]},e=function(){a||(a=!0,d.call(window),document.removeEventListener?document.removeEventListener("DOMContentLoaded",e,!1):document.attachEvent&&(document.detachEvent("onreadystatechange",e),window==window.top&&(clearInterval(c),c=null)))},document.addEventListener?document.addEventListener("DOMContentLoaded",e,!1):document.attachEvent&&(document.attachEvent("onreadystatechange",function(){/loaded|complete/.test(document.readyState)&&e()}),window==window.top&&(c=setInterval(function(){try{a||document.documentElement.doScroll("left")}catch(b){return}e()},5)))}(),bszCaller={fetch:function(a,b){var c="BusuanziCallback_"+Math.floor(1099511627776*Math.random());window[c]=this.evalCall(b),a=a.replace("=BusuanziCallback","="+c),scriptTag=document.createElement("SCRIPT"),scriptTag.type="text/javascript",scriptTag.defer=!0,scriptTag.src=a,document.getElementsByTagName("HEAD")[0].appendChild(scriptTag)},evalCall:function(a){return function(b){ready(function(){try{a(b),scriptTag.parentElement.removeChild(scriptTag)}catch(c){bszTag.hides()}})}}},bszCaller.fetch("//busuanzi.ibruce.info/busuanzi?jsonpCallback=BusuanziCallback",function(a){bszTag.texts(a),bszTag.shows()}),bszTag={bszs:["site_pv","page_pv","site_uv"],texts:function(a){this.bszs.map(function(b){var c=document.getElementById("busuanzi_value_"+b);c&&(c.innerHTML=a[b])})},hides:function(){this.bszs.map(function(a){var b=document.getElementById("busuanzi_container_"+a);b&&(b.style.display="none")})},shows:function(){this.bszs.map(function(a){var b=document.getElementById("busuanzi_container_"+a);b&&(b.style.display="inline")})}}; ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/changyan.js ================================================ (function() { if (window.changyan !== undefined || window.cyan !== undefined) { return; } var createNs = function() { if (window.changyan !== undefined) { return; } else { window.changyan = {}; window.changyan.api = {}; window.changyan.api.config = function(conf) { window.changyan.api.tmpIsvPageConfig = conf; }; window.changyan.api.ready = function(fn) { window.changyan.api.tmpHandles = window.changyan.api.tmpHandles || []; window.changyan.api.tmpHandles.push(fn); }; window.changyan.ready = function(fn) { if (window.changyan.rendered) { fn && fn(); } else { window.changyan.tmpHandles = window.changyan.tmpHandles || []; window.changyan.tmpHandles.push(fn); } } } }; var createMobileNs = function() { if (window.cyan) { return; } window.cyan = {}; window.cyan.api = {}; window.cyan.api.ready = function(fn) { window.cyan.api.tmpHandles = window.cyan.api.tmpHandles || []; window.cyan.api.tmpHandles.push(fn); }; }; var loadVersionJs = function() { var loadJs = function(src, fun) { var head = document.getElementsByTagName('head')[0] || document.head || document.documentElement; var script = document.createElement('script'); script.setAttribute('type', 'text/javascript'); script.setAttribute('charset', 'UTF-8'); script.setAttribute('src', src); if (typeof fun === 'function') { if (window.attachEvent) { script.onreadystatechange = function() { var r = script.readyState; if (r === 'loaded' || r === 'complete') { script.onreadystatechange = null; fun(); } }; } else { script.onload = fun; } } head.appendChild(script); }; var ver = + new Date() + window.Math.random().toFixed(16); var url = 'https://changyan.itc.cn/upload/version-v4.js?' + ver; loadJs(url); }; createNs(); createMobileNs(); loadVersionJs(); }()); ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/datatables/Chinese.json ================================================ { "sProcessing": "   处理中...", "sLengthMenu": "显示 _MENU_ 条", "sZeroRecords": "没有找到匹配的记录", "sInfo": "显示 _START_ 到 _END_ ,共 _TOTAL_ 条", "sInfoEmpty": "没有数据", "sInfoFiltered": "(从 _MAX_ 条中过滤)", "sInfoPostFix": "", "sSearch": "从所有数据中检索:", "sUrl": "", "sEmptyTable": "没有数据", "sLoadingRecords": "载入中...", "sInfoThousands": ",", "oPaginate": { "sFirst": "首页", "sPrevious": "上一页", "sNext": "下一页", "sLast": "末页" }, "oAria": { "sSortAscending": ": 以升序排列此列", "sSortDescending": ": 以降序排列此列" } } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/css/font-awesome-ie7.css ================================================ /*! * Font Awesome 3.2.1 * the iconic font designed for Bootstrap * ------------------------------------------------------------------------------ * The full suite of pictographic icons, examples, and documentation can be * found at http://fontawesome.io. Stay up to date on Twitter at * http://twitter.com/fontawesome. * * License * ------------------------------------------------------------------------------ * - The Font Awesome font is licensed under SIL OFL 1.1 - * http://scripts.sil.org/OFL * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - * http://opensource.org/licenses/mit-license.html * - Font Awesome documentation licensed under CC BY 3.0 - * http://creativecommons.org/licenses/by/3.0/ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: * "Font Awesome by Dave Gandy - http://fontawesome.io" * * Author - Dave Gandy * ------------------------------------------------------------------------------ * Email: dave@fontawesome.io * Twitter: http://twitter.com/davegandy * Work: Lead Product Designer @ Kyruus - http://kyruus.com */ .icon-large { font-size: 1.3333333333333333em; margin-top: -4px; padding-top: 3px; margin-bottom: -4px; padding-bottom: 3px; vertical-align: middle; } .nav [class^="icon-"], .nav [class*=" icon-"] { vertical-align: inherit; margin-top: -4px; padding-top: 3px; margin-bottom: -4px; padding-bottom: 3px; } .nav [class^="icon-"].icon-large, .nav [class*=" icon-"].icon-large { vertical-align: -25%; } .nav-pills [class^="icon-"].icon-large, .nav-tabs [class^="icon-"].icon-large, .nav-pills [class*=" icon-"].icon-large, .nav-tabs [class*=" icon-"].icon-large { line-height: .75em; margin-top: -7px; padding-top: 5px; margin-bottom: -5px; padding-bottom: 4px; } .btn [class^="icon-"].pull-left, .btn [class*=" icon-"].pull-left, .btn [class^="icon-"].pull-right, .btn [class*=" icon-"].pull-right { vertical-align: inherit; } .btn [class^="icon-"].icon-large, .btn [class*=" icon-"].icon-large { margin-top: -0.5em; } a [class^="icon-"], a [class*=" icon-"] { cursor: pointer; } .icon-glass { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-music { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-search { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-envelope-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-heart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-star { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-star-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-user { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-film { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-th-large { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-th { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-th-list { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-ok { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-remove { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-zoom-in { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-zoom-out { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-power-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-signal { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-cog { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-gear { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-home { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-file-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-time { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-road { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-download-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-upload { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-inbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-play-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-repeat { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-rotate-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-refresh { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-list-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-lock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-flag { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-headphones { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-volume-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-volume-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-volume-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-qrcode { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-barcode { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-tag { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-tags { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-book { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-bookmark { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-print { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-camera { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-font { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-bold { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-italic { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-text-height { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-text-width { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-align-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-align-center { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-align-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-align-justify { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-list { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-indent-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-indent-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-facetime-video { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-picture { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-pencil { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-map-marker { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-adjust { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-tint { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-edit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-share { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-check { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-move { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-step-backward { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-fast-backward { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-backward { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-play { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-pause { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-stop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-forward { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-fast-forward { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-step-forward { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-eject { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-chevron-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-chevron-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-plus-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-minus-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-remove-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-ok-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-question-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-info-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-screenshot { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-remove-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-ok-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-ban-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-arrow-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-arrow-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-arrow-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-arrow-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-share-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-mail-forward { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-resize-full { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-resize-small { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-minus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-asterisk { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-exclamation-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-gift { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-leaf { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-fire { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-eye-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-eye-close { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-warning-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-plane { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-calendar { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-random { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-comment { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-magnet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-chevron-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-chevron-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-retweet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-shopping-cart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-folder-close { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-folder-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-resize-vertical { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-resize-horizontal { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-bar-chart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-twitter-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-facebook-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-camera-retro { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-key { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-cogs { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-gears { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-comments { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-thumbs-up-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-thumbs-down-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-star-half { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-heart-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-signout { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-linkedin-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-pushpin { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-external-link { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-signin { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-trophy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-github-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-upload-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-lemon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-phone { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-check-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-unchecked { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-bookmark-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-phone-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-twitter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-facebook { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-github { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-unlock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-credit-card { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-rss { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-hdd { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-bullhorn { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-bell { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-certificate { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-hand-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-hand-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-hand-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-hand-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-circle-arrow-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-circle-arrow-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-circle-arrow-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-circle-arrow-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-globe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-wrench { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-tasks { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-filter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-briefcase { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-fullscreen { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-group { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-link { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-beaker { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-cut { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-copy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-paper-clip { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-paperclip { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-save { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-sign-blank { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-reorder { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-list-ul { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-list-ol { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-strikethrough { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-underline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-table { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-magic { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-truck { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-pinterest { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-pinterest-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-google-plus-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-google-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-money { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-caret-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-caret-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-caret-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-caret-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-columns { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-sort { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-sort-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-sort-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-envelope { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-linkedin { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-undo { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-rotate-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-legal { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-dashboard { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-comment-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-comments-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-bolt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-sitemap { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-umbrella { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-paste { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-lightbulb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-exchange { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-cloud-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-cloud-upload { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-user-md { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-stethoscope { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-suitcase { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-bell-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-coffee { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-food { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-file-text-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-building { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-hospital { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-ambulance { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-medkit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-fighter-jet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-beer { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-h-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-plus-sign-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-double-angle-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-double-angle-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-double-angle-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-double-angle-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-angle-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-angle-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-angle-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-angle-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-desktop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-laptop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-tablet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-mobile-phone { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-circle-blank { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-quote-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-quote-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-mail-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-github-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-folder-close-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-folder-open-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-expand-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-collapse-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-smile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-frown { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-meh { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-gamepad { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-keyboard { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-flag-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-flag-checkered { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-terminal { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-code { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-reply-all { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-mail-reply-all { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-star-half-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-star-half-full { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-location-arrow { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-crop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-code-fork { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-unlink { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-question { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-info { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-exclamation { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-superscript { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-subscript { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-eraser { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-puzzle-piece { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-microphone { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-microphone-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-shield { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-calendar-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-fire-extinguisher { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-rocket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-maxcdn { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-chevron-sign-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-chevron-sign-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-chevron-sign-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-chevron-sign-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-html5 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-css3 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-anchor { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-unlock-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-bullseye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-ellipsis-horizontal { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-ellipsis-vertical { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-rss-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-play-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-ticket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-minus-sign-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-check-minus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-level-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-level-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-check-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-edit-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-external-link-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-share-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-compass { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-collapse { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-collapse-top { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-expand { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-eur { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-euro { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-gbp { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-usd { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-dollar { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-inr { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-rupee { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-jpy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-yen { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-cny { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-renminbi { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-krw { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-won { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-btc { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-bitcoin { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-file { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-file-text { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-sort-by-alphabet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-sort-by-alphabet-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-sort-by-attributes { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-sort-by-attributes-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-sort-by-order { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-sort-by-order-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-thumbs-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-thumbs-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-youtube-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-youtube { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-xing { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-xing-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-youtube-play { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-dropbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-stackexchange { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-instagram { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-flickr { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-adn { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-bitbucket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-bitbucket-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-tumblr { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-tumblr-sign { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-long-arrow-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-long-arrow-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-long-arrow-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-long-arrow-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-apple { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-windows { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-android { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-linux { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-dribbble { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-skype { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-foursquare { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-trello { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-female { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-male { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-gittip { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-sun { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-moon { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-archive { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-bug { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-vk { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-weibo { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } .icon-renren { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ''); } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/css/font-awesome.css ================================================ /*! * Font Awesome 3.2.1 * the iconic font designed for Bootstrap * ------------------------------------------------------------------------------ * The full suite of pictographic icons, examples, and documentation can be * found at http://fontawesome.io. Stay up to date on Twitter at * http://twitter.com/fontawesome. * * License * ------------------------------------------------------------------------------ * - The Font Awesome font is licensed under SIL OFL 1.1 - * http://scripts.sil.org/OFL * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - * http://opensource.org/licenses/mit-license.html * - Font Awesome documentation licensed under CC BY 3.0 - * http://creativecommons.org/licenses/by/3.0/ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: * "Font Awesome by Dave Gandy - http://fontawesome.io" * * Author - Dave Gandy * ------------------------------------------------------------------------------ * Email: dave@fontawesome.io * Twitter: http://twitter.com/davegandy * Work: Lead Product Designer @ Kyruus - http://kyruus.com */ /* FONT PATH * -------------------------- */ @font-face { font-family: 'FontAwesome'; src: url('../font/fontawesome-webfont.eot?v=3.2.1'); src: url('../font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'), url('../font/fontawesome-webfont.woff?v=3.2.1') format('woff'), url('../font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'), url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg'); font-weight: normal; font-style: normal; } /* FONT AWESOME CORE * -------------------------- */ [class^="icon-"], [class*=" icon-"] { font-family: FontAwesome; font-weight: normal; font-style: normal; text-decoration: inherit; -webkit-font-smoothing: antialiased; *margin-right: .3em; } [class^="icon-"]:before, [class*=" icon-"]:before { text-decoration: inherit; display: inline-block; speak: none; } /* makes the font 33% larger relative to the icon container */ .icon-large:before { vertical-align: -10%; font-size: 1.3333333333333333em; } /* makes sure icons active on rollover in links */ a [class^="icon-"], a [class*=" icon-"] { display: inline; } /* increased font size for icon-large */ [class^="icon-"].icon-fixed-width, [class*=" icon-"].icon-fixed-width { display: inline-block; width: 1.1428571428571428em; text-align: right; padding-right: 0.2857142857142857em; } [class^="icon-"].icon-fixed-width.icon-large, [class*=" icon-"].icon-fixed-width.icon-large { width: 1.4285714285714286em; } .icons-ul { margin-left: 2.142857142857143em; list-style-type: none; } .icons-ul > li { position: relative; } .icons-ul .icon-li { position: absolute; left: -2.142857142857143em; width: 2.142857142857143em; text-align: center; line-height: inherit; } [class^="icon-"].hide, [class*=" icon-"].hide { display: none; } .icon-muted { color: #eeeeee; } .icon-light { color: #ffffff; } .icon-dark { color: #333333; } .icon-border { border: solid 1px #eeeeee; padding: .2em .25em .15em; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .icon-2x { font-size: 2em; } .icon-2x.icon-border { border-width: 2px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .icon-3x { font-size: 3em; } .icon-3x.icon-border { border-width: 3px; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .icon-4x { font-size: 4em; } .icon-4x.icon-border { border-width: 4px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .icon-5x { font-size: 5em; } .icon-5x.icon-border { border-width: 5px; -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; } .pull-right { float: right; } .pull-left { float: left; } [class^="icon-"].pull-left, [class*=" icon-"].pull-left { margin-right: .3em; } [class^="icon-"].pull-right, [class*=" icon-"].pull-right { margin-left: .3em; } /* BOOTSTRAP SPECIFIC CLASSES * -------------------------- */ /* Bootstrap 2.0 sprites.less reset */ [class^="icon-"], [class*=" icon-"] { display: inline; width: auto; height: auto; line-height: normal; vertical-align: baseline; background-image: none; background-position: 0% 0%; background-repeat: repeat; margin-top: 0; } /* more sprites.less reset */ .icon-white, .nav-pills > .active > a > [class^="icon-"], .nav-pills > .active > a > [class*=" icon-"], .nav-list > .active > a > [class^="icon-"], .nav-list > .active > a > [class*=" icon-"], .navbar-inverse .nav > .active > a > [class^="icon-"], .navbar-inverse .nav > .active > a > [class*=" icon-"], .dropdown-menu > li > a:hover > [class^="icon-"], .dropdown-menu > li > a:hover > [class*=" icon-"], .dropdown-menu > .active > a > [class^="icon-"], .dropdown-menu > .active > a > [class*=" icon-"], .dropdown-submenu:hover > a > [class^="icon-"], .dropdown-submenu:hover > a > [class*=" icon-"] { background-image: none; } /* keeps Bootstrap styles with and without icons the same */ .btn [class^="icon-"].icon-large, .nav [class^="icon-"].icon-large, .btn [class*=" icon-"].icon-large, .nav [class*=" icon-"].icon-large { line-height: .9em; } .btn [class^="icon-"].icon-spin, .nav [class^="icon-"].icon-spin, .btn [class*=" icon-"].icon-spin, .nav [class*=" icon-"].icon-spin { display: inline-block; } .nav-tabs [class^="icon-"], .nav-pills [class^="icon-"], .nav-tabs [class*=" icon-"], .nav-pills [class*=" icon-"], .nav-tabs [class^="icon-"].icon-large, .nav-pills [class^="icon-"].icon-large, .nav-tabs [class*=" icon-"].icon-large, .nav-pills [class*=" icon-"].icon-large { line-height: .9em; } .btn [class^="icon-"].pull-left.icon-2x, .btn [class*=" icon-"].pull-left.icon-2x, .btn [class^="icon-"].pull-right.icon-2x, .btn [class*=" icon-"].pull-right.icon-2x { margin-top: .18em; } .btn [class^="icon-"].icon-spin.icon-large, .btn [class*=" icon-"].icon-spin.icon-large { line-height: .8em; } .btn.btn-small [class^="icon-"].pull-left.icon-2x, .btn.btn-small [class*=" icon-"].pull-left.icon-2x, .btn.btn-small [class^="icon-"].pull-right.icon-2x, .btn.btn-small [class*=" icon-"].pull-right.icon-2x { margin-top: .25em; } .btn.btn-large [class^="icon-"], .btn.btn-large [class*=" icon-"] { margin-top: 0; } .btn.btn-large [class^="icon-"].pull-left.icon-2x, .btn.btn-large [class*=" icon-"].pull-left.icon-2x, .btn.btn-large [class^="icon-"].pull-right.icon-2x, .btn.btn-large [class*=" icon-"].pull-right.icon-2x { margin-top: .05em; } .btn.btn-large [class^="icon-"].pull-left.icon-2x, .btn.btn-large [class*=" icon-"].pull-left.icon-2x { margin-right: .2em; } .btn.btn-large [class^="icon-"].pull-right.icon-2x, .btn.btn-large [class*=" icon-"].pull-right.icon-2x { margin-left: .2em; } /* Fixes alignment in nav lists */ .nav-list [class^="icon-"], .nav-list [class*=" icon-"] { line-height: inherit; } /* EXTRAS * -------------------------- */ /* Stacked and layered icon */ .icon-stack { position: relative; display: inline-block; width: 2em; height: 2em; line-height: 2em; vertical-align: -35%; } .icon-stack [class^="icon-"], .icon-stack [class*=" icon-"] { display: block; text-align: center; position: absolute; width: 100%; height: 100%; font-size: 1em; line-height: inherit; *line-height: 2em; } .icon-stack .icon-stack-base { font-size: 2em; *line-height: 1em; } /* Animated rotating icon */ .icon-spin { display: inline-block; -moz-animation: spin 2s infinite linear; -o-animation: spin 2s infinite linear; -webkit-animation: spin 2s infinite linear; animation: spin 2s infinite linear; } /* Prevent stack and spinners from being taken inline when inside a link */ a .icon-stack, a .icon-spin { display: inline-block; text-decoration: none; } @-moz-keyframes spin { 0% { -moz-transform: rotate(0deg); } 100% { -moz-transform: rotate(359deg); } } @-webkit-keyframes spin { 0% { -webkit-transform: rotate(0deg); } 100% { -webkit-transform: rotate(359deg); } } @-o-keyframes spin { 0% { -o-transform: rotate(0deg); } 100% { -o-transform: rotate(359deg); } } @-ms-keyframes spin { 0% { -ms-transform: rotate(0deg); } 100% { -ms-transform: rotate(359deg); } } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(359deg); } } /* Icon rotations and mirroring */ .icon-rotate-90:before { -webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); -ms-transform: rotate(90deg); -o-transform: rotate(90deg); transform: rotate(90deg); filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); } .icon-rotate-180:before { -webkit-transform: rotate(180deg); -moz-transform: rotate(180deg); -ms-transform: rotate(180deg); -o-transform: rotate(180deg); transform: rotate(180deg); filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); } .icon-rotate-270:before { -webkit-transform: rotate(270deg); -moz-transform: rotate(270deg); -ms-transform: rotate(270deg); -o-transform: rotate(270deg); transform: rotate(270deg); filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); } .icon-flip-horizontal:before { -webkit-transform: scale(-1, 1); -moz-transform: scale(-1, 1); -ms-transform: scale(-1, 1); -o-transform: scale(-1, 1); transform: scale(-1, 1); } .icon-flip-vertical:before { -webkit-transform: scale(1, -1); -moz-transform: scale(1, -1); -ms-transform: scale(1, -1); -o-transform: scale(1, -1); transform: scale(1, -1); } /* ensure rotation occurs inside anchor tags */ a .icon-rotate-90:before, a .icon-rotate-180:before, a .icon-rotate-270:before, a .icon-flip-horizontal:before, a .icon-flip-vertical:before { display: inline-block; } /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ .icon-glass:before { content: "\f000"; } .icon-music:before { content: "\f001"; } .icon-search:before { content: "\f002"; } .icon-envelope-alt:before { content: "\f003"; } .icon-heart:before { content: "\f004"; } .icon-star:before { content: "\f005"; } .icon-star-empty:before { content: "\f006"; } .icon-user:before { content: "\f007"; } .icon-film:before { content: "\f008"; } .icon-th-large:before { content: "\f009"; } .icon-th:before { content: "\f00a"; } .icon-th-list:before { content: "\f00b"; } .icon-ok:before { content: "\f00c"; } .icon-remove:before { content: "\f00d"; } .icon-zoom-in:before { content: "\f00e"; } .icon-zoom-out:before { content: "\f010"; } .icon-power-off:before, .icon-off:before { content: "\f011"; } .icon-signal:before { content: "\f012"; } .icon-gear:before, .icon-cog:before { content: "\f013"; } .icon-trash:before { content: "\f014"; } .icon-home:before { content: "\f015"; } .icon-file-alt:before { content: "\f016"; } .icon-time:before { content: "\f017"; } .icon-road:before { content: "\f018"; } .icon-download-alt:before { content: "\f019"; } .icon-download:before { content: "\f01a"; } .icon-upload:before { content: "\f01b"; } .icon-inbox:before { content: "\f01c"; } .icon-play-circle:before { content: "\f01d"; } .icon-rotate-right:before, .icon-repeat:before { content: "\f01e"; } .icon-refresh:before { content: "\f021"; } .icon-list-alt:before { content: "\f022"; } .icon-lock:before { content: "\f023"; } .icon-flag:before { content: "\f024"; } .icon-headphones:before { content: "\f025"; } .icon-volume-off:before { content: "\f026"; } .icon-volume-down:before { content: "\f027"; } .icon-volume-up:before { content: "\f028"; } .icon-qrcode:before { content: "\f029"; } .icon-barcode:before { content: "\f02a"; } .icon-tag:before { content: "\f02b"; } .icon-tags:before { content: "\f02c"; } .icon-book:before { content: "\f02d"; } .icon-bookmark:before { content: "\f02e"; } .icon-print:before { content: "\f02f"; } .icon-camera:before { content: "\f030"; } .icon-font:before { content: "\f031"; } .icon-bold:before { content: "\f032"; } .icon-italic:before { content: "\f033"; } .icon-text-height:before { content: "\f034"; } .icon-text-width:before { content: "\f035"; } .icon-align-left:before { content: "\f036"; } .icon-align-center:before { content: "\f037"; } .icon-align-right:before { content: "\f038"; } .icon-align-justify:before { content: "\f039"; } .icon-list:before { content: "\f03a"; } .icon-indent-left:before { content: "\f03b"; } .icon-indent-right:before { content: "\f03c"; } .icon-facetime-video:before { content: "\f03d"; } .icon-picture:before { content: "\f03e"; } .icon-pencil:before { content: "\f040"; } .icon-map-marker:before { content: "\f041"; } .icon-adjust:before { content: "\f042"; } .icon-tint:before { content: "\f043"; } .icon-edit:before { content: "\f044"; } .icon-share:before { content: "\f045"; } .icon-check:before { content: "\f046"; } .icon-move:before { content: "\f047"; } .icon-step-backward:before { content: "\f048"; } .icon-fast-backward:before { content: "\f049"; } .icon-backward:before { content: "\f04a"; } .icon-play:before { content: "\f04b"; } .icon-pause:before { content: "\f04c"; } .icon-stop:before { content: "\f04d"; } .icon-forward:before { content: "\f04e"; } .icon-fast-forward:before { content: "\f050"; } .icon-step-forward:before { content: "\f051"; } .icon-eject:before { content: "\f052"; } .icon-chevron-left:before { content: "\f053"; } .icon-chevron-right:before { content: "\f054"; } .icon-plus-sign:before { content: "\f055"; } .icon-minus-sign:before { content: "\f056"; } .icon-remove-sign:before { content: "\f057"; } .icon-ok-sign:before { content: "\f058"; } .icon-question-sign:before { content: "\f059"; } .icon-info-sign:before { content: "\f05a"; } .icon-screenshot:before { content: "\f05b"; } .icon-remove-circle:before { content: "\f05c"; } .icon-ok-circle:before { content: "\f05d"; } .icon-ban-circle:before { content: "\f05e"; } .icon-arrow-left:before { content: "\f060"; } .icon-arrow-right:before { content: "\f061"; } .icon-arrow-up:before { content: "\f062"; } .icon-arrow-down:before { content: "\f063"; } .icon-mail-forward:before, .icon-share-alt:before { content: "\f064"; } .icon-resize-full:before { content: "\f065"; } .icon-resize-small:before { content: "\f066"; } .icon-plus:before { content: "\f067"; } .icon-minus:before { content: "\f068"; } .icon-asterisk:before { content: "\f069"; } .icon-exclamation-sign:before { content: "\f06a"; } .icon-gift:before { content: "\f06b"; } .icon-leaf:before { content: "\f06c"; } .icon-fire:before { content: "\f06d"; } .icon-eye-open:before { content: "\f06e"; } .icon-eye-close:before { content: "\f070"; } .icon-warning-sign:before { content: "\f071"; } .icon-plane:before { content: "\f072"; } .icon-calendar:before { content: "\f073"; } .icon-random:before { content: "\f074"; } .icon-comment:before { content: "\f075"; } .icon-magnet:before { content: "\f076"; } .icon-chevron-up:before { content: "\f077"; } .icon-chevron-down:before { content: "\f078"; } .icon-retweet:before { content: "\f079"; } .icon-shopping-cart:before { content: "\f07a"; } .icon-folder-close:before { content: "\f07b"; } .icon-folder-open:before { content: "\f07c"; } .icon-resize-vertical:before { content: "\f07d"; } .icon-resize-horizontal:before { content: "\f07e"; } .icon-bar-chart:before { content: "\f080"; } .icon-twitter-sign:before { content: "\f081"; } .icon-facebook-sign:before { content: "\f082"; } .icon-camera-retro:before { content: "\f083"; } .icon-key:before { content: "\f084"; } .icon-gears:before, .icon-cogs:before { content: "\f085"; } .icon-comments:before { content: "\f086"; } .icon-thumbs-up-alt:before { content: "\f087"; } .icon-thumbs-down-alt:before { content: "\f088"; } .icon-star-half:before { content: "\f089"; } .icon-heart-empty:before { content: "\f08a"; } .icon-signout:before { content: "\f08b"; } .icon-linkedin-sign:before { content: "\f08c"; } .icon-pushpin:before { content: "\f08d"; } .icon-external-link:before { content: "\f08e"; } .icon-signin:before { content: "\f090"; } .icon-trophy:before { content: "\f091"; } .icon-github-sign:before { content: "\f092"; } .icon-upload-alt:before { content: "\f093"; } .icon-lemon:before { content: "\f094"; } .icon-phone:before { content: "\f095"; } .icon-unchecked:before, .icon-check-empty:before { content: "\f096"; } .icon-bookmark-empty:before { content: "\f097"; } .icon-phone-sign:before { content: "\f098"; } .icon-twitter:before { content: "\f099"; } .icon-facebook:before { content: "\f09a"; } .icon-github:before { content: "\f09b"; } .icon-unlock:before { content: "\f09c"; } .icon-credit-card:before { content: "\f09d"; } .icon-rss:before { content: "\f09e"; } .icon-hdd:before { content: "\f0a0"; } .icon-bullhorn:before { content: "\f0a1"; } .icon-bell:before { content: "\f0a2"; } .icon-certificate:before { content: "\f0a3"; } .icon-hand-right:before { content: "\f0a4"; } .icon-hand-left:before { content: "\f0a5"; } .icon-hand-up:before { content: "\f0a6"; } .icon-hand-down:before { content: "\f0a7"; } .icon-circle-arrow-left:before { content: "\f0a8"; } .icon-circle-arrow-right:before { content: "\f0a9"; } .icon-circle-arrow-up:before { content: "\f0aa"; } .icon-circle-arrow-down:before { content: "\f0ab"; } .icon-globe:before { content: "\f0ac"; } .icon-wrench:before { content: "\f0ad"; } .icon-tasks:before { content: "\f0ae"; } .icon-filter:before { content: "\f0b0"; } .icon-briefcase:before { content: "\f0b1"; } .icon-fullscreen:before { content: "\f0b2"; } .icon-group:before { content: "\f0c0"; } .icon-link:before { content: "\f0c1"; } .icon-cloud:before { content: "\f0c2"; } .icon-beaker:before { content: "\f0c3"; } .icon-cut:before { content: "\f0c4"; } .icon-copy:before { content: "\f0c5"; } .icon-paperclip:before, .icon-paper-clip:before { content: "\f0c6"; } .icon-save:before { content: "\f0c7"; } .icon-sign-blank:before { content: "\f0c8"; } .icon-reorder:before { content: "\f0c9"; } .icon-list-ul:before { content: "\f0ca"; } .icon-list-ol:before { content: "\f0cb"; } .icon-strikethrough:before { content: "\f0cc"; } .icon-underline:before { content: "\f0cd"; } .icon-table:before { content: "\f0ce"; } .icon-magic:before { content: "\f0d0"; } .icon-truck:before { content: "\f0d1"; } .icon-pinterest:before { content: "\f0d2"; } .icon-pinterest-sign:before { content: "\f0d3"; } .icon-google-plus-sign:before { content: "\f0d4"; } .icon-google-plus:before { content: "\f0d5"; } .icon-money:before { content: "\f0d6"; } .icon-caret-down:before { content: "\f0d7"; } .icon-caret-up:before { content: "\f0d8"; } .icon-caret-left:before { content: "\f0d9"; } .icon-caret-right:before { content: "\f0da"; } .icon-columns:before { content: "\f0db"; } .icon-sort:before { content: "\f0dc"; } .icon-sort-down:before { content: "\f0dd"; } .icon-sort-up:before { content: "\f0de"; } .icon-envelope:before { content: "\f0e0"; } .icon-linkedin:before { content: "\f0e1"; } .icon-rotate-left:before, .icon-undo:before { content: "\f0e2"; } .icon-legal:before { content: "\f0e3"; } .icon-dashboard:before { content: "\f0e4"; } .icon-comment-alt:before { content: "\f0e5"; } .icon-comments-alt:before { content: "\f0e6"; } .icon-bolt:before { content: "\f0e7"; } .icon-sitemap:before { content: "\f0e8"; } .icon-umbrella:before { content: "\f0e9"; } .icon-paste:before { content: "\f0ea"; } .icon-lightbulb:before { content: "\f0eb"; } .icon-exchange:before { content: "\f0ec"; } .icon-cloud-download:before { content: "\f0ed"; } .icon-cloud-upload:before { content: "\f0ee"; } .icon-user-md:before { content: "\f0f0"; } .icon-stethoscope:before { content: "\f0f1"; } .icon-suitcase:before { content: "\f0f2"; } .icon-bell-alt:before { content: "\f0f3"; } .icon-coffee:before { content: "\f0f4"; } .icon-food:before { content: "\f0f5"; } .icon-file-text-alt:before { content: "\f0f6"; } .icon-building:before { content: "\f0f7"; } .icon-hospital:before { content: "\f0f8"; } .icon-ambulance:before { content: "\f0f9"; } .icon-medkit:before { content: "\f0fa"; } .icon-fighter-jet:before { content: "\f0fb"; } .icon-beer:before { content: "\f0fc"; } .icon-h-sign:before { content: "\f0fd"; } .icon-plus-sign-alt:before { content: "\f0fe"; } .icon-double-angle-left:before { content: "\f100"; } .icon-double-angle-right:before { content: "\f101"; } .icon-double-angle-up:before { content: "\f102"; } .icon-double-angle-down:before { content: "\f103"; } .icon-angle-left:before { content: "\f104"; } .icon-angle-right:before { content: "\f105"; } .icon-angle-up:before { content: "\f106"; } .icon-angle-down:before { content: "\f107"; } .icon-desktop:before { content: "\f108"; } .icon-laptop:before { content: "\f109"; } .icon-tablet:before { content: "\f10a"; } .icon-mobile-phone:before { content: "\f10b"; } .icon-circle-blank:before { content: "\f10c"; } .icon-quote-left:before { content: "\f10d"; } .icon-quote-right:before { content: "\f10e"; } .icon-spinner:before { content: "\f110"; } .icon-circle:before { content: "\f111"; } .icon-mail-reply:before, .icon-reply:before { content: "\f112"; } .icon-github-alt:before { content: "\f113"; } .icon-folder-close-alt:before { content: "\f114"; } .icon-folder-open-alt:before { content: "\f115"; } .icon-expand-alt:before { content: "\f116"; } .icon-collapse-alt:before { content: "\f117"; } .icon-smile:before { content: "\f118"; } .icon-frown:before { content: "\f119"; } .icon-meh:before { content: "\f11a"; } .icon-gamepad:before { content: "\f11b"; } .icon-keyboard:before { content: "\f11c"; } .icon-flag-alt:before { content: "\f11d"; } .icon-flag-checkered:before { content: "\f11e"; } .icon-terminal:before { content: "\f120"; } .icon-code:before { content: "\f121"; } .icon-reply-all:before { content: "\f122"; } .icon-mail-reply-all:before { content: "\f122"; } .icon-star-half-full:before, .icon-star-half-empty:before { content: "\f123"; } .icon-location-arrow:before { content: "\f124"; } .icon-crop:before { content: "\f125"; } .icon-code-fork:before { content: "\f126"; } .icon-unlink:before { content: "\f127"; } .icon-question:before { content: "\f128"; } .icon-info:before { content: "\f129"; } .icon-exclamation:before { content: "\f12a"; } .icon-superscript:before { content: "\f12b"; } .icon-subscript:before { content: "\f12c"; } .icon-eraser:before { content: "\f12d"; } .icon-puzzle-piece:before { content: "\f12e"; } .icon-microphone:before { content: "\f130"; } .icon-microphone-off:before { content: "\f131"; } .icon-shield:before { content: "\f132"; } .icon-calendar-empty:before { content: "\f133"; } .icon-fire-extinguisher:before { content: "\f134"; } .icon-rocket:before { content: "\f135"; } .icon-maxcdn:before { content: "\f136"; } .icon-chevron-sign-left:before { content: "\f137"; } .icon-chevron-sign-right:before { content: "\f138"; } .icon-chevron-sign-up:before { content: "\f139"; } .icon-chevron-sign-down:before { content: "\f13a"; } .icon-html5:before { content: "\f13b"; } .icon-css3:before { content: "\f13c"; } .icon-anchor:before { content: "\f13d"; } .icon-unlock-alt:before { content: "\f13e"; } .icon-bullseye:before { content: "\f140"; } .icon-ellipsis-horizontal:before { content: "\f141"; } .icon-ellipsis-vertical:before { content: "\f142"; } .icon-rss-sign:before { content: "\f143"; } .icon-play-sign:before { content: "\f144"; } .icon-ticket:before { content: "\f145"; } .icon-minus-sign-alt:before { content: "\f146"; } .icon-check-minus:before { content: "\f147"; } .icon-level-up:before { content: "\f148"; } .icon-level-down:before { content: "\f149"; } .icon-check-sign:before { content: "\f14a"; } .icon-edit-sign:before { content: "\f14b"; } .icon-external-link-sign:before { content: "\f14c"; } .icon-share-sign:before { content: "\f14d"; } .icon-compass:before { content: "\f14e"; } .icon-collapse:before { content: "\f150"; } .icon-collapse-top:before { content: "\f151"; } .icon-expand:before { content: "\f152"; } .icon-euro:before, .icon-eur:before { content: "\f153"; } .icon-gbp:before { content: "\f154"; } .icon-dollar:before, .icon-usd:before { content: "\f155"; } .icon-rupee:before, .icon-inr:before { content: "\f156"; } .icon-yen:before, .icon-jpy:before { content: "\f157"; } .icon-renminbi:before, .icon-cny:before { content: "\f158"; } .icon-won:before, .icon-krw:before { content: "\f159"; } .icon-bitcoin:before, .icon-btc:before { content: "\f15a"; } .icon-file:before { content: "\f15b"; } .icon-file-text:before { content: "\f15c"; } .icon-sort-by-alphabet:before { content: "\f15d"; } .icon-sort-by-alphabet-alt:before { content: "\f15e"; } .icon-sort-by-attributes:before { content: "\f160"; } .icon-sort-by-attributes-alt:before { content: "\f161"; } .icon-sort-by-order:before { content: "\f162"; } .icon-sort-by-order-alt:before { content: "\f163"; } .icon-thumbs-up:before { content: "\f164"; } .icon-thumbs-down:before { content: "\f165"; } .icon-youtube-sign:before { content: "\f166"; } .icon-youtube:before { content: "\f167"; } .icon-xing:before { content: "\f168"; } .icon-xing-sign:before { content: "\f169"; } .icon-youtube-play:before { content: "\f16a"; } .icon-dropbox:before { content: "\f16b"; } .icon-stackexchange:before { content: "\f16c"; } .icon-instagram:before { content: "\f16d"; } .icon-flickr:before { content: "\f16e"; } .icon-adn:before { content: "\f170"; } .icon-bitbucket:before { content: "\f171"; } .icon-bitbucket-sign:before { content: "\f172"; } .icon-tumblr:before { content: "\f173"; } .icon-tumblr-sign:before { content: "\f174"; } .icon-long-arrow-down:before { content: "\f175"; } .icon-long-arrow-up:before { content: "\f176"; } .icon-long-arrow-left:before { content: "\f177"; } .icon-long-arrow-right:before { content: "\f178"; } .icon-apple:before { content: "\f179"; } .icon-windows:before { content: "\f17a"; } .icon-android:before { content: "\f17b"; } .icon-linux:before { content: "\f17c"; } .icon-dribbble:before { content: "\f17d"; } .icon-skype:before { content: "\f17e"; } .icon-foursquare:before { content: "\f180"; } .icon-trello:before { content: "\f181"; } .icon-female:before { content: "\f182"; } .icon-male:before { content: "\f183"; } .icon-gittip:before { content: "\f184"; } .icon-sun:before { content: "\f185"; } .icon-moon:before { content: "\f186"; } .icon-archive:before { content: "\f187"; } .icon-bug:before { content: "\f188"; } .icon-vk:before { content: "\f189"; } .icon-weibo:before { content: "\f18a"; } .icon-renren:before { content: "\f18b"; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/bootstrap.less ================================================ /* BOOTSTRAP SPECIFIC CLASSES * -------------------------- */ /* Bootstrap 2.0 sprites.less reset */ [class^="icon-"], [class*=" icon-"] { display: inline; width: auto; height: auto; line-height: normal; vertical-align: baseline; background-image: none; background-position: 0% 0%; background-repeat: repeat; margin-top: 0; } /* more sprites.less reset */ .icon-white, .nav-pills > .active > a > [class^="icon-"], .nav-pills > .active > a > [class*=" icon-"], .nav-list > .active > a > [class^="icon-"], .nav-list > .active > a > [class*=" icon-"], .navbar-inverse .nav > .active > a > [class^="icon-"], .navbar-inverse .nav > .active > a > [class*=" icon-"], .dropdown-menu > li > a:hover > [class^="icon-"], .dropdown-menu > li > a:hover > [class*=" icon-"], .dropdown-menu > .active > a > [class^="icon-"], .dropdown-menu > .active > a > [class*=" icon-"], .dropdown-submenu:hover > a > [class^="icon-"], .dropdown-submenu:hover > a > [class*=" icon-"] { background-image: none; } /* keeps Bootstrap styles with and without icons the same */ .btn, .nav { [class^="icon-"], [class*=" icon-"] { // display: inline; &.icon-large { line-height: .9em; } &.icon-spin { display: inline-block; } } } .nav-tabs, .nav-pills { [class^="icon-"], [class*=" icon-"] { &, &.icon-large { line-height: .9em; } } } .btn { [class^="icon-"], [class*=" icon-"] { &.pull-left, &.pull-right { &.icon-2x { margin-top: .18em; } } &.icon-spin.icon-large { line-height: .8em; } } } .btn.btn-small { [class^="icon-"], [class*=" icon-"] { &.pull-left, &.pull-right { &.icon-2x { margin-top: .25em; } } } } .btn.btn-large { [class^="icon-"], [class*=" icon-"] { margin-top: 0; // overrides bootstrap default &.pull-left, &.pull-right { &.icon-2x { margin-top: .05em; } } &.pull-left.icon-2x { margin-right: .2em; } &.pull-right.icon-2x { margin-left: .2em; } } } /* Fixes alignment in nav lists */ .nav-list [class^="icon-"], .nav-list [class*=" icon-"] { line-height: inherit; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/core.less ================================================ /* FONT AWESOME CORE * -------------------------- */ [class^="icon-"], [class*=" icon-"] { .icon-FontAwesome(); } [class^="icon-"]:before, [class*=" icon-"]:before { text-decoration: inherit; display: inline-block; speak: none; } /* makes the font 33% larger relative to the icon container */ .icon-large:before { vertical-align: -10%; font-size: 4/3em; } /* makes sure icons active on rollover in links */ a { [class^="icon-"], [class*=" icon-"] { display: inline; } } /* increased font size for icon-large */ [class^="icon-"], [class*=" icon-"] { &.icon-fixed-width { display: inline-block; width: 16/14em; text-align: right; padding-right: 4/14em; &.icon-large { width: 20/14em; } } } .icons-ul { margin-left: @icons-li-width; list-style-type: none; > li { position: relative; } .icon-li { position: absolute; left: -@icons-li-width; width: @icons-li-width; text-align: center; line-height: inherit; } } // allows usage of the hide class directly on font awesome icons [class^="icon-"], [class*=" icon-"] { &.hide { display: none; } } .icon-muted { color: @iconMuted; } .icon-light { color: @iconLight; } .icon-dark { color: @iconDark; } // Icon Borders // ------------------------- .icon-border { border: solid 1px @borderColor; padding: .2em .25em .15em; .border-radius(3px); } // Icon Sizes // ------------------------- .icon-2x { font-size: 2em; &.icon-border { border-width: 2px; .border-radius(4px); } } .icon-3x { font-size: 3em; &.icon-border { border-width: 3px; .border-radius(5px); } } .icon-4x { font-size: 4em; &.icon-border { border-width: 4px; .border-radius(6px); } } .icon-5x { font-size: 5em; &.icon-border { border-width: 5px; .border-radius(7px); } } // Floats & Margins // ------------------------- // Quick floats .pull-right { float: right; } .pull-left { float: left; } [class^="icon-"], [class*=" icon-"] { &.pull-left { margin-right: .3em; } &.pull-right { margin-left: .3em; } } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/extras.less ================================================ /* EXTRAS * -------------------------- */ /* Stacked and layered icon */ .icon-stack(); /* Animated rotating icon */ .icon-spin { display: inline-block; -moz-animation: spin 2s infinite linear; -o-animation: spin 2s infinite linear; -webkit-animation: spin 2s infinite linear; animation: spin 2s infinite linear; } /* Prevent stack and spinners from being taken inline when inside a link */ a .icon-stack, a .icon-spin { display: inline-block; text-decoration: none; } @-moz-keyframes spin { 0% { -moz-transform: rotate(0deg); } 100% { -moz-transform: rotate(359deg); } } @-webkit-keyframes spin { 0% { -webkit-transform: rotate(0deg); } 100% { -webkit-transform: rotate(359deg); } } @-o-keyframes spin { 0% { -o-transform: rotate(0deg); } 100% { -o-transform: rotate(359deg); } } @-ms-keyframes spin { 0% { -ms-transform: rotate(0deg); } 100% { -ms-transform: rotate(359deg); } } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(359deg); } } /* Icon rotations and mirroring */ .icon-rotate-90:before { -webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); -ms-transform: rotate(90deg); -o-transform: rotate(90deg); transform: rotate(90deg); filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); } .icon-rotate-180:before { -webkit-transform: rotate(180deg); -moz-transform: rotate(180deg); -ms-transform: rotate(180deg); -o-transform: rotate(180deg); transform: rotate(180deg); filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); } .icon-rotate-270:before { -webkit-transform: rotate(270deg); -moz-transform: rotate(270deg); -ms-transform: rotate(270deg); -o-transform: rotate(270deg); transform: rotate(270deg); filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); } .icon-flip-horizontal:before { -webkit-transform: scale(-1, 1); -moz-transform: scale(-1, 1); -ms-transform: scale(-1, 1); -o-transform: scale(-1, 1); transform: scale(-1, 1); } .icon-flip-vertical:before { -webkit-transform: scale(1, -1); -moz-transform: scale(1, -1); -ms-transform: scale(1, -1); -o-transform: scale(1, -1); transform: scale(1, -1); } /* ensure rotation occurs inside anchor tags */ a { .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical { &:before { display: inline-block; } } } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/font-awesome-ie7.less ================================================ /*! * Font Awesome 3.2.1 * the iconic font designed for Bootstrap * ------------------------------------------------------------------------------ * The full suite of pictographic icons, examples, and documentation can be * found at http://fontawesome.io. Stay up to date on Twitter at * http://twitter.com/fontawesome. * * License * ------------------------------------------------------------------------------ * - The Font Awesome font is licensed under SIL OFL 1.1 - * http://scripts.sil.org/OFL * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - * http://opensource.org/licenses/mit-license.html * - Font Awesome documentation licensed under CC BY 3.0 - * http://creativecommons.org/licenses/by/3.0/ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: * "Font Awesome by Dave Gandy - http://fontawesome.io" * * Author - Dave Gandy * ------------------------------------------------------------------------------ * Email: dave@fontawesome.io * Twitter: http://twitter.com/davegandy * Work: Lead Product Designer @ Kyruus - http://kyruus.com */ .icon-large { font-size: 4/3em; margin-top: -4px; padding-top: 3px; margin-bottom: -4px; padding-bottom: 3px; vertical-align: middle; } .nav { [class^="icon-"], [class*=" icon-"] { vertical-align: inherit; margin-top: -4px; padding-top: 3px; margin-bottom: -4px; padding-bottom: 3px; &.icon-large { vertical-align: -25%; } } } .nav-pills, .nav-tabs { [class^="icon-"], [class*=" icon-"] { &.icon-large { line-height: .75em; margin-top: -7px; padding-top: 5px; margin-bottom: -5px; padding-bottom: 4px; } } } .btn { [class^="icon-"], [class*=" icon-"] { &.pull-left, &.pull-right { vertical-align: inherit; } &.icon-large { margin-top: -.5em; } } } a [class^="icon-"], a [class*=" icon-"] { cursor: pointer; } .ie7icon(@inner) { *zoom: ~"expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '@{inner}')"; } .icon-glass { .ie7icon(''); } .icon-music { .ie7icon(''); } .icon-search { .ie7icon(''); } .icon-envelope-alt { .ie7icon(''); } .icon-heart { .ie7icon(''); } .icon-star { .ie7icon(''); } .icon-star-empty { .ie7icon(''); } .icon-user { .ie7icon(''); } .icon-film { .ie7icon(''); } .icon-th-large { .ie7icon(''); } .icon-th { .ie7icon(''); } .icon-th-list { .ie7icon(''); } .icon-ok { .ie7icon(''); } .icon-remove { .ie7icon(''); } .icon-zoom-in { .ie7icon(''); } .icon-zoom-out { .ie7icon(''); } .icon-off { .ie7icon(''); } .icon-power-off { .ie7icon(''); } .icon-signal { .ie7icon(''); } .icon-cog { .ie7icon(''); } .icon-gear { .ie7icon(''); } .icon-trash { .ie7icon(''); } .icon-home { .ie7icon(''); } .icon-file-alt { .ie7icon(''); } .icon-time { .ie7icon(''); } .icon-road { .ie7icon(''); } .icon-download-alt { .ie7icon(''); } .icon-download { .ie7icon(''); } .icon-upload { .ie7icon(''); } .icon-inbox { .ie7icon(''); } .icon-play-circle { .ie7icon(''); } .icon-repeat { .ie7icon(''); } .icon-rotate-right { .ie7icon(''); } .icon-refresh { .ie7icon(''); } .icon-list-alt { .ie7icon(''); } .icon-lock { .ie7icon(''); } .icon-flag { .ie7icon(''); } .icon-headphones { .ie7icon(''); } .icon-volume-off { .ie7icon(''); } .icon-volume-down { .ie7icon(''); } .icon-volume-up { .ie7icon(''); } .icon-qrcode { .ie7icon(''); } .icon-barcode { .ie7icon(''); } .icon-tag { .ie7icon(''); } .icon-tags { .ie7icon(''); } .icon-book { .ie7icon(''); } .icon-bookmark { .ie7icon(''); } .icon-print { .ie7icon(''); } .icon-camera { .ie7icon(''); } .icon-font { .ie7icon(''); } .icon-bold { .ie7icon(''); } .icon-italic { .ie7icon(''); } .icon-text-height { .ie7icon(''); } .icon-text-width { .ie7icon(''); } .icon-align-left { .ie7icon(''); } .icon-align-center { .ie7icon(''); } .icon-align-right { .ie7icon(''); } .icon-align-justify { .ie7icon(''); } .icon-list { .ie7icon(''); } .icon-indent-left { .ie7icon(''); } .icon-indent-right { .ie7icon(''); } .icon-facetime-video { .ie7icon(''); } .icon-picture { .ie7icon(''); } .icon-pencil { .ie7icon(''); } .icon-map-marker { .ie7icon(''); } .icon-adjust { .ie7icon(''); } .icon-tint { .ie7icon(''); } .icon-edit { .ie7icon(''); } .icon-share { .ie7icon(''); } .icon-check { .ie7icon(''); } .icon-move { .ie7icon(''); } .icon-step-backward { .ie7icon(''); } .icon-fast-backward { .ie7icon(''); } .icon-backward { .ie7icon(''); } .icon-play { .ie7icon(''); } .icon-pause { .ie7icon(''); } .icon-stop { .ie7icon(''); } .icon-forward { .ie7icon(''); } .icon-fast-forward { .ie7icon(''); } .icon-step-forward { .ie7icon(''); } .icon-eject { .ie7icon(''); } .icon-chevron-left { .ie7icon(''); } .icon-chevron-right { .ie7icon(''); } .icon-plus-sign { .ie7icon(''); } .icon-minus-sign { .ie7icon(''); } .icon-remove-sign { .ie7icon(''); } .icon-ok-sign { .ie7icon(''); } .icon-question-sign { .ie7icon(''); } .icon-info-sign { .ie7icon(''); } .icon-screenshot { .ie7icon(''); } .icon-remove-circle { .ie7icon(''); } .icon-ok-circle { .ie7icon(''); } .icon-ban-circle { .ie7icon(''); } .icon-arrow-left { .ie7icon(''); } .icon-arrow-right { .ie7icon(''); } .icon-arrow-up { .ie7icon(''); } .icon-arrow-down { .ie7icon(''); } .icon-share-alt { .ie7icon(''); } .icon-mail-forward { .ie7icon(''); } .icon-resize-full { .ie7icon(''); } .icon-resize-small { .ie7icon(''); } .icon-plus { .ie7icon(''); } .icon-minus { .ie7icon(''); } .icon-asterisk { .ie7icon(''); } .icon-exclamation-sign { .ie7icon(''); } .icon-gift { .ie7icon(''); } .icon-leaf { .ie7icon(''); } .icon-fire { .ie7icon(''); } .icon-eye-open { .ie7icon(''); } .icon-eye-close { .ie7icon(''); } .icon-warning-sign { .ie7icon(''); } .icon-plane { .ie7icon(''); } .icon-calendar { .ie7icon(''); } .icon-random { .ie7icon(''); } .icon-comment { .ie7icon(''); } .icon-magnet { .ie7icon(''); } .icon-chevron-up { .ie7icon(''); } .icon-chevron-down { .ie7icon(''); } .icon-retweet { .ie7icon(''); } .icon-shopping-cart { .ie7icon(''); } .icon-folder-close { .ie7icon(''); } .icon-folder-open { .ie7icon(''); } .icon-resize-vertical { .ie7icon(''); } .icon-resize-horizontal { .ie7icon(''); } .icon-bar-chart { .ie7icon(''); } .icon-twitter-sign { .ie7icon(''); } .icon-facebook-sign { .ie7icon(''); } .icon-camera-retro { .ie7icon(''); } .icon-key { .ie7icon(''); } .icon-cogs { .ie7icon(''); } .icon-gears { .ie7icon(''); } .icon-comments { .ie7icon(''); } .icon-thumbs-up-alt { .ie7icon(''); } .icon-thumbs-down-alt { .ie7icon(''); } .icon-star-half { .ie7icon(''); } .icon-heart-empty { .ie7icon(''); } .icon-signout { .ie7icon(''); } .icon-linkedin-sign { .ie7icon(''); } .icon-pushpin { .ie7icon(''); } .icon-external-link { .ie7icon(''); } .icon-signin { .ie7icon(''); } .icon-trophy { .ie7icon(''); } .icon-github-sign { .ie7icon(''); } .icon-upload-alt { .ie7icon(''); } .icon-lemon { .ie7icon(''); } .icon-phone { .ie7icon(''); } .icon-check-empty { .ie7icon(''); } .icon-unchecked { .ie7icon(''); } .icon-bookmark-empty { .ie7icon(''); } .icon-phone-sign { .ie7icon(''); } .icon-twitter { .ie7icon(''); } .icon-facebook { .ie7icon(''); } .icon-github { .ie7icon(''); } .icon-unlock { .ie7icon(''); } .icon-credit-card { .ie7icon(''); } .icon-rss { .ie7icon(''); } .icon-hdd { .ie7icon(''); } .icon-bullhorn { .ie7icon(''); } .icon-bell { .ie7icon(''); } .icon-certificate { .ie7icon(''); } .icon-hand-right { .ie7icon(''); } .icon-hand-left { .ie7icon(''); } .icon-hand-up { .ie7icon(''); } .icon-hand-down { .ie7icon(''); } .icon-circle-arrow-left { .ie7icon(''); } .icon-circle-arrow-right { .ie7icon(''); } .icon-circle-arrow-up { .ie7icon(''); } .icon-circle-arrow-down { .ie7icon(''); } .icon-globe { .ie7icon(''); } .icon-wrench { .ie7icon(''); } .icon-tasks { .ie7icon(''); } .icon-filter { .ie7icon(''); } .icon-briefcase { .ie7icon(''); } .icon-fullscreen { .ie7icon(''); } .icon-group { .ie7icon(''); } .icon-link { .ie7icon(''); } .icon-cloud { .ie7icon(''); } .icon-beaker { .ie7icon(''); } .icon-cut { .ie7icon(''); } .icon-copy { .ie7icon(''); } .icon-paper-clip { .ie7icon(''); } .icon-paperclip { .ie7icon(''); } .icon-save { .ie7icon(''); } .icon-sign-blank { .ie7icon(''); } .icon-reorder { .ie7icon(''); } .icon-list-ul { .ie7icon(''); } .icon-list-ol { .ie7icon(''); } .icon-strikethrough { .ie7icon(''); } .icon-underline { .ie7icon(''); } .icon-table { .ie7icon(''); } .icon-magic { .ie7icon(''); } .icon-truck { .ie7icon(''); } .icon-pinterest { .ie7icon(''); } .icon-pinterest-sign { .ie7icon(''); } .icon-google-plus-sign { .ie7icon(''); } .icon-google-plus { .ie7icon(''); } .icon-money { .ie7icon(''); } .icon-caret-down { .ie7icon(''); } .icon-caret-up { .ie7icon(''); } .icon-caret-left { .ie7icon(''); } .icon-caret-right { .ie7icon(''); } .icon-columns { .ie7icon(''); } .icon-sort { .ie7icon(''); } .icon-sort-down { .ie7icon(''); } .icon-sort-up { .ie7icon(''); } .icon-envelope { .ie7icon(''); } .icon-linkedin { .ie7icon(''); } .icon-undo { .ie7icon(''); } .icon-rotate-left { .ie7icon(''); } .icon-legal { .ie7icon(''); } .icon-dashboard { .ie7icon(''); } .icon-comment-alt { .ie7icon(''); } .icon-comments-alt { .ie7icon(''); } .icon-bolt { .ie7icon(''); } .icon-sitemap { .ie7icon(''); } .icon-umbrella { .ie7icon(''); } .icon-paste { .ie7icon(''); } .icon-lightbulb { .ie7icon(''); } .icon-exchange { .ie7icon(''); } .icon-cloud-download { .ie7icon(''); } .icon-cloud-upload { .ie7icon(''); } .icon-user-md { .ie7icon(''); } .icon-stethoscope { .ie7icon(''); } .icon-suitcase { .ie7icon(''); } .icon-bell-alt { .ie7icon(''); } .icon-coffee { .ie7icon(''); } .icon-food { .ie7icon(''); } .icon-file-text-alt { .ie7icon(''); } .icon-building { .ie7icon(''); } .icon-hospital { .ie7icon(''); } .icon-ambulance { .ie7icon(''); } .icon-medkit { .ie7icon(''); } .icon-fighter-jet { .ie7icon(''); } .icon-beer { .ie7icon(''); } .icon-h-sign { .ie7icon(''); } .icon-plus-sign-alt { .ie7icon(''); } .icon-double-angle-left { .ie7icon(''); } .icon-double-angle-right { .ie7icon(''); } .icon-double-angle-up { .ie7icon(''); } .icon-double-angle-down { .ie7icon(''); } .icon-angle-left { .ie7icon(''); } .icon-angle-right { .ie7icon(''); } .icon-angle-up { .ie7icon(''); } .icon-angle-down { .ie7icon(''); } .icon-desktop { .ie7icon(''); } .icon-laptop { .ie7icon(''); } .icon-tablet { .ie7icon(''); } .icon-mobile-phone { .ie7icon(''); } .icon-circle-blank { .ie7icon(''); } .icon-quote-left { .ie7icon(''); } .icon-quote-right { .ie7icon(''); } .icon-spinner { .ie7icon(''); } .icon-circle { .ie7icon(''); } .icon-reply { .ie7icon(''); } .icon-mail-reply { .ie7icon(''); } .icon-github-alt { .ie7icon(''); } .icon-folder-close-alt { .ie7icon(''); } .icon-folder-open-alt { .ie7icon(''); } .icon-expand-alt { .ie7icon(''); } .icon-collapse-alt { .ie7icon(''); } .icon-smile { .ie7icon(''); } .icon-frown { .ie7icon(''); } .icon-meh { .ie7icon(''); } .icon-gamepad { .ie7icon(''); } .icon-keyboard { .ie7icon(''); } .icon-flag-alt { .ie7icon(''); } .icon-flag-checkered { .ie7icon(''); } .icon-terminal { .ie7icon(''); } .icon-code { .ie7icon(''); } .icon-reply-all { .ie7icon(''); } .icon-mail-reply-all { .ie7icon(''); } .icon-star-half-empty { .ie7icon(''); } .icon-star-half-full { .ie7icon(''); } .icon-location-arrow { .ie7icon(''); } .icon-crop { .ie7icon(''); } .icon-code-fork { .ie7icon(''); } .icon-unlink { .ie7icon(''); } .icon-question { .ie7icon(''); } .icon-info { .ie7icon(''); } .icon-exclamation { .ie7icon(''); } .icon-superscript { .ie7icon(''); } .icon-subscript { .ie7icon(''); } .icon-eraser { .ie7icon(''); } .icon-puzzle-piece { .ie7icon(''); } .icon-microphone { .ie7icon(''); } .icon-microphone-off { .ie7icon(''); } .icon-shield { .ie7icon(''); } .icon-calendar-empty { .ie7icon(''); } .icon-fire-extinguisher { .ie7icon(''); } .icon-rocket { .ie7icon(''); } .icon-maxcdn { .ie7icon(''); } .icon-chevron-sign-left { .ie7icon(''); } .icon-chevron-sign-right { .ie7icon(''); } .icon-chevron-sign-up { .ie7icon(''); } .icon-chevron-sign-down { .ie7icon(''); } .icon-html5 { .ie7icon(''); } .icon-css3 { .ie7icon(''); } .icon-anchor { .ie7icon(''); } .icon-unlock-alt { .ie7icon(''); } .icon-bullseye { .ie7icon(''); } .icon-ellipsis-horizontal { .ie7icon(''); } .icon-ellipsis-vertical { .ie7icon(''); } .icon-rss-sign { .ie7icon(''); } .icon-play-sign { .ie7icon(''); } .icon-ticket { .ie7icon(''); } .icon-minus-sign-alt { .ie7icon(''); } .icon-check-minus { .ie7icon(''); } .icon-level-up { .ie7icon(''); } .icon-level-down { .ie7icon(''); } .icon-check-sign { .ie7icon(''); } .icon-edit-sign { .ie7icon(''); } .icon-external-link-sign { .ie7icon(''); } .icon-share-sign { .ie7icon(''); } .icon-compass { .ie7icon(''); } .icon-collapse { .ie7icon(''); } .icon-collapse-top { .ie7icon(''); } .icon-expand { .ie7icon(''); } .icon-eur { .ie7icon(''); } .icon-euro { .ie7icon(''); } .icon-gbp { .ie7icon(''); } .icon-usd { .ie7icon(''); } .icon-dollar { .ie7icon(''); } .icon-inr { .ie7icon(''); } .icon-rupee { .ie7icon(''); } .icon-jpy { .ie7icon(''); } .icon-yen { .ie7icon(''); } .icon-cny { .ie7icon(''); } .icon-renminbi { .ie7icon(''); } .icon-krw { .ie7icon(''); } .icon-won { .ie7icon(''); } .icon-btc { .ie7icon(''); } .icon-bitcoin { .ie7icon(''); } .icon-file { .ie7icon(''); } .icon-file-text { .ie7icon(''); } .icon-sort-by-alphabet { .ie7icon(''); } .icon-sort-by-alphabet-alt { .ie7icon(''); } .icon-sort-by-attributes { .ie7icon(''); } .icon-sort-by-attributes-alt { .ie7icon(''); } .icon-sort-by-order { .ie7icon(''); } .icon-sort-by-order-alt { .ie7icon(''); } .icon-thumbs-up { .ie7icon(''); } .icon-thumbs-down { .ie7icon(''); } .icon-youtube-sign { .ie7icon(''); } .icon-youtube { .ie7icon(''); } .icon-xing { .ie7icon(''); } .icon-xing-sign { .ie7icon(''); } .icon-youtube-play { .ie7icon(''); } .icon-dropbox { .ie7icon(''); } .icon-stackexchange { .ie7icon(''); } .icon-instagram { .ie7icon(''); } .icon-flickr { .ie7icon(''); } .icon-adn { .ie7icon(''); } .icon-bitbucket { .ie7icon(''); } .icon-bitbucket-sign { .ie7icon(''); } .icon-tumblr { .ie7icon(''); } .icon-tumblr-sign { .ie7icon(''); } .icon-long-arrow-down { .ie7icon(''); } .icon-long-arrow-up { .ie7icon(''); } .icon-long-arrow-left { .ie7icon(''); } .icon-long-arrow-right { .ie7icon(''); } .icon-apple { .ie7icon(''); } .icon-windows { .ie7icon(''); } .icon-android { .ie7icon(''); } .icon-linux { .ie7icon(''); } .icon-dribbble { .ie7icon(''); } .icon-skype { .ie7icon(''); } .icon-foursquare { .ie7icon(''); } .icon-trello { .ie7icon(''); } .icon-female { .ie7icon(''); } .icon-male { .ie7icon(''); } .icon-gittip { .ie7icon(''); } .icon-sun { .ie7icon(''); } .icon-moon { .ie7icon(''); } .icon-archive { .ie7icon(''); } .icon-bug { .ie7icon(''); } .icon-vk { .ie7icon(''); } .icon-weibo { .ie7icon(''); } .icon-renren { .ie7icon(''); } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/font-awesome.less ================================================ /*! * Font Awesome 3.2.1 * the iconic font designed for Bootstrap * ------------------------------------------------------------------------------ * The full suite of pictographic icons, examples, and documentation can be * found at http://fontawesome.io. Stay up to date on Twitter at * http://twitter.com/fontawesome. * * License * ------------------------------------------------------------------------------ * - The Font Awesome font is licensed under SIL OFL 1.1 - * http://scripts.sil.org/OFL * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - * http://opensource.org/licenses/mit-license.html * - Font Awesome documentation licensed under CC BY 3.0 - * http://creativecommons.org/licenses/by/3.0/ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: * "Font Awesome by Dave Gandy - http://fontawesome.io" * * Author - Dave Gandy * ------------------------------------------------------------------------------ * Email: dave@fontawesome.io * Twitter: http://twitter.com/davegandy * Work: Lead Product Designer @ Kyruus - http://kyruus.com */ @import "variables.less"; @import "mixins.less"; @import "path.less"; @import "core.less"; @import "bootstrap.less"; @import "extras.less"; @import "icons.less"; ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/icons.less ================================================ /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ .icon-glass:before { content: @glass; } .icon-music:before { content: @music; } .icon-search:before { content: @search; } .icon-envelope-alt:before { content: @envelope-alt; } .icon-heart:before { content: @heart; } .icon-star:before { content: @star; } .icon-star-empty:before { content: @star-empty; } .icon-user:before { content: @user; } .icon-film:before { content: @film; } .icon-th-large:before { content: @th-large; } .icon-th:before { content: @th; } .icon-th-list:before { content: @th-list; } .icon-ok:before { content: @ok; } .icon-remove:before { content: @remove; } .icon-zoom-in:before { content: @zoom-in; } .icon-zoom-out:before { content: @zoom-out; } .icon-power-off:before, .icon-off:before { content: @off; } .icon-signal:before { content: @signal; } .icon-gear:before, .icon-cog:before { content: @cog; } .icon-trash:before { content: @trash; } .icon-home:before { content: @home; } .icon-file-alt:before { content: @file-alt; } .icon-time:before { content: @time; } .icon-road:before { content: @road; } .icon-download-alt:before { content: @download-alt; } .icon-download:before { content: @download; } .icon-upload:before { content: @upload; } .icon-inbox:before { content: @inbox; } .icon-play-circle:before { content: @play-circle; } .icon-rotate-right:before, .icon-repeat:before { content: @repeat; } .icon-refresh:before { content: @refresh; } .icon-list-alt:before { content: @list-alt; } .icon-lock:before { content: @lock; } .icon-flag:before { content: @flag; } .icon-headphones:before { content: @headphones; } .icon-volume-off:before { content: @volume-off; } .icon-volume-down:before { content: @volume-down; } .icon-volume-up:before { content: @volume-up; } .icon-qrcode:before { content: @qrcode; } .icon-barcode:before { content: @barcode; } .icon-tag:before { content: @tag; } .icon-tags:before { content: @tags; } .icon-book:before { content: @book; } .icon-bookmark:before { content: @bookmark; } .icon-print:before { content: @print; } .icon-camera:before { content: @camera; } .icon-font:before { content: @font; } .icon-bold:before { content: @bold; } .icon-italic:before { content: @italic; } .icon-text-height:before { content: @text-height; } .icon-text-width:before { content: @text-width; } .icon-align-left:before { content: @align-left; } .icon-align-center:before { content: @align-center; } .icon-align-right:before { content: @align-right; } .icon-align-justify:before { content: @align-justify; } .icon-list:before { content: @list; } .icon-indent-left:before { content: @indent-left; } .icon-indent-right:before { content: @indent-right; } .icon-facetime-video:before { content: @facetime-video; } .icon-picture:before { content: @picture; } .icon-pencil:before { content: @pencil; } .icon-map-marker:before { content: @map-marker; } .icon-adjust:before { content: @adjust; } .icon-tint:before { content: @tint; } .icon-edit:before { content: @edit; } .icon-share:before { content: @share; } .icon-check:before { content: @check; } .icon-move:before { content: @move; } .icon-step-backward:before { content: @step-backward; } .icon-fast-backward:before { content: @fast-backward; } .icon-backward:before { content: @backward; } .icon-play:before { content: @play; } .icon-pause:before { content: @pause; } .icon-stop:before { content: @stop; } .icon-forward:before { content: @forward; } .icon-fast-forward:before { content: @fast-forward; } .icon-step-forward:before { content: @step-forward; } .icon-eject:before { content: @eject; } .icon-chevron-left:before { content: @chevron-left; } .icon-chevron-right:before { content: @chevron-right; } .icon-plus-sign:before { content: @plus-sign; } .icon-minus-sign:before { content: @minus-sign; } .icon-remove-sign:before { content: @remove-sign; } .icon-ok-sign:before { content: @ok-sign; } .icon-question-sign:before { content: @question-sign; } .icon-info-sign:before { content: @info-sign; } .icon-screenshot:before { content: @screenshot; } .icon-remove-circle:before { content: @remove-circle; } .icon-ok-circle:before { content: @ok-circle; } .icon-ban-circle:before { content: @ban-circle; } .icon-arrow-left:before { content: @arrow-left; } .icon-arrow-right:before { content: @arrow-right; } .icon-arrow-up:before { content: @arrow-up; } .icon-arrow-down:before { content: @arrow-down; } .icon-mail-forward:before, .icon-share-alt:before { content: @share-alt; } .icon-resize-full:before { content: @resize-full; } .icon-resize-small:before { content: @resize-small; } .icon-plus:before { content: @plus; } .icon-minus:before { content: @minus; } .icon-asterisk:before { content: @asterisk; } .icon-exclamation-sign:before { content: @exclamation-sign; } .icon-gift:before { content: @gift; } .icon-leaf:before { content: @leaf; } .icon-fire:before { content: @fire; } .icon-eye-open:before { content: @eye-open; } .icon-eye-close:before { content: @eye-close; } .icon-warning-sign:before { content: @warning-sign; } .icon-plane:before { content: @plane; } .icon-calendar:before { content: @calendar; } .icon-random:before { content: @random; } .icon-comment:before { content: @comment; } .icon-magnet:before { content: @magnet; } .icon-chevron-up:before { content: @chevron-up; } .icon-chevron-down:before { content: @chevron-down; } .icon-retweet:before { content: @retweet; } .icon-shopping-cart:before { content: @shopping-cart; } .icon-folder-close:before { content: @folder-close; } .icon-folder-open:before { content: @folder-open; } .icon-resize-vertical:before { content: @resize-vertical; } .icon-resize-horizontal:before { content: @resize-horizontal; } .icon-bar-chart:before { content: @bar-chart; } .icon-twitter-sign:before { content: @twitter-sign; } .icon-facebook-sign:before { content: @facebook-sign; } .icon-camera-retro:before { content: @camera-retro; } .icon-key:before { content: @key; } .icon-gears:before, .icon-cogs:before { content: @cogs; } .icon-comments:before { content: @comments; } .icon-thumbs-up-alt:before { content: @thumbs-up-alt; } .icon-thumbs-down-alt:before { content: @thumbs-down-alt; } .icon-star-half:before { content: @star-half; } .icon-heart-empty:before { content: @heart-empty; } .icon-signout:before { content: @signout; } .icon-linkedin-sign:before { content: @linkedin-sign; } .icon-pushpin:before { content: @pushpin; } .icon-external-link:before { content: @external-link; } .icon-signin:before { content: @signin; } .icon-trophy:before { content: @trophy; } .icon-github-sign:before { content: @github-sign; } .icon-upload-alt:before { content: @upload-alt; } .icon-lemon:before { content: @lemon; } .icon-phone:before { content: @phone; } .icon-unchecked:before, .icon-check-empty:before { content: @check-empty; } .icon-bookmark-empty:before { content: @bookmark-empty; } .icon-phone-sign:before { content: @phone-sign; } .icon-twitter:before { content: @twitter; } .icon-facebook:before { content: @facebook; } .icon-github:before { content: @github; } .icon-unlock:before { content: @unlock; } .icon-credit-card:before { content: @credit-card; } .icon-rss:before { content: @rss; } .icon-hdd:before { content: @hdd; } .icon-bullhorn:before { content: @bullhorn; } .icon-bell:before { content: @bell; } .icon-certificate:before { content: @certificate; } .icon-hand-right:before { content: @hand-right; } .icon-hand-left:before { content: @hand-left; } .icon-hand-up:before { content: @hand-up; } .icon-hand-down:before { content: @hand-down; } .icon-circle-arrow-left:before { content: @circle-arrow-left; } .icon-circle-arrow-right:before { content: @circle-arrow-right; } .icon-circle-arrow-up:before { content: @circle-arrow-up; } .icon-circle-arrow-down:before { content: @circle-arrow-down; } .icon-globe:before { content: @globe; } .icon-wrench:before { content: @wrench; } .icon-tasks:before { content: @tasks; } .icon-filter:before { content: @filter; } .icon-briefcase:before { content: @briefcase; } .icon-fullscreen:before { content: @fullscreen; } .icon-group:before { content: @group; } .icon-link:before { content: @link; } .icon-cloud:before { content: @cloud; } .icon-beaker:before { content: @beaker; } .icon-cut:before { content: @cut; } .icon-copy:before { content: @copy; } .icon-paperclip:before, .icon-paper-clip:before { content: @paper-clip; } .icon-save:before { content: @save; } .icon-sign-blank:before { content: @sign-blank; } .icon-reorder:before { content: @reorder; } .icon-list-ul:before { content: @list-ul; } .icon-list-ol:before { content: @list-ol; } .icon-strikethrough:before { content: @strikethrough; } .icon-underline:before { content: @underline; } .icon-table:before { content: @table; } .icon-magic:before { content: @magic; } .icon-truck:before { content: @truck; } .icon-pinterest:before { content: @pinterest; } .icon-pinterest-sign:before { content: @pinterest-sign; } .icon-google-plus-sign:before { content: @google-plus-sign; } .icon-google-plus:before { content: @google-plus; } .icon-money:before { content: @money; } .icon-caret-down:before { content: @caret-down; } .icon-caret-up:before { content: @caret-up; } .icon-caret-left:before { content: @caret-left; } .icon-caret-right:before { content: @caret-right; } .icon-columns:before { content: @columns; } .icon-sort:before { content: @sort; } .icon-sort-down:before { content: @sort-down; } .icon-sort-up:before { content: @sort-up; } .icon-envelope:before { content: @envelope; } .icon-linkedin:before { content: @linkedin; } .icon-rotate-left:before, .icon-undo:before { content: @undo; } .icon-legal:before { content: @legal; } .icon-dashboard:before { content: @dashboard; } .icon-comment-alt:before { content: @comment-alt; } .icon-comments-alt:before { content: @comments-alt; } .icon-bolt:before { content: @bolt; } .icon-sitemap:before { content: @sitemap; } .icon-umbrella:before { content: @umbrella; } .icon-paste:before { content: @paste; } .icon-lightbulb:before { content: @lightbulb; } .icon-exchange:before { content: @exchange; } .icon-cloud-download:before { content: @cloud-download; } .icon-cloud-upload:before { content: @cloud-upload; } .icon-user-md:before { content: @user-md; } .icon-stethoscope:before { content: @stethoscope; } .icon-suitcase:before { content: @suitcase; } .icon-bell-alt:before { content: @bell-alt; } .icon-coffee:before { content: @coffee; } .icon-food:before { content: @food; } .icon-file-text-alt:before { content: @file-text-alt; } .icon-building:before { content: @building; } .icon-hospital:before { content: @hospital; } .icon-ambulance:before { content: @ambulance; } .icon-medkit:before { content: @medkit; } .icon-fighter-jet:before { content: @fighter-jet; } .icon-beer:before { content: @beer; } .icon-h-sign:before { content: @h-sign; } .icon-plus-sign-alt:before { content: @plus-sign-alt; } .icon-double-angle-left:before { content: @double-angle-left; } .icon-double-angle-right:before { content: @double-angle-right; } .icon-double-angle-up:before { content: @double-angle-up; } .icon-double-angle-down:before { content: @double-angle-down; } .icon-angle-left:before { content: @angle-left; } .icon-angle-right:before { content: @angle-right; } .icon-angle-up:before { content: @angle-up; } .icon-angle-down:before { content: @angle-down; } .icon-desktop:before { content: @desktop; } .icon-laptop:before { content: @laptop; } .icon-tablet:before { content: @tablet; } .icon-mobile-phone:before { content: @mobile-phone; } .icon-circle-blank:before { content: @circle-blank; } .icon-quote-left:before { content: @quote-left; } .icon-quote-right:before { content: @quote-right; } .icon-spinner:before { content: @spinner; } .icon-circle:before { content: @circle; } .icon-mail-reply:before, .icon-reply:before { content: @reply; } .icon-github-alt:before { content: @github-alt; } .icon-folder-close-alt:before { content: @folder-close-alt; } .icon-folder-open-alt:before { content: @folder-open-alt; } .icon-expand-alt:before { content: @expand-alt; } .icon-collapse-alt:before { content: @collapse-alt; } .icon-smile:before { content: @smile; } .icon-frown:before { content: @frown; } .icon-meh:before { content: @meh; } .icon-gamepad:before { content: @gamepad; } .icon-keyboard:before { content: @keyboard; } .icon-flag-alt:before { content: @flag-alt; } .icon-flag-checkered:before { content: @flag-checkered; } .icon-terminal:before { content: @terminal; } .icon-code:before { content: @code; } .icon-reply-all:before { content: @reply-all; } .icon-mail-reply-all:before { content: @mail-reply-all; } .icon-star-half-full:before, .icon-star-half-empty:before { content: @star-half-empty; } .icon-location-arrow:before { content: @location-arrow; } .icon-crop:before { content: @crop; } .icon-code-fork:before { content: @code-fork; } .icon-unlink:before { content: @unlink; } .icon-question:before { content: @question; } .icon-info:before { content: @info; } .icon-exclamation:before { content: @exclamation; } .icon-superscript:before { content: @superscript; } .icon-subscript:before { content: @subscript; } .icon-eraser:before { content: @eraser; } .icon-puzzle-piece:before { content: @puzzle-piece; } .icon-microphone:before { content: @microphone; } .icon-microphone-off:before { content: @microphone-off; } .icon-shield:before { content: @shield; } .icon-calendar-empty:before { content: @calendar-empty; } .icon-fire-extinguisher:before { content: @fire-extinguisher; } .icon-rocket:before { content: @rocket; } .icon-maxcdn:before { content: @maxcdn; } .icon-chevron-sign-left:before { content: @chevron-sign-left; } .icon-chevron-sign-right:before { content: @chevron-sign-right; } .icon-chevron-sign-up:before { content: @chevron-sign-up; } .icon-chevron-sign-down:before { content: @chevron-sign-down; } .icon-html5:before { content: @html5; } .icon-css3:before { content: @css3; } .icon-anchor:before { content: @anchor; } .icon-unlock-alt:before { content: @unlock-alt; } .icon-bullseye:before { content: @bullseye; } .icon-ellipsis-horizontal:before { content: @ellipsis-horizontal; } .icon-ellipsis-vertical:before { content: @ellipsis-vertical; } .icon-rss-sign:before { content: @rss-sign; } .icon-play-sign:before { content: @play-sign; } .icon-ticket:before { content: @ticket; } .icon-minus-sign-alt:before { content: @minus-sign-alt; } .icon-check-minus:before { content: @check-minus; } .icon-level-up:before { content: @level-up; } .icon-level-down:before { content: @level-down; } .icon-check-sign:before { content: @check-sign; } .icon-edit-sign:before { content: @edit-sign; } .icon-external-link-sign:before { content: @external-link-sign; } .icon-share-sign:before { content: @share-sign; } .icon-compass:before { content: @compass; } .icon-collapse:before { content: @collapse; } .icon-collapse-top:before { content: @collapse-top; } .icon-expand:before { content: @expand; } .icon-euro:before, .icon-eur:before { content: @eur; } .icon-gbp:before { content: @gbp; } .icon-dollar:before, .icon-usd:before { content: @usd; } .icon-rupee:before, .icon-inr:before { content: @inr; } .icon-yen:before, .icon-jpy:before { content: @jpy; } .icon-renminbi:before, .icon-cny:before { content: @cny; } .icon-won:before, .icon-krw:before { content: @krw; } .icon-bitcoin:before, .icon-btc:before { content: @btc; } .icon-file:before { content: @file; } .icon-file-text:before { content: @file-text; } .icon-sort-by-alphabet:before { content: @sort-by-alphabet; } .icon-sort-by-alphabet-alt:before { content: @sort-by-alphabet-alt; } .icon-sort-by-attributes:before { content: @sort-by-attributes; } .icon-sort-by-attributes-alt:before { content: @sort-by-attributes-alt; } .icon-sort-by-order:before { content: @sort-by-order; } .icon-sort-by-order-alt:before { content: @sort-by-order-alt; } .icon-thumbs-up:before { content: @thumbs-up; } .icon-thumbs-down:before { content: @thumbs-down; } .icon-youtube-sign:before { content: @youtube-sign; } .icon-youtube:before { content: @youtube; } .icon-xing:before { content: @xing; } .icon-xing-sign:before { content: @xing-sign; } .icon-youtube-play:before { content: @youtube-play; } .icon-dropbox:before { content: @dropbox; } .icon-stackexchange:before { content: @stackexchange; } .icon-instagram:before { content: @instagram; } .icon-flickr:before { content: @flickr; } .icon-adn:before { content: @adn; } .icon-bitbucket:before { content: @bitbucket; } .icon-bitbucket-sign:before { content: @bitbucket-sign; } .icon-tumblr:before { content: @tumblr; } .icon-tumblr-sign:before { content: @tumblr-sign; } .icon-long-arrow-down:before { content: @long-arrow-down; } .icon-long-arrow-up:before { content: @long-arrow-up; } .icon-long-arrow-left:before { content: @long-arrow-left; } .icon-long-arrow-right:before { content: @long-arrow-right; } .icon-apple:before { content: @apple; } .icon-windows:before { content: @windows; } .icon-android:before { content: @android; } .icon-linux:before { content: @linux; } .icon-dribbble:before { content: @dribbble; } .icon-skype:before { content: @skype; } .icon-foursquare:before { content: @foursquare; } .icon-trello:before { content: @trello; } .icon-female:before { content: @female; } .icon-male:before { content: @male; } .icon-gittip:before { content: @gittip; } .icon-sun:before { content: @sun; } .icon-moon:before { content: @moon; } .icon-archive:before { content: @archive; } .icon-bug:before { content: @bug; } .icon-vk:before { content: @vk; } .icon-weibo:before { content: @weibo; } .icon-renren:before { content: @renren; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/mixins.less ================================================ // Mixins // -------------------------- .icon(@icon) { .icon-FontAwesome(); content: @icon; } .icon-FontAwesome() { font-family: FontAwesome; font-weight: normal; font-style: normal; text-decoration: inherit; -webkit-font-smoothing: antialiased; *margin-right: .3em; // fixes ie7 issues } .border-radius(@radius) { -webkit-border-radius: @radius; -moz-border-radius: @radius; border-radius: @radius; } .icon-stack(@width: 2em, @height: 2em, @top-font-size: 1em, @base-font-size: 2em) { .icon-stack { position: relative; display: inline-block; width: @width; height: @height; line-height: @width; vertical-align: -35%; [class^="icon-"], [class*=" icon-"] { display: block; text-align: center; position: absolute; width: 100%; height: 100%; font-size: @top-font-size; line-height: inherit; *line-height: @height; } .icon-stack-base { font-size: @base-font-size; *line-height: @height / @base-font-size; } } } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/path.less ================================================ /* FONT PATH * -------------------------- */ @font-face { font-family: 'FontAwesome'; src: url('@{FontAwesomePath}/fontawesome-webfont.eot?v=@{FontAwesomeVersion}'); src: url('@{FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=@{FontAwesomeVersion}') format('embedded-opentype'), url('@{FontAwesomePath}/fontawesome-webfont.woff?v=@{FontAwesomeVersion}') format('woff'), url('@{FontAwesomePath}/fontawesome-webfont.ttf?v=@{FontAwesomeVersion}') format('truetype'), url('@{FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=@{FontAwesomeVersion}') format('svg'); // src: url('@{FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts font-weight: normal; font-style: normal; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/less/variables.less ================================================ // Variables // -------------------------- @FontAwesomePath: "../font"; //@FontAwesomePath: "//netdna.bootstrapcdn.com/font-awesome/3.2.1/font"; // for referencing Bootstrap CDN font files directly @FontAwesomeVersion: "3.2.1"; @borderColor: #eee; @iconMuted: #eee; @iconLight: #fff; @iconDark: #333; @icons-li-width: 30/14em; @glass: "\f000"; @music: "\f001"; @search: "\f002"; @envelope-alt: "\f003"; @heart: "\f004"; @star: "\f005"; @star-empty: "\f006"; @user: "\f007"; @film: "\f008"; @th-large: "\f009"; @th: "\f00a"; @th-list: "\f00b"; @ok: "\f00c"; @remove: "\f00d"; @zoom-in: "\f00e"; @zoom-out: "\f010"; @off: "\f011"; @signal: "\f012"; @cog: "\f013"; @trash: "\f014"; @home: "\f015"; @file-alt: "\f016"; @time: "\f017"; @road: "\f018"; @download-alt: "\f019"; @download: "\f01a"; @upload: "\f01b"; @inbox: "\f01c"; @play-circle: "\f01d"; @repeat: "\f01e"; @refresh: "\f021"; @list-alt: "\f022"; @lock: "\f023"; @flag: "\f024"; @headphones: "\f025"; @volume-off: "\f026"; @volume-down: "\f027"; @volume-up: "\f028"; @qrcode: "\f029"; @barcode: "\f02a"; @tag: "\f02b"; @tags: "\f02c"; @book: "\f02d"; @bookmark: "\f02e"; @print: "\f02f"; @camera: "\f030"; @font: "\f031"; @bold: "\f032"; @italic: "\f033"; @text-height: "\f034"; @text-width: "\f035"; @align-left: "\f036"; @align-center: "\f037"; @align-right: "\f038"; @align-justify: "\f039"; @list: "\f03a"; @indent-left: "\f03b"; @indent-right: "\f03c"; @facetime-video: "\f03d"; @picture: "\f03e"; @pencil: "\f040"; @map-marker: "\f041"; @adjust: "\f042"; @tint: "\f043"; @edit: "\f044"; @share: "\f045"; @check: "\f046"; @move: "\f047"; @step-backward: "\f048"; @fast-backward: "\f049"; @backward: "\f04a"; @play: "\f04b"; @pause: "\f04c"; @stop: "\f04d"; @forward: "\f04e"; @fast-forward: "\f050"; @step-forward: "\f051"; @eject: "\f052"; @chevron-left: "\f053"; @chevron-right: "\f054"; @plus-sign: "\f055"; @minus-sign: "\f056"; @remove-sign: "\f057"; @ok-sign: "\f058"; @question-sign: "\f059"; @info-sign: "\f05a"; @screenshot: "\f05b"; @remove-circle: "\f05c"; @ok-circle: "\f05d"; @ban-circle: "\f05e"; @arrow-left: "\f060"; @arrow-right: "\f061"; @arrow-up: "\f062"; @arrow-down: "\f063"; @share-alt: "\f064"; @resize-full: "\f065"; @resize-small: "\f066"; @plus: "\f067"; @minus: "\f068"; @asterisk: "\f069"; @exclamation-sign: "\f06a"; @gift: "\f06b"; @leaf: "\f06c"; @fire: "\f06d"; @eye-open: "\f06e"; @eye-close: "\f070"; @warning-sign: "\f071"; @plane: "\f072"; @calendar: "\f073"; @random: "\f074"; @comment: "\f075"; @magnet: "\f076"; @chevron-up: "\f077"; @chevron-down: "\f078"; @retweet: "\f079"; @shopping-cart: "\f07a"; @folder-close: "\f07b"; @folder-open: "\f07c"; @resize-vertical: "\f07d"; @resize-horizontal: "\f07e"; @bar-chart: "\f080"; @twitter-sign: "\f081"; @facebook-sign: "\f082"; @camera-retro: "\f083"; @key: "\f084"; @cogs: "\f085"; @comments: "\f086"; @thumbs-up-alt: "\f087"; @thumbs-down-alt: "\f088"; @star-half: "\f089"; @heart-empty: "\f08a"; @signout: "\f08b"; @linkedin-sign: "\f08c"; @pushpin: "\f08d"; @external-link: "\f08e"; @signin: "\f090"; @trophy: "\f091"; @github-sign: "\f092"; @upload-alt: "\f093"; @lemon: "\f094"; @phone: "\f095"; @check-empty: "\f096"; @bookmark-empty: "\f097"; @phone-sign: "\f098"; @twitter: "\f099"; @facebook: "\f09a"; @github: "\f09b"; @unlock: "\f09c"; @credit-card: "\f09d"; @rss: "\f09e"; @hdd: "\f0a0"; @bullhorn: "\f0a1"; @bell: "\f0a2"; @certificate: "\f0a3"; @hand-right: "\f0a4"; @hand-left: "\f0a5"; @hand-up: "\f0a6"; @hand-down: "\f0a7"; @circle-arrow-left: "\f0a8"; @circle-arrow-right: "\f0a9"; @circle-arrow-up: "\f0aa"; @circle-arrow-down: "\f0ab"; @globe: "\f0ac"; @wrench: "\f0ad"; @tasks: "\f0ae"; @filter: "\f0b0"; @briefcase: "\f0b1"; @fullscreen: "\f0b2"; @group: "\f0c0"; @link: "\f0c1"; @cloud: "\f0c2"; @beaker: "\f0c3"; @cut: "\f0c4"; @copy: "\f0c5"; @paper-clip: "\f0c6"; @save: "\f0c7"; @sign-blank: "\f0c8"; @reorder: "\f0c9"; @list-ul: "\f0ca"; @list-ol: "\f0cb"; @strikethrough: "\f0cc"; @underline: "\f0cd"; @table: "\f0ce"; @magic: "\f0d0"; @truck: "\f0d1"; @pinterest: "\f0d2"; @pinterest-sign: "\f0d3"; @google-plus-sign: "\f0d4"; @google-plus: "\f0d5"; @money: "\f0d6"; @caret-down: "\f0d7"; @caret-up: "\f0d8"; @caret-left: "\f0d9"; @caret-right: "\f0da"; @columns: "\f0db"; @sort: "\f0dc"; @sort-down: "\f0dd"; @sort-up: "\f0de"; @envelope: "\f0e0"; @linkedin: "\f0e1"; @undo: "\f0e2"; @legal: "\f0e3"; @dashboard: "\f0e4"; @comment-alt: "\f0e5"; @comments-alt: "\f0e6"; @bolt: "\f0e7"; @sitemap: "\f0e8"; @umbrella: "\f0e9"; @paste: "\f0ea"; @lightbulb: "\f0eb"; @exchange: "\f0ec"; @cloud-download: "\f0ed"; @cloud-upload: "\f0ee"; @user-md: "\f0f0"; @stethoscope: "\f0f1"; @suitcase: "\f0f2"; @bell-alt: "\f0f3"; @coffee: "\f0f4"; @food: "\f0f5"; @file-text-alt: "\f0f6"; @building: "\f0f7"; @hospital: "\f0f8"; @ambulance: "\f0f9"; @medkit: "\f0fa"; @fighter-jet: "\f0fb"; @beer: "\f0fc"; @h-sign: "\f0fd"; @plus-sign-alt: "\f0fe"; @double-angle-left: "\f100"; @double-angle-right: "\f101"; @double-angle-up: "\f102"; @double-angle-down: "\f103"; @angle-left: "\f104"; @angle-right: "\f105"; @angle-up: "\f106"; @angle-down: "\f107"; @desktop: "\f108"; @laptop: "\f109"; @tablet: "\f10a"; @mobile-phone: "\f10b"; @circle-blank: "\f10c"; @quote-left: "\f10d"; @quote-right: "\f10e"; @spinner: "\f110"; @circle: "\f111"; @reply: "\f112"; @github-alt: "\f113"; @folder-close-alt: "\f114"; @folder-open-alt: "\f115"; @expand-alt: "\f116"; @collapse-alt: "\f117"; @smile: "\f118"; @frown: "\f119"; @meh: "\f11a"; @gamepad: "\f11b"; @keyboard: "\f11c"; @flag-alt: "\f11d"; @flag-checkered: "\f11e"; @terminal: "\f120"; @code: "\f121"; @reply-all: "\f122"; @mail-reply-all: "\f122"; @star-half-empty: "\f123"; @location-arrow: "\f124"; @crop: "\f125"; @code-fork: "\f126"; @unlink: "\f127"; @question: "\f128"; @info: "\f129"; @exclamation: "\f12a"; @superscript: "\f12b"; @subscript: "\f12c"; @eraser: "\f12d"; @puzzle-piece: "\f12e"; @microphone: "\f130"; @microphone-off: "\f131"; @shield: "\f132"; @calendar-empty: "\f133"; @fire-extinguisher: "\f134"; @rocket: "\f135"; @maxcdn: "\f136"; @chevron-sign-left: "\f137"; @chevron-sign-right: "\f138"; @chevron-sign-up: "\f139"; @chevron-sign-down: "\f13a"; @html5: "\f13b"; @css3: "\f13c"; @anchor: "\f13d"; @unlock-alt: "\f13e"; @bullseye: "\f140"; @ellipsis-horizontal: "\f141"; @ellipsis-vertical: "\f142"; @rss-sign: "\f143"; @play-sign: "\f144"; @ticket: "\f145"; @minus-sign-alt: "\f146"; @check-minus: "\f147"; @level-up: "\f148"; @level-down: "\f149"; @check-sign: "\f14a"; @edit-sign: "\f14b"; @external-link-sign: "\f14c"; @share-sign: "\f14d"; @compass: "\f14e"; @collapse: "\f150"; @collapse-top: "\f151"; @expand: "\f152"; @eur: "\f153"; @gbp: "\f154"; @usd: "\f155"; @inr: "\f156"; @jpy: "\f157"; @cny: "\f158"; @krw: "\f159"; @btc: "\f15a"; @file: "\f15b"; @file-text: "\f15c"; @sort-by-alphabet: "\f15d"; @sort-by-alphabet-alt: "\f15e"; @sort-by-attributes: "\f160"; @sort-by-attributes-alt: "\f161"; @sort-by-order: "\f162"; @sort-by-order-alt: "\f163"; @thumbs-up: "\f164"; @thumbs-down: "\f165"; @youtube-sign: "\f166"; @youtube: "\f167"; @xing: "\f168"; @xing-sign: "\f169"; @youtube-play: "\f16a"; @dropbox: "\f16b"; @stackexchange: "\f16c"; @instagram: "\f16d"; @flickr: "\f16e"; @adn: "\f170"; @bitbucket: "\f171"; @bitbucket-sign: "\f172"; @tumblr: "\f173"; @tumblr-sign: "\f174"; @long-arrow-down: "\f175"; @long-arrow-up: "\f176"; @long-arrow-left: "\f177"; @long-arrow-right: "\f178"; @apple: "\f179"; @windows: "\f17a"; @android: "\f17b"; @linux: "\f17c"; @dribbble: "\f17d"; @skype: "\f17e"; @foursquare: "\f180"; @trello: "\f181"; @female: "\f182"; @male: "\f183"; @gittip: "\f184"; @sun: "\f185"; @moon: "\f186"; @archive: "\f187"; @bug: "\f188"; @vk: "\f189"; @weibo: "\f18a"; @renren: "\f18b"; ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/_bootstrap.scss ================================================ /* BOOTSTRAP SPECIFIC CLASSES * -------------------------- */ /* Bootstrap 2.0 sprites.less reset */ [class^="icon-"], [class*=" icon-"] { display: inline; width: auto; height: auto; line-height: normal; vertical-align: baseline; background-image: none; background-position: 0% 0%; background-repeat: repeat; margin-top: 0; } /* more sprites.less reset */ .icon-white, .nav-pills > .active > a > [class^="icon-"], .nav-pills > .active > a > [class*=" icon-"], .nav-list > .active > a > [class^="icon-"], .nav-list > .active > a > [class*=" icon-"], .navbar-inverse .nav > .active > a > [class^="icon-"], .navbar-inverse .nav > .active > a > [class*=" icon-"], .dropdown-menu > li > a:hover > [class^="icon-"], .dropdown-menu > li > a:hover > [class*=" icon-"], .dropdown-menu > .active > a > [class^="icon-"], .dropdown-menu > .active > a > [class*=" icon-"], .dropdown-submenu:hover > a > [class^="icon-"], .dropdown-submenu:hover > a > [class*=" icon-"] { background-image: none; } /* keeps Bootstrap styles with and without icons the same */ .btn, .nav { [class^="icon-"], [class*=" icon-"] { // display: inline; &.icon-large { line-height: .9em; } &.icon-spin { display: inline-block; } } } .nav-tabs, .nav-pills { [class^="icon-"], [class*=" icon-"] { &, &.icon-large { line-height: .9em; } } } .btn { [class^="icon-"], [class*=" icon-"] { &.pull-left, &.pull-right { &.icon-2x { margin-top: .18em; } } &.icon-spin.icon-large { line-height: .8em; } } } .btn.btn-small { [class^="icon-"], [class*=" icon-"] { &.pull-left, &.pull-right { &.icon-2x { margin-top: .25em; } } } } .btn.btn-large { [class^="icon-"], [class*=" icon-"] { margin-top: 0; // overrides bootstrap default &.pull-left, &.pull-right { &.icon-2x { margin-top: .05em; } } &.pull-left.icon-2x { margin-right: .2em; } &.pull-right.icon-2x { margin-left: .2em; } } } /* Fixes alignment in nav lists */ .nav-list [class^="icon-"], .nav-list [class*=" icon-"] { line-height: inherit; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/_core.scss ================================================ /* FONT AWESOME CORE * -------------------------- */ [class^="icon-"], [class*=" icon-"] { @include icon-FontAwesome(); } [class^="icon-"]:before, [class*=" icon-"]:before { text-decoration: inherit; display: inline-block; speak: none; } /* makes the font 33% larger relative to the icon container */ .icon-large:before { vertical-align: -10%; font-size: (4em/3); } /* makes sure icons active on rollover in links */ a { [class^="icon-"], [class*=" icon-"] { display: inline; } } /* increased font size for icon-large */ [class^="icon-"], [class*=" icon-"] { &.icon-fixed-width { display: inline-block; width: (16em/14); text-align: right; padding-right: (4em/14); &.icon-large { width: (20em/14); } } } .icons-ul { margin-left: $icons-li-width; list-style-type: none; > li { position: relative; } .icon-li { position: absolute; left: -$icons-li-width; width: $icons-li-width; text-align: center; line-height: inherit; } } // allows usage of the hide class directly on font awesome icons [class^="icon-"], [class*=" icon-"] { &.hide { display: none; } } .icon-muted { color: $iconMuted; } .icon-light { color: $iconLight; } .icon-dark { color: $iconDark; } // Icon Borders // ------------------------- .icon-border { border: solid 1px $borderColor; padding: .2em .25em .15em; @include border-radius(3px); } // Icon Sizes // ------------------------- .icon-2x { font-size: 2em; &.icon-border { border-width: 2px; @include border-radius(4px); } } .icon-3x { font-size: 3em; &.icon-border { border-width: 3px; @include border-radius(5px); } } .icon-4x { font-size: 4em; &.icon-border { border-width: 4px; @include border-radius(6px); } } .icon-5x { font-size: 5em; &.icon-border { border-width: 5px; @include border-radius(7px); } } // Floats & Margins // ------------------------- // Quick floats .pull-right { float: right; } .pull-left { float: left; } [class^="icon-"], [class*=" icon-"] { &.pull-left { margin-right: .3em; } &.pull-right { margin-left: .3em; } } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/_extras.scss ================================================ /* EXTRAS * -------------------------- */ /* Stacked and layered icon */ @include icon-stack(); /* Animated rotating icon */ .icon-spin { display: inline-block; -moz-animation: spin 2s infinite linear; -o-animation: spin 2s infinite linear; -webkit-animation: spin 2s infinite linear; animation: spin 2s infinite linear; } /* Prevent stack and spinners from being taken inline when inside a link */ a .icon-stack, a .icon-spin { display: inline-block; text-decoration: none; } @-moz-keyframes spin { 0% { -moz-transform: rotate(0deg); } 100% { -moz-transform: rotate(359deg); } } @-webkit-keyframes spin { 0% { -webkit-transform: rotate(0deg); } 100% { -webkit-transform: rotate(359deg); } } @-o-keyframes spin { 0% { -o-transform: rotate(0deg); } 100% { -o-transform: rotate(359deg); } } @-ms-keyframes spin { 0% { -ms-transform: rotate(0deg); } 100% { -ms-transform: rotate(359deg); } } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(359deg); } } /* Icon rotations and mirroring */ .icon-rotate-90:before { -webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); -ms-transform: rotate(90deg); -o-transform: rotate(90deg); transform: rotate(90deg); filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); } .icon-rotate-180:before { -webkit-transform: rotate(180deg); -moz-transform: rotate(180deg); -ms-transform: rotate(180deg); -o-transform: rotate(180deg); transform: rotate(180deg); filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); } .icon-rotate-270:before { -webkit-transform: rotate(270deg); -moz-transform: rotate(270deg); -ms-transform: rotate(270deg); -o-transform: rotate(270deg); transform: rotate(270deg); filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); } .icon-flip-horizontal:before { -webkit-transform: scale(-1, 1); -moz-transform: scale(-1, 1); -ms-transform: scale(-1, 1); -o-transform: scale(-1, 1); transform: scale(-1, 1); } .icon-flip-vertical:before { -webkit-transform: scale(1, -1); -moz-transform: scale(1, -1); -ms-transform: scale(1, -1); -o-transform: scale(1, -1); transform: scale(1, -1); } /* ensure rotation occurs inside anchor tags */ a { .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical { &:before { display: inline-block; } } } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/_icons.scss ================================================ /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen * readers do not read off random characters that represent icons */ .icon-glass:before { content: $glass; } .icon-music:before { content: $music; } .icon-search:before { content: $search; } .icon-envelope-alt:before { content: $envelope-alt; } .icon-heart:before { content: $heart; } .icon-star:before { content: $star; } .icon-star-empty:before { content: $star-empty; } .icon-user:before { content: $user; } .icon-film:before { content: $film; } .icon-th-large:before { content: $th-large; } .icon-th:before { content: $th; } .icon-th-list:before { content: $th-list; } .icon-ok:before { content: $ok; } .icon-remove:before { content: $remove; } .icon-zoom-in:before { content: $zoom-in; } .icon-zoom-out:before { content: $zoom-out; } .icon-power-off:before, .icon-off:before { content: $off; } .icon-signal:before { content: $signal; } .icon-gear:before, .icon-cog:before { content: $cog; } .icon-trash:before { content: $trash; } .icon-home:before { content: $home; } .icon-file-alt:before { content: $file-alt; } .icon-time:before { content: $time; } .icon-road:before { content: $road; } .icon-download-alt:before { content: $download-alt; } .icon-download:before { content: $download; } .icon-upload:before { content: $upload; } .icon-inbox:before { content: $inbox; } .icon-play-circle:before { content: $play-circle; } .icon-rotate-right:before, .icon-repeat:before { content: $repeat; } .icon-refresh:before { content: $refresh; } .icon-list-alt:before { content: $list-alt; } .icon-lock:before { content: $lock; } .icon-flag:before { content: $flag; } .icon-headphones:before { content: $headphones; } .icon-volume-off:before { content: $volume-off; } .icon-volume-down:before { content: $volume-down; } .icon-volume-up:before { content: $volume-up; } .icon-qrcode:before { content: $qrcode; } .icon-barcode:before { content: $barcode; } .icon-tag:before { content: $tag; } .icon-tags:before { content: $tags; } .icon-book:before { content: $book; } .icon-bookmark:before { content: $bookmark; } .icon-print:before { content: $print; } .icon-camera:before { content: $camera; } .icon-font:before { content: $font; } .icon-bold:before { content: $bold; } .icon-italic:before { content: $italic; } .icon-text-height:before { content: $text-height; } .icon-text-width:before { content: $text-width; } .icon-align-left:before { content: $align-left; } .icon-align-center:before { content: $align-center; } .icon-align-right:before { content: $align-right; } .icon-align-justify:before { content: $align-justify; } .icon-list:before { content: $list; } .icon-indent-left:before { content: $indent-left; } .icon-indent-right:before { content: $indent-right; } .icon-facetime-video:before { content: $facetime-video; } .icon-picture:before { content: $picture; } .icon-pencil:before { content: $pencil; } .icon-map-marker:before { content: $map-marker; } .icon-adjust:before { content: $adjust; } .icon-tint:before { content: $tint; } .icon-edit:before { content: $edit; } .icon-share:before { content: $share; } .icon-check:before { content: $check; } .icon-move:before { content: $move; } .icon-step-backward:before { content: $step-backward; } .icon-fast-backward:before { content: $fast-backward; } .icon-backward:before { content: $backward; } .icon-play:before { content: $play; } .icon-pause:before { content: $pause; } .icon-stop:before { content: $stop; } .icon-forward:before { content: $forward; } .icon-fast-forward:before { content: $fast-forward; } .icon-step-forward:before { content: $step-forward; } .icon-eject:before { content: $eject; } .icon-chevron-left:before { content: $chevron-left; } .icon-chevron-right:before { content: $chevron-right; } .icon-plus-sign:before { content: $plus-sign; } .icon-minus-sign:before { content: $minus-sign; } .icon-remove-sign:before { content: $remove-sign; } .icon-ok-sign:before { content: $ok-sign; } .icon-question-sign:before { content: $question-sign; } .icon-info-sign:before { content: $info-sign; } .icon-screenshot:before { content: $screenshot; } .icon-remove-circle:before { content: $remove-circle; } .icon-ok-circle:before { content: $ok-circle; } .icon-ban-circle:before { content: $ban-circle; } .icon-arrow-left:before { content: $arrow-left; } .icon-arrow-right:before { content: $arrow-right; } .icon-arrow-up:before { content: $arrow-up; } .icon-arrow-down:before { content: $arrow-down; } .icon-mail-forward:before, .icon-share-alt:before { content: $share-alt; } .icon-resize-full:before { content: $resize-full; } .icon-resize-small:before { content: $resize-small; } .icon-plus:before { content: $plus; } .icon-minus:before { content: $minus; } .icon-asterisk:before { content: $asterisk; } .icon-exclamation-sign:before { content: $exclamation-sign; } .icon-gift:before { content: $gift; } .icon-leaf:before { content: $leaf; } .icon-fire:before { content: $fire; } .icon-eye-open:before { content: $eye-open; } .icon-eye-close:before { content: $eye-close; } .icon-warning-sign:before { content: $warning-sign; } .icon-plane:before { content: $plane; } .icon-calendar:before { content: $calendar; } .icon-random:before { content: $random; } .icon-comment:before { content: $comment; } .icon-magnet:before { content: $magnet; } .icon-chevron-up:before { content: $chevron-up; } .icon-chevron-down:before { content: $chevron-down; } .icon-retweet:before { content: $retweet; } .icon-shopping-cart:before { content: $shopping-cart; } .icon-folder-close:before { content: $folder-close; } .icon-folder-open:before { content: $folder-open; } .icon-resize-vertical:before { content: $resize-vertical; } .icon-resize-horizontal:before { content: $resize-horizontal; } .icon-bar-chart:before { content: $bar-chart; } .icon-twitter-sign:before { content: $twitter-sign; } .icon-facebook-sign:before { content: $facebook-sign; } .icon-camera-retro:before { content: $camera-retro; } .icon-key:before { content: $key; } .icon-gears:before, .icon-cogs:before { content: $cogs; } .icon-comments:before { content: $comments; } .icon-thumbs-up-alt:before { content: $thumbs-up-alt; } .icon-thumbs-down-alt:before { content: $thumbs-down-alt; } .icon-star-half:before { content: $star-half; } .icon-heart-empty:before { content: $heart-empty; } .icon-signout:before { content: $signout; } .icon-linkedin-sign:before { content: $linkedin-sign; } .icon-pushpin:before { content: $pushpin; } .icon-external-link:before { content: $external-link; } .icon-signin:before { content: $signin; } .icon-trophy:before { content: $trophy; } .icon-github-sign:before { content: $github-sign; } .icon-upload-alt:before { content: $upload-alt; } .icon-lemon:before { content: $lemon; } .icon-phone:before { content: $phone; } .icon-unchecked:before, .icon-check-empty:before { content: $check-empty; } .icon-bookmark-empty:before { content: $bookmark-empty; } .icon-phone-sign:before { content: $phone-sign; } .icon-twitter:before { content: $twitter; } .icon-facebook:before { content: $facebook; } .icon-github:before { content: $github; } .icon-unlock:before { content: $unlock; } .icon-credit-card:before { content: $credit-card; } .icon-rss:before { content: $rss; } .icon-hdd:before { content: $hdd; } .icon-bullhorn:before { content: $bullhorn; } .icon-bell:before { content: $bell; } .icon-certificate:before { content: $certificate; } .icon-hand-right:before { content: $hand-right; } .icon-hand-left:before { content: $hand-left; } .icon-hand-up:before { content: $hand-up; } .icon-hand-down:before { content: $hand-down; } .icon-circle-arrow-left:before { content: $circle-arrow-left; } .icon-circle-arrow-right:before { content: $circle-arrow-right; } .icon-circle-arrow-up:before { content: $circle-arrow-up; } .icon-circle-arrow-down:before { content: $circle-arrow-down; } .icon-globe:before { content: $globe; } .icon-wrench:before { content: $wrench; } .icon-tasks:before { content: $tasks; } .icon-filter:before { content: $filter; } .icon-briefcase:before { content: $briefcase; } .icon-fullscreen:before { content: $fullscreen; } .icon-group:before { content: $group; } .icon-link:before { content: $link; } .icon-cloud:before { content: $cloud; } .icon-beaker:before { content: $beaker; } .icon-cut:before { content: $cut; } .icon-copy:before { content: $copy; } .icon-paperclip:before, .icon-paper-clip:before { content: $paper-clip; } .icon-save:before { content: $save; } .icon-sign-blank:before { content: $sign-blank; } .icon-reorder:before { content: $reorder; } .icon-list-ul:before { content: $list-ul; } .icon-list-ol:before { content: $list-ol; } .icon-strikethrough:before { content: $strikethrough; } .icon-underline:before { content: $underline; } .icon-table:before { content: $table; } .icon-magic:before { content: $magic; } .icon-truck:before { content: $truck; } .icon-pinterest:before { content: $pinterest; } .icon-pinterest-sign:before { content: $pinterest-sign; } .icon-google-plus-sign:before { content: $google-plus-sign; } .icon-google-plus:before { content: $google-plus; } .icon-money:before { content: $money; } .icon-caret-down:before { content: $caret-down; } .icon-caret-up:before { content: $caret-up; } .icon-caret-left:before { content: $caret-left; } .icon-caret-right:before { content: $caret-right; } .icon-columns:before { content: $columns; } .icon-sort:before { content: $sort; } .icon-sort-down:before { content: $sort-down; } .icon-sort-up:before { content: $sort-up; } .icon-envelope:before { content: $envelope; } .icon-linkedin:before { content: $linkedin; } .icon-rotate-left:before, .icon-undo:before { content: $undo; } .icon-legal:before { content: $legal; } .icon-dashboard:before { content: $dashboard; } .icon-comment-alt:before { content: $comment-alt; } .icon-comments-alt:before { content: $comments-alt; } .icon-bolt:before { content: $bolt; } .icon-sitemap:before { content: $sitemap; } .icon-umbrella:before { content: $umbrella; } .icon-paste:before { content: $paste; } .icon-lightbulb:before { content: $lightbulb; } .icon-exchange:before { content: $exchange; } .icon-cloud-download:before { content: $cloud-download; } .icon-cloud-upload:before { content: $cloud-upload; } .icon-user-md:before { content: $user-md; } .icon-stethoscope:before { content: $stethoscope; } .icon-suitcase:before { content: $suitcase; } .icon-bell-alt:before { content: $bell-alt; } .icon-coffee:before { content: $coffee; } .icon-food:before { content: $food; } .icon-file-text-alt:before { content: $file-text-alt; } .icon-building:before { content: $building; } .icon-hospital:before { content: $hospital; } .icon-ambulance:before { content: $ambulance; } .icon-medkit:before { content: $medkit; } .icon-fighter-jet:before { content: $fighter-jet; } .icon-beer:before { content: $beer; } .icon-h-sign:before { content: $h-sign; } .icon-plus-sign-alt:before { content: $plus-sign-alt; } .icon-double-angle-left:before { content: $double-angle-left; } .icon-double-angle-right:before { content: $double-angle-right; } .icon-double-angle-up:before { content: $double-angle-up; } .icon-double-angle-down:before { content: $double-angle-down; } .icon-angle-left:before { content: $angle-left; } .icon-angle-right:before { content: $angle-right; } .icon-angle-up:before { content: $angle-up; } .icon-angle-down:before { content: $angle-down; } .icon-desktop:before { content: $desktop; } .icon-laptop:before { content: $laptop; } .icon-tablet:before { content: $tablet; } .icon-mobile-phone:before { content: $mobile-phone; } .icon-circle-blank:before { content: $circle-blank; } .icon-quote-left:before { content: $quote-left; } .icon-quote-right:before { content: $quote-right; } .icon-spinner:before { content: $spinner; } .icon-circle:before { content: $circle; } .icon-mail-reply:before, .icon-reply:before { content: $reply; } .icon-github-alt:before { content: $github-alt; } .icon-folder-close-alt:before { content: $folder-close-alt; } .icon-folder-open-alt:before { content: $folder-open-alt; } .icon-expand-alt:before { content: $expand-alt; } .icon-collapse-alt:before { content: $collapse-alt; } .icon-smile:before { content: $smile; } .icon-frown:before { content: $frown; } .icon-meh:before { content: $meh; } .icon-gamepad:before { content: $gamepad; } .icon-keyboard:before { content: $keyboard; } .icon-flag-alt:before { content: $flag-alt; } .icon-flag-checkered:before { content: $flag-checkered; } .icon-terminal:before { content: $terminal; } .icon-code:before { content: $code; } .icon-reply-all:before { content: $reply-all; } .icon-mail-reply-all:before { content: $mail-reply-all; } .icon-star-half-full:before, .icon-star-half-empty:before { content: $star-half-empty; } .icon-location-arrow:before { content: $location-arrow; } .icon-crop:before { content: $crop; } .icon-code-fork:before { content: $code-fork; } .icon-unlink:before { content: $unlink; } .icon-question:before { content: $question; } .icon-info:before { content: $info; } .icon-exclamation:before { content: $exclamation; } .icon-superscript:before { content: $superscript; } .icon-subscript:before { content: $subscript; } .icon-eraser:before { content: $eraser; } .icon-puzzle-piece:before { content: $puzzle-piece; } .icon-microphone:before { content: $microphone; } .icon-microphone-off:before { content: $microphone-off; } .icon-shield:before { content: $shield; } .icon-calendar-empty:before { content: $calendar-empty; } .icon-fire-extinguisher:before { content: $fire-extinguisher; } .icon-rocket:before { content: $rocket; } .icon-maxcdn:before { content: $maxcdn; } .icon-chevron-sign-left:before { content: $chevron-sign-left; } .icon-chevron-sign-right:before { content: $chevron-sign-right; } .icon-chevron-sign-up:before { content: $chevron-sign-up; } .icon-chevron-sign-down:before { content: $chevron-sign-down; } .icon-html5:before { content: $html5; } .icon-css3:before { content: $css3; } .icon-anchor:before { content: $anchor; } .icon-unlock-alt:before { content: $unlock-alt; } .icon-bullseye:before { content: $bullseye; } .icon-ellipsis-horizontal:before { content: $ellipsis-horizontal; } .icon-ellipsis-vertical:before { content: $ellipsis-vertical; } .icon-rss-sign:before { content: $rss-sign; } .icon-play-sign:before { content: $play-sign; } .icon-ticket:before { content: $ticket; } .icon-minus-sign-alt:before { content: $minus-sign-alt; } .icon-check-minus:before { content: $check-minus; } .icon-level-up:before { content: $level-up; } .icon-level-down:before { content: $level-down; } .icon-check-sign:before { content: $check-sign; } .icon-edit-sign:before { content: $edit-sign; } .icon-external-link-sign:before { content: $external-link-sign; } .icon-share-sign:before { content: $share-sign; } .icon-compass:before { content: $compass; } .icon-collapse:before { content: $collapse; } .icon-collapse-top:before { content: $collapse-top; } .icon-expand:before { content: $expand; } .icon-euro:before, .icon-eur:before { content: $eur; } .icon-gbp:before { content: $gbp; } .icon-dollar:before, .icon-usd:before { content: $usd; } .icon-rupee:before, .icon-inr:before { content: $inr; } .icon-yen:before, .icon-jpy:before { content: $jpy; } .icon-renminbi:before, .icon-cny:before { content: $cny; } .icon-won:before, .icon-krw:before { content: $krw; } .icon-bitcoin:before, .icon-btc:before { content: $btc; } .icon-file:before { content: $file; } .icon-file-text:before { content: $file-text; } .icon-sort-by-alphabet:before { content: $sort-by-alphabet; } .icon-sort-by-alphabet-alt:before { content: $sort-by-alphabet-alt; } .icon-sort-by-attributes:before { content: $sort-by-attributes; } .icon-sort-by-attributes-alt:before { content: $sort-by-attributes-alt; } .icon-sort-by-order:before { content: $sort-by-order; } .icon-sort-by-order-alt:before { content: $sort-by-order-alt; } .icon-thumbs-up:before { content: $thumbs-up; } .icon-thumbs-down:before { content: $thumbs-down; } .icon-youtube-sign:before { content: $youtube-sign; } .icon-youtube:before { content: $youtube; } .icon-xing:before { content: $xing; } .icon-xing-sign:before { content: $xing-sign; } .icon-youtube-play:before { content: $youtube-play; } .icon-dropbox:before { content: $dropbox; } .icon-stackexchange:before { content: $stackexchange; } .icon-instagram:before { content: $instagram; } .icon-flickr:before { content: $flickr; } .icon-adn:before { content: $adn; } .icon-bitbucket:before { content: $bitbucket; } .icon-bitbucket-sign:before { content: $bitbucket-sign; } .icon-tumblr:before { content: $tumblr; } .icon-tumblr-sign:before { content: $tumblr-sign; } .icon-long-arrow-down:before { content: $long-arrow-down; } .icon-long-arrow-up:before { content: $long-arrow-up; } .icon-long-arrow-left:before { content: $long-arrow-left; } .icon-long-arrow-right:before { content: $long-arrow-right; } .icon-apple:before { content: $apple; } .icon-windows:before { content: $windows; } .icon-android:before { content: $android; } .icon-linux:before { content: $linux; } .icon-dribbble:before { content: $dribbble; } .icon-skype:before { content: $skype; } .icon-foursquare:before { content: $foursquare; } .icon-trello:before { content: $trello; } .icon-female:before { content: $female; } .icon-male:before { content: $male; } .icon-gittip:before { content: $gittip; } .icon-sun:before { content: $sun; } .icon-moon:before { content: $moon; } .icon-archive:before { content: $archive; } .icon-bug:before { content: $bug; } .icon-vk:before { content: $vk; } .icon-weibo:before { content: $weibo; } .icon-renren:before { content: $renren; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/_mixins.scss ================================================ // Mixins // -------------------------- @mixin icon($icon) { @include icon-FontAwesome(); content: $icon; } @mixin icon-FontAwesome() { font-family: FontAwesome; font-weight: normal; font-style: normal; text-decoration: inherit; -webkit-font-smoothing: antialiased; *margin-right: .3em; // fixes ie7 issues } @mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; border-radius: $radius; } @mixin icon-stack($width: 2em, $height: 2em, $top-font-size: 1em, $base-font-size: 2em) { .icon-stack { position: relative; display: inline-block; width: $width; height: $height; line-height: $width; vertical-align: -35%; [class^="icon-"], [class*=" icon-"] { display: block; text-align: center; position: absolute; width: 100%; height: 100%; font-size: $top-font-size; line-height: inherit; *line-height: $height; } .icon-stack-base { font-size: $base-font-size; *line-height: #{$height / $base-font-size}em; } } } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/_path.scss ================================================ /* FONT PATH * -------------------------- */ @font-face { font-family: 'FontAwesome'; src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?v=#{$FontAwesomeVersion}'); src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=#{$FontAwesomeVersion}') format('embedded-opentype'), url('#{$FontAwesomePath}/fontawesome-webfont.woff?v=#{$FontAwesomeVersion}') format('woff'), url('#{$FontAwesomePath}/fontawesome-webfont.ttf?v=#{$FontAwesomeVersion}') format('truetype'), url('#{$FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=#{$FontAwesomeVersion}') format('svg'); // src: url('#{$FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts font-weight: normal; font-style: normal; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/_variables.scss ================================================ // Variables // -------------------------- $FontAwesomePath: "../font" !default; $FontAwesomeVersion: "3.2.1" !default; $borderColor: #eeeeee !default; $iconMuted: #eeeeee !default; $iconLight: white !default; $iconDark: #333333 !default; $icons-li-width: (30em/14); $glass: "\f000"; $music: "\f001"; $search: "\f002"; $envelope-alt: "\f003"; $heart: "\f004"; $star: "\f005"; $star-empty: "\f006"; $user: "\f007"; $film: "\f008"; $th-large: "\f009"; $th: "\f00a"; $th-list: "\f00b"; $ok: "\f00c"; $remove: "\f00d"; $zoom-in: "\f00e"; $zoom-out: "\f010"; $off: "\f011"; $signal: "\f012"; $cog: "\f013"; $trash: "\f014"; $home: "\f015"; $file-alt: "\f016"; $time: "\f017"; $road: "\f018"; $download-alt: "\f019"; $download: "\f01a"; $upload: "\f01b"; $inbox: "\f01c"; $play-circle: "\f01d"; $repeat: "\f01e"; $refresh: "\f021"; $list-alt: "\f022"; $lock: "\f023"; $flag: "\f024"; $headphones: "\f025"; $volume-off: "\f026"; $volume-down: "\f027"; $volume-up: "\f028"; $qrcode: "\f029"; $barcode: "\f02a"; $tag: "\f02b"; $tags: "\f02c"; $book: "\f02d"; $bookmark: "\f02e"; $print: "\f02f"; $camera: "\f030"; $font: "\f031"; $bold: "\f032"; $italic: "\f033"; $text-height: "\f034"; $text-width: "\f035"; $align-left: "\f036"; $align-center: "\f037"; $align-right: "\f038"; $align-justify: "\f039"; $list: "\f03a"; $indent-left: "\f03b"; $indent-right: "\f03c"; $facetime-video: "\f03d"; $picture: "\f03e"; $pencil: "\f040"; $map-marker: "\f041"; $adjust: "\f042"; $tint: "\f043"; $edit: "\f044"; $share: "\f045"; $check: "\f046"; $move: "\f047"; $step-backward: "\f048"; $fast-backward: "\f049"; $backward: "\f04a"; $play: "\f04b"; $pause: "\f04c"; $stop: "\f04d"; $forward: "\f04e"; $fast-forward: "\f050"; $step-forward: "\f051"; $eject: "\f052"; $chevron-left: "\f053"; $chevron-right: "\f054"; $plus-sign: "\f055"; $minus-sign: "\f056"; $remove-sign: "\f057"; $ok-sign: "\f058"; $question-sign: "\f059"; $info-sign: "\f05a"; $screenshot: "\f05b"; $remove-circle: "\f05c"; $ok-circle: "\f05d"; $ban-circle: "\f05e"; $arrow-left: "\f060"; $arrow-right: "\f061"; $arrow-up: "\f062"; $arrow-down: "\f063"; $share-alt: "\f064"; $resize-full: "\f065"; $resize-small: "\f066"; $plus: "\f067"; $minus: "\f068"; $asterisk: "\f069"; $exclamation-sign: "\f06a"; $gift: "\f06b"; $leaf: "\f06c"; $fire: "\f06d"; $eye-open: "\f06e"; $eye-close: "\f070"; $warning-sign: "\f071"; $plane: "\f072"; $calendar: "\f073"; $random: "\f074"; $comment: "\f075"; $magnet: "\f076"; $chevron-up: "\f077"; $chevron-down: "\f078"; $retweet: "\f079"; $shopping-cart: "\f07a"; $folder-close: "\f07b"; $folder-open: "\f07c"; $resize-vertical: "\f07d"; $resize-horizontal: "\f07e"; $bar-chart: "\f080"; $twitter-sign: "\f081"; $facebook-sign: "\f082"; $camera-retro: "\f083"; $key: "\f084"; $cogs: "\f085"; $comments: "\f086"; $thumbs-up-alt: "\f087"; $thumbs-down-alt: "\f088"; $star-half: "\f089"; $heart-empty: "\f08a"; $signout: "\f08b"; $linkedin-sign: "\f08c"; $pushpin: "\f08d"; $external-link: "\f08e"; $signin: "\f090"; $trophy: "\f091"; $github-sign: "\f092"; $upload-alt: "\f093"; $lemon: "\f094"; $phone: "\f095"; $check-empty: "\f096"; $bookmark-empty: "\f097"; $phone-sign: "\f098"; $twitter: "\f099"; $facebook: "\f09a"; $github: "\f09b"; $unlock: "\f09c"; $credit-card: "\f09d"; $rss: "\f09e"; $hdd: "\f0a0"; $bullhorn: "\f0a1"; $bell: "\f0a2"; $certificate: "\f0a3"; $hand-right: "\f0a4"; $hand-left: "\f0a5"; $hand-up: "\f0a6"; $hand-down: "\f0a7"; $circle-arrow-left: "\f0a8"; $circle-arrow-right: "\f0a9"; $circle-arrow-up: "\f0aa"; $circle-arrow-down: "\f0ab"; $globe: "\f0ac"; $wrench: "\f0ad"; $tasks: "\f0ae"; $filter: "\f0b0"; $briefcase: "\f0b1"; $fullscreen: "\f0b2"; $group: "\f0c0"; $link: "\f0c1"; $cloud: "\f0c2"; $beaker: "\f0c3"; $cut: "\f0c4"; $copy: "\f0c5"; $paper-clip: "\f0c6"; $save: "\f0c7"; $sign-blank: "\f0c8"; $reorder: "\f0c9"; $list-ul: "\f0ca"; $list-ol: "\f0cb"; $strikethrough: "\f0cc"; $underline: "\f0cd"; $table: "\f0ce"; $magic: "\f0d0"; $truck: "\f0d1"; $pinterest: "\f0d2"; $pinterest-sign: "\f0d3"; $google-plus-sign: "\f0d4"; $google-plus: "\f0d5"; $money: "\f0d6"; $caret-down: "\f0d7"; $caret-up: "\f0d8"; $caret-left: "\f0d9"; $caret-right: "\f0da"; $columns: "\f0db"; $sort: "\f0dc"; $sort-down: "\f0dd"; $sort-up: "\f0de"; $envelope: "\f0e0"; $linkedin: "\f0e1"; $undo: "\f0e2"; $legal: "\f0e3"; $dashboard: "\f0e4"; $comment-alt: "\f0e5"; $comments-alt: "\f0e6"; $bolt: "\f0e7"; $sitemap: "\f0e8"; $umbrella: "\f0e9"; $paste: "\f0ea"; $lightbulb: "\f0eb"; $exchange: "\f0ec"; $cloud-download: "\f0ed"; $cloud-upload: "\f0ee"; $user-md: "\f0f0"; $stethoscope: "\f0f1"; $suitcase: "\f0f2"; $bell-alt: "\f0f3"; $coffee: "\f0f4"; $food: "\f0f5"; $file-text-alt: "\f0f6"; $building: "\f0f7"; $hospital: "\f0f8"; $ambulance: "\f0f9"; $medkit: "\f0fa"; $fighter-jet: "\f0fb"; $beer: "\f0fc"; $h-sign: "\f0fd"; $plus-sign-alt: "\f0fe"; $double-angle-left: "\f100"; $double-angle-right: "\f101"; $double-angle-up: "\f102"; $double-angle-down: "\f103"; $angle-left: "\f104"; $angle-right: "\f105"; $angle-up: "\f106"; $angle-down: "\f107"; $desktop: "\f108"; $laptop: "\f109"; $tablet: "\f10a"; $mobile-phone: "\f10b"; $circle-blank: "\f10c"; $quote-left: "\f10d"; $quote-right: "\f10e"; $spinner: "\f110"; $circle: "\f111"; $reply: "\f112"; $github-alt: "\f113"; $folder-close-alt: "\f114"; $folder-open-alt: "\f115"; $expand-alt: "\f116"; $collapse-alt: "\f117"; $smile: "\f118"; $frown: "\f119"; $meh: "\f11a"; $gamepad: "\f11b"; $keyboard: "\f11c"; $flag-alt: "\f11d"; $flag-checkered: "\f11e"; $terminal: "\f120"; $code: "\f121"; $reply-all: "\f122"; $mail-reply-all: "\f122"; $star-half-empty: "\f123"; $location-arrow: "\f124"; $crop: "\f125"; $code-fork: "\f126"; $unlink: "\f127"; $question: "\f128"; $info: "\f129"; $exclamation: "\f12a"; $superscript: "\f12b"; $subscript: "\f12c"; $eraser: "\f12d"; $puzzle-piece: "\f12e"; $microphone: "\f130"; $microphone-off: "\f131"; $shield: "\f132"; $calendar-empty: "\f133"; $fire-extinguisher: "\f134"; $rocket: "\f135"; $maxcdn: "\f136"; $chevron-sign-left: "\f137"; $chevron-sign-right: "\f138"; $chevron-sign-up: "\f139"; $chevron-sign-down: "\f13a"; $html5: "\f13b"; $css3: "\f13c"; $anchor: "\f13d"; $unlock-alt: "\f13e"; $bullseye: "\f140"; $ellipsis-horizontal: "\f141"; $ellipsis-vertical: "\f142"; $rss-sign: "\f143"; $play-sign: "\f144"; $ticket: "\f145"; $minus-sign-alt: "\f146"; $check-minus: "\f147"; $level-up: "\f148"; $level-down: "\f149"; $check-sign: "\f14a"; $edit-sign: "\f14b"; $external-link-sign: "\f14c"; $share-sign: "\f14d"; $compass: "\f14e"; $collapse: "\f150"; $collapse-top: "\f151"; $expand: "\f152"; $eur: "\f153"; $gbp: "\f154"; $usd: "\f155"; $inr: "\f156"; $jpy: "\f157"; $cny: "\f158"; $krw: "\f159"; $btc: "\f15a"; $file: "\f15b"; $file-text: "\f15c"; $sort-by-alphabet: "\f15d"; $sort-by-alphabet-alt: "\f15e"; $sort-by-attributes: "\f160"; $sort-by-attributes-alt: "\f161"; $sort-by-order: "\f162"; $sort-by-order-alt: "\f163"; $thumbs-up: "\f164"; $thumbs-down: "\f165"; $youtube-sign: "\f166"; $youtube: "\f167"; $xing: "\f168"; $xing-sign: "\f169"; $youtube-play: "\f16a"; $dropbox: "\f16b"; $stackexchange: "\f16c"; $instagram: "\f16d"; $flickr: "\f16e"; $adn: "\f170"; $bitbucket: "\f171"; $bitbucket-sign: "\f172"; $tumblr: "\f173"; $tumblr-sign: "\f174"; $long-arrow-down: "\f175"; $long-arrow-up: "\f176"; $long-arrow-left: "\f177"; $long-arrow-right: "\f178"; $apple: "\f179"; $windows: "\f17a"; $android: "\f17b"; $linux: "\f17c"; $dribbble: "\f17d"; $skype: "\f17e"; $foursquare: "\f180"; $trello: "\f181"; $female: "\f182"; $male: "\f183"; $gittip: "\f184"; $sun: "\f185"; $moon: "\f186"; $archive: "\f187"; $bug: "\f188"; $vk: "\f189"; $weibo: "\f18a"; $renren: "\f18b"; ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/font-awesome-ie7.scss ================================================ /*! * Font Awesome 3.2.1 * the iconic font designed for Bootstrap * ------------------------------------------------------------------------------ * The full suite of pictographic icons, examples, and documentation can be * found at http://fontawesome.io. Stay up to date on Twitter at * http://twitter.com/fontawesome. * * License * ------------------------------------------------------------------------------ * - The Font Awesome font is licensed under SIL OFL 1.1 - * http://scripts.sil.org/OFL * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - * http://opensource.org/licenses/mit-license.html * - Font Awesome documentation licensed under CC BY 3.0 - * http://creativecommons.org/licenses/by/3.0/ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: * "Font Awesome by Dave Gandy - http://fontawesome.io" * * Author - Dave Gandy * ------------------------------------------------------------------------------ * Email: dave@fontawesome.io * Twitter: http://twitter.com/davegandy * Work: Lead Product Designer @ Kyruus - http://kyruus.com */ .icon-large { font-size: (4em/3); margin-top: -4px; padding-top: 3px; margin-bottom: -4px; padding-bottom: 3px; vertical-align: middle; } .nav { [class^="icon-"], [class*=" icon-"] { vertical-align: inherit; margin-top: -4px; padding-top: 3px; margin-bottom: -4px; padding-bottom: 3px; &.icon-large { vertical-align: -25%; } } } .nav-pills, .nav-tabs { [class^="icon-"], [class*=" icon-"] { &.icon-large { line-height: .75em; margin-top: -7px; padding-top: 5px; margin-bottom: -5px; padding-bottom: 4px; } } } .btn { [class^="icon-"], [class*=" icon-"] { &.pull-left, &.pull-right { vertical-align: inherit; } &.icon-large { margin-top: -.5em; } } } a [class^="icon-"], a [class*=" icon-"] { cursor: pointer; } @mixin ie7icon($inner) { *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '#{$inner}'); } .icon-glass { @include ie7icon(''); } .icon-music { @include ie7icon(''); } .icon-search { @include ie7icon(''); } .icon-envelope-alt { @include ie7icon(''); } .icon-heart { @include ie7icon(''); } .icon-star { @include ie7icon(''); } .icon-star-empty { @include ie7icon(''); } .icon-user { @include ie7icon(''); } .icon-film { @include ie7icon(''); } .icon-th-large { @include ie7icon(''); } .icon-th { @include ie7icon(''); } .icon-th-list { @include ie7icon(''); } .icon-ok { @include ie7icon(''); } .icon-remove { @include ie7icon(''); } .icon-zoom-in { @include ie7icon(''); } .icon-zoom-out { @include ie7icon(''); } .icon-off { @include ie7icon(''); } .icon-power-off { @include ie7icon(''); } .icon-signal { @include ie7icon(''); } .icon-cog { @include ie7icon(''); } .icon-gear { @include ie7icon(''); } .icon-trash { @include ie7icon(''); } .icon-home { @include ie7icon(''); } .icon-file-alt { @include ie7icon(''); } .icon-time { @include ie7icon(''); } .icon-road { @include ie7icon(''); } .icon-download-alt { @include ie7icon(''); } .icon-download { @include ie7icon(''); } .icon-upload { @include ie7icon(''); } .icon-inbox { @include ie7icon(''); } .icon-play-circle { @include ie7icon(''); } .icon-repeat { @include ie7icon(''); } .icon-rotate-right { @include ie7icon(''); } .icon-refresh { @include ie7icon(''); } .icon-list-alt { @include ie7icon(''); } .icon-lock { @include ie7icon(''); } .icon-flag { @include ie7icon(''); } .icon-headphones { @include ie7icon(''); } .icon-volume-off { @include ie7icon(''); } .icon-volume-down { @include ie7icon(''); } .icon-volume-up { @include ie7icon(''); } .icon-qrcode { @include ie7icon(''); } .icon-barcode { @include ie7icon(''); } .icon-tag { @include ie7icon(''); } .icon-tags { @include ie7icon(''); } .icon-book { @include ie7icon(''); } .icon-bookmark { @include ie7icon(''); } .icon-print { @include ie7icon(''); } .icon-camera { @include ie7icon(''); } .icon-font { @include ie7icon(''); } .icon-bold { @include ie7icon(''); } .icon-italic { @include ie7icon(''); } .icon-text-height { @include ie7icon(''); } .icon-text-width { @include ie7icon(''); } .icon-align-left { @include ie7icon(''); } .icon-align-center { @include ie7icon(''); } .icon-align-right { @include ie7icon(''); } .icon-align-justify { @include ie7icon(''); } .icon-list { @include ie7icon(''); } .icon-indent-left { @include ie7icon(''); } .icon-indent-right { @include ie7icon(''); } .icon-facetime-video { @include ie7icon(''); } .icon-picture { @include ie7icon(''); } .icon-pencil { @include ie7icon(''); } .icon-map-marker { @include ie7icon(''); } .icon-adjust { @include ie7icon(''); } .icon-tint { @include ie7icon(''); } .icon-edit { @include ie7icon(''); } .icon-share { @include ie7icon(''); } .icon-check { @include ie7icon(''); } .icon-move { @include ie7icon(''); } .icon-step-backward { @include ie7icon(''); } .icon-fast-backward { @include ie7icon(''); } .icon-backward { @include ie7icon(''); } .icon-play { @include ie7icon(''); } .icon-pause { @include ie7icon(''); } .icon-stop { @include ie7icon(''); } .icon-forward { @include ie7icon(''); } .icon-fast-forward { @include ie7icon(''); } .icon-step-forward { @include ie7icon(''); } .icon-eject { @include ie7icon(''); } .icon-chevron-left { @include ie7icon(''); } .icon-chevron-right { @include ie7icon(''); } .icon-plus-sign { @include ie7icon(''); } .icon-minus-sign { @include ie7icon(''); } .icon-remove-sign { @include ie7icon(''); } .icon-ok-sign { @include ie7icon(''); } .icon-question-sign { @include ie7icon(''); } .icon-info-sign { @include ie7icon(''); } .icon-screenshot { @include ie7icon(''); } .icon-remove-circle { @include ie7icon(''); } .icon-ok-circle { @include ie7icon(''); } .icon-ban-circle { @include ie7icon(''); } .icon-arrow-left { @include ie7icon(''); } .icon-arrow-right { @include ie7icon(''); } .icon-arrow-up { @include ie7icon(''); } .icon-arrow-down { @include ie7icon(''); } .icon-share-alt { @include ie7icon(''); } .icon-mail-forward { @include ie7icon(''); } .icon-resize-full { @include ie7icon(''); } .icon-resize-small { @include ie7icon(''); } .icon-plus { @include ie7icon(''); } .icon-minus { @include ie7icon(''); } .icon-asterisk { @include ie7icon(''); } .icon-exclamation-sign { @include ie7icon(''); } .icon-gift { @include ie7icon(''); } .icon-leaf { @include ie7icon(''); } .icon-fire { @include ie7icon(''); } .icon-eye-open { @include ie7icon(''); } .icon-eye-close { @include ie7icon(''); } .icon-warning-sign { @include ie7icon(''); } .icon-plane { @include ie7icon(''); } .icon-calendar { @include ie7icon(''); } .icon-random { @include ie7icon(''); } .icon-comment { @include ie7icon(''); } .icon-magnet { @include ie7icon(''); } .icon-chevron-up { @include ie7icon(''); } .icon-chevron-down { @include ie7icon(''); } .icon-retweet { @include ie7icon(''); } .icon-shopping-cart { @include ie7icon(''); } .icon-folder-close { @include ie7icon(''); } .icon-folder-open { @include ie7icon(''); } .icon-resize-vertical { @include ie7icon(''); } .icon-resize-horizontal { @include ie7icon(''); } .icon-bar-chart { @include ie7icon(''); } .icon-twitter-sign { @include ie7icon(''); } .icon-facebook-sign { @include ie7icon(''); } .icon-camera-retro { @include ie7icon(''); } .icon-key { @include ie7icon(''); } .icon-cogs { @include ie7icon(''); } .icon-gears { @include ie7icon(''); } .icon-comments { @include ie7icon(''); } .icon-thumbs-up-alt { @include ie7icon(''); } .icon-thumbs-down-alt { @include ie7icon(''); } .icon-star-half { @include ie7icon(''); } .icon-heart-empty { @include ie7icon(''); } .icon-signout { @include ie7icon(''); } .icon-linkedin-sign { @include ie7icon(''); } .icon-pushpin { @include ie7icon(''); } .icon-external-link { @include ie7icon(''); } .icon-signin { @include ie7icon(''); } .icon-trophy { @include ie7icon(''); } .icon-github-sign { @include ie7icon(''); } .icon-upload-alt { @include ie7icon(''); } .icon-lemon { @include ie7icon(''); } .icon-phone { @include ie7icon(''); } .icon-check-empty { @include ie7icon(''); } .icon-unchecked { @include ie7icon(''); } .icon-bookmark-empty { @include ie7icon(''); } .icon-phone-sign { @include ie7icon(''); } .icon-twitter { @include ie7icon(''); } .icon-facebook { @include ie7icon(''); } .icon-github { @include ie7icon(''); } .icon-unlock { @include ie7icon(''); } .icon-credit-card { @include ie7icon(''); } .icon-rss { @include ie7icon(''); } .icon-hdd { @include ie7icon(''); } .icon-bullhorn { @include ie7icon(''); } .icon-bell { @include ie7icon(''); } .icon-certificate { @include ie7icon(''); } .icon-hand-right { @include ie7icon(''); } .icon-hand-left { @include ie7icon(''); } .icon-hand-up { @include ie7icon(''); } .icon-hand-down { @include ie7icon(''); } .icon-circle-arrow-left { @include ie7icon(''); } .icon-circle-arrow-right { @include ie7icon(''); } .icon-circle-arrow-up { @include ie7icon(''); } .icon-circle-arrow-down { @include ie7icon(''); } .icon-globe { @include ie7icon(''); } .icon-wrench { @include ie7icon(''); } .icon-tasks { @include ie7icon(''); } .icon-filter { @include ie7icon(''); } .icon-briefcase { @include ie7icon(''); } .icon-fullscreen { @include ie7icon(''); } .icon-group { @include ie7icon(''); } .icon-link { @include ie7icon(''); } .icon-cloud { @include ie7icon(''); } .icon-beaker { @include ie7icon(''); } .icon-cut { @include ie7icon(''); } .icon-copy { @include ie7icon(''); } .icon-paper-clip { @include ie7icon(''); } .icon-paperclip { @include ie7icon(''); } .icon-save { @include ie7icon(''); } .icon-sign-blank { @include ie7icon(''); } .icon-reorder { @include ie7icon(''); } .icon-list-ul { @include ie7icon(''); } .icon-list-ol { @include ie7icon(''); } .icon-strikethrough { @include ie7icon(''); } .icon-underline { @include ie7icon(''); } .icon-table { @include ie7icon(''); } .icon-magic { @include ie7icon(''); } .icon-truck { @include ie7icon(''); } .icon-pinterest { @include ie7icon(''); } .icon-pinterest-sign { @include ie7icon(''); } .icon-google-plus-sign { @include ie7icon(''); } .icon-google-plus { @include ie7icon(''); } .icon-money { @include ie7icon(''); } .icon-caret-down { @include ie7icon(''); } .icon-caret-up { @include ie7icon(''); } .icon-caret-left { @include ie7icon(''); } .icon-caret-right { @include ie7icon(''); } .icon-columns { @include ie7icon(''); } .icon-sort { @include ie7icon(''); } .icon-sort-down { @include ie7icon(''); } .icon-sort-up { @include ie7icon(''); } .icon-envelope { @include ie7icon(''); } .icon-linkedin { @include ie7icon(''); } .icon-undo { @include ie7icon(''); } .icon-rotate-left { @include ie7icon(''); } .icon-legal { @include ie7icon(''); } .icon-dashboard { @include ie7icon(''); } .icon-comment-alt { @include ie7icon(''); } .icon-comments-alt { @include ie7icon(''); } .icon-bolt { @include ie7icon(''); } .icon-sitemap { @include ie7icon(''); } .icon-umbrella { @include ie7icon(''); } .icon-paste { @include ie7icon(''); } .icon-lightbulb { @include ie7icon(''); } .icon-exchange { @include ie7icon(''); } .icon-cloud-download { @include ie7icon(''); } .icon-cloud-upload { @include ie7icon(''); } .icon-user-md { @include ie7icon(''); } .icon-stethoscope { @include ie7icon(''); } .icon-suitcase { @include ie7icon(''); } .icon-bell-alt { @include ie7icon(''); } .icon-coffee { @include ie7icon(''); } .icon-food { @include ie7icon(''); } .icon-file-text-alt { @include ie7icon(''); } .icon-building { @include ie7icon(''); } .icon-hospital { @include ie7icon(''); } .icon-ambulance { @include ie7icon(''); } .icon-medkit { @include ie7icon(''); } .icon-fighter-jet { @include ie7icon(''); } .icon-beer { @include ie7icon(''); } .icon-h-sign { @include ie7icon(''); } .icon-plus-sign-alt { @include ie7icon(''); } .icon-double-angle-left { @include ie7icon(''); } .icon-double-angle-right { @include ie7icon(''); } .icon-double-angle-up { @include ie7icon(''); } .icon-double-angle-down { @include ie7icon(''); } .icon-angle-left { @include ie7icon(''); } .icon-angle-right { @include ie7icon(''); } .icon-angle-up { @include ie7icon(''); } .icon-angle-down { @include ie7icon(''); } .icon-desktop { @include ie7icon(''); } .icon-laptop { @include ie7icon(''); } .icon-tablet { @include ie7icon(''); } .icon-mobile-phone { @include ie7icon(''); } .icon-circle-blank { @include ie7icon(''); } .icon-quote-left { @include ie7icon(''); } .icon-quote-right { @include ie7icon(''); } .icon-spinner { @include ie7icon(''); } .icon-circle { @include ie7icon(''); } .icon-reply { @include ie7icon(''); } .icon-mail-reply { @include ie7icon(''); } .icon-github-alt { @include ie7icon(''); } .icon-folder-close-alt { @include ie7icon(''); } .icon-folder-open-alt { @include ie7icon(''); } .icon-expand-alt { @include ie7icon(''); } .icon-collapse-alt { @include ie7icon(''); } .icon-smile { @include ie7icon(''); } .icon-frown { @include ie7icon(''); } .icon-meh { @include ie7icon(''); } .icon-gamepad { @include ie7icon(''); } .icon-keyboard { @include ie7icon(''); } .icon-flag-alt { @include ie7icon(''); } .icon-flag-checkered { @include ie7icon(''); } .icon-terminal { @include ie7icon(''); } .icon-code { @include ie7icon(''); } .icon-reply-all { @include ie7icon(''); } .icon-mail-reply-all { @include ie7icon(''); } .icon-star-half-empty { @include ie7icon(''); } .icon-star-half-full { @include ie7icon(''); } .icon-location-arrow { @include ie7icon(''); } .icon-crop { @include ie7icon(''); } .icon-code-fork { @include ie7icon(''); } .icon-unlink { @include ie7icon(''); } .icon-question { @include ie7icon(''); } .icon-info { @include ie7icon(''); } .icon-exclamation { @include ie7icon(''); } .icon-superscript { @include ie7icon(''); } .icon-subscript { @include ie7icon(''); } .icon-eraser { @include ie7icon(''); } .icon-puzzle-piece { @include ie7icon(''); } .icon-microphone { @include ie7icon(''); } .icon-microphone-off { @include ie7icon(''); } .icon-shield { @include ie7icon(''); } .icon-calendar-empty { @include ie7icon(''); } .icon-fire-extinguisher { @include ie7icon(''); } .icon-rocket { @include ie7icon(''); } .icon-maxcdn { @include ie7icon(''); } .icon-chevron-sign-left { @include ie7icon(''); } .icon-chevron-sign-right { @include ie7icon(''); } .icon-chevron-sign-up { @include ie7icon(''); } .icon-chevron-sign-down { @include ie7icon(''); } .icon-html5 { @include ie7icon(''); } .icon-css3 { @include ie7icon(''); } .icon-anchor { @include ie7icon(''); } .icon-unlock-alt { @include ie7icon(''); } .icon-bullseye { @include ie7icon(''); } .icon-ellipsis-horizontal { @include ie7icon(''); } .icon-ellipsis-vertical { @include ie7icon(''); } .icon-rss-sign { @include ie7icon(''); } .icon-play-sign { @include ie7icon(''); } .icon-ticket { @include ie7icon(''); } .icon-minus-sign-alt { @include ie7icon(''); } .icon-check-minus { @include ie7icon(''); } .icon-level-up { @include ie7icon(''); } .icon-level-down { @include ie7icon(''); } .icon-check-sign { @include ie7icon(''); } .icon-edit-sign { @include ie7icon(''); } .icon-external-link-sign { @include ie7icon(''); } .icon-share-sign { @include ie7icon(''); } .icon-compass { @include ie7icon(''); } .icon-collapse { @include ie7icon(''); } .icon-collapse-top { @include ie7icon(''); } .icon-expand { @include ie7icon(''); } .icon-eur { @include ie7icon(''); } .icon-euro { @include ie7icon(''); } .icon-gbp { @include ie7icon(''); } .icon-usd { @include ie7icon(''); } .icon-dollar { @include ie7icon(''); } .icon-inr { @include ie7icon(''); } .icon-rupee { @include ie7icon(''); } .icon-jpy { @include ie7icon(''); } .icon-yen { @include ie7icon(''); } .icon-cny { @include ie7icon(''); } .icon-renminbi { @include ie7icon(''); } .icon-krw { @include ie7icon(''); } .icon-won { @include ie7icon(''); } .icon-btc { @include ie7icon(''); } .icon-bitcoin { @include ie7icon(''); } .icon-file { @include ie7icon(''); } .icon-file-text { @include ie7icon(''); } .icon-sort-by-alphabet { @include ie7icon(''); } .icon-sort-by-alphabet-alt { @include ie7icon(''); } .icon-sort-by-attributes { @include ie7icon(''); } .icon-sort-by-attributes-alt { @include ie7icon(''); } .icon-sort-by-order { @include ie7icon(''); } .icon-sort-by-order-alt { @include ie7icon(''); } .icon-thumbs-up { @include ie7icon(''); } .icon-thumbs-down { @include ie7icon(''); } .icon-youtube-sign { @include ie7icon(''); } .icon-youtube { @include ie7icon(''); } .icon-xing { @include ie7icon(''); } .icon-xing-sign { @include ie7icon(''); } .icon-youtube-play { @include ie7icon(''); } .icon-dropbox { @include ie7icon(''); } .icon-stackexchange { @include ie7icon(''); } .icon-instagram { @include ie7icon(''); } .icon-flickr { @include ie7icon(''); } .icon-adn { @include ie7icon(''); } .icon-bitbucket { @include ie7icon(''); } .icon-bitbucket-sign { @include ie7icon(''); } .icon-tumblr { @include ie7icon(''); } .icon-tumblr-sign { @include ie7icon(''); } .icon-long-arrow-down { @include ie7icon(''); } .icon-long-arrow-up { @include ie7icon(''); } .icon-long-arrow-left { @include ie7icon(''); } .icon-long-arrow-right { @include ie7icon(''); } .icon-apple { @include ie7icon(''); } .icon-windows { @include ie7icon(''); } .icon-android { @include ie7icon(''); } .icon-linux { @include ie7icon(''); } .icon-dribbble { @include ie7icon(''); } .icon-skype { @include ie7icon(''); } .icon-foursquare { @include ie7icon(''); } .icon-trello { @include ie7icon(''); } .icon-female { @include ie7icon(''); } .icon-male { @include ie7icon(''); } .icon-gittip { @include ie7icon(''); } .icon-sun { @include ie7icon(''); } .icon-moon { @include ie7icon(''); } .icon-archive { @include ie7icon(''); } .icon-bug { @include ie7icon(''); } .icon-vk { @include ie7icon(''); } .icon-weibo { @include ie7icon(''); } .icon-renren { @include ie7icon(''); } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/font-awesome/scss/font-awesome.scss ================================================ /*! * Font Awesome 3.2.1 * the iconic font designed for Bootstrap * ------------------------------------------------------------------------------ * The full suite of pictographic icons, examples, and documentation can be * found at http://fontawesome.io. Stay up to date on Twitter at * http://twitter.com/fontawesome. * * License * ------------------------------------------------------------------------------ * - The Font Awesome font is licensed under SIL OFL 1.1 - * http://scripts.sil.org/OFL * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - * http://opensource.org/licenses/mit-license.html * - Font Awesome documentation licensed under CC BY 3.0 - * http://creativecommons.org/licenses/by/3.0/ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: * "Font Awesome by Dave Gandy - http://fontawesome.io" * * Author - Dave Gandy * ------------------------------------------------------------------------------ * Email: dave@fontawesome.io * Twitter: http://twitter.com/davegandy * Work: Lead Product Designer @ Kyruus - http://kyruus.com */ @import "variables"; @import "mixins"; @import "path"; @import "core"; @import "bootstrap"; @import "extras"; @import "icons"; ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/jquery-easy-pie-chart/Makefile ================================================ dist: all @echo Done all: @echo Compiling coffee script coffee -c *.coffee watch: @echo Watch coffee script files coffee -w *.coffee .PHONY: dist all watch ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/jquery-easy-pie-chart/Readme.md ================================================ easy pie chart ============== Easy pie chart is a jQuery plugin that uses the canvas element to render simple pie charts for single values. These charts are highly customizable, very easy to implement and **scale to the resolution of the display of the client to provide sharp charts even on retina displays**. ![](https://github.com/rendro/easy-pie-chart/raw/master/img/easy-pie-chart.png) Get started ----------- To use the easy pie chart plugin you need to load the current version of jQuery (testet with 1.7.2) and the source (css+js) of the plugin. Just add the following lines to the `head` of your website: The second step is to add a element to your site to represent chart and add the `data-percent` attribute with the percent number the pie chart should have:
              73%
              Finally you have to initialize the plugin with your desired configuration: Configuration parameter ----------------------- You can pass a set of these options to the initialize function to set a custom behaviour and look for the plugin.
              Property (Type) Default Description
              barColor #ef1e25 The color of the curcular bar. You can pass either a css valid color string like rgb, rgba hex or string colors. But you can also pass a function that accepts the current percentage as a value to return a dynamically generated color.
              trackColor #f2f2f2 The color of the track for the bar, false to disable rendering.
              scaleColor #dfe0e0 The color of the scale lines, false to disable rendering.
              lineCap round Defines how the ending of the bar line looks like. Possible values are: butt, round and square.
              lineWidth 3 Width of the bar line in px.
              size 110 Size of the pie chart in px. It will always be a square.
              animate false Time in milliseconds for a eased animation of the bar growing, or false to deactivate.
              onStart $.noop Callback function that is called at the start of any animation (only if animate is not false).
              onStop $.noop Callback function that is called at the end of any animation (only if animate is not false).
              Public plugin methods --------------------- If you want to update the current percentage of the a pie chart, you can call the `update` method. The instance of the plugin is saved in the jQuery-data. Credits ------- Thanks to [Rafal Bromirski](http://www.paranoida.com/) for making [this dribble shot](http://drbl.in/ezuc) which inspired me and [Philip Thrasher](http://philipthrasher.com/) for his [CoffeeScript jQuery boilerplate](https://github.com/pthrasher/coffee-plate) ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/jquery-easy-pie-chart/examples/excanvas.js ================================================ // Copyright 2006 Google Inc. // // 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. // Known Issues: // // * Patterns are not implemented. // * Radial gradient are not implemented. The VML version of these look very // different from the canvas one. // * Clipping paths are not implemented. // * Coordsize. The width and height attribute have higher priority than the // width and height style values which isn't correct. // * Painting mode isn't implemented. // * Canvas width/height should is using content-box by default. IE in // Quirks mode will draw the canvas using border-box. Either change your // doctype to HTML5 // (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype) // or use Box Sizing Behavior from WebFX // (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html) // * Non uniform scaling does not correctly scale strokes. // * Optimize. There is always room for speed improvements. // Only add this code if we do not already have a canvas implementation if (!document.createElement('canvas').getContext) { (function() { // alias some functions to make (compiled) code shorter var m = Math; var mr = m.round; var ms = m.sin; var mc = m.cos; var abs = m.abs; var sqrt = m.sqrt; // this is used for sub pixel precision var Z = 10; var Z2 = Z / 2; /** * This funtion is assigned to the elements as element.getContext(). * @this {HTMLElement} * @return {CanvasRenderingContext2D_} */ function getContext() { return this.context_ || (this.context_ = new CanvasRenderingContext2D_(this)); } var slice = Array.prototype.slice; /** * Binds a function to an object. The returned function will always use the * passed in {@code obj} as {@code this}. * * Example: * * g = bind(f, obj, a, b) * g(c, d) // will do f.call(obj, a, b, c, d) * * @param {Function} f The function to bind the object to * @param {Object} obj The object that should act as this when the function * is called * @param {*} var_args Rest arguments that will be used as the initial * arguments when the function is called * @return {Function} A new function that has bound this */ function bind(f, obj, var_args) { var a = slice.call(arguments, 2); return function() { return f.apply(obj, a.concat(slice.call(arguments))); }; } var G_vmlCanvasManager_ = { init: function(opt_doc) { if (/MSIE/.test(navigator.userAgent) && !window.opera) { var doc = opt_doc || document; // Create a dummy element so that IE will allow canvas elements to be // recognized. doc.createElement('canvas'); doc.attachEvent('onreadystatechange', bind(this.init_, this, doc)); } }, init_: function(doc) { // create xmlns if (!doc.namespaces['g_vml_']) { doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml', '#default#VML'); } if (!doc.namespaces['g_o_']) { doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office', '#default#VML'); } // Setup default CSS. Only add one style sheet per document if (!doc.styleSheets['ex_canvas_']) { var ss = doc.createStyleSheet(); ss.owningElement.id = 'ex_canvas_'; ss.cssText = 'canvas{display:inline-block;overflow:hidden;' + // default size is 300x150 in Gecko and Opera 'text-align:left;width:300px;height:150px}' + 'g_vml_\\:*{behavior:url(#default#VML)}' + 'g_o_\\:*{behavior:url(#default#VML)}'; } // find all canvas elements var els = doc.getElementsByTagName('canvas'); for (var i = 0; i < els.length; i++) { this.initElement(els[i]); } }, /** * Public initializes a canvas element so that it can be used as canvas * element from now on. This is called automatically before the page is * loaded but if you are creating elements using createElement you need to * make sure this is called on the element. * @param {HTMLElement} el The canvas element to initialize. * @return {HTMLElement} the element that was created. */ initElement: function(el) { if (!el.getContext) { el.getContext = getContext; // Remove fallback content. There is no way to hide text nodes so we // just remove all childNodes. We could hide all elements and remove // text nodes but who really cares about the fallback content. el.innerHTML = ''; // do not use inline function because that will leak memory el.attachEvent('onpropertychange', onPropertyChange); el.attachEvent('onresize', onResize); var attrs = el.attributes; if (attrs.width && attrs.width.specified) { // TODO: use runtimeStyle and coordsize // el.getContext().setWidth_(attrs.width.nodeValue); el.style.width = attrs.width.nodeValue + 'px'; } else { el.width = el.clientWidth; } if (attrs.height && attrs.height.specified) { // TODO: use runtimeStyle and coordsize // el.getContext().setHeight_(attrs.height.nodeValue); el.style.height = attrs.height.nodeValue + 'px'; } else { el.height = el.clientHeight; } //el.getContext().setCoordsize_() } return el; } }; function onPropertyChange(e) { var el = e.srcElement; switch (e.propertyName) { case 'width': el.style.width = el.attributes.width.nodeValue + 'px'; el.getContext().clearRect(); break; case 'height': el.style.height = el.attributes.height.nodeValue + 'px'; el.getContext().clearRect(); break; } } function onResize(e) { var el = e.srcElement; if (el.firstChild) { el.firstChild.style.width = el.clientWidth + 'px'; el.firstChild.style.height = el.clientHeight + 'px'; } } G_vmlCanvasManager_.init(); // precompute "00" to "FF" var dec2hex = []; for (var i = 0; i < 16; i++) { for (var j = 0; j < 16; j++) { dec2hex[i * 16 + j] = i.toString(16) + j.toString(16); } } function createMatrixIdentity() { return [ [1, 0, 0], [0, 1, 0], [0, 0, 1] ]; } function matrixMultiply(m1, m2) { var result = createMatrixIdentity(); for (var x = 0; x < 3; x++) { for (var y = 0; y < 3; y++) { var sum = 0; for (var z = 0; z < 3; z++) { sum += m1[x][z] * m2[z][y]; } result[x][y] = sum; } } return result; } function copyState(o1, o2) { o2.fillStyle = o1.fillStyle; o2.lineCap = o1.lineCap; o2.lineJoin = o1.lineJoin; o2.lineWidth = o1.lineWidth; o2.miterLimit = o1.miterLimit; o2.shadowBlur = o1.shadowBlur; o2.shadowColor = o1.shadowColor; o2.shadowOffsetX = o1.shadowOffsetX; o2.shadowOffsetY = o1.shadowOffsetY; o2.strokeStyle = o1.strokeStyle; o2.globalAlpha = o1.globalAlpha; o2.arcScaleX_ = o1.arcScaleX_; o2.arcScaleY_ = o1.arcScaleY_; o2.lineScale_ = o1.lineScale_; } function processStyle(styleString) { var str, alpha = 1; styleString = String(styleString); if (styleString.substring(0, 3) == 'rgb') { var start = styleString.indexOf('(', 3); var end = styleString.indexOf(')', start + 1); var guts = styleString.substring(start + 1, end).split(','); str = '#'; for (var i = 0; i < 3; i++) { str += dec2hex[Number(guts[i])]; } if (guts.length == 4 && styleString.substr(3, 1) == 'a') { alpha = guts[3]; } } else { str = styleString; } return {color: str, alpha: alpha}; } function processLineCap(lineCap) { switch (lineCap) { case 'butt': return 'flat'; case 'round': return 'round'; case 'square': default: return 'square'; } } /** * This class implements CanvasRenderingContext2D interface as described by * the WHATWG. * @param {HTMLElement} surfaceElement The element that the 2D context should * be associated with */ function CanvasRenderingContext2D_(surfaceElement) { this.m_ = createMatrixIdentity(); this.mStack_ = []; this.aStack_ = []; this.currentPath_ = []; // Canvas context properties this.strokeStyle = '#000'; this.fillStyle = '#000'; this.lineWidth = 1; this.lineJoin = 'miter'; this.lineCap = 'butt'; this.miterLimit = Z * 1; this.globalAlpha = 1; this.canvas = surfaceElement; var el = surfaceElement.ownerDocument.createElement('div'); el.style.width = surfaceElement.clientWidth + 'px'; el.style.height = surfaceElement.clientHeight + 'px'; el.style.overflow = 'hidden'; el.style.position = 'absolute'; surfaceElement.appendChild(el); this.element_ = el; this.arcScaleX_ = 1; this.arcScaleY_ = 1; this.lineScale_ = 1; } var contextPrototype = CanvasRenderingContext2D_.prototype; contextPrototype.clearRect = function() { this.element_.innerHTML = ''; }; contextPrototype.beginPath = function() { // TODO: Branch current matrix so that save/restore has no effect // as per safari docs. this.currentPath_ = []; }; contextPrototype.moveTo = function(aX, aY) { var p = this.getCoords_(aX, aY); this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y}); this.currentX_ = p.x; this.currentY_ = p.y; }; contextPrototype.lineTo = function(aX, aY) { var p = this.getCoords_(aX, aY); this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y}); this.currentX_ = p.x; this.currentY_ = p.y; }; contextPrototype.bezierCurveTo = function(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) { var p = this.getCoords_(aX, aY); var cp1 = this.getCoords_(aCP1x, aCP1y); var cp2 = this.getCoords_(aCP2x, aCP2y); bezierCurveTo(this, cp1, cp2, p); }; // Helper function that takes the already fixed cordinates. function bezierCurveTo(self, cp1, cp2, p) { self.currentPath_.push({ type: 'bezierCurveTo', cp1x: cp1.x, cp1y: cp1.y, cp2x: cp2.x, cp2y: cp2.y, x: p.x, y: p.y }); self.currentX_ = p.x; self.currentY_ = p.y; } contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) { // the following is lifted almost directly from // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes var cp = this.getCoords_(aCPx, aCPy); var p = this.getCoords_(aX, aY); var cp1 = { x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_), y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_) }; var cp2 = { x: cp1.x + (p.x - this.currentX_) / 3.0, y: cp1.y + (p.y - this.currentY_) / 3.0 }; bezierCurveTo(this, cp1, cp2, p); }; contextPrototype.arc = function(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) { aRadius *= Z; var arcType = aClockwise ? 'at' : 'wa'; var xStart = aX + mc(aStartAngle) * aRadius - Z2; var yStart = aY + ms(aStartAngle) * aRadius - Z2; var xEnd = aX + mc(aEndAngle) * aRadius - Z2; var yEnd = aY + ms(aEndAngle) * aRadius - Z2; // IE won't render arches drawn counter clockwise if xStart == xEnd. if (xStart == xEnd && !aClockwise) { xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something // that can be represented in binary } var p = this.getCoords_(aX, aY); var pStart = this.getCoords_(xStart, yStart); var pEnd = this.getCoords_(xEnd, yEnd); this.currentPath_.push({type: arcType, x: p.x, y: p.y, radius: aRadius, xStart: pStart.x, yStart: pStart.y, xEnd: pEnd.x, yEnd: pEnd.y}); }; contextPrototype.rect = function(aX, aY, aWidth, aHeight) { this.moveTo(aX, aY); this.lineTo(aX + aWidth, aY); this.lineTo(aX + aWidth, aY + aHeight); this.lineTo(aX, aY + aHeight); this.closePath(); }; contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) { var oldPath = this.currentPath_; this.beginPath(); this.moveTo(aX, aY); this.lineTo(aX + aWidth, aY); this.lineTo(aX + aWidth, aY + aHeight); this.lineTo(aX, aY + aHeight); this.closePath(); this.stroke(); this.currentPath_ = oldPath; }; contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) { var oldPath = this.currentPath_; this.beginPath(); this.moveTo(aX, aY); this.lineTo(aX + aWidth, aY); this.lineTo(aX + aWidth, aY + aHeight); this.lineTo(aX, aY + aHeight); this.closePath(); this.fill(); this.currentPath_ = oldPath; }; contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) { var gradient = new CanvasGradient_('gradient'); gradient.x0_ = aX0; gradient.y0_ = aY0; gradient.x1_ = aX1; gradient.y1_ = aY1; return gradient; }; contextPrototype.createRadialGradient = function(aX0, aY0, aR0, aX1, aY1, aR1) { var gradient = new CanvasGradient_('gradientradial'); gradient.x0_ = aX0; gradient.y0_ = aY0; gradient.r0_ = aR0; gradient.x1_ = aX1; gradient.y1_ = aY1; gradient.r1_ = aR1; return gradient; }; contextPrototype.drawImage = function(image, var_args) { var dx, dy, dw, dh, sx, sy, sw, sh; // to find the original width we overide the width and height var oldRuntimeWidth = image.runtimeStyle.width; var oldRuntimeHeight = image.runtimeStyle.height; image.runtimeStyle.width = 'auto'; image.runtimeStyle.height = 'auto'; // get the original size var w = image.width; var h = image.height; // and remove overides image.runtimeStyle.width = oldRuntimeWidth; image.runtimeStyle.height = oldRuntimeHeight; if (arguments.length == 3) { dx = arguments[1]; dy = arguments[2]; sx = sy = 0; sw = dw = w; sh = dh = h; } else if (arguments.length == 5) { dx = arguments[1]; dy = arguments[2]; dw = arguments[3]; dh = arguments[4]; sx = sy = 0; sw = w; sh = h; } else if (arguments.length == 9) { sx = arguments[1]; sy = arguments[2]; sw = arguments[3]; sh = arguments[4]; dx = arguments[5]; dy = arguments[6]; dw = arguments[7]; dh = arguments[8]; } else { throw Error('Invalid number of arguments'); } var d = this.getCoords_(dx, dy); var w2 = sw / 2; var h2 = sh / 2; var vmlStr = []; var W = 10; var H = 10; // For some reason that I've now forgotten, using divs didn't work vmlStr.push(' ' , '', ''); this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join('')); }; contextPrototype.stroke = function(aFill) { var lineStr = []; var lineOpen = false; var a = processStyle(aFill ? this.fillStyle : this.strokeStyle); var color = a.color; var opacity = a.alpha * this.globalAlpha; var W = 10; var H = 10; lineStr.push(''); if (!aFill) { var lineWidth = this.lineScale_ * this.lineWidth; // VML cannot correctly render a line if the width is less than 1px. // In that case, we dilute the color to make the line look thinner. if (lineWidth < 1) { opacity *= lineWidth; } lineStr.push( '' ); } else if (typeof this.fillStyle == 'object') { var fillStyle = this.fillStyle; var angle = 0; var focus = {x: 0, y: 0}; // additional offset var shift = 0; // scale factor for offset var expansion = 1; if (fillStyle.type_ == 'gradient') { var x0 = fillStyle.x0_ / this.arcScaleX_; var y0 = fillStyle.y0_ / this.arcScaleY_; var x1 = fillStyle.x1_ / this.arcScaleX_; var y1 = fillStyle.y1_ / this.arcScaleY_; var p0 = this.getCoords_(x0, y0); var p1 = this.getCoords_(x1, y1); var dx = p1.x - p0.x; var dy = p1.y - p0.y; angle = Math.atan2(dx, dy) * 180 / Math.PI; // The angle should be a non-negative number. if (angle < 0) { angle += 360; } // Very small angles produce an unexpected result because they are // converted to a scientific notation string. if (angle < 1e-6) { angle = 0; } } else { var p0 = this.getCoords_(fillStyle.x0_, fillStyle.y0_); var width = max.x - min.x; var height = max.y - min.y; focus = { x: (p0.x - min.x) / width, y: (p0.y - min.y) / height }; width /= this.arcScaleX_ * Z; height /= this.arcScaleY_ * Z; var dimension = m.max(width, height); shift = 2 * fillStyle.r0_ / dimension; expansion = 2 * fillStyle.r1_ / dimension - shift; } // We need to sort the color stops in ascending order by offset, // otherwise IE won't interpret it correctly. var stops = fillStyle.colors_; stops.sort(function(cs1, cs2) { return cs1.offset - cs2.offset; }); var length = stops.length; var color1 = stops[0].color; var color2 = stops[length - 1].color; var opacity1 = stops[0].alpha * this.globalAlpha; var opacity2 = stops[length - 1].alpha * this.globalAlpha; var colors = []; for (var i = 0; i < length; i++) { var stop = stops[i]; colors.push(stop.offset * expansion + shift + ' ' + stop.color); } // When colors attribute is used, the meanings of opacity and o:opacity2 // are reversed. lineStr.push(''); } else { lineStr.push(''); } lineStr.push(''); this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); }; contextPrototype.fill = function() { this.stroke(true); } contextPrototype.closePath = function() { this.currentPath_.push({type: 'close'}); }; /** * @private */ contextPrototype.getCoords_ = function(aX, aY) { var m = this.m_; return { x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2, y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2 } }; contextPrototype.save = function() { var o = {}; copyState(this, o); this.aStack_.push(o); this.mStack_.push(this.m_); this.m_ = matrixMultiply(createMatrixIdentity(), this.m_); }; contextPrototype.restore = function() { copyState(this.aStack_.pop(), this); this.m_ = this.mStack_.pop(); }; function matrixIsFinite(m) { for (var j = 0; j < 3; j++) { for (var k = 0; k < 2; k++) { if (!isFinite(m[j][k]) || isNaN(m[j][k])) { return false; } } } return true; } function setM(ctx, m, updateLineScale) { if (!matrixIsFinite(m)) { return; } ctx.m_ = m; if (updateLineScale) { // Get the line scale. // Determinant of this.m_ means how much the area is enlarged by the // transformation. So its square root can be used as a scale factor // for width. var det = m[0][0] * m[1][1] - m[0][1] * m[1][0]; ctx.lineScale_ = sqrt(abs(det)); } } contextPrototype.translate = function(aX, aY) { var m1 = [ [1, 0, 0], [0, 1, 0], [aX, aY, 1] ]; setM(this, matrixMultiply(m1, this.m_), false); }; contextPrototype.rotate = function(aRot) { var c = mc(aRot); var s = ms(aRot); var m1 = [ [c, s, 0], [-s, c, 0], [0, 0, 1] ]; setM(this, matrixMultiply(m1, this.m_), false); }; contextPrototype.scale = function(aX, aY) { this.arcScaleX_ *= aX; this.arcScaleY_ *= aY; var m1 = [ [aX, 0, 0], [0, aY, 0], [0, 0, 1] ]; setM(this, matrixMultiply(m1, this.m_), true); }; contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) { var m1 = [ [m11, m12, 0], [m21, m22, 0], [dx, dy, 1] ]; setM(this, matrixMultiply(m1, this.m_), true); }; contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) { var m = [ [m11, m12, 0], [m21, m22, 0], [dx, dy, 1] ]; setM(this, m, true); }; /******** STUBS ********/ contextPrototype.clip = function() { // TODO: Implement }; contextPrototype.arcTo = function() { // TODO: Implement }; contextPrototype.createPattern = function() { return new CanvasPattern_; }; // Gradient / Pattern Stubs function CanvasGradient_(aType) { this.type_ = aType; this.x0_ = 0; this.y0_ = 0; this.r0_ = 0; this.x1_ = 0; this.y1_ = 0; this.r1_ = 0; this.colors_ = []; } CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) { aColor = processStyle(aColor); this.colors_.push({offset: aOffset, color: aColor.color, alpha: aColor.alpha}); }; function CanvasPattern_() {} // set up externs G_vmlCanvasManager = G_vmlCanvasManager_; CanvasRenderingContext2D = CanvasRenderingContext2D_; CanvasGradient = CanvasGradient_; CanvasPattern = CanvasPattern_; })(); } // if ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/jquery-easy-pie-chart/examples/index.html ================================================ Easy Pie Chart

              EASY PIE CHART

              55%
              New visits
              46%
              Bounce rate
              92%
              Server load
              752MB
              Used RAM
              55%
              New visits
              46%
              Bounce rate
              92%
              Server load
              752MB
              Used RAM

              Update pie charts

              Inspired by: Simple Pie Charts II by Rafal Bromirski on dribble

              ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/jquery-easy-pie-chart/examples/style.css ================================================ body { font: 13px/1.4 'Helvetica Neue', 'Helvetica','Arial', sans-serif; color: #333; } .container { width: 520px; margin: auto; } h1 { border-bottom: 1px solid #d9d9d9; } a { color: #be2221; text-decoration: none; } .chart { float: left; margin: 10px; } .percentage, .label { text-align: center; color: #333; font-weight: 100; font-size: 1.2em; margin-bottom: 0.3em; } .credits { padding-top: 0.5em; clear: both; color: #999; } .credits a { color: #333; } .dark { background: #333; } .dark .percentage-light, .dark .label { text-align: center; color: #999; font-weight: 100; font-size: 1.2em; margin-bottom: 0.3em; } .button { -webkit-box-shadow: inset 0 0 1px #000, inset 0 1px 0 1px rgba(255,255,255,0.2), 0 1px 1px -1px rgba(0, 0, 0, .5); -moz-box-shadow: inset 0 0 1px #000, inset 0 1px 0 1px rgba(255,255,255,0.2), 0 1px 1px -1px rgba(0, 0, 0, .5); box-shadow: inset 0 0 1px #000, inset 0 1px 0 1px rgba(255,255,255,0.2), 0 1px 1px -1px rgba(0, 0, 0, .5); -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; padding: 6px 20px; font-weight: bold; text-transform: uppercase; display: block; margin: auto; max-width: 200px; text-align: center; background-color: #5c5c5c; background-image: -moz-linear-gradient(top, #666666, #4d4d4d); background-image: -ms-linear-gradient(top, #666666, #4d4d4d); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#666666), to(#4d4d4d)); background-image: -webkit-linear-gradient(top, #666666, #4d4d4d); background-image: -o-linear-gradient(top, #666666, #4d4d4d); background-image: linear-gradient(top, #666666, #4d4d4d); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#666666', endColorstr='#4d4d4d', GradientType=0); color: #ffffff; text-shadow: 0 1px 1px #333333; } .button:hover { color: #ffffff; text-decoration: none; background-color: #616161; background-image: -moz-linear-gradient(top, #6b6b6b, #525252); background-image: -ms-linear-gradient(top, #6b6b6b, #525252); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#6b6b6b), to(#525252)); background-image: -webkit-linear-gradient(top, #6b6b6b, #525252); background-image: -o-linear-gradient(top, #6b6b6b, #525252); background-image: linear-gradient(top, #6b6b6b, #525252); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#6b6b6b', endColorstr='#525252', GradientType=0); } .button:active { background-color: #575757; background-image: -moz-linear-gradient(top, #616161, #474747); background-image: -ms-linear-gradient(top, #616161, #474747); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#616161), to(#474747)); background-image: -webkit-linear-gradient(top, #616161, #474747); background-image: -o-linear-gradient(top, #616161, #474747); background-image: linear-gradient(top, #616161, #474747); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#616161', endColorstr='#474747', GradientType=0); -webkit-transform: translate(0, 1px); -moz-transform: translate(0, 1px); -ms-transform: translate(0, 1px); -o-transform: translate(0, 1px); transform: translate(0, 1px); } .button:disabled { background-color: #dddddd; background-image: -moz-linear-gradient(top, #e7e7e7, #cdcdcd); background-image: -ms-linear-gradient(top, #e7e7e7, #cdcdcd); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e7e7e7), to(#cdcdcd)); background-image: -webkit-linear-gradient(top, #e7e7e7, #cdcdcd); background-image: -o-linear-gradient(top, #e7e7e7, #cdcdcd); background-image: linear-gradient(top, #e7e7e7, #cdcdcd); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e7e7e7', endColorstr='#cdcdcd', GradientType=0); color: #939393; text-shadow: 0 1px 1px #fff; } @media screen and (max-device-width: 480px) { .container{ width: 100%; } } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/jquery-easy-pie-chart/jquery.easy-pie-chart.coffee ================================================ ### Easy pie chart is a jquery plugin to display simple animated pie charts for only one value Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. Built on top of the jQuery library (http://jquery.com) @source: http://github.com/rendro/easy-pie-chart/ @autor: Robert Fleischmann @version: 1.0.1 Inspired by: http://dribbble.com/shots/631074-Simple-Pie-Charts-II?list=popular&offset=210 Thanks to Philip Thrasher for the jquery plugin boilerplate for coffee script ### (($) -> $.easyPieChart = (el, options) -> @el = el @$el = $ el @$el.data "easyPieChart", @ @init = => @options = $.extend {}, $.easyPieChart.defaultOptions, options #get relevant data percent = parseInt @$el.data('percent'), 10 @percentage = 0 #create canvas element and set the origin to the center @canvas = $("").get(0) @$el.append @canvas G_vmlCanvasManager.initElement @canvas if G_vmlCanvasManager? @ctx = @canvas.getContext '2d' if window.devicePixelRatio > 1 scaleBy = window.devicePixelRatio $(@canvas).css({ width: @options.size height: @options.size }) @canvas.width *= scaleBy @canvas.height *= scaleBy @ctx.scale scaleBy, scaleBy @ctx.translate @options.size/2, @options.size/2 @$el.addClass 'easyPieChart' @$el.css { width: @options.size height: @options.size lineHeight: "#{@options.size}px" } @update percent @ @update = (percent) => if @options.animate == false drawLine percent else animateLine @percentage, percent renderScale = => @ctx.fillStyle = @options.scaleColor @ctx.lineWidth = 1 addScaleLine i for i in [0..24] addScaleLine = (i) => offset = if i%6==0 then 0 else @options.size*0.017 @ctx.save() @ctx.rotate i * Math.PI / 12 @ctx.fillRect @options.size/2-offset, 0, -@options.size*0.05+offset, 1 @ctx.restore() renderTrack = => offset = @options.size/2-@options.lineWidth/2 offset -= @options.size*0.08 if @options.scaleColor != false @ctx.beginPath() @ctx.arc 0, 0, offset, 0, Math.PI * 2, true @ctx.closePath() @ctx.strokeStyle = @options.trackColor @ctx.lineWidth = @options.lineWidth @ctx.stroke() renderBackground = => do renderScale if @options.scaleColor != false do renderTrack if @options.trackColor != false drawLine = (percent) => do renderBackground @ctx.strokeStyle = if $.isFunction @options.barColor then @options.barColor percent else @options.barColor @ctx.lineCap = @options.lineCap @ctx.lineWidth = @options.lineWidth offset = @options.size/2-@options.lineWidth/2 offset -= @options.size*0.08 if @options.scaleColor != false @ctx.save() @ctx.rotate -Math.PI/2 @ctx.beginPath() @ctx.arc 0, 0, offset, 0, Math.PI * 2 * percent/100, false @ctx.stroke() @ctx.restore() animateLine = (from, to) => fps = 30 steps = fps * @options.animate/1000 currentStep = 0 @options.onStart.call @ @percentage = to if @animation clearInterval @animation @animation = false @animation = setInterval => @ctx.clearRect -@options.size/2, -@options.size/2, @options.size, @options.size renderBackground.call @ drawLine.call @, [easeInOutQuad currentStep, from, to-from, steps] currentStep++ if (currentStep/steps) > 1 clearInterval @animation @animation = false @options.onStop.call @ , 1000/fps #t=time;b=beginning value;c=change in value;d=duration easeInOutQuad = (t, b, c, d) -> easeIn = (t) -> return Math.pow(t, 2) # Quad easing = (t) -> if (t < 1) return easeIn(t) else return 2 - easeIn( (t/2) * -2 + 2 ) t /= d / 2 return c / 2 * easing(t) + b @init() $.easyPieChart.defaultOptions = barColor: '#ef1e25' trackColor: '#f2f2f2' scaleColor: '#dfe0e0' lineCap: 'round' size: 110 lineWidth: 3 animate: false onStart: $.noop onStop: $.noop $.fn.easyPieChart = (options) -> $.each @, (i, el) -> $el = ($ el) unless $el.data 'easyPieChart' $el.data 'easyPieChart', new $.easyPieChart el, options undefined )(jQuery) ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/jquery-easy-pie-chart/jquery.easy-pie-chart.css ================================================ .easyPieChart { position: relative; text-align: center; } .easyPieChart canvas { position: absolute; top: 0; left: 0; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/assets/jquery-easy-pie-chart/jquery.easy-pie-chart.js ================================================ // Generated by CoffeeScript 1.4.0 /* Easy pie chart is a jquery plugin to display simple animated pie charts for only one value Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. Built on top of the jQuery library (http://jquery.com) @source: http://github.com/rendro/easy-pie-chart/ @autor: Robert Fleischmann @version: 1.0.1 Inspired by: http://dribbble.com/shots/631074-Simple-Pie-Charts-II?list=popular&offset=210 Thanks to Philip Thrasher for the jquery plugin boilerplate for coffee script */ (function() { (function($) { $.easyPieChart = function(el, options) { var addScaleLine, animateLine, drawLine, easeInOutQuad, renderBackground, renderScale, renderTrack, _this = this; this.el = el; this.$el = $(el); this.$el.data("easyPieChart", this); this.init = function() { var percent; _this.options = $.extend({}, $.easyPieChart.defaultOptions, options); percent = parseInt(_this.$el.data('percent'), 10); _this.percentage = 0; _this.canvas = $("").get(0); _this.$el.append(_this.canvas); if (typeof G_vmlCanvasManager !== "undefined" && G_vmlCanvasManager !== null) { G_vmlCanvasManager.initElement(_this.canvas); } _this.ctx = _this.canvas.getContext('2d'); if (window.devicePixelRatio > 1.5) { $(_this.canvas).css({ width: _this.options.size, height: _this.options.size }); _this.canvas.width *= 2; _this.canvas.height *= 2; _this.ctx.scale(2, 2); } _this.ctx.translate(_this.options.size / 2, _this.options.size / 2); _this.$el.addClass('easyPieChart'); _this.$el.css({ width: _this.options.size, height: _this.options.size, lineHeight: "" + _this.options.size + "px" }); _this.update(percent); return _this; }; this.update = function(percent) { if (_this.options.animate === false) { return drawLine(percent); } else { return animateLine(_this.percentage, percent); } }; renderScale = function() { var i, _i, _results; _this.ctx.fillStyle = _this.options.scaleColor; _this.ctx.lineWidth = 1; _results = []; for (i = _i = 0; _i <= 24; i = ++_i) { _results.push(addScaleLine(i)); } return _results; }; addScaleLine = function(i) { var offset; offset = i % 6 === 0 ? 0 : _this.options.size * 0.017; _this.ctx.save(); _this.ctx.rotate(i * Math.PI / 12); _this.ctx.fillRect(_this.options.size / 2 - offset, 0, -_this.options.size * 0.05 + offset, 1); return _this.ctx.restore(); }; renderTrack = function() { var offset; offset = _this.options.size / 2 - _this.options.lineWidth / 2; if (_this.options.scaleColor !== false) { offset -= _this.options.size * 0.08; } _this.ctx.beginPath(); _this.ctx.arc(0, 0, offset, 0, Math.PI * 2, true); _this.ctx.closePath(); _this.ctx.strokeStyle = _this.options.trackColor; _this.ctx.lineWidth = _this.options.lineWidth; return _this.ctx.stroke(); }; renderBackground = function() { if (_this.options.scaleColor !== false) { renderScale(); } if (_this.options.trackColor !== false) { return renderTrack(); } }; drawLine = function(percent) { var offset; renderBackground(); _this.ctx.strokeStyle = $.isFunction(_this.options.barColor) ? _this.options.barColor(percent) : _this.options.barColor; _this.ctx.lineCap = _this.options.lineCap; _this.ctx.lineWidth = _this.options.lineWidth; offset = _this.options.size / 2 - _this.options.lineWidth / 2; if (_this.options.scaleColor !== false) { offset -= _this.options.size * 0.08; } _this.ctx.save(); _this.ctx.rotate(-Math.PI / 2); _this.ctx.beginPath(); _this.ctx.arc(0, 0, offset, 0, Math.PI * 2 * percent / 100, false); _this.ctx.stroke(); return _this.ctx.restore(); }; animateLine = function(from, to) { var currentStep, fps, steps; fps = 30; steps = fps * _this.options.animate / 1000; currentStep = 0; _this.options.onStart.call(_this); _this.percentage = to; if (_this.animation) { clearInterval(_this.animation); _this.animation = false; } return _this.animation = setInterval(function() { _this.ctx.clearRect(-_this.options.size / 2, -_this.options.size / 2, _this.options.size, _this.options.size); renderBackground.call(_this); drawLine.call(_this, [easeInOutQuad(currentStep, from, to - from, steps)]); currentStep++; if ((currentStep / steps) > 1) { clearInterval(_this.animation); _this.animation = false; return _this.options.onStop.call(_this); } }, 1000 / fps); }; easeInOutQuad = function(t, b, c, d) { var easeIn, easing; easeIn = function(t) { return Math.pow(t, 2); }; easing = function(t) { if (t < 1) { return easeIn(t); } else { return 2 - easeIn((t / 2) * -2 + 2); } }; t /= d / 2; return c / 2 * easing(t) + b; }; return this.init(); }; $.easyPieChart.defaultOptions = { barColor: '#ef1e25', trackColor: '#f2f2f2', scaleColor: '#dfe0e0', lineCap: 'round', size: 110, lineWidth: 3, animate: false, onStart: $.noop, onStop: $.noop }; $.fn.easyPieChart = function(options) { return $.each(this, function(i, el) { var $el; $el = $(el); if (!$el.data('easyPieChart')) { return $el.data('easyPieChart', new $.easyPieChart(el, options)); } }); }; return void 0; })(jQuery); }).call(this); ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/css/bootstrap-reset.css ================================================ /*anchor*/ a { color: #667fa0; } a:hover { color: #2A3542; } /*panel*/ .panel { border: none; box-shadow: none; } .panel-heading { border-color:#eff2f7 ; font-size: 16px; font-weight: 300; } .panel-title { color: #2A3542; font-size: 14px; font-weight: 400; margin-bottom: 0; margin-top: 0; font-family: 'Open Sans', sans-serif; } /*label*/ .label { padding: 0.5em 0.8em; } .label-default { background-color: #a1a1a1; } .label-primary { background-color: #59ace2; } .label-success { background-color: #A9D86E; } .label-info { background-color: #8175c7; } .label-warning { background-color: #FCB322; } .label-danger { background-color: #FF6C60; } .label-inverse { background-color: #344860; } /*text color*/ .text-danger { color: #FF6C60; } .text-muted { color: #a1a1a1; } .text-primary { color: #59ace2; } .text-warning { color: #FCB322; } .text-success { color: #A9D86E; } .text-info { color: #8175c7; } /*modal*/ .modal-content { box-shadow: none; border: none; } .modal-header { background: #00A8B3; color: #fff; border-radius: 5px 5px 0 0; -webkit-border-radius: 5px 5px 0 0; border-bottom: none; } .modal-header .close { margin-top: 0; } /*text input*/ .form-control { border: 1px solid #e2e2e4; box-shadow: none; color: #c2c2c2; } .form-control:focus, #focusedInput { border: 1px solid #517397; box-shadow: none; } .form-horizontal .control-label { font-weight: 300; font-size: 14px; text-align: left; } input, textarea, select, button { outline: none !important; } /*list*/ ul { padding-left: 0; } /*button*/ .btn-default { background-color: #bec3c7; border-color: #bec3c7; color: #fff; } .btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default { background-color: #b0b5b9; border-color: #b0b5b9; color: #fff; } .btn-primary { background-color: #41cac0; border-color: #41cac0; color: #FFFFFF; } .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary { background-color: #39b2a9; border-color: #39b2a9; color: #FFFFFF; } .btn-success { background-color: #78CD51; border-color: #78CD51; color: #FFFFFF; } .btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success { background-color: #6dbb4a; border-color: #6dbb4a; color: #FFFFFF; } .btn-info { background-color: #58c9f3; border-color: #58c9f3; color: #FFFFFF; } .btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info { background-color: #53bee6; border-color: #53BEE6; color: #FFFFFF; } .btn-warning { background-color: #f1c500; border-color: #f1c500; color: #FFFFFF; } .btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning { background-color: #e4ba00; border-color: #e4ba00; color: #FFFFFF; } .btn-danger { background-color: #ff6c60; border-color: #ff6c60; color: #FFFFFF; } .btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger { background-color: #ec6459; border-color: #ec6459; color: #FFFFFF; } .btn-white { box-shadow: none !important; } /*Rounded Button*/ .btn-round { border-radius: 30px; -webkit-border-radius: 30px; } /*shadow button*/ .btn-shadow.btn-default { box-shadow: 0 4px #9c9c9c; } .btn-shadow.btn-primary { box-shadow: 0 4px #29b392; } .btn-shadow.btn-success { box-shadow: 0 4px #61a642; } .btn-shadow.btn-info { box-shadow: 0 4px #1caadc; } .btn-shadow.btn-warning { box-shadow: 0 4px #cab03f; } .btn-shadow.btn-danger { box-shadow: 0 4px #d1595a; } /*dropdown shadow*/ .btn-group.open .dropdown-toggle, .btn-white.active, .btn:active, .btn.active { box-shadow: none; } /*dropdown select bg*/ .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { background-color: #495d74; color: #FFFFFF; text-decoration: none; } /*split dropdown btn*/ .btn-white { background-clip: padding-box; background-color: #FFFFFF; border-color: rgba(150, 160, 180, 0.3); box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.05) inset; } /*breadcrumbs*/ .breadcrumb { background-color: #fff; } /*tab*/ .nav-tabs > li > a { margin-right: 1px; } /*collapse*/ .panel-default > .panel-heading { background-color: #FFFFFF; border-color: #DDDDDD; color: #797979; } /*nav inverse*/ .navbar-inverse { background-color: #7087A3; border-color: #7087A3; } .navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus, .navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:focus{ background-color: #61748d; } .navbar-inverse .navbar-nav > li a:hover { color: #2A3542; } .navbar-inverse .navbar-nav > li > ul > li a:hover { color: #fff; } .navbar-inverse .navbar-brand { color: #FFFFFF; } .navbar-inverse .navbar-nav > li > a { color: #fff; } .navbar-inverse .navbar-nav > .dropdown > a .caret { border-bottom-color: #fff; border-top-color: #fff; } .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { color: #000; } .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover { color: #fff; } /*nav justified*/ .nav-justified { width: auto !important; } .nav-justified li:last-child > a:hover, .nav-justified li.active:last-child > a { border-radius: 0 4px 0 0 !important; -webkit-border-radius: 0 4px 0 0 !important; } /*list group*/ .list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus { background-color: #00A8B3; border-color: #00A8B3; color: #FFFFFF; z-index: 2; } .list-group-item-heading { font-weight: 300; } /*progress*/ .progress { box-shadow: none; background: #f0f2f7; } /*alert*/ .alert-success, .alert-danger, .alert-info, .alert-warning { border: none; } /*table*/ .table thead > tr > th, .table tbody > tr > th, .table tfoot > tr > th, .table thead > tr > td, .table tbody > tr > td, .table tfoot > tr > td { padding: 10px; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/css/bootstrap.css ================================================ /*! * Bootstrap v3.0.2 by @fat and @mdo * Copyright 2013 Twitter, Inc. * Licensed under http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world by @mdo and @fat. */ /*! normalize.css v2.1.3 | MIT License | git.io/normalize */ article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } audio, canvas, video { display: inline-block; } audio:not([controls]) { display: none; height: 0; } [hidden], template { display: none; } html { font-family: sans-serif; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } body { margin: 0; } a { background: transparent; } a:focus { outline: thin dotted; } a:active, a:hover { outline: 0; } h1 { margin: 0.67em 0; font-size: 2em; } abbr[title] { border-bottom: 1px dotted; } b, strong { font-weight: bold; } dfn { font-style: italic; } hr { height: 0; -moz-box-sizing: content-box; box-sizing: content-box; } mark { color: #000; background: #ff0; } code, kbd, pre, samp { font-family: monospace, serif; font-size: 1em; } pre { white-space: pre-wrap; } q { quotes: "\201C" "\201D" "\2018" "\2019"; } small { font-size: 80%; } sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } img { border: 0; } svg:not(:root) { overflow: hidden; } figure { margin: 0; } fieldset { padding: 0.35em 0.625em 0.75em; margin: 0 2px; border: 1px solid #c0c0c0; } legend { padding: 0; border: 0; } button, input, select, textarea { margin: 0; font-family: inherit; font-size: 100%; } button, input { line-height: normal; } button, select { text-transform: none; } button, html input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; } button[disabled], html input[disabled] { cursor: default; } input[type="checkbox"], input[type="radio"] { padding: 0; box-sizing: border-box; } input[type="search"] { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; -webkit-appearance: textfield; } input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } button::-moz-focus-inner, input::-moz-focus-inner { padding: 0; border: 0; } textarea { overflow: auto; vertical-align: top; } table { border-collapse: collapse; border-spacing: 0; } @media print { * { color: #000 !important; text-shadow: none !important; background: transparent !important; box-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } thead { display: table-header-group; } tr, img { page-break-inside: avoid; } img { max-width: 100% !important; } @page { margin: 2cm .5cm; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } select { background: #fff !important; } .navbar { display: none; } .table td, .table th { background-color: #fff !important; } .btn > .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px solid #000; } .table { border-collapse: collapse !important; } .table-bordered th, .table-bordered td { border: 1px solid #ddd !important; } } *, *:before, *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } html { font-size: 62.5%; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } body { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.428571429; color: #333333; background-color: #ffffff; } input, button, select, textarea { font-family: inherit; font-size: inherit; line-height: inherit; } a { color: #428bca; text-decoration: none; } a:hover, a:focus { color: #2a6496; text-decoration: underline; } a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } img { vertical-align: middle; } .img-responsive { display: block; height: auto; max-width: 100%; } .img-rounded { border-radius: 6px; } .img-thumbnail { display: inline-block; height: auto; max-width: 100%; padding: 4px; line-height: 1.428571429; background-color: #ffffff; border: 1px solid #dddddd; border-radius: 4px; -webkit-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } .img-circle { border-radius: 50%; } hr { margin-top: 20px; margin-bottom: 20px; border: 0; border-top: 1px solid #eeeeee; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); border: 0; } p { margin: 0 0 10px; } .lead { margin-bottom: 20px; font-size: 16px; font-weight: 200; line-height: 1.4; } @media (min-width: 768px) { .lead { font-size: 21px; } } small, .small { font-size: 85%; } cite { font-style: normal; } .text-muted { color: #999999; } .text-primary { color: #428bca; } .text-primary:hover { color: #3071a9; } .text-warning { color: #c09853; } .text-warning:hover { color: #a47e3c; } .text-danger { color: #b94a48; } .text-danger:hover { color: #953b39; } .text-success { color: #468847; } .text-success:hover { color: #356635; } .text-info { color: #3a87ad; } .text-info:hover { color: #2d6987; } .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: 500; line-height: 1.1; color: inherit; } h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small { font-weight: normal; line-height: 1; color: #999999; } h1, h2, h3 { margin-top: 20px; margin-bottom: 10px; } h1 small, h2 small, h3 small, h1 .small, h2 .small, h3 .small { font-size: 65%; } h4, h5, h6 { margin-top: 10px; margin-bottom: 10px; } h4 small, h5 small, h6 small, h4 .small, h5 .small, h6 .small { font-size: 75%; } h1, .h1 { font-size: 36px; } h2, .h2 { font-size: 30px; } h3, .h3 { font-size: 24px; } h4, .h4 { font-size: 18px; } h5, .h5 { font-size: 14px; } h6, .h6 { font-size: 12px; } .page-header { padding-bottom: 9px; margin: 40px 0 20px; border-bottom: 1px solid #eeeeee; } ul, ol { margin-top: 0; margin-bottom: 10px; } ul ul, ol ul, ul ol, ol ol { margin-bottom: 0; } .list-unstyled { padding-left: 0; list-style: none; } .list-inline { padding-left: 0; list-style: none; } .list-inline > li { display: inline-block; padding-right: 5px; padding-left: 5px; } .list-inline > li:first-child { padding-left: 0; } dl { margin-bottom: 20px; } dt, dd { line-height: 1.428571429; } dt { font-weight: bold; } dd { margin-left: 0; } @media (min-width: 768px) { .dl-horizontal dt { float: left; width: 160px; overflow: hidden; clear: left; text-align: right; text-overflow: ellipsis; white-space: nowrap; } .dl-horizontal dd { margin-left: 180px; } .dl-horizontal dd:before, .dl-horizontal dd:after { display: table; content: " "; } .dl-horizontal dd:after { clear: both; } .dl-horizontal dd:before, .dl-horizontal dd:after { display: table; content: " "; } .dl-horizontal dd:after { clear: both; } } abbr[title], abbr[data-original-title] { cursor: help; border-bottom: 1px dotted #999999; } abbr.initialism { font-size: 90%; text-transform: uppercase; } blockquote { padding: 10px 20px; margin: 0 0 20px; border-left: 5px solid #eeeeee; } blockquote p { font-size: 17.5px; font-weight: 300; line-height: 1.25; } blockquote p:last-child { margin-bottom: 0; } blockquote small { display: block; line-height: 1.428571429; color: #999999; } blockquote small:before { content: '\2014 \00A0'; } blockquote.pull-right { padding-right: 15px; padding-left: 0; border-right: 5px solid #eeeeee; border-left: 0; } blockquote.pull-right p, blockquote.pull-right small, blockquote.pull-right .small { text-align: right; } blockquote.pull-right small:before, blockquote.pull-right .small:before { content: ''; } blockquote.pull-right small:after, blockquote.pull-right .small:after { content: '\00A0 \2014'; } blockquote:before, blockquote:after { content: ""; } address { margin-bottom: 20px; font-style: normal; line-height: 1.428571429; } code, kbd, pre, samp { font-family: Monaco, Menlo, Consolas, "Courier New", monospace; } code { padding: 2px 4px; font-size: 90%; color: #c7254e; white-space: nowrap; background-color: #f9f2f4; border-radius: 4px; } pre { display: block; padding: 9.5px; margin: 0 0 10px; font-size: 13px; line-height: 1.428571429; color: #333333; word-break: break-all; word-wrap: break-word; background-color: #f5f5f5; border: 1px solid #cccccc; border-radius: 4px; } pre code { padding: 0; font-size: inherit; color: inherit; white-space: pre-wrap; background-color: transparent; border-radius: 0; } .pre-scrollable { max-height: 340px; overflow-y: scroll; } .container { padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto; } .container:before, .container:after { display: table; content: " "; } .container:after { clear: both; } .container:before, .container:after { display: table; content: " "; } .container:after { clear: both; } .row { margin-right: -15px; margin-left: -15px; } .row:before, .row:after { display: table; content: " "; } .row:after { clear: both; } .row:before, .row:after { display: table; content: " "; } .row:after { clear: both; } .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { position: relative; min-height: 1px; padding-right: 15px; padding-left: 15px; } .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11 { float: left; } .col-xs-12 { width: 100%; } .col-xs-11 { width: 91.66666666666666%; } .col-xs-10 { width: 83.33333333333334%; } .col-xs-9 { width: 75%; } .col-xs-8 { width: 66.66666666666666%; } .col-xs-7 { width: 58.333333333333336%; } .col-xs-6 { width: 50%; } .col-xs-5 { width: 41.66666666666667%; } .col-xs-4 { width: 33.33333333333333%; } .col-xs-3 { width: 25%; } .col-xs-2 { width: 16.666666666666664%; } .col-xs-1 { width: 8.333333333333332%; } .col-xs-pull-12 { right: 100%; } .col-xs-pull-11 { right: 91.66666666666666%; } .col-xs-pull-10 { right: 83.33333333333334%; } .col-xs-pull-9 { right: 75%; } .col-xs-pull-8 { right: 66.66666666666666%; } .col-xs-pull-7 { right: 58.333333333333336%; } .col-xs-pull-6 { right: 50%; } .col-xs-pull-5 { right: 41.66666666666667%; } .col-xs-pull-4 { right: 33.33333333333333%; } .col-xs-pull-3 { right: 25%; } .col-xs-pull-2 { right: 16.666666666666664%; } .col-xs-pull-1 { right: 8.333333333333332%; } .col-xs-pull-0 { right: 0; } .col-xs-push-12 { left: 100%; } .col-xs-push-11 { left: 91.66666666666666%; } .col-xs-push-10 { left: 83.33333333333334%; } .col-xs-push-9 { left: 75%; } .col-xs-push-8 { left: 66.66666666666666%; } .col-xs-push-7 { left: 58.333333333333336%; } .col-xs-push-6 { left: 50%; } .col-xs-push-5 { left: 41.66666666666667%; } .col-xs-push-4 { left: 33.33333333333333%; } .col-xs-push-3 { left: 25%; } .col-xs-push-2 { left: 16.666666666666664%; } .col-xs-push-1 { left: 8.333333333333332%; } .col-xs-push-0 { left: 0; } .col-xs-offset-12 { margin-left: 100%; } .col-xs-offset-11 { margin-left: 91.66666666666666%; } .col-xs-offset-10 { margin-left: 83.33333333333334%; } .col-xs-offset-9 { margin-left: 75%; } .col-xs-offset-8 { margin-left: 66.66666666666666%; } .col-xs-offset-7 { margin-left: 58.333333333333336%; } .col-xs-offset-6 { margin-left: 50%; } .col-xs-offset-5 { margin-left: 41.66666666666667%; } .col-xs-offset-4 { margin-left: 33.33333333333333%; } .col-xs-offset-3 { margin-left: 25%; } .col-xs-offset-2 { margin-left: 16.666666666666664%; } .col-xs-offset-1 { margin-left: 8.333333333333332%; } .col-xs-offset-0 { margin-left: 0; } @media (min-width: 768px) { .container { width: 750px; } .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11 { float: left; } .col-sm-12 { width: 100%; } .col-sm-11 { width: 91.66666666666666%; } .col-sm-10 { width: 83.33333333333334%; } .col-sm-9 { width: 75%; } .col-sm-8 { width: 66.66666666666666%; } .col-sm-7 { width: 58.333333333333336%; } .col-sm-6 { width: 50%; } .col-sm-5 { width: 41.66666666666667%; } .col-sm-4 { width: 33.33333333333333%; } .col-sm-3 { width: 25%; } .col-sm-2 { width: 16.666666666666664%; } .col-sm-1 { width: 8.333333333333332%; } .col-sm-pull-12 { right: 100%; } .col-sm-pull-11 { right: 91.66666666666666%; } .col-sm-pull-10 { right: 83.33333333333334%; } .col-sm-pull-9 { right: 75%; } .col-sm-pull-8 { right: 66.66666666666666%; } .col-sm-pull-7 { right: 58.333333333333336%; } .col-sm-pull-6 { right: 50%; } .col-sm-pull-5 { right: 41.66666666666667%; } .col-sm-pull-4 { right: 33.33333333333333%; } .col-sm-pull-3 { right: 25%; } .col-sm-pull-2 { right: 16.666666666666664%; } .col-sm-pull-1 { right: 8.333333333333332%; } .col-sm-pull-0 { right: 0; } .col-sm-push-12 { left: 100%; } .col-sm-push-11 { left: 91.66666666666666%; } .col-sm-push-10 { left: 83.33333333333334%; } .col-sm-push-9 { left: 75%; } .col-sm-push-8 { left: 66.66666666666666%; } .col-sm-push-7 { left: 58.333333333333336%; } .col-sm-push-6 { left: 50%; } .col-sm-push-5 { left: 41.66666666666667%; } .col-sm-push-4 { left: 33.33333333333333%; } .col-sm-push-3 { left: 25%; } .col-sm-push-2 { left: 16.666666666666664%; } .col-sm-push-1 { left: 8.333333333333332%; } .col-sm-push-0 { left: 0; } .col-sm-offset-12 { margin-left: 100%; } .col-sm-offset-11 { margin-left: 91.66666666666666%; } .col-sm-offset-10 { margin-left: 83.33333333333334%; } .col-sm-offset-9 { margin-left: 75%; } .col-sm-offset-8 { margin-left: 66.66666666666666%; } .col-sm-offset-7 { margin-left: 58.333333333333336%; } .col-sm-offset-6 { margin-left: 50%; } .col-sm-offset-5 { margin-left: 41.66666666666667%; } .col-sm-offset-4 { margin-left: 33.33333333333333%; } .col-sm-offset-3 { margin-left: 25%; } .col-sm-offset-2 { margin-left: 16.666666666666664%; } .col-sm-offset-1 { margin-left: 8.333333333333332%; } .col-sm-offset-0 { margin-left: 0; } } @media (min-width: 992px) { .container { width: 970px; } .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11 { float: left; } .col-md-12 { width: 100%; } .col-md-11 { width: 91.66666666666666%; } .col-md-10 { width: 83.33333333333334%; } .col-md-9 { width: 75%; } .col-md-8 { width: 66.66666666666666%; } .col-md-7 { width: 58.333333333333336%; } .col-md-6 { width: 50%; } .col-md-5 { width: 41.66666666666667%; } .col-md-4 { width: 33.33333333333333%; } .col-md-3 { width: 25%; } .col-md-2 { width: 16.666666666666664%; } .col-md-1 { width: 8.333333333333332%; } .col-md-pull-12 { right: 100%; } .col-md-pull-11 { right: 91.66666666666666%; } .col-md-pull-10 { right: 83.33333333333334%; } .col-md-pull-9 { right: 75%; } .col-md-pull-8 { right: 66.66666666666666%; } .col-md-pull-7 { right: 58.333333333333336%; } .col-md-pull-6 { right: 50%; } .col-md-pull-5 { right: 41.66666666666667%; } .col-md-pull-4 { right: 33.33333333333333%; } .col-md-pull-3 { right: 25%; } .col-md-pull-2 { right: 16.666666666666664%; } .col-md-pull-1 { right: 8.333333333333332%; } .col-md-pull-0 { right: 0; } .col-md-push-12 { left: 100%; } .col-md-push-11 { left: 91.66666666666666%; } .col-md-push-10 { left: 83.33333333333334%; } .col-md-push-9 { left: 75%; } .col-md-push-8 { left: 66.66666666666666%; } .col-md-push-7 { left: 58.333333333333336%; } .col-md-push-6 { left: 50%; } .col-md-push-5 { left: 41.66666666666667%; } .col-md-push-4 { left: 33.33333333333333%; } .col-md-push-3 { left: 25%; } .col-md-push-2 { left: 16.666666666666664%; } .col-md-push-1 { left: 8.333333333333332%; } .col-md-push-0 { left: 0; } .col-md-offset-12 { margin-left: 100%; } .col-md-offset-11 { margin-left: 91.66666666666666%; } .col-md-offset-10 { margin-left: 83.33333333333334%; } .col-md-offset-9 { margin-left: 75%; } .col-md-offset-8 { margin-left: 66.66666666666666%; } .col-md-offset-7 { margin-left: 58.333333333333336%; } .col-md-offset-6 { margin-left: 50%; } .col-md-offset-5 { margin-left: 41.66666666666667%; } .col-md-offset-4 { margin-left: 33.33333333333333%; } .col-md-offset-3 { margin-left: 25%; } .col-md-offset-2 { margin-left: 16.666666666666664%; } .col-md-offset-1 { margin-left: 8.333333333333332%; } .col-md-offset-0 { margin-left: 0; } } @media (min-width: 1200px) { .container { width: 1170px; } .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11 { float: left; } .col-lg-12 { width: 100%; } .col-lg-11 { width: 91.66666666666666%; } .col-lg-10 { width: 83.33333333333334%; } .col-lg-9 { width: 75%; } .col-lg-8 { width: 66.66666666666666%; } .col-lg-7 { width: 58.333333333333336%; } .col-lg-6 { width: 50%; } .col-lg-5 { width: 41.66666666666667%; } .col-lg-4 { width: 33.33333333333333%; } .col-lg-3 { width: 25%; } .col-lg-2 { width: 16.666666666666664%; } .col-lg-1 { width: 8.333333333333332%; } .col-lg-pull-12 { right: 100%; } .col-lg-pull-11 { right: 91.66666666666666%; } .col-lg-pull-10 { right: 83.33333333333334%; } .col-lg-pull-9 { right: 75%; } .col-lg-pull-8 { right: 66.66666666666666%; } .col-lg-pull-7 { right: 58.333333333333336%; } .col-lg-pull-6 { right: 50%; } .col-lg-pull-5 { right: 41.66666666666667%; } .col-lg-pull-4 { right: 33.33333333333333%; } .col-lg-pull-3 { right: 25%; } .col-lg-pull-2 { right: 16.666666666666664%; } .col-lg-pull-1 { right: 8.333333333333332%; } .col-lg-pull-0 { right: 0; } .col-lg-push-12 { left: 100%; } .col-lg-push-11 { left: 91.66666666666666%; } .col-lg-push-10 { left: 83.33333333333334%; } .col-lg-push-9 { left: 75%; } .col-lg-push-8 { left: 66.66666666666666%; } .col-lg-push-7 { left: 58.333333333333336%; } .col-lg-push-6 { left: 50%; } .col-lg-push-5 { left: 41.66666666666667%; } .col-lg-push-4 { left: 33.33333333333333%; } .col-lg-push-3 { left: 25%; } .col-lg-push-2 { left: 16.666666666666664%; } .col-lg-push-1 { left: 8.333333333333332%; } .col-lg-push-0 { left: 0; } .col-lg-offset-12 { margin-left: 100%; } .col-lg-offset-11 { margin-left: 91.66666666666666%; } .col-lg-offset-10 { margin-left: 83.33333333333334%; } .col-lg-offset-9 { margin-left: 75%; } .col-lg-offset-8 { margin-left: 66.66666666666666%; } .col-lg-offset-7 { margin-left: 58.333333333333336%; } .col-lg-offset-6 { margin-left: 50%; } .col-lg-offset-5 { margin-left: 41.66666666666667%; } .col-lg-offset-4 { margin-left: 33.33333333333333%; } .col-lg-offset-3 { margin-left: 25%; } .col-lg-offset-2 { margin-left: 16.666666666666664%; } .col-lg-offset-1 { margin-left: 8.333333333333332%; } .col-lg-offset-0 { margin-left: 0; } } table { max-width: 100%; background-color: transparent; } th { text-align: left; } .table { width: 100%; margin-bottom: 20px; } .table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td { padding: 8px; line-height: 1.428571429; vertical-align: top; border-top: 1px solid #dddddd; } .table > thead > tr > th { vertical-align: bottom; border-bottom: 2px solid #dddddd; } .table > caption + thead > tr:first-child > th, .table > colgroup + thead > tr:first-child > th, .table > thead:first-child > tr:first-child > th, .table > caption + thead > tr:first-child > td, .table > colgroup + thead > tr:first-child > td, .table > thead:first-child > tr:first-child > td { border-top: 0; } .table > tbody + tbody { border-top: 2px solid #dddddd; } .table .table { background-color: #ffffff; } .table-condensed > thead > tr > th, .table-condensed > tbody > tr > th, .table-condensed > tfoot > tr > th, .table-condensed > thead > tr > td, .table-condensed > tbody > tr > td, .table-condensed > tfoot > tr > td { padding: 5px; } .table-bordered { border: 1px solid #dddddd; } .table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td { border: 1px solid #dddddd; } .table-bordered > thead > tr > th, .table-bordered > thead > tr > td { border-bottom-width: 2px; } .table-striped > tbody > tr:nth-child(odd) > td, .table-striped > tbody > tr:nth-child(odd) > th { background-color: #f9f9f9; } .table-hover > tbody > tr:hover > td, .table-hover > tbody > tr:hover > th { background-color: #f5f5f5; } table col[class*="col-"] { display: table-column; float: none; } table td[class*="col-"], table th[class*="col-"] { display: table-cell; float: none; } .table > thead > tr > td.active, .table > tbody > tr > td.active, .table > tfoot > tr > td.active, .table > thead > tr > th.active, .table > tbody > tr > th.active, .table > tfoot > tr > th.active, .table > thead > tr.active > td, .table > tbody > tr.active > td, .table > tfoot > tr.active > td, .table > thead > tr.active > th, .table > tbody > tr.active > th, .table > tfoot > tr.active > th { background-color: #f5f5f5; } .table > thead > tr > td.success, .table > tbody > tr > td.success, .table > tfoot > tr > td.success, .table > thead > tr > th.success, .table > tbody > tr > th.success, .table > tfoot > tr > th.success, .table > thead > tr.success > td, .table > tbody > tr.success > td, .table > tfoot > tr.success > td, .table > thead > tr.success > th, .table > tbody > tr.success > th, .table > tfoot > tr.success > th { background-color: #dff0d8; } .table-hover > tbody > tr > td.success:hover, .table-hover > tbody > tr > th.success:hover, .table-hover > tbody > tr.success:hover > td, .table-hover > tbody > tr.success:hover > th { background-color: #d0e9c6; } .table > thead > tr > td.danger, .table > tbody > tr > td.danger, .table > tfoot > tr > td.danger, .table > thead > tr > th.danger, .table > tbody > tr > th.danger, .table > tfoot > tr > th.danger, .table > thead > tr.danger > td, .table > tbody > tr.danger > td, .table > tfoot > tr.danger > td, .table > thead > tr.danger > th, .table > tbody > tr.danger > th, .table > tfoot > tr.danger > th { background-color: #f2dede; } .table-hover > tbody > tr > td.danger:hover, .table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td, .table-hover > tbody > tr.danger:hover > th { background-color: #ebcccc; } .table > thead > tr > td.warning, .table > tbody > tr > td.warning, .table > tfoot > tr > td.warning, .table > thead > tr > th.warning, .table > tbody > tr > th.warning, .table > tfoot > tr > th.warning, .table > thead > tr.warning > td, .table > tbody > tr.warning > td, .table > tfoot > tr.warning > td, .table > thead > tr.warning > th, .table > tbody > tr.warning > th, .table > tfoot > tr.warning > th { background-color: #fcf8e3; } .table-hover > tbody > tr > td.warning:hover, .table-hover > tbody > tr > th.warning:hover, .table-hover > tbody > tr.warning:hover > td, .table-hover > tbody > tr.warning:hover > th { background-color: #faf2cc; } @media (max-width: 767px) { .table-responsive { width: 100%; margin-bottom: 15px; overflow-x: scroll; overflow-y: hidden; border: 1px solid #dddddd; -ms-overflow-style: -ms-autohiding-scrollbar; -webkit-overflow-scrolling: touch; } .table-responsive > .table { margin-bottom: 0; } .table-responsive > .table > thead > tr > th, .table-responsive > .table > tbody > tr > th, .table-responsive > .table > tfoot > tr > th, .table-responsive > .table > thead > tr > td, .table-responsive > .table > tbody > tr > td, .table-responsive > .table > tfoot > tr > td { white-space: nowrap; } .table-responsive > .table-bordered { border: 0; } .table-responsive > .table-bordered > thead > tr > th:first-child, .table-responsive > .table-bordered > tbody > tr > th:first-child, .table-responsive > .table-bordered > tfoot > tr > th:first-child, .table-responsive > .table-bordered > thead > tr > td:first-child, .table-responsive > .table-bordered > tbody > tr > td:first-child, .table-responsive > .table-bordered > tfoot > tr > td:first-child { border-left: 0; } .table-responsive > .table-bordered > thead > tr > th:last-child, .table-responsive > .table-bordered > tbody > tr > th:last-child, .table-responsive > .table-bordered > tfoot > tr > th:last-child, .table-responsive > .table-bordered > thead > tr > td:last-child, .table-responsive > .table-bordered > tbody > tr > td:last-child, .table-responsive > .table-bordered > tfoot > tr > td:last-child { border-right: 0; } .table-responsive > .table-bordered > tbody > tr:last-child > th, .table-responsive > .table-bordered > tfoot > tr:last-child > th, .table-responsive > .table-bordered > tbody > tr:last-child > td, .table-responsive > .table-bordered > tfoot > tr:last-child > td { border-bottom: 0; } } fieldset { padding: 0; margin: 0; border: 0; } legend { display: block; width: 100%; padding: 0; margin-bottom: 20px; font-size: 21px; line-height: inherit; color: #333333; border: 0; border-bottom: 1px solid #e5e5e5; } label { display: inline-block; margin-bottom: 5px; font-weight: bold; } input[type="search"] { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; margin-top: 1px \9; /* IE8-9 */ line-height: normal; } input[type="file"] { display: block; } select[multiple], select[size] { height: auto; } select optgroup { font-family: inherit; font-size: inherit; font-style: inherit; } input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-inner-spin-button { height: auto; } output { display: block; padding-top: 7px; font-size: 14px; line-height: 1.428571429; color: #555555; vertical-align: middle; } .form-control { display: block; width: 100%; height: 34px; padding: 6px 12px; font-size: 14px; line-height: 1.428571429; color: #555555; vertical-align: middle; background-color: #ffffff; background-image: none; border: 1px solid #cccccc; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; } .form-control:focus { border-color: #66afe9; outline: 0; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); } .form-control:-moz-placeholder { color: #999999; } .form-control::-moz-placeholder { color: #999999; } .form-control:-ms-input-placeholder { color: #999999; } .form-control::-webkit-input-placeholder { color: #999999; } .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { cursor: not-allowed; background-color: #eeeeee; } textarea.form-control { height: auto; } .form-group { margin-bottom: 15px; } .radio, .checkbox { display: block; min-height: 20px; padding-left: 20px; margin-top: 10px; margin-bottom: 10px; vertical-align: middle; } .radio label, .checkbox label { display: inline; margin-bottom: 0; font-weight: normal; cursor: pointer; } .radio input[type="radio"], .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] { float: left; margin-left: -20px; } .radio + .radio, .checkbox + .checkbox { margin-top: -5px; } .radio-inline, .checkbox-inline { display: inline-block; padding-left: 20px; margin-bottom: 0; font-weight: normal; vertical-align: middle; cursor: pointer; } .radio-inline + .radio-inline, .checkbox-inline + .checkbox-inline { margin-top: 0; margin-left: 10px; } input[type="radio"][disabled], input[type="checkbox"][disabled], .radio[disabled], .radio-inline[disabled], .checkbox[disabled], .checkbox-inline[disabled], fieldset[disabled] input[type="radio"], fieldset[disabled] input[type="checkbox"], fieldset[disabled] .radio, fieldset[disabled] .radio-inline, fieldset[disabled] .checkbox, fieldset[disabled] .checkbox-inline { cursor: not-allowed; } .input-sm { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } select.input-sm { height: 30px; line-height: 30px; } textarea.input-sm { height: auto; } .input-lg { height: 45px; padding: 10px 16px; font-size: 18px; line-height: 1.33; border-radius: 6px; } select.input-lg { height: 45px; line-height: 45px; } textarea.input-lg { height: auto; } .has-warning .help-block, .has-warning .control-label, .has-warning .radio, .has-warning .checkbox, .has-warning .radio-inline, .has-warning .checkbox-inline { color: #c09853; } .has-warning .form-control { border-color: #c09853; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .has-warning .form-control:focus { border-color: #a47e3c; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; } .has-warning .input-group-addon { color: #c09853; background-color: #fcf8e3; border-color: #c09853; } .has-error .help-block, .has-error .control-label, .has-error .radio, .has-error .checkbox, .has-error .radio-inline, .has-error .checkbox-inline { color: #b94a48; } .has-error .form-control { border-color: #b94a48; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .has-error .form-control:focus { border-color: #953b39; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; } .has-error .input-group-addon { color: #b94a48; background-color: #f2dede; border-color: #b94a48; } .has-success .help-block, .has-success .control-label, .has-success .radio, .has-success .checkbox, .has-success .radio-inline, .has-success .checkbox-inline { color: #468847; } .has-success .form-control { border-color: #468847; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .has-success .form-control:focus { border-color: #356635; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; } .has-success .input-group-addon { color: #468847; background-color: #dff0d8; border-color: #468847; } .form-control-static { margin-bottom: 0; } .help-block { display: block; margin-top: 5px; margin-bottom: 10px; color: #737373; } @media (min-width: 768px) { .form-inline .form-group { display: inline-block; margin-bottom: 0; vertical-align: middle; } .form-inline .form-control { display: inline-block; } .form-inline .radio, .form-inline .checkbox { display: inline-block; padding-left: 0; margin-top: 0; margin-bottom: 0; } .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { float: none; margin-left: 0; } } .form-horizontal .control-label, .form-horizontal .radio, .form-horizontal .checkbox, .form-horizontal .radio-inline, .form-horizontal .checkbox-inline { padding-top: 7px; margin-top: 0; margin-bottom: 0; } .form-horizontal .form-group { margin-right: -15px; margin-left: -15px; } .form-horizontal .form-group:before, .form-horizontal .form-group:after { display: table; content: " "; } .form-horizontal .form-group:after { clear: both; } .form-horizontal .form-group:before, .form-horizontal .form-group:after { display: table; content: " "; } .form-horizontal .form-group:after { clear: both; } .form-horizontal .form-control-static { padding-top: 7px; } @media (min-width: 768px) { .form-horizontal .control-label { text-align: right; } } .btn { display: inline-block; padding: 6px 12px; margin-bottom: 0; font-size: 14px; font-weight: normal; line-height: 1.428571429; text-align: center; white-space: nowrap; vertical-align: middle; cursor: pointer; background-image: none; border: 1px solid transparent; border-radius: 4px; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; -o-user-select: none; user-select: none; } .btn:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .btn:hover, .btn:focus { color: #333333; text-decoration: none; } .btn:active, .btn.active { background-image: none; outline: 0; -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } .btn.disabled, .btn[disabled], fieldset[disabled] .btn { pointer-events: none; cursor: not-allowed; opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; box-shadow: none; } .btn-default { color: #333333; background-color: #ffffff; border-color: #cccccc; } .btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default { color: #333333; background-color: #ebebeb; border-color: #adadad; } .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default { background-image: none; } .btn-default.disabled, .btn-default[disabled], fieldset[disabled] .btn-default, .btn-default.disabled:hover, .btn-default[disabled]:hover, fieldset[disabled] .btn-default:hover, .btn-default.disabled:focus, .btn-default[disabled]:focus, fieldset[disabled] .btn-default:focus, .btn-default.disabled:active, .btn-default[disabled]:active, fieldset[disabled] .btn-default:active, .btn-default.disabled.active, .btn-default[disabled].active, fieldset[disabled] .btn-default.active { background-color: #ffffff; border-color: #cccccc; } .btn-primary { color: #ffffff; background-color: #428bca; border-color: #357ebd; } .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary { color: #ffffff; background-color: #3276b1; border-color: #285e8e; } .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary { background-image: none; } .btn-primary.disabled, .btn-primary[disabled], fieldset[disabled] .btn-primary, .btn-primary.disabled:hover, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, fieldset[disabled] .btn-primary:active, .btn-primary.disabled.active, .btn-primary[disabled].active, fieldset[disabled] .btn-primary.active { background-color: #428bca; border-color: #357ebd; } .btn-warning { color: #ffffff; background-color: #f0ad4e; border-color: #eea236; } .btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning { color: #ffffff; background-color: #ed9c28; border-color: #d58512; } .btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning { background-image: none; } .btn-warning.disabled, .btn-warning[disabled], fieldset[disabled] .btn-warning, .btn-warning.disabled:hover, .btn-warning[disabled]:hover, fieldset[disabled] .btn-warning:hover, .btn-warning.disabled:focus, .btn-warning[disabled]:focus, fieldset[disabled] .btn-warning:focus, .btn-warning.disabled:active, .btn-warning[disabled]:active, fieldset[disabled] .btn-warning:active, .btn-warning.disabled.active, .btn-warning[disabled].active, fieldset[disabled] .btn-warning.active { background-color: #f0ad4e; border-color: #eea236; } .btn-danger { color: #ffffff; background-color: #d9534f; border-color: #d43f3a; } .btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger { color: #ffffff; background-color: #d2322d; border-color: #ac2925; } .btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger { background-image: none; } .btn-danger.disabled, .btn-danger[disabled], fieldset[disabled] .btn-danger, .btn-danger.disabled:hover, .btn-danger[disabled]:hover, fieldset[disabled] .btn-danger:hover, .btn-danger.disabled:focus, .btn-danger[disabled]:focus, fieldset[disabled] .btn-danger:focus, .btn-danger.disabled:active, .btn-danger[disabled]:active, fieldset[disabled] .btn-danger:active, .btn-danger.disabled.active, .btn-danger[disabled].active, fieldset[disabled] .btn-danger.active { background-color: #d9534f; border-color: #d43f3a; } .btn-success { color: #ffffff; background-color: #5cb85c; border-color: #4cae4c; } .btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success { color: #ffffff; background-color: #47a447; border-color: #398439; } .btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success { background-image: none; } .btn-success.disabled, .btn-success[disabled], fieldset[disabled] .btn-success, .btn-success.disabled:hover, .btn-success[disabled]:hover, fieldset[disabled] .btn-success:hover, .btn-success.disabled:focus, .btn-success[disabled]:focus, fieldset[disabled] .btn-success:focus, .btn-success.disabled:active, .btn-success[disabled]:active, fieldset[disabled] .btn-success:active, .btn-success.disabled.active, .btn-success[disabled].active, fieldset[disabled] .btn-success.active { background-color: #5cb85c; border-color: #4cae4c; } .btn-info { color: #ffffff; background-color: #5bc0de; border-color: #46b8da; } .btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info { color: #ffffff; background-color: #39b3d7; border-color: #269abc; } .btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info { background-image: none; } .btn-info.disabled, .btn-info[disabled], fieldset[disabled] .btn-info, .btn-info.disabled:hover, .btn-info[disabled]:hover, fieldset[disabled] .btn-info:hover, .btn-info.disabled:focus, .btn-info[disabled]:focus, fieldset[disabled] .btn-info:focus, .btn-info.disabled:active, .btn-info[disabled]:active, fieldset[disabled] .btn-info:active, .btn-info.disabled.active, .btn-info[disabled].active, fieldset[disabled] .btn-info.active { background-color: #5bc0de; border-color: #46b8da; } .btn-link { font-weight: normal; color: #428bca; cursor: pointer; border-radius: 0; } .btn-link, .btn-link:active, .btn-link[disabled], fieldset[disabled] .btn-link { background-color: transparent; -webkit-box-shadow: none; box-shadow: none; } .btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active { border-color: transparent; } .btn-link:hover, .btn-link:focus { color: #2a6496; text-decoration: underline; background-color: transparent; } .btn-link[disabled]:hover, fieldset[disabled] .btn-link:hover, .btn-link[disabled]:focus, fieldset[disabled] .btn-link:focus { color: #999999; text-decoration: none; } .btn-lg { padding: 10px 16px; font-size: 18px; line-height: 1.33; border-radius: 6px; } .btn-sm, .btn-xs { padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } .btn-xs { padding: 1px 5px; } .btn-block { display: block; width: 100%; padding-right: 0; padding-left: 0; } .btn-block + .btn-block { margin-top: 5px; } input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { width: 100%; } .fade { opacity: 0; -webkit-transition: opacity 0.15s linear; transition: opacity 0.15s linear; } .fade.in { opacity: 1; } .collapse { display: none; } .collapse.in { display: block; } .collapsing { position: relative; height: 0; overflow: hidden; -webkit-transition: height 0.35s ease; transition: height 0.35s ease; } @font-face { font-family: 'Glyphicons Halflings'; src: url('../fonts/glyphicons-halflings-regular.eot'); src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); } .glyphicon { position: relative; top: 1px; display: inline-block; font-family: 'Glyphicons Halflings'; -webkit-font-smoothing: antialiased; font-style: normal; font-weight: normal; line-height: 1; -moz-osx-font-smoothing: grayscale; } .glyphicon:empty { width: 1em; } .glyphicon-asterisk:before { content: "\2a"; } .glyphicon-plus:before { content: "\2b"; } .glyphicon-euro:before { content: "\20ac"; } .glyphicon-minus:before { content: "\2212"; } .glyphicon-cloud:before { content: "\2601"; } .glyphicon-envelope:before { content: "\2709"; } .glyphicon-pencil:before { content: "\270f"; } .glyphicon-glass:before { content: "\e001"; } .glyphicon-music:before { content: "\e002"; } .glyphicon-search:before { content: "\e003"; } .glyphicon-heart:before { content: "\e005"; } .glyphicon-star:before { content: "\e006"; } .glyphicon-star-empty:before { content: "\e007"; } .glyphicon-user:before { content: "\e008"; } .glyphicon-film:before { content: "\e009"; } .glyphicon-th-large:before { content: "\e010"; } .glyphicon-th:before { content: "\e011"; } .glyphicon-th-list:before { content: "\e012"; } .glyphicon-ok:before { content: "\e013"; } .glyphicon-remove:before { content: "\e014"; } .glyphicon-zoom-in:before { content: "\e015"; } .glyphicon-zoom-out:before { content: "\e016"; } .glyphicon-off:before { content: "\e017"; } .glyphicon-signal:before { content: "\e018"; } .glyphicon-cog:before { content: "\e019"; } .glyphicon-trash:before { content: "\e020"; } .glyphicon-home:before { content: "\e021"; } .glyphicon-file:before { content: "\e022"; } .glyphicon-time:before { content: "\e023"; } .glyphicon-road:before { content: "\e024"; } .glyphicon-download-alt:before { content: "\e025"; } .glyphicon-download:before { content: "\e026"; } .glyphicon-upload:before { content: "\e027"; } .glyphicon-inbox:before { content: "\e028"; } .glyphicon-play-circle:before { content: "\e029"; } .glyphicon-repeat:before { content: "\e030"; } .glyphicon-refresh:before { content: "\e031"; } .glyphicon-list-alt:before { content: "\e032"; } .glyphicon-lock:before { content: "\e033"; } .glyphicon-flag:before { content: "\e034"; } .glyphicon-headphones:before { content: "\e035"; } .glyphicon-volume-off:before { content: "\e036"; } .glyphicon-volume-down:before { content: "\e037"; } .glyphicon-volume-up:before { content: "\e038"; } .glyphicon-qrcode:before { content: "\e039"; } .glyphicon-barcode:before { content: "\e040"; } .glyphicon-tag:before { content: "\e041"; } .glyphicon-tags:before { content: "\e042"; } .glyphicon-book:before { content: "\e043"; } .glyphicon-bookmark:before { content: "\e044"; } .glyphicon-print:before { content: "\e045"; } .glyphicon-camera:before { content: "\e046"; } .glyphicon-font:before { content: "\e047"; } .glyphicon-bold:before { content: "\e048"; } .glyphicon-italic:before { content: "\e049"; } .glyphicon-text-height:before { content: "\e050"; } .glyphicon-text-width:before { content: "\e051"; } .glyphicon-align-left:before { content: "\e052"; } .glyphicon-align-center:before { content: "\e053"; } .glyphicon-align-right:before { content: "\e054"; } .glyphicon-align-justify:before { content: "\e055"; } .glyphicon-list:before { content: "\e056"; } .glyphicon-indent-left:before { content: "\e057"; } .glyphicon-indent-right:before { content: "\e058"; } .glyphicon-facetime-video:before { content: "\e059"; } .glyphicon-picture:before { content: "\e060"; } .glyphicon-map-marker:before { content: "\e062"; } .glyphicon-adjust:before { content: "\e063"; } .glyphicon-tint:before { content: "\e064"; } .glyphicon-edit:before { content: "\e065"; } .glyphicon-share:before { content: "\e066"; } .glyphicon-check:before { content: "\e067"; } .glyphicon-move:before { content: "\e068"; } .glyphicon-step-backward:before { content: "\e069"; } .glyphicon-fast-backward:before { content: "\e070"; } .glyphicon-backward:before { content: "\e071"; } .glyphicon-play:before { content: "\e072"; } .glyphicon-pause:before { content: "\e073"; } .glyphicon-stop:before { content: "\e074"; } .glyphicon-forward:before { content: "\e075"; } .glyphicon-fast-forward:before { content: "\e076"; } .glyphicon-step-forward:before { content: "\e077"; } .glyphicon-eject:before { content: "\e078"; } .glyphicon-chevron-left:before { content: "\e079"; } .glyphicon-chevron-right:before { content: "\e080"; } .glyphicon-plus-sign:before { content: "\e081"; } .glyphicon-minus-sign:before { content: "\e082"; } .glyphicon-remove-sign:before { content: "\e083"; } .glyphicon-ok-sign:before { content: "\e084"; } .glyphicon-question-sign:before { content: "\e085"; } .glyphicon-info-sign:before { content: "\e086"; } .glyphicon-screenshot:before { content: "\e087"; } .glyphicon-remove-circle:before { content: "\e088"; } .glyphicon-ok-circle:before { content: "\e089"; } .glyphicon-ban-circle:before { content: "\e090"; } .glyphicon-arrow-left:before { content: "\e091"; } .glyphicon-arrow-right:before { content: "\e092"; } .glyphicon-arrow-up:before { content: "\e093"; } .glyphicon-arrow-down:before { content: "\e094"; } .glyphicon-share-alt:before { content: "\e095"; } .glyphicon-resize-full:before { content: "\e096"; } .glyphicon-resize-small:before { content: "\e097"; } .glyphicon-exclamation-sign:before { content: "\e101"; } .glyphicon-gift:before { content: "\e102"; } .glyphicon-leaf:before { content: "\e103"; } .glyphicon-fire:before { content: "\e104"; } .glyphicon-eye-open:before { content: "\e105"; } .glyphicon-eye-close:before { content: "\e106"; } .glyphicon-warning-sign:before { content: "\e107"; } .glyphicon-plane:before { content: "\e108"; } .glyphicon-calendar:before { content: "\e109"; } .glyphicon-random:before { content: "\e110"; } .glyphicon-comment:before { content: "\e111"; } .glyphicon-magnet:before { content: "\e112"; } .glyphicon-chevron-up:before { content: "\e113"; } .glyphicon-chevron-down:before { content: "\e114"; } .glyphicon-retweet:before { content: "\e115"; } .glyphicon-shopping-cart:before { content: "\e116"; } .glyphicon-folder-close:before { content: "\e117"; } .glyphicon-folder-open:before { content: "\e118"; } .glyphicon-resize-vertical:before { content: "\e119"; } .glyphicon-resize-horizontal:before { content: "\e120"; } .glyphicon-hdd:before { content: "\e121"; } .glyphicon-bullhorn:before { content: "\e122"; } .glyphicon-bell:before { content: "\e123"; } .glyphicon-certificate:before { content: "\e124"; } .glyphicon-thumbs-up:before { content: "\e125"; } .glyphicon-thumbs-down:before { content: "\e126"; } .glyphicon-hand-right:before { content: "\e127"; } .glyphicon-hand-left:before { content: "\e128"; } .glyphicon-hand-up:before { content: "\e129"; } .glyphicon-hand-down:before { content: "\e130"; } .glyphicon-circle-arrow-right:before { content: "\e131"; } .glyphicon-circle-arrow-left:before { content: "\e132"; } .glyphicon-circle-arrow-up:before { content: "\e133"; } .glyphicon-circle-arrow-down:before { content: "\e134"; } .glyphicon-globe:before { content: "\e135"; } .glyphicon-wrench:before { content: "\e136"; } .glyphicon-tasks:before { content: "\e137"; } .glyphicon-filter:before { content: "\e138"; } .glyphicon-briefcase:before { content: "\e139"; } .glyphicon-fullscreen:before { content: "\e140"; } .glyphicon-dashboard:before { content: "\e141"; } .glyphicon-paperclip:before { content: "\e142"; } .glyphicon-heart-empty:before { content: "\e143"; } .glyphicon-link:before { content: "\e144"; } .glyphicon-phone:before { content: "\e145"; } .glyphicon-pushpin:before { content: "\e146"; } .glyphicon-usd:before { content: "\e148"; } .glyphicon-gbp:before { content: "\e149"; } .glyphicon-sort:before { content: "\e150"; } .glyphicon-sort-by-alphabet:before { content: "\e151"; } .glyphicon-sort-by-alphabet-alt:before { content: "\e152"; } .glyphicon-sort-by-order:before { content: "\e153"; } .glyphicon-sort-by-order-alt:before { content: "\e154"; } .glyphicon-sort-by-attributes:before { content: "\e155"; } .glyphicon-sort-by-attributes-alt:before { content: "\e156"; } .glyphicon-unchecked:before { content: "\e157"; } .glyphicon-expand:before { content: "\e158"; } .glyphicon-collapse-down:before { content: "\e159"; } .glyphicon-collapse-up:before { content: "\e160"; } .glyphicon-log-in:before { content: "\e161"; } .glyphicon-flash:before { content: "\e162"; } .glyphicon-log-out:before { content: "\e163"; } .glyphicon-new-window:before { content: "\e164"; } .glyphicon-record:before { content: "\e165"; } .glyphicon-save:before { content: "\e166"; } .glyphicon-open:before { content: "\e167"; } .glyphicon-saved:before { content: "\e168"; } .glyphicon-import:before { content: "\e169"; } .glyphicon-export:before { content: "\e170"; } .glyphicon-send:before { content: "\e171"; } .glyphicon-floppy-disk:before { content: "\e172"; } .glyphicon-floppy-saved:before { content: "\e173"; } .glyphicon-floppy-remove:before { content: "\e174"; } .glyphicon-floppy-save:before { content: "\e175"; } .glyphicon-floppy-open:before { content: "\e176"; } .glyphicon-credit-card:before { content: "\e177"; } .glyphicon-transfer:before { content: "\e178"; } .glyphicon-cutlery:before { content: "\e179"; } .glyphicon-header:before { content: "\e180"; } .glyphicon-compressed:before { content: "\e181"; } .glyphicon-earphone:before { content: "\e182"; } .glyphicon-phone-alt:before { content: "\e183"; } .glyphicon-tower:before { content: "\e184"; } .glyphicon-stats:before { content: "\e185"; } .glyphicon-sd-video:before { content: "\e186"; } .glyphicon-hd-video:before { content: "\e187"; } .glyphicon-subtitles:before { content: "\e188"; } .glyphicon-sound-stereo:before { content: "\e189"; } .glyphicon-sound-dolby:before { content: "\e190"; } .glyphicon-sound-5-1:before { content: "\e191"; } .glyphicon-sound-6-1:before { content: "\e192"; } .glyphicon-sound-7-1:before { content: "\e193"; } .glyphicon-copyright-mark:before { content: "\e194"; } .glyphicon-registration-mark:before { content: "\e195"; } .glyphicon-cloud-download:before { content: "\e197"; } .glyphicon-cloud-upload:before { content: "\e198"; } .glyphicon-tree-conifer:before { content: "\e199"; } .glyphicon-tree-deciduous:before { content: "\e200"; } .caret { display: inline-block; width: 0; height: 0; margin-left: 2px; vertical-align: middle; border-top: 4px solid #000000; border-right: 4px solid transparent; border-bottom: 0 dotted; border-left: 4px solid transparent; } .dropdown { position: relative; } .dropdown-toggle:focus { outline: 0; } .dropdown-menu { position: absolute; top: 100%; left: 0; z-index: 1000; display: none; float: left; min-width: 160px; padding: 5px 0; margin: 2px 0 0; font-size: 14px; list-style: none; background-color: #ffffff; border: 1px solid #cccccc; border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 4px; -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); background-clip: padding-box; } .dropdown-menu.pull-right { right: 0; left: auto; } .dropdown-menu .divider { height: 1px; margin: 9px 0; overflow: hidden; background-color: #e5e5e5; } .dropdown-menu > li > a { display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: 1.428571429; color: #333333; white-space: nowrap; } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { color: #262626; text-decoration: none; background-color: #f5f5f5; } .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { color: #ffffff; text-decoration: none; background-color: #428bca; outline: 0; } .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { color: #999999; } .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { text-decoration: none; cursor: not-allowed; background-color: transparent; background-image: none; filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .open > .dropdown-menu { display: block; } .open > a { outline: 0; } .dropdown-header { display: block; padding: 3px 20px; font-size: 12px; line-height: 1.428571429; color: #999999; } .dropdown-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 990; } .pull-right > .dropdown-menu { right: 0; left: auto; } .dropup .caret, .navbar-fixed-bottom .dropdown .caret { border-top: 0 dotted; border-bottom: 4px solid #000000; content: ""; } .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { top: auto; bottom: 100%; margin-bottom: 1px; } @media (min-width: 768px) { .navbar-right .dropdown-menu { right: 0; left: auto; } } .btn-default .caret { border-top-color: #333333; } .btn-primary .caret, .btn-success .caret, .btn-warning .caret, .btn-danger .caret, .btn-info .caret { border-top-color: #fff; } .dropup .btn-default .caret { border-bottom-color: #333333; } .dropup .btn-primary .caret, .dropup .btn-success .caret, .dropup .btn-warning .caret, .dropup .btn-danger .caret, .dropup .btn-info .caret { border-bottom-color: #fff; } .btn-group, .btn-group-vertical { position: relative; display: inline-block; vertical-align: middle; } .btn-group > .btn, .btn-group-vertical > .btn { position: relative; float: left; } .btn-group > .btn:hover, .btn-group-vertical > .btn:hover, .btn-group > .btn:focus, .btn-group-vertical > .btn:focus, .btn-group > .btn:active, .btn-group-vertical > .btn:active, .btn-group > .btn.active, .btn-group-vertical > .btn.active { z-index: 2; } .btn-group > .btn:focus, .btn-group-vertical > .btn:focus { outline: none; } .btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group { margin-left: -1px; } .btn-toolbar:before, .btn-toolbar:after { display: table; content: " "; } .btn-toolbar:after { clear: both; } .btn-toolbar:before, .btn-toolbar:after { display: table; content: " "; } .btn-toolbar:after { clear: both; } .btn-toolbar .btn-group { float: left; } .btn-toolbar > .btn + .btn, .btn-toolbar > .btn-group + .btn, .btn-toolbar > .btn + .btn-group, .btn-toolbar > .btn-group + .btn-group { margin-left: 5px; } .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { border-radius: 0; } .btn-group > .btn:first-child { margin-left: 0; } .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { border-top-right-radius: 0; border-bottom-right-radius: 0; } .btn-group > .btn:last-child:not(:first-child), .btn-group > .dropdown-toggle:not(:first-child) { border-bottom-left-radius: 0; border-top-left-radius: 0; } .btn-group > .btn-group { float: left; } .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } .btn-group > .btn-group:first-child > .btn:last-child, .btn-group > .btn-group:first-child > .dropdown-toggle { border-top-right-radius: 0; border-bottom-right-radius: 0; } .btn-group > .btn-group:last-child > .btn:first-child { border-bottom-left-radius: 0; border-top-left-radius: 0; } .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } .btn-group-xs > .btn { padding: 5px 10px; padding: 1px 5px; font-size: 12px; line-height: 1.5; border-radius: 3px; } .btn-group-sm > .btn { padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } .btn-group-lg > .btn { padding: 10px 16px; font-size: 18px; line-height: 1.33; border-radius: 6px; } .btn-group > .btn + .dropdown-toggle { padding-right: 8px; padding-left: 8px; } .btn-group > .btn-lg + .dropdown-toggle { padding-right: 12px; padding-left: 12px; } .btn-group.open .dropdown-toggle { -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } .btn-group.open .dropdown-toggle.btn-link { -webkit-box-shadow: none; box-shadow: none; } .btn .caret { margin-left: 0; } .btn-lg .caret { border-width: 5px 5px 0; border-bottom-width: 0; } .dropup .btn-lg .caret { border-width: 0 5px 5px; } .btn-group-vertical > .btn, .btn-group-vertical > .btn-group { display: block; float: none; width: 100%; max-width: 100%; } .btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after { display: table; content: " "; } .btn-group-vertical > .btn-group:after { clear: both; } .btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after { display: table; content: " "; } .btn-group-vertical > .btn-group:after { clear: both; } .btn-group-vertical > .btn-group > .btn { float: none; } .btn-group-vertical > .btn + .btn, .btn-group-vertical > .btn + .btn-group, .btn-group-vertical > .btn-group + .btn, .btn-group-vertical > .btn-group + .btn-group { margin-top: -1px; margin-left: 0; } .btn-group-vertical > .btn:not(:first-child):not(:last-child) { border-radius: 0; } .btn-group-vertical > .btn:first-child:not(:last-child) { border-top-right-radius: 4px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .btn-group-vertical > .btn:last-child:not(:first-child) { border-top-right-radius: 0; border-bottom-left-radius: 4px; border-top-left-radius: 0; } .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } .btn-group-vertical > .btn-group:first-child > .btn:last-child, .btn-group-vertical > .btn-group:first-child > .dropdown-toggle { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .btn-group-vertical > .btn-group:last-child > .btn:first-child { border-top-right-radius: 0; border-top-left-radius: 0; } .btn-group-justified { display: table; width: 100%; border-collapse: separate; table-layout: fixed; } .btn-group-justified .btn { display: table-cell; float: none; width: 1%; } [data-toggle="buttons"] > .btn > input[type="radio"], [data-toggle="buttons"] > .btn > input[type="checkbox"] { display: none; } .input-group { position: relative; display: table; border-collapse: separate; } .input-group.col { float: none; padding-right: 0; padding-left: 0; } .input-group .form-control { width: 100%; margin-bottom: 0; } .input-group-lg > .form-control, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .btn { height: 45px; padding: 10px 16px; font-size: 18px; line-height: 1.33; border-radius: 6px; } select.input-group-lg > .form-control, select.input-group-lg > .input-group-addon, select.input-group-lg > .input-group-btn > .btn { height: 45px; line-height: 45px; } textarea.input-group-lg > .form-control, textarea.input-group-lg > .input-group-addon, textarea.input-group-lg > .input-group-btn > .btn { height: auto; } .input-group-sm > .form-control, .input-group-sm > .input-group-addon, .input-group-sm > .input-group-btn > .btn { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } select.input-group-sm > .form-control, select.input-group-sm > .input-group-addon, select.input-group-sm > .input-group-btn > .btn { height: 30px; line-height: 30px; } textarea.input-group-sm > .form-control, textarea.input-group-sm > .input-group-addon, textarea.input-group-sm > .input-group-btn > .btn { height: auto; } .input-group-addon, .input-group-btn, .input-group .form-control { display: table-cell; } .input-group-addon:not(:first-child):not(:last-child), .input-group-btn:not(:first-child):not(:last-child), .input-group .form-control:not(:first-child):not(:last-child) { border-radius: 0; } .input-group-addon, .input-group-btn { width: 1%; white-space: nowrap; vertical-align: middle; } .input-group-addon { padding: 6px 12px; font-size: 14px; font-weight: normal; line-height: 1; color: #555555; text-align: center; background-color: #eeeeee; border: 1px solid #cccccc; border-radius: 4px; } .input-group-addon.input-sm { padding: 5px 10px; font-size: 12px; border-radius: 3px; } .input-group-addon.input-lg { padding: 10px 16px; font-size: 18px; border-radius: 6px; } .input-group-addon input[type="radio"], .input-group-addon input[type="checkbox"] { margin-top: 0; } .input-group .form-control:first-child, .input-group-addon:first-child, .input-group-btn:first-child > .btn, .input-group-btn:first-child > .dropdown-toggle, .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { border-top-right-radius: 0; border-bottom-right-radius: 0; } .input-group-addon:first-child { border-right: 0; } .input-group .form-control:last-child, .input-group-addon:last-child, .input-group-btn:last-child > .btn, .input-group-btn:last-child > .dropdown-toggle, .input-group-btn:first-child > .btn:not(:first-child) { border-bottom-left-radius: 0; border-top-left-radius: 0; } .input-group-addon:last-child { border-left: 0; } .input-group-btn { position: relative; white-space: nowrap; } .input-group-btn:first-child > .btn { margin-right: -1px; } .input-group-btn:last-child > .btn { margin-left: -1px; } .input-group-btn > .btn { position: relative; } .input-group-btn > .btn + .btn { margin-left: -4px; } .input-group-btn > .btn:hover, .input-group-btn > .btn:active { z-index: 2; } .nav { padding-left: 0; margin-bottom: 0; list-style: none; } .nav:before, .nav:after { display: table; content: " "; } .nav:after { clear: both; } .nav:before, .nav:after { display: table; content: " "; } .nav:after { clear: both; } .nav > li { position: relative; display: block; } .nav > li > a { position: relative; display: block; padding: 10px 15px; } .nav > li > a:hover, .nav > li > a:focus { text-decoration: none; background-color: #eeeeee; } .nav > li.disabled > a { color: #999999; } .nav > li.disabled > a:hover, .nav > li.disabled > a:focus { color: #999999; text-decoration: none; cursor: not-allowed; background-color: transparent; } .nav .open > a, .nav .open > a:hover, .nav .open > a:focus { background-color: #eeeeee; border-color: #428bca; } .nav .open > a .caret, .nav .open > a:hover .caret, .nav .open > a:focus .caret { border-top-color: #2a6496; border-bottom-color: #2a6496; } .nav .nav-divider { height: 1px; margin: 9px 0; overflow: hidden; background-color: #e5e5e5; } .nav > li > a > img { max-width: none; } .nav-tabs { border-bottom: 1px solid #dddddd; } .nav-tabs > li { float: left; margin-bottom: -1px; } .nav-tabs > li > a { margin-right: 2px; line-height: 1.428571429; border: 1px solid transparent; border-radius: 4px 4px 0 0; } .nav-tabs > li > a:hover { border-color: #eeeeee #eeeeee #dddddd; } .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { color: #555555; cursor: default; background-color: #ffffff; border: 1px solid #dddddd; border-bottom-color: transparent; } .nav-tabs.nav-justified { width: 100%; border-bottom: 0; } .nav-tabs.nav-justified > li { float: none; } .nav-tabs.nav-justified > li > a { margin-bottom: 5px; text-align: center; } .nav-tabs.nav-justified > .dropdown .dropdown-menu { top: auto; left: auto; } @media (min-width: 768px) { .nav-tabs.nav-justified > li { display: table-cell; width: 1%; } .nav-tabs.nav-justified > li > a { margin-bottom: 0; } } .nav-tabs.nav-justified > li > a { margin-right: 0; border-radius: 4px; } .nav-tabs.nav-justified > .active > a, .nav-tabs.nav-justified > .active > a:hover, .nav-tabs.nav-justified > .active > a:focus { border: 1px solid #dddddd; } @media (min-width: 768px) { .nav-tabs.nav-justified > li > a { border-bottom: 1px solid #dddddd; border-radius: 4px 4px 0 0; } .nav-tabs.nav-justified > .active > a, .nav-tabs.nav-justified > .active > a:hover, .nav-tabs.nav-justified > .active > a:focus { border-bottom-color: #ffffff; } } .nav-pills > li { float: left; } .nav-pills > li > a { border-radius: 4px; } .nav-pills > li + li { margin-left: 2px; } .nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus { color: #ffffff; background-color: #428bca; } .nav-pills > li.active > a .caret, .nav-pills > li.active > a:hover .caret, .nav-pills > li.active > a:focus .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } .nav-stacked > li { float: none; } .nav-stacked > li + li { margin-top: 2px; margin-left: 0; } .nav-justified { width: 100%; } .nav-justified > li { float: none; } .nav-justified > li > a { margin-bottom: 5px; text-align: center; } .nav-justified > .dropdown .dropdown-menu { top: auto; left: auto; } @media (min-width: 768px) { .nav-justified > li { display: table-cell; width: 1%; } .nav-justified > li > a { margin-bottom: 0; } } .nav-tabs-justified { border-bottom: 0; } .nav-tabs-justified > li > a { margin-right: 0; border-radius: 4px; } .nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:hover, .nav-tabs-justified > .active > a:focus { border: 1px solid #dddddd; } @media (min-width: 768px) { .nav-tabs-justified > li > a { border-bottom: 1px solid #dddddd; border-radius: 4px 4px 0 0; } .nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:hover, .nav-tabs-justified > .active > a:focus { border-bottom-color: #ffffff; } } .tab-content > .tab-pane { display: none; } .tab-content > .active { display: block; } .nav .caret { border-top-color: #428bca; border-bottom-color: #428bca; } .nav a:hover .caret { border-top-color: #2a6496; border-bottom-color: #2a6496; } .nav-tabs .dropdown-menu { margin-top: -1px; border-top-right-radius: 0; border-top-left-radius: 0; } .navbar { position: relative; min-height: 50px; margin-bottom: 20px; border: 1px solid transparent; } .navbar:before, .navbar:after { display: table; content: " "; } .navbar:after { clear: both; } .navbar:before, .navbar:after { display: table; content: " "; } .navbar:after { clear: both; } @media (min-width: 768px) { .navbar { border-radius: 4px; } } .navbar-header:before, .navbar-header:after { display: table; content: " "; } .navbar-header:after { clear: both; } .navbar-header:before, .navbar-header:after { display: table; content: " "; } .navbar-header:after { clear: both; } @media (min-width: 768px) { .navbar-header { float: left; } } .navbar-collapse { max-height: 340px; padding-right: 15px; padding-left: 15px; overflow-x: visible; border-top: 1px solid transparent; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); -webkit-overflow-scrolling: touch; } .navbar-collapse:before, .navbar-collapse:after { display: table; content: " "; } .navbar-collapse:after { clear: both; } .navbar-collapse:before, .navbar-collapse:after { display: table; content: " "; } .navbar-collapse:after { clear: both; } .navbar-collapse.in { overflow-y: auto; } @media (min-width: 768px) { .navbar-collapse { width: auto; border-top: 0; box-shadow: none; } .navbar-collapse.collapse { display: block !important; height: auto !important; padding-bottom: 0; overflow: visible !important; } .navbar-collapse.in { overflow-y: auto; } .navbar-collapse .navbar-nav.navbar-left:first-child { margin-left: -15px; } .navbar-collapse .navbar-nav.navbar-right:last-child { margin-right: -15px; } .navbar-collapse .navbar-text:last-child { margin-right: 0; } } .container > .navbar-header, .container > .navbar-collapse { margin-right: -15px; margin-left: -15px; } @media (min-width: 768px) { .container > .navbar-header, .container > .navbar-collapse { margin-right: 0; margin-left: 0; } } .navbar-static-top { z-index: 1000; border-width: 0 0 1px; } @media (min-width: 768px) { .navbar-static-top { border-radius: 0; } } .navbar-fixed-top, .navbar-fixed-bottom { position: fixed; right: 0; left: 0; z-index: 1030; } @media (min-width: 768px) { .navbar-fixed-top, .navbar-fixed-bottom { border-radius: 0; } } .navbar-fixed-top { top: 0; border-width: 0 0 1px; } .navbar-fixed-bottom { bottom: 0; margin-bottom: 0; border-width: 1px 0 0; } .navbar-brand { float: left; padding: 15px 15px; font-size: 18px; line-height: 20px; } .navbar-brand:hover, .navbar-brand:focus { text-decoration: none; } @media (min-width: 768px) { .navbar > .container .navbar-brand { margin-left: -15px; } } .navbar-toggle { position: relative; float: right; padding: 9px 10px; margin-top: 8px; margin-right: 15px; margin-bottom: 8px; background-color: transparent; border: 1px solid transparent; border-radius: 4px; } .navbar-toggle .icon-bar { display: block; width: 22px; height: 2px; border-radius: 1px; } .navbar-toggle .icon-bar + .icon-bar { margin-top: 4px; } @media (min-width: 768px) { .navbar-toggle { display: none; } } .navbar-nav { margin: 7.5px -15px; } .navbar-nav > li > a { padding-top: 10px; padding-bottom: 10px; line-height: 20px; } @media (max-width: 767px) { .navbar-nav .open .dropdown-menu { position: static; float: none; width: auto; margin-top: 0; background-color: transparent; border: 0; box-shadow: none; } .navbar-nav .open .dropdown-menu > li > a, .navbar-nav .open .dropdown-menu .dropdown-header { padding: 5px 15px 5px 25px; } .navbar-nav .open .dropdown-menu > li > a { line-height: 20px; } .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-nav .open .dropdown-menu > li > a:focus { background-image: none; } } @media (min-width: 768px) { .navbar-nav { float: left; margin: 0; } .navbar-nav > li { float: left; } .navbar-nav > li > a { padding-top: 15px; padding-bottom: 15px; } } @media (min-width: 768px) { .navbar-left { float: left !important; } .navbar-right { float: right !important; } } .navbar-form { padding: 10px 15px; margin-top: 8px; margin-right: -15px; margin-bottom: 8px; margin-left: -15px; border-top: 1px solid transparent; border-bottom: 1px solid transparent; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); } @media (min-width: 768px) { .navbar-form .form-group { display: inline-block; margin-bottom: 0; vertical-align: middle; } .navbar-form .form-control { display: inline-block; } .navbar-form .radio, .navbar-form .checkbox { display: inline-block; padding-left: 0; margin-top: 0; margin-bottom: 0; } .navbar-form .radio input[type="radio"], .navbar-form .checkbox input[type="checkbox"] { float: none; margin-left: 0; } } @media (max-width: 767px) { .navbar-form .form-group { margin-bottom: 5px; } } @media (min-width: 768px) { .navbar-form { width: auto; padding-top: 0; padding-bottom: 0; margin-right: 0; margin-left: 0; border: 0; -webkit-box-shadow: none; box-shadow: none; } } .navbar-nav > li > .dropdown-menu { margin-top: 0; border-top-right-radius: 0; border-top-left-radius: 0; } .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .navbar-nav.pull-right > li > .dropdown-menu, .navbar-nav > li > .dropdown-menu.pull-right { right: 0; left: auto; } .navbar-btn { margin-top: 8px; margin-bottom: 8px; } .navbar-text { float: left; margin-top: 15px; margin-bottom: 15px; } @media (min-width: 768px) { .navbar-text { margin-right: 15px; margin-left: 15px; } } .navbar-default { background-color: #f8f8f8; border-color: #e7e7e7; } .navbar-default .navbar-brand { color: #777777; } .navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus { color: #5e5e5e; background-color: transparent; } .navbar-default .navbar-text { color: #777777; } .navbar-default .navbar-nav > li > a { color: #777777; } .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { color: #333333; background-color: transparent; } .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { color: #555555; background-color: #e7e7e7; } .navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, .navbar-default .navbar-nav > .disabled > a:focus { color: #cccccc; background-color: transparent; } .navbar-default .navbar-toggle { border-color: #dddddd; } .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { background-color: #dddddd; } .navbar-default .navbar-toggle .icon-bar { background-color: #cccccc; } .navbar-default .navbar-collapse, .navbar-default .navbar-form { border-color: #e7e7e7; } .navbar-default .navbar-nav > .dropdown > a:hover .caret, .navbar-default .navbar-nav > .dropdown > a:focus .caret { border-top-color: #333333; border-bottom-color: #333333; } .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { color: #555555; background-color: #e7e7e7; } .navbar-default .navbar-nav > .open > a .caret, .navbar-default .navbar-nav > .open > a:hover .caret, .navbar-default .navbar-nav > .open > a:focus .caret { border-top-color: #555555; border-bottom-color: #555555; } .navbar-default .navbar-nav > .dropdown > a .caret { border-top-color: #777777; border-bottom-color: #777777; } @media (max-width: 767px) { .navbar-default .navbar-nav .open .dropdown-menu > li > a { color: #777777; } .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { color: #333333; background-color: transparent; } .navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { color: #555555; background-color: #e7e7e7; } .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { color: #cccccc; background-color: transparent; } } .navbar-default .navbar-link { color: #777777; } .navbar-default .navbar-link:hover { color: #333333; } .navbar-inverse { background-color: #222222; border-color: #080808; } .navbar-inverse .navbar-brand { color: #999999; } .navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus { color: #ffffff; background-color: transparent; } .navbar-inverse .navbar-text { color: #999999; } .navbar-inverse .navbar-nav > li > a { color: #999999; } .navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus { color: #ffffff; background-color: transparent; } .navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus { color: #ffffff; background-color: #080808; } .navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:hover, .navbar-inverse .navbar-nav > .disabled > a:focus { color: #444444; background-color: transparent; } .navbar-inverse .navbar-toggle { border-color: #333333; } .navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus { background-color: #333333; } .navbar-inverse .navbar-toggle .icon-bar { background-color: #ffffff; } .navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form { border-color: #101010; } .navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus { color: #ffffff; background-color: #080808; } .navbar-inverse .navbar-nav > .dropdown > a:hover .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } .navbar-inverse .navbar-nav > .dropdown > a .caret { border-top-color: #999999; border-bottom-color: #999999; } .navbar-inverse .navbar-nav > .open > a .caret, .navbar-inverse .navbar-nav > .open > a:hover .caret, .navbar-inverse .navbar-nav > .open > a:focus .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } @media (max-width: 767px) { .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { border-color: #080808; } .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { color: #999999; } .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { color: #ffffff; background-color: transparent; } .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { color: #ffffff; background-color: #080808; } .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { color: #444444; background-color: transparent; } } .navbar-inverse .navbar-link { color: #999999; } .navbar-inverse .navbar-link:hover { color: #ffffff; } .breadcrumb { padding: 8px 15px; margin-bottom: 20px; list-style: none; background-color: #f5f5f5; border-radius: 4px; } .breadcrumb > li { display: inline-block; } .breadcrumb > li + li:before { padding: 0 5px; color: #cccccc; content: "/\00a0"; } .breadcrumb > .active { color: #999999; } .pagination { display: inline-block; padding-left: 0; margin: 20px 0; border-radius: 4px; } .pagination > li { display: inline; } .pagination > li > a, .pagination > li > span { position: relative; float: left; padding: 6px 12px; margin-left: -1px; line-height: 1.428571429; text-decoration: none; background-color: #ffffff; border: 1px solid #dddddd; } .pagination > li:first-child > a, .pagination > li:first-child > span { margin-left: 0; border-bottom-left-radius: 4px; border-top-left-radius: 4px; } .pagination > li:last-child > a, .pagination > li:last-child > span { border-top-right-radius: 4px; border-bottom-right-radius: 4px; } .pagination > li > a:hover, .pagination > li > span:hover, .pagination > li > a:focus, .pagination > li > span:focus { background-color: #eeeeee; } .pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus { z-index: 2; color: #ffffff; cursor: default; background-color: #428bca; border-color: #428bca; } .pagination > .disabled > span, .pagination > .disabled > span:hover, .pagination > .disabled > span:focus, .pagination > .disabled > a, .pagination > .disabled > a:hover, .pagination > .disabled > a:focus { color: #999999; cursor: not-allowed; background-color: #ffffff; border-color: #dddddd; } .pagination-lg > li > a, .pagination-lg > li > span { padding: 10px 16px; font-size: 18px; } .pagination-lg > li:first-child > a, .pagination-lg > li:first-child > span { border-bottom-left-radius: 6px; border-top-left-radius: 6px; } .pagination-lg > li:last-child > a, .pagination-lg > li:last-child > span { border-top-right-radius: 6px; border-bottom-right-radius: 6px; } .pagination-sm > li > a, .pagination-sm > li > span { padding: 5px 10px; font-size: 12px; } .pagination-sm > li:first-child > a, .pagination-sm > li:first-child > span { border-bottom-left-radius: 3px; border-top-left-radius: 3px; } .pagination-sm > li:last-child > a, .pagination-sm > li:last-child > span { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .pager { padding-left: 0; margin: 20px 0; text-align: center; list-style: none; } .pager:before, .pager:after { display: table; content: " "; } .pager:after { clear: both; } .pager:before, .pager:after { display: table; content: " "; } .pager:after { clear: both; } .pager li { display: inline; } .pager li > a, .pager li > span { display: inline-block; padding: 5px 14px; background-color: #ffffff; border: 1px solid #dddddd; border-radius: 15px; } .pager li > a:hover, .pager li > a:focus { text-decoration: none; background-color: #eeeeee; } .pager .next > a, .pager .next > span { float: right; } .pager .previous > a, .pager .previous > span { float: left; } .pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus, .pager .disabled > span { color: #999999; cursor: not-allowed; background-color: #ffffff; } .label { display: inline; padding: .2em .6em .3em; font-size: 75%; font-weight: bold; line-height: 1; color: #ffffff; text-align: center; white-space: nowrap; vertical-align: baseline; border-radius: .25em; } .label[href]:hover, .label[href]:focus { color: #ffffff; text-decoration: none; cursor: pointer; } .label:empty { display: none; } .label-default { background-color: #999999; } .label-default[href]:hover, .label-default[href]:focus { background-color: #808080; } .label-primary { background-color: #428bca; } .label-primary[href]:hover, .label-primary[href]:focus { background-color: #3071a9; } .label-success { background-color: #5cb85c; } .label-success[href]:hover, .label-success[href]:focus { background-color: #449d44; } .label-info { background-color: #5bc0de; } .label-info[href]:hover, .label-info[href]:focus { background-color: #31b0d5; } .label-warning { background-color: #f0ad4e; } .label-warning[href]:hover, .label-warning[href]:focus { background-color: #ec971f; } .label-danger { background-color: #d9534f; } .label-danger[href]:hover, .label-danger[href]:focus { background-color: #c9302c; } .badge { display: inline-block; min-width: 10px; padding: 3px 7px; font-size: 12px; font-weight: bold; line-height: 1; color: #ffffff; text-align: center; white-space: nowrap; vertical-align: baseline; background-color: #999999; border-radius: 10px; } .badge:empty { display: none; } a.badge:hover, a.badge:focus { color: #ffffff; text-decoration: none; cursor: pointer; } .btn .badge { position: relative; top: -1px; } a.list-group-item.active > .badge, .nav-pills > .active > a > .badge { color: #428bca; background-color: #ffffff; } .nav-pills > li > a > .badge { margin-left: 3px; } .jumbotron { padding: 30px; margin-bottom: 30px; font-size: 21px; font-weight: 200; line-height: 2.1428571435; color: inherit; background-color: #eeeeee; } .jumbotron h1 { line-height: 1; color: inherit; } .jumbotron p { line-height: 1.4; } .container .jumbotron { border-radius: 6px; } @media screen and (min-width: 768px) { .jumbotron { padding-top: 48px; padding-bottom: 48px; } .container .jumbotron { padding-right: 60px; padding-left: 60px; } .jumbotron h1 { font-size: 63px; } } .thumbnail { display: inline-block; display: block; height: auto; max-width: 100%; padding: 4px; margin-bottom: 20px; line-height: 1.428571429; background-color: #ffffff; border: 1px solid #dddddd; border-radius: 4px; -webkit-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } .thumbnail > img { display: block; height: auto; max-width: 100%; margin-right: auto; margin-left: auto; } a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active { border-color: #428bca; } .thumbnail .caption { padding: 9px; color: #333333; } .alert { padding: 15px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px; } .alert h4 { margin-top: 0; color: inherit; } .alert .alert-link { font-weight: bold; } .alert > p, .alert > ul { margin-bottom: 0; } .alert > p + p { margin-top: 5px; } .alert-dismissable { padding-right: 35px; } .alert-dismissable .close { position: relative; top: -2px; right: -21px; color: inherit; } .alert-success { color: #468847; background-color: #dff0d8; border-color: #d6e9c6; } .alert-success hr { border-top-color: #c9e2b3; } .alert-success .alert-link { color: #356635; } .alert-info { color: #3a87ad; background-color: #d9edf7; border-color: #bce8f1; } .alert-info hr { border-top-color: #a6e1ec; } .alert-info .alert-link { color: #2d6987; } .alert-warning { color: #c09853; background-color: #fcf8e3; border-color: #faebcc; } .alert-warning hr { border-top-color: #f7e1b5; } .alert-warning .alert-link { color: #a47e3c; } .alert-danger { color: #b94a48; background-color: #f2dede; border-color: #ebccd1; } .alert-danger hr { border-top-color: #e4b9c0; } .alert-danger .alert-link { color: #953b39; } @-webkit-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-moz-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-o-keyframes progress-bar-stripes { from { background-position: 0 0; } to { background-position: 40px 0; } } @keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } .progress { height: 20px; margin-bottom: 20px; overflow: hidden; background-color: #f5f5f5; border-radius: 4px; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); } .progress-bar { float: left; width: 0; height: 100%; font-size: 12px; line-height: 20px; color: #ffffff; text-align: center; background-color: #428bca; -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -webkit-transition: width 0.6s ease; transition: width 0.6s ease; } .progress-striped .progress-bar { background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-size: 40px 40px; } .progress.active .progress-bar { -webkit-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } .progress-bar-success { background-color: #5cb85c; } .progress-striped .progress-bar-success { background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-info { background-color: #5bc0de; } .progress-striped .progress-bar-info { background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-warning { background-color: #f0ad4e; } .progress-striped .progress-bar-warning { background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-danger { background-color: #d9534f; } .progress-striped .progress-bar-danger { background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .media, .media-body { overflow: hidden; zoom: 1; } .media, .media .media { margin-top: 15px; } .media:first-child { margin-top: 0; } .media-object { display: block; } .media-heading { margin: 0 0 5px; } .media > .pull-left { margin-right: 10px; } .media > .pull-right { margin-left: 10px; } .media-list { padding-left: 0; list-style: none; } .list-group { padding-left: 0; margin-bottom: 20px; } .list-group-item { position: relative; display: block; padding: 10px 15px; margin-bottom: -1px; background-color: #ffffff; border: 1px solid #dddddd; } .list-group-item:first-child { border-top-right-radius: 4px; border-top-left-radius: 4px; } .list-group-item:last-child { margin-bottom: 0; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; } .list-group-item > .badge { float: right; } .list-group-item > .badge + .badge { margin-right: 5px; } a.list-group-item { color: #555555; } a.list-group-item .list-group-item-heading { color: #333333; } a.list-group-item:hover, a.list-group-item:focus { text-decoration: none; background-color: #f5f5f5; } a.list-group-item.active, a.list-group-item.active:hover, a.list-group-item.active:focus { z-index: 2; color: #ffffff; background-color: #428bca; border-color: #428bca; } a.list-group-item.active .list-group-item-heading, a.list-group-item.active:hover .list-group-item-heading, a.list-group-item.active:focus .list-group-item-heading { color: inherit; } a.list-group-item.active .list-group-item-text, a.list-group-item.active:hover .list-group-item-text, a.list-group-item.active:focus .list-group-item-text { color: #e1edf7; } .list-group-item-heading { margin-top: 0; margin-bottom: 5px; } .list-group-item-text { margin-bottom: 0; line-height: 1.3; } .panel { margin-bottom: 20px; background-color: #ffffff; border: 1px solid transparent; border-radius: 4px; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); } .panel-body { padding: 15px; } .panel-body:before, .panel-body:after { display: table; content: " "; } .panel-body:after { clear: both; } .panel-body:before, .panel-body:after { display: table; content: " "; } .panel-body:after { clear: both; } .panel > .list-group { margin-bottom: 0; } .panel > .list-group .list-group-item { border-width: 1px 0; } .panel > .list-group .list-group-item:first-child { border-top-right-radius: 0; border-top-left-radius: 0; } .panel > .list-group .list-group-item:last-child { border-bottom: 0; } .panel-heading + .list-group .list-group-item:first-child { border-top-width: 0; } .panel > .table, .panel > .table-responsive { margin-bottom: 0; } .panel > .panel-body + .table, .panel > .panel-body + .table-responsive { border-top: 1px solid #dddddd; } .panel > .table-bordered, .panel > .table-responsive > .table-bordered { border: 0; } .panel > .table-bordered > thead > tr > th:first-child, .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, .panel > .table-bordered > tbody > tr > th:first-child, .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, .panel > .table-bordered > tfoot > tr > th:first-child, .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, .panel > .table-bordered > thead > tr > td:first-child, .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, .panel > .table-bordered > tbody > tr > td:first-child, .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, .panel > .table-bordered > tfoot > tr > td:first-child, .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { border-left: 0; } .panel > .table-bordered > thead > tr > th:last-child, .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, .panel > .table-bordered > tbody > tr > th:last-child, .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, .panel > .table-bordered > tfoot > tr > th:last-child, .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, .panel > .table-bordered > thead > tr > td:last-child, .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, .panel > .table-bordered > tbody > tr > td:last-child, .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, .panel > .table-bordered > tfoot > tr > td:last-child, .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { border-right: 0; } .panel > .table-bordered > thead > tr:last-child > th, .panel > .table-responsive > .table-bordered > thead > tr:last-child > th, .panel > .table-bordered > tbody > tr:last-child > th, .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, .panel > .table-bordered > tfoot > tr:last-child > th, .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th, .panel > .table-bordered > thead > tr:last-child > td, .panel > .table-responsive > .table-bordered > thead > tr:last-child > td, .panel > .table-bordered > tbody > tr:last-child > td, .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, .panel > .table-bordered > tfoot > tr:last-child > td, .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td { border-bottom: 0; } .panel-heading { padding: 10px 15px; border-bottom: 1px solid transparent; border-top-right-radius: 3px; border-top-left-radius: 3px; } .panel-heading > .dropdown .dropdown-toggle { color: inherit; } .panel-title { margin-top: 0; margin-bottom: 0; font-size: 16px; } .panel-title > a { color: inherit; } .panel-footer { padding: 10px 15px; background-color: #f5f5f5; border-top: 1px solid #dddddd; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .panel-group .panel { margin-bottom: 0; overflow: hidden; border-radius: 4px; } .panel-group .panel + .panel { margin-top: 5px; } .panel-group .panel-heading { border-bottom: 0; } .panel-group .panel-heading + .panel-collapse .panel-body { border-top: 1px solid #dddddd; } .panel-group .panel-footer { border-top: 0; } .panel-group .panel-footer + .panel-collapse .panel-body { border-bottom: 1px solid #dddddd; } .panel-default { border-color: #dddddd; } .panel-default > .panel-heading { color: #333333; background-color: #f5f5f5; border-color: #dddddd; } .panel-default > .panel-heading + .panel-collapse .panel-body { border-top-color: #dddddd; } .panel-default > .panel-heading > .dropdown .caret { border-color: #333333 transparent; } .panel-default > .panel-footer + .panel-collapse .panel-body { border-bottom-color: #dddddd; } .panel-primary { border-color: #428bca; } .panel-primary > .panel-heading { color: #ffffff; background-color: #428bca; border-color: #428bca; } .panel-primary > .panel-heading + .panel-collapse .panel-body { border-top-color: #428bca; } .panel-primary > .panel-heading > .dropdown .caret { border-color: #ffffff transparent; } .panel-primary > .panel-footer + .panel-collapse .panel-body { border-bottom-color: #428bca; } .panel-success { border-color: #d6e9c6; } .panel-success > .panel-heading { color: #468847; background-color: #dff0d8; border-color: #d6e9c6; } .panel-success > .panel-heading + .panel-collapse .panel-body { border-top-color: #d6e9c6; } .panel-success > .panel-heading > .dropdown .caret { border-color: #468847 transparent; } .panel-success > .panel-footer + .panel-collapse .panel-body { border-bottom-color: #d6e9c6; } .panel-warning { border-color: #faebcc; } .panel-warning > .panel-heading { color: #c09853; background-color: #fcf8e3; border-color: #faebcc; } .panel-warning > .panel-heading + .panel-collapse .panel-body { border-top-color: #faebcc; } .panel-warning > .panel-heading > .dropdown .caret { border-color: #c09853 transparent; } .panel-warning > .panel-footer + .panel-collapse .panel-body { border-bottom-color: #faebcc; } .panel-danger { border-color: #ebccd1; } .panel-danger > .panel-heading { color: #b94a48; background-color: #f2dede; border-color: #ebccd1; } .panel-danger > .panel-heading + .panel-collapse .panel-body { border-top-color: #ebccd1; } .panel-danger > .panel-heading > .dropdown .caret { border-color: #b94a48 transparent; } .panel-danger > .panel-footer + .panel-collapse .panel-body { border-bottom-color: #ebccd1; } .panel-info { border-color: #bce8f1; } .panel-info > .panel-heading { color: #3a87ad; background-color: #d9edf7; border-color: #bce8f1; } .panel-info > .panel-heading + .panel-collapse .panel-body { border-top-color: #bce8f1; } .panel-info > .panel-heading > .dropdown .caret { border-color: #3a87ad transparent; } .panel-info > .panel-footer + .panel-collapse .panel-body { border-bottom-color: #bce8f1; } .well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #e3e3e3; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); } .well blockquote { border-color: #ddd; border-color: rgba(0, 0, 0, 0.15); } .well-lg { padding: 24px; border-radius: 6px; } .well-sm { padding: 9px; border-radius: 3px; } .close { float: right; font-size: 21px; font-weight: bold; line-height: 1; color: #000000; text-shadow: 0 1px 0 #ffffff; opacity: 0.2; filter: alpha(opacity=20); } .close:hover, .close:focus { color: #000000; text-decoration: none; cursor: pointer; opacity: 0.5; filter: alpha(opacity=50); } button.close { padding: 0; cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; } .modal-open { overflow: hidden; } .modal { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1040; display: none; overflow: auto; overflow-y: scroll; } .modal.fade .modal-dialog { -webkit-transform: translate(0, -25%); -ms-transform: translate(0, -25%); transform: translate(0, -25%); -webkit-transition: -webkit-transform 0.3s ease-out; -moz-transition: -moz-transform 0.3s ease-out; -o-transition: -o-transform 0.3s ease-out; transition: transform 0.3s ease-out; } .modal.in .modal-dialog { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); } .modal-dialog { position: relative; z-index: 1050; width: auto; padding: 10px; margin-right: auto; margin-left: auto; } .modal-content { position: relative; background-color: #ffffff; border: 1px solid #999999; border: 1px solid rgba(0, 0, 0, 0.2); border-radius: 6px; outline: none; -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); background-clip: padding-box; } .modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1030; background-color: #000000; } .modal-backdrop.fade { opacity: 0; filter: alpha(opacity=0); } .modal-backdrop.in { opacity: 0.5; filter: alpha(opacity=50); } .modal-header { min-height: 16.428571429px; padding: 15px; border-bottom: 1px solid #e5e5e5; } .modal-header .close { margin-top: -2px; } .modal-title { margin: 0; line-height: 1.428571429; } .modal-body { position: relative; padding: 20px; } .modal-footer { padding: 19px 20px 20px; margin-top: 15px; text-align: right; border-top: 1px solid #e5e5e5; } .modal-footer:before, .modal-footer:after { display: table; content: " "; } .modal-footer:after { clear: both; } .modal-footer:before, .modal-footer:after { display: table; content: " "; } .modal-footer:after { clear: both; } .modal-footer .btn + .btn { margin-bottom: 0; margin-left: 5px; } .modal-footer .btn-group .btn + .btn { margin-left: -1px; } .modal-footer .btn-block + .btn-block { margin-left: 0; } @media screen and (min-width: 768px) { .modal-dialog { width: 600px; padding-top: 30px; padding-bottom: 30px; } .modal-content { -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); } } .tooltip { position: absolute; z-index: 1030; display: block; font-size: 12px; line-height: 1.4; opacity: 0; filter: alpha(opacity=0); visibility: visible; } .tooltip.in { opacity: 0.9; filter: alpha(opacity=90); } .tooltip.top { padding: 5px 0; margin-top: -3px; } .tooltip.right { padding: 0 5px; margin-left: 3px; } .tooltip.bottom { padding: 5px 0; margin-top: 3px; } .tooltip.left { padding: 0 5px; margin-left: -3px; } .tooltip-inner { max-width: 200px; padding: 3px 8px; color: #ffffff; text-align: center; text-decoration: none; background-color: #000000; border-radius: 4px; } .tooltip-arrow { position: absolute; width: 0; height: 0; border-color: transparent; border-style: solid; } .tooltip.top .tooltip-arrow { bottom: 0; left: 50%; margin-left: -5px; border-top-color: #000000; border-width: 5px 5px 0; } .tooltip.top-left .tooltip-arrow { bottom: 0; left: 5px; border-top-color: #000000; border-width: 5px 5px 0; } .tooltip.top-right .tooltip-arrow { right: 5px; bottom: 0; border-top-color: #000000; border-width: 5px 5px 0; } .tooltip.right .tooltip-arrow { top: 50%; left: 0; margin-top: -5px; border-right-color: #000000; border-width: 5px 5px 5px 0; } .tooltip.left .tooltip-arrow { top: 50%; right: 0; margin-top: -5px; border-left-color: #000000; border-width: 5px 0 5px 5px; } .tooltip.bottom .tooltip-arrow { top: 0; left: 50%; margin-left: -5px; border-bottom-color: #000000; border-width: 0 5px 5px; } .tooltip.bottom-left .tooltip-arrow { top: 0; left: 5px; border-bottom-color: #000000; border-width: 0 5px 5px; } .tooltip.bottom-right .tooltip-arrow { top: 0; right: 5px; border-bottom-color: #000000; border-width: 0 5px 5px; } .popover { position: absolute; top: 0; left: 0; z-index: 1010; display: none; max-width: 276px; padding: 1px; text-align: left; white-space: normal; background-color: #ffffff; border: 1px solid #cccccc; border: 1px solid rgba(0, 0, 0, 0.2); border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); background-clip: padding-box; } .popover.top { margin-top: -10px; } .popover.right { margin-left: 10px; } .popover.bottom { margin-top: 10px; } .popover.left { margin-left: -10px; } .popover-title { padding: 8px 14px; margin: 0; font-size: 14px; font-weight: normal; line-height: 18px; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; border-radius: 5px 5px 0 0; } .popover-content { padding: 9px 14px; } .popover .arrow, .popover .arrow:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } .popover .arrow { border-width: 11px; } .popover .arrow:after { border-width: 10px; content: ""; } .popover.top .arrow { bottom: -11px; left: 50%; margin-left: -11px; border-top-color: #999999; border-top-color: rgba(0, 0, 0, 0.25); border-bottom-width: 0; } .popover.top .arrow:after { bottom: 1px; margin-left: -10px; border-top-color: #ffffff; border-bottom-width: 0; content: " "; } .popover.right .arrow { top: 50%; left: -11px; margin-top: -11px; border-right-color: #999999; border-right-color: rgba(0, 0, 0, 0.25); border-left-width: 0; } .popover.right .arrow:after { bottom: -10px; left: 1px; border-right-color: #ffffff; border-left-width: 0; content: " "; } .popover.bottom .arrow { top: -11px; left: 50%; margin-left: -11px; border-bottom-color: #999999; border-bottom-color: rgba(0, 0, 0, 0.25); border-top-width: 0; } .popover.bottom .arrow:after { top: 1px; margin-left: -10px; border-bottom-color: #ffffff; border-top-width: 0; content: " "; } .popover.left .arrow { top: 50%; right: -11px; margin-top: -11px; border-left-color: #999999; border-left-color: rgba(0, 0, 0, 0.25); border-right-width: 0; } .popover.left .arrow:after { right: 1px; bottom: -10px; border-left-color: #ffffff; border-right-width: 0; content: " "; } .carousel { position: relative; } .carousel-inner { position: relative; width: 100%; overflow: hidden; } .carousel-inner > .item { position: relative; display: none; -webkit-transition: 0.6s ease-in-out left; transition: 0.6s ease-in-out left; } .carousel-inner > .item > img, .carousel-inner > .item > a > img { display: block; height: auto; max-width: 100%; line-height: 1; } .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev { display: block; } .carousel-inner > .active { left: 0; } .carousel-inner > .next, .carousel-inner > .prev { position: absolute; top: 0; width: 100%; } .carousel-inner > .next { left: 100%; } .carousel-inner > .prev { left: -100%; } .carousel-inner > .next.left, .carousel-inner > .prev.right { left: 0; } .carousel-inner > .active.left { left: -100%; } .carousel-inner > .active.right { left: 100%; } .carousel-control { position: absolute; top: 0; bottom: 0; left: 0; width: 15%; font-size: 20px; color: #ffffff; text-align: center; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); opacity: 0.5; filter: alpha(opacity=50); } .carousel-control.left { background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%)); background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); } .carousel-control.right { right: 0; left: auto; background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%)); background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); } .carousel-control:hover, .carousel-control:focus { color: #ffffff; text-decoration: none; opacity: 0.9; filter: alpha(opacity=90); } .carousel-control .icon-prev, .carousel-control .icon-next, .carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right { position: absolute; top: 50%; z-index: 5; display: inline-block; } .carousel-control .icon-prev, .carousel-control .glyphicon-chevron-left { left: 50%; } .carousel-control .icon-next, .carousel-control .glyphicon-chevron-right { right: 50%; } .carousel-control .icon-prev, .carousel-control .icon-next { width: 20px; height: 20px; margin-top: -10px; margin-left: -10px; font-family: serif; } .carousel-control .icon-prev:before { content: '\2039'; } .carousel-control .icon-next:before { content: '\203a'; } .carousel-indicators { position: absolute; bottom: 10px; left: 50%; z-index: 15; width: 60%; padding-left: 0; margin-left: -30%; text-align: center; list-style: none; } .carousel-indicators li { display: inline-block; width: 10px; height: 10px; margin: 1px; text-indent: -999px; cursor: pointer; background-color: #000 \9; background-color: rgba(0, 0, 0, 0); border: 1px solid #ffffff; border-radius: 10px; } .carousel-indicators .active { width: 12px; height: 12px; margin: 0; background-color: #ffffff; } .carousel-caption { position: absolute; right: 15%; bottom: 20px; left: 15%; z-index: 10; padding-top: 20px; padding-bottom: 20px; color: #ffffff; text-align: center; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); } .carousel-caption .btn { text-shadow: none; } @media screen and (min-width: 768px) { .carousel-control .glyphicons-chevron-left, .carousel-control .glyphicons-chevron-right, .carousel-control .icon-prev, .carousel-control .icon-next { width: 30px; height: 30px; margin-top: -15px; margin-left: -15px; font-size: 30px; } .carousel-caption { right: 20%; left: 20%; padding-bottom: 30px; } .carousel-indicators { bottom: 20px; } } .clearfix:before, .clearfix:after { display: table; content: " "; } .clearfix:after { clear: both; } .center-block { display: block; margin-right: auto; margin-left: auto; } .pull-right { float: right !important; } .pull-left { float: left !important; } .hide { display: none !important; } .show { display: block !important; } .invisible { visibility: hidden; } .text-hide { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .hidden { display: none !important; visibility: hidden !important; } .affix { position: fixed; } @-ms-viewport { width: device-width; } .visible-xs, tr.visible-xs, th.visible-xs, td.visible-xs { display: none !important; } @media (max-width: 767px) { .visible-xs { display: block !important; } tr.visible-xs { display: table-row !important; } th.visible-xs, td.visible-xs { display: table-cell !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-xs.visible-sm { display: block !important; } tr.visible-xs.visible-sm { display: table-row !important; } th.visible-xs.visible-sm, td.visible-xs.visible-sm { display: table-cell !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-xs.visible-md { display: block !important; } tr.visible-xs.visible-md { display: table-row !important; } th.visible-xs.visible-md, td.visible-xs.visible-md { display: table-cell !important; } } @media (min-width: 1200px) { .visible-xs.visible-lg { display: block !important; } tr.visible-xs.visible-lg { display: table-row !important; } th.visible-xs.visible-lg, td.visible-xs.visible-lg { display: table-cell !important; } } .visible-sm, tr.visible-sm, th.visible-sm, td.visible-sm { display: none !important; } @media (max-width: 767px) { .visible-sm.visible-xs { display: block !important; } tr.visible-sm.visible-xs { display: table-row !important; } th.visible-sm.visible-xs, td.visible-sm.visible-xs { display: table-cell !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-sm { display: block !important; } tr.visible-sm { display: table-row !important; } th.visible-sm, td.visible-sm { display: table-cell !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-sm.visible-md { display: block !important; } tr.visible-sm.visible-md { display: table-row !important; } th.visible-sm.visible-md, td.visible-sm.visible-md { display: table-cell !important; } } @media (min-width: 1200px) { .visible-sm.visible-lg { display: block !important; } tr.visible-sm.visible-lg { display: table-row !important; } th.visible-sm.visible-lg, td.visible-sm.visible-lg { display: table-cell !important; } } .visible-md, tr.visible-md, th.visible-md, td.visible-md { display: none !important; } @media (max-width: 767px) { .visible-md.visible-xs { display: block !important; } tr.visible-md.visible-xs { display: table-row !important; } th.visible-md.visible-xs, td.visible-md.visible-xs { display: table-cell !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-md.visible-sm { display: block !important; } tr.visible-md.visible-sm { display: table-row !important; } th.visible-md.visible-sm, td.visible-md.visible-sm { display: table-cell !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-md { display: block !important; } tr.visible-md { display: table-row !important; } th.visible-md, td.visible-md { display: table-cell !important; } } @media (min-width: 1200px) { .visible-md.visible-lg { display: block !important; } tr.visible-md.visible-lg { display: table-row !important; } th.visible-md.visible-lg, td.visible-md.visible-lg { display: table-cell !important; } } .visible-lg, tr.visible-lg, th.visible-lg, td.visible-lg { display: none !important; } @media (max-width: 767px) { .visible-lg.visible-xs { display: block !important; } tr.visible-lg.visible-xs { display: table-row !important; } th.visible-lg.visible-xs, td.visible-lg.visible-xs { display: table-cell !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-lg.visible-sm { display: block !important; } tr.visible-lg.visible-sm { display: table-row !important; } th.visible-lg.visible-sm, td.visible-lg.visible-sm { display: table-cell !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-lg.visible-md { display: block !important; } tr.visible-lg.visible-md { display: table-row !important; } th.visible-lg.visible-md, td.visible-lg.visible-md { display: table-cell !important; } } @media (min-width: 1200px) { .visible-lg { display: block !important; } tr.visible-lg { display: table-row !important; } th.visible-lg, td.visible-lg { display: table-cell !important; } } .hidden-xs { display: block !important; } tr.hidden-xs { display: table-row !important; } th.hidden-xs, td.hidden-xs { display: table-cell !important; } @media (max-width: 767px) { .hidden-xs, tr.hidden-xs, th.hidden-xs, td.hidden-xs { display: none !important; } } @media (min-width: 768px) and (max-width: 991px) { .hidden-xs.hidden-sm, tr.hidden-xs.hidden-sm, th.hidden-xs.hidden-sm, td.hidden-xs.hidden-sm { display: none !important; } } @media (min-width: 992px) and (max-width: 1199px) { .hidden-xs.hidden-md, tr.hidden-xs.hidden-md, th.hidden-xs.hidden-md, td.hidden-xs.hidden-md { display: none !important; } } @media (min-width: 1200px) { .hidden-xs.hidden-lg, tr.hidden-xs.hidden-lg, th.hidden-xs.hidden-lg, td.hidden-xs.hidden-lg { display: none !important; } } .hidden-sm { display: block !important; } tr.hidden-sm { display: table-row !important; } th.hidden-sm, td.hidden-sm { display: table-cell !important; } @media (max-width: 767px) { .hidden-sm.hidden-xs, tr.hidden-sm.hidden-xs, th.hidden-sm.hidden-xs, td.hidden-sm.hidden-xs { display: none !important; } } @media (min-width: 768px) and (max-width: 991px) { .hidden-sm, tr.hidden-sm, th.hidden-sm, td.hidden-sm { display: none !important; } } @media (min-width: 992px) and (max-width: 1199px) { .hidden-sm.hidden-md, tr.hidden-sm.hidden-md, th.hidden-sm.hidden-md, td.hidden-sm.hidden-md { display: none !important; } } @media (min-width: 1200px) { .hidden-sm.hidden-lg, tr.hidden-sm.hidden-lg, th.hidden-sm.hidden-lg, td.hidden-sm.hidden-lg { display: none !important; } } .hidden-md { display: block !important; } tr.hidden-md { display: table-row !important; } th.hidden-md, td.hidden-md { display: table-cell !important; } @media (max-width: 767px) { .hidden-md.hidden-xs, tr.hidden-md.hidden-xs, th.hidden-md.hidden-xs, td.hidden-md.hidden-xs { display: none !important; } } @media (min-width: 768px) and (max-width: 991px) { .hidden-md.hidden-sm, tr.hidden-md.hidden-sm, th.hidden-md.hidden-sm, td.hidden-md.hidden-sm { display: none !important; } } @media (min-width: 992px) and (max-width: 1199px) { .hidden-md, tr.hidden-md, th.hidden-md, td.hidden-md { display: none !important; } } @media (min-width: 1200px) { .hidden-md.hidden-lg, tr.hidden-md.hidden-lg, th.hidden-md.hidden-lg, td.hidden-md.hidden-lg { display: none !important; } } .hidden-lg { display: block !important; } tr.hidden-lg { display: table-row !important; } th.hidden-lg, td.hidden-lg { display: table-cell !important; } @media (max-width: 767px) { .hidden-lg.hidden-xs, tr.hidden-lg.hidden-xs, th.hidden-lg.hidden-xs, td.hidden-lg.hidden-xs { display: none !important; } } @media (min-width: 768px) and (max-width: 991px) { .hidden-lg.hidden-sm, tr.hidden-lg.hidden-sm, th.hidden-lg.hidden-sm, td.hidden-lg.hidden-sm { display: none !important; } } @media (min-width: 992px) and (max-width: 1199px) { .hidden-lg.hidden-md, tr.hidden-lg.hidden-md, th.hidden-lg.hidden-md, td.hidden-lg.hidden-md { display: none !important; } } @media (min-width: 1200px) { .hidden-lg, tr.hidden-lg, th.hidden-lg, td.hidden-lg { display: none !important; } } .visible-print, tr.visible-print, th.visible-print, td.visible-print { display: none !important; } @media print { .visible-print { display: block !important; } tr.visible-print { display: table-row !important; } th.visible-print, td.visible-print { display: table-cell !important; } .hidden-print, tr.hidden-print, th.hidden-print, td.hidden-print { display: none !important; } } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/css/owl.carousel.css ================================================ /* * Core Owl Carousel CSS File * v1.21 */ /* clearfix */ .owl-carousel .owl-wrapper:after { content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0; } /* display none until init */ .owl-carousel{ display: none; position: relative; width: 100%; -ms-touch-action: pan-y; } .owl-carousel .owl-wrapper{ display: none; position: relative; -webkit-transform: translate3d(0px, 0px, 0px); -webkit-perspective: 1000; } .owl-carousel .owl-wrapper-outer{ overflow: hidden; position: relative; width: 100%; } .owl-carousel .owl-wrapper-outer.autoHeight{ -webkit-transition: height 500ms ease-in-out; -moz-transition: height 500ms ease-in-out; -ms-transition: height 500ms ease-in-out; -o-transition: height 500ms ease-in-out; transition: height 500ms ease-in-out; } .owl-carousel .owl-item{ float: left; } .owl-controls .owl-page, .owl-controls .owl-buttons div{ cursor: pointer; } .owl-controls { -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } /* mouse grab icon */ .grabbing { /*cursor:url(grabbing.png) 8 8, move;*/ } /* fix */ .owl-carousel .owl-wrapper, .owl-carousel .owl-item{ -webkit-backface-visibility: hidden; -moz-backface-visibility: hidden; -ms-backface-visibility: hidden; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/css/style-responsive.css ================================================ @media (min-width: 980px) { /*-----*/ .custom-bar-chart { margin-bottom: 40px; } } @media (min-width: 768px) and (max-width: 979px) { .mail-box .sm-side { width: 30%; } .mail-box .lg-side { width: 70%; } /*-----*/ .custom-bar-chart { margin-bottom: 40px; } } @media (max-width: 768px) { .header { position: absolute; } /*sidebar*/ #sidebar { height: auto; overflow: hidden; position: absolute; width: 100%; z-index: 1001; } /* body container */ #main-content { margin: 0px!important; position: none !important; } #sidebar > ul > li > a > span { line-height: 35px; } #sidebar > ul > li { margin: 0 10px 5px 10px; } #sidebar > ul > li > a { height:35px; line-height:35px; padding: 0 10px; text-align: left; } #sidebar > ul > li > a i{ /*display: none !important;*/ } .mail-info, .mail-info:hover { display: none !important; } #sidebar ul > li > a .arrow, #sidebar > ul > li > a .arrow.open { margin-right: 10px; margin-top: 15px; } #sidebar ul > li.active > a .arrow, #sidebar ul > li > a:hover .arrow, #sidebar ul > li > a:focus .arrow, #sidebar > ul > li.active > a .arrow.open, #sidebar > ul > li > a:hover .arrow.open, #sidebar > ul > li > a:focus .arrow.open{ margin-top: 15px; } #sidebar > ul > li > a, #sidebar > ul > li > ul.sub > li { width: 100%; } #sidebar > ul > li > ul.sub > li > a { background: transparent !important ; } #sidebar > ul > li > ul.sub > li > a:hover { /*background: #4A8BC2 !important ;*/ } /* sidebar */ #sidebar { margin: 0px !important; } /* sidebar collabler */ #sidebar .btn-navbar.collapsed .arrow { display: none; } #sidebar .btn-navbar .arrow { position: absolute; right: 35px; width: 0; height: 0; top:48px; border-bottom: 15px solid #282e36; border-left: 15px solid transparent; border-right: 15px solid transparent; } /*---------*/ .btn { margin-bottom: 5px; } .mail-box aside { display: block; } .mail-box .sm-side , .mail-box .lg-side{ width: 100% ; } /* full calendar fix */ .fc-header-right { left:25px; position: absolute; } .fc-header-left .fc-button { margin: 0px !important; top: -10px !important; } .fc-header-right .fc-button { margin: 0px !important; top: -50px !important; } .fc-state-active, .fc-state-active .fc-button-inner, .fc-state-hover, .fc-state-hover .fc-button-inner { background: none !important; color: #FFFFFF !important; } .fc-state-default, .fc-state-default .fc-button-inner { background: none !important; } .fc-button { border: none !important; margin-right: 2px; } .fc-view { top: 0px !important; } .fc-button .fc-button-inner { margin: 0px !important; padding: 2px !important; border: none !important; margin-right: 2px !important; background-color: #fafafa !important; background-image: -moz-linear-gradient(top, #fafafa, #efefef) !important; background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fafafa), to(#efefef)) !important; background-image: -webkit-linear-gradient(top, #fafafa, #efefef) !important; background-image: -o-linear-gradient(top, #fafafa, #efefef) !important; background-image: linear-gradient(to bottom, #fafafa, #efefef) !important; filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fafafa', endColorstr='#efefef', GradientType=0) !important; -webkit-box-shadow: 0 1px 0px rgba(255, 255, 255, .8) !important; -moz-box-shadow: 0 1px 0px rgba(255, 255, 255, .8) !important; box-shadow: 0 1px 0px rgba(255, 255, 255, .8) !important; -webkit-border-radius: 3px !important; -moz-border-radius: 3px !important; border-radius: 3px !important; color: #646464 !important; border: 1px solid #ddd !important; text-shadow: 0 1px 0px rgba(255, 255, 255, .6) !important; text-align: center; } .fc-button.fc-state-disabled .fc-button-inner { color: #bcbbbb !important; } .fc-button.fc-state-active .fc-button-inner { background-color: #e5e4e4 !important; background-image: -moz-linear-gradient(top, #e5e4e4, #dddcdc) !important; background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e5e4e4), to(#dddcdc)) !important; background-image: -webkit-linear-gradient(top, #e5e4e4, #dddcdc) !important; background-image: -o-linear-gradient(top, #e5e4e4, #dddcdc) !important; background-image: linear-gradient(to bottom, #e5e4e4, #dddcdc) !important; filter: progid:dximagetransform.microsoft.gradient(startColorstr='#e5e4e4', endColorstr='#dddcdc', GradientType=0) !important; } .fc-content { margin-top: 50px; } .fc-header-title h2 { line-height: 40px !important; font-size: 12px !important; } .fc-header { margin-bottom:0px !important; } /*--*/ /*.chart-position {*/ /*margin-top: 0px;*/ /*}*/ .timeline-desk .album a { margin-bottom: 5px; margin-right: 4px; } .stepy-titles li { margin: 10px 3px; } .mail-option .btn { margin-bottom: 0; } .boxed-page .container #sidebar { position:absolute; } /*--horizontal menu--*/ .full-width .navbar-toggle { border: 1px solid #eaeaea; } .full-width .navbar-toggle .icon-bar { background: #c7c7c7; } .full-width .navbar-toggle { float: left; margin-top: 12px; } .horizontal-menu { float: left; margin-left:0px; width: 70%; margin-top: 10px; } .top-nav { position: absolute; right: 10px; top: 0px; } .horizontal-menu .navbar-nav > li > a { padding-bottom: 10px; padding-top: 10px; } /*-----*/ .custom-bar-chart { margin-bottom: 40px; } /*menu icon plus minus*/ .dcjq-icon { top: 10px; } ul.sidebar-menu li ul.sub li a { padding: 0; } /*---*/ .img-responsive { width: 100%; } } @media (max-width: 480px) { .notify-row, .search, .dont-show , .inbox-head .sr-input, .inbox-head .sr-btn{ display: none; } .mail-box aside { display: block; } .mail-box .sm-side , .mail-box .lg-side{ width: 100% ; } #top_menu .nav > li, ul.top-menu > li { float: right; } .hidden-phone { display: none !important; } .dataTables_filter { float: left; } .dataTables_info { margin-bottom: 10px; } .mail-option .btn { margin-bottom: 0; } .mail-option .inbox-pagination { margin-top: 10px; float: left; } .chart-position { margin-top: 0px; } /*--horizontal menu--*/ .full-width .navbar-toggle { border: 1px solid #eaeaea; } .full-width .navbar-toggle .icon-bar { background: #c7c7c7; } .full-width .navbar-toggle { float: left; margin-top: 12px; } .horizontal-menu { float: left; margin-left:0px; width: 100%; } .top-nav { position: absolute; right: 10px; top: 0px; } .horizontal-menu .navbar-nav > li > a { padding-bottom: 10px; padding-top: 10px; } .ms-container { width: 100%; } } @media (max-width:320px) { .login-social-link a { padding: 15px 17px !important; } .notify-row, .search, .dont-show, .inbox-head .sr-input, .inbox-head .sr-btn { display: none; } .mail-box aside { display: block ; } .mail-box .sm-side , .mail-box .lg-side{ width: 100% ; } #top_menu .nav > li, ul.top-menu > li { float: right; } .hidden-phone { display: none !important; } .dataTables_filter { float: left; } .dataTables_info { margin-bottom: 10px; } .mail-option .btn { margin-bottom: 0; } .mail-option .inbox-pagination { margin-top: 10px; float: left; } .chart-position { margin-top: 0px; } .lock-wrapper { margin: 10% auto; max-width: 310px; } .lock-input { width: 82%; } } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/css/style.css ================================================ /* Template Name: Flat Lab Dashboard build with Bootstrap v3.0.2 Template Version: 1.2.0 Author: Mosaddek Hossain Website: http://thevectorlab.net/ */ /* Import fonts */ @import url(http://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700,700italic,800,800italic); body { color: #797979; background: #f1f2f7; font-family: 'Open Sans', sans-serif; padding: 0px !important; margin: 0px !important; font-size:13px; } ul li { list-style: none; } a, a:hover, a:focus { text-decoration: none; outline: none; } ::selection { background: #FF6C60; color: #fff; } ::-moz-selection { background: #FF6C60; color: #fff; } #container { width: 100%; height: 100%; } /*login page*/ .login-body { background-color: #f1f2f7; } .form-signin { max-width: 330px; margin: 100px auto 0; background: #fff; border-radius: 5px; -webkit-border-radius: 5px; } .form-signin h2.form-signin-heading { margin: 0; padding:20px 15px; text-align: center; background: #41cac0; border-radius: 5px 5px 0 0; -webkit-border-radius: 5px 5px 0 0; color: #fff; font-size: 18px; text-transform: uppercase; font-weight: 300; font-family: 'Open Sans', sans-serif; } .form-signin .checkbox { margin-bottom: 14px; } .form-signin .checkbox { font-weight: normal; color: #b6b6b6; font-weight: 300; font-family: 'Open Sans', sans-serif; } .form-signin .form-control { position: relative; font-size: 16px; height: auto; padding: 10px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .form-signin .form-control:focus { z-index: 2; } .form-signin input[type="text"], .form-signin input[type="password"] { margin-bottom: 15px; border-radius: 5px; -webkit-border-radius: 5px; border: 1px solid #eaeaea; box-shadow: none; font-size: 12px; } .form-signin .btn-login { background: #f67a6e; color: #fff; text-transform: uppercase; font-weight: 300; font-family: 'Open Sans', sans-serif; box-shadow: 0 4px #e56b60; margin-bottom: 20px; } .form-signin p { text-align: center; color: #b6b6b6; font-size: 16px; font-weight: 300; } .form-signin a { color: #41cac0; } .form-signin a:hover { color: #b6b6b6; } .login-wrap { padding: 20px; } .login-social-link { display: inline-block; margin-top: 20px; margin-bottom: 15px; } .login-social-link a { color: #fff; padding: 15px 28px; border-radius: 4px; } .login-social-link a:hover { color: #fff; } .login-social-link a i { font-size: 20px; padding-right: 10px; } .login-social-link a.facebook { background: #5193ea; margin-right: 22px; box-shadow: 0 4px #2775e2; float:left; } .login-social-link a.twitter { background: #44ccfe; box-shadow: 0 4px #2bb4e8; float:left; } /*sidebar navigation*/ #sidebar { width: 210px; height: 100%; position: fixed; background: #2a3542; } #sidebar ul li { position: relative; } #sidebar .sub-menu > .sub li { padding-left: 32px; } #sidebar .sub-menu > .sub li:last-child { padding-bottom: 10px; } /*LEFT NAVIGATION ICON*/ .dcjq-icon { height:17px; width:17px; display:inline-block; background: url(../img/nav-expand.png) no-repeat top; border-radius:3px; -moz-border-radius:3px; -webkit-border-radius:3px; position:absolute; right:10px; top:15px; } .active .dcjq-icon { background: url(../img/nav-expand.png) no-repeat bottom; border-radius:3px; -moz-border-radius:3px; -webkit-border-radius:3px; } /*---*/ .nav-collapse.collapse { display: inline; } ul.sidebar-menu , ul.sidebar-menu li ul.sub{ margin: -2px 0 0; padding: 0; } ul.sidebar-menu { margin-top: 75px; } #sidebar > ul > li > ul.sub { display: none; } #sidebar > ul > li.active > ul.sub, #sidebar > ul > li > ul.sub > li > a { display: block; } ul.sidebar-menu li ul.sub li{ background: #35404D; margin-bottom: 0; margin-left: 0; margin-right: 0; } ul.sidebar-menu li ul.sub li:last-child{ border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; } ul.sidebar-menu li ul.sub li a { font-size: 12px; padding: 6px 0; line-height: 35px; height: 35px; -webkit-transition: all 0.3s ease; -moz-transition: all 0.3s ease; -o-transition: all 0.3s ease; -ms-transition: all 0.3s ease; transition: all 0.3s ease; color: #aeb2b7; } ul.sidebar-menu li ul.sub li a:hover, ul.sidebar-menu li ul.sub li.active a { color: #FF6C60; -webkit-transition: all 0.3s ease; -moz-transition: all 0.3s ease; -o-transition: all 0.3s ease; -ms-transition: all 0.3s ease; transition: all 0.3s ease; display: block; } ul.sidebar-menu li{ /*line-height: 20px !important;*/ margin-bottom: 5px; margin-left:10px; margin-right:10px; } ul.sidebar-menu li.sub-menu{ line-height: 15px; } ul.sidebar-menu li a span{ display: inline-block; } ul.sidebar-menu li a{ color: #aeb2b7; text-decoration: none; display: block; padding: 15px 0 15px 10px; font-size: 12px; outline: none; -webkit-transition: all 0.3s ease; -moz-transition: all 0.3s ease; -o-transition: all 0.3s ease; -ms-transition: all 0.3s ease; transition: all 0.3s ease; } ul.sidebar-menu li a.active, ul.sidebar-menu li a:hover, ul.sidebar-menu li a:focus { background: #35404d; color: #fff; display: block; border-radius: 4px; -webkit-border-radius: 4px; -webkit-transition: all 0.3s ease; -moz-transition: all 0.3s ease; -o-transition: all 0.3s ease; -ms-transition: all 0.3s ease; transition: all 0.3s ease; } ul.sidebar-menu li a i { font-size: 15px; padding-right: 6px; } ul.sidebar-menu li a:hover i, ul.sidebar-menu li a:focus i { color: #FF6C60; } ul.sidebar-menu li a.active i { color: #FF6C60; } .mail-info, .mail-info:hover { margin: -3px 6px 0 0; font-size: 11px; } /*main content*/ #main-content { margin-left: 210px; } .header, .footer { min-height: 60px; padding: 0 15px; } .header { position: fixed; left: 0; right: 0; z-index: 1002; } .white-bg { background: #fff; border-bottom: 1px solid #f1f2f7; } .wrapper { display: inline-block; margin-top: 60px; padding: 15px; width: 100%; } a.logo { font-size: 21px; color: #2e2e2e; float: left; margin-top: 15px; text-transform: uppercase; } a.logo:hover, a.logo:focus { text-decoration: none; outline: none; } a.logo span { color: #FF6C60; } /*notification*/ #top_menu .nav > li, ul.top-menu > li { float: left; } .notify-row { float: left; margin-top: 15px; margin-left: 92px; } ul.top-menu > li > a { color: #666666; font-size: 16px; border-radius: 4px; -webkit-border-radius: 4px; border:1px solid #f0f0f8 !important; padding: 2px 6px; margin-right: 15px; } ul.top-menu > li > a:hover, ul.top-menu > li > a:focus { border:1px solid #f0f0f8 !important; background-color: #fff!important; border-color: #f0f0f8 !important; text-decoration: none; border-radius: 4px; -webkit-border-radius: 4px; color: #2E2E2E !important; } .notify-row .badge { position: absolute; right: -10px; top: -10px; z-index: 100; } .dropdown-menu.extended { max-width: 300px !important; min-width: 160px !important; top: 42px; width: 235px !important; padding: 0; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.176) !important; border: none !important; border-radius: 4px; -webkit-border-radius: 4px; } @media screen and (-webkit-min-device-pixel-ratio:0) { /* Safari and Chrome */ .dropdown-menu.extended { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.176) !important; }; } .dropdown-menu.extended li p { background-color: #F1F2F7; color: #666666; margin: 0; padding: 10px; border-radius: 4px 4px 0px 0px; -webkit-border-radius: 4px 4px 0px 0px; } .dropdown-menu.extended li p.green { background-color: #a9d86e; color: #fff; } .dropdown-menu.extended li p.red { background-color: #ff6c60; color: #fff; } .dropdown-menu.extended li p.yellow { background-color: #fcb322; color: #fff; } .dropdown-menu.extended li a { border-bottom: 1px solid #EBEBEB !important; font-size: 12px; list-style: none; } .dropdown-menu.extended li a { padding: 15px 10px !important; width: 100%; display: inline-block; } .dropdown-menu.extended li a:hover { background-color: #F7F8F9 !important; color: #2E2E2E; } .dropdown-menu.tasks-bar .task-info .desc { font-size: 13px; font-weight: normal; } .dropdown-menu.tasks-bar .task-info .percent { display: inline-block; float: right; font-size: 13px; font-weight: 600; padding-left: 10px; margin-top: -4px; } .dropdown-menu.extended .progress { margin-bottom: 0 !important; height: 10px; } .dropdown-menu.inbox li a .photo img { border-radius: 2px 2px 2px 2px; float: left; height: 40px; margin-right: 4px; width: 40px; } .dropdown-menu.inbox li a .subject { display: block; } .dropdown-menu.inbox li a .subject .from { font-size: 12px; font-weight: 600; } .dropdown-menu.inbox li a .subject .time { font-size: 11px; font-style: italic; font-weight: bold; position: absolute; right: 5px; } .dropdown-menu.inbox li a .message { display: block !important; font-size: 11px; } .top-nav { margin-top: 7px; } .top-nav ul.top-menu > li .dropdown-menu.logout { width: 268px !important; } .top-nav li.dropdown .dropdown-menu { float: right; right: 0; left: auto; } .dropdown-menu.extended.logout > li { float: left; text-align: center; width: 33.3%; } .dropdown-menu.extended.logout > li:last-child { float: left; text-align: center; width: 100%; background: #a9d96c; border-radius: 0 0 3px 3px; } .dropdown-menu.extended.logout > li:last-child > a, .dropdown-menu.extended.logout > li:last-child > a:hover { color: #fff; border-bottom: none !important; text-transform: uppercase; } .dropdown-menu.extended.logout > li:last-child > a:hover > i{ color: #fff; } .dropdown-menu.extended.logout > li > a { color: #a4abbb; border-bottom: none !important; } .full-width .dropdown-menu.extended.logout > li > a:hover { background: none !important; color: #50c8ea !important; } .dropdown-menu.extended.logout > li > a:hover { background: none !important; } .dropdown-menu.extended.logout > li > a:hover i { color: #50c8ea; } .dropdown-menu.extended.logout > li > a i { font-size: 17px; } .dropdown-menu.extended.logout > li > a > i { display: block; } .top-nav .username { font-size: 13px; color: #555555; } .top-nav ul.top-menu > li > a { border: 1px solid #eeeeee; border-radius: 4px; -webkit-border-radius: 4px; padding: 6px; background: none; margin-right: 0; } .top-nav ul.top-menu > li { margin-left: 10px; } .top-nav ul.top-menu > li > a:hover, .top-nav ul.top-menu > li > a:focus { border:1px solid #F1F2F7; background: #F1F2F7; } .top-nav .dropdown-menu.extended.logout { top: 50px; } .top-nav .nav .caret { border-bottom-color: #A4AABA; border-top-color: #A4AABA; } .top-nav ul.top-menu > li > a:hover .caret { border-bottom-color: #000; border-top-color: #000; } .log-arrow-up { background: url("../img/arrow-up.png") no-repeat; width: 20px; height: 11px; position: absolute; right: 20px; top: -10px; } /*----*/ .notify-arrow { border-style: solid; border-width: 0 9px 9px; height: 0; margin-top: 0; opacity: 0; position: absolute; left: 7px; top: -18px; transition: all 0.25s ease 0s; width: 0; z-index: 10; margin-top: 10px; opacity: 1; } .notify-arrow-yellow { border-color: transparent transparent #FCB322; border-bottom-color: #FCB322 !important; border-top-color: #FCB322 !important; } .notify-arrow-red { border-color: transparent transparent #ff6c60; border-bottom-color: #ff6c60 !important; border-top-color: #ff6c60 !important; } .notify-arrow-green { border-color: transparent transparent #a9d86e; border-bottom-color: #a9d86e !important; border-top-color: #a9d86e !important; } /*search*/ .search { margin-top: 6px ; width: 20px; -webkit-transition: all .3s ease; -moz-transition: all .3s ease; -ms-transition: all .3s ease; -o-transition: all .3s ease; transition: all .3s ease; border: 1px solid #fff; box-shadow: none; background: url("../img/search-icon.jpg") no-repeat 10px 8px; padding:0 5px 0 35px; color: #fff; } .search:focus { margin-top: 5px ; width: 180px; border: 1px solid #eaeaea; box-shadow: none; -webkit-transition: all .3s ease; -moz-transition: all .3s ease; -ms-transition: all .3s ease; -o-transition: all .3s ease; transition: all .3s ease; color: #c8c8c8; font-weight: 300; } /*--sidebar toggle---*/ .sidebar-toggle-box { float: left; padding-right: 15px; margin-top: 20px; } .sidebar-toggle-box .icon-reorder { cursor: pointer; display: inline-block; font-size: 20px; } .sidebar-closed > #sidebar > ul { display: none; } .sidebar-closed #main-content { margin-left: 0px; } .sidebar-closed #sidebar { margin-left: -180px; } /*state overview*/ .state-overview .symbol, .state-overview .value { display: inline-block; text-align: center; } .state-overview .value { float: right; } .state-overview .value h1, .state-overview .value p { margin: 0; padding: 0; color: #c6cad6; } .state-overview .value h1 { font-weight: 300; } .state-overview .symbol i { color: #fff; font-size: 50px; } .state-overview .symbol { width: 40%; padding: 25px 15px; -webkit-border-radius: 4px 0px 0px 4px; border-radius: 4px 0px 0px 4px; } .state-overview .value { width: 58%; padding-top: 21px; } .state-overview .terques { background: #6ccac9; } .state-overview .red { background: #ff6c60; } .state-overview .yellow { background: #f8d347; } .state-overview .blue { background: #57c8f2; } /*main chart*/ .border-head h3 { border-bottom: 1px solid #c9cdd7; margin-top: 0; margin-bottom: 20px; padding-bottom: 5px; font-weight: normal; font-size: 18px; display: inline-block; width: 100%; font-weight: 300; } .custom-bar-chart { height: 290px; margin-top: 20px; margin-left: 10px; position: relative; border-bottom: 1px solid #c9cdd7; } .custom-bar-chart .bar { height: 100%; position: relative; width: 4.3%; margin: 0px 2%; float: left; text-align: center; -webkit-border-radius: 5px 5px 0 0; -moz-border-radius: 5px 5px 0 0x; border-radius: 5px 5px 0 0; z-index: 10; } .custom-bar-chart .bar .title { position: absolute; bottom: -30px; width: 100%; text-align: center; font-size: 12px; } .custom-bar-chart .bar .value { position: absolute; bottom: 0; background: #bfc2cd; color: #bfc2cd; width: 100%; -webkit-border-radius: 5px 5px 0 0; -moz-border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0; -webkit-transition: all .3s ease; -moz-transition: all .3s ease; -ms-transition: all .3s ease; -o-transition: all .3s ease; transition: all .3s ease; } .custom-bar-chart .bar .value:hover { background: #e8403f; color: #fff; } .y-axis { color: #555555; position: absolute; text-align: right; width: 100%; } .y-axis li { border-top: 1px dashed #dbdce0; display: block; height: 58px; width: 100%; } .y-axis li:last-child { border-top: none; } .y-axis li span { display: block; margin: -10px 0 0 -25px; padding: 0 10px; width: 40px; } .y-axis { color: #555555; text-align: right; } /*spark line*/ .chart { display: inline-block; text-align: center; width: 100%; } .chart .heading { text-align: left; } .chart .heading span { display: block; } .panel.green-chart .chart-tittle { font-size: 16px; padding: 15px; display: inline-block; font-weight:normal; background: #99c262; width: 100%; -webkit-border-radius: 0px 0px 4px 4px; border-radius: 0px 0px 4px 4px; } #barchart { margin-bottom: -15px; display: inline-block; } .chart-tittle .title { } .panel.green-chart .chart-tittle .value { float: right; color: #c0f080; } .panel.green-chart { background: #a9d96c; color: #fff; } .panel.terques-chart { background: #41cac0; color: #fff; } .panel.terques-chart .chart-tittle .value { float: right; color: #fff; } .panel.terques-chart .chart-tittle .value a { color: #fff; font-size: 12px; } .panel.terques-chart .chart-tittle .value a:hover, .panel.terques-chart .chart-tittle .value a.active { color: #55f2e7; font-size: 12px; } .panel.terques-chart .chart-tittle { font-size: 16px; padding: 15px; display: inline-block; font-weight:normal; background: #39b7ac; width: 100%; -webkit-border-radius: 0px 0px 4px 4px; border-radius: 0px 0px 4px 4px; } .inline-block { display: inline-block; } /**/ .panel-body.chart-texture { background: url("../img/chart-texture.jpg"); -webkit-border-radius: 4px 4px 0px 0px; border-radius: 4px 4px 0px 0px; } /*personal task*/ .task-thumb { width: 90px; float: left; } .task-thumb img { border-radius: 4px; -webkit-border-radius: 4px; } .task-thumb-details { display: inline-block; margin: 25px 0 0 10px; } .task-progress { float: left; } .task-thumb-details h1, .task-thumb-details h1 a, .task-progress h1, .task-progress h1 a { color: #39b5aa; font-size: 18px; margin: 0; padding: 0; font-weight: 400; } .task-thumb-details p, .task-progress p { padding-top: 5px; color: #a4aaba; } .personal-task tbody tr td{ padding: 11px 15px; border-color: #eeeff1; } .personal-task tbody tr td i { font-size: 20px; color: #c7cbd4; } .personal-task.table-hover > tbody > tr:hover > td, .table-hover > tbody > tr:hover > th { background-color: #f7f8fc; } .personal-task.table-hover > tbody > tr:hover > td i{ color: #39b5aa; } .personal-task > tbody > tr > td:last-child { text-align: right; } .task-option { float: right; } .task-option select{ height: 35px; border: 1px solid #eaeaea; border-radius: 4px; -webkit-border-radius: 4px; padding: 8px; color: #a4abbb; } .progress-panel { padding-bottom: 5px; } /*badge*/ .badge.bg-primary { background: #8075c4; } .badge.bg-success { background: #a9d86e; } .badge.bg-warning { background: #FCB322; } .badge.bg-important { background: #ff6c60; } .badge.bg-info { background: #41cac0; } .badge.bg-inverse { background: #2A3542; } /*timeline*/ .timeline { border-collapse: collapse; border-spacing: 0; display: table; position: relative; table-layout: fixed; width: 100%; } .timeline:before { background-color: #C7CBD6; bottom: 0px; content: ""; left: 50%; position: absolute; top: 0; width: 2px; z-index: 0; } h3.timeline-title { margin: 0; color: #C8CCD7; font-size: 20px; font-weight: 400; margin: 0 0 5px; text-transform: uppercase; } .t-info { color: #C8CCD7; } .timeline-item:before, .timeline-item.alt:after { content: ""; display: block; width: 50%; } .timeline-item { display: table-row; } .timeline-desk { display: table-cell; vertical-align: top; width: 50%; } .timeline-desk h1 { font-size: 16px; font-weight: 300; margin: 0 0 5px; } .timeline-desk .panel { display: block; margin-left: 25px; position: relative; text-align: left; background: #F4F4F4; } .timeline-item .timeline-desk .arrow { border-bottom: 8px solid transparent; border-top: 8px solid transparent; display: block; height: 0; left: -7px; position: absolute; top: 13px; width: 0; } .timeline-item .timeline-desk .arrow { border-right: 8px solid #F4F4F4 !important; } .timeline-item.alt .timeline-desk .arrow-alt { border-bottom: 8px solid transparent; border-top: 8px solid transparent; display: block; height: 0; right: -7px; position: absolute; top: 13px; width: 0; left: auto; } .timeline-item.alt .timeline-desk .arrow-alt { border-left: 8px solid #F4F4F4 !important; } .timeline .timeline-icon { left: -30px; position: absolute; top: 15px; } .timeline .timeline-icon { background: #C7CBD6; box-shadow: 0 0 0 3px #C7CBD6; } .timeline-desk span a { text-transform: uppercase; } .timeline-desk h1.red, .timeline-desk span a.red { color: #EF6F66; } .timeline-desk h1.green, .timeline-desk span a.green { color: #39B6AE; } .timeline-desk h1.blue, .timeline-desk span a.blue { color: #56C9F5; } .timeline-desk h1.purple, .timeline-desk span a.purple { color: #8074C6; } .timeline-desk h1.light-green, .timeline-desk span a.light-green { color: #A8D76F; } .timeline .timeline-icon.red { background: #EF6F66; box-shadow: 0 0 0 3px #EF6F66; } .timeline .timeline-icon.green { background: #39B6AE; box-shadow: 0 0 0 3px #39B6AE; } .timeline .timeline-icon.blue { background: #56C9F5; box-shadow: 0 0 0 3px #56C9F5; } .timeline .timeline-icon.purple { background: #8074C6; box-shadow: 0 0 0 3px #8074C6; } .timeline .timeline-icon.light-green { background: #A8D76F; box-shadow: 0 0 0 3px #A8D76F; } .timeline .timeline-icon { border: 3px solid #FFFFFF; border-radius: 50%; -webkit-border-radius: 50%; display: block; height: 12px; width: 12px; } .timeline-item.alt .timeline-icon { left: auto; right: -32px; } .timeline .time-icon:before { font-size: 16px; margin-top: 5px; } .timeline .timeline-date { left: -200px; position: absolute; text-align: right; top: 12px; width: 150px; } .timeline-desk h5 span { color: #999999; display: block; font-size: 12px; margin-bottom: 4px; } .timeline-item.alt:before { display: none; } .timeline-item:before, .timeline-item.alt:after { content: ""; display: block; width: 50%; } .timeline-desk p { font-size: 12px; margin-bottom: 0; } .timeline-desk a { color: #EF6F66; } .timeline-desk .panel { margin-bottom: 5px; } .timeline-desk .album { margin-top: 20px; } .timeline-desk .album a { margin-right: 5px; float: left; } .timeline-desk .notification { background: none repeat scroll 0 0 #FFFFFF; margin-top: 20px; padding: 8px; } .timeline-item.alt .panel { margin-left: 0; margin-right: 25px; } .timeline-item.alt .timeline-date { left: auto; right: -200px; text-align: left; } .mbot30 { margin-bottom: 30px; } /*---revenue----*/ .revenue-head { background: #ff6c60; -webkit-border-radius: 4px 4px 0px 0px; border-radius: 4px 4px 0px 0px; color: #fff; line-height: 50px; } .revenue-head span { background: #e56155; padding: 16px; -webkit-border-radius: 4px 0px 0px 0px; border-radius: 4px 0px 0px 0px; } .revenue-head span i { font-size: 18px; } .revenue-head h3 { display: inline; padding: 0 10px; font-size: 16px; font-weight: 300; } .revenue-head span.rev-combo { background: #e56155; padding: 16px; line-height: normal; -webkit-border-radius: 0px 4px 0px 0px; border-radius: 0px 4px 0px 0px; } /*easy pie chart*/ .easy-pie-chart { display: inline-block; padding: 30px 0; } .chart-info, .chart-info .increase, .chart-info .decrease { display: inline-block; } .chart-info { width: 100%; margin-bottom:5px; } .chart-position { margin-top: 70px; } .chart-info span { margin: 0 3px; } .chart-info .increase { background: #ff6c60; width: 10px; height: 10px; } .chart-info .decrease { background: #f2f2f2; width: 10px; height: 10px; } .panel-footer.revenue-foot { background-color: #e6e7ec; -webkit-border-radius: 0px 0px 4px 4px; border-radius: 0px 0px 4px 4px; border: none; padding: 0; width: 100%; display: inline-block; } @media screen and (-webkit-min-device-pixel-ratio:0) { /* Safari and Chrome */ .panel-footer.revenue-foot { margin-bottom: -4px; }; } .panel-footer.revenue-foot ul { margin: 0; padding: 0; width: 100%; display: inline-flex; } .panel-footer.revenue-foot ul li { float: left; width: 33.33%; } .panel-footer.revenue-foot ul li.first a:hover, .panel-footer.revenue-foot ul li.first a { -webkit-border-radius: 0px 0px 0px 4px; border-radius: 0px 0px 0px 4px; } .panel-footer.revenue-foot ul li.last a:hover, .panel-footer.revenue-foot ul li.last a { -webkit-border-radius: 0px 0px 4px 0px; border-radius: 0px 0px 4px 0px; border-right: none; } .panel-footer.revenue-foot ul li a{ display: inline-block; width: 100%; padding: 14px 15px; text-align: center; border-right: 1px solid #d5d8df; color: #797979; } .panel-footer.revenue-foot ul li a:hover, .panel-footer.revenue-foot ul li.active a { background: #fff; position: relative; } .panel-footer.revenue-foot ul li a i { color: #c6cad5; display: block; font-size: 16px; } .panel-footer.revenue-foot ul li a:hover i, .panel-footer.revenue-foot ul li.active a i { color: #ff6c60; display: block; font-size: 16px; } /*flatlab carousel model*/ .flat-carousal { background: #58c9f3; -webkit-border-radius: 4px 4px 0px 0px; border-radius: 4px 4px 0px 0px; padding: 10px; color: #fff; position: relative; } .flat-carousal h1 { text-align: center; font-size: 16px; margin: 30px 20px; line-height: 20px; font-weight: 300; font-style: italic; } a.view-all { color: #fff; background: rgba(0,0,0,0.1); padding: 8px 15px; text-align: center; border-radius: 25px; -webkit-border-radius: 25px; margin-bottom: 18px; display: inline-block; text-transform: uppercase; font-size: 12px; } ul.ft-link { margin: 0; padding: 0; } ul.ft-link li { border-right: 1px solid #E6E7EC; display: inline-block; line-height: 30px; margin: 8px 0; text-align: center; width: 24%; } ul.ft-link li a { color: #74829c; text-transform: uppercase; font-size: 12px; } ul.ft-link li a:hover, ul.ft-link li.active a { color: #58c9f3; } ul.ft-link li:last-child { border-right: none; } ul.ft-link li a i { display: block; } #owl-demo .item img{ display: block; width: 100%; height: auto; } .owl-buttons { position: absolute; top: 70px; width: 100%; } .owl-prev, .owl-next { position: absolute; } .owl-next { right: 0; } .owl-buttons .owl-prev { text-indent: -9999px; background: url("../img/left-arrow.png") no-repeat; width: 6px; height: 10px; display: inline-block; } .owl-buttons .owl-next { text-indent: -9999px; background: url("../img/right-arrow.png") no-repeat; width: 6px; height: 10px; display: inline-block; } /*product post*/ .post-wrap aside { display: table-cell; float: none; height: 100%; padding: 0; vertical-align: top; } .pro-box { border-collapse: collapse; border-spacing: 0; display: table; table-layout: fixed; width: 100%; } .post-info { position: relative; } .arrow-pro.right:after { border-left-color: #FFFFFF; border-right-width: 0; top: 85px; content: " "; } .arrow-pro.left:after { border-right-color: #FFFFFF; border-left-width: 0; top: 80px; content: " "; } .arrow-pro.left { left: -8px; } .arrow-pro:after { border-width: 7px; content: ""; } .arrow-pro, .arrow-pro:after { border-color: rgba(0, 0, 0, 0); border-style: solid; display: block; height: 0; position: absolute; width: 0; right: -5px; } .post-highlight.yellow { background: #f8d347; border-radius: 0px 4px 4px 0px; -webkit-border-radius: 0px 4px 4px 0px; } .post-highlight.terques { background: #41cac0; border-radius: 4px 0px 0px 04px; -webkit-border-radius: 4px 0px 0px 04px; } .post-info h1 { margin: 0; font-size: 18px; color: #a19899; font-weight: 300; } .post-highlight.terques h2 { font-size: 16px; color: #fff; font-style: italic; padding: 0 20px; line-height: 22px; margin: 0; font-weight: 300; } .post-highlight.terques h2 span, .post-highlight.terques h2 a { color: #92faf3; } .post-info h1 strong { text-transform: uppercase; color: #937b7b; } .post-info .desk { display: inline-block; } .post-info .desk h3{ font-size: 16px; } .post-info .desk.yellow h3 { color:#f8d347 ; } .post-btn { } .post-btn a { float: left; margin-right: 8px; font-size: 18px; color: #9a9a9a; } .post-btn a:hover { color: #727272; } .pro-thumb { text-align: center; display: inline-block; border-radius: 50%; -webkit-border-radius: 50%; border: 10px solid rgba(256,256,256,0.4); } .pro-thumb img{ text-align: center; width: 112px; height: 112px; border-radius: 50%; -webkit-border-radius: 50%; } .v-align { vertical-align: middle !important; } .twite h1 { margin: 50px 0; } .social-footer { display: inline; text-align: center; } .social-footer ul { text-align: center; margin: 0; padding: 0; } .social-footer ul li { display: inline-block; margin: 0 20px; } .social-footer ul li a { font-size: 25px; color: #ceced0; } .social-footer ul li a:hover i.icon-facebook, .social-footer ul li.active a i.icon-facebook { color: #486eac; } .social-footer ul li a:hover i.icon-twitter, .social-footer ul li.active a i.icon-twitter { color: #58c9f3; } .social-footer ul li a:hover i.icon-google-plus, .social-footer ul li.active a i.icon-google-plus { color: #4a4a4a; } .social-footer ul li a:hover i.icon-pinterest, .social-footer ul li.active a i.icon-pinterest { color: #d1282d; } /*pie chart */ .pie-foot { background: #6b6b6b; padding: 18px 15px; color: #fff; border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; text-align: center; font-size: 16px; font-weight: 300; } /*follower*/ .follower { background: #01a89e; color: #fff; text-align: center; border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; } .follower-foot { padding: 8px 5px 5px 5px; color: #757575; border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; font-weight: 300; } .follower-foot ul { padding: 0; margin: 0; } .follower-foot ul li{ display: inline-block; text-align: center; width: 48%; line-height: normal; } .follower-foot ul li h5{ margin: 5px 0 0 0; } .follower h4 { margin: 0 0 10px 0; font-size: 15px; font-weight: 300; } .follow-ava { border-radius: 50%; -webkit-border-radius: 50%; border: 5px solid #18b2a6; display: inline-block; } .follower img { border-radius: 50%; -webkit-border-radius: 50%; width: 62px; height: 62px; /*display: inline-block;*/ } /*weather*/ .weather-bg { background: #8175c7; border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; color: #fff; text-align: center; font-size: 16px; font-weight: 300; } .weather-bg i { font-size: 60px; display: block; } .weather-bg .degree { font-size: 60px; } .weather-category { padding: 15px 0; color: #74829C; } .weather-category ul { padding:0; margin: 0; display: inline-block; width: 100%; } .weather-category ul li { display: inline-block; width: 32%; text-align: center; border-right:1px solid #e6e6e6 ; display: inline-block; } .weather-category ul li h5 { margin: 0 0 5px 0; text-transform: uppercase; font-weight: 300; } .weather-category ul li a { } .weather-category ul li:last-child { border-right:none ; } /*fontawesome*/ .fontawesome-icon-list h2 { margin-top: 0; font-size: 20px; font-weight: 300; } .fontawesome-icon-list .col-sm-3 { margin-bottom: 10px; } .fontawesome-icon-list .page-header { border-bottom: 1px solid #C9CDD7; } .fontawesome-icon-list i { font-size: 16px; padding-right: 10px; } #web-application, #text-editor, #directional, #video-player, #brand, #medical, #currency { margin-top: 10px; } /*mail inbox*/ .mail-box { border-collapse: collapse; border-spacing: 0; display: table; table-layout: fixed; width: 100%; } .mail-box aside { display: table-cell; float: none; height: 100%; padding: 0; vertical-align: top; } .mail-box .sm-side { width: 25%; background: #e5e8ef; border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; } .mail-box .lg-side { width: 75%; background: #fff; border-radius: 0px 4px 4px 0; -webkit-border-radius: 0px 4px 4px 0; } .mail-box .sm-side .user-head { background: #00a8b3; border-radius: 4px 0px 0px 0; -webkit-border-radius: 4px 0px 0px 0; padding: 10px; color: #fff; min-height: 80px; } .user-head .inbox-avatar { width: 65px; float: left; } .user-head .inbox-avatar img { border-radius: 4px; -webkit-border-radius: 4px; } .user-head .user-name { display: inline-block; margin:0 0 0 10px; } .user-head .user-name h5 { font-size: 14px; margin-top: 15px; margin-bottom: 0; font-weight: 300; } .user-head .user-name h5 a { color: #fff; } .user-head .user-name span a { font-size: 12px; color: #87e2e7; } a.mail-dropdown { background: #80d3d9; padding:3px 5px; font-size: 10px; color: #01a7b3; border-radius: 2px; margin-top: 20px; } .inbox-body { padding: 20px; } .btn-compose { background: #ff6c60; padding: 12px 0; text-align: center; width: 100%; color: #fff; } .btn-compose:hover { background: #f5675c; color: #fff; } ul.inbox-nav { display: inline-block; width: 100%; margin: 0; padding: 0; } .inbox-divider { border-bottom: 1px solid #d5d8df; } ul.inbox-nav li { display: inline-block; line-height: 45px; width: 100%; } ul.inbox-nav li a { color: #6a6a6a; line-height: 45px; width: 100%; display: inline-block; padding: 0 20px; } ul.inbox-nav li a:hover, ul.inbox-nav li.active a, ul.inbox-nav li a:focus { color: #6a6a6a; background: #d5d7de; } ul.inbox-nav li a i { padding-right: 10px; font-size: 16px; color: #6a6a6a; } ul.inbox-nav li a span.label { margin-top: 13px; } ul.labels-info li h4 { padding-left:15px; padding-right:15px; padding-top: 5px; color: #5c5c5e; font-size: 13px; text-transform: uppercase; } ul.labels-info li { margin: 0; } ul.labels-info li a { color: #6a6a6a; border-radius: 0; } ul.labels-info li a:hover, ul.labels-info li a:focus { color: #6a6a6a; background: #d5d7de; } ul.labels-info li a i { padding-right: 10px; } .nav.nav-pills.nav-stacked.labels-info p { margin-bottom: 0; padding: 0 22px; color: #9d9f9e; font-size: 11px; } .inbox-head { padding:20px; background: #41cac0; color: #fff; border-radius: 0 4px 0 0; -webkit-border-radius: 0 4px 0 0; min-height: 80px; } .inbox-head h3 { margin: 0; display: inline-block; padding-top: 6px; font-weight: 300; } .inbox-head .sr-input { height: 40px; border: none; box-shadow: none; padding: 0 10px; float: left; border-radius: 4px 0 0 4px; color: #8a8a8a; } .inbox-head .sr-btn { height: 40px; border: none; background: #00a6b2; color: #fff; padding: 0 20px; border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0; } .table-inbox { border: 1px solid #d3d3d3; margin-bottom: 0; } .table-inbox tr td{ padding: 12px !important; } .table-inbox tr td:hover{ cursor: pointer; } .table-inbox tr td .icon-star.inbox-started ,.table-inbox tr td .icon-star:hover{ color: #f78a09; } .table-inbox tr td .icon-star{ color: #d5d5d5; } .table-inbox tr.unread td { font-weight: 600; background: #f7f7f7; } ul.inbox-pagination { float: right; } ul.inbox-pagination li { float: left; } .mail-option { display: inline-block; margin-bottom: 10px; width: 100%; } .mail-option .chk-all, .mail-option .btn-group { margin-right: 5px; } .mail-option .chk-all, .mail-option .btn-group a.btn { border: 1px solid #e7e7e7; padding: 5px 10px; display: inline-block; background: #fcfcfc; color: #afafaf; border-radius: 3px !important; -webkit-border-radius: 3px !important; } .inbox-pagination a.np-btn { border: 1px solid #e7e7e7; padding: 5px 15px; display: inline-block; background: #fcfcfc; color: #afafaf; border-radius: 3px !important; -webkit-border-radius: 3px !important; } .mail-option .chk-all input[type=checkbox] { margin-top: 0; } .mail-option .btn-group a.all { padding: 0; border: none; } .inbox-pagination a.np-btn { margin-left: 5px; } .inbox-pagination li span { display: inline-block; margin-top: 7px; margin-right: 5px; } .fileinput-button { border: 1px solid #e6e6e6; background: #eeeeee; } .inbox-body .modal .modal-body input, .inbox-body .modal .modal-body textarea{ border: 1px solid #e6e6e6; box-shadow: none; } .btn-send, .btn-send:hover { background: #00A8B3; color: #fff; } .btn-send:hover { background: #009da7; } .modal-header h4.modal-title { font-weight: 300; font-family: 'Open Sans', sans-serif; } .modal-body label { font-weight: 400; font-family: 'Open Sans', sans-serif; } /*404 page*/ .body-404 { background: #18d4cb; color: #fff; } .error-wrapper { text-align: center; margin-top: 10%; } .error-wrapper .icon-404{ background: url("../img/404_icon.png") no-repeat; width: 289px; height: 274px; display: inline-block; margin-left: 30px; } .error-wrapper h1 { font-size: 90px; font-weight: 300; margin: -50px 0 0 0; } .error-wrapper h2 { font-size: 20px; font-weight: 300; margin: 0 0 30px 0; } .error-wrapper p, .error-wrapper p a { font-size: 18px; font-weight: 300; } .error-wrapper p.page-404 { color: #7dfff7; } .error-wrapper p.page-404 a, .error-wrapper p.page-500 a, .error-wrapper p.page-404 a:hover, .error-wrapper p.page-500 a:hover { color: #fff; } /*500 page*/ .body-500 { background: #8075c6; color: #fff; } .error-wrapper p.page-500 { color: #afa5f1; } .error-wrapper .icon-500{ background: url("../img/500_icon.png") no-repeat; width: 289px; height: 274px; display: inline-block; margin-left: 55px; } /*profile*/ .profile-nav .user-heading { background: #ff766c; color: #fff; border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; padding: 30px; text-align: center; } .profile-nav .user-heading.round a { border-radius: 50%; -webkit-border-radius: 50%; border: 10px solid rgba(256,256,256,0.3); display: inline-block; } .profile-nav .user-heading a img { width: 112px; height: 112px; border-radius: 50%; -webkit-border-radius: 50%; } .profile-nav .user-heading h1 { font-size: 22px; font-weight: 300; margin-bottom: 5px; } .profile-nav .user-heading p { font-size: 12px; } .profile-nav ul { margin-top: 1px; } .profile-nav ul > li { border-bottom: 1px solid #ebeae6; margin-top: 0; line-height: 30px; } .profile-nav ul > li:last-child { border-bottom: none; } .profile-nav ul > li > a { border-radius: 0; -webkit-border-radius: 0; color: #89817f; border-left: 5px solid #fff; } .profile-nav ul > li > a:hover, .profile-nav ul > li > a:focus, .profile-nav ul li.active a { background: #f8f7f5 !important; border-left: 5px solid #ff766c; color: #89817f !important; } .profile-nav ul > li:last-child > a:last-child { border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; } .profile-nav ul > li > a > i{ font-size: 16px; padding-right: 10px; color: #bcb3aa; } .r-activity { margin: 6px 0 0; font-size: 12px; } .p-text-area, .p-text-area:focus { border: none; font-weight: 300; box-shadow: none; color: #c3c3c3; font-size: 16px; } .profile-info .panel-footer { background-color:#f8f7f5 ; border-top: 1px solid #e7ebee; } .profile-info .panel-footer ul li a { color: #7a7a7a; } .bio-graph-heading { background: #41cac0; color: #fff; text-align: center; font-style: italic; padding: 40px 110px; border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; font-size: 16px; font-weight: 300; } .bio-graph-info { color: #89817e; } .bio-graph-info h1 { font-size: 22px; font-weight: 300; margin: 0 0 20px; } .bio-row { width: 50%; float: left; margin-bottom: 10px; padding:0 15px; } .bio-row p span { width: 100px; display: inline-block; } .bio-chart, .bio-desk { float: left; } .bio-chart { width: 40%; } .bio-desk { width: 60%; } .bio-desk h4 { font-size: 15px; font-weight:400; } .bio-desk h4.terques { color: #4CC5CD; } .bio-desk h4.red { color: #e26b7f; } .bio-desk h4.green { color: #97be4b; } .bio-desk h4.purple { color: #caa3da; } .file-pos { margin: 6px 0 10px 0; } .profile-activity h5 { font-weight: 300; margin-top: 0; color: #c3c3c3; } .summary-head { background: #ee7272; color: #fff; text-align: center; border-bottom: 1px solid #ee7272; } .summary-head h4 { font-weight: 300; text-transform: uppercase; margin-bottom: 5px; } .summary-head p { color: rgba(256,256,256,0.6); } ul.summary-list { display: inline-block; padding-left:0 ; width: 100%; margin-bottom: 0; } ul.summary-list > li { display: inline-block; width: 19.5%; text-align: center; } ul.summary-list > li > a > i { display:block; font-size: 18px; padding-bottom: 5px; } ul.summary-list > li > a { padding: 10px 0; display: inline-block; color: #818181; } ul.summary-list > li { border-right: 1px solid #eaeaea; } ul.summary-list > li:last-child { border-right: none; } .activity { width: 100%; float: left; margin-bottom: 10px; } .activity.alt { width: 100%; float: right; margin-bottom: 10px; } .activity span { float: left; } .activity.alt span { float: right; } .activity span, .activity.alt span { width: 45px; height: 45px; line-height: 45px; border-radius: 50%; -webkit-border-radius: 50%; background: #eee; text-align: center; color: #fff; font-size: 16px; } .activity.terques span { background: #8dd7d6; } .activity.terques h4 { color: #8dd7d6; } .activity.purple span { background: #b984dc; } .activity.purple h4 { color: #b984dc; } .activity.blue span { background: #90b4e6; } .activity.blue h4 { color: #90b4e6; } .activity.green span { background: #aec785; } .activity.green h4 { color: #aec785; } .activity h4 { margin-top:0 ; font-size: 16px; } .activity p { margin-bottom: 0; font-size: 13px; } .activity .activity-desk i, .activity.alt .activity-desk i { float: left; font-size: 18px; margin-right: 10px; color: #bebebe; } .activity .activity-desk { margin-left: 70px; position: relative; } .activity.alt .activity-desk { margin-right: 70px; position: relative; } .activity.alt .activity-desk .panel { float: right; position: relative; } .activity-desk .panel { background: #F4F4F4 ; display: inline-block; } .activity .activity-desk .arrow { border-right: 8px solid #F4F4F4 !important; } .activity .activity-desk .arrow { border-bottom: 8px solid transparent; border-top: 8px solid transparent; display: block; height: 0; left: -7px; position: absolute; top: 13px; width: 0; } .activity-desk .arrow-alt { border-left: 8px solid #F4F4F4 !important; } .activity-desk .arrow-alt { border-bottom: 8px solid transparent; border-top: 8px solid transparent; display: block; height: 0; right: -7px; position: absolute; top: 13px; width: 0; } .activity-desk .album { display: inline-block; margin-top: 10px; } .activity-desk .album a{ margin-right: 10px; } .activity-desk .album a:last-child{ margin-right: 0px; } /*invoice*/ .invoice-list { margin-bottom: 30px; } .invoice-list h4 { font-weight: 300; font-size: 16px; } .invoice-block { text-align: right; } ul.amounts li { background: #f5f5f5; margin-bottom: 5px; padding: 10px; border-radius: 4px; -webkit-border-radius: 4px; font-weight: 300; } .invoice-btn a{ font-weight: 300; margin: 0 5px; font-size: 16px; } .corporate-id { margin-bottom: 30px; } /*panel heading color*/ .panel-primary > .panel-heading.navyblue { background-color: #2A3542; border-color: #2A3542; color: #FFFFFF; } /*table*/ .table-advance tr td { vertical-align: middle !important; } .no-border { border-bottom: none; } .dataTables_length , .dataTables_filter{ padding:15px; } .dataTables_info{ padding:0 15px; } .dataTables_filter { float: right; } .dataTables_length select { width: 65px; padding:5px 8px; } .dataTables_length label, .dataTables_filter label { font-weight: 300; } .dataTables_filter label { width: 100%; } .dataTables_filter label input { width: 78%; } .border-top { border-top: 1px solid #ddd; } .dataTables_paginate.paging_bootstrap.pagination li { float: left; margin: 0 1px; border: 1px solid #ddd; border-radius: 3px; -webkit-border-radius: 3px; } .dataTables_paginate.paging_bootstrap.pagination li.disabled a{ color: #c7c7c7; } .dataTables_paginate.paging_bootstrap.pagination li a{ color: #797979; padding: 5px 10px; display: inline-block; } .dataTables_paginate.paging_bootstrap.pagination li:hover a, .dataTables_paginate.paging_bootstrap.pagination li.active a{ color: #797979; background: #eee; border-radius: 3px; -webkit-border-radius: 3px; } .dataTables_paginate.paging_bootstrap.pagination { float: right; margin-right: 15px; margin-top: -5px; margin-bottom: 15px; } .dataTable tr:last-child { border-bottom: 1px solid #ddd; } /*calender*/ .has-toolbar.fc { margin-top: 50px; } .fc-header-title { display: inline-block; margin-top: -50px; vertical-align: top; } .fc-view { margin-top: -50px; overflow: hidden; width: 100%; } .fc-state-default, .fc-state-default .fc-button-inner { background: #F3F3F3 !important; border-color: #DDDDDD; border-style: none solid; color: #646464; } .fc-state-active, .fc-state-active .fc-button-inner, .fc-state-hover, .fc-state-hover .fc-button-inner{ background: #FF6C60 !important; color: #fff !important; } .fc-event-skin { background-color: #6883a3 !important; border-color: #6883a3 !important; color: #FFFFFF !important; } .fc-grid th { height: 30px; line-height: 30px; text-align: center; background: #F3F3F3 !important; } .fc-header-title h2 { font-size: 20px !important; color: #C8CCD7; font-weight: 300; } .external-event { cursor: move; display: inline-block !important; margin-bottom: 6px !important; margin-right: 6px !important; padding: 8px; } #external-events p input[type="checkbox"]{ margin: 0; } .drg-event-title { font-weight: 300; margin-top: 0; margin-bottom: 15px; border-bottom: 1px solid #ddd; padding-bottom: 10px; } .fc-content .fc-event { border-radius:4px; webkit-border-radius:4px; padding: 4px 6px; } .fc-corner-left { border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; } .fc-corner-right { border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0; } .drp-rmv { padding-top: 10px; margin-top: 10px; } /*button*/ .btn-row { margin-bottom: 10px; } /*tabs*/ .tab-head { background: #7087a3; display: inline-block; width: 100%; margin-top: 60px; } .tab-container { margin-top: 10px; } .tab-head .nav-tabs > li > a { border-radius: 0; margin-right: 1px; color: #fff; } .tab-head .nav-tabs > li.active > a, .tab-head .nav-tabs > li > a:hover, .tab-head .nav-tabs > li.active > a:hover, .tab-head .nav-tabs > li.active > a:focus { background-color: #f1f2f7; border-color: #f1f2f7; color: #797979; } /*general page*/ .progress-xs { height: 8px; } .progress-sm { height: 12px; } .panel-heading .nav { border: medium none; font-size: 13px; margin: -10px -15px -11px; } .tab-bg-dark-navy-blue { background: #7087A3; border-radius: 5px 5px 0 0; -webkit-border-radius: 5px 5px 0 0; border-bottom: none; } .panel-heading .nav > li > a, .panel-heading .nav > li.active > a, .panel-heading .nav > li.active > a:hover, .panel-heading .nav > li.active > a:focus { border-width: 0; border-radius: 0; } .panel-heading .nav > li > a { color: #fff; } .panel-heading .nav > li.active > a, .panel-heading .nav > li > a:hover { color: #47596f; background: #fff; } .panel-heading .nav > li:first-child.active > a, .panel-heading .nav > li:first-child > a:hover { border-radius: 4px 0 0 0; -webkit-border-radius: 4px 0 0 0; } .tab-right { height: 38px; } .panel-heading.tab-right .nav > li:first-child.active > a, .tab-right.panel-heading .nav > li:first-child > a:hover { border-radius: 0 ; -webkit-border-radius: 0 ; } .panel-heading.tab-right .nav > li:last-child.active > a, .tab-right.panel-heading .nav > li:last-child > a:hover { border-radius: 0 4px 0 0; -webkit-border-radius: 0 4px 0 0; } .panel-heading.tab-right .nav-tabs > li > a { margin-left: 1px; margin-right: 0px; } .m-bot20 { margin-bottom: 20px; } .m-bot-none { margin-bottom: 0; } .wht-color { color: #fff; } .close-sm { font-size: 14px; } /*carousel*/ .carousel-indicators li { background: rgba(0, 0, 0, 0.2) ; border: none; transition:background-color 0.25s ease 0s; -moz-transition:background-color 0.25s ease 0s; -webkit-transition:background-color 0.25s ease 0s; } .carousel-indicators .active { background:#ff6c60; height: 10px; margin: 1px; width: 10px; } .carousel-indicators.out { bottom: -5px; } .carousel-indicators.out { bottom: -5px; } .carousel-control { color: #999999; text-shadow: none; width: 45px; } .carousel-control i { display: inline-block; height: 25px; left: 50%; margin-left: -10px; margin-top: -10px; position: absolute; top: 50%; width: 20px; z-index: 5; } .carousel-control.left, .carousel-control.right { background: none; filter:none; } .carousel-control:hover, .carousel-control:focus { color: #CCCCCC; opacity: 0.9; text-decoration: none; } .carousel-inner h3 { font-weight: 300; font-size: 16px; margin: 0; } .carousel-inner { margin-bottom: 15px; } /*gritter*/ .gritter-close { left: auto !important; right: 3px !important; } /*form*/ .sm-input { width: 175px; } .form-horizontal.tasi-form .form-group { border-bottom: 1px solid #eff2f7; padding-bottom: 15px; margin-bottom: 15px; } .form-horizontal.tasi-form .form-group:last-child { border-bottom: none; padding-bottom: 0px; margin-bottom: 0px; } .form-horizontal.tasi-form .form-group .help-block { margin-bottom: 0; } .round-input { border-radius: 500px; -webkit-border-radius: 500px; } .m-bot15 { margin-bottom: 15px; } .form-horizontal.tasi-form .checkbox-inline > input { margin-top: 1px; border:none; } /*form validation*/ .cmxform .form-group label.error { display: inline; margin: 5px 0; color: #B94A48; font-weight: 400; } input:focus:invalid:focus, textarea:focus:invalid:focus, select:focus:invalid:focus, .cmxform .form-group input.error , .cmxform .form-group textarea.error{ border-color: #B94A48 !important; } #signupForm label.error { display: inline; margin:5px 0px; width: auto; color: #B94A48; } .checkbox, .checkbox:hover, .checkbox:focus { border:none; } /*slider*/ table.sliders tr td { padding: 30px 0; border:none; } .slider { margin-top: 3px; } .slider-info { padding-top: 10px; } .sliders .ui-widget-header { background: #22bacf !important; border-radius: 15px !important; -webkit-border-radius: 15px !important; } .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { border-bottom-right-radius: 0 !important; } .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { border-bottom-left-radius: 0 !important; } .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { border-top-right-radius: 0 !important; } .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { border-top-left-radius: 0 !important; } #eq span { height:120px; float:left; margin:15px } .ui-widget-content { background: #f0f2f7 !important; border: none !important; border-radius: 15px !important; -webkit-border-radius: 15px !important; } .ui-slider-horizontal { height: 8px !important; } .ui-slider-horizontal .ui-slider-handle { top: -0.57em !important; } .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { background: #fff !important; border: 3px solid #22bacf !important; border-radius: 50% !important; -webkit-border-radius: 50% !important; } .ui-slider-vertical { width: 8px !important; } .ui-slider-vertical .ui-slider-handle { left: -0.5em !important; } .ui-slider .ui-slider-handle { cursor: default; height: 1.6em; position: absolute; width: 1.6em; z-index: 2; } .bound-s { width: 90px; margin-bottom: 15px; } /*----switch ----*/ .has-switch { border-radius: 30px; -webkit-border-radius: 30px; display: inline-block; cursor: pointer; line-height: 1.231; overflow: hidden; position: relative; text-align: left; width: 80px; -webkit-mask: url('../img/mask.png') 0 0 no-repeat; mask: url('../img/mask.png') 0 0 no-repeat; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; -o-user-select: none; user-select: none; } .has-switch.deactivate { opacity: 0.5; filter: alpha(opacity=50); cursor: default !important; } .has-switch.deactivate label, .has-switch.deactivate span { cursor: default !important; } .has-switch > div { width: 162%; position: relative; top: 0; } .has-switch > div.switch-animate { -webkit-transition: left 0.25s ease-out; -moz-transition: left 0.25s ease-out; -o-transition: left 0.25s ease-out; transition: left 0.25s ease-out; -webkit-backface-visibility: hidden; } .has-switch > div.switch-off { left: -63%; } .has-switch > div.switch-off label { background-color: #7f8c9a; border-color: #bdc3c7; -webkit-box-shadow: -1px 0 0 rgba(255, 255, 255, 0.5); -moz-box-shadow: -1px 0 0 rgba(255, 255, 255, 0.5); box-shadow: -1px 0 0 rgba(255, 255, 255, 0.5); } .has-switch > div.switch-on { left: 0%; } .has-switch > div.switch-on label { background-color: #41cac0; } .has-switch input[type=checkbox] { display: none; } .has-switch span { cursor: pointer; font-size: 14.994px; font-weight: 700; float: left; height: 29px; line-height: 19px; margin: 0; padding-bottom: 6px; padding-top: 5px; position: relative; text-align: center; width: 50%; z-index: 1; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-transition: 0.25s ease-out; -moz-transition: 0.25s ease-out; -o-transition: 0.25s ease-out; transition: 0.25s ease-out; -webkit-backface-visibility: hidden; } .has-switch span.switch-left { border-radius: 30px 0 0 30px; background-color: #2A3542; color: #41cac0; border-left: 1px solid transparent; } .has-switch span.switch-right { border-radius: 0 30px 30px 0; background-color: #bdc3c7; color: #ffffff; text-indent: 7px; } .has-switch span.switch-right [class*="fui-"] { text-indent: 0; } .has-switch label { border: 4px solid #2A3542; border-radius: 50%; -webkit-border-radius: 50%; float: left; height: 29px; margin: 0 -21px 0 -14px; padding: 0; position: relative; vertical-align: middle; width: 29px; z-index: 100; -webkit-transition: 0.25s ease-out; -moz-transition: 0.25s ease-out; -o-transition: 0.25s ease-out; transition: 0.25s ease-out; -webkit-backface-visibility: hidden; } .switch-square { border-radius: 6px; -webkit-border-radius: 6px; -webkit-mask: url('../img/mask.png') 0 0 no-repeat; mask: url('../img/mask.png') 0 0 no-repeat; } .switch-square > div.switch-off label { border-color: #7f8c9a; border-radius: 6px 0 0 6px; } .switch-square span.switch-left { border-radius: 6px 0 0 6px; } .switch-square span.switch-left [class*="fui-"] { text-indent: -10px; } .switch-square span.switch-right { border-radius: 0 6px 6px 0; } .switch-square span.switch-right [class*="fui-"] { text-indent: 5px; } .switch-square label { border-radius: 0 6px 6px 0; border-color: #41cac0; } /*tag input*/ .tagsinput { border: 1px solid #e3e6ed; border-radius: 6px; height: 100px; padding: 6px 1px 1px 6px; overflow-y: auto; text-align: left; } .tagsinput .tag { border-radius: 4px; background-color: #41cac0; color: #ffffff; cursor: pointer; margin-right: 5px; margin-bottom: 5px; overflow: hidden; line-height: 15px; padding: 6px 13px 8px 19px; position: relative; vertical-align: middle; display: inline-block; zoom: 1; *display: inline; -webkit-transition: 0.14s linear; -moz-transition: 0.14s linear; -o-transition: 0.14s linear; transition: 0.14s linear; -webkit-backface-visibility: hidden; } .tagsinput .tag:hover { background-color: #39b1a8; color: #ffffff; padding-left: 12px; padding-right: 20px; } .tagsinput .tag:hover .tagsinput-remove-link { color: #ffffff; opacity: 1; display: block\9; } .tagsinput input { background: transparent; border: none; color: #34495e; font-family: "Lato", sans-serif; font-size: 14px; margin: 0px; padding: 0 0 0 5px; outline: 0; margin-right: 5px; margin-bottom: 5px; width: 12px; } .tagsinput-remove-link { bottom: 0; color: #ffffff; cursor: pointer; font-size: 12px; opacity: 0; padding: 7px 7px 5px 0; position: absolute; right: 0; text-align: right; text-decoration: none; top: 0; width: 100%; z-index: 2; display: none\9; } .tagsinput-remove-link:before { color: #ffffff; content: "\f00d"; font-family: "FontAwesome"; } .tagsinput-add-container { vertical-align: middle; display: inline-block; zoom: 1; *display: inline; } .tagsinput-add { background-color: #d6dbdf; border-radius: 3px; color: #ffffff; cursor: pointer; margin-bottom: 5px; padding: 6px 9px; display: inline-block; zoom: 1; *display: inline; -webkit-transition: 0.25s; -moz-transition: 0.25s; -o-transition: 0.25s; transition: 0.25s; -webkit-backface-visibility: hidden; } .tagsinput-add:hover { background-color: #3bb8af; } .tagsinput-add:before { content: "\f067"; font-family: "FontAwesome"; } .tags_clear { clear: both; width: 100%; height: 0px; } /*checkbox & radio style*/ .checkboxes label, .radios label { display: block; cursor: pointer; line-height: 20px; padding-bottom: 7px; font-weight: 300; } .radios { padding-top: 18px; } .label_check input, .label_radio input { margin-right: 5px; } .has-js .label_check, .has-js .label_radio { padding-left: 34px; } .has-js .label_radio { background: url(../img/checkbox/radio-off.png) no-repeat; } .has-js .label_check { background: url(../img/checkbox/check-off.png) no-repeat; } .has-js label.c_on { background: url(../img/checkbox/check-on.png) no-repeat; } .has-js label.r_on { background: url(../img/checkbox/radio-on.png) no-repeat; } .has-js .label_check input, .has-js .label_radio input { position: absolute; left: -9999px; } /*date picker*/ .add-on { float: right; margin-top: -37px; padding: 3px; text-align: center; } .add-on .btn { padding: 9px; } .daterangepicker .ranges .range_inputs > div:nth-child(2) { margin-bottom: 10px; padding-left: 0px; } .daterangepicker .ranges label { padding-bottom: 0; padding-top: 8px; } .daterangepicker td.active, .daterangepicker td.active:hover, .datepicker td.active:hover, .datepicker td.active:hover:hover, .datepicker td.active:active, .datepicker td.active:hover:active, .datepicker td.active.active, .datepicker td.active.active:hover, .datepicker td.active.disabled, .datepicker td.active.disabled:hover, .datepicker td.active[disabled], .datepicker td.active[disabled]:hover, .datepicker td span.active:hover, .datepicker td span.active:active, .datepicker td span.active.active, .datepicker td span.active.disabled, .datepicker td span.active[disabled]{ background: #41CAC0; } .daterangepicker .calendar th, .daterangepicker .calendar td { font-family: 'Open Sans', sans-serif; font-weight: 300; text-align: center; white-space: nowrap; } .daterangepicker td.active, .daterangepicker td.active:hover, .datepicker td.active, .datepicker td.active:hover, .datepicker td span.active { text-shadow: none; } .datepicker th.switch { width: 125px; } .datepicker td span { height: 40px; line-height: 40px; } .bootstrap-timepicker table td input { border: 1px solid #ccc; border-radius:3px; -webkit-border-radius:3px; } /*ck editor*/ .cke_top, .cke_bottom { background: #F5F5F5 !important; background: -moz-linear-gradient(center top , #F5F5F5, #F5F5F5) repeat scroll 0 0 #F5F5F5 !important; background: -webkit-linear-gradient(center top , #F5F5F5, #F5F5F5) repeat scroll 0 0 #F5F5F5 !important; background: -o-linear-gradient(center top , #F5F5F5, #F5F5F5) repeat scroll 0 0 #F5F5F5 !important; box-shadow: none; padding: 6px 8px 2px; } .cke_top { border-bottom: 1px solid #cccccc !important; } .cke_chrome { display: block; padding: 0; } /*form wizard*/ .stepy-tab { text-align: center; } .stepy-tab ul{ display: inline-block; } .stepy-tab ul li { float: left; } .step legend { border: none; } .button-back { float: left; } .button-next, .finish { float: right; } .button-back, .button-next, .finish { cursor: pointer; text-decoration: none; } .step { clear: left; } .step label { display: block; } .stepy-titles li { color: #757575; cursor: pointer; float: left; margin: 10px 15px; } .stepy-titles li span { display: block; } .stepy-titles li.current-step div { color: #fff; cursor: auto; background: #A9D86E; border-radius: 50%; -webkit-border-radius: 50%; width: 100px; height: 100px; line-height: 100px; } .stepy-titles li div{ font-size:16px; font-weight: 300; background: #eee; border-radius: 50%; -webkit-border-radius: 50%; width: 100px; height: 100px; line-height: 100px; } /*widget*/ .user-heading.alt { display: inline-block; width: 100%; text-align: left; } .alt.green-bg { background: #aec785; } .profile-nav.alt.green-border ul > li > a:hover, .profile-nav.alt.green-border ul > li > a:focus, .profile-nav.alt.green-border ul li.active a { border-left: 5px solid #aec785; } .user-heading.alt a { float: left; margin-right: 15px; margin-left: -10px; display: inline-block; border: 5px solid rgba(255, 255, 255, 0.3); border-radius: 50%; -webkit-border-radius: 50%; } .user-heading.alt a img{ width: 100px; height: 100px; border-radius: 50%; -webkit-border-radius: 50%; } .twt-feed { border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; color: #FFFFFF; padding: 10px; position: relative; text-align: center; } .twt-feed.blue-bg { background: #58C9F3; } .twt-feed h1 { font-size: 22px; font-weight: 300; margin-bottom: 5px; } .twt-feed a { border: 8px solid #fff; border-radius: 50%; -webit-border-radius: 50%; display: inline-block; margin-bottom: -55px; } .twt-feed a img { height: 112px; width: 112px; border-radius: 50%; -webit-border-radius: 50%; } .twt-category { display: inline-block; margin-bottom: 11px; margin-top: 55px; width: 100%; } .twt-category ul li{ color: #89817f; font-size: 13px; } .twt-category h5 { font-size: 20px; font-weight: 300; } .twt-write .t-text-area { border: 1px solid #eeeeee; border-radius: 0; } .twt-footer { padding: 10px 15px; } .btn-space { padding-left: 11.6%; padding-right: 11%; } .p-head { color: #f77b6f; font-weight: 400; font-size: 20px; } .cmt-head { font-weight: 400; font-size: 13px; } .p-thumb img { width: 50px; height: 50px; border-radius: 3px; -webkit-border-radius: 3px; } .tasi-tab .media-body p { /*color: #b8bac6;*/ } /*Timeline chat*/ .chat-form { margin-top: 25px; clear: both; } .chat-form .input-cont { margin-bottom: 10px; } .chat-form .input-cont input { margin-bottom: 0px; } .chat-form .input-cont input{ border: 1px solid #d3d3d3 !important; margin-top:0; min-height: 45px; } .chat-form .input-cont input { background-color: #fff !important; } .chat-features a { margin-left: 10px; } .chat-features a i{ color: #d0d0d0; } .timeline-messages:before { background: rgba(0, 0, 0, 0.1); bottom: 0; top: 0; width: 2px; } .timeline-messages:before, .msg-time-chat:before, .msg-time-chat .text:before { content: ""; left: 60px; position: absolute; top: -2px; } .timeline-messages, .msg-time-chat , .timeline-messages .msg-in, .timeline-messages .msg-out { position: relative; } .timeline-messages .msg-in .arrow { /*border-right: 8px solid #F4F4F4 !important;*/ } .timeline-messages .msg-in .arrow { border-bottom: 8px solid transparent; border-top: 8px solid transparent; display: block; height: 0; left: -8px; position: absolute; top: 13px; width: 0; } .timeline-messages .msg-out .arrow { /*border-right: 8px solid #41cac0 !important;*/ } .timeline-messages .msg-out .arrow { border-bottom: 8px solid transparent; border-top: 8px solid transparent; display: block; height: 0; left: -8px; position: absolute; top: 13px; width: 0; } .msg-time-chat:first-child:before { margin-top: 16px; } .msg-time-chat:before { background:#CCCCCC; border: 2px solid #FAFAFA; border-radius: 100px; -moz-border-radius: 100px; -webkit-border-radius: 100px; height: 14px; margin: 23px 0 0 -6px; width: 14px; } .msg-time-chat:hover:before { background: #41cac0; } .msg-time-chat:first-child { padding-top: 0; } .message-img { float: left; margin-right: 30px; overflow: hidden; } .message-img img { display: block; height: 44px; width: 44px; } .message-body { margin-left: 80px; } .msg-time-chat .msg-in .text { border: 1px solid #e3e6ed; padding: 10px; border-radius: 4px; -webkit-border-radius: 4px; } .msg-time-chat .msg-out .text { border: 1px solid #e3e6ed; padding: 10px; border-radius: 4px; -webkit-border-radius: 4px; } .msg-time-chat p { margin: 0; } .msg-time-chat .attribution { font-size: 11px; margin: 0px 0 5px; } .msg-time-chat { overflow: hidden; padding:8px 0; } .msg-in a, .msg-in a:hover{ color: #b64c4c; text-decoration: none; border-radius: 4px; -webkit-border-radius: 4px; margin-right: 10px; font-weight: 400; font-size: 13px; } .msg-out a, .msg-out a:hover{ color: #288f98; text-decoration: none; border-radius: 4px; -webkit-border-radius: 4px; margin-right: 10px; font-weight: 400; font-size: 13px; } /*custom select*/ span.customSelect { font-size:12px; background-color: #ffffff; padding:10px; border:1px solid #EAEAEA; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; color: #A4AABA; } span.customSelect.changed { background-color: #fff; } .customSelectInner { background:url(../img/customSelect-arrow.gif) no-repeat center right; } /*boxed page */ .boxed-page { background-color: #ccc !important; } .boxed-page .container { background: #2A3542; padding-left: 0; padding-right: 0; } .boxed-page .container #sidebar { position:inherit; } .boxed-page .container .header .container{ background: #fff; } .boxed-page .container aside { float: left; } .boxed-page .container .wrapper{ background: #F1F2F7; min-height: 900px; } /*collapsible*/ .tools a { margin-left: 10px; color: #a7a7a7; font-size: 12px; } /* google maps */ .gmaps { height: 300px; width: 100%; } /* star rating */ .rating { unicode-bidi: bidi-override; direction: rtl; font-size: 30px; } .rating span.star, .rating span.star { font-family: FontAwesome; font-weight: normal; font-style: normal; display: inline-block; } .rating span.star:hover, .rating span.star:hover { cursor: pointer; } .rating span.star:before, .rating span.star:before { content: "\f006"; padding-right: 5px; color: #BEC3C7; } .rating span.star:hover:before, .rating span.star:hover:before, .rating span.star:hover ~ span.star:before, .rating span.star:hover ~ span.star:before { content: "\f005"; color: #41CAC0; } /*search page*/ .classic-search { margin-bottom: 30px; } .classic-search h4 { margin-bottom: 3px; font-weight: 300; font-size: 16px; } .classic-search h4 a { color: #314558; } .classic-search h4 a:hover { text-decoration: underline; } /*ckEditor*/ #editor-container { width: 100%; margin: 10px auto 0; } #header-editor { overflow: hidden; padding: 0 0 30px; border-bottom: 1px solid #eaeaea; position: relative; } #headerLeft, #headerRight { width: 49%; overflow: hidden; } #headerLeft { float: left; padding: 10px 1px 1px; } #headerLeft h2, #headerLeft h3 { margin: 0; overflow: hidden; font-weight: normal; font-family: 'Open Sans', sans-serif; } #headerLeft h2 { font-size: 2.6em; line-height: 1.1em; text-transform: capitalize; color: #314558; margin-bottom: 20px; } #headerLeft h3 { font-size: 1.5em; line-height: 1.1em; margin: .2em 0 0; color: #757575; } #headerRight { float: right; padding: 1px; } #headerRight p { line-height: 1.8em; text-align: justify; margin: 0; } #headerRight p + p { margin-top: 20px; } #headerRight > div { padding: 20px; margin: 0 0 0 30px; font-size: 1.1em; color: #757575; } #columns { color: #757575; overflow: hidden; padding: 20px 0; } #columns h3 { color: #314558; } #columns > div { float: left; width: 33.3%; } #columns #column1 > div { margin-left: 1px; } #columns #column3 > div { margin-right: 1px; } #columns > div > div { margin: 0px 10px; padding: 10px 20px; } #columns blockquote { margin-left: 15px; } #taglist { display: inline-block; margin-left: 20px; font-weight: bold; margin: 0 0 0 20px; } .cke_editable.cke_editable_inline.cke_focus { background: #fcfcfc; border: 1px solid #eaeaea; cursor: text; outline: medium none; } /*advanced table*/ .adv-table table tr td { padding: 10px; } .adv-table table.display thead th { border-bottom: 1px solid #DDDDDD; padding: 10px; } tr.odd.gradeA td.sorting_1, tr.odd td.sorting_1, tr.even.gradeA td.sorting_1 { background: none; } td.details { background-color: #eee; } td.details table tr td, .dataTable tr:last-child { border: none; } .adv-table table.display tr.odd.gradeA { background-color: #F9F9F9; } .adv-table table.display tr.even.gradeA { background-color: #FFFFFF; } .adv-table .dataTables_filter label input { float: right; margin-left: 10px; width: 78%; } .adv-table .dataTables_filter label { line-height: 33px; width: 100%; } .adv-table .dataTables_length select { display: inline-block; margin: 0 10px; padding: 5px 8px; width: 65px; } .adv-table .dataTables_info, .dataTables_paginate { padding: 15px; } .adv-table .dataTables_length,.adv-table .dataTables_filter { padding: 15px 0; } .cke_chrome { border: none !important; } .editable-table .dataTables_filter { width: 80%; } tr.odd.gradeX td.sorting_1, tr.even.gradeX td.sorting_1, table.display tr.even.gradeX, table.display tr.gradeX, tr.even.gradeU td.sorting_1, tr.even td.sorting_1, table.display tr.even.gradeC, table.display tr.gradeC, tr.odd.gradeC td.sorting_1, table.display tr.even.gradeU, table.display tr.gradeU, tr.odd.gradeU td.sorting_1{ background: none !important; } /*flot chart*/ .flot-chart .chart, .flot-chart .pie, .flot-chart .bars { height: 300px; } /*xchart*/ .demo-xchart { height: 400px; width: 100%; } /*Horizontal menu*/ .full-width #main-content { margin-left: 0; } .horizontal-menu { margin-left: 50px; float: left; } .horizontal-menu .navbar-nav > li > a { padding-bottom: 20px; padding-top: 20px; } .full-width .navbar-header { width: 100%; } .full-width .nav > li > a:hover, .full-width .nav li.active a, .full-width .nav li.dropdown a:hover , .full-width .nav li.dropdown.open a:focus, .full-width .nav .open > a, .full-width .nav .open > a:hover, .full-width .nav .open > a:focus{ background-color: #F77B6F; text-decoration: none; color: #fff; transition: all 0.3s ease 0s; -webkit-transition: all 0.3s ease 0s; } .full-width .dropdown-menu { box-shadow: none; } .full-width .dropdown-menu > li > a { padding: 10px 20px; font-size: 13px; } /*advanced form*/ .form-body { padding: 20px; } /*multiselect*/ .ms-container .ms-selectable li.ms-hover, .ms-container .ms-selection li.ms-hover { background-color: #2A3542; color: #FFFFFF; cursor: pointer; text-decoration: none; } .ms-container .ms-list, .ms-container .ms-list.ms-focus { box-shadow: none !important; } .ms-container .ms-list.ms-focus { border: 1px solid #2A3542; } .ms-selectable .search-input, .ms-selection .search-input{ margin-bottom: 10px; } /*spinner*/ .spinner-buttons.btn-group-vertical .btn { height: 17px; margin: 0; padding-left: 6px; padding-right: 6px; text-align: center; width: 22px; } .spinner-buttons.btn-group-vertical .btn i { margin-top: -3px; } .spinner-buttons.btn-group-vertical .btn:first-child { border-radius: 0 4px 0 0 !important; -webkit-border-radius: 0 4px 0 0 !important; } .spinner-buttons.btn-group-vertical .btn:last-child { border-radius: 0 0 4px !important; -webkit-border-radius: 0 0 4px !important; } /**/ .wysihtml5-toolbar .btn-default { background: #fff; color: #757575; } /*todolist*/ #sortable { list-style-type: none; margin: 0 0 20px 0; padding: 0; width: 100%; } #sortable li { padding-left: 3em; font-size: 12px; } #sortable li i { position: absolute; left:6px; padding:4px 10px 0 10px; cursor: pointer; } #sortable li input[type=checkbox]{ margin-top: 0; } .ui-sortable > li { padding: 15px 0 15px 35px !important ; position: relative; background: #f5f6f8; margin-bottom: 2px; border-bottom : none !important; } .ui-sortable li.list-primary { border-left: 3px solid #41CAC0; } .ui-sortable li.list-success { border-left: 3px solid #78CD51; } .ui-sortable li.list-danger { border-left: 3px solid #FF6C60; } .ui-sortable li.list-warning { border-left: 3px solid #F1C500; } .ui-sortable li.list-info { border-left: 3px solid #58C9F3; } .ui-sortable li.list-inverse { border-left: 3px solid #BEC3C7; } /*lock screen*/ .lock-screen { background:#02bac6 url("../img/lock-bg.jpg"); background-size: cover; background-repeat: repeat; } .lock-wrapper { margin: 10% auto; max-width: 330px; } .lock-box { background: rgba(255,255,255,.3); padding: 20px; border-radius: 10px; -webkit-border-radius: 10px; position: relative; } .lock-wrapper img { position: absolute; left: 40%; top: -40px; border-radius: 50%; -webkit-border-radius: 50%; border: 5px solid #fff; } .lock-wrapper h1 { text-align: center; color: #fff; font-size: 18px; text-transform: uppercase; padding: 20px 0 0 0; } .lock-wrapper .locked { margin-bottom: 20px; display: inline-block; color: #026f7a; } .btn-lock,.btn-lock:hover { background: #02b5c2; color: #fff; } .lock-input { width: 83%; border: none; float: left; margin-right: 3px; } #time { width: 100%; color: #fff; font-size: 60px; margin-bottom: 80px; display: inline-block; text-align: center; font-family: 'Open Sans', sans-serif; font-weight: 300; } /*language*/ .language { margin-top: 4px; } .language .dropdown-menu { border: 1px solid #eee; box-shadow: 0 2px 3px rgba(0, 0, 0, 0.176) !important; } .language .dropdown-menu li a{ border-bottom: 1px solid #eee; padding: 10px; } .language .dropdown-menu li:last-child a { border-bottom: none; } .language .dropdown-menu li a { font-size: 13px; } /*product list*/ .prod-cat li a{ border-bottom: 1px dashed #d9d9d9; } .prod-cat li a { color: #3b3b3b; } .prod-cat li ul { margin-left: 30px; } .prod-cat li ul li a{ border-bottom:none; } .prod-cat li ul li a:hover,.prod-cat li ul li a:focus, .prod-cat li ul li.active a , .prod-cat li a:hover,.prod-cat li a:focus, .prod-cat li a.active{ background: none; color: #ff7261; } .pro-lab{ margin-right: 20px; font-weight: normal; } .pro-sort { padding-right: 20px; float: left; } .pro-page-list { margin: 5px 0 0 0; } .product-list img{ width: 100%; border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; } .product-list .pro-img-box { position: relative; } .adtocart { background: #fc5959; width: 50px; height: 50px; border-radius: 50%; -webkit-border-radius: 50%; color: #fff; display: inline-block; text-align: center; border: 3px solid #fff; left: 45%; bottom: -25px; position: absolute; } .adtocart i{ color: #fff; font-size: 25px; line-height: 42px; } .pro-title { color: #5A5A5A; display: inline-block; margin-top: 20px; font-size: 16px; } .product-list .price { color:#fc5959 ; font-size: 15px; } .pro-img-details { margin-left: -15px; } .pro-img-details img { width: 100%; } .pro-d-title { font-size: 16px; margin-top: 0; } .product_meta { border-top: 1px solid #eee; border-bottom: 1px solid #eee; padding: 10px 0; margin: 15px 0; } .product_meta span { display: block; margin-bottom: 10px; } .product_meta a, .pro-price{ color:#fc5959 ; } .pro-price, .amount-old { font-size: 18px; padding: 0 10px; } .amount-old { text-decoration: line-through; } .quantity { width: 120px; } .pro-img-list { margin: 10px 0 0 -15px; width: 100%; display: inline-block; } .pro-img-list a { float: left; margin-right: 10px; margin-bottom: 10px; } .pro-d-head { font-size: 18px; font-weight: 300; } /*footer*/ .site-footer { background: #5b6e84; color: #fff; padding: 10px 0; } .go-top { margin-right: 1%; float: right; background: rgba(255,255,255,.5); width: 20px; height: 20px; border-radius: 50%; -webkit-border-radius: 50%; } .go-top i { color: #2A3542; } .site-min-height { min-height: 900px; } ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/flatlab/js/bootstrap.js ================================================ /*! * Bootstrap v3.0.2 by @fat and @mdo * Copyright 2013 Twitter, Inc. * Licensed under http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world by @mdo and @fat. */ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery") } /* ======================================================================== * Bootstrap: transition.js v3.0.2 * http://getbootstrap.com/javascript/#transitions * ======================================================================== * Copyright 2013 Twitter, Inc. * * 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. * ======================================================================== */ +function ($) { "use strict"; // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) // ============================================================ function transitionEnd() { var el = document.createElement('bootstrap') var transEndEventNames = { 'WebkitTransition' : 'webkitTransitionEnd' , 'MozTransition' : 'transitionend' , 'OTransition' : 'oTransitionEnd otransitionend' , 'transition' : 'transitionend' } for (var name in transEndEventNames) { if (el.style[name] !== undefined) { return { end: transEndEventNames[name] } } } } // http://blog.alexmaccaw.com/css-transitions $.fn.emulateTransitionEnd = function (duration) { var called = false, $el = this $(this).one($.support.transition.end, function () { called = true }) var callback = function () { if (!called) $($el).trigger($.support.transition.end) } setTimeout(callback, duration) return this } $(function () { $.support.transition = transitionEnd() }) }(jQuery); /* ======================================================================== * Bootstrap: alert.js v3.0.2 * http://getbootstrap.com/javascript/#alerts * ======================================================================== * Copyright 2013 Twitter, Inc. * * 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. * ======================================================================== */ +function ($) { "use strict"; // ALERT CLASS DEFINITION // ====================== var dismiss = '[data-dismiss="alert"]' var Alert = function (el) { $(el).on('click', dismiss, this.close) } Alert.prototype.close = function (e) { var $this = $(this) var selector = $this.attr('data-target') if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } var $parent = $(selector) if (e) e.preventDefault() if (!$parent.length) { $parent = $this.hasClass('alert') ? $this : $this.parent() } $parent.trigger(e = $.Event('close.bs.alert')) if (e.isDefaultPrevented()) return $parent.removeClass('in') function removeElement() { $parent.trigger('closed.bs.alert').remove() } $.support.transition && $parent.hasClass('fade') ? $parent .one($.support.transition.end, removeElement) .emulateTransitionEnd(150) : removeElement() } // ALERT PLUGIN DEFINITION // ======================= var old = $.fn.alert $.fn.alert = function (option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.alert') if (!data) $this.data('bs.alert', (data = new Alert(this))) if (typeof option == 'string') data[option].call($this) }) } $.fn.alert.Constructor = Alert // ALERT NO CONFLICT // ================= $.fn.alert.noConflict = function () { $.fn.alert = old return this } // ALERT DATA-API // ============== $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) }(jQuery); /* ======================================================================== * Bootstrap: button.js v3.0.2 * http://getbootstrap.com/javascript/#buttons * ======================================================================== * Copyright 2013 Twitter, Inc. * * 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. * ======================================================================== */ +function ($) { "use strict"; // BUTTON PUBLIC CLASS DEFINITION // ============================== var Button = function (element, options) { this.$element = $(element) this.options = $.extend({}, Button.DEFAULTS, options) } Button.DEFAULTS = { loadingText: 'loading...' } Button.prototype.setState = function (state) { var d = 'disabled' var $el = this.$element var val = $el.is('input') ? 'val' : 'html' var data = $el.data() state = state + 'Text' if (!data.resetText) $el.data('resetText', $el[val]()) $el[val](data[state] || this.options[state]) // push to event loop to allow forms to submit setTimeout(function () { state == 'loadingText' ? $el.addClass(d).attr(d, d) : $el.removeClass(d).removeAttr(d); }, 0) } Button.prototype.toggle = function () { var $parent = this.$element.closest('[data-toggle="buttons"]') if ($parent.length) { var $input = this.$element.find('input') .prop('checked', !this.$element.hasClass('active')) .trigger('change') if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active') } this.$element.toggleClass('active') } // BUTTON PLUGIN DEFINITION // ======================== var old = $.fn.button $.fn.button = function (option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.button') var options = typeof option == 'object' && option if (!data) $this.data('bs.button', (data = new Button(this, options))) if (option == 'toggle') data.toggle() else if (option) data.setState(option) }) } $.fn.button.Constructor = Button // BUTTON NO CONFLICT // ================== $.fn.button.noConflict = function () { $.fn.button = old return this } // BUTTON DATA-API // =============== $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { var $btn = $(e.target) if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') $btn.button('toggle') e.preventDefault() }) }(jQuery); /* ======================================================================== * Bootstrap: carousel.js v3.0.2 * http://getbootstrap.com/javascript/#carousel * ======================================================================== * Copyright 2013 Twitter, Inc. * * 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. * ======================================================================== */ +function ($) { "use strict"; // CAROUSEL CLASS DEFINITION // ========================= var Carousel = function (element, options) { this.$element = $(element) this.$indicators = this.$element.find('.carousel-indicators') this.options = options this.paused = this.sliding = this.interval = this.$active = this.$items = null this.options.pause == 'hover' && this.$element .on('mouseenter', $.proxy(this.pause, this)) .on('mouseleave', $.proxy(this.cycle, this)) } Carousel.DEFAULTS = { interval: 5000 , pause: 'hover' , wrap: true } Carousel.prototype.cycle = function (e) { e || (this.paused = false) this.interval && clearInterval(this.interval) this.options.interval && !this.paused && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) return this } Carousel.prototype.getActiveIndex = function () { this.$active = this.$element.find('.item.active') this.$items = this.$active.parent().children() return this.$items.index(this.$active) } Carousel.prototype.to = function (pos) { var that = this var activeIndex = this.getActiveIndex() if (pos > (this.$items.length - 1) || pos < 0) return if (this.sliding) return this.$element.one('slid', function () { that.to(pos) }) if (activeIndex == pos) return this.pause().cycle() return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) } Carousel.prototype.pause = function (e) { e || (this.paused = true) if (this.$element.find('.next, .prev').length && $.support.transition.end) { this.$element.trigger($.support.transition.end) this.cycle(true) } this.interval = clearInterval(this.interval) return this } Carousel.prototype.next = function () { if (this.sliding) return return this.slide('next') } Carousel.prototype.prev = function () { if (this.sliding) return return this.slide('prev') } Carousel.prototype.slide = function (type, next) { var $active = this.$element.find('.item.active') var $next = next || $active[type]() var isCycling = this.interval var direction = type == 'next' ? 'left' : 'right' var fallback = type == 'next' ? 'first' : 'last' var that = this if (!$next.length) { if (!this.options.wrap) return $next = this.$element.find('.item')[fallback]() } this.sliding = true isCycling && this.pause() var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) if ($next.hasClass('active')) return if (this.$indicators.length) { this.$indicators.find('.active').removeClass('active') this.$element.one('slid', function () { var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) $nextIndicator && $nextIndicator.addClass('active') }) } if ($.support.transition && this.$element.hasClass('slide')) { this.$element.trigger(e) if (e.isDefaultPrevented()) return $next.addClass(type) $next[0].offsetWidth // force reflow $active.addClass(direction) $next.addClass(direction) $active .one($.support.transition.end, function () { $next.removeClass([type, direction].join(' ')).addClass('active') $active.removeClass(['active', direction].join(' ')) that.sliding = false setTimeout(function () { that.$element.trigger('slid') }, 0) }) .emulateTransitionEnd(600) } else { this.$element.trigger(e) if (e.isDefaultPrevented()) return $active.removeClass('active') $next.addClass('active') this.sliding = false this.$element.trigger('slid') } isCycling && this.cycle() return this } // CAROUSEL PLUGIN DEFINITION // ========================== var old = $.fn.carousel $.fn.carousel = function (option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.carousel') var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) var action = typeof option == 'string' ? option : options.slide if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) if (typeof option == 'number') data.to(option) else if (action) data[action]() else if (options.interval) data.pause().cycle() }) } $.fn.carousel.Constructor = Carousel // CAROUSEL NO CONFLICT // ==================== $.fn.carousel.noConflict = function () { $.fn.carousel = old return this } // CAROUSEL DATA-API // ================= $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { var $this = $(this), href var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 var options = $.extend({}, $target.data(), $this.data()) var slideIndex = $this.attr('data-slide-to') if (slideIndex) options.interval = false $target.carousel(options) if (slideIndex = $this.attr('data-slide-to')) { $target.data('bs.carousel').to(slideIndex) } e.preventDefault() }) $(window).on('load', function () { $('[data-ride="carousel"]').each(function () { var $carousel = $(this) $carousel.carousel($carousel.data()) }) }) }(jQuery); /* ======================================================================== * Bootstrap: collapse.js v3.0.2 * http://getbootstrap.com/javascript/#collapse * ======================================================================== * Copyright 2013 Twitter, Inc. * * 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. * ======================================================================== */ +function ($) { "use strict"; // COLLAPSE PUBLIC CLASS DEFINITION // ================================ var Collapse = function (element, options) { this.$element = $(element) this.options = $.extend({}, Collapse.DEFAULTS, options) this.transitioning = null if (this.options.parent) this.$parent = $(this.options.parent) if (this.options.toggle) this.toggle() } Collapse.DEFAULTS = { toggle: true } Collapse.prototype.dimension = function () { var hasWidth = this.$element.hasClass('width') return hasWidth ? 'width' : 'height' } Collapse.prototype.show = function () { if (this.transitioning || this.$element.hasClass('in')) return var startEvent = $.Event('show.bs.collapse') this.$element.trigger(startEvent) if (startEvent.isDefaultPrevented()) return var actives = this.$parent && this.$parent.find('> .panel > .in') if (actives && actives.length) { var hasData = actives.data('bs.collapse') if (hasData && hasData.transitioning) return actives.collapse('hide') hasData || actives.data('bs.collapse', null) } var dimension = this.dimension() this.$element .removeClass('collapse') .addClass('collapsing') [dimension](0) this.transitioning = 1 var complete = function () { this.$element .removeClass('collapsing') .addClass('in') [dimension]('auto') this.transitioning = 0 this.$element.trigger('shown.bs.collapse') } if (!$.support.transition) return complete.call(this) var scrollSize = $.camelCase(['scroll', dimension].join('-')) this.$element .one($.support.transition.end, $.proxy(complete, this)) .emulateTransitionEnd(350) [dimension](this.$element[0][scrollSize]) } Collapse.prototype.hide = function () { if (this.transitioning || !this.$element.hasClass('in')) return var startEvent = $.Event('hide.bs.collapse') this.$element.trigger(startEvent) if (startEvent.isDefaultPrevented()) return var dimension = this.dimension() this.$element [dimension](this.$element[dimension]()) [0].offsetHeight this.$element .addClass('collapsing') .removeClass('collapse') .removeClass('in') this.transitioning = 1 var complete = function () { this.transitioning = 0 this.$element .trigger('hidden.bs.collapse') .removeClass('collapsing') .addClass('collapse') } if (!$.support.transition) return complete.call(this) this.$element [dimension](0) .one($.support.transition.end, $.proxy(complete, this)) .emulateTransitionEnd(350) } Collapse.prototype.toggle = function () { this[this.$element.hasClass('in') ? 'hide' : 'show']() } // COLLAPSE PLUGIN DEFINITION // ========================== var old = $.fn.collapse $.fn.collapse = function (option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.collapse') var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) if (typeof option == 'string') data[option]() }) } $.fn.collapse.Constructor = Collapse // COLLAPSE NO CONFLICT // ==================== $.fn.collapse.noConflict = function () { $.fn.collapse = old return this } // COLLAPSE DATA-API // ================= $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { var $this = $(this), href var target = $this.attr('data-target') || e.preventDefault() || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 var $target = $(target) var data = $target.data('bs.collapse') var option = data ? 'toggle' : $this.data() var parent = $this.attr('data-parent') var $parent = parent && $(parent) if (!data || !data.transitioning) { if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') } $target.collapse(option) }) }(jQuery); /* ======================================================================== * Bootstrap: dropdown.js v3.0.2 * http://getbootstrap.com/javascript/#dropdowns * ======================================================================== * Copyright 2013 Twitter, Inc. * * 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. * ======================================================================== */ +function ($) { "use strict"; // DROPDOWN CLASS DEFINITION // ========================= var backdrop = '.dropdown-backdrop' var toggle = '[data-toggle=dropdown]' var Dropdown = function (element) { var $el = $(element).on('click.bs.dropdown', this.toggle) } Dropdown.prototype.toggle = function (e) { var $this = $(this) if ($this.is('.disabled, :disabled')) return var $parent = getParent($this) var isActive = $parent.hasClass('open') clearMenus() if (!isActive) { if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { // if mobile we we use a backdrop because click events don't delegate $('":"";return f.zIndex=g,b([f.shade?'
              ':"",'
              '+(a&&2!=f.type?"":k)+'
              '+(0==f.type&&-1!==f.icon?'':"")+(1==f.type&&a?"":f.content||"")+'
              '+function(){var a=j?'':"";return f.closeBtn&&(a+=''),a}()+""+(f.btn?function(){var a="";"string"==typeof f.btn&&(f.btn=[f.btn]);for(var b=0,c=f.btn.length;c>b;b++)a+=''+f.btn[b]+"";return'
              '+a+"
              "}():"")+"
              "],k),c},g.pt.creat=function(){var a=this,b=a.config,g=a.index,i=b.content,j="object"==typeof i;if(!c("#"+b.id)[0]){switch("string"==typeof b.area&&(b.area="auto"===b.area?["",""]:[b.area,""]),b.type){case 0:b.btn="btn"in b?b.btn:e.btn[0],f.closeAll("dialog");break;case 2:var i=b.content=j?b.content:[b.content||"http://layer.layui.com","auto"];b.content='';break;case 3:b.title=!1,b.closeBtn=!1,-1===b.icon&&0===b.icon,f.closeAll("loading");break;case 4:j||(b.content=[b.content,"body"]),b.follow=b.content[1],b.content=b.content[0]+'',b.title=!1,b.tips="object"==typeof b.tips?b.tips:[b.tips,!0],b.tipsMore||f.closeAll("tips")}a.vessel(j,function(d,e){c("body").append(d[0]),j?function(){2==b.type||4==b.type?function(){c("body").append(d[1])}():function(){i.parents("."+h[0])[0]||(i.show().addClass("layui-layer-wrap").wrap(d[1]),c("#"+h[0]+g).find("."+h[5]).before(e))}()}():c("body").append(d[1]),a.layero=c("#"+h[0]+g),b.scrollbar||h.html.css("overflow","hidden").attr("layer-full",g)}).auto(g),2==b.type&&f.ie6&&a.layero.find("iframe").attr("src",i[0]),c(document).off("keydown",e.enter).on("keydown",e.enter),a.layero.on("keydown",function(a){c(document).off("keydown",e.enter)}),4==b.type?a.tips():a.offset(),b.fix&&d.on("resize",function(){a.offset(),(/^\d+%$/.test(b.area[0])||/^\d+%$/.test(b.area[1]))&&a.auto(g),4==b.type&&a.tips()}),b.time<=0||setTimeout(function(){f.close(a.index)},b.time),a.move().callback(),h.anim[b.shift]&&a.layero.addClass(h.anim[b.shift])}},g.pt.auto=function(a){function b(a){a=g.find(a),a.height(i[1]-j-k-2*(0|parseFloat(a.css("padding"))))}var e=this,f=e.config,g=c("#"+h[0]+a);""===f.area[0]&&f.maxWidth>0&&(/MSIE 7/.test(navigator.userAgent)&&f.btn&&g.width(g.innerWidth()),g.outerWidth()>f.maxWidth&&g.width(f.maxWidth));var i=[g.innerWidth(),g.innerHeight()],j=g.find(h[1]).outerHeight()||0,k=g.find("."+h[6]).outerHeight()||0;switch(f.type){case 2:b("iframe");break;default:""===f.area[1]?f.fix&&i[1]>=d.height()&&(i[1]=d.height(),b("."+h[5])):b("."+h[5])}return e},g.pt.offset=function(){var a=this,b=a.config,c=a.layero,e=[c.outerWidth(),c.outerHeight()],f="object"==typeof b.offset;a.offsetTop=(d.height()-e[1])/2,a.offsetLeft=(d.width()-e[0])/2,f?(a.offsetTop=b.offset[0],a.offsetLeft=b.offset[1]||a.offsetLeft):"auto"!==b.offset&&(a.offsetTop=b.offset,"rb"===b.offset&&(a.offsetTop=d.height()-e[1],a.offsetLeft=d.width()-e[0])),b.fix||(a.offsetTop=/%$/.test(a.offsetTop)?d.height()*parseFloat(a.offsetTop)/100:parseFloat(a.offsetTop),a.offsetLeft=/%$/.test(a.offsetLeft)?d.width()*parseFloat(a.offsetLeft)/100:parseFloat(a.offsetLeft),a.offsetTop+=d.scrollTop(),a.offsetLeft+=d.scrollLeft()),c.css({top:a.offsetTop,left:a.offsetLeft})},g.pt.tips=function(){var a=this,b=a.config,e=a.layero,f=[e.outerWidth(),e.outerHeight()],g=c(b.follow);g[0]||(g=c("body"));var i={width:g.outerWidth(),height:g.outerHeight(),top:g.offset().top,left:g.offset().left},j=e.find(".layui-layer-TipsG"),k=b.tips[0];b.tips[1]||j.remove(),i.autoLeft=function(){i.left+f[0]-d.width()>0?(i.tipLeft=i.left+i.width-f[0],j.css({right:12,left:"auto"})):i.tipLeft=i.left},i.where=[function(){i.autoLeft(),i.tipTop=i.top-f[1]-10,j.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",b.tips[1])},function(){i.tipLeft=i.left+i.width+10,i.tipTop=i.top,j.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",b.tips[1])},function(){i.autoLeft(),i.tipTop=i.top+i.height+10,j.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",b.tips[1])},function(){i.tipLeft=i.left-f[0]-10,i.tipTop=i.top,j.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",b.tips[1])}],i.where[k-1](),1===k?i.top-(d.scrollTop()+f[1]+16)<0&&i.where[2]():2===k?d.width()-(i.left+i.width+f[0]+16)>0||i.where[3]():3===k?i.top-d.scrollTop()+i.height+f[1]+16-d.height()>0&&i.where[0]():4===k&&f[0]+16-i.left>0&&i.where[1](),e.find("."+h[5]).css({"background-color":b.tips[1],"padding-right":b.closeBtn?"30px":""}),e.css({left:i.tipLeft-(b.fix?d.scrollLeft():0),top:i.tipTop-(b.fix?d.scrollTop():0)})},g.pt.move=function(){var a=this,b=a.config,e={setY:0,moveLayer:function(){var a=e.layero,b=parseInt(a.css("margin-left")),c=parseInt(e.move.css("left"));0===b||(c-=b),"fixed"!==a.css("position")&&(c-=a.parent().offset().left,e.setY=0),a.css({left:c,top:parseInt(e.move.css("top"))-e.setY})}},f=a.layero.find(b.move);return b.move&&f.attr("move","ok"),f.css({cursor:b.move?"move":"auto"}),c(b.move).on("mousedown",function(a){if(a.preventDefault(),"ok"===c(this).attr("move")){e.ismove=!0,e.layero=c(this).parents("."+h[0]);var f=e.layero.offset().left,g=e.layero.offset().top,i=e.layero.outerWidth()-6,j=e.layero.outerHeight()-6;c("#layui-layer-moves")[0]||c("body").append('
              '),e.move=c("#layui-layer-moves"),b.moveType&&e.move.css({visibility:"hidden"}),e.moveX=a.pageX-e.move.position().left,e.moveY=a.pageY-e.move.position().top,"fixed"!==e.layero.css("position")||(e.setY=d.scrollTop())}}),c(document).mousemove(function(a){if(e.ismove){var c=a.pageX-e.moveX,f=a.pageY-e.moveY;if(a.preventDefault(),!b.moveOut){e.setY=d.scrollTop();var g=d.width()-e.move.outerWidth(),h=e.setY;0>c&&(c=0),c>g&&(c=g),h>f&&(f=h),f>d.height()-e.move.outerHeight()+e.setY&&(f=d.height()-e.move.outerHeight()+e.setY)}e.move.css({left:c,top:f}),b.moveType&&e.moveLayer(),c=f=g=h=null}}).mouseup(function(){try{e.ismove&&(e.moveLayer(),e.move.remove(),b.moveEnd&&b.moveEnd()),e.ismove=!1}catch(a){e.ismove=!1}}),a},g.pt.callback=function(){function a(){var a=g.cancel&&g.cancel(b.index,d);a===!1||f.close(b.index)}var b=this,d=b.layero,g=b.config;b.openLayer(),g.success&&(2==g.type?d.find("iframe").on("load",function(){g.success(d,b.index)}):g.success(d,b.index)),f.ie6&&b.IE6(d),d.find("."+h[6]).children("a").on("click",function(){var a=c(this).index();if(0===a)g.yes?g.yes(b.index,d):g.btn1?g.btn1(b.index,d):f.close(b.index);else{var e=g["btn"+(a+1)]&&g["btn"+(a+1)](b.index,d);e===!1||f.close(b.index)}}),d.find("."+h[7]).on("click",a),g.shadeClose&&c("#layui-layer-shade"+b.index).on("click",function(){f.close(b.index)}),d.find(".layui-layer-min").on("click",function(){var a=g.min&&g.min(d);a===!1||f.min(b.index,g)}),d.find(".layui-layer-max").on("click",function(){c(this).hasClass("layui-layer-maxmin")?(f.restore(b.index),g.restore&&g.restore(d)):(f.full(b.index,g),setTimeout(function(){g.full&&g.full(d)},100))}),g.end&&(e.end[b.index]=g.end)},e.reselect=function(){c.each(c("select"),function(a,b){var d=c(this);d.parents("."+h[0])[0]||1==d.attr("layer")&&c("."+h[0]).length<1&&d.removeAttr("layer").show(),d=null})},g.pt.IE6=function(a){function b(){a.css({top:f+(e.config.fix?d.scrollTop():0)})}var e=this,f=a.offset().top;b(),d.scroll(b),c("select").each(function(a,b){var d=c(this);d.parents("."+h[0])[0]||"none"===d.css("display")||d.attr({layer:"1"}).hide(),d=null})},g.pt.openLayer=function(){var a=this;f.zIndex=a.config.zIndex,f.setTop=function(a){var b=function(){f.zIndex++,a.css("z-index",f.zIndex+1)};return f.zIndex=parseInt(a[0].style.zIndex),a.on("mousedown",b),f.zIndex}},e.record=function(a){var b=[a.width(),a.height(),a.position().top,a.position().left+parseFloat(a.css("margin-left"))];a.find(".layui-layer-max").addClass("layui-layer-maxmin"),a.attr({area:b})},e.rescollbar=function(a){h.html.attr("layer-full")==a&&(h.html[0].style.removeProperty?h.html[0].style.removeProperty("overflow"):h.html[0].style.removeAttribute("overflow"),h.html.removeAttr("layer-full"))},a.layer=f,f.getChildFrame=function(a,b){return b=b||c("."+h[4]).attr("times"),c("#"+h[0]+b).find("iframe").contents().find(a)},f.getFrameIndex=function(a){return c("#"+a).parents("."+h[4]).attr("times")},f.iframeAuto=function(a){if(a){var b=f.getChildFrame("html",a).outerHeight(),d=c("#"+h[0]+a),e=d.find(h[1]).outerHeight()||0,g=d.find("."+h[6]).outerHeight()||0;d.css({height:b+e+g}),d.find("iframe").css({height:b})}},f.iframeSrc=function(a,b){c("#"+h[0]+a).find("iframe").attr("src",b)},f.style=function(a,b){var d=c("#"+h[0]+a),f=d.attr("type"),g=d.find(h[1]).outerHeight()||0,i=d.find("."+h[6]).outerHeight()||0;(f===e.type[1]||f===e.type[2])&&(d.css(b),f===e.type[2]&&d.find("iframe").css({height:parseFloat(b.height)-g-i}))},f.min=function(a,b){var d=c("#"+h[0]+a),g=d.find(h[1]).outerHeight()||0;e.record(d),f.style(a,{width:180,height:g,overflow:"hidden"}),d.find(".layui-layer-min").hide(),"page"===d.attr("type")&&d.find(h[4]).hide(),e.rescollbar(a)},f.restore=function(a){var b=c("#"+h[0]+a),d=b.attr("area").split(",");b.attr("type");f.style(a,{width:parseFloat(d[0]),height:parseFloat(d[1]),top:parseFloat(d[2]),left:parseFloat(d[3]),overflow:"visible"}),b.find(".layui-layer-max").removeClass("layui-layer-maxmin"),b.find(".layui-layer-min").show(),"page"===b.attr("type")&&b.find(h[4]).show(),e.rescollbar(a)},f.full=function(a){var b,g=c("#"+h[0]+a);e.record(g),h.html.attr("layer-full")||h.html.css("overflow","hidden").attr("layer-full",a),clearTimeout(b),b=setTimeout(function(){var b="fixed"===g.css("position");f.style(a,{top:b?0:d.scrollTop(),left:b?0:d.scrollLeft(),width:d.width(),height:d.height()}),g.find(".layui-layer-min").hide()},100)},f.title=function(a,b){var d=c("#"+h[0]+(b||f.index)).find(h[1]);d.html(a)},f.close=function(a){var b=c("#"+h[0]+a),d=b.attr("type");if(b[0]){if(d===e.type[1]&&"object"===b.attr("conType")){b.children(":not(."+h[5]+")").remove();for(var g=0;2>g;g++)b.find(".layui-layer-wrap").unwrap().hide()}else{if(d===e.type[2])try{var i=c("#"+h[4]+a)[0];i.contentWindow.document.write(""),i.contentWindow.close(),b.find("."+h[5])[0].removeChild(i)}catch(j){}b[0].innerHTML="",b.remove()}c("#layui-layer-moves, #layui-layer-shade"+a).remove(),f.ie6&&e.reselect(),e.rescollbar(a),c(document).off("keydown",e.enter),"function"==typeof e.end[a]&&e.end[a](),delete e.end[a]}},f.closeAll=function(a){c.each(c("."+h[0]),function(){var b=c(this),d=a?b.attr("type")===a:1;d&&f.close(b.attr("times")),d=null})};var i=f.cache||{},j=function(a){return i.skin?" "+i.skin+" "+i.skin+"-"+a:""};f.prompt=function(a,b){a=a||{},"function"==typeof a&&(b=a);var d,e=2==a.formType?'":function(){return''}();return f.open(c.extend({btn:["确定","取消"],content:e,skin:"layui-layer-prompt"+j("prompt"),success:function(a){d=a.find(".layui-layer-input"),d.focus()},yes:function(c){var e=d.val();""===e?d.focus():e.length>(a.maxlength||500)?f.tips("最多输入"+(a.maxlength||500)+"个字数",d,{tips:1}):b&&b(e,c,d)}},a))},f.tab=function(a){a=a||{};var b=a.tab||{};return f.open(c.extend({type:1,skin:"layui-layer-tab"+j("tab"),title:function(){var a=b.length,c=1,d="";if(a>0)for(d=''+b[0].title+"";a>c;c++)d+=""+b[c].title+"";return d}(),content:'
                '+function(){var a=b.length,c=1,d="";if(a>0)for(d='
              • '+(b[0].content||"no content")+"
              • ";a>c;c++)d+='
              • '+(b[c].content||"no content")+"
              • ";return d}()+"
              ",success:function(b){var d=b.find(".layui-layer-title").children(),e=b.find(".layui-layer-tabmain").children();d.on("mousedown",function(b){b.stopPropagation?b.stopPropagation():b.cancelBubble=!0;var d=c(this),f=d.index();d.addClass("layui-layer-tabnow").siblings().removeClass("layui-layer-tabnow"),e.eq(f).show().siblings().hide(),"function"==typeof a.change&&a.change(f)})}},a))},f.photos=function(b,d,e){function g(a,b,c){var d=new Image;return d.src=a,d.complete?b(d):(d.onload=function(){d.onload=null,b(d)},void(d.onerror=function(a){d.onerror=null,c(a)}))}var h={};if(b=b||{},b.photos){var i=b.photos.constructor===Object,k=i?b.photos:{},l=k.data||[],m=k.start||0;if(h.imgIndex=(0|m)+1,b.img=b.img||"img",i){if(0===l.length)return f.msg("没有图片")}else{var n=c(b.photos),o=function(){l=[],n.find(b.img).each(function(a){var b=c(this);b.attr("layer-index",a),l.push({alt:b.attr("alt"),pid:b.attr("layer-pid"),src:b.attr("layer-src")||b.attr("src"),thumb:b.attr("src")})})};if(o(),0===l.length)return;if(d||n.on("click",b.img,function(){var a=c(this),d=a.attr("layer-index");f.photos(c.extend(b,{photos:{start:d,data:l,tab:b.tab},full:b.full}),!0),o()}),!d)return}h.imgprev=function(a){h.imgIndex--,h.imgIndex<1&&(h.imgIndex=l.length),h.tabimg(a)},h.imgnext=function(a,b){h.imgIndex++,h.imgIndex>l.length&&(h.imgIndex=1,b)||h.tabimg(a)},h.keyup=function(a){if(!h.end){var b=a.keyCode;a.preventDefault(),37===b?h.imgprev(!0):39===b?h.imgnext(!0):27===b&&f.close(h.index)}},h.tabimg=function(a){l.length<=1||(k.start=h.imgIndex-1,f.close(h.index),f.photos(b,!0,a))},h.event=function(){h.bigimg.hover(function(){h.imgsee.show()},function(){h.imgsee.hide()}),h.bigimg.find(".layui-layer-imgprev").on("click",function(a){a.preventDefault(),h.imgprev()}),h.bigimg.find(".layui-layer-imgnext").on("click",function(a){a.preventDefault(),h.imgnext()}),c(document).on("keyup",h.keyup)},h.loadi=f.load(1,{shade:"shade"in b?!1:.9,scrollbar:!1}),g(l[m].src,function(d){f.close(h.loadi),h.index=f.open(c.extend({type:1,area:function(){var e=[d.width,d.height],f=[c(a).width()-50,c(a).height()-50];return!b.full&&e[0]>f[0]&&(e[0]=f[0],e[1]=e[0]*d.height/d.width),[e[0]+"px",e[1]+"px"]}(),title:!1,shade:.9,shadeClose:!0,closeBtn:!1,move:".layui-layer-phimg img",moveType:1,scrollbar:!1,moveOut:!0,shift:5*Math.random()|0,skin:"layui-layer-photos"+j("photos"),content:'
              '+(l[m].alt||
              '+(l.length>1?'':"")+'
              '+(l[m].alt||"")+""+h.imgIndex+"/"+l.length+"
              ",success:function(a,c){h.bigimg=a.find(".layui-layer-phimg"),h.imgsee=a.find(".layui-layer-imguide,.layui-layer-imgbar"),h.event(a),b.tab&&b.tab(l[m],a)},end:function(){h.end=!0,c(document).off("keyup",h.keyup)}},b))},function(){f.close(h.loadi),f.msg("当前图片地址异常
              是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){l.length>1&&h.imgnext(!0,!0)}})})}},e.run=function(){c=jQuery,d=c(a),h.html=c("html"),f.open=function(a){var b=new g(a);return b.index}},"function"==typeof define?define(function(){return e.run(),f}):function(){e.run(),f.use("skin/layer.css")}()}(window); ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/layer/2.4/skin/layer.css ================================================ /*! @Name: layer's style @Author: 贤心 @Blog: sentsin.com */.layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .layui-layer-title span,.layui-layer-title{text-overflow:ellipsis;white-space:nowrap}*html{background-image:url(about:blank);background-attachment:fixed}html #layui_layer_skinlayercss{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch;top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;box-shadow:1px 1px 50px rgba(0,0,0,.3);border-radius:2px;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.3);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-moves{position:absolute;border:3px solid #666;border:3px solid rgba(0,0,0,.5);cursor:move;background-color:#fff;background-color:rgba(255,255,255,.3);filter:alpha(opacity=50)}.layui-layer-load{background:url(default/loading-0.gif) center center no-repeat #fff}.layui-layer-ico{background:url(default/icon.png) no-repeat}.layui-layer-btn a,.layui-layer-dialog .layui-layer-ico,.layui-layer-setwin a{display:inline-block;*display:inline;*zoom:1;vertical-align:top}@-webkit-keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim{-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.03);transform:scale(1.03)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.03);-ms-transform:scale(1.03);transform:scale(1.03)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.2s;animation-duration:.2s}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:rollIn;animation-name:rollIn}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layui-layer-title{padding:0 80px 0 20px;height:42px;line-height:42px;border-bottom:1px solid #eee;font-size:14px;color:#333;overflow:hidden;background-color:#F8F8F8;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:15px;font-size:0;line-height:initial}.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:10px;font-size:12px;_overflow:hidden}.layui-layer-setwin .layui-layer-min cite{position:absolute;width:14px;height:2px;left:0;top:50%;margin-top:-1px;background-color:#2E2D3C;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA}.layui-layer-setwin .layui-layer-max{background-position:-32px -40px}.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px}.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px}.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px}.layui-layer-setwin .layui-layer-close1{background-position:0 -40px;cursor:pointer}.layui-layer-setwin .layui-layer-close1:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;width:30px;height:30px;margin-left:0;background-position:-149px -31px;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{background-position:-180px -31px}.layui-layer-btn{text-align:right;padding:0 10px 12px;pointer-events:auto}.layui-layer-btn a{height:28px;line-height:28px;margin:0 6px;padding:0 15px;border:1px solid #dedede;background-color:#f1f1f1;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.7}.layui-layer-btn .layui-layer-btn0{border-color:#4898d5;background-color:#2e8ded;color:#fff}.layui-layer-dialog{min-width:260px}.layui-layer-dialog .layui-layer-content{position:relative;padding:20px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute;top:16px;left:15px;_left:-40px;width:30px;height:30px}.layui-layer-ico1{background-position:-30px 0}.layui-layer-ico2{background-position:-60px 0}.layui-layer-ico3{background-position:-90px 0}.layui-layer-ico4{background-position:-120px 0}.layui-layer-ico5{background-position:-150px 0}.layui-layer-ico6{background-position:-180px 0}.layui-layer-rim{border:6px solid #8D8D8D;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #D3D4D3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-content{padding:12px 25px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:20px 20px 20px 55px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe .layui-layer-content{overflow:hidden}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(default/loading-0.gif) no-repeat}.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(default/loading-1.gif) no-repeat}.layui-layer-ico16,.layui-layer-loading .layui-layer-loading2{width:32px;height:32px;background:url(default/loading-2.gif) no-repeat}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:5px 10px;font-size:12px;_float:left;border-radius:3px;box-shadow:1px 1px 3px rgba(0,0,0,.3);background-color:#F90;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#F90}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:1px;border-bottom-style:solid;border-bottom-color:#F90}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan[type=dialog]{min-width:280px}.layui-layer-lan .layui-layer-title{background:#4476A7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:10px;text-align:right;border-top:1px solid #E9E7E7}.layui-layer-lan .layui-layer-btn a{background:#BBB5B5;border:none}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1}.layui-layer-iconext{background:url(default/icon-ext.png) no-repeat}.layui-layer-prompt .layui-layer-input{display:block;width:220px;height:30px;margin:0 auto;line-height:30px;padding:0 5px;border:1px solid #ccc;box-shadow:1px 1px 5px rgba(0,0,0,.1) inset;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;border-bottom:1px solid #ccc;background-color:#eee;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;float:left;min-width:80px;max-width:260px;padding:0 20px;text-align:center;cursor:default;overflow:hidden}.layui-layer-tab .layui-layer-title span.layui-layer-tabnow{height:43px;border-left:1px solid #ccc;border-right:1px solid #ccc;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left:none}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.xubox_tab_layer{display:block}.xubox_tabclose{position:absolute;right:10px;top:5px;cursor:pointer}.layui-layer-photos{-webkit-animation-duration:1s;animation-duration:1s}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgbar,.layui-layer-imguide{display:none}.layui-layer-imgnext,.layui-layer-imgprev{position:absolute;top:50%;width:27px;_width:44px;height:44px;margin-top:-22px;outline:0;blr:expression(this.onFocus=this.blur())}.layui-layer-imgprev{left:10px;background-position:-5px -5px;_background-position:-70px -5px}.layui-layer-imgprev:hover{background-position:-33px -5px;_background-position:-120px -5px}.layui-layer-imgnext{right:10px;_right:8px;background-position:-5px -50px;_background-position:-70px -50px}.layui-layer-imgnext:hover{background-position:-33px -50px;_background-position:-120px -50px}.layui-layer-imgbar{position:absolute;left:0;bottom:0;width:100%;height:32px;line-height:32px;background-color:rgba(0,0,0,.8);background-color:#000\9;filter:Alpha(opacity=80);color:#fff;overflow:hidden;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:12px}.layui-layer-imgtit a{max-width:65%;overflow:hidden;color:#fff}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit em{padding-left:10px;font-style:normal} ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/laypage/1.2/laypage.js ================================================ /*! layPage v1.2 - 分页插件 By 贤心 http://sentsin.com/layui/laypage MIT License */ ;!function(){"use strict";function a(d){var e="laypagecss";a.dir="dir"in a?a.dir:f.getpath+"/skin/laypage.css",new f(d),a.dir&&!b[c](e)&&f.use(a.dir,e)}var b,c,d,e,f;a.v="1.2",b=document,c="getElementById",d="getElementsByTagName",e=0,f=function(a){var b=this,c=b.config=a||{};c.item=e++,b.render(!0)},f.on=function(a,b,c){return a.attachEvent?a.attachEvent("on"+b,function(){c.call(a,window.even)}):a.addEventListener(b,c,!1),f},f.getpath=function(){var a=document.scripts,b=a[a.length-1].src;return b.substring(0,b.lastIndexOf("/")+1)}(),f.use=function(c,e){var f=b.createElement("link");f.type="text/css",f.rel="stylesheet",f.href=a.dir,e&&(f.id=e),b[d]("head")[0].appendChild(f),f=null},f.prototype.type=function(){var a=this.config;return"object"==typeof a.cont?void 0===a.cont.length?2:3:void 0},f.prototype.view=function(){var b=this,c=b.config,d=[],e={};c.pages=0|c.pages,c.curr=0|c.curr||1,c.groups="groups"in c?0|c.groups:5,c.first="first"in c?c.first:1,c.last="last"in c?c.last:c.pages,c.prev="prev"in c?c.prev:"上一页",c.next="next"in c?c.next:"下一页",c.groups>c.pages&&(c.groups=c.pages),e.index=Math.ceil((c.curr+(c.groups>1&&c.groups!==c.pages?1:0))/(0===c.groups?1:c.groups)),c.curr>1&&c.prev&&d.push(''+c.prev+""),e.index>1&&c.first&&0!==c.groups&&d.push(''+c.first+""),e.poor=Math.floor((c.groups-1)/2),e.start=e.index>1?c.curr-e.poor:1,e.end=e.index>1?function(){var a=c.curr+(c.groups-e.poor-1);return a>c.pages?c.pages:a}():c.groups,e.end-e.start"+e.start+""):d.push(''+e.start+"");return c.pages>c.groups&&e.end'+c.last+""),e.flow=!c.prev&&0===c.groups,(c.curr!==c.pages&&c.next||e.flow)&&d.push(function(){return e.flow&&c.curr===c.pages?''+c.next+"":''+c.next+""}()),'
              '+d.join("")+function(){return c.skip?'':""}()+"
              "},f.prototype.jump=function(a){var i,j,b=this,c=b.config,e=a.children,g=a[d]("button")[0],h=a[d]("input")[0];for(i=0,j=e.length;j>i;i++)"a"===e[i].nodeName.toLowerCase()&&f.on(e[i],"click",function(){var a=0|this.getAttribute("data-page");c.curr=a,b.render()});g&&f.on(g,"click",function(){var a=0|h.value.replace(/\s|\D/g,"");a&&a<=c.pages&&(c.curr=a,b.render())})},f.prototype.render=function(a){var d=this,e=d.config,f=d.type(),g=d.view();2===f?e.cont.innerHTML=g:3===f?e.cont.html(g):b[c](e.cont).innerHTML=g,e.jump&&e.jump(e,a),d.jump(b[c]("laypage_"+e.item)),e.hash&&!a&&(location.hash="!"+e.hash+"="+e.curr)},"function"==typeof define?define(function(){return a}):"undefined"!=typeof exports?module.exports=a:window.laypage=a}(); ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/laypage/1.2/skin/laypage.css ================================================ /*! laypage默认样式 */ .laypage_main{font-size:0; clear:both; color:#666} .laypage_main *{display:inline-block; vertical-align: top; font-size:12px} .laypage_main a{height:26px; line-height:26px; text-decoration:none; color:#666} .laypage_main a, .laypage_main span{margin:0 3px 6px; padding:0 10px} .laypage_main span{height:26px; line-height:26px} .laypage_main input, .laypage_main button{ border:1px solid #ccc; background-color:#fff} .laypage_main input{width:40px; height:26px; line-height:26px; margin:0 5px; padding:0 5px} .laypage_main button{height:28px; line-height:28px; margin-left:5px; padding:0 10px; color:#666} /* 默认皮肤 */ .laypageskin_default a{border:1px solid #ddd; background-color:#fff} .laypageskin_default a:hover{ background-color:#5a98de; border-color:#5a98de; color:#fff} .laypageskin_default span{height:28px; line-height:28px; color:#999} .laypageskin_default .laypage_curr{font-weight:700; color:#666} /* 一般用于信息流加载 */ .laypageskin_flow{text-align:center} .laypageskin_flow .page_nomore{color:#999} ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/lightbox2/2.8.1/css/lightbox.css ================================================ body:after{content:url(../images/close.png) url(../images/loading.gif) url(../images/prev.png) url(../images/next.png);display:none} .lightboxOverlay{position:absolute;top:0;left:0;z-index:9999;background-color:black;filter:alpha(opacity=80);opacity:.8;display:none} .lightbox{position:absolute;left:0;width:100%;z-index:10000;text-align:center;line-height:0;font-weight:normal} .lightbox .lb-image{display:block;height:auto;max-width:inherit;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px} .lightbox a img{border:0} .lb-outerContainer{position:relative;background-color:white;*zoom:1;width:250px;height:250px;margin:0 auto;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px} .lb-outerContainer:after{content:"";display:table;clear:both} .lb-container{padding:4px} .lb-loader{position:absolute;top:43%;left:0;height:25%;width:100%;text-align:center;line-height:0} .lb-cancel{display:block;width:32px;height:32px;margin:0 auto;background:url(../images/loading.gif) no-repeat} .lb-nav{position:absolute;top:0;left:0;height:100%;width:100%;z-index:10} .lb-container>.nav{left:0} .lb-nav a{outline:0;background-image:url('data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==')} .lb-prev,.lb-next{height:100%;cursor:pointer;display:block} .lb-nav a.lb-prev{width:34%;left:0;float:left;background:url(../images/prev.png) left 48% no-repeat;filter:alpha(opacity=0);opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s} .lb-nav a.lb-prev:hover{filter:alpha(opacity=100);opacity:1} .lb-nav a.lb-next{width:64%;right:0;float:right;background:url(../images/next.png) right 48% no-repeat;filter:alpha(opacity=0);opacity:0;-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s} .lb-nav a.lb-next:hover{filter:alpha(opacity=100);opacity:1} .lb-dataContainer{margin:0 auto;padding-top:5px;*zoom:1;width:100%;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px} .lb-dataContainer:after{content:"";display:table;clear:both} .lb-data{padding:0 4px;color:#ccc} .lb-data .lb-details{width:85%;float:left;text-align:left;line-height:1.1em} .lb-data .lb-caption{font-size:13px;font-weight:bold;line-height:1em} .lb-data .lb-number{display:block;clear:left;padding-bottom:1em;font-size:12px;color:#999} .lb-data .lb-close{display:block;float:right;width:30px;height:30px;background:url(../images/close.png) top right no-repeat;text-align:right;outline:0;filter:alpha(opacity=70);opacity:.7;-webkit-transition:opacity .2s;-moz-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s} .lb-data .lb-close:hover{cursor:pointer;filter:alpha(opacity=100);opacity:1} ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/lightbox2/2.8.1/examples.html ================================================ Lightbox Example

              Two Individual Images

              image-1 image-1

              A Four Image Set

              ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/lib/lightbox2/2.8.1/js/lightbox-plus-jquery.js ================================================ /*! * jQuery JavaScript Library v2.1.4 * http://jquery.com/ * * Includes Sizzle.js * http://sizzlejs.com/ * * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors * Released under the MIT license * http://jquery.org/license * * Date: 2015-04-28T16:01Z */ (function( global, factory ) { if ( typeof module === "object" && typeof module.exports === "object" ) { // For CommonJS and CommonJS-like environments where a proper `window` // is present, execute the factory and get jQuery. // For environments that do not have a `window` with a `document` // (such as Node.js), expose a factory as module.exports. // This accentuates the need for the creation of a real `window`. // e.g. var jQuery = require("jquery")(window); // See ticket #14549 for more info. module.exports = global.document ? factory( global, true ) : function( w ) { if ( !w.document ) { throw new Error( "jQuery requires a window with a document" ); } return factory( w ); }; } else { factory( global ); } // Pass this if window is not defined yet }(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { // Support: Firefox 18+ // Can't be in strict mode, several libs including ASP.NET trace // the stack via arguments.caller.callee and Firefox dies if // you try to trace through "use strict" call chains. (#13335) // var arr = []; var slice = arr.slice; var concat = arr.concat; var push = arr.push; var indexOf = arr.indexOf; var class2type = {}; var toString = class2type.toString; var hasOwn = class2type.hasOwnProperty; var support = {}; var // Use the correct document accordingly with window argument (sandbox) document = window.document, version = "2.1.4", // Define a local copy of jQuery jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' // Need init if jQuery is called (just allow error to be thrown if not included) return new jQuery.fn.init( selector, context ); }, // Support: Android<4.1 // Make sure we trim BOM and NBSP rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, // Matches dashed string for camelizing rmsPrefix = /^-ms-/, rdashAlpha = /-([\da-z])/gi, // Used by jQuery.camelCase as callback to replace() fcamelCase = function( all, letter ) { return letter.toUpperCase(); }; jQuery.fn = jQuery.prototype = { // The current version of jQuery being used jquery: version, constructor: jQuery, // Start with an empty selector selector: "", // The default length of a jQuery object is 0 length: 0, toArray: function() { return slice.call( this ); }, // Get the Nth element in the matched element set OR // Get the whole matched element set as a clean array get: function( num ) { return num != null ? // Return just the one element from the set ( num < 0 ? this[ num + this.length ] : this[ num ] ) : // Return all the elements in a clean array slice.call( this ); }, // Take an array of elements and push it onto the stack // (returning the new matched element set) pushStack: function( elems ) { // Build a new jQuery matched element set var ret = jQuery.merge( this.constructor(), elems ); // Add the old object onto the stack (as a reference) ret.prevObject = this; ret.context = this.context; // Return the newly-formed element set return ret; }, // Execute a callback for every element in the matched set. // (You can seed the arguments with an array of args, but this is // only used internally.) each: function( callback, args ) { return jQuery.each( this, callback, args ); }, map: function( callback ) { return this.pushStack( jQuery.map(this, function( elem, i ) { return callback.call( elem, i, elem ); })); }, slice: function() { return this.pushStack( slice.apply( this, arguments ) ); }, first: function() { return this.eq( 0 ); }, last: function() { return this.eq( -1 ); }, eq: function( i ) { var len = this.length, j = +i + ( i < 0 ? len : 0 ); return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); }, end: function() { return this.prevObject || this.constructor(null); }, // For internal use only. // Behaves like an Array's method, not like a jQuery method. push: push, sort: arr.sort, splice: arr.splice }; jQuery.extend = jQuery.fn.extend = function() { var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; // Handle a deep copy situation if ( typeof target === "boolean" ) { deep = target; // Skip the boolean and the target target = arguments[ i ] || {}; i++; } // Handle case when target is a string or something (possible in deep copy) if ( typeof target !== "object" && !jQuery.isFunction(target) ) { target = {}; } // Extend jQuery itself if only one argument is passed if ( i === length ) { target = this; i--; } for ( ; i < length; i++ ) { // Only deal with non-null/undefined values if ( (options = arguments[ i ]) != null ) { // Extend the base object for ( name in options ) { src = target[ name ]; copy = options[ name ]; // Prevent never-ending loop if ( target === copy ) { continue; } // Recurse if we're merging plain objects or arrays if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { if ( copyIsArray ) { copyIsArray = false; clone = src && jQuery.isArray(src) ? src : []; } else { clone = src && jQuery.isPlainObject(src) ? src : {}; } // Never move original objects, clone them target[ name ] = jQuery.extend( deep, clone, copy ); // Don't bring in undefined values } else if ( copy !== undefined ) { target[ name ] = copy; } } } } // Return the modified object return target; }; jQuery.extend({ // Unique for each copy of jQuery on the page expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), // Assume jQuery is ready without the ready module isReady: true, error: function( msg ) { throw new Error( msg ); }, noop: function() {}, isFunction: function( obj ) { return jQuery.type(obj) === "function"; }, isArray: Array.isArray, isWindow: function( obj ) { return obj != null && obj === obj.window; }, isNumeric: function( obj ) { // parseFloat NaNs numeric-cast false positives (null|true|false|"") // ...but misinterprets leading-number strings, particularly hex literals ("0x...") // subtraction forces infinities to NaN // adding 1 corrects loss of precision from parseFloat (#15100) return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0; }, isPlainObject: function( obj ) { // Not plain objects: // - Any object or value whose internal [[Class]] property is not "[object Object]" // - DOM nodes // - window if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { return false; } if ( obj.constructor && !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { return false; } // If the function hasn't returned already, we're confident that // |obj| is a plain object, created by {} or constructed with new Object return true; }, isEmptyObject: function( obj ) { var name; for ( name in obj ) { return false; } return true; }, type: function( obj ) { if ( obj == null ) { return obj + ""; } // Support: Android<4.0, iOS<6 (functionish RegExp) return typeof obj === "object" || typeof obj === "function" ? class2type[ toString.call(obj) ] || "object" : typeof obj; }, // Evaluates a script in a global context globalEval: function( code ) { var script, indirect = eval; code = jQuery.trim( code ); if ( code ) { // If the code includes a valid, prologue position // strict mode pragma, execute code by injecting a // script tag into the document. if ( code.indexOf("use strict") === 1 ) { script = document.createElement("script"); script.text = code; document.head.appendChild( script ).parentNode.removeChild( script ); } else { // Otherwise, avoid the DOM node creation, insertion // and removal by using an indirect global eval indirect( code ); } } }, // Convert dashed to camelCase; used by the css and data modules // Support: IE9-11+ // Microsoft forgot to hump their vendor prefix (#9572) camelCase: function( string ) { return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); }, nodeName: function( elem, name ) { return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); }, // args is for internal usage only each: function( obj, callback, args ) { var value, i = 0, length = obj.length, isArray = isArraylike( obj ); if ( args ) { if ( isArray ) { for ( ; i < length; i++ ) { value = callback.apply( obj[ i ], args ); if ( value === false ) { break; } } } else { for ( i in obj ) { value = callback.apply( obj[ i ], args ); if ( value === false ) { break; } } } // A special, fast, case for the most common use of each } else { if ( isArray ) { for ( ; i < length; i++ ) { value = callback.call( obj[ i ], i, obj[ i ] ); if ( value === false ) { break; } } } else { for ( i in obj ) { value = callback.call( obj[ i ], i, obj[ i ] ); if ( value === false ) { break; } } } } return obj; }, // Support: Android<4.1 trim: function( text ) { return text == null ? "" : ( text + "" ).replace( rtrim, "" ); }, // results is for internal usage only makeArray: function( arr, results ) { var ret = results || []; if ( arr != null ) { if ( isArraylike( Object(arr) ) ) { jQuery.merge( ret, typeof arr === "string" ? [ arr ] : arr ); } else { push.call( ret, arr ); } } return ret; }, inArray: function( elem, arr, i ) { return arr == null ? -1 : indexOf.call( arr, elem, i ); }, merge: function( first, second ) { var len = +second.length, j = 0, i = first.length; for ( ; j < len; j++ ) { first[ i++ ] = second[ j ]; } first.length = i; return first; }, grep: function( elems, callback, invert ) { var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; // Go through the array, only saving the items // that pass the validator function for ( ; i < length; i++ ) { callbackInverse = !callback( elems[ i ], i ); if ( callbackInverse !== callbackExpect ) { matches.push( elems[ i ] ); } } return matches; }, // arg is for internal usage only map: function( elems, callback, arg ) { var value, i = 0, length = elems.length, isArray = isArraylike( elems ), ret = []; // Go through the array, translating each of the items to their new values if ( isArray ) { for ( ; i < length; i++ ) { value = callback( elems[ i ], i, arg ); if ( value != null ) { ret.push( value ); } } // Go through every key on the object, } else { for ( i in elems ) { value = callback( elems[ i ], i, arg ); if ( value != null ) { ret.push( value ); } } } // Flatten any nested arrays return concat.apply( [], ret ); }, // A global GUID counter for objects guid: 1, // Bind a function to a context, optionally partially applying any // arguments. proxy: function( fn, context ) { var tmp, args, proxy; if ( typeof context === "string" ) { tmp = fn[ context ]; context = fn; fn = tmp; } // Quick check to determine if target is callable, in the spec // this throws a TypeError, but we will just return undefined. if ( !jQuery.isFunction( fn ) ) { return undefined; } // Simulated bind args = slice.call( arguments, 2 ); proxy = function() { return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); }; // Set the guid of unique handler to the same of original handler, so it can be removed proxy.guid = fn.guid = fn.guid || jQuery.guid++; return proxy; }, now: Date.now, // jQuery.support is not used in Core but other projects attach their // properties to it so it needs to exist. support: support }); // Populate the class2type map jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { class2type[ "[object " + name + "]" ] = name.toLowerCase(); }); function isArraylike( obj ) { // Support: iOS 8.2 (not reproducible in simulator) // `in` check used to prevent JIT error (gh-2145) // hasOwn isn't used here due to false negatives // regarding Nodelist length in IE var length = "length" in obj && obj.length, type = jQuery.type( obj ); if ( type === "function" || jQuery.isWindow( obj ) ) { return false; } if ( obj.nodeType === 1 && length ) { return true; } return type === "array" || length === 0 || typeof length === "number" && length > 0 && ( length - 1 ) in obj; } var Sizzle = /*! * Sizzle CSS Selector Engine v2.2.0-pre * http://sizzlejs.com/ * * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors * Released under the MIT license * http://jquery.org/license * * Date: 2014-12-16 */ (function( window ) { var i, support, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, // Local document vars setDocument, document, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains, // Instance-specific data expando = "sizzle" + 1 * new Date(), preferredDoc = window.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), sortOrder = function( a, b ) { if ( a === b ) { hasDuplicate = true; } return 0; }, // General-purpose constants MAX_NEGATIVE = 1 << 31, // Instance methods hasOwn = ({}).hasOwnProperty, arr = [], pop = arr.pop, push_native = arr.push, push = arr.push, slice = arr.slice, // Use a stripped-down indexOf as it's faster than native // http://jsperf.com/thor-indexof-vs-for/5 indexOf = function( list, elem ) { var i = 0, len = list.length; for ( ; i < len; i++ ) { if ( list[i] === elem ) { return i; } } return -1; }, booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", // Regular expressions // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace whitespace = "[\\x20\\t\\r\\n\\f]", // http://www.w3.org/TR/css3-syntax/#characters characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", // Loosely modeled on CSS identifier characters // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier identifier = characterEncoding.replace( "w", "w#" ), // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + // Operator (capture 2) "*([*^$|!~]?=)" + whitespace + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]", pseudos = ":(" + characterEncoding + ")(?:\\((" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: // 1. quoted (capture 3; capture 4 or capture 5) "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + // 2. simple (capture 6) "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + // 3. anything else (capture 2) ".*" + ")\\)|)", // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter rwhitespace = new RegExp( whitespace + "+", "g" ), rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), rpseudo = new RegExp( pseudos ), ridentifier = new RegExp( "^" + identifier + "$" ), matchExpr = { "ID": new RegExp( "^#(" + characterEncoding + ")" ), "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), "ATTR": new RegExp( "^" + attributes ), "PSEUDO": new RegExp( "^" + pseudos ), "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), // For use in libraries implementing .is() // We use this for POS matching in `select` "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) }, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rnative = /^[^{]+\{\s*\[native \w/, // Easily-parseable/retrievable ID or TAG or CLASS selectors rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, rescape = /'|\\/g, // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), funescape = function( _, escaped, escapedWhitespace ) { var high = "0x" + escaped - 0x10000; // NaN means non-codepoint // Support: Firefox<24 // Workaround erroneous numeric interpretation of +"0x" return high !== high || escapedWhitespace ? escaped : high < 0 ? // BMP codepoint String.fromCharCode( high + 0x10000 ) : // Supplemental Plane codepoint (surrogate pair) String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); }, // Used for iframes // See setDocument() // Removing the function wrapper causes a "Permission Denied" // error in IE unloadHandler = function() { setDocument(); }; // Optimize for push.apply( _, NodeList ) try { push.apply( (arr = slice.call( preferredDoc.childNodes )), preferredDoc.childNodes ); // Support: Android<4.0 // Detect silently failing push.apply arr[ preferredDoc.childNodes.length ].nodeType; } catch ( e ) { push = { apply: arr.length ? // Leverage slice if possible function( target, els ) { push_native.apply( target, slice.call(els) ); } : // Support: IE<9 // Otherwise append directly function( target, els ) { var j = target.length, i = 0; // Can't trust NodeList.length while ( (target[j++] = els[i++]) ) {} target.length = j - 1; } }; } function Sizzle( selector, context, results, seed ) { var match, elem, m, nodeType, // QSA vars i, groups, old, nid, newContext, newSelector; if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { setDocument( context ); } context = context || document; results = results || []; nodeType = context.nodeType; if ( typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { return results; } if ( !seed && documentIsHTML ) { // Try to shortcut find operations when possible (e.g., not under DocumentFragment) if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { // Speed-up: Sizzle("#ID") if ( (m = match[1]) ) { if ( nodeType === 9 ) { elem = context.getElementById( m ); // Check parentNode to catch when Blackberry 4.6 returns // nodes that are no longer in the document (jQuery #6963) if ( elem && elem.parentNode ) { // Handle the case where IE, Opera, and Webkit return items // by name instead of ID if ( elem.id === m ) { results.push( elem ); return results; } } else { return results; } } else { // Context is not a document if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && contains( context, elem ) && elem.id === m ) { results.push( elem ); return results; } } // Speed-up: Sizzle("TAG") } else if ( match[2] ) { push.apply( results, context.getElementsByTagName( selector ) ); return results; // Speed-up: Sizzle(".CLASS") } else if ( (m = match[3]) && support.getElementsByClassName ) { push.apply( results, context.getElementsByClassName( m ) ); return results; } } // QSA path if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { nid = old = expando; newContext = context; newSelector = nodeType !== 1 && selector; // qSA works strangely on Element-rooted queries // We can work around this by specifying an extra ID on the root // and working up from there (Thanks to Andrew Dupont for the technique) // IE 8 doesn't work on object elements if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { groups = tokenize( selector ); if ( (old = context.getAttribute("id")) ) { nid = old.replace( rescape, "\\$&" ); } else { context.setAttribute( "id", nid ); } nid = "[id='" + nid + "'] "; i = groups.length; while ( i-- ) { groups[i] = nid + toSelector( groups[i] ); } newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; newSelector = groups.join(","); } if ( newSelector ) { try { push.apply( results, newContext.querySelectorAll( newSelector ) ); return results; } catch(qsaError) { } finally { if ( !old ) { context.removeAttribute("id"); } } } } } // All others return select( selector.replace( rtrim, "$1" ), context, results, seed ); } /** * Create key-value caches of limited size * @returns {Function(string, Object)} Returns the Object data after storing it on itself with * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) * deleting the oldest entry */ function createCache() { var keys = []; function cache( key, value ) { // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) if ( keys.push( key + " " ) > Expr.cacheLength ) { // Only keep the most recent entries delete cache[ keys.shift() ]; } return (cache[ key + " " ] = value); } return cache; } /** * Mark a function for special use by Sizzle * @param {Function} fn The function to mark */ function markFunction( fn ) { fn[ expando ] = true; return fn; } /** * Support testing using an element * @param {Function} fn Passed the created div and expects a boolean result */ function assert( fn ) { var div = document.createElement("div"); try { return !!fn( div ); } catch (e) { return false; } finally { // Remove from its parent by default if ( div.parentNode ) { div.parentNode.removeChild( div ); } // release memory in IE div = null; } } /** * Adds the same handler for all of the specified attrs * @param {String} attrs Pipe-separated list of attributes * @param {Function} handler The method that will be applied */ function addHandle( attrs, handler ) { var arr = attrs.split("|"), i = attrs.length; while ( i-- ) { Expr.attrHandle[ arr[i] ] = handler; } } /** * Checks document order of two siblings * @param {Element} a * @param {Element} b * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b */ function siblingCheck( a, b ) { var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE ); // Use IE sourceIndex if available on both nodes if ( diff ) { return diff; } // Check if b follows a if ( cur ) { while ( (cur = cur.nextSibling) ) { if ( cur === b ) { return -1; } } } return a ? 1 : -1; } /** * Returns a function to use in pseudos for input types * @param {String} type */ function createInputPseudo( type ) { return function( elem ) { var name = elem.nodeName.toLowerCase(); return name === "input" && elem.type === type; }; } /** * Returns a function to use in pseudos for buttons * @param {String} type */ function createButtonPseudo( type ) { return function( elem ) { var name = elem.nodeName.toLowerCase(); return (name === "input" || name === "button") && elem.type === type; }; } /** * Returns a function to use in pseudos for positionals * @param {Function} fn */ function createPositionalPseudo( fn ) { return markFunction(function( argument ) { argument = +argument; return markFunction(function( seed, matches ) { var j, matchIndexes = fn( [], seed.length, argument ), i = matchIndexes.length; // Match elements found at the specified indexes while ( i-- ) { if ( seed[ (j = matchIndexes[i]) ] ) { seed[j] = !(matches[j] = seed[j]); } } }); }); } /** * Checks a node for validity as a Sizzle context * @param {Element|Object=} context * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value */ function testContext( context ) { return context && typeof context.getElementsByTagName !== "undefined" && context; } // Expose support vars for convenience support = Sizzle.support = {}; /** * Detects XML nodes * @param {Element|Object} elem An element or a document * @returns {Boolean} True iff elem is a non-HTML XML node */ isXML = Sizzle.isXML = function( elem ) { // documentElement is verified for cases where it doesn't yet exist // (such as loading iframes in IE - #4833) var documentElement = elem && (elem.ownerDocument || elem).documentElement; return documentElement ? documentElement.nodeName !== "HTML" : false; }; /** * Sets document-related variables once based on the current document * @param {Element|Object} [doc] An element or document object to use to set the document * @returns {Object} Returns the current document */ setDocument = Sizzle.setDocument = function( node ) { var hasCompare, parent, doc = node ? node.ownerDocument || node : preferredDoc; // If no document and documentElement is available, return if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { return document; } // Set our document document = doc; docElem = doc.documentElement; parent = doc.defaultView; // Support: IE>8 // If iframe document is assigned to "document" variable and if iframe has been reloaded, // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 // IE6-8 do not support the defaultView property so parent will be undefined if ( parent && parent !== parent.top ) { // IE11 does not have attachEvent, so all must suffer if ( parent.addEventListener ) { parent.addEventListener( "unload", unloadHandler, false ); } else if ( parent.attachEvent ) { parent.attachEvent( "onunload", unloadHandler ); } } /* Support tests ---------------------------------------------------------------------- */ documentIsHTML = !isXML( doc ); /* Attributes ---------------------------------------------------------------------- */ // Support: IE<8 // Verify that getAttribute really returns attributes and not properties // (excepting IE8 booleans) support.attributes = assert(function( div ) { div.className = "i"; return !div.getAttribute("className"); }); /* getElement(s)By* ---------------------------------------------------------------------- */ // Check if getElementsByTagName("*") returns only elements support.getElementsByTagName = assert(function( div ) { div.appendChild( doc.createComment("") ); return !div.getElementsByTagName("*").length; }); // Support: IE<9 support.getElementsByClassName = rnative.test( doc.getElementsByClassName ); // Support: IE<10 // Check if getElementById returns elements by name // The broken getElementById methods don't pick up programatically-set names, // so use a roundabout getElementsByName test support.getById = assert(function( div ) { docElem.appendChild( div ).id = expando; return !doc.getElementsByName || !doc.getElementsByName( expando ).length; }); // ID find and filter if ( support.getById ) { Expr.find["ID"] = function( id, context ) { if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { var m = context.getElementById( id ); // Check parentNode to catch when Blackberry 4.6 returns // nodes that are no longer in the document #6963 return m && m.parentNode ? [ m ] : []; } }; Expr.filter["ID"] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { return elem.getAttribute("id") === attrId; }; }; } else { // Support: IE6/7 // getElementById is not reliable as a find shortcut delete Expr.find["ID"]; Expr.filter["ID"] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return node && node.value === attrId; }; }; } // Tag Expr.find["TAG"] = support.getElementsByTagName ? function( tag, context ) { if ( typeof context.getElementsByTagName !== "undefined" ) { return context.getElementsByTagName( tag ); // DocumentFragment nodes don't have gEBTN } else if ( support.qsa ) { return context.querySelectorAll( tag ); } } : function( tag, context ) { var elem, tmp = [], i = 0, // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too results = context.getElementsByTagName( tag ); // Filter out possible comments if ( tag === "*" ) { while ( (elem = results[i++]) ) { if ( elem.nodeType === 1 ) { tmp.push( elem ); } } return tmp; } return results; }; // Class Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { if ( documentIsHTML ) { return context.getElementsByClassName( className ); } }; /* QSA/matchesSelector ---------------------------------------------------------------------- */ // QSA and matchesSelector support // matchesSelector(:active) reports false when true (IE9/Opera 11.5) rbuggyMatches = []; // qSa(:focus) reports false when true (Chrome 21) // We allow this because of a bug in IE8/9 that throws an error // whenever `document.activeElement` is accessed on an iframe // So, we allow :focus to pass through QSA all the time to avoid the IE error // See http://bugs.jquery.com/ticket/13378 rbuggyQSA = []; if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { // Build QSA regex // Regex strategy adopted from Diego Perini assert(function( div ) { // Select is set to empty string on purpose // This is to test IE's treatment of not explicitly // setting a boolean content attribute, // since its presence should be enough // http://bugs.jquery.com/ticket/12359 docElem.appendChild( div ).innerHTML = "" + ""; // Support: IE8, Opera 11-12.16 // Nothing should be selected when empty strings follow ^= or $= or *= // The test attribute must be unknown in Opera but "safe" for WinRT // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section if ( div.querySelectorAll("[msallowcapture^='']").length ) { rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); } // Support: IE8 // Boolean attributes and "value" are not treated correctly if ( !div.querySelectorAll("[selected]").length ) { rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); } // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+ if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { rbuggyQSA.push("~="); } // Webkit/Opera - :checked should return selected option elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked // IE8 throws error here and will not see later tests if ( !div.querySelectorAll(":checked").length ) { rbuggyQSA.push(":checked"); } // Support: Safari 8+, iOS 8+ // https://bugs.webkit.org/show_bug.cgi?id=136851 // In-page `selector#id sibing-combinator selector` fails if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { rbuggyQSA.push(".#.+[+~]"); } }); assert(function( div ) { // Support: Windows 8 Native Apps // The type and name attributes are restricted during .innerHTML assignment var input = doc.createElement("input"); input.setAttribute( "type", "hidden" ); div.appendChild( input ).setAttribute( "name", "D" ); // Support: IE8 // Enforce case-sensitivity of name attribute if ( div.querySelectorAll("[name=d]").length ) { rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) // IE8 throws error here and will not see later tests if ( !div.querySelectorAll(":enabled").length ) { rbuggyQSA.push( ":enabled", ":disabled" ); } // Opera 10-11 does not throw on post-comma invalid pseudos div.querySelectorAll("*,:x"); rbuggyQSA.push(",.*:"); }); } if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector) )) ) { assert(function( div ) { // Check to see if it's possible to do matchesSelector // on a disconnected node (IE 9) support.disconnectedMatch = matches.call( div, "div" ); // This should fail with an exception // Gecko does not error, returns false instead matches.call( div, "[s!='']:x" ); rbuggyMatches.push( "!=", pseudos ); }); } rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); /* Contains ---------------------------------------------------------------------- */ hasCompare = rnative.test( docElem.compareDocumentPosition ); // Element contains another // Purposefully does not implement inclusive descendent // As in, an element does not contain itself contains = hasCompare || rnative.test( docElem.contains ) ? function( a, b ) { var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode; return a === bup || !!( bup && bup.nodeType === 1 && ( adown.contains ? adown.contains( bup ) : a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 )); } : function( a, b ) { if ( b ) { while ( (b = b.parentNode) ) { if ( b === a ) { return true; } } } return false; }; /* Sorting ---------------------------------------------------------------------- */ // Document order sorting sortOrder = hasCompare ? function( a, b ) { // Flag for duplicate removal if ( a === b ) { hasDuplicate = true; return 0; } // Sort on method existence if only one input has compareDocumentPosition var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; if ( compare ) { return compare; } // Calculate position if both inputs belong to the same document compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? a.compareDocumentPosition( b ) : // Otherwise we know they are disconnected 1; // Disconnected nodes if ( compare & 1 || (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { // Choose the first element that is related to our preferred document if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { return -1; } if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { return 1; } // Maintain original order return sortInput ? ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 0; } return compare & 4 ? -1 : 1; } : function( a, b ) { // Exit early if the nodes are identical if ( a === b ) { hasDuplicate = true; return 0; } var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [ a ], bp = [ b ]; // Parentless nodes are either documents or disconnected if ( !aup || !bup ) { return a === doc ? -1 : b === doc ? 1 : aup ? -1 : bup ? 1 : sortInput ? ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 0; // If the nodes are siblings, we can do a quick check } else if ( aup === bup ) { return siblingCheck( a, b ); } // Otherwise we need full lists of their ancestors for comparison cur = a; while ( (cur = cur.parentNode) ) { ap.unshift( cur ); } cur = b; while ( (cur = cur.parentNode) ) { bp.unshift( cur ); } // Walk down the tree looking for a discrepancy while ( ap[i] === bp[i] ) { i++; } return i ? // Do a sibling check if the nodes have a common ancestor siblingCheck( ap[i], bp[i] ) : // Otherwise nodes in our document sort first ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0; }; return doc; }; Sizzle.matches = function( expr, elements ) { return Sizzle( expr, null, null, elements ); }; Sizzle.matchesSelector = function( elem, expr ) { // Set document vars if needed if ( ( elem.ownerDocument || elem ) !== document ) { setDocument( elem ); } // Make sure that attribute selectors are quoted expr = expr.replace( rattributeQuotes, "='$1']" ); if ( support.matchesSelector && documentIsHTML && ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { try { var ret = matches.call( elem, expr ); // IE 9's matchesSelector returns false on disconnected nodes if ( ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document // fragment in IE 9 elem.document && elem.document.nodeType !== 11 ) { return ret; } } catch (e) {} } return Sizzle( expr, document, null, [ elem ] ).length > 0; }; Sizzle.contains = function( context, elem ) { // Set document vars if needed if ( ( context.ownerDocument || context ) !== document ) { setDocument( context ); } return contains( context, elem ); }; Sizzle.attr = function( elem, name ) { // Set document vars if needed if ( ( elem.ownerDocument || elem ) !== document ) { setDocument( elem ); } var fn = Expr.attrHandle[ name.toLowerCase() ], // Don't get fooled by Object.prototype properties (jQuery #13807) val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? fn( elem, name, !documentIsHTML ) : undefined; return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute( name ) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null; }; Sizzle.error = function( msg ) { throw new Error( "Syntax error, unrecognized expression: " + msg ); }; /** * Document sorting and removing duplicates * @param {ArrayLike} results */ Sizzle.uniqueSort = function( results ) { var elem, duplicates = [], j = 0, i = 0; // Unless we *know* we can detect duplicates, assume their presence hasDuplicate = !support.detectDuplicates; sortInput = !support.sortStable && results.slice( 0 ); results.sort( sortOrder ); if ( hasDuplicate ) { while ( (elem = results[i++]) ) { if ( elem === results[ i ] ) { j = duplicates.push( i ); } } while ( j-- ) { results.splice( duplicates[ j ], 1 ); } } // Clear input after sorting to release objects // See https://github.com/jquery/sizzle/pull/225 sortInput = null; return results; }; /** * Utility function for retrieving the text value of an array of DOM nodes * @param {Array|Element} elem */ getText = Sizzle.getText = function( elem ) { var node, ret = "", i = 0, nodeType = elem.nodeType; if ( !nodeType ) { // If no nodeType, this is expected to be an array while ( (node = elem[i++]) ) { // Do not traverse comment nodes ret += getText( node ); } } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { // Use textContent for elements // innerText usage removed for consistency of new lines (jQuery #11153) if ( typeof elem.textContent === "string" ) { return elem.textContent; } else { // Traverse its children for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { ret += getText( elem ); } } } else if ( nodeType === 3 || nodeType === 4 ) { return elem.nodeValue; } // Do not include comment or processing instruction nodes return ret; }; Expr = Sizzle.selectors = { // Can be adjusted by the user cacheLength: 50, createPseudo: markFunction, match: matchExpr, attrHandle: {}, find: {}, relative: { ">": { dir: "parentNode", first: true }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: true }, "~": { dir: "previousSibling" } }, preFilter: { "ATTR": function( match ) { match[1] = match[1].replace( runescape, funescape ); // Move the given value to match[3] whether quoted or unquoted match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); if ( match[2] === "~=" ) { match[3] = " " + match[3] + " "; } return match.slice( 0, 4 ); }, "CHILD": function( match ) { /* matches from matchExpr["CHILD"] 1 type (only|nth|...) 2 what (child|of-type) 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) 4 xn-component of xn+y argument ([+-]?\d*n|) 5 sign of xn-component 6 x of xn-component 7 sign of y-component 8 y of y-component */ match[1] = match[1].toLowerCase(); if ( match[1].slice( 0, 3 ) === "nth" ) { // nth-* requires argument if ( !match[3] ) { Sizzle.error( match[0] ); } // numeric x and y parameters for Expr.filter.CHILD // remember that false/true cast respectively to 0/1 match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); // other types prohibit arguments } else if ( match[3] ) { Sizzle.error( match[0] ); } return match; }, "PSEUDO": function( match ) { var excess, unquoted = !match[6] && match[2]; if ( matchExpr["CHILD"].test( match[0] ) ) { return null; } // Accept quoted arguments as-is if ( match[3] ) { match[2] = match[4] || match[5] || ""; // Strip excess characters from unquoted arguments } else if ( unquoted && rpseudo.test( unquoted ) && // Get excess from tokenize (recursively) (excess = tokenize( unquoted, true )) && // advance to the next closing parenthesis (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { // excess is a negative index match[0] = match[0].slice( 0, excess ); match[2] = unquoted.slice( 0, excess ); } // Return only captures needed by the pseudo filter method (type and argument) return match.slice( 0, 3 ); } }, filter: { "TAG": function( nodeNameSelector ) { var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); return nodeNameSelector === "*" ? function() { return true; } : function( elem ) { return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; }; }, "CLASS": function( className ) { var pattern = classCache[ className + " " ]; return pattern || (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && classCache( className, function( elem ) { return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); }); }, "ATTR": function( name, operator, check ) { return function( elem ) { var result = Sizzle.attr( elem, name ); if ( result == null ) { return operator === "!="; } if ( !operator ) { return true; } result += ""; return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf( check ) === 0 : operator === "*=" ? check && result.indexOf( check ) > -1 : operator === "$=" ? check && result.slice( -check.length ) === check : operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : false; }; }, "CHILD": function( type, what, argument, first, last ) { var simple = type.slice( 0, 3 ) !== "nth", forward = type.slice( -4 ) !== "last", ofType = what === "of-type"; return first === 1 && last === 0 ? // Shortcut for :nth-*(n) function( elem ) { return !!elem.parentNode; } : function( elem, context, xml ) { var cache, outerCache, node, diff, nodeIndex, start, dir = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType; if ( parent ) { // :(first|last|only)-(child|of-type) if ( simple ) { while ( dir ) { node = elem; while ( (node = node[ dir ]) ) { if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { return false; } } // Reverse direction for :only-* (if we haven't yet done so) start = dir = type === "only" && !start && "nextSibling"; } return true; } start = [ forward ? parent.firstChild : parent.lastChild ]; // non-xml :nth-child(...) stores cache data on `parent` if ( forward && useCache ) { // Seek `elem` from a previously-cached index outerCache = parent[ expando ] || (parent[ expando ] = {}); cache = outerCache[ type ] || []; nodeIndex = cache[0] === dirruns && cache[1]; diff = cache[0] === dirruns && cache[2]; node = nodeIndex && parent.childNodes[ nodeIndex ]; while ( (node = ++nodeIndex && node && node[ dir ] || // Fallback to seeking `elem` from the start (diff = nodeIndex = 0) || start.pop()) ) { // When found, cache indexes on `parent` and break if ( node.nodeType === 1 && ++diff && node === elem ) { outerCache[ type ] = [ dirruns, nodeIndex, diff ]; break; } } // Use previously-cached element index if available } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { diff = cache[1]; // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) } else { // Use the same loop as above to seek `elem` from the start while ( (node = ++nodeIndex && node && node[ dir ] || (diff = nodeIndex = 0) || start.pop()) ) { if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { // Cache the index of each encountered element if ( useCache ) { (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; } if ( node === elem ) { break; } } } } // Incorporate the offset, then check against cycle size diff -= last; return diff === first || ( diff % first === 0 && diff / first >= 0 ); } }; }, "PSEUDO": function( pseudo, argument ) { // pseudo-class names are case-insensitive // http://www.w3.org/TR/selectors/#pseudo-classes // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters // Remember that setFilters inherits from pseudos var args, fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || Sizzle.error( "unsupported pseudo: " + pseudo ); // The user may use createPseudo to indicate that // arguments are needed to create the filter function // just as Sizzle does if ( fn[ expando ] ) { return fn( argument ); } // But maintain support for old signatures if ( fn.length > 1 ) { args = [ pseudo, pseudo, "", argument ]; return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? markFunction(function( seed, matches ) { var idx, matched = fn( seed, argument ), i = matched.length; while ( i-- ) { idx = indexOf( seed, matched[i] ); seed[ idx ] = !( matches[ idx ] = matched[i] ); } }) : function( elem ) { return fn( elem, 0, args ); }; } return fn; } }, pseudos: { // Potentially complex pseudos "not": markFunction(function( selector ) { // Trim the selector passed to compile // to avoid treating leading and trailing // spaces as combinators var input = [], results = [], matcher = compile( selector.replace( rtrim, "$1" ) ); return matcher[ expando ] ? markFunction(function( seed, matches, context, xml ) { var elem, unmatched = matcher( seed, null, xml, [] ), i = seed.length; // Match elements unmatched by `matcher` while ( i-- ) { if ( (elem = unmatched[i]) ) { seed[i] = !(matches[i] = elem); } } }) : function( elem, context, xml ) { input[0] = elem; matcher( input, null, xml, results ); // Don't keep the element (issue #299) input[0] = null; return !results.pop(); }; }), "has": markFunction(function( selector ) { return function( elem ) { return Sizzle( selector, elem ).length > 0; }; }), "contains": markFunction(function( text ) { text = text.replace( runescape, funescape ); return function( elem ) { return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; }; }), // "Whether an element is represented by a :lang() selector // is based solely on the element's language value // being equal to the identifier C, // or beginning with the identifier C immediately followed by "-". // The matching of C against the element's language value is performed case-insensitively. // The identifier C does not have to be a valid language name." // http://www.w3.org/TR/selectors/#lang-pseudo "lang": markFunction( function( lang ) { // lang value must be a valid identifier if ( !ridentifier.test(lang || "") ) { Sizzle.error( "unsupported lang: " + lang ); } lang = lang.replace( runescape, funescape ).toLowerCase(); return function( elem ) { var elemLang; do { if ( (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { elemLang = elemLang.toLowerCase(); return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; } } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); return false; }; }), // Miscellaneous "target": function( elem ) { var hash = window.location && window.location.hash; return hash && hash.slice( 1 ) === elem.id; }, "root": function( elem ) { return elem === docElem; }, "focus": function( elem ) { return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); }, // Boolean properties "enabled": function( elem ) { return elem.disabled === false; }, "disabled": function( elem ) { return elem.disabled === true; }, "checked": function( elem ) { // In CSS3, :checked should return both checked and selected elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked var nodeName = elem.nodeName.toLowerCase(); return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); }, "selected": function( elem ) { // Accessing this property makes selected-by-default // options in Safari work properly if ( elem.parentNode ) { elem.parentNode.selectedIndex; } return elem.selected === true; }, // Contents "empty": function( elem ) { // http://www.w3.org/TR/selectors/#empty-pseudo // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), // but not by others (comment: 8; processing instruction: 7; etc.) // nodeType < 6 works because attributes (2) do not appear as children for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { if ( elem.nodeType < 6 ) { return false; } } return true; }, "parent": function( elem ) { return !Expr.pseudos["empty"]( elem ); }, // Element/input types "header": function( elem ) { return rheader.test( elem.nodeName ); }, "input": function( elem ) { return rinputs.test( elem.nodeName ); }, "button": function( elem ) { var name = elem.nodeName.toLowerCase(); return name === "input" && elem.type === "button" || name === "button"; }, "text": function( elem ) { var attr; return elem.nodeName.toLowerCase() === "input" && elem.type === "text" && // Support: IE<8 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); }, // Position-in-collection "first": createPositionalPseudo(function() { return [ 0 ]; }), "last": createPositionalPseudo(function( matchIndexes, length ) { return [ length - 1 ]; }), "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { return [ argument < 0 ? argument + length : argument ]; }), "even": createPositionalPseudo(function( matchIndexes, length ) { var i = 0; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; }), "odd": createPositionalPseudo(function( matchIndexes, length ) { var i = 1; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; }), "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument; for ( ; --i >= 0; ) { matchIndexes.push( i ); } return matchIndexes; }), "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument; for ( ; ++i < length; ) { matchIndexes.push( i ); } return matchIndexes; }) } }; Expr.pseudos["nth"] = Expr.pseudos["eq"]; // Add button/input type pseudos for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { Expr.pseudos[ i ] = createInputPseudo( i ); } for ( i in { submit: true, reset: true } ) { Expr.pseudos[ i ] = createButtonPseudo( i ); } // Easy API for creating new setFilters function setFilters() {} setFilters.prototype = Expr.filters = Expr.pseudos; Expr.setFilters = new setFilters(); tokenize = Sizzle.tokenize = function( selector, parseOnly ) { var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[ selector + " " ]; if ( cached ) { return parseOnly ? 0 : cached.slice( 0 ); } soFar = selector; groups = []; preFilters = Expr.preFilter; while ( soFar ) { // Comma and first run if ( !matched || (match = rcomma.exec( soFar )) ) { if ( match ) { // Don't consume trailing commas as valid soFar = soFar.slice( match[0].length ) || soFar; } groups.push( (tokens = []) ); } matched = false; // Combinators if ( (match = rcombinators.exec( soFar )) ) { matched = match.shift(); tokens.push({ value: matched, // Cast descendant combinators to space type: match[0].replace( rtrim, " " ) }); soFar = soFar.slice( matched.length ); } // Filters for ( type in Expr.filter ) { if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || (match = preFilters[ type ]( match ))) ) { matched = match.shift(); tokens.push({ value: matched, type: type, matches: match }); soFar = soFar.slice( matched.length ); } } if ( !matched ) { break; } } // Return the length of the invalid excess // if we're just parsing // Otherwise, throw an error or return tokens return parseOnly ? soFar.length : soFar ? Sizzle.error( selector ) : // Cache the tokens tokenCache( selector, groups ).slice( 0 ); }; function toSelector( tokens ) { var i = 0, len = tokens.length, selector = ""; for ( ; i < len; i++ ) { selector += tokens[i].value; } return selector; } function addCombinator( matcher, combinator, base ) { var dir = combinator.dir, checkNonElements = base && dir === "parentNode", doneName = done++; return combinator.first ? // Check against closest ancestor/preceding element function( elem, context, xml ) { while ( (elem = elem[ dir ]) ) { if ( elem.nodeType === 1 || checkNonElements ) { return matcher( elem, context, xml ); } } } : // Check against all ancestor/preceding elements function( elem, context, xml ) { var oldCache, outerCache, newCache = [ dirruns, doneName ]; // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching if ( xml ) { while ( (elem = elem[ dir ]) ) { if ( elem.nodeType === 1 || checkNonElements ) { if ( matcher( elem, context, xml ) ) { return true; } } } } else { while ( (elem = elem[ dir ]) ) { if ( elem.nodeType === 1 || checkNonElements ) { outerCache = elem[ expando ] || (elem[ expando ] = {}); if ( (oldCache = outerCache[ dir ]) && oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { // Assign to newCache so results back-propagate to previous elements return (newCache[ 2 ] = oldCache[ 2 ]); } else { // Reuse newcache so results back-propagate to previous elements outerCache[ dir ] = newCache; // A match means we're done; a fail means we have to keep checking if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { return true; } } } } } }; } function elementMatcher( matchers ) { return matchers.length > 1 ? function( elem, context, xml ) { var i = matchers.length; while ( i-- ) { if ( !matchers[i]( elem, context, xml ) ) { return false; } } return true; } : matchers[0]; } function multipleContexts( selector, contexts, results ) { var i = 0, len = contexts.length; for ( ; i < len; i++ ) { Sizzle( selector, contexts[i], results ); } return results; } function condense( unmatched, map, filter, context, xml ) { var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null; for ( ; i < len; i++ ) { if ( (elem = unmatched[i]) ) { if ( !filter || filter( elem, context, xml ) ) { newUnmatched.push( elem ); if ( mapped ) { map.push( i ); } } } } return newUnmatched; } function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { if ( postFilter && !postFilter[ expando ] ) { postFilter = setMatcher( postFilter ); } if ( postFinder && !postFinder[ expando ] ) { postFinder = setMatcher( postFinder, postSelector ); } return markFunction(function( seed, results, context, xml ) { var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, // Get initial elements from seed or context elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), // Prefilter to get matcher input, preserving a map for seed-results synchronization matcherIn = preFilter && ( seed || !selector ) ? condense( elems, preMap, preFilter, context, xml ) : elems, matcherOut = matcher ? // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, postFinder || ( seed ? preFilter : preexisting || postFilter ) ? // ...intermediate processing is necessary [] : // ...otherwise use results directly results : matcherIn; // Find primary matches if ( matcher ) { matcher( matcherIn, matcherOut, context, xml ); } // Apply postFilter if ( postFilter ) { temp = condense( matcherOut, postMap ); postFilter( temp, [], context, xml ); // Un-match failing elements by moving them back to matcherIn i = temp.length; while ( i-- ) { if ( (elem = temp[i]) ) { matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); } } } if ( seed ) { if ( postFinder || preFilter ) { if ( postFinder ) { // Get the final matcherOut by condensing this intermediate into postFinder contexts temp = []; i = matcherOut.length; while ( i-- ) { if ( (elem = matcherOut[i]) ) { // Restore matcherIn since elem is not yet a final match temp.push( (matcherIn[i] = elem) ); } } postFinder( null, (matcherOut = []), temp, xml ); } // Move matched elements from seed to results to keep them synchronized i = matcherOut.length; while ( i-- ) { if ( (elem = matcherOut[i]) && (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { seed[temp] = !(results[temp] = elem); } } } // Add elements to results, through postFinder if defined } else { matcherOut = condense( matcherOut === results ? matcherOut.splice( preexisting, matcherOut.length ) : matcherOut ); if ( postFinder ) { postFinder( null, results, matcherOut, xml ); } else { push.apply( results, matcherOut ); } } }); } function matcherFromTokens( tokens ) { var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[ tokens[0].type ], implicitRelative = leadingRelative || Expr.relative[" "], i = leadingRelative ? 1 : 0, // The foundational matcher ensures that elements are reachable from top-level context(s) matchContext = addCombinator( function( elem ) { return elem === checkContext; }, implicitRelative, true ), matchAnyContext = addCombinator( function( elem ) { return indexOf( checkContext, elem ) > -1; }, implicitRelative, true ), matchers = [ function( elem, context, xml ) { var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( (checkContext = context).nodeType ? matchContext( elem, context, xml ) : matchAnyContext( elem, context, xml ) ); // Avoid hanging onto element (issue #299) checkContext = null; return ret; } ]; for ( ; i < len; i++ ) { if ( (matcher = Expr.relative[ tokens[i].type ]) ) { matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; } else { matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); // Return special upon seeing a positional matcher if ( matcher[ expando ] ) { // Find the next relative operator (if any) for proper handling j = ++i; for ( ; j < len; j++ ) { if ( Expr.relative[ tokens[j].type ] ) { break; } } return setMatcher( i > 1 && elementMatcher( matchers ), i > 1 && toSelector( // If the preceding token was a descendant combinator, insert an implicit any-element `*` tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) ).replace( rtrim, "$1" ), matcher, i < j && matcherFromTokens( tokens.slice( i, j ) ), j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), j < len && toSelector( tokens ) ); } matchers.push( matcher ); } } return elementMatcher( matchers ); } function matcherFromGroupMatchers( elementMatchers, setMatchers ) { var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function( seed, context, xml, results, outermost ) { var elem, j, matcher, matchedCount = 0, i = "0", unmatched = seed && [], setMatched = [], contextBackup = outermostContext, // We must always have either seed elements or outermost context elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), // Use integer dirruns iff this is the outermost matcher dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), len = elems.length; if ( outermost ) { outermostContext = context !== document && context; } // Add elements passing elementMatchers directly to results // Keep `i` a string if there are no elements so `matchedCount` will be "00" below // Support: IE<9, Safari // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id for ( ; i !== len && (elem = elems[i]) != null; i++ ) { if ( byElement && elem ) { j = 0; while ( (matcher = elementMatchers[j++]) ) { if ( matcher( elem, context, xml ) ) { results.push( elem ); break; } } if ( outermost ) { dirruns = dirrunsUnique; } } // Track unmatched elements for set filters if ( bySet ) { // They will have gone through all possible matchers if ( (elem = !matcher && elem) ) { matchedCount--; } // Lengthen the array for every element, matched or not if ( seed ) { unmatched.push( elem ); } } } // Apply set filters to unmatched elements matchedCount += i; if ( bySet && i !== matchedCount ) { j = 0; while ( (matcher = setMatchers[j++]) ) { matcher( unmatched, setMatched, context, xml ); } if ( seed ) { // Reintegrate element matches to eliminate the need for sorting if ( matchedCount > 0 ) { while ( i-- ) { if ( !(unmatched[i] || setMatched[i]) ) { setMatched[i] = pop.call( results ); } } } // Discard index placeholder values to get only actual matches setMatched = condense( setMatched ); } // Add matches to results push.apply( results, setMatched ); // Seedless set matches succeeding multiple successful matchers stipulate sorting if ( outermost && !seed && setMatched.length > 0 && ( matchedCount + setMatchers.length ) > 1 ) { Sizzle.uniqueSort( results ); } } // Override manipulation of globals by nested matchers if ( outermost ) { dirruns = dirrunsUnique; outermostContext = contextBackup; } return unmatched; }; return bySet ? markFunction( superMatcher ) : superMatcher; } compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { var i, setMatchers = [], elementMatchers = [], cached = compilerCache[ selector + " " ]; if ( !cached ) { // Generate a function of recursive functions that can be used to check each element if ( !match ) { match = tokenize( selector ); } i = match.length; while ( i-- ) { cached = matcherFromTokens( match[i] ); if ( cached[ expando ] ) { setMatchers.push( cached ); } else { elementMatchers.push( cached ); } } // Cache the compiled function cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); // Save selector and tokenization cached.selector = selector; } return cached; }; /** * A low-level selection function that works with Sizzle's compiled * selector functions * @param {String|Function} selector A selector or a pre-compiled * selector function built with Sizzle.compile * @param {Element} context * @param {Array} [results] * @param {Array} [seed] A set of elements to match against */ select = Sizzle.select = function( selector, context, results, seed ) { var i, tokens, token, type, find, compiled = typeof selector === "function" && selector, match = !seed && tokenize( (selector = compiled.selector || selector) ); results = results || []; // Try to minimize operations if there is no seed and only one group if ( match.length === 1 ) { // Take a shortcut and set the context if the root selector is an ID tokens = match[0] = match[0].slice( 0 ); if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; if ( !context ) { return results; // Precompiled matchers will still verify ancestry, so step up a level } else if ( compiled ) { context = context.parentNode; } selector = selector.slice( tokens.shift().value.length ); } // Fetch a seed set for right-to-left matching i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; while ( i-- ) { token = tokens[i]; // Abort if we hit a combinator if ( Expr.relative[ (type = token.type) ] ) { break; } if ( (find = Expr.find[ type ]) ) { // Search, expanding context for leading sibling combinators if ( (seed = find( token.matches[0].replace( runescape, funescape ), rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context )) ) { // If seed is empty or no tokens remain, we can return early tokens.splice( i, 1 ); selector = seed.length && toSelector( tokens ); if ( !selector ) { push.apply( results, seed ); return results; } break; } } } } // Compile and execute a filtering function if one is not provided // Provide `match` to avoid retokenization if we modified the selector above ( compiled || compile( selector, match ) )( seed, context, !documentIsHTML, results, rsibling.test( selector ) && testContext( context.parentNode ) || context ); return results; }; // One-time assignments // Sort stability support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; // Support: Chrome 14-35+ // Always assume duplicates if they aren't passed to the comparison function support.detectDuplicates = !!hasDuplicate; // Initialize against the default document setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) // Detached nodes confoundingly follow *each other* support.sortDetached = assert(function( div1 ) { // Should return 1, but returns 4 (following) return div1.compareDocumentPosition( document.createElement("div") ) & 1; }); // Support: IE<8 // Prevent attribute/property "interpolation" // http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx if ( !assert(function( div ) { div.innerHTML = ""; return div.firstChild.getAttribute("href") === "#" ; }) ) { addHandle( "type|href|height|width", function( elem, name, isXML ) { if ( !isXML ) { return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); } }); } // Support: IE<9 // Use defaultValue in place of getAttribute("value") if ( !support.attributes || !assert(function( div ) { div.innerHTML = ""; div.firstChild.setAttribute( "value", "" ); return div.firstChild.getAttribute( "value" ) === ""; }) ) { addHandle( "value", function( elem, name, isXML ) { if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { return elem.defaultValue; } }); } // Support: IE<9 // Use getAttributeNode to fetch booleans when getAttribute lies if ( !assert(function( div ) { return div.getAttribute("disabled") == null; }) ) { addHandle( booleans, function( elem, name, isXML ) { var val; if ( !isXML ) { return elem[ name ] === true ? name.toLowerCase() : (val = elem.getAttributeNode( name )) && val.specified ? val.value : null; } }); } return Sizzle; })( window ); jQuery.find = Sizzle; jQuery.expr = Sizzle.selectors; jQuery.expr[":"] = jQuery.expr.pseudos; jQuery.unique = Sizzle.uniqueSort; jQuery.text = Sizzle.getText; jQuery.isXMLDoc = Sizzle.isXML; jQuery.contains = Sizzle.contains; var rneedsContext = jQuery.expr.match.needsContext; var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); var risSimple = /^.[^:#\[\.,]*$/; // Implement the identical functionality for filter and not function winnow( elements, qualifier, not ) { if ( jQuery.isFunction( qualifier ) ) { return jQuery.grep( elements, function( elem, i ) { /* jshint -W018 */ return !!qualifier.call( elem, i, elem ) !== not; }); } if ( qualifier.nodeType ) { return jQuery.grep( elements, function( elem ) { return ( elem === qualifier ) !== not; }); } if ( typeof qualifier === "string" ) { if ( risSimple.test( qualifier ) ) { return jQuery.filter( qualifier, elements, not ); } qualifier = jQuery.filter( qualifier, elements ); } return jQuery.grep( elements, function( elem ) { return ( indexOf.call( qualifier, elem ) >= 0 ) !== not; }); } jQuery.filter = function( expr, elems, not ) { var elem = elems[ 0 ]; if ( not ) { expr = ":not(" + expr + ")"; } return elems.length === 1 && elem.nodeType === 1 ? jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { return elem.nodeType === 1; })); }; jQuery.fn.extend({ find: function( selector ) { var i, len = this.length, ret = [], self = this; if ( typeof selector !== "string" ) { return this.pushStack( jQuery( selector ).filter(function() { for ( i = 0; i < len; i++ ) { if ( jQuery.contains( self[ i ], this ) ) { return true; } } }) ); } for ( i = 0; i < len; i++ ) { jQuery.find( selector, self[ i ], ret ); } // Needed because $( selector, context ) becomes $( context ).find( selector ) ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); ret.selector = this.selector ? this.selector + " " + selector : selector; return ret; }, filter: function( selector ) { return this.pushStack( winnow(this, selector || [], false) ); }, not: function( selector ) { return this.pushStack( winnow(this, selector || [], true) ); }, is: function( selector ) { return !!winnow( this, // If this is a positional/relative selector, check membership in the returned set // so $("p:first").is("p:last") won't return true for a doc with two "p". typeof selector === "string" && rneedsContext.test( selector ) ? jQuery( selector ) : selector || [], false ).length; } }); // Initialize a jQuery object // A central reference to the root jQuery(document) var rootjQuery, // A simple way to check for HTML strings // Prioritize #id over to avoid XSS via location.hash (#9521) // Strict HTML recognition (#11290: must start with <) rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, init = jQuery.fn.init = function( selector, context ) { var match, elem; // HANDLE: $(""), $(null), $(undefined), $(false) if ( !selector ) { return this; } // Handle HTML strings if ( typeof selector === "string" ) { if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) { // Assume that strings that start and end with <> are HTML and skip the regex check match = [ null, selector, null ]; } else { match = rquickExpr.exec( selector ); } // Match html or make sure no context is specified for #id if ( match && (match[1] || !context) ) { // HANDLE: $(html) -> $(array) if ( match[1] ) { context = context instanceof jQuery ? context[0] : context; // Option to run scripts is true for back-compat // Intentionally let the error be thrown if parseHTML is not present jQuery.merge( this, jQuery.parseHTML( match[1], context && context.nodeType ? context.ownerDocument || context : document, true ) ); // HANDLE: $(html, props) if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { for ( match in context ) { // Properties of context are called as methods if possible if ( jQuery.isFunction( this[ match ] ) ) { this[ match ]( context[ match ] ); // ...and otherwise set as attributes } else { this.attr( match, context[ match ] ); } } } return this; // HANDLE: $(#id) } else { elem = document.getElementById( match[2] ); // Support: Blackberry 4.6 // gEBID returns nodes no longer in the document (#6963) if ( elem && elem.parentNode ) { // Inject the element directly into the jQuery object this.length = 1; this[0] = elem; } this.context = document; this.selector = selector; return this; } // HANDLE: $(expr, $(...)) } else if ( !context || context.jquery ) { return ( context || rootjQuery ).find( selector ); // HANDLE: $(expr, context) // (which is just equivalent to: $(context).find(expr) } else { return this.constructor( context ).find( selector ); } // HANDLE: $(DOMElement) } else if ( selector.nodeType ) { this.context = this[0] = selector; this.length = 1; return this; // HANDLE: $(function) // Shortcut for document ready } else if ( jQuery.isFunction( selector ) ) { return typeof rootjQuery.ready !== "undefined" ? rootjQuery.ready( selector ) : // Execute immediately if ready is not present selector( jQuery ); } if ( selector.selector !== undefined ) { this.selector = selector.selector; this.context = selector.context; } return jQuery.makeArray( selector, this ); }; // Give the init function the jQuery prototype for later instantiation init.prototype = jQuery.fn; // Initialize central reference rootjQuery = jQuery( document ); var rparentsprev = /^(?:parents|prev(?:Until|All))/, // Methods guaranteed to produce a unique set when starting from a unique set guaranteedUnique = { children: true, contents: true, next: true, prev: true }; jQuery.extend({ dir: function( elem, dir, until ) { var matched = [], truncate = until !== undefined; while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { if ( elem.nodeType === 1 ) { if ( truncate && jQuery( elem ).is( until ) ) { break; } matched.push( elem ); } } return matched; }, sibling: function( n, elem ) { var matched = []; for ( ; n; n = n.nextSibling ) { if ( n.nodeType === 1 && n !== elem ) { matched.push( n ); } } return matched; } }); jQuery.fn.extend({ has: function( target ) { var targets = jQuery( target, this ), l = targets.length; return this.filter(function() { var i = 0; for ( ; i < l; i++ ) { if ( jQuery.contains( this, targets[i] ) ) { return true; } } }); }, closest: function( selectors, context ) { var cur, i = 0, l = this.length, matched = [], pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? jQuery( selectors, context || this.context ) : 0; for ( ; i < l; i++ ) { for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { // Always skip document fragments if ( cur.nodeType < 11 && (pos ? pos.index(cur) > -1 : // Don't pass non-elements to Sizzle cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors)) ) { matched.push( cur ); break; } } } return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); }, // Determine the position of an element within the set index: function( elem ) { // No argument, return index in parent if ( !elem ) { return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; } // Index in selector if ( typeof elem === "string" ) { return indexOf.call( jQuery( elem ), this[ 0 ] ); } // Locate the position of the desired element return indexOf.call( this, // If it receives a jQuery object, the first element is used elem.jquery ? elem[ 0 ] : elem ); }, add: function( selector, context ) { return this.pushStack( jQuery.unique( jQuery.merge( this.get(), jQuery( selector, context ) ) ) ); }, addBack: function( selector ) { return this.add( selector == null ? this.prevObject : this.prevObject.filter(selector) ); } }); function sibling( cur, dir ) { while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} return cur; } jQuery.each({ parent: function( elem ) { var parent = elem.parentNode; return parent && parent.nodeType !== 11 ? parent : null; }, parents: function( elem ) { return jQuery.dir( elem, "parentNode" ); }, parentsUntil: function( elem, i, until ) { return jQuery.dir( elem, "parentNode", until ); }, next: function( elem ) { return sibling( elem, "nextSibling" ); }, prev: function( elem ) { return sibling( elem, "previousSibling" ); }, nextAll: function( elem ) { return jQuery.dir( elem, "nextSibling" ); }, prevAll: function( elem ) { return jQuery.dir( elem, "previousSibling" ); }, nextUntil: function( elem, i, until ) { return jQuery.dir( elem, "nextSibling", until ); }, prevUntil: function( elem, i, until ) { return jQuery.dir( elem, "previousSibling", until ); }, siblings: function( elem ) { return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); }, children: function( elem ) { return jQuery.sibling( elem.firstChild ); }, contents: function( elem ) { return elem.contentDocument || jQuery.merge( [], elem.childNodes ); } }, function( name, fn ) { jQuery.fn[ name ] = function( until, selector ) { var matched = jQuery.map( this, fn, until ); if ( name.slice( -5 ) !== "Until" ) { selector = until; } if ( selector && typeof selector === "string" ) { matched = jQuery.filter( selector, matched ); } if ( this.length > 1 ) { // Remove duplicates if ( !guaranteedUnique[ name ] ) { jQuery.unique( matched ); } // Reverse order for parents* and prev-derivatives if ( rparentsprev.test( name ) ) { matched.reverse(); } } return this.pushStack( matched ); }; }); var rnotwhite = (/\S+/g); // String to Object options format cache var optionsCache = {}; // Convert String-formatted options into Object-formatted ones and store in cache function createOptions( options ) { var object = optionsCache[ options ] = {}; jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { object[ flag ] = true; }); return object; } /* * Create a callback list using the following parameters: * * options: an optional list of space-separated options that will change how * the callback list behaves or a more traditional option object * * By default a callback list will act like an event callback list and can be * "fired" multiple times. * * Possible options: * * once: will ensure the callback list can only be fired once (like a Deferred) * * memory: will keep track of previous values and will call any callback added * after the list has been fired right away with the latest "memorized" * values (like a Deferred) * * unique: will ensure a callback can only be added once (no duplicate in the list) * * stopOnFalse: interrupt callings when a callback returns false * */ jQuery.Callbacks = function( options ) { // Convert options from String-formatted to Object-formatted if needed // (we check in cache first) options = typeof options === "string" ? ( optionsCache[ options ] || createOptions( options ) ) : jQuery.extend( {}, options ); var // Last fire value (for non-forgettable lists) memory, // Flag to know if list was already fired fired, // Flag to know if list is currently firing firing, // First callback to fire (used internally by add and fireWith) firingStart, // End of the loop when firing firingLength, // Index of currently firing callback (modified by remove if needed) firingIndex, // Actual callback list list = [], // Stack of fire calls for repeatable lists stack = !options.once && [], // Fire callbacks fire = function( data ) { memory = options.memory && data; fired = true; firingIndex = firingStart || 0; firingStart = 0; firingLength = list.length; firing = true; for ( ; list && firingIndex < firingLength; firingIndex++ ) { if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { memory = false; // To prevent further calls using add break; } } firing = false; if ( list ) { if ( stack ) { if ( stack.length ) { fire( stack.shift() ); } } else if ( memory ) { list = []; } else { self.disable(); } } }, // Actual Callbacks object self = { // Add a callback or a collection of callbacks to the list add: function() { if ( list ) { // First, we save the current length var start = list.length; (function add( args ) { jQuery.each( args, function( _, arg ) { var type = jQuery.type( arg ); if ( type === "function" ) { if ( !options.unique || !self.has( arg ) ) { list.push( arg ); } } else if ( arg && arg.length && type !== "string" ) { // Inspect recursively add( arg ); } }); })( arguments ); // Do we need to add the callbacks to the // current firing batch? if ( firing ) { firingLength = list.length; // With memory, if we're not firing then // we should call right away } else if ( memory ) { firingStart = start; fire( memory ); } } return this; }, // Remove a callback from the list remove: function() { if ( list ) { jQuery.each( arguments, function( _, arg ) { var index; while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { list.splice( index, 1 ); // Handle firing indexes if ( firing ) { if ( index <= firingLength ) { firingLength--; } if ( index <= firingIndex ) { firingIndex--; } } } }); } return this; }, // Check if a given callback is in the list. // If no argument is given, return whether or not list has callbacks attached. has: function( fn ) { return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); }, // Remove all callbacks from the list empty: function() { list = []; firingLength = 0; return this; }, // Have the list do nothing anymore disable: function() { list = stack = memory = undefined; return this; }, // Is it disabled? disabled: function() { return !list; }, // Lock the list in its current state lock: function() { stack = undefined; if ( !memory ) { self.disable(); } return this; }, // Is it locked? locked: function() { return !stack; }, // Call all callbacks with the given context and arguments fireWith: function( context, args ) { if ( list && ( !fired || stack ) ) { args = args || []; args = [ context, args.slice ? args.slice() : args ]; if ( firing ) { stack.push( args ); } else { fire( args ); } } return this; }, // Call all the callbacks with the given arguments fire: function() { self.fireWith( this, arguments ); return this; }, // To know if the callbacks have already been called at least once fired: function() { return !!fired; } }; return self; }; jQuery.extend({ Deferred: function( func ) { var tuples = [ // action, add listener, listener list, final state [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], [ "notify", "progress", jQuery.Callbacks("memory") ] ], state = "pending", promise = { state: function() { return state; }, always: function() { deferred.done( arguments ).fail( arguments ); return this; }, then: function( /* fnDone, fnFail, fnProgress */ ) { var fns = arguments; return jQuery.Deferred(function( newDefer ) { jQuery.each( tuples, function( i, tuple ) { var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; // deferred[ done | fail | progress ] for forwarding actions to newDefer deferred[ tuple[1] ](function() { var returned = fn && fn.apply( this, arguments ); if ( returned && jQuery.isFunction( returned.promise ) ) { returned.promise() .done( newDefer.resolve ) .fail( newDefer.reject ) .progress( newDefer.notify ); } else { newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); } }); }); fns = null; }).promise(); }, // Get a promise for this deferred // If obj is provided, the promise aspect is added to the object promise: function( obj ) { return obj != null ? jQuery.extend( obj, promise ) : promise; } }, deferred = {}; // Keep pipe for back-compat promise.pipe = promise.then; // Add list-specific methods jQuery.each( tuples, function( i, tuple ) { var list = tuple[ 2 ], stateString = tuple[ 3 ]; // promise[ done | fail | progress ] = list.add promise[ tuple[1] ] = list.add; // Handle state if ( stateString ) { list.add(function() { // state = [ resolved | rejected ] state = stateString; // [ reject_list | resolve_list ].disable; progress_list.lock }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); } // deferred[ resolve | reject | notify ] deferred[ tuple[0] ] = function() { deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); return this; }; deferred[ tuple[0] + "With" ] = list.fireWith; }); // Make the deferred a promise promise.promise( deferred ); // Call given func if any if ( func ) { func.call( deferred, deferred ); } // All done! return deferred; }, // Deferred helper when: function( subordinate /* , ..., subordinateN */ ) { var i = 0, resolveValues = slice.call( arguments ), length = resolveValues.length, // the count of uncompleted subordinates remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, // the master Deferred. If resolveValues consist of only a single Deferred, just use that. deferred = remaining === 1 ? subordinate : jQuery.Deferred(), // Update function for both resolve and progress values updateFunc = function( i, contexts, values ) { return function( value ) { contexts[ i ] = this; values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; if ( values === progressValues ) { deferred.notifyWith( contexts, values ); } else if ( !( --remaining ) ) { deferred.resolveWith( contexts, values ); } }; }, progressValues, progressContexts, resolveContexts; // Add listeners to Deferred subordinates; treat others as resolved if ( length > 1 ) { progressValues = new Array( length ); progressContexts = new Array( length ); resolveContexts = new Array( length ); for ( ; i < length; i++ ) { if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { resolveValues[ i ].promise() .done( updateFunc( i, resolveContexts, resolveValues ) ) .fail( deferred.reject ) .progress( updateFunc( i, progressContexts, progressValues ) ); } else { --remaining; } } } // If we're not waiting on anything, resolve the master if ( !remaining ) { deferred.resolveWith( resolveContexts, resolveValues ); } return deferred.promise(); } }); // The deferred used on DOM ready var readyList; jQuery.fn.ready = function( fn ) { // Add the callback jQuery.ready.promise().done( fn ); return this; }; jQuery.extend({ // Is the DOM ready to be used? Set to true once it occurs. isReady: false, // A counter to track how many items to wait for before // the ready event fires. See #6781 readyWait: 1, // Hold (or release) the ready event holdReady: function( hold ) { if ( hold ) { jQuery.readyWait++; } else { jQuery.ready( true ); } }, // Handle when the DOM is ready ready: function( wait ) { // Abort if there are pending holds or we're already ready if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { return; } // Remember that the DOM is ready jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be if ( wait !== true && --jQuery.readyWait > 0 ) { return; } // If there are functions bound, to execute readyList.resolveWith( document, [ jQuery ] ); // Trigger any bound ready events if ( jQuery.fn.triggerHandler ) { jQuery( document ).triggerHandler( "ready" ); jQuery( document ).off( "ready" ); } } }); /** * The ready event handler and self cleanup method */ function completed() { document.removeEventListener( "DOMContentLoaded", completed, false ); window.removeEventListener( "load", completed, false ); jQuery.ready(); } jQuery.ready.promise = function( obj ) { if ( !readyList ) { readyList = jQuery.Deferred(); // Catch cases where $(document).ready() is called after the browser event has already occurred. // We once tried to use readyState "interactive" here, but it caused issues like the one // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 if ( document.readyState === "complete" ) { // Handle it asynchronously to allow scripts the opportunity to delay ready setTimeout( jQuery.ready ); } else { // Use the handy event callback document.addEventListener( "DOMContentLoaded", completed, false ); // A fallback to window.onload, that will always work window.addEventListener( "load", completed, false ); } } return readyList.promise( obj ); }; // Kick off the DOM ready check even if the user does not jQuery.ready.promise(); // Multifunctional method to get and set values of a collection // The value/s can optionally be executed if it's a function var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { var i = 0, len = elems.length, bulk = key == null; // Sets many values if ( jQuery.type( key ) === "object" ) { chainable = true; for ( i in key ) { jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); } // Sets one value } else if ( value !== undefined ) { chainable = true; if ( !jQuery.isFunction( value ) ) { raw = true; } if ( bulk ) { // Bulk operations run against the entire set if ( raw ) { fn.call( elems, value ); fn = null; // ...except when executing function values } else { bulk = fn; fn = function( elem, key, value ) { return bulk.call( jQuery( elem ), value ); }; } } if ( fn ) { for ( ; i < len; i++ ) { fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); } } } return chainable ? elems : // Gets bulk ? fn.call( elems ) : len ? fn( elems[0], key ) : emptyGet; }; /** * Determines whether an object can have data */ jQuery.acceptData = function( owner ) { // Accepts only: // - Node // - Node.ELEMENT_NODE // - Node.DOCUMENT_NODE // - Object // - Any /* jshint -W018 */ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); }; function Data() { // Support: Android<4, // Old WebKit does not have Object.preventExtensions/freeze method, // return new empty object instead with no [[set]] accessor Object.defineProperty( this.cache = {}, 0, { get: function() { return {}; } }); this.expando = jQuery.expando + Data.uid++; } Data.uid = 1; Data.accepts = jQuery.acceptData; Data.prototype = { key: function( owner ) { // We can accept data for non-element nodes in modern browsers, // but we should not, see #8335. // Always return the key for a frozen object. if ( !Data.accepts( owner ) ) { return 0; } var descriptor = {}, // Check if the owner object already has a cache key unlock = owner[ this.expando ]; // If not, create one if ( !unlock ) { unlock = Data.uid++; // Secure it in a non-enumerable, non-writable property try { descriptor[ this.expando ] = { value: unlock }; Object.defineProperties( owner, descriptor ); // Support: Android<4 // Fallback to a less secure definition } catch ( e ) { descriptor[ this.expando ] = unlock; jQuery.extend( owner, descriptor ); } } // Ensure the cache object if ( !this.cache[ unlock ] ) { this.cache[ unlock ] = {}; } return unlock; }, set: function( owner, data, value ) { var prop, // There may be an unlock assigned to this node, // if there is no entry for this "owner", create one inline // and set the unlock as though an owner entry had always existed unlock = this.key( owner ), cache = this.cache[ unlock ]; // Handle: [ owner, key, value ] args if ( typeof data === "string" ) { cache[ data ] = value; // Handle: [ owner, { properties } ] args } else { // Fresh assignments by object are shallow copied if ( jQuery.isEmptyObject( cache ) ) { jQuery.extend( this.cache[ unlock ], data ); // Otherwise, copy the properties one-by-one to the cache object } else { for ( prop in data ) { cache[ prop ] = data[ prop ]; } } } return cache; }, get: function( owner, key ) { // Either a valid cache is found, or will be created. // New caches will be created and the unlock returned, // allowing direct access to the newly created // empty data object. A valid owner object must be provided. var cache = this.cache[ this.key( owner ) ]; return key === undefined ? cache : cache[ key ]; }, access: function( owner, key, value ) { var stored; // In cases where either: // // 1. No key was specified // 2. A string key was specified, but no value provided // // Take the "read" path and allow the get method to determine // which value to return, respectively either: // // 1. The entire cache object // 2. The data stored at the key // if ( key === undefined || ((key && typeof key === "string") && value === undefined) ) { stored = this.get( owner, key ); return stored !== undefined ? stored : this.get( owner, jQuery.camelCase(key) ); } // [*]When the key is not a string, or both a key and value // are specified, set or extend (existing objects) with either: // // 1. An object of properties // 2. A key and value // this.set( owner, key, value ); // Since the "set" path can have two possible entry points // return the expected data based on which path was taken[*] return value !== undefined ? value : key; }, remove: function( owner, key ) { var i, name, camel, unlock = this.key( owner ), cache = this.cache[ unlock ]; if ( key === undefined ) { this.cache[ unlock ] = {}; } else { // Support array or space separated string of keys if ( jQuery.isArray( key ) ) { // If "name" is an array of keys... // When data is initially created, via ("key", "val") signature, // keys will be converted to camelCase. // Since there is no way to tell _how_ a key was added, remove // both plain key and camelCase key. #12786 // This will only penalize the array argument path. name = key.concat( key.map( jQuery.camelCase ) ); } else { camel = jQuery.camelCase( key ); // Try the string as a key before any manipulation if ( key in cache ) { name = [ key, camel ]; } else { // If a key with the spaces exists, use it. // Otherwise, create an array by matching non-whitespace name = camel; name = name in cache ? [ name ] : ( name.match( rnotwhite ) || [] ); } } i = name.length; while ( i-- ) { delete cache[ name[ i ] ]; } } }, hasData: function( owner ) { return !jQuery.isEmptyObject( this.cache[ owner[ this.expando ] ] || {} ); }, discard: function( owner ) { if ( owner[ this.expando ] ) { delete this.cache[ owner[ this.expando ] ]; } } }; var data_priv = new Data(); var data_user = new Data(); // Implementation Summary // // 1. Enforce API surface and semantic compatibility with 1.9.x branch // 2. Improve the module's maintainability by reducing the storage // paths to a single mechanism. // 3. Use the same single mechanism to support "private" and "user" data. // 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) // 5. Avoid exposing implementation details on user objects (eg. expando properties) // 6. Provide a clear path for implementation upgrade to WeakMap in 2014 var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /([A-Z])/g; function dataAttr( elem, key, data ) { var name; // If nothing was found internally, try to fetch any // data from the HTML5 data-* attribute if ( data === undefined && elem.nodeType === 1 ) { name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); data = elem.getAttribute( name ); if ( typeof data === "string" ) { try { data = data === "true" ? true : data === "false" ? false : data === "null" ? null : // Only convert to a number if it doesn't change the string +data + "" === data ? +data : rbrace.test( data ) ? jQuery.parseJSON( data ) : data; } catch( e ) {} // Make sure we set the data so it isn't changed later data_user.set( elem, key, data ); } else { data = undefined; } } return data; } jQuery.extend({ hasData: function( elem ) { return data_user.hasData( elem ) || data_priv.hasData( elem ); }, data: function( elem, name, data ) { return data_user.access( elem, name, data ); }, removeData: function( elem, name ) { data_user.remove( elem, name ); }, // TODO: Now that all calls to _data and _removeData have been replaced // with direct calls to data_priv methods, these can be deprecated. _data: function( elem, name, data ) { return data_priv.access( elem, name, data ); }, _removeData: function( elem, name ) { data_priv.remove( elem, name ); } }); jQuery.fn.extend({ data: function( key, value ) { var i, name, data, elem = this[ 0 ], attrs = elem && elem.attributes; // Gets all values if ( key === undefined ) { if ( this.length ) { data = data_user.get( elem ); if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { i = attrs.length; while ( i-- ) { // Support: IE11+ // The attrs elements can be null (#14894) if ( attrs[ i ] ) { name = attrs[ i ].name; if ( name.indexOf( "data-" ) === 0 ) { name = jQuery.camelCase( name.slice(5) ); dataAttr( elem, name, data[ name ] ); } } } data_priv.set( elem, "hasDataAttrs", true ); } } return data; } // Sets multiple values if ( typeof key === "object" ) { return this.each(function() { data_user.set( this, key ); }); } return access( this, function( value ) { var data, camelKey = jQuery.camelCase( key ); // The calling jQuery object (element matches) is not empty // (and therefore has an element appears at this[ 0 ]) and the // `value` parameter was not undefined. An empty jQuery object // will result in `undefined` for elem = this[ 0 ] which will // throw an exception if an attempt to read a data cache is made. if ( elem && value === undefined ) { // Attempt to get data from the cache // with the key as-is data = data_user.get( elem, key ); if ( data !== undefined ) { return data; } // Attempt to get data from the cache // with the key camelized data = data_user.get( elem, camelKey ); if ( data !== undefined ) { return data; } // Attempt to "discover" the data in // HTML5 custom data-* attrs data = dataAttr( elem, camelKey, undefined ); if ( data !== undefined ) { return data; } // We tried really hard, but the data doesn't exist. return; } // Set the data... this.each(function() { // First, attempt to store a copy or reference of any // data that might've been store with a camelCased key. var data = data_user.get( this, camelKey ); // For HTML5 data-* attribute interop, we have to // store property names with dashes in a camelCase form. // This might not apply to all properties...* data_user.set( this, camelKey, value ); // *... In the case of properties that might _actually_ // have dashes, we need to also store a copy of that // unchanged property. if ( key.indexOf("-") !== -1 && data !== undefined ) { data_user.set( this, key, value ); } }); }, null, value, arguments.length > 1, null, true ); }, removeData: function( key ) { return this.each(function() { data_user.remove( this, key ); }); } }); jQuery.extend({ queue: function( elem, type, data ) { var queue; if ( elem ) { type = ( type || "fx" ) + "queue"; queue = data_priv.get( elem, type ); // Speed up dequeue by getting out quickly if this is just a lookup if ( data ) { if ( !queue || jQuery.isArray( data ) ) { queue = data_priv.access( elem, type, jQuery.makeArray(data) ); } else { queue.push( data ); } } return queue || []; } }, dequeue: function( elem, type ) { type = type || "fx"; var queue = jQuery.queue( elem, type ), startLength = queue.length, fn = queue.shift(), hooks = jQuery._queueHooks( elem, type ), next = function() { jQuery.dequeue( elem, type ); }; // If the fx queue is dequeued, always remove the progress sentinel if ( fn === "inprogress" ) { fn = queue.shift(); startLength--; } if ( fn ) { // Add a progress sentinel to prevent the fx queue from being // automatically dequeued if ( type === "fx" ) { queue.unshift( "inprogress" ); } // Clear up the last queue stop function delete hooks.stop; fn.call( elem, next, hooks ); } if ( !startLength && hooks ) { hooks.empty.fire(); } }, // Not public - generate a queueHooks object, or return the current one _queueHooks: function( elem, type ) { var key = type + "queueHooks"; return data_priv.get( elem, key ) || data_priv.access( elem, key, { empty: jQuery.Callbacks("once memory").add(function() { data_priv.remove( elem, [ type + "queue", key ] ); }) }); } }); jQuery.fn.extend({ queue: function( type, data ) { var setter = 2; if ( typeof type !== "string" ) { data = type; type = "fx"; setter--; } if ( arguments.length < setter ) { return jQuery.queue( this[0], type ); } return data === undefined ? this : this.each(function() { var queue = jQuery.queue( this, type, data ); // Ensure a hooks for this queue jQuery._queueHooks( this, type ); if ( type === "fx" && queue[0] !== "inprogress" ) { jQuery.dequeue( this, type ); } }); }, dequeue: function( type ) { return this.each(function() { jQuery.dequeue( this, type ); }); }, clearQueue: function( type ) { return this.queue( type || "fx", [] ); }, // Get a promise resolved when queues of a certain type // are emptied (fx is the type by default) promise: function( type, obj ) { var tmp, count = 1, defer = jQuery.Deferred(), elements = this, i = this.length, resolve = function() { if ( !( --count ) ) { defer.resolveWith( elements, [ elements ] ); } }; if ( typeof type !== "string" ) { obj = type; type = undefined; } type = type || "fx"; while ( i-- ) { tmp = data_priv.get( elements[ i ], type + "queueHooks" ); if ( tmp && tmp.empty ) { count++; tmp.empty.add( resolve ); } } resolve(); return defer.promise( obj ); } }); var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; var isHidden = function( elem, el ) { // isHidden might be called from jQuery#filter function; // in that case, element will be second argument elem = el || elem; return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); }; var rcheckableType = (/^(?:checkbox|radio)$/i); (function() { var fragment = document.createDocumentFragment(), div = fragment.appendChild( document.createElement( "div" ) ), input = document.createElement( "input" ); // Support: Safari<=5.1 // Check state lost if the name is set (#11217) // Support: Windows Web Apps (WWA) // `name` and `type` must use .setAttribute for WWA (#14901) input.setAttribute( "type", "radio" ); input.setAttribute( "checked", "checked" ); input.setAttribute( "name", "t" ); div.appendChild( input ); // Support: Safari<=5.1, Android<4.2 // Older WebKit doesn't clone checked state correctly in fragments support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; // Support: IE<=11+ // Make sure textarea (and checkbox) defaultValue is properly cloned div.innerHTML = ""; support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; })(); var strundefined = typeof undefined; support.focusinBubbles = "onfocusin" in window; var rkeyEvent = /^key/, rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; function returnTrue() { return true; } function returnFalse() { return false; } function safeActiveElement() { try { return document.activeElement; } catch ( err ) { } } /* * Helper functions for managing events -- not part of the public interface. * Props to Dean Edwards' addEvent library for many of the ideas. */ jQuery.event = { global: {}, add: function( elem, types, handler, data, selector ) { var handleObjIn, eventHandle, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = data_priv.get( elem ); // Don't attach events to noData or text/comment nodes (but allow plain objects) if ( !elemData ) { return; } // Caller can pass in an object of custom data in lieu of the handler if ( handler.handler ) { handleObjIn = handler; handler = handleObjIn.handler; selector = handleObjIn.selector; } // Make sure that the handler has a unique ID, used to find/remove it later if ( !handler.guid ) { handler.guid = jQuery.guid++; } // Init the element's event structure and main handler, if this is the first if ( !(events = elemData.events) ) { events = elemData.events = {}; } if ( !(eventHandle = elemData.handle) ) { eventHandle = elemData.handle = function( e ) { // Discard the second event of a jQuery.event.trigger() and // when an event is called after a page has unloaded return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply( elem, arguments ) : undefined; }; } // Handle multiple events separated by a space types = ( types || "" ).match( rnotwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[t] ) || []; type = origType = tmp[1]; namespaces = ( tmp[2] || "" ).split( "." ).sort(); // There *must* be a type, no attaching namespace-only handlers if ( !type ) { continue; } // If event changes its type, use the special event handlers for the changed type special = jQuery.event.special[ type ] || {}; // If selector defined, determine special event api type, otherwise given type type = ( selector ? special.delegateType : special.bindType ) || type; // Update special based on newly reset type special = jQuery.event.special[ type ] || {}; // handleObj is passed to all event handlers handleObj = jQuery.extend({ type: type, origType: origType, data: data, handler: handler, guid: handler.guid, selector: selector, needsContext: selector && jQuery.expr.match.needsContext.test( selector ), namespace: namespaces.join(".") }, handleObjIn ); // Init the event handler queue if we're the first if ( !(handlers = events[ type ]) ) { handlers = events[ type ] = []; handlers.delegateCount = 0; // Only use addEventListener if the special events handler returns false if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { if ( elem.addEventListener ) { elem.addEventListener( type, eventHandle, false ); } } } if ( special.add ) { special.add.call( elem, handleObj ); if ( !handleObj.handler.guid ) { handleObj.handler.guid = handler.guid; } } // Add to the element's handler list, delegates in front if ( selector ) { handlers.splice( handlers.delegateCount++, 0, handleObj ); } else { handlers.push( handleObj ); } // Keep track of which events have ever been used, for event optimization jQuery.event.global[ type ] = true; } }, // Detach an event or set of events from an element remove: function( elem, types, handler, selector, mappedTypes ) { var j, origCount, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = data_priv.hasData( elem ) && data_priv.get( elem ); if ( !elemData || !(events = elemData.events) ) { return; } // Once for each type.namespace in types; type may be omitted types = ( types || "" ).match( rnotwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[t] ) || []; type = origType = tmp[1]; namespaces = ( tmp[2] || "" ).split( "." ).sort(); // Unbind all events (on this namespace, if provided) for the element if ( !type ) { for ( type in events ) { jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); } continue; } special = jQuery.event.special[ type ] || {}; type = ( selector ? special.delegateType : special.bindType ) || type; handlers = events[ type ] || []; tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); // Remove matching events origCount = j = handlers.length; while ( j-- ) { handleObj = handlers[ j ]; if ( ( mappedTypes || origType === handleObj.origType ) && ( !handler || handler.guid === handleObj.guid ) && ( !tmp || tmp.test( handleObj.namespace ) ) && ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { handlers.splice( j, 1 ); if ( handleObj.selector ) { handlers.delegateCount--; } if ( special.remove ) { special.remove.call( elem, handleObj ); } } } // Remove generic event handler if we removed something and no more handlers exist // (avoids potential for endless recursion during removal of special event handlers) if ( origCount && !handlers.length ) { if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { jQuery.removeEvent( elem, type, elemData.handle ); } delete events[ type ]; } } // Remove the expando if it's no longer used if ( jQuery.isEmptyObject( events ) ) { delete elemData.handle; data_priv.remove( elem, "events" ); } }, trigger: function( event, data, elem, onlyHandlers ) { var i, cur, tmp, bubbleType, ontype, handle, special, eventPath = [ elem || document ], type = hasOwn.call( event, "type" ) ? event.type : event, namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; cur = tmp = elem = elem || document; // Don't do events on text and comment nodes if ( elem.nodeType === 3 || elem.nodeType === 8 ) { return; } // focus/blur morphs to focusin/out; ensure we're not firing them right now if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { return; } if ( type.indexOf(".") >= 0 ) { // Namespaced trigger; create a regexp to match event type in handle() namespaces = type.split("."); type = namespaces.shift(); namespaces.sort(); } ontype = type.indexOf(":") < 0 && "on" + type; // Caller can pass in a jQuery.Event object, Object, or just an event type string event = event[ jQuery.expando ] ? event : new jQuery.Event( type, typeof event === "object" && event ); // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) event.isTrigger = onlyHandlers ? 2 : 3; event.namespace = namespaces.join("."); event.namespace_re = event.namespace ? new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : null; // Clean up the event in case it is being reused event.result = undefined; if ( !event.target ) { event.target = elem; } // Clone any incoming data and prepend the event, creating the handler arg list data = data == null ? [ event ] : jQuery.makeArray( data, [ event ] ); // Allow special events to draw outside the lines special = jQuery.event.special[ type ] || {}; if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { return; } // Determine event propagation path in advance, per W3C events spec (#9951) // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { bubbleType = special.delegateType || type; if ( !rfocusMorph.test( bubbleType + type ) ) { cur = cur.parentNode; } for ( ; cur; cur = cur.parentNode ) { eventPath.push( cur ); tmp = cur; } // Only add window if we got to document (e.g., not plain obj or detached DOM) if ( tmp === (elem.ownerDocument || document) ) { eventPath.push( tmp.defaultView || tmp.parentWindow || window ); } } // Fire handlers on the event path i = 0; while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { event.type = i > 1 ? bubbleType : special.bindType || type; // jQuery handler handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" ); if ( handle ) { handle.apply( cur, data ); } // Native handler handle = ontype && cur[ ontype ]; if ( handle && handle.apply && jQuery.acceptData( cur ) ) { event.result = handle.apply( cur, data ); if ( event.result === false ) { event.preventDefault(); } } } event.type = type; // If nobody prevented the default action, do it now if ( !onlyHandlers && !event.isDefaultPrevented() ) { if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && jQuery.acceptData( elem ) ) { // Call a native DOM method on the target with the same name name as the event. // Don't do default actions on window, that's where global variables be (#6170) if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { // Don't re-trigger an onFOO event when we call its FOO() method tmp = elem[ ontype ]; if ( tmp ) { elem[ ontype ] = null; } // Prevent re-triggering of the same event, since we already bubbled it above jQuery.event.triggered = type; elem[ type ](); jQuery.event.triggered = undefined; if ( tmp ) { elem[ ontype ] = tmp; } } } } return event.result; }, dispatch: function( event ) { // Make a writable jQuery.Event from the native event object event = jQuery.event.fix( event ); var i, j, ret, matched, handleObj, handlerQueue = [], args = slice.call( arguments ), handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [], special = jQuery.event.special[ event.type ] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event args[0] = event; event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { return; } // Determine handlers handlerQueue = jQuery.event.handlers.call( this, event, handlers ); // Run delegates first; they may want to stop propagation beneath us i = 0; while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { event.currentTarget = matched.elem; j = 0; while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { // Triggered event must either 1) have no namespace, or 2) have namespace(s) // a subset or equal to those in the bound event (both can have no namespace). if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { event.handleObj = handleObj; event.data = handleObj.data; ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) .apply( matched.elem, args ); if ( ret !== undefined ) { if ( (event.result = ret) === false ) { event.preventDefault(); event.stopPropagation(); } } } } } // Call the postDispatch hook for the mapped type if ( special.postDispatch ) { special.postDispatch.call( this, event ); } return event.result; }, handlers: function( event, handlers ) { var i, matches, sel, handleObj, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target; // Find delegate handlers // Black-hole SVG instance trees (#13180) // Avoid non-left-click bubbling in Firefox (#3861) if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { for ( ; cur !== this; cur = cur.parentNode || this ) { // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) if ( cur.disabled !== true || event.type !== "click" ) { matches = []; for ( i = 0; i < delegateCount; i++ ) { handleObj = handlers[ i ]; // Don't conflict with Object.prototype properties (#13203) sel = handleObj.selector + " "; if ( matches[ sel ] === undefined ) { matches[ sel ] = handleObj.needsContext ? jQuery( sel, this ).index( cur ) >= 0 : jQuery.find( sel, this, null, [ cur ] ).length; } if ( matches[ sel ] ) { matches.push( handleObj ); } } if ( matches.length ) { handlerQueue.push({ elem: cur, handlers: matches }); } } } } // Add the remaining (directly-bound) handlers if ( delegateCount < handlers.length ) { handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); } return handlerQueue; }, // Includes some event props shared by KeyEvent and MouseEvent props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), fixHooks: {}, keyHooks: { props: "char charCode key keyCode".split(" "), filter: function( event, original ) { // Add which for key events if ( event.which == null ) { event.which = original.charCode != null ? original.charCode : original.keyCode; } return event; } }, mouseHooks: { props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), filter: function( event, original ) { var eventDoc, doc, body, button = original.button; // Calculate pageX/Y if missing and clientX/Y available if ( event.pageX == null && original.clientX != null ) { eventDoc = event.target.ownerDocument || document; doc = eventDoc.documentElement; body = eventDoc.body; event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); } // Add which for click: 1 === left; 2 === middle; 3 === right // Note: button is not normalized, so don't use it if ( !event.which && button !== undefined ) { event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); } return event; } }, fix: function( event ) { if ( event[ jQuery.expando ] ) { return event; } // Create a writable copy of the event object and normalize some properties var i, prop, copy, type = event.type, originalEvent = event, fixHook = this.fixHooks[ type ]; if ( !fixHook ) { this.fixHooks[ type ] = fixHook = rmouseEvent.test( type ) ? this.mouseHooks : rkeyEvent.test( type ) ? this.keyHooks : {}; } copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; event = new jQuery.Event( originalEvent ); i = copy.length; while ( i-- ) { prop = copy[ i ]; event[ prop ] = originalEvent[ prop ]; } // Support: Cordova 2.5 (WebKit) (#13255) // All events should have a target; Cordova deviceready doesn't if ( !event.target ) { event.target = document; } // Support: Safari 6.0+, Chrome<28 // Target should not be a text node (#504, #13143) if ( event.target.nodeType === 3 ) { event.target = event.target.parentNode; } return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; }, special: { load: { // Prevent triggered image.load events from bubbling to window.load noBubble: true }, focus: { // Fire native event if possible so blur/focus sequence is correct trigger: function() { if ( this !== safeActiveElement() && this.focus ) { this.focus(); return false; } }, delegateType: "focusin" }, blur: { trigger: function() { if ( this === safeActiveElement() && this.blur ) { this.blur(); return false; } }, delegateType: "focusout" }, click: { // For checkbox, fire native event so checked state will be right trigger: function() { if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { this.click(); return false; } }, // For cross-browser consistency, don't fire native .click() on links _default: function( event ) { return jQuery.nodeName( event.target, "a" ); } }, beforeunload: { postDispatch: function( event ) { // Support: Firefox 20+ // Firefox doesn't alert if the returnValue field is not set. if ( event.result !== undefined && event.originalEvent ) { event.originalEvent.returnValue = event.result; } } } }, simulate: function( type, elem, event, bubble ) { // Piggyback on a donor event to simulate a different one. // Fake originalEvent to avoid donor's stopPropagation, but if the // simulated event prevents default then we do the same on the donor. var e = jQuery.extend( new jQuery.Event(), event, { type: type, isSimulated: true, originalEvent: {} } ); if ( bubble ) { jQuery.event.trigger( e, null, elem ); } else { jQuery.event.dispatch.call( elem, e ); } if ( e.isDefaultPrevented() ) { event.preventDefault(); } } }; jQuery.removeEvent = function( elem, type, handle ) { if ( elem.removeEventListener ) { elem.removeEventListener( type, handle, false ); } }; jQuery.Event = function( src, props ) { // Allow instantiation without the 'new' keyword if ( !(this instanceof jQuery.Event) ) { return new jQuery.Event( src, props ); } // Event object if ( src && src.type ) { this.originalEvent = src; this.type = src.type; // Events bubbling up the document may have been marked as prevented // by a handler lower down the tree; reflect the correct value. this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: Android<4.0 src.returnValue === false ? returnTrue : returnFalse; // Event type } else { this.type = src; } // Put explicitly provided properties onto the event object if ( props ) { jQuery.extend( this, props ); } // Create a timestamp if incoming event doesn't have one this.timeStamp = src && src.timeStamp || jQuery.now(); // Mark it as fixed this[ jQuery.expando ] = true; }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html jQuery.Event.prototype = { isDefaultPrevented: returnFalse, isPropagationStopped: returnFalse, isImmediatePropagationStopped: returnFalse, preventDefault: function() { var e = this.originalEvent; this.isDefaultPrevented = returnTrue; if ( e && e.preventDefault ) { e.preventDefault(); } }, stopPropagation: function() { var e = this.originalEvent; this.isPropagationStopped = returnTrue; if ( e && e.stopPropagation ) { e.stopPropagation(); } }, stopImmediatePropagation: function() { var e = this.originalEvent; this.isImmediatePropagationStopped = returnTrue; if ( e && e.stopImmediatePropagation ) { e.stopImmediatePropagation(); } this.stopPropagation(); } }; // Create mouseenter/leave events using mouseover/out and event-time checks // Support: Chrome 15+ jQuery.each({ mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }, function( orig, fix ) { jQuery.event.special[ orig ] = { delegateType: fix, bindType: fix, handle: function( event ) { var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj; // For mousenter/leave call the handler if related is outside the target. // NB: No relatedTarget if the mouse left/entered the browser window if ( !related || (related !== target && !jQuery.contains( target, related )) ) { event.type = handleObj.origType; ret = handleObj.handler.apply( this, arguments ); event.type = fix; } return ret; } }; }); // Support: Firefox, Chrome, Safari // Create "bubbling" focus and blur events if ( !support.focusinBubbles ) { jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { // Attach a single capturing handler on the document while someone wants focusin/focusout var handler = function( event ) { jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); }; jQuery.event.special[ fix ] = { setup: function() { var doc = this.ownerDocument || this, attaches = data_priv.access( doc, fix ); if ( !attaches ) { doc.addEventListener( orig, handler, true ); } data_priv.access( doc, fix, ( attaches || 0 ) + 1 ); }, teardown: function() { var doc = this.ownerDocument || this, attaches = data_priv.access( doc, fix ) - 1; if ( !attaches ) { doc.removeEventListener( orig, handler, true ); data_priv.remove( doc, fix ); } else { data_priv.access( doc, fix, attaches ); } } }; }); } jQuery.fn.extend({ on: function( types, selector, data, fn, /*INTERNAL*/ one ) { var origFn, type; // Types can be a map of types/handlers if ( typeof types === "object" ) { // ( types-Object, selector, data ) if ( typeof selector !== "string" ) { // ( types-Object, data ) data = data || selector; selector = undefined; } for ( type in types ) { this.on( type, selector, data, types[ type ], one ); } return this; } if ( data == null && fn == null ) { // ( types, fn ) fn = selector; data = selector = undefined; } else if ( fn == null ) { if ( typeof selector === "string" ) { // ( types, selector, fn ) fn = data; data = undefined; } else { // ( types, data, fn ) fn = data; data = selector; selector = undefined; } } if ( fn === false ) { fn = returnFalse; } else if ( !fn ) { return this; } if ( one === 1 ) { origFn = fn; fn = function( event ) { // Can use an empty set, since event contains the info jQuery().off( event ); return origFn.apply( this, arguments ); }; // Use same guid so caller can remove using origFn fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); } return this.each( function() { jQuery.event.add( this, types, fn, data, selector ); }); }, one: function( types, selector, data, fn ) { return this.on( types, selector, data, fn, 1 ); }, off: function( types, selector, fn ) { var handleObj, type; if ( types && types.preventDefault && types.handleObj ) { // ( event ) dispatched jQuery.Event handleObj = types.handleObj; jQuery( types.delegateTarget ).off( handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler ); return this; } if ( typeof types === "object" ) { // ( types-object [, selector] ) for ( type in types ) { this.off( type, selector, types[ type ] ); } return this; } if ( selector === false || typeof selector === "function" ) { // ( types [, fn] ) fn = selector; selector = undefined; } if ( fn === false ) { fn = returnFalse; } return this.each(function() { jQuery.event.remove( this, types, fn, selector ); }); }, trigger: function( type, data ) { return this.each(function() { jQuery.event.trigger( type, data, this ); }); }, triggerHandler: function( type, data ) { var elem = this[0]; if ( elem ) { return jQuery.event.trigger( type, data, elem, true ); } } }); var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, rtagName = /<([\w:]+)/, rhtml = /<|&#?\w+;/, rnoInnerhtml = /<(?:script|style|link)/i, // checked="checked" or checked rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rscriptType = /^$|\/(?:java|ecma)script/i, rscriptTypeMasked = /^true\/(.*)/, rcleanScript = /^\s*\s*$/g, // We have to close these tags to support XHTML (#13200) wrapMap = { // Support: IE9 option: [ 1, "" ], thead: [ 1, "", "
              " ], col: [ 2, "", "
              " ], tr: [ 2, "", "
              " ], td: [ 3, "", "
              " ], _default: [ 0, "", "" ] }; // Support: IE9 wrapMap.optgroup = wrapMap.option; wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; wrapMap.th = wrapMap.td; // Support: 1.x compatibility // Manipulating tables requires a tbody function manipulationTarget( elem, content ) { return jQuery.nodeName( elem, "table" ) && jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? elem.getElementsByTagName("tbody")[0] || elem.appendChild( elem.ownerDocument.createElement("tbody") ) : elem; } // Replace/restore the type attribute of script elements for safe DOM manipulation function disableScript( elem ) { elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; return elem; } function restoreScript( elem ) { var match = rscriptTypeMasked.exec( elem.type ); if ( match ) { elem.type = match[ 1 ]; } else { elem.removeAttribute("type"); } return elem; } // Mark scripts as having already been evaluated function setGlobalEval( elems, refElements ) { var i = 0, l = elems.length; for ( ; i < l; i++ ) { data_priv.set( elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) ); } } function cloneCopyEvent( src, dest ) { var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; if ( dest.nodeType !== 1 ) { return; } // 1. Copy private data: events, handlers, etc. if ( data_priv.hasData( src ) ) { pdataOld = data_priv.access( src ); pdataCur = data_priv.set( dest, pdataOld ); events = pdataOld.events; if ( events ) { delete pdataCur.handle; pdataCur.events = {}; for ( type in events ) { for ( i = 0, l = events[ type ].length; i < l; i++ ) { jQuery.event.add( dest, type, events[ type ][ i ] ); } } } } // 2. Copy user data if ( data_user.hasData( src ) ) { udataOld = data_user.access( src ); udataCur = jQuery.extend( {}, udataOld ); data_user.set( dest, udataCur ); } } function getAll( context, tag ) { var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : []; return tag === undefined || tag && jQuery.nodeName( context, tag ) ? jQuery.merge( [ context ], ret ) : ret; } // Fix IE bugs, see support tests function fixInput( src, dest ) { var nodeName = dest.nodeName.toLowerCase(); // Fails to persist the checked state of a cloned checkbox or radio button. if ( nodeName === "input" && rcheckableType.test( src.type ) ) { dest.checked = src.checked; // Fails to return the selected option to the default selected state when cloning options } else if ( nodeName === "input" || nodeName === "textarea" ) { dest.defaultValue = src.defaultValue; } } jQuery.extend({ clone: function( elem, dataAndEvents, deepDataAndEvents ) { var i, l, srcElements, destElements, clone = elem.cloneNode( true ), inPage = jQuery.contains( elem.ownerDocument, elem ); // Fix IE cloning issues if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 destElements = getAll( clone ); srcElements = getAll( elem ); for ( i = 0, l = srcElements.length; i < l; i++ ) { fixInput( srcElements[ i ], destElements[ i ] ); } } // Copy the events from the original to the clone if ( dataAndEvents ) { if ( deepDataAndEvents ) { srcElements = srcElements || getAll( elem ); destElements = destElements || getAll( clone ); for ( i = 0, l = srcElements.length; i < l; i++ ) { cloneCopyEvent( srcElements[ i ], destElements[ i ] ); } } else { cloneCopyEvent( elem, clone ); } } // Preserve script evaluation history destElements = getAll( clone, "script" ); if ( destElements.length > 0 ) { setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); } // Return the cloned set return clone; }, buildFragment: function( elems, context, scripts, selection ) { var elem, tmp, tag, wrap, contains, j, fragment = context.createDocumentFragment(), nodes = [], i = 0, l = elems.length; for ( ; i < l; i++ ) { elem = elems[ i ]; if ( elem || elem === 0 ) { // Add nodes directly if ( jQuery.type( elem ) === "object" ) { // Support: QtWebKit, PhantomJS // push.apply(_, arraylike) throws on ancient WebKit jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); // Convert non-html into a text node } else if ( !rhtml.test( elem ) ) { nodes.push( context.createTextNode( elem ) ); // Convert html into DOM nodes } else { tmp = tmp || fragment.appendChild( context.createElement("div") ); // Deserialize a standard representation tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); wrap = wrapMap[ tag ] || wrapMap._default; tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[ 2 ]; // Descend through wrappers to the right content j = wrap[ 0 ]; while ( j-- ) { tmp = tmp.lastChild; } // Support: QtWebKit, PhantomJS // push.apply(_, arraylike) throws on ancient WebKit jQuery.merge( nodes, tmp.childNodes ); // Remember the top-level container tmp = fragment.firstChild; // Ensure the created nodes are orphaned (#12392) tmp.textContent = ""; } } } // Remove wrapper from fragment fragment.textContent = ""; i = 0; while ( (elem = nodes[ i++ ]) ) { // #4087 - If origin and destination elements are the same, and this is // that element, do not do anything if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { continue; } contains = jQuery.contains( elem.ownerDocument, elem ); // Append to fragment tmp = getAll( fragment.appendChild( elem ), "script" ); // Preserve script evaluation history if ( contains ) { setGlobalEval( tmp ); } // Capture executables if ( scripts ) { j = 0; while ( (elem = tmp[ j++ ]) ) { if ( rscriptType.test( elem.type || "" ) ) { scripts.push( elem ); } } } } return fragment; }, cleanData: function( elems ) { var data, elem, type, key, special = jQuery.event.special, i = 0; for ( ; (elem = elems[ i ]) !== undefined; i++ ) { if ( jQuery.acceptData( elem ) ) { key = elem[ data_priv.expando ]; if ( key && (data = data_priv.cache[ key ]) ) { if ( data.events ) { for ( type in data.events ) { if ( special[ type ] ) { jQuery.event.remove( elem, type ); // This is a shortcut to avoid jQuery.event.remove's overhead } else { jQuery.removeEvent( elem, type, data.handle ); } } } if ( data_priv.cache[ key ] ) { // Discard any remaining `private` data delete data_priv.cache[ key ]; } } } // Discard any remaining `user` data delete data_user.cache[ elem[ data_user.expando ] ]; } } }); jQuery.fn.extend({ text: function( value ) { return access( this, function( value ) { return value === undefined ? jQuery.text( this ) : this.empty().each(function() { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { this.textContent = value; } }); }, null, value, arguments.length ); }, append: function() { return this.domManip( arguments, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { var target = manipulationTarget( this, elem ); target.appendChild( elem ); } }); }, prepend: function() { return this.domManip( arguments, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { var target = manipulationTarget( this, elem ); target.insertBefore( elem, target.firstChild ); } }); }, before: function() { return this.domManip( arguments, function( elem ) { if ( this.parentNode ) { this.parentNode.insertBefore( elem, this ); } }); }, after: function() { return this.domManip( arguments, function( elem ) { if ( this.parentNode ) { this.parentNode.insertBefore( elem, this.nextSibling ); } }); }, remove: function( selector, keepData /* Internal Use Only */ ) { var elem, elems = selector ? jQuery.filter( selector, this ) : this, i = 0; for ( ; (elem = elems[i]) != null; i++ ) { if ( !keepData && elem.nodeType === 1 ) { jQuery.cleanData( getAll( elem ) ); } if ( elem.parentNode ) { if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { setGlobalEval( getAll( elem, "script" ) ); } elem.parentNode.removeChild( elem ); } } return this; }, empty: function() { var elem, i = 0; for ( ; (elem = this[i]) != null; i++ ) { if ( elem.nodeType === 1 ) { // Prevent memory leaks jQuery.cleanData( getAll( elem, false ) ); // Remove any remaining nodes elem.textContent = ""; } } return this; }, clone: function( dataAndEvents, deepDataAndEvents ) { dataAndEvents = dataAndEvents == null ? false : dataAndEvents; deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; return this.map(function() { return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); }); }, html: function( value ) { return access( this, function( value ) { var elem = this[ 0 ] || {}, i = 0, l = this.length; if ( value === undefined && elem.nodeType === 1 ) { return elem.innerHTML; } // See if we can take a shortcut and just use innerHTML if ( typeof value === "string" && !rnoInnerhtml.test( value ) && !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { value = value.replace( rxhtmlTag, "<$1>" ); try { for ( ; i < l; i++ ) { elem = this[ i ] || {}; // Remove element nodes and prevent memory leaks if ( elem.nodeType === 1 ) { jQuery.cleanData( getAll( elem, false ) ); elem.innerHTML = value; } } elem = 0; // If using innerHTML throws an exception, use the fallback method } catch( e ) {} } if ( elem ) { this.empty().append( value ); } }, null, value, arguments.length ); }, replaceWith: function() { var arg = arguments[ 0 ]; // Make the changes, replacing each context element with the new content this.domManip( arguments, function( elem ) { arg = this.parentNode; jQuery.cleanData( getAll( this ) ); if ( arg ) { arg.replaceChild( elem, this ); } }); // Force removal if there was no new content (e.g., from empty arguments) return arg && (arg.length || arg.nodeType) ? this : this.remove(); }, detach: function( selector ) { return this.remove( selector, true ); }, domManip: function( args, callback ) { // Flatten any nested arrays args = concat.apply( [], args ); var fragment, first, scripts, hasScripts, node, doc, i = 0, l = this.length, set = this, iNoClone = l - 1, value = args[ 0 ], isFunction = jQuery.isFunction( value ); // We can't cloneNode fragments that contain checked, in WebKit if ( isFunction || ( l > 1 && typeof value === "string" && !support.checkClone && rchecked.test( value ) ) ) { return this.each(function( index ) { var self = set.eq( index ); if ( isFunction ) { args[ 0 ] = value.call( this, index, self.html() ); } self.domManip( args, callback ); }); } if ( l ) { fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); first = fragment.firstChild; if ( fragment.childNodes.length === 1 ) { fragment = first; } if ( first ) { scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); hasScripts = scripts.length; // Use the original fragment for the last item instead of the first because it can end up // being emptied incorrectly in certain situations (#8070). for ( ; i < l; i++ ) { node = fragment; if ( i !== iNoClone ) { node = jQuery.clone( node, true, true ); // Keep references to cloned scripts for later restoration if ( hasScripts ) { // Support: QtWebKit // jQuery.merge because push.apply(_, arraylike) throws jQuery.merge( scripts, getAll( node, "script" ) ); } } callback.call( this[ i ], node, i ); } if ( hasScripts ) { doc = scripts[ scripts.length - 1 ].ownerDocument; // Reenable scripts jQuery.map( scripts, restoreScript ); // Evaluate executable scripts on first document insertion for ( i = 0; i < hasScripts; i++ ) { node = scripts[ i ]; if ( rscriptType.test( node.type || "" ) && !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { if ( node.src ) { // Optional AJAX dependency, but won't run scripts if not present if ( jQuery._evalUrl ) { jQuery._evalUrl( node.src ); } } else { jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); } } } } } } return this; } }); jQuery.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function( name, original ) { jQuery.fn[ name ] = function( selector ) { var elems, ret = [], insert = jQuery( selector ), last = insert.length - 1, i = 0; for ( ; i <= last; i++ ) { elems = i === last ? this : this.clone( true ); jQuery( insert[ i ] )[ original ]( elems ); // Support: QtWebKit // .get() because push.apply(_, arraylike) throws push.apply( ret, elems.get() ); } return this.pushStack( ret ); }; }); var iframe, elemdisplay = {}; /** * Retrieve the actual display of a element * @param {String} name nodeName of the element * @param {Object} doc Document object */ // Called only from within defaultDisplay function actualDisplay( name, doc ) { var style, elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), // getDefaultComputedStyle might be reliably used only on attached element display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? // Use of this method is a temporary fix (more like optimization) until something better comes along, // since it was removed from specification and supported only in FF style.display : jQuery.css( elem[ 0 ], "display" ); // We don't have any data stored on the element, // so use "detach" method as fast way to get rid of the element elem.detach(); return display; } /** * Try to determine the default display value of an element * @param {String} nodeName */ function defaultDisplay( nodeName ) { var doc = document, display = elemdisplay[ nodeName ]; if ( !display ) { display = actualDisplay( nodeName, doc ); // If the simple way fails, read from inside an iframe if ( display === "none" || !display ) { // Use the already-created iframe if possible iframe = (iframe || jQuery( ""/>\n
              \n \n
              \n ', // 事件绑定 events: [{ selector: '#' + btnId, type: 'click', fn: function fn() { var $text = $('#' + textValId); var val = $text.val().trim(); // 测试用视频地址 // if (val) { // 插入视频 _this._insert(val); } // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭 return true; } }] } // first tab end ] // tabs end }); // panel end // 显示 panel panel.show(); // 记录属性 this.panel = panel; }, // 插入视频 _insert: function _insert(val) { var editor = this.editor; editor.cmd.do('insertHTML', val + '


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

              ' + replaceHtmlSymbol(pasteText) + '

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


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

              ' + val + '

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


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


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

              的顶级标签,改为

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

              .....

              ,忽然回车生成一个空的


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

              ,并将选取定位到

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

              的顶级标签,改为

              pHandle(e); }); //

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

              ,并将选取定位到

              var $p = $('


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


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


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


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

              ' + pasteText + '

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

                ' + pasteText + '

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


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


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


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


                ')); this.initSelection(); return; } } this.selection.createRangeByElem($last, false, true); this.selection.restoreSelection(); }, // 绑定事件 _bindEvent: function _bindEvent() { // -------- 绑定 onchange 事件 -------- var onChangeTimeoutId = 0; var beforeChangeHtml = this.txt.html(); var config$$1 = this.config; // onchange 触发延迟时间 var onchangeTimeout = config$$1.onchangeTimeout; onchangeTimeout = parseInt(onchangeTimeout, 10); if (!onchangeTimeout || onchangeTimeout <= 0) { onchangeTimeout = 200; } var onchange = config$$1.onchange; if (onchange && typeof onchange === 'function') { // 触发 change 的有三个场景: // 1. $textContainerElem.on('click keyup') // 2. $toolbarElem.on('click') // 3. editor.cmd.do() this.change = function () { // 判断是否有变化 var currentHtml = this.txt.html(); if (currentHtml.length === beforeChangeHtml.length) { // 需要比较每一个字符 if (currentHtml === beforeChangeHtml) { return; } } // 执行,使用节流 if (onChangeTimeoutId) { clearTimeout(onChangeTimeoutId); } onChangeTimeoutId = setTimeout(function () { // 触发配置的 onchange 函数 onchange(currentHtml); beforeChangeHtml = currentHtml; }, onchangeTimeout); }; } // -------- 绑定 onblur 事件 -------- var onblur = config$$1.onblur; if (onblur && typeof onblur === 'function') { this.onblur = function () { var currentHtml = this.txt.html(); onblur(currentHtml); }; } // -------- 绑定 onfocus 事件 -------- var onfocus = config$$1.onfocus; if (onfocus && typeof onfocus === 'function') { this.onfocus = function () { onfocus(); }; } }, // 创建编辑器 create: function create() { // 初始化配置信息 this._initConfig(); // 初始化 DOM this._initDom(); // 封装 command API this._initCommand(); // 封装 selection range API this._initSelectionAPI(); // 添加 text this._initText(); // 初始化菜单 this._initMenus(); // 添加 图片上传 this._initUploadImg(); // 初始化选区,将光标定位到内容尾部 this.initSelection(true); // 绑定事件 this._bindEvent(); }, // 解绑所有事件(暂时不对外开放) _offAllEvent: function _offAllEvent() { $.offAll(); } }; // 检验是否浏览器环境 try { document; } catch (ex) { throw new Error('请在浏览器环境下运行'); } // polyfill polyfill(); // 这里的 `inlinecss` 将被替换成 css 代码的内容,详情可去 ./gulpfile.js 中搜索 `inlinecss` 关键字 var inlinecss = '.w-e-toolbar,.w-e-text-container,.w-e-menu-panel { padding: 0; margin: 0; box-sizing: border-box;}.w-e-toolbar *,.w-e-text-container *,.w-e-menu-panel * { padding: 0; margin: 0; box-sizing: border-box;}.w-e-clear-fix:after { content: ""; display: table; clear: both;}.w-e-toolbar .w-e-droplist { position: absolute; left: 0; top: 0; background-color: #fff; border: 1px solid #f1f1f1; border-right-color: #ccc; border-bottom-color: #ccc;}.w-e-toolbar .w-e-droplist .w-e-dp-title { text-align: center; color: #999; line-height: 2; border-bottom: 1px solid #f1f1f1; font-size: 13px;}.w-e-toolbar .w-e-droplist ul.w-e-list { list-style: none; line-height: 1;}.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item { color: #333; padding: 5px 0;}.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item:hover { background-color: #f1f1f1;}.w-e-toolbar .w-e-droplist ul.w-e-block { list-style: none; text-align: left; padding: 5px;}.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item { display: inline-block; *display: inline; *zoom: 1; padding: 3px 5px;}.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item:hover { background-color: #f1f1f1;}@font-face { font-family: \'w-e-icon\'; src: url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAABXAAAsAAAAAFXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDxIPAmNtYXAAAAFoAAAA9AAAAPRAxxN6Z2FzcAAAAlwAAAAIAAAACAAAABBnbHlmAAACZAAAEHwAABB8kRGt5WhlYWQAABLgAAAANgAAADYN4rlyaGhlYQAAExgAAAAkAAAAJAfEA99obXR4AAATPAAAAHwAAAB8cAcDvGxvY2EAABO4AAAAQAAAAEAx8jYEbWF4cAAAE/gAAAAgAAAAIAAqALZuYW1lAAAUGAAAAYYAAAGGmUoJ+3Bvc3QAABWgAAAAIAAAACAAAwAAAAMD3AGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA8fwDwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEANgAAAAyACAABAASAAEAIOkG6Q3pEulH6Wbpd+m56bvpxunL6d/qDepl6mjqcep58A3wFPEg8dzx/P/9//8AAAAAACDpBukN6RLpR+ll6Xfpuem76cbpy+nf6g3qYupo6nHqd/AN8BTxIPHc8fz//f//AAH/4xb+FvgW9BbAFqMWkxZSFlEWRxZDFjAWAxWvFa0VpRWgEA0QBw78DkEOIgADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAPAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAIAAP/ABAADwAAEABMAAAE3AScBAy4BJxM3ASMBAyUBNQEHAYCAAcBA/kCfFzsyY4ABgMD+gMACgAGA/oBOAUBAAcBA/kD+nTI7FwERTgGA/oD9gMABgMD+gIAABAAAAAAEAAOAABAAIQAtADQAAAE4ATEROAExITgBMRE4ATEhNSEiBhURFBYzITI2NRE0JiMHFAYjIiY1NDYzMhYTITUTATM3A8D8gAOA/IAaJiYaA4AaJiYagDgoKDg4KCg4QP0A4AEAQOADQP0AAwBAJhr9ABomJhoDABom4Cg4OCgoODj9uIABgP7AwAAAAgAAAEAEAANAACgALAAAAS4DIyIOAgcOAxUUHgIXHgMzMj4CNz4DNTQuAicBEQ0BA9U2cXZ5Pz95dnE2Cw8LBgYLDws2cXZ5Pz95dnE2Cw8LBgYLDwv9qwFA/sADIAgMCAQECAwIKVRZWy8vW1lUKQgMCAQECAwIKVRZWy8vW1lUKf3gAYDAwAAAAAACAMD/wANAA8AAEwAfAAABIg4CFRQeAjEwPgI1NC4CAyImNTQ2MzIWFRQGAgBCdVcyZHhkZHhkMld1QlBwcFBQcHADwDJXdUJ4+syCgsz6eEJ1VzL+AHBQUHBwUFBwAAABAAAAAAQAA4AAIQAAASIOAgcnESEnPgEzMh4CFRQOAgcXPgM1NC4CIwIANWRcUiOWAYCQNYtQUItpPBIiMB5VKEAtGFCLu2oDgBUnNyOW/oCQNDw8aYtQK1FJQRpgI1ZibDlqu4tQAAEAAAAABAADgAAgAAATFB4CFzcuAzU0PgIzMhYXByERBy4DIyIOAgAYLUAoVR4wIhI8aYtQUIs1kAGAliNSXGQ1aruLUAGAOWxiViNgGkFJUStQi2k8PDSQAYCWIzcnFVCLuwACAAAAQAQBAwAAHgA9AAATMh4CFRQOAiMiLgI1JzQ+AjMVIgYHDgEHPgEhMh4CFRQOAiMiLgI1JzQ+AjMVIgYHDgEHPgHhLlI9IyM9Ui4uUj0jAUZ6o11AdS0JEAcIEgJJLlI9IyM9Ui4uUj0jAUZ6o11AdS0JEAcIEgIAIz1SLi5SPSMjPVIuIF2jekaAMC4IEwoCASM9Ui4uUj0jIz1SLiBdo3pGgDAuCBMKAgEAAAYAQP/ABAADwAADAAcACwARAB0AKQAAJSEVIREhFSERIRUhJxEjNSM1ExUzFSM1NzUjNTMVFREjNTM1IzUzNSM1AYACgP2AAoD9gAKA/YDAQEBAgMCAgMDAgICAgICAAgCAAgCAwP8AwED98jJAkjwyQJLu/sBAQEBAQAAGAAD/wAQAA8AAAwAHAAsAFwAjAC8AAAEhFSERIRUhESEVIQE0NjMyFhUUBiMiJhE0NjMyFhUUBiMiJhE0NjMyFhUUBiMiJgGAAoD9gAKA/YACgP2A/oBLNTVLSzU1S0s1NUtLNTVLSzU1S0s1NUsDgID/AID/AIADQDVLSzU1S0v+tTVLSzU1S0v+tTVLSzU1S0sAAwAAAAAEAAOgAAMADQAUAAA3IRUhJRUhNRMhFSE1ISUJASMRIxEABAD8AAQA/ACAAQABAAEA/WABIAEg4IBAQMBAQAEAgIDAASD+4P8AAQAAAAAAAgBT/8wDrQO0AC8AXAAAASImJy4BNDY/AT4BMzIWFx4BFAYPAQYiJyY0PwE2NCcuASMiBg8BBhQXFhQHDgEjAyImJy4BNDY/ATYyFxYUDwEGFBceATMyNj8BNjQnJjQ3NjIXHgEUBg8BDgEjAbgKEwgjJCQjwCNZMTFZIyMkJCNYDywPDw9YKSkUMxwcMxTAKSkPDwgTCrgxWSMjJCQjWA8sDw8PWCkpFDMcHDMUwCkpDw8PKxAjJCQjwCNZMQFECAckWl5aJMAiJSUiJFpeWiRXEBAPKw9YKXQpFBUVFMApdCkPKxAHCP6IJSIkWl5aJFcQEA8rD1gpdCkUFRUUwCl0KQ8rEA8PJFpeWiTAIiUAAAAABQAA/8AEAAPAABMAJwA7AEcAUwAABTI+AjU0LgIjIg4CFRQeAhMyHgIVFA4CIyIuAjU0PgITMj4CNw4DIyIuAiceAyc0NjMyFhUUBiMiJiU0NjMyFhUUBiMiJgIAaruLUFCLu2pqu4tQUIu7alaYcUFBcZhWVphxQUFxmFYrVVFMIwU3Vm8/P29WNwUjTFFV1SUbGyUlGxslAYAlGxslJRsbJUBQi7tqaruLUFCLu2pqu4tQA6BBcZhWVphxQUFxmFZWmHFB/gkMFSAUQ3RWMTFWdEMUIBUM9yg4OCgoODgoKDg4KCg4OAAAAAADAAD/wAQAA8AAEwAnADMAAAEiDgIVFB4CMzI+AjU0LgIDIi4CNTQ+AjMyHgIVFA4CEwcnBxcHFzcXNyc3AgBqu4tQUIu7amq7i1BQi7tqVphxQUFxmFZWmHFBQXGYSqCgYKCgYKCgYKCgA8BQi7tqaruLUFCLu2pqu4tQ/GBBcZhWVphxQUFxmFZWmHFBAqCgoGCgoGCgoGCgoAADAMAAAANAA4AAEgAbACQAAAE+ATU0LgIjIREhMj4CNTQmATMyFhUUBisBEyMRMzIWFRQGAsQcIChGXTX+wAGANV1GKET+hGUqPDwpZp+fnyw+PgHbIlQvNV1GKPyAKEZdNUZ0AUZLNTVL/oABAEs1NUsAAAIAwAAAA0ADgAAbAB8AAAEzERQOAiMiLgI1ETMRFBYXHgEzMjY3PgE1ASEVIQLAgDJXdUJCdVcygBsYHEkoKEkcGBv+AAKA/YADgP5gPGlOLS1OaTwBoP5gHjgXGBsbGBc4Hv6ggAAAAQCAAAADgAOAAAsAAAEVIwEzFSE1MwEjNQOAgP7AgP5AgAFAgAOAQP0AQEADAEAAAQAAAAAEAAOAAD0AAAEVIx4BFRQGBw4BIyImJy4BNTMUFjMyNjU0JiMhNSEuAScuATU0Njc+ATMyFhceARUjNCYjIgYVFBYzMhYXBADrFRY1MCxxPj5xLDA1gHJOTnJyTv4AASwCBAEwNTUwLHE+PnEsMDWAck5OcnJOO24rAcBAHUEiNWIkISQkISRiNTRMTDQ0TEABAwEkYjU1YiQhJCQhJGI1NExMNDRMIR8AAAAHAAD/wAQAA8AAAwAHAAsADwATABsAIwAAEzMVIzczFSMlMxUjNzMVIyUzFSMDEyETMxMhEwEDIQMjAyEDAICAwMDAAQCAgMDAwAEAgIAQEP0AECAQAoAQ/UAQAwAQIBD9gBABwEBAQEBAQEBAQAJA/kABwP6AAYD8AAGA/oABQP7AAAAKAAAAAAQAA4AAAwAHAAsADwATABcAGwAfACMAJwAAExEhEQE1IRUdASE1ARUhNSMVITURIRUhJSEVIRE1IRUBIRUhITUhFQAEAP2AAQD/AAEA/wBA/wABAP8AAoABAP8AAQD8gAEA/wACgAEAA4D8gAOA/cDAwEDAwAIAwMDAwP8AwMDAAQDAwP7AwMDAAAAFAAAAAAQAA4AAAwAHAAsADwATAAATIRUhFSEVIREhFSERIRUhESEVIQAEAPwAAoD9gAKA/YAEAPwABAD8AAOAgECA/wCAAUCA/wCAAAAAAAUAAAAABAADgAADAAcACwAPABMAABMhFSEXIRUhESEVIQMhFSERIRUhAAQA/ADAAoD9gAKA/YDABAD8AAQA/AADgIBAgP8AgAFAgP8AgAAABQAAAAAEAAOAAAMABwALAA8AEwAAEyEVIQUhFSERIRUhASEVIREhFSEABAD8AAGAAoD9gAKA/YD+gAQA/AAEAPwAA4CAQID/AIABQID/AIAAAAAAAQA/AD8C5gLmACwAACUUDwEGIyIvAQcGIyIvASY1ND8BJyY1ND8BNjMyHwE3NjMyHwEWFRQPARcWFQLmEE4QFxcQqKgQFxYQThAQqKgQEE4QFhcQqKgQFxcQThAQqKgQwxYQThAQqKgQEE4QFhcQqKgQFxcQThAQqKgQEE4QFxcQqKgQFwAAAAYAAAAAAyUDbgAUACgAPABNAFUAggAAAREUBwYrASInJjURNDc2OwEyFxYVMxEUBwYrASInJjURNDc2OwEyFxYXERQHBisBIicmNRE0NzY7ATIXFhMRIREUFxYXFjMhMjc2NzY1ASEnJicjBgcFFRQHBisBERQHBiMhIicmNREjIicmPQE0NzY7ATc2NzY7ATIXFh8BMzIXFhUBJQYFCCQIBQYGBQgkCAUGkgUFCCUIBQUFBQglCAUFkgUFCCUIBQUFBQglCAUFSf4ABAQFBAIB2wIEBAQE/oABABsEBrUGBAH3BgUINxobJv4lJhsbNwgFBQUFCLEoCBcWF7cXFhYJKLAIBQYCEv63CAUFBQUIAUkIBQYGBQj+twgFBQUFCAFJCAUGBgUI/rcIBQUFBQgBSQgFBgYF/lsCHf3jDQsKBQUFBQoLDQJmQwUCAgVVJAgGBf3jMCIjISIvAiAFBggkCAUFYBUPDw8PFWAFBQgAAgAHAEkDtwKvABoALgAACQEGIyIvASY1ND8BJyY1ND8BNjMyFwEWFRQHARUUBwYjISInJj0BNDc2MyEyFxYBTv72BgcIBR0GBuHhBgYdBQgHBgEKBgYCaQUFCP3bCAUFBQUIAiUIBQUBhf72BgYcBggHBuDhBgcHBh0FBf71BQgHBv77JQgFBQUFCCUIBQUFBQAAAAEAIwAAA90DbgCzAAAlIicmIyIHBiMiJyY1NDc2NzY3Njc2PQE0JyYjISIHBh0BFBcWFxYzFhcWFRQHBiMiJyYjIgcGIyInJjU0NzY3Njc2NzY9ARE0NTQ1NCc0JyYnJicmJyYnJiMiJyY1NDc2MzIXFjMyNzYzMhcWFRQHBiMGBwYHBh0BFBcWMyEyNzY9ATQnJicmJyY1NDc2MzIXFjMyNzYzMhcWFRQHBgciBwYHBhURFBcWFxYXMhcWFRQHBiMDwRkzMhoZMjMZDQgHCQoNDBEQChIBBxX+fhYHARUJEhMODgwLBwcOGzU1GhgxMRgNBwcJCQsMEA8JEgECAQIDBAQFCBIRDQ0KCwcHDho1NRoYMDEYDgcHCQoMDRAQCBQBBw8BkA4HARQKFxcPDgcHDhkzMhkZMTEZDgcHCgoNDRARCBQUCRERDg0KCwcHDgACAgICDAsPEQkJAQEDAwUMROAMBQMDBQzUUQ0GAQIBCAgSDwwNAgICAgwMDhEICQECAwMFDUUhAdACDQ0ICA4OCgoLCwcHAwYBAQgIEg8MDQICAgINDA8RCAgBAgEGDFC2DAcBAQcMtlAMBgEBBgcWDwwNAgICAg0MDxEICAEBAgYNT/3mRAwGAgIBCQgRDwwNAAACAAD/twP/A7cAEwA5AAABMhcWFRQHAgcGIyInJjU0NwE2MwEWFxYfARYHBiMiJyYnJicmNRYXFhcWFxYzMjc2NzY3Njc2NzY3A5soHh4avkw3RUg0NDUBbSEp/fgXJicvAQJMTHtHNjYhIRARBBMUEBASEQkXCA8SExUVHR0eHikDtxsaKCQz/plGNDU0SUkwAUsf/bErHx8NKHpNTBobLi86OkQDDw4LCwoKFiUbGhERCgsEBAIAAQAAAAAAANox8glfDzz1AAsEAAAAAADVYbp/AAAAANVhun8AAP+3BAEDwAAAAAgAAgAAAAAAAAABAAADwP/AAAAEAAAA//8EAQABAAAAAAAAAAAAAAAAAAAAHwQAAAAAAAAAAAAAAAIAAAAEAAAABAAAAAQAAAAEAADABAAAAAQAAAAEAAAABAAAQAQAAAAEAAAABAAAUwQAAAAEAAAABAAAwAQAAMAEAACABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAyUAPwMlAAADvgAHBAAAIwP/AAAAAAAAAAoAFAAeAEwAlADaAQoBPgFwAcgCBgJQAnoDBAN6A8gEAgQ2BE4EpgToBTAFWAWABaoF7gamBvAH4gg+AAEAAAAfALQACgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAHAAAAAQAAAAAAAgAHAGAAAQAAAAAAAwAHADYAAQAAAAAABAAHAHUAAQAAAAAABQALABUAAQAAAAAABgAHAEsAAQAAAAAACgAaAIoAAwABBAkAAQAOAAcAAwABBAkAAgAOAGcAAwABBAkAAwAOAD0AAwABBAkABAAOAHwAAwABBAkABQAWACAAAwABBAkABgAOAFIAAwABBAkACgA0AKRpY29tb29uAGkAYwBvAG0AbwBvAG5WZXJzaW9uIDEuMABWAGUAcgBzAGkAbwBuACAAMQAuADBpY29tb29uAGkAYwBvAG0AbwBvAG5pY29tb29uAGkAYwBvAG0AbwBvAG5SZWd1bGFyAFIAZQBnAHUAbABhAHJpY29tb29uAGkAYwBvAG0AbwBvAG5Gb250IGdlbmVyYXRlZCBieSBJY29Nb29uLgBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format(\'truetype\'); font-weight: normal; font-style: normal;}[class^="w-e-icon-"],[class*=" w-e-icon-"] { /* use !important to prevent issues with browser extensions that change fonts */ font-family: \'w-e-icon\' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}.w-e-icon-close:before { content: "\\f00d";}.w-e-icon-upload2:before { content: "\\e9c6";}.w-e-icon-trash-o:before { content: "\\f014";}.w-e-icon-header:before { content: "\\f1dc";}.w-e-icon-pencil2:before { content: "\\e906";}.w-e-icon-paint-brush:before { content: "\\f1fc";}.w-e-icon-image:before { content: "\\e90d";}.w-e-icon-play:before { content: "\\e912";}.w-e-icon-location:before { content: "\\e947";}.w-e-icon-undo:before { content: "\\e965";}.w-e-icon-redo:before { content: "\\e966";}.w-e-icon-quotes-left:before { content: "\\e977";}.w-e-icon-list-numbered:before { content: "\\e9b9";}.w-e-icon-list2:before { content: "\\e9bb";}.w-e-icon-link:before { content: "\\e9cb";}.w-e-icon-happy:before { content: "\\e9df";}.w-e-icon-bold:before { content: "\\ea62";}.w-e-icon-underline:before { content: "\\ea63";}.w-e-icon-italic:before { content: "\\ea64";}.w-e-icon-strikethrough:before { content: "\\ea65";}.w-e-icon-table2:before { content: "\\ea71";}.w-e-icon-paragraph-left:before { content: "\\ea77";}.w-e-icon-paragraph-center:before { content: "\\ea78";}.w-e-icon-paragraph-right:before { content: "\\ea79";}.w-e-icon-terminal:before { content: "\\f120";}.w-e-icon-page-break:before { content: "\\ea68";}.w-e-icon-cancel-circle:before { content: "\\ea0d";}.w-e-toolbar { display: -webkit-box; display: -ms-flexbox; display: flex; padding: 0 5px; /* flex-wrap: wrap; */ /* 单个菜单 */}.w-e-toolbar .w-e-menu { position: relative; text-align: center; padding: 5px 10px; cursor: pointer;}.w-e-toolbar .w-e-menu i { color: #999;}.w-e-toolbar .w-e-menu:hover i { color: #333;}.w-e-toolbar .w-e-active i { color: #1e88e5;}.w-e-toolbar .w-e-active:hover i { color: #1e88e5;}.w-e-text-container .w-e-panel-container { position: absolute; top: 0; left: 50%; border: 1px solid #ccc; border-top: 0; box-shadow: 1px 1px 2px #ccc; color: #333; background-color: #fff; /* 为 emotion panel 定制的样式 */ /* 上传图片的 panel 定制样式 */}.w-e-text-container .w-e-panel-container .w-e-panel-close { position: absolute; right: 0; top: 0; padding: 5px; margin: 2px 5px 0 0; cursor: pointer; color: #999;}.w-e-text-container .w-e-panel-container .w-e-panel-close:hover { color: #333;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-title { list-style: none; display: -webkit-box; display: -ms-flexbox; display: flex; font-size: 14px; margin: 2px 10px 0 10px; border-bottom: 1px solid #f1f1f1;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-title .w-e-item { padding: 3px 5px; color: #999; cursor: pointer; margin: 0 3px; position: relative; top: 1px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-title .w-e-active { color: #333; border-bottom: 1px solid #333; cursor: default; font-weight: 700;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content { padding: 10px 15px 10px 15px; font-size: 16px; /* 输入框的样式 */ /* 按钮的样式 */}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input:focus,.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea:focus,.w-e-text-container .w-e-panel-container .w-e-panel-tab-content button:focus { outline: none;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea { width: 100%; border: 1px solid #ccc; padding: 5px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content textarea:focus { border-color: #1e88e5;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text] { border: none; border-bottom: 1px solid #ccc; font-size: 14px; height: 20px; color: #333; text-align: left;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text].small { width: 30px; text-align: center;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text].block { display: block; width: 100%; margin: 10px 0;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content input[type=text]:focus { border-bottom: 2px solid #1e88e5;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button { font-size: 14px; color: #1e88e5; border: none; padding: 5px 10px; background-color: #fff; cursor: pointer; border-radius: 3px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.left { float: left; margin-right: 10px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.right { float: right; margin-left: 10px;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.gray { color: #999;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.red { color: #c24f4a;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button:hover { background-color: #f1f1f1;}.w-e-text-container .w-e-panel-container .w-e-panel-tab-content .w-e-button-container:after { content: ""; display: table; clear: both;}.w-e-text-container .w-e-panel-container .w-e-emoticon-container .w-e-item { cursor: pointer; font-size: 18px; padding: 0 3px; display: inline-block; *display: inline; *zoom: 1;}.w-e-text-container .w-e-panel-container .w-e-up-img-container { text-align: center;}.w-e-text-container .w-e-panel-container .w-e-up-img-container .w-e-up-btn { display: inline-block; *display: inline; *zoom: 1; color: #999; cursor: pointer; font-size: 60px; line-height: 1;}.w-e-text-container .w-e-panel-container .w-e-up-img-container .w-e-up-btn:hover { color: #333;}.w-e-text-container { position: relative;}.w-e-text-container .w-e-progress { position: absolute; background-color: #1e88e5; bottom: 0; left: 0; height: 1px;}.w-e-text { padding: 0 10px; overflow-y: scroll;}.w-e-text p,.w-e-text h1,.w-e-text h2,.w-e-text h3,.w-e-text h4,.w-e-text h5,.w-e-text table,.w-e-text pre { margin: 10px 0; line-height: 1.5;}.w-e-text ul,.w-e-text ol { margin: 10px 0 10px 20px;}.w-e-text blockquote { display: block; border-left: 8px solid #d0e5f2; padding: 5px 10px; margin: 10px 0; line-height: 1.4; font-size: 100%; background-color: #f1f1f1;}.w-e-text code { display: inline-block; *display: inline; *zoom: 1; background-color: #f1f1f1; border-radius: 3px; padding: 3px 5px; margin: 0 3px;}.w-e-text pre code { display: block;}.w-e-text table { border-top: 1px solid #ccc; border-left: 1px solid #ccc;}.w-e-text table td,.w-e-text table th { border-bottom: 1px solid #ccc; border-right: 1px solid #ccc; padding: 3px 5px;}.w-e-text table th { border-bottom: 2px solid #ccc; text-align: center;}.w-e-text:focus { outline: none;}.w-e-text img { cursor: pointer;}.w-e-text img:hover { box-shadow: 0 0 5px #333;}'; // 将 css 代码添加到 ",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"|$)",e:">",k:{name:"script"},c:[n],starts:{e:"",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},t,{cN:"meta",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"",c:[{cN:"name",b:/[^\/><\s]+/,r:0},n]}]}}),hljs.registerLanguage("javascript",function(e){return{aliases:["js"],k:{keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield consts export super debugger as async await import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,{cN:"string",b:"`",e:"`",c:[e.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{b:/\s*[);\]]/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:[e.CLCM,e.CBCM]}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+e.IR,r:0},{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}}),hljs.registerLanguage("css",function(e){var r="[a-zA-Z-][a-zA-Z0-9_-]*",t={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\s*\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:r,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,t]}]}}); ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/static/swagger/lib/highlight.9.1.0.pack_extended.js ================================================ "use strict";!function(){var h,l;h=hljs.configure,hljs.configure=function(l){var i=l.highlightSizeThreshold;hljs.highlightSizeThreshold=i===+i?i:null,h.call(this,l)},l=hljs.highlightBlock,hljs.highlightBlock=function(h){var i=h.innerHTML,g=hljs.highlightSizeThreshold;(null==g||g>i.length)&&l.call(hljs,h)}}(); ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/static/swagger/lib/marked.js ================================================ (function(){function e(e){this.tokens=[],this.tokens.links={},this.options=e||a.defaults,this.rules=p.normal,this.options.gfm&&(this.options.tables?this.rules=p.tables:this.rules=p.gfm)}function t(e,t){if(this.options=t||a.defaults,this.links=e,this.rules=u.normal,this.renderer=this.options.renderer||new n,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.gfm?this.options.breaks?this.rules=u.breaks:this.rules=u.gfm:this.options.pedantic&&(this.rules=u.pedantic)}function n(e){this.options=e||{}}function r(e){this.tokens=[],this.token=null,this.options=e||a.defaults,this.options.renderer=this.options.renderer||new n,this.renderer=this.options.renderer,this.renderer.options=this.options}function s(e,t){return e.replace(t?/&/g:/&(?!#?\w+;)/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function i(e){return e.replace(/&([#\w]+);/g,function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function l(e,t){return e=e.source,t=t||"",function n(r,s){return r?(s=s.source||s,s=s.replace(/(^|[^\[])\^/g,"$1"),e=e.replace(r,s),n):new RegExp(e,t)}}function o(){}function h(e){for(var t,n,r=1;rAn error occured:

                "+s(c.message+"",!0)+"
                ";throw c}}var p={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:o,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:o,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:o,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};p.bullet=/(?:[*+-]|\d+\.)/,p.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,p.item=l(p.item,"gm")(/bull/g,p.bullet)(),p.list=l(p.list)(/bull/g,p.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+p.def.source+")")(),p.blockquote=l(p.blockquote)("def",p.def)(),p._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",p.html=l(p.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,p._tag)(),p.paragraph=l(p.paragraph)("hr",p.hr)("heading",p.heading)("lheading",p.lheading)("blockquote",p.blockquote)("tag","<"+p._tag)("def",p.def)(),p.normal=h({},p),p.gfm=h({},p.normal,{fences:/^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/,paragraph:/^/}),p.gfm.paragraph=l(p.paragraph)("(?!","(?!"+p.gfm.fences.source.replace("\\1","\\2")+"|"+p.list.source.replace("\\1","\\3")+"|")(),p.tables=h({},p.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),e.rules=p,e.lex=function(t,n){var r=new e(n);return r.lex(t)},e.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},e.prototype.token=function(e,t,n){for(var r,s,i,l,o,h,a,u,c,e=e.replace(/^ +$/gm,"");e;)if((i=this.rules.newline.exec(e))&&(e=e.substring(i[0].length),i[0].length>1&&this.tokens.push({type:"space"})),i=this.rules.code.exec(e))e=e.substring(i[0].length),i=i[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?i:i.replace(/\n+$/,"")});else if(i=this.rules.fences.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"code",lang:i[2],text:i[3]});else if(i=this.rules.heading.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"heading",depth:i[1].length,text:i[2]});else if(t&&(i=this.rules.nptable.exec(e))){for(e=e.substring(i[0].length),h={type:"table",header:i[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3].replace(/\n$/,"").split("\n")},u=0;u ?/gm,""),this.token(i,t,!0),this.tokens.push({type:"blockquote_end"});else if(i=this.rules.list.exec(e)){for(e=e.substring(i[0].length),l=i[2],this.tokens.push({type:"list_start",ordered:l.length>1}),i=i[0].match(this.rules.item),r=!1,c=i.length,u=0;u1&&o.length>1||(e=i.slice(u+1).join("\n")+e,u=c-1)),s=r||/\n\n(?!\s*$)/.test(h),u!==c-1&&(r="\n"===h.charAt(h.length-1),s||(s=r)),this.tokens.push({type:s?"loose_item_start":"list_item_start"}),this.token(h,!1,n),this.tokens.push({type:"list_item_end"});this.tokens.push({type:"list_end"})}else if(i=this.rules.html.exec(e))e=e.substring(i[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:"pre"===i[1]||"script"===i[1]||"style"===i[1],text:i[0]});else if(!n&&t&&(i=this.rules.def.exec(e)))e=e.substring(i[0].length),this.tokens.links[i[1].toLowerCase()]={href:i[2],title:i[3]};else if(t&&(i=this.rules.table.exec(e))){for(e=e.substring(i[0].length),h={type:"table",header:i[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3].replace(/(?: *\| *)?\n$/,"").split("\n")},u=0;u])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:o,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:o,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/,u.link=l(u.link)("inside",u._inside)("href",u._href)(),u.reflink=l(u.reflink)("inside",u._inside)(),u.normal=h({},u),u.pedantic=h({},u.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),u.gfm=h({},u.normal,{escape:l(u.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:l(u.text)("]|","~]|")("|","|https?://|")()}),u.breaks=h({},u.gfm,{br:l(u.br)("{2,}","*")(),text:l(u.gfm.text)("{2,}","*")()}),t.rules=u,t.output=function(e,n,r){var s=new t(n,r);return s.output(e)},t.prototype.output=function(e){for(var t,n,r,i,l="";e;)if(i=this.rules.escape.exec(e))e=e.substring(i[0].length),l+=i[1];else if(i=this.rules.autolink.exec(e))e=e.substring(i[0].length),"@"===i[2]?(n=":"===i[1].charAt(6)?this.mangle(i[1].substring(7)):this.mangle(i[1]),r=this.mangle("mailto:")+n):(n=s(i[1]),r=n),l+=this.renderer.link(r,null,n);else if(this.inLink||!(i=this.rules.url.exec(e))){if(i=this.rules.tag.exec(e))!this.inLink&&/^/i.test(i[0])&&(this.inLink=!1),e=e.substring(i[0].length),l+=this.options.sanitize?s(i[0]):i[0];else if(i=this.rules.link.exec(e))e=e.substring(i[0].length),this.inLink=!0,l+=this.outputLink(i,{href:i[2],title:i[3]}),this.inLink=!1;else if((i=this.rules.reflink.exec(e))||(i=this.rules.nolink.exec(e))){if(e=e.substring(i[0].length),t=(i[2]||i[1]).replace(/\s+/g," "),t=this.links[t.toLowerCase()],!t||!t.href){l+=i[0].charAt(0),e=i[0].substring(1)+e;continue}this.inLink=!0,l+=this.outputLink(i,t),this.inLink=!1}else if(i=this.rules.strong.exec(e))e=e.substring(i[0].length),l+=this.renderer.strong(this.output(i[2]||i[1]));else if(i=this.rules.em.exec(e))e=e.substring(i[0].length),l+=this.renderer.em(this.output(i[2]||i[1]));else if(i=this.rules.code.exec(e))e=e.substring(i[0].length),l+=this.renderer.codespan(s(i[2],!0));else if(i=this.rules.br.exec(e))e=e.substring(i[0].length),l+=this.renderer.br();else if(i=this.rules.del.exec(e))e=e.substring(i[0].length),l+=this.renderer.del(this.output(i[1]));else if(i=this.rules.text.exec(e))e=e.substring(i[0].length),l+=s(this.smartypants(i[0]));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else e=e.substring(i[0].length),n=s(i[1]),r=n,l+=this.renderer.link(r,null,n);return l},t.prototype.outputLink=function(e,t){var n=s(t.href),r=t.title?s(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,s(e[1]))},t.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/--/g,"—").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},t.prototype.mangle=function(e){for(var t,n="",r=e.length,s=0;s.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},n.prototype.code=function(e,t,n){if(this.options.highlight){var r=this.options.highlight(e,t);null!=r&&r!==e&&(n=!0,e=r)}return t?'
                '+(n?e:s(e,!0))+"\n
                \n":"
                "+(n?e:s(e,!0))+"\n
                "},n.prototype.blockquote=function(e){return"
                \n"+e+"
                \n"},n.prototype.html=function(e){return e},n.prototype.heading=function(e,t,n){return"'+e+"\n"},n.prototype.hr=function(){return this.options.xhtml?"
                \n":"
                \n"},n.prototype.list=function(e,t){var n=t?"ol":"ul";return"<"+n+">\n"+e+"\n"},n.prototype.listitem=function(e){return"
              • "+e+"
              • \n"},n.prototype.paragraph=function(e){return"

                "+e+"

                \n"},n.prototype.table=function(e,t){return"\n\n"+e+"\n\n"+t+"\n
                \n"},n.prototype.tablerow=function(e){return"\n"+e+"\n"},n.prototype.tablecell=function(e,t){var n=t.header?"th":"td",r=t.align?"<"+n+' style="text-align:'+t.align+'">':"<"+n+">";return r+e+"\n"},n.prototype.strong=function(e){return""+e+""},n.prototype.em=function(e){return""+e+""},n.prototype.codespan=function(e){return""+e+""},n.prototype.br=function(){return this.options.xhtml?"
                ":"
                "},n.prototype.del=function(e){return""+e+""},n.prototype.link=function(e,t,n){if(this.options.sanitize){try{var r=decodeURIComponent(i(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(s){return""}if(0===r.indexOf("javascript:"))return""}var l='
                "},n.prototype.image=function(e,t,n){var r=''+n+'":">"},r.parse=function(e,t,n){var s=new r(t,n);return s.parse(e)},r.prototype.parse=function(e){this.inline=new t(e.links,this.options,this.renderer),this.tokens=e.reverse();for(var n="";this.next();)n+=this.tok();return n},r.prototype.next=function(){return this.token=this.tokens.pop()},r.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},r.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},r.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,s,i="",l="";for(n="",e=0;e','
                Select OAuth2.0 Scopes
                ','
                ',"

                Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.",'Learn how to use',"

                ","

                "+appName+" API requires the following scopes. Select which ones you want to grant to Swagger UI.

                ",'
                  ',"
                ",'

                ','
                ',"
                ","
              "].join("")),$(document.body).append(popupDialog),popup=popupDialog.find("ul.api-popup-scopes").empty(),p=0;p",popup.append(str);var r=$(window),s=r.width(),c=r.height(),l=r.scrollTop(),d=popupDialog.outerWidth(),u=popupDialog.outerHeight(),h=(c-u)/2+l,g=(s-d)/2;popupDialog.css({top:(h<0?0:h)+"px",left:(g<0?0:g)+"px"}),popupDialog.find("button.api-popup-cancel").click(function(){popupMask.hide(),popupDialog.hide(),popupDialog.empty(),popupDialog=[]}),$("button.api-popup-authbtn").unbind(),popupDialog.find("button.api-popup-authbtn").click(function(){function e(e){return e.vendorExtensions["x-tokenName"]||e.tokenName}popupMask.hide(),popupDialog.hide();var o,i=window.swaggerUi.api.authSchemes,n=window.location,a=location.pathname.substring(0,location.pathname.lastIndexOf("/")),t=n.protocol+"//"+n.host+a+"/o2c.html",p=window.oAuthRedirectUrl||t,r=null,s=[],c=popup.find("input:checked"),l=[];for(k=0;k0?void log("auth unable initialize oauth: "+i):($("pre code").each(function(e,o){hljs.highlightBlock(o)}),$(".api-ic").unbind(),void $(".api-ic").click(function(e){$(e.target).hasClass("ic-off")?handleLogin():handleLogout()}))}function clientCredentialsFlow(e,o,i){var n={client_id:clientId,client_secret:clientSecret,scope:e.join(" "),grant_type:"client_credentials"};$.ajax({url:o,type:"POST",data:n,success:function(e,o,n){onOAuthComplete(e,i)},error:function(e,o,i){onOAuthComplete("")}})}var appName,popupMask,popupDialog,clientId,realm,redirect_uri,clientSecret,scopeSeparator,additionalQueryStringParams;window.processOAuthCode=function(e){var o=e.state,i=window.location,n=location.pathname.substring(0,location.pathname.lastIndexOf("/")),a=i.protocol+"//"+i.host+n+"/o2c.html",t=window.oAuthRedirectUrl||a,p={client_id:clientId,code:e.code,grant_type:"authorization_code",redirect_uri:t};clientSecret&&(p.client_secret=clientSecret),$.ajax({url:window.swaggerUiAuth.tokenUrl,type:"POST",data:p,success:function(e,i,n){onOAuthComplete(e,o)},error:function(e,o,i){onOAuthComplete("")}})},window.onOAuthComplete=function(e,o){if(e)if(e.error){var i=$("input[type=checkbox],.secured");i.each(function(e){i[e].checked=!1}),alert(e.error)}else{var n=e[window.swaggerUiAuth.tokenName];if(o||(o=e.state),n){var a=null;$.each($(".auth .api-ic .api_information_panel"),function(e,o){var i=o;if(i&&i.childNodes){var n=[];$.each(i.childNodes,function(e,o){var i=o.innerHTML;i&&n.push(i)});for(var t=[],p=0;p0?(a=o.parentNode.parentNode,$(a.parentNode).find(".api-ic.ic-on").addClass("ic-off"),$(a.parentNode).find(".api-ic.ic-on").removeClass("ic-on"),$(a).find(".api-ic").addClass("ic-warning"),$(a).find(".api-ic").removeClass("ic-error")):(a=o.parentNode.parentNode,$(a.parentNode).find(".api-ic.ic-off").addClass("ic-on"),$(a.parentNode).find(".api-ic.ic-off").removeClass("ic-off"),$(a).find(".api-ic").addClass("ic-info"),$(a).find(".api-ic").removeClass("ic-warning"),$(a).find(".api-ic").removeClass("ic-error"))}}),"undefined"!=typeof window.swaggerUi&&(window.swaggerUi.api.clientAuthorizations.add(window.swaggerUiAuth.OAuthSchemeKey,new SwaggerClient.ApiKeyAuthorization("Authorization","Bearer "+n,"header")),window.swaggerUi.load())}}}; ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/static/swagger/o2c.html ================================================ ================================================ FILE: ymall-web-admin/src/main/webapp/static/assets/static/swagger/swagger-ui.js ================================================ /** * swagger-ui - Swagger UI is a dependency-free collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API * @version v2.2.10 * @link http://swagger.io * @license Apache-2.0 */ (function(){/* jshint ignore:start */ {(function() { var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {}; templates['apikey_auth'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1; return " " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || helpers.helperMissing).call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.value : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "\n"; },"3":function(container,depth0,helpers,partials,data) { return " \n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "
              \n

              Api key authorization

              \n
              " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,(depth0 != null ? depth0.description : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "
              \n
              \n
              \n name:\n " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.name : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n
              \n
              \n in:\n " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0["in"] : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n
              \n
              \n value:\n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isLogout : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(3, data, 0),"data":data})) != null ? stack1 : "") + "
              \n
              \n
              \n"; },"useData":true}); templates['auth_button'] = template({"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { return "Authorize\n"; },"useData":true}); templates['auth_button_operation'] = template({"1":function(container,depth0,helpers,partials,data) { return " authorize__btn_operation_login\n"; },"3":function(container,depth0,helpers,partials,data) { return " authorize__btn_operation_logout\n"; },"5":function(container,depth0,helpers,partials,data) { var stack1; return "
                \n" + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.scopes : depth0),{"name":"each","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "
              \n"; },"6":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "
            • " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.scope : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "
            • \n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}; return "
              \n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.scopes : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "
              \n"; },"useData":true}); templates['auth_view'] = template({"1":function(container,depth0,helpers,partials,data) { return " \n"; },"3":function(container,depth0,helpers,partials,data) { return " \n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}; return "
              \n\n
              \n
              \n" + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.isLogout : depth0),{"name":"unless","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isAuthorized : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "
              \n\n
              \n"; },"useData":true}); templates['basic_auth'] = template({"1":function(container,depth0,helpers,partials,data) { return " - authorized"; },"3":function(container,depth0,helpers,partials,data) { var stack1; return " " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || helpers.helperMissing).call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.username : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n"; },"5":function(container,depth0,helpers,partials,data) { return " \n"; },"7":function(container,depth0,helpers,partials,data) { return "
              \n password:\n \n
              \n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}; return "
              \n

              Basic authentication" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isLogout : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "

              \n
              \n
              " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || helpers.helperMissing).call(alias1,(depth0 != null ? depth0.description : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "
              \n
              \n username:\n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isLogout : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.program(5, data, 0),"data":data})) != null ? stack1 : "") + "
              \n" + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.isLogout : depth0),{"name":"unless","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "
              \n
              \n"; },"useData":true}); templates['content_type'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1; return ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.produces : depth0),{"name":"each","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : ""); },"2":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return " \n"; },"4":function(container,depth0,helpers,partials,data) { return " \n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "\n\n"; },"useData":true}); templates['main'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "
              " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.title : stack1),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "
              \n
              " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.description : stack1),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "
              \n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.externalDocs : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + " " + ((stack1 = helpers["if"].call(alias1,((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.termsOfServiceUrl : stack1),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "\n " + ((stack1 = helpers["if"].call(alias1,((stack1 = ((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.contact : stack1)) != null ? stack1.name : stack1),{"name":"if","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "\n " + ((stack1 = helpers["if"].call(alias1,((stack1 = ((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.contact : stack1)) != null ? stack1.url : stack1),{"name":"if","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "\n " + ((stack1 = helpers["if"].call(alias1,((stack1 = ((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.contact : stack1)) != null ? stack1.email : stack1),{"name":"if","hash":{},"fn":container.program(10, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "\n " + ((stack1 = helpers["if"].call(alias1,((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.license : stack1),{"name":"if","hash":{},"fn":container.program(12, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "\n"; },"2":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "

              " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,((stack1 = (depth0 != null ? depth0.externalDocs : depth0)) != null ? stack1.description : stack1),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "

              \n " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,((stack1 = (depth0 != null ? depth0.externalDocs : depth0)) != null ? stack1.url : stack1),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n"; },"4":function(container,depth0,helpers,partials,data) { var stack1; return ""; },"6":function(container,depth0,helpers,partials,data) { var stack1; return "
              Created by
              " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || helpers.helperMissing).call(depth0 != null ? depth0 : {},((stack1 = ((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.contact : stack1)) != null ? stack1.name : stack1),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "
              "; },"8":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return ""; },"10":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return ""; },"12":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return ""; },"14":function(container,depth0,helpers,partials,data) { var stack1; return " , api version: " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || helpers.helperMissing).call(depth0 != null ? depth0 : {},((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.version : stack1),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n "; },"16":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return " \n \n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}; return "
              \n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.info : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "
              \n
              \n
              \n\n
                \n\n
                \n

                [ base url: " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || helpers.helperMissing).call(alias1,(depth0 != null ? depth0.basePath : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n" + ((stack1 = helpers["if"].call(alias1,((stack1 = (depth0 != null ? depth0.info : depth0)) != null ? stack1.version : stack1),{"name":"if","hash":{},"fn":container.program(14, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "]\n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.validatorUrl : depth0),{"name":"if","hash":{},"fn":container.program(16, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "

                \n
                \n
                \n"; },"useData":true}); templates['oauth2'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1; return "

                Authorization URL: " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || helpers.helperMissing).call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.authorizationUrl : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "

                "; },"3":function(container,depth0,helpers,partials,data) { var stack1; return "

                Token URL: " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || helpers.helperMissing).call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.tokenUrl : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "

                "; },"5":function(container,depth0,helpers,partials,data) { return "

                Please input username and password for password flow authorization

                \n
                \n
                \n
                \n
                \n"; },"7":function(container,depth0,helpers,partials,data) { var stack1; return "

                Setup client authentication." + ((stack1 = helpers["if"].call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.requireClientAuthenticaiton : depth0),{"name":"if","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "

                \n
                \n
                \n \n
                \n"; },"8":function(container,depth0,helpers,partials,data) { return "(Required)"; },"10":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "
              • \n \n
                \n " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.description : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.OAuthSchemeKey : depth0),{"name":"if","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + " \n
              • \n"; },"11":function(container,depth0,helpers,partials,data) { var stack1; return " (" + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || helpers.helperMissing).call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.OAuthSchemeKey : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + ")\n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "
                \n

                OAuth2.0

                \n

                " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,(depth0 != null ? depth0.description : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "

                \n " + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.authorizationUrl : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "\n " + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.tokenUrl : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "\n

                flow: " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.flow : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "

                \n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isPasswordFlow : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.clientAuthentication : depth0),{"name":"if","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "

                " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.appName : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + " API requires the following scopes. Select which ones you want to grant to Swagger UI.

                \n

                Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.\n Learn how to use\n

                \n
                  \n" + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.scopes : depth0),{"name":"each","hash":{},"fn":container.program(10, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "
                \n
                "; },"useData":true}); templates['operation'] = template({"1":function(container,depth0,helpers,partials,data) { return "deprecated"; },"3":function(container,depth0,helpers,partials,data) { return "

                Warning: Deprecated

                \n"; },"5":function(container,depth0,helpers,partials,data) { var stack1; return "

                Implementation Notes

                \n
                " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || helpers.helperMissing).call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.description : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "
                \n"; },"7":function(container,depth0,helpers,partials,data) { return "
                \n"; },"9":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}; return "
                \n

                Response Class (Status " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || helpers.helperMissing).call(alias1,(depth0 != null ? depth0.successCode : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + ")

                \n " + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.successDescription : depth0),{"name":"if","hash":{},"fn":container.program(10, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "\n

                \n
                \n
                \n
                \n"; },"10":function(container,depth0,helpers,partials,data) { var stack1; return "
                " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || helpers.helperMissing).call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.successDescription : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "
                "; },"12":function(container,depth0,helpers,partials,data) { var stack1; return "

                Headers

                \n \n \n \n \n \n \n \n \n \n \n" + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.headers : depth0),{"name":"each","hash":{},"fn":container.program(13, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + " \n
                HeaderDescriptionTypeOther
                \n"; },"13":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return " \n " + container.escapeExpression(((helper = (helper = helpers.key || (data && data.key)) != null ? helper : alias2),(typeof helper === "function" ? helper.call(alias1,{"name":"key","hash":{},"data":data}) : helper))) + "\n " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,(depth0 != null ? depth0.description : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "\n " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.type : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.other : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n \n"; },"15":function(container,depth0,helpers,partials,data) { return "

                Parameters

                \n \n \n \n \n \n \n \n \n \n \n \n\n \n
                ParameterValueDescriptionParameter TypeData Type
                \n"; },"17":function(container,depth0,helpers,partials,data) { return "
                \n

                Response Messages

                \n \n \n \n \n \n \n \n \n \n \n \n
                HTTP Status CodeReasonResponse ModelHeaders
                \n"; },"19":function(container,depth0,helpers,partials,data) { return ""; },"21":function(container,depth0,helpers,partials,data) { return "
                \n \n \n \n
                \n"; },"23":function(container,depth0,helpers,partials,data) { return "

                Request Headers

                \n
                \n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3=container.escapeExpression; return " \n"; },"useData":true}); templates['param'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1; return ((stack1 = helpers["if"].call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.isFile : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.program(4, data, 0),"data":data})) != null ? stack1 : ""); },"2":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return " \n
                \n"; },"4":function(container,depth0,helpers,partials,data) { var stack1; return ((stack1 = helpers["if"].call(depth0 != null ? depth0 : {},(depth0 != null ? depth0["default"] : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.program(7, data, 0),"data":data})) != null ? stack1 : ""); },"5":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "
                \n \n
                \n
                \n"; },"7":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return " \n
                \n
                \n
                \n"; },"9":function(container,depth0,helpers,partials,data) { var stack1; return ((stack1 = helpers["if"].call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.isFile : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.program(10, data, 0),"data":data})) != null ? stack1 : ""); },"10":function(container,depth0,helpers,partials,data) { var stack1; return ((stack1 = (helpers.renderTextParam || (depth0 && depth0.renderTextParam) || helpers.helperMissing).call(depth0 != null ? depth0 : {},depth0,{"name":"renderTextParam","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : ""); },"11":function(container,depth0,helpers,partials,data) { return ""; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "\n\n\n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isBody : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(9, data, 0),"data":data})) != null ? stack1 : "") + "\n\n" + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,(depth0 != null ? depth0.description : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "\n" + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.paramType : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n\n \n\n"; },"useData":true}); templates['param_list'] = template({"1":function(container,depth0,helpers,partials,data) { return " required"; },"3":function(container,depth0,helpers,partials,data) { return " multiple=\"multiple\""; },"5":function(container,depth0,helpers,partials,data) { return " required "; },"7":function(container,depth0,helpers,partials,data) { var stack1; return " \n"; },"8":function(container,depth0,helpers,partials,data) { return " selected=\"\" "; },"10":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "\n \n\n"; },"11":function(container,depth0,helpers,partials,data) { return " selected=\"\" "; },"13":function(container,depth0,helpers,partials,data) { return " (default) "; },"15":function(container,depth0,helpers,partials,data) { return ""; },"17":function(container,depth0,helpers,partials,data) { return ""; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "\n\n \n\n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.required : depth0),{"name":"if","hash":{},"fn":container.program(15, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + ((stack1 = ((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : alias2),(typeof helper === "function" ? helper.call(alias1,{"name":"description","hash":{},"data":data}) : helper))) != null ? stack1 : "") + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.required : depth0),{"name":"if","hash":{},"fn":container.program(17, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "\n" + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.paramType : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n\n"; },"useData":true}); templates['param_readonly'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return " \n
                \n"; },"3":function(container,depth0,helpers,partials,data) { var stack1; return ((stack1 = helpers["if"].call(depth0 != null ? depth0 : {},(depth0 != null ? depth0["default"] : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.program(6, data, 0),"data":data})) != null ? stack1 : ""); },"4":function(container,depth0,helpers,partials,data) { var stack1; return " " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || helpers.helperMissing).call(depth0 != null ? depth0 : {},(depth0 != null ? depth0["default"] : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "\n"; },"6":function(container,depth0,helpers,partials,data) { return " (empty)\n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "\n\n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isBody : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(3, data, 0),"data":data})) != null ? stack1 : "") + "\n" + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,(depth0 != null ? depth0.description : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "\n" + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.paramType : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n\n"; },"useData":true}); templates['param_readonly_required'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return " \n"; },"3":function(container,depth0,helpers,partials,data) { var stack1; return ((stack1 = helpers["if"].call(depth0 != null ? depth0 : {},(depth0 != null ? depth0["default"] : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.program(6, data, 0),"data":data})) != null ? stack1 : ""); },"4":function(container,depth0,helpers,partials,data) { var stack1; return " " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || helpers.helperMissing).call(depth0 != null ? depth0 : {},(depth0 != null ? depth0["default"] : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "\n"; },"6":function(container,depth0,helpers,partials,data) { return " (empty)\n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "\n\n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isBody : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(3, data, 0),"data":data})) != null ? stack1 : "") + "\n" + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,(depth0 != null ? depth0.description : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "\n" + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.paramType : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n\n"; },"useData":true}); templates['param_required'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1; return ((stack1 = helpers["if"].call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.isFile : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.program(4, data, 0),"data":data})) != null ? stack1 : ""); },"2":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return " \n"; },"4":function(container,depth0,helpers,partials,data) { var stack1; return ((stack1 = helpers["if"].call(depth0 != null ? depth0 : {},(depth0 != null ? depth0["default"] : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.program(7, data, 0),"data":data})) != null ? stack1 : ""); },"5":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "
                \n \n
                \n
                \n"; },"7":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return " \n
                \n
                \n
                \n"; },"9":function(container,depth0,helpers,partials,data) { var stack1; return ((stack1 = helpers["if"].call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.isFile : depth0),{"name":"if","hash":{},"fn":container.program(10, data, 0),"inverse":container.program(12, data, 0),"data":data})) != null ? stack1 : ""); },"10":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return " \n"; },"12":function(container,depth0,helpers,partials,data) { var stack1; return ((stack1 = (helpers.renderTextParam || (depth0 && depth0.renderTextParam) || helpers.helperMissing).call(depth0 != null ? depth0 : {},depth0,{"name":"renderTextParam","hash":{},"fn":container.program(13, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : ""); },"13":function(container,depth0,helpers,partials,data) { return ""; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "\n\n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isBody : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(9, data, 0),"data":data})) != null ? stack1 : "") + "\n\n " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,(depth0 != null ? depth0.description : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "\n\n" + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.paramType : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n\n"; },"useData":true}); templates['parameter_content_type'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1; return ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.consumes : depth0),{"name":"each","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : ""); },"2":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return " \n"; },"4":function(container,depth0,helpers,partials,data) { return " \n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "\n\n"; },"useData":true}); templates['popup'] = template({"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var helper; return "
                \n
                " + container.escapeExpression(((helper = (helper = helpers.title || (depth0 != null ? depth0.title : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : {},{"name":"title","hash":{},"data":data}) : helper))) + "
                \n
                \n

                \n
                \n \n
                \n
                \n
                "; },"useData":true}); templates['resource'] = template({"1":function(container,depth0,helpers,partials,data) { return " : "; },"3":function(container,depth0,helpers,partials,data) { var stack1; return "
              • \n Raw\n
              • \n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, helper, options, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, buffer = "
                \n

                \n " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,(depth0 != null ? depth0.name : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + " "; stack1 = ((helper = (helper = helpers.summary || (depth0 != null ? depth0.summary : depth0)) != null ? helper : alias2),(options={"name":"summary","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data}),(typeof helper === "function" ? helper.call(alias1,options) : helper)); if (!helpers.summary) { stack1 = helpers.blockHelperMissing.call(depth0,stack1,options)} if (stack1 != null) { buffer += stack1; } return buffer + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,(depth0 != null ? depth0.summary : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "\n

                \n
                  \n
                • \n Show/Hide\n
                • \n
                • \n \n List Operations\n \n
                • \n
                • \n \n Expand Operations\n \n
                • \n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.url : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "
                \n
                \n\n"; },"useData":true}); templates['response_content_type'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1; return ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.produces : depth0),{"name":"each","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : ""); },"2":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return " \n"; },"4":function(container,depth0,helpers,partials,data) { return " \n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; return "\n\n"; },"useData":true}); templates['signature'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}; return "\n
                \n\n
                \n\n
                \n
                \n " + container.escapeExpression((helpers.sanitize || (depth0 && depth0.sanitize) || helpers.helperMissing).call(alias1,(depth0 != null ? depth0.signature : depth0),{"name":"sanitize","hash":{},"data":data})) + "\n
                \n\n
                \n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.sampleJSON : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.sampleXML : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "
                \n
                \n"; },"2":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}; return "
                \n
                "
                    + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || helpers.helperMissing).call(alias1,(depth0 != null ? depth0.sampleJSON : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "")
                    + "
                \n " + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isParam : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "\n
                \n"; },"3":function(container,depth0,helpers,partials,data) { return ""; },"5":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}; return "
                \n
                "
                    + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || helpers.helperMissing).call(alias1,(depth0 != null ? depth0.sampleXML : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "")
                    + "
                \n " + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isParam : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "\n
                \n"; },"7":function(container,depth0,helpers,partials,data) { var stack1; return " " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || helpers.helperMissing).call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.signature : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1; return ((stack1 = (helpers.ifCond || (depth0 && depth0.ifCond) || helpers.helperMissing).call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.sampleJSON : depth0),"||",(depth0 != null ? depth0.sampleXML : depth0),{"name":"ifCond","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(7, data, 0),"data":data})) != null ? stack1 : ""); },"useData":true}); templates['status_code'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return " \n " + container.escapeExpression(((helper = (helper = helpers.key || (data && data.key)) != null ? helper : alias2),(typeof helper === "function" ? helper.call(alias1,{"name":"key","hash":{},"data":data}) : helper))) + "\n " + ((stack1 = (helpers.sanitize || (depth0 && depth0.sanitize) || alias2).call(alias1,(depth0 != null ? depth0.description : depth0),{"name":"sanitize","hash":{},"data":data})) != null ? stack1 : "") + "\n " + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.type : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n \n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing; return "" + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.code : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n" + ((stack1 = (helpers.escape || (depth0 && depth0.escape) || alias2).call(alias1,(depth0 != null ? depth0.message : depth0),{"name":"escape","hash":{},"data":data})) != null ? stack1 : "") + "\n\n\n \n \n" + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.headers : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + " \n
                \n"; },"useData":true}); })();} /* jshint ignore:end */ 'use strict'; $(function() { // Helper function for vertically aligning DOM elements // http://www.seodenver.com/simple-vertical-align-plugin-for-jquery/ $.fn.vAlign = function() { return this.each(function(){ var ah = $(this).height(); var ph = $(this).parent().height(); var mh = (ph - ah) / 2; $(this).css('margin-top', mh); }); }; $.fn.stretchFormtasticInputWidthToParent = function() { return this.each(function(){ var p_width = $(this).closest("form").innerWidth(); var p_padding = parseInt($(this).closest("form").css('padding-left') ,10) + parseInt($(this).closest('form').css('padding-right'), 10); var this_padding = parseInt($(this).css('padding-left'), 10) + parseInt($(this).css('padding-right'), 10); $(this).css('width', p_width - p_padding - this_padding); }); }; $('form.formtastic li.string input, form.formtastic textarea').stretchFormtasticInputWidthToParent(); // Vertically center these paragraphs // Parent may need a min-height for this to work.. $('ul.downplayed li div.content p').vAlign(); // When a sandbox form is submitted.. $("form.sandbox").submit(function(){ var error_free = true; // Cycle through the forms required inputs $(this).find("input.required").each(function() { // Remove any existing error styles from the input $(this).removeClass('error'); // Tack the error style on if the input is empty.. if ($(this).val() === '') { $(this).addClass('error'); $(this).wiggle(); error_free = false; } }); return error_free; }); }); function clippyCopiedCallback() { $('#api_key_copied').fadeIn().delay(1000).fadeOut(); // var b = $("#clippy_tooltip_" + a); // b.length != 0 && (b.attr("title", "copied!").trigger("tipsy.reload"), setTimeout(function() { // b.attr("title", "copy to clipboard") // }, // 500)) } // Logging function that accounts for browsers that don't have window.console function log(){ log.history = log.history || []; log.history.push(arguments); if(this.console){ console.log( Array.prototype.slice.call(arguments)[0] ); } } // Handle browsers that do console incorrectly (IE9 and below, see http://stackoverflow.com/a/5539378/7913) if (Function.prototype.bind && console && typeof console.log === "object") { [ "log","info","warn","error","assert","dir","clear","profile","profileEnd" ].forEach(function (method) { console[method] = this.bind(console[method], console); }, Function.prototype.call); } window.Docs = { shebang: function() { // If shebang has an operation nickname in it.. // e.g. /docs/#!/words/get_search var fragments = $.param.fragment().split('/'); fragments.shift(); // get rid of the bang switch (fragments.length) { case 1: if (fragments[0].length > 0) { // prevent matching "#/" // Expand all operations for the resource and scroll to it var dom_id = 'resource_' + fragments[0]; Docs.expandEndpointListForResource(fragments[0]); $("#"+dom_id).slideto({highlight: false}); } break; case 2: // Refer to the endpoint DOM element, e.g. #words_get_search // Expand Resource Docs.expandEndpointListForResource(fragments[0]); $("#"+dom_id).slideto({highlight: false}); // Expand operation var li_dom_id = fragments.join('_'); var li_content_dom_id = li_dom_id + "_content"; Docs.expandOperation($('#'+li_content_dom_id)); $('#'+li_dom_id).slideto({highlight: false}); break; } }, toggleEndpointListForResource: function(resource) { var elem = $('li#resource_' + Docs.escapeResourceName(resource) + ' ul.endpoints'); if (elem.is(':visible')) { $.bbq.pushState('#/', 2); Docs.collapseEndpointListForResource(resource); } else { $.bbq.pushState('#/' + resource, 2); Docs.expandEndpointListForResource(resource); } }, // Expand resource expandEndpointListForResource: function(resource) { var resource = Docs.escapeResourceName(resource); if (resource == '') { $('.resource ul.endpoints').slideDown(); return; } $('li#resource_' + resource).addClass('active'); var elem = $('li#resource_' + resource + ' ul.endpoints'); elem.slideDown(); }, // Collapse resource and mark as explicitly closed collapseEndpointListForResource: function(resource) { var resource = Docs.escapeResourceName(resource); if (resource == '') { $('.resource ul.endpoints').slideUp(); return; } $('li#resource_' + resource).removeClass('active'); var elem = $('li#resource_' + resource + ' ul.endpoints'); elem.slideUp(); }, expandOperationsForResource: function(resource) { // Make sure the resource container is open.. Docs.expandEndpointListForResource(resource); if (resource == '') { $('.resource ul.endpoints li.operation div.content').slideDown(); return; } $('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() { Docs.expandOperation($(this)); }); }, collapseOperationsForResource: function(resource) { // Make sure the resource container is open.. Docs.expandEndpointListForResource(resource); if (resource == '') { $('.resource ul.endpoints li.operation div.content').slideUp(); return; } $('li#resource_' + Docs.escapeResourceName(resource) + ' li.operation div.content').each(function() { Docs.collapseOperation($(this)); }); }, escapeResourceName: function(resource) { return resource.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]\^`{|}~]/g, "\\$&"); }, expandOperation: function(elem) { elem.slideDown(); }, collapseOperation: function(elem) { elem.slideUp(); } }; /*! * https://github.com/es-shims/es5-shim * @license es5-shim Copyright 2009-2015 by contributors, MIT License * see https://github.com/es-shims/es5-shim/blob/master/LICENSE */ // vim: ts=4 sts=4 sw=4 expandtab // Add semicolon to prevent IIFE from being passed as argument to concatenated code. ; // UMD (Universal Module Definition) // see https://github.com/umdjs/umd/blob/master/templates/returnExports.js (function (root, factory) { 'use strict'; /* global define, exports, module */ if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define(factory); } else if (typeof exports === 'object') { // Node. Does not work with strict CommonJS, but // only CommonJS-like enviroments that support module.exports, // like Node. module.exports = factory(); } else { // Browser globals (root is window) root.returnExports = factory(); } }(this, function () { /** * Brings an environment as close to ECMAScript 5 compliance * as is possible with the facilities of erstwhile engines. * * Annotated ES5: http://es5.github.com/ (specific links below) * ES5 Spec: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf * Required reading: http://javascriptweblog.wordpress.com/2011/12/05/extending-javascript-natives/ */ // Shortcut to an often accessed properties, in order to avoid multiple // dereference that costs universally. This also holds a reference to known-good // functions. var $Array = Array; var ArrayPrototype = $Array.prototype; var $Object = Object; var ObjectPrototype = $Object.prototype; var $Function = Function; var FunctionPrototype = $Function.prototype; var $String = String; var StringPrototype = $String.prototype; var $Number = Number; var NumberPrototype = $Number.prototype; var array_slice = ArrayPrototype.slice; var array_splice = ArrayPrototype.splice; var array_push = ArrayPrototype.push; var array_unshift = ArrayPrototype.unshift; var array_concat = ArrayPrototype.concat; var array_join = ArrayPrototype.join; var call = FunctionPrototype.call; var apply = FunctionPrototype.apply; var max = Math.max; var min = Math.min; // Having a toString local variable name breaks in Opera so use to_string. var to_string = ObjectPrototype.toString; /* global Symbol */ /* eslint-disable one-var-declaration-per-line, no-redeclare, max-statements-per-line */ var hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol'; var isCallable; /* inlined from https://npmjs.com/is-callable */ var fnToStr = Function.prototype.toString, constructorRegex = /^\s*class /, isES6ClassFn = function isES6ClassFn(value) { try { var fnStr = fnToStr.call(value); var singleStripped = fnStr.replace(/\/\/.*\n/g, ''); var multiStripped = singleStripped.replace(/\/\*[.\s\S]*\*\//g, ''); var spaceStripped = multiStripped.replace(/\n/mg, ' ').replace(/ {2}/g, ' '); return constructorRegex.test(spaceStripped); } catch (e) { return false; /* not a function */ } }, tryFunctionObject = function tryFunctionObject(value) { try { if (isES6ClassFn(value)) { return false; } fnToStr.call(value); return true; } catch (e) { return false; } }, fnClass = '[object Function]', genClass = '[object GeneratorFunction]', isCallable = function isCallable(value) { if (!value) { return false; } if (typeof value !== 'function' && typeof value !== 'object') { return false; } if (hasToStringTag) { return tryFunctionObject(value); } if (isES6ClassFn(value)) { return false; } var strClass = to_string.call(value); return strClass === fnClass || strClass === genClass; }; var isRegex; /* inlined from https://npmjs.com/is-regex */ var regexExec = RegExp.prototype.exec, tryRegexExec = function tryRegexExec(value) { try { regexExec.call(value); return true; } catch (e) { return false; } }, regexClass = '[object RegExp]'; isRegex = function isRegex(value) { if (typeof value !== 'object') { return false; } return hasToStringTag ? tryRegexExec(value) : to_string.call(value) === regexClass; }; var isString; /* inlined from https://npmjs.com/is-string */ var strValue = String.prototype.valueOf, tryStringObject = function tryStringObject(value) { try { strValue.call(value); return true; } catch (e) { return false; } }, stringClass = '[object String]'; isString = function isString(value) { if (typeof value === 'string') { return true; } if (typeof value !== 'object') { return false; } return hasToStringTag ? tryStringObject(value) : to_string.call(value) === stringClass; }; /* eslint-enable one-var-declaration-per-line, no-redeclare, max-statements-per-line */ /* inlined from http://npmjs.com/define-properties */ var supportsDescriptors = $Object.defineProperty && (function () { try { var obj = {}; $Object.defineProperty(obj, 'x', { enumerable: false, value: obj }); for (var _ in obj) { // jscs:ignore disallowUnusedVariables return false; } return obj.x === obj; } catch (e) { /* this is ES3 */ return false; } }()); var defineProperties = (function (has) { // Define configurable, writable, and non-enumerable props // if they don't exist. var defineProperty; if (supportsDescriptors) { defineProperty = function (object, name, method, forceAssign) { if (!forceAssign && (name in object)) { return; } $Object.defineProperty(object, name, { configurable: true, enumerable: false, writable: true, value: method }); }; } else { defineProperty = function (object, name, method, forceAssign) { if (!forceAssign && (name in object)) { return; } object[name] = method; }; } return function defineProperties(object, map, forceAssign) { for (var name in map) { if (has.call(map, name)) { defineProperty(object, name, map[name], forceAssign); } } }; }(ObjectPrototype.hasOwnProperty)); // // Util // ====== // /* replaceable with https://npmjs.com/package/es-abstract /helpers/isPrimitive */ var isPrimitive = function isPrimitive(input) { var type = typeof input; return input === null || (type !== 'object' && type !== 'function'); }; var isActualNaN = $Number.isNaN || function isActualNaN(x) { return x !== x; }; var ES = { // ES5 9.4 // http://es5.github.com/#x9.4 // http://jsperf.com/to-integer /* replaceable with https://npmjs.com/package/es-abstract ES5.ToInteger */ ToInteger: function ToInteger(num) { var n = +num; if (isActualNaN(n)) { n = 0; } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) { n = (n > 0 || -1) * Math.floor(Math.abs(n)); } return n; }, /* replaceable with https://npmjs.com/package/es-abstract ES5.ToPrimitive */ ToPrimitive: function ToPrimitive(input) { var val, valueOf, toStr; if (isPrimitive(input)) { return input; } valueOf = input.valueOf; if (isCallable(valueOf)) { val = valueOf.call(input); if (isPrimitive(val)) { return val; } } toStr = input.toString; if (isCallable(toStr)) { val = toStr.call(input); if (isPrimitive(val)) { return val; } } throw new TypeError(); }, // ES5 9.9 // http://es5.github.com/#x9.9 /* replaceable with https://npmjs.com/package/es-abstract ES5.ToObject */ ToObject: function (o) { if (o == null) { // this matches both null and undefined throw new TypeError("can't convert " + o + ' to object'); } return $Object(o); }, /* replaceable with https://npmjs.com/package/es-abstract ES5.ToUint32 */ ToUint32: function ToUint32(x) { return x >>> 0; } }; // // Function // ======== // // ES-5 15.3.4.5 // http://es5.github.com/#x15.3.4.5 var Empty = function Empty() {}; defineProperties(FunctionPrototype, { bind: function bind(that) { // .length is 1 // 1. Let Target be the this value. var target = this; // 2. If IsCallable(Target) is false, throw a TypeError exception. if (!isCallable(target)) { throw new TypeError('Function.prototype.bind called on incompatible ' + target); } // 3. Let A be a new (possibly empty) internal list of all of the // argument values provided after thisArg (arg1, arg2 etc), in order. // XXX slicedArgs will stand in for "A" if used var args = array_slice.call(arguments, 1); // for normal call // 4. Let F be a new native ECMAScript object. // 11. Set the [[Prototype]] internal property of F to the standard // built-in Function prototype object as specified in 15.3.3.1. // 12. Set the [[Call]] internal property of F as described in // 15.3.4.5.1. // 13. Set the [[Construct]] internal property of F as described in // 15.3.4.5.2. // 14. Set the [[HasInstance]] internal property of F as described in // 15.3.4.5.3. var bound; var binder = function () { if (this instanceof bound) { // 15.3.4.5.2 [[Construct]] // When the [[Construct]] internal method of a function object, // F that was created using the bind function is called with a // list of arguments ExtraArgs, the following steps are taken: // 1. Let target be the value of F's [[TargetFunction]] // internal property. // 2. If target has no [[Construct]] internal method, a // TypeError exception is thrown. // 3. Let boundArgs be the value of F's [[BoundArgs]] internal // property. // 4. Let args be a new list containing the same values as the // list boundArgs in the same order followed by the same // values as the list ExtraArgs in the same order. // 5. Return the result of calling the [[Construct]] internal // method of target providing args as the arguments. var result = apply.call( target, this, array_concat.call(args, array_slice.call(arguments)) ); if ($Object(result) === result) { return result; } return this; } else { // 15.3.4.5.1 [[Call]] // When the [[Call]] internal method of a function object, F, // which was created using the bind function is called with a // this value and a list of arguments ExtraArgs, the following // steps are taken: // 1. Let boundArgs be the value of F's [[BoundArgs]] internal // property. // 2. Let boundThis be the value of F's [[BoundThis]] internal // property. // 3. Let target be the value of F's [[TargetFunction]] internal // property. // 4. Let args be a new list containing the same values as the // list boundArgs in the same order followed by the same // values as the list ExtraArgs in the same order. // 5. Return the result of calling the [[Call]] internal method // of target providing boundThis as the this value and // providing args as the arguments. // equiv: target.call(this, ...boundArgs, ...args) return apply.call( target, that, array_concat.call(args, array_slice.call(arguments)) ); } }; // 15. If the [[Class]] internal property of Target is "Function", then // a. Let L be the length property of Target minus the length of A. // b. Set the length own property of F to either 0 or L, whichever is // larger. // 16. Else set the length own property of F to 0. var boundLength = max(0, target.length - args.length); // 17. Set the attributes of the length own property of F to the values // specified in 15.3.5.1. var boundArgs = []; for (var i = 0; i < boundLength; i++) { array_push.call(boundArgs, '$' + i); } // XXX Build a dynamic function with desired amount of arguments is the only // way to set the length property of a function. // In environments where Content Security Policies enabled (Chrome extensions, // for ex.) all use of eval or Function costructor throws an exception. // However in all of these environments Function.prototype.bind exists // and so this code will never be executed. bound = $Function('binder', 'return function (' + array_join.call(boundArgs, ',') + '){ return binder.apply(this, arguments); }')(binder); if (target.prototype) { Empty.prototype = target.prototype; bound.prototype = new Empty(); // Clean up dangling references. Empty.prototype = null; } // TODO // 18. Set the [[Extensible]] internal property of F to true. // TODO // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3). // 20. Call the [[DefineOwnProperty]] internal method of F with // arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]: // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and // false. // 21. Call the [[DefineOwnProperty]] internal method of F with // arguments "arguments", PropertyDescriptor {[[Get]]: thrower, // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false}, // and false. // TODO // NOTE Function objects created using Function.prototype.bind do not // have a prototype property or the [[Code]], [[FormalParameters]], and // [[Scope]] internal properties. // XXX can't delete prototype in pure-js. // 22. Return F. return bound; } }); // _Please note: Shortcuts are defined after `Function.prototype.bind` as we // use it in defining shortcuts. var owns = call.bind(ObjectPrototype.hasOwnProperty); var toStr = call.bind(ObjectPrototype.toString); var arraySlice = call.bind(array_slice); var arraySliceApply = apply.bind(array_slice); var strSlice = call.bind(StringPrototype.slice); var strSplit = call.bind(StringPrototype.split); var strIndexOf = call.bind(StringPrototype.indexOf); var pushCall = call.bind(array_push); var isEnum = call.bind(ObjectPrototype.propertyIsEnumerable); var arraySort = call.bind(ArrayPrototype.sort); // // Array // ===== // var isArray = $Array.isArray || function isArray(obj) { return toStr(obj) === '[object Array]'; }; // ES5 15.4.4.12 // http://es5.github.com/#x15.4.4.13 // Return len+argCount. // [bugfix, ielt8] // IE < 8 bug: [].unshift(0) === undefined but should be "1" var hasUnshiftReturnValueBug = [].unshift(0) !== 1; defineProperties(ArrayPrototype, { unshift: function () { array_unshift.apply(this, arguments); return this.length; } }, hasUnshiftReturnValueBug); // ES5 15.4.3.2 // http://es5.github.com/#x15.4.3.2 // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray defineProperties($Array, { isArray: isArray }); // The IsCallable() check in the Array functions // has been replaced with a strict check on the // internal class of the object to trap cases where // the provided function was actually a regular // expression literal, which in V8 and // JavaScriptCore is a typeof "function". Only in // V8 are regular expression literals permitted as // reduce parameters, so it is desirable in the // general case for the shim to match the more // strict and common behavior of rejecting regular // expressions. // ES5 15.4.4.18 // http://es5.github.com/#x15.4.4.18 // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/array/forEach // Check failure of by-index access of string characters (IE < 9) // and failure of `0 in boxedString` (Rhino) var boxedString = $Object('a'); var splitString = boxedString[0] !== 'a' || !(0 in boxedString); var properlyBoxesContext = function properlyBoxed(method) { // Check node 0.6.21 bug where third parameter is not boxed var properlyBoxesNonStrict = true; var properlyBoxesStrict = true; var threwException = false; if (method) { try { method.call('foo', function (_, __, context) { if (typeof context !== 'object') { properlyBoxesNonStrict = false; } }); method.call([1], function () { 'use strict'; properlyBoxesStrict = typeof this === 'string'; }, 'x'); } catch (e) { threwException = true; } } return !!method && !threwException && properlyBoxesNonStrict && properlyBoxesStrict; }; defineProperties(ArrayPrototype, { forEach: function forEach(callbackfn/*, thisArg*/) { var object = ES.ToObject(this); var self = splitString && isString(this) ? strSplit(this, '') : object; var i = -1; var length = ES.ToUint32(self.length); var T; if (arguments.length > 1) { T = arguments[1]; } // If no callback function or if callback is not a callable function if (!isCallable(callbackfn)) { throw new TypeError('Array.prototype.forEach callback must be a function'); } while (++i < length) { if (i in self) { // Invoke the callback function with call, passing arguments: // context, property value, property key, thisArg object if (typeof T === 'undefined') { callbackfn(self[i], i, object); } else { callbackfn.call(T, self[i], i, object); } } } } }, !properlyBoxesContext(ArrayPrototype.forEach)); // ES5 15.4.4.19 // http://es5.github.com/#x15.4.4.19 // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map defineProperties(ArrayPrototype, { map: function map(callbackfn/*, thisArg*/) { var object = ES.ToObject(this); var self = splitString && isString(this) ? strSplit(this, '') : object; var length = ES.ToUint32(self.length); var result = $Array(length); var T; if (arguments.length > 1) { T = arguments[1]; } // If no callback function or if callback is not a callable function if (!isCallable(callbackfn)) { throw new TypeError('Array.prototype.map callback must be a function'); } for (var i = 0; i < length; i++) { if (i in self) { if (typeof T === 'undefined') { result[i] = callbackfn(self[i], i, object); } else { result[i] = callbackfn.call(T, self[i], i, object); } } } return result; } }, !properlyBoxesContext(ArrayPrototype.map)); // ES5 15.4.4.20 // http://es5.github.com/#x15.4.4.20 // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter defineProperties(ArrayPrototype, { filter: function filter(callbackfn/*, thisArg*/) { var object = ES.ToObject(this); var self = splitString && isString(this) ? strSplit(this, '') : object; var length = ES.ToUint32(self.length); var result = []; var value; var T; if (arguments.length > 1) { T = arguments[1]; } // If no callback function or if callback is not a callable function if (!isCallable(callbackfn)) { throw new TypeError('Array.prototype.filter callback must be a function'); } for (var i = 0; i < length; i++) { if (i in self) { value = self[i]; if (typeof T === 'undefined' ? callbackfn(value, i, object) : callbackfn.call(T, value, i, object)) { pushCall(result, value); } } } return result; } }, !properlyBoxesContext(ArrayPrototype.filter)); // ES5 15.4.4.16 // http://es5.github.com/#x15.4.4.16 // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every defineProperties(ArrayPrototype, { every: function every(callbackfn/*, thisArg*/) { var object = ES.ToObject(this); var self = splitString && isString(this) ? strSplit(this, '') : object; var length = ES.ToUint32(self.length); var T; if (arguments.length > 1) { T = arguments[1]; } // If no callback function or if callback is not a callable function if (!isCallable(callbackfn)) { throw new TypeError('Array.prototype.every callback must be a function'); } for (var i = 0; i < length; i++) { if (i in self && !(typeof T === 'undefined' ? callbackfn(self[i], i, object) : callbackfn.call(T, self[i], i, object))) { return false; } } return true; } }, !properlyBoxesContext(ArrayPrototype.every)); // ES5 15.4.4.17 // http://es5.github.com/#x15.4.4.17 // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some defineProperties(ArrayPrototype, { some: function some(callbackfn/*, thisArg */) { var object = ES.ToObject(this); var self = splitString && isString(this) ? strSplit(this, '') : object; var length = ES.ToUint32(self.length); var T; if (arguments.length > 1) { T = arguments[1]; } // If no callback function or if callback is not a callable function if (!isCallable(callbackfn)) { throw new TypeError('Array.prototype.some callback must be a function'); } for (var i = 0; i < length; i++) { if (i in self && (typeof T === 'undefined' ? callbackfn(self[i], i, object) : callbackfn.call(T, self[i], i, object))) { return true; } } return false; } }, !properlyBoxesContext(ArrayPrototype.some)); // ES5 15.4.4.21 // http://es5.github.com/#x15.4.4.21 // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduce var reduceCoercesToObject = false; if (ArrayPrototype.reduce) { reduceCoercesToObject = typeof ArrayPrototype.reduce.call('es5', function (_, __, ___, list) { return list; }) === 'object'; } defineProperties(ArrayPrototype, { reduce: function reduce(callbackfn/*, initialValue*/) { var object = ES.ToObject(this); var self = splitString && isString(this) ? strSplit(this, '') : object; var length = ES.ToUint32(self.length); // If no callback function or if callback is not a callable function if (!isCallable(callbackfn)) { throw new TypeError('Array.prototype.reduce callback must be a function'); } // no value to return if no initial value and an empty array if (length === 0 && arguments.length === 1) { throw new TypeError('reduce of empty array with no initial value'); } var i = 0; var result; if (arguments.length >= 2) { result = arguments[1]; } else { do { if (i in self) { result = self[i++]; break; } // if array contains no values, no initial value to return if (++i >= length) { throw new TypeError('reduce of empty array with no initial value'); } } while (true); } for (; i < length; i++) { if (i in self) { result = callbackfn(result, self[i], i, object); } } return result; } }, !reduceCoercesToObject); // ES5 15.4.4.22 // http://es5.github.com/#x15.4.4.22 // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight var reduceRightCoercesToObject = false; if (ArrayPrototype.reduceRight) { reduceRightCoercesToObject = typeof ArrayPrototype.reduceRight.call('es5', function (_, __, ___, list) { return list; }) === 'object'; } defineProperties(ArrayPrototype, { reduceRight: function reduceRight(callbackfn/*, initial*/) { var object = ES.ToObject(this); var self = splitString && isString(this) ? strSplit(this, '') : object; var length = ES.ToUint32(self.length); // If no callback function or if callback is not a callable function if (!isCallable(callbackfn)) { throw new TypeError('Array.prototype.reduceRight callback must be a function'); } // no value to return if no initial value, empty array if (length === 0 && arguments.length === 1) { throw new TypeError('reduceRight of empty array with no initial value'); } var result; var i = length - 1; if (arguments.length >= 2) { result = arguments[1]; } else { do { if (i in self) { result = self[i--]; break; } // if array contains no values, no initial value to return if (--i < 0) { throw new TypeError('reduceRight of empty array with no initial value'); } } while (true); } if (i < 0) { return result; } do { if (i in self) { result = callbackfn(result, self[i], i, object); } } while (i--); return result; } }, !reduceRightCoercesToObject); // ES5 15.4.4.14 // http://es5.github.com/#x15.4.4.14 // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf var hasFirefox2IndexOfBug = ArrayPrototype.indexOf && [0, 1].indexOf(1, 2) !== -1; defineProperties(ArrayPrototype, { indexOf: function indexOf(searchElement/*, fromIndex */) { var self = splitString && isString(this) ? strSplit(this, '') : ES.ToObject(this); var length = ES.ToUint32(self.length); if (length === 0) { return -1; } var i = 0; if (arguments.length > 1) { i = ES.ToInteger(arguments[1]); } // handle negative indices i = i >= 0 ? i : max(0, length + i); for (; i < length; i++) { if (i in self && self[i] === searchElement) { return i; } } return -1; } }, hasFirefox2IndexOfBug); // ES5 15.4.4.15 // http://es5.github.com/#x15.4.4.15 // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf var hasFirefox2LastIndexOfBug = ArrayPrototype.lastIndexOf && [0, 1].lastIndexOf(0, -3) !== -1; defineProperties(ArrayPrototype, { lastIndexOf: function lastIndexOf(searchElement/*, fromIndex */) { var self = splitString && isString(this) ? strSplit(this, '') : ES.ToObject(this); var length = ES.ToUint32(self.length); if (length === 0) { return -1; } var i = length - 1; if (arguments.length > 1) { i = min(i, ES.ToInteger(arguments[1])); } // handle negative indices i = i >= 0 ? i : length - Math.abs(i); for (; i >= 0; i--) { if (i in self && searchElement === self[i]) { return i; } } return -1; } }, hasFirefox2LastIndexOfBug); // ES5 15.4.4.12 // http://es5.github.com/#x15.4.4.12 var spliceNoopReturnsEmptyArray = (function () { var a = [1, 2]; var result = a.splice(); return a.length === 2 && isArray(result) && result.length === 0; }()); defineProperties(ArrayPrototype, { // Safari 5.0 bug where .splice() returns undefined splice: function splice(start, deleteCount) { if (arguments.length === 0) { return []; } else { return array_splice.apply(this, arguments); } } }, !spliceNoopReturnsEmptyArray); var spliceWorksWithEmptyObject = (function () { var obj = {}; ArrayPrototype.splice.call(obj, 0, 0, 1); return obj.length === 1; }()); defineProperties(ArrayPrototype, { splice: function splice(start, deleteCount) { if (arguments.length === 0) { return []; } var args = arguments; this.length = max(ES.ToInteger(this.length), 0); if (arguments.length > 0 && typeof deleteCount !== 'number') { args = arraySlice(arguments); if (args.length < 2) { pushCall(args, this.length - start); } else { args[1] = ES.ToInteger(deleteCount); } } return array_splice.apply(this, args); } }, !spliceWorksWithEmptyObject); var spliceWorksWithLargeSparseArrays = (function () { // Per https://github.com/es-shims/es5-shim/issues/295 // Safari 7/8 breaks with sparse arrays of size 1e5 or greater var arr = new $Array(1e5); // note: the index MUST be 8 or larger or the test will false pass arr[8] = 'x'; arr.splice(1, 1); // note: this test must be defined *after* the indexOf shim // per https://github.com/es-shims/es5-shim/issues/313 return arr.indexOf('x') === 7; }()); var spliceWorksWithSmallSparseArrays = (function () { // Per https://github.com/es-shims/es5-shim/issues/295 // Opera 12.15 breaks on this, no idea why. var n = 256; var arr = []; arr[n] = 'a'; arr.splice(n + 1, 0, 'b'); return arr[n] === 'a'; }()); defineProperties(ArrayPrototype, { splice: function splice(start, deleteCount) { var O = ES.ToObject(this); var A = []; var len = ES.ToUint32(O.length); var relativeStart = ES.ToInteger(start); var actualStart = relativeStart < 0 ? max((len + relativeStart), 0) : min(relativeStart, len); var actualDeleteCount = min(max(ES.ToInteger(deleteCount), 0), len - actualStart); var k = 0; var from; while (k < actualDeleteCount) { from = $String(actualStart + k); if (owns(O, from)) { A[k] = O[from]; } k += 1; } var items = arraySlice(arguments, 2); var itemCount = items.length; var to; if (itemCount < actualDeleteCount) { k = actualStart; var maxK = len - actualDeleteCount; while (k < maxK) { from = $String(k + actualDeleteCount); to = $String(k + itemCount); if (owns(O, from)) { O[to] = O[from]; } else { delete O[to]; } k += 1; } k = len; var minK = len - actualDeleteCount + itemCount; while (k > minK) { delete O[k - 1]; k -= 1; } } else if (itemCount > actualDeleteCount) { k = len - actualDeleteCount; while (k > actualStart) { from = $String(k + actualDeleteCount - 1); to = $String(k + itemCount - 1); if (owns(O, from)) { O[to] = O[from]; } else { delete O[to]; } k -= 1; } } k = actualStart; for (var i = 0; i < items.length; ++i) { O[k] = items[i]; k += 1; } O.length = len - actualDeleteCount + itemCount; return A; } }, !spliceWorksWithLargeSparseArrays || !spliceWorksWithSmallSparseArrays); var originalJoin = ArrayPrototype.join; var hasStringJoinBug; try { hasStringJoinBug = Array.prototype.join.call('123', ',') !== '1,2,3'; } catch (e) { hasStringJoinBug = true; } if (hasStringJoinBug) { defineProperties(ArrayPrototype, { join: function join(separator) { var sep = typeof separator === 'undefined' ? ',' : separator; return originalJoin.call(isString(this) ? strSplit(this, '') : this, sep); } }, hasStringJoinBug); } var hasJoinUndefinedBug = [1, 2].join(undefined) !== '1,2'; if (hasJoinUndefinedBug) { defineProperties(ArrayPrototype, { join: function join(separator) { var sep = typeof separator === 'undefined' ? ',' : separator; return originalJoin.call(this, sep); } }, hasJoinUndefinedBug); } var pushShim = function push(item) { var O = ES.ToObject(this); var n = ES.ToUint32(O.length); var i = 0; while (i < arguments.length) { O[n + i] = arguments[i]; i += 1; } O.length = n + i; return n + i; }; var pushIsNotGeneric = (function () { var obj = {}; var result = Array.prototype.push.call(obj, undefined); return result !== 1 || obj.length !== 1 || typeof obj[0] !== 'undefined' || !owns(obj, 0); }()); defineProperties(ArrayPrototype, { push: function push(item) { if (isArray(this)) { return array_push.apply(this, arguments); } return pushShim.apply(this, arguments); } }, pushIsNotGeneric); // This fixes a very weird bug in Opera 10.6 when pushing `undefined var pushUndefinedIsWeird = (function () { var arr = []; var result = arr.push(undefined); return result !== 1 || arr.length !== 1 || typeof arr[0] !== 'undefined' || !owns(arr, 0); }()); defineProperties(ArrayPrototype, { push: pushShim }, pushUndefinedIsWeird); // ES5 15.2.3.14 // http://es5.github.io/#x15.4.4.10 // Fix boxed string bug defineProperties(ArrayPrototype, { slice: function (start, end) { var arr = isString(this) ? strSplit(this, '') : this; return arraySliceApply(arr, arguments); } }, splitString); var sortIgnoresNonFunctions = (function () { try { [1, 2].sort(null); [1, 2].sort({}); return true; } catch (e) {} return false; }()); var sortThrowsOnRegex = (function () { // this is a problem in Firefox 4, in which `typeof /a/ === 'function'` try { [1, 2].sort(/a/); return false; } catch (e) {} return true; }()); var sortIgnoresUndefined = (function () { // applies in IE 8, for one. try { [1, 2].sort(undefined); return true; } catch (e) {} return false; }()); defineProperties(ArrayPrototype, { sort: function sort(compareFn) { if (typeof compareFn === 'undefined') { return arraySort(this); } if (!isCallable(compareFn)) { throw new TypeError('Array.prototype.sort callback must be a function'); } return arraySort(this, compareFn); } }, sortIgnoresNonFunctions || !sortIgnoresUndefined || !sortThrowsOnRegex); // // Object // ====== // // ES5 15.2.3.14 // http://es5.github.com/#x15.2.3.14 // http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation var hasDontEnumBug = !isEnum({ 'toString': null }, 'toString'); var hasProtoEnumBug = isEnum(function () {}, 'prototype'); var hasStringEnumBug = !owns('x', '0'); var equalsConstructorPrototype = function (o) { var ctor = o.constructor; return ctor && ctor.prototype === o; }; var blacklistedKeys = { $window: true, $console: true, $parent: true, $self: true, $frame: true, $frames: true, $frameElement: true, $webkitIndexedDB: true, $webkitStorageInfo: true, $external: true }; var hasAutomationEqualityBug = (function () { /* globals window */ if (typeof window === 'undefined') { return false; } for (var k in window) { try { if (!blacklistedKeys['$' + k] && owns(window, k) && window[k] !== null && typeof window[k] === 'object') { equalsConstructorPrototype(window[k]); } } catch (e) { return true; } } return false; }()); var equalsConstructorPrototypeIfNotBuggy = function (object) { if (typeof window === 'undefined' || !hasAutomationEqualityBug) { return equalsConstructorPrototype(object); } try { return equalsConstructorPrototype(object); } catch (e) { return false; } }; var dontEnums = [ 'toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor' ]; var dontEnumsLength = dontEnums.length; // taken directly from https://github.com/ljharb/is-arguments/blob/master/index.js // can be replaced with require('is-arguments') if we ever use a build process instead var isStandardArguments = function isArguments(value) { return toStr(value) === '[object Arguments]'; }; var isLegacyArguments = function isArguments(value) { return value !== null && typeof value === 'object' && typeof value.length === 'number' && value.length >= 0 && !isArray(value) && isCallable(value.callee); }; var isArguments = isStandardArguments(arguments) ? isStandardArguments : isLegacyArguments; defineProperties($Object, { keys: function keys(object) { var isFn = isCallable(object); var isArgs = isArguments(object); var isObject = object !== null && typeof object === 'object'; var isStr = isObject && isString(object); if (!isObject && !isFn && !isArgs) { throw new TypeError('Object.keys called on a non-object'); } var theKeys = []; var skipProto = hasProtoEnumBug && isFn; if ((isStr && hasStringEnumBug) || isArgs) { for (var i = 0; i < object.length; ++i) { pushCall(theKeys, $String(i)); } } if (!isArgs) { for (var name in object) { if (!(skipProto && name === 'prototype') && owns(object, name)) { pushCall(theKeys, $String(name)); } } } if (hasDontEnumBug) { var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object); for (var j = 0; j < dontEnumsLength; j++) { var dontEnum = dontEnums[j]; if (!(skipConstructor && dontEnum === 'constructor') && owns(object, dontEnum)) { pushCall(theKeys, dontEnum); } } } return theKeys; } }); var keysWorksWithArguments = $Object.keys && (function () { // Safari 5.0 bug return $Object.keys(arguments).length === 2; }(1, 2)); var keysHasArgumentsLengthBug = $Object.keys && (function () { var argKeys = $Object.keys(arguments); return arguments.length !== 1 || argKeys.length !== 1 || argKeys[0] !== 1; }(1)); var originalKeys = $Object.keys; defineProperties($Object, { keys: function keys(object) { if (isArguments(object)) { return originalKeys(arraySlice(object)); } else { return originalKeys(object); } } }, !keysWorksWithArguments || keysHasArgumentsLengthBug); // // Date // ==== // var hasNegativeMonthYearBug = new Date(-3509827329600292).getUTCMonth() !== 0; var aNegativeTestDate = new Date(-1509842289600292); var aPositiveTestDate = new Date(1449662400000); var hasToUTCStringFormatBug = aNegativeTestDate.toUTCString() !== 'Mon, 01 Jan -45875 11:59:59 GMT'; var hasToDateStringFormatBug; var hasToStringFormatBug; var timeZoneOffset = aNegativeTestDate.getTimezoneOffset(); if (timeZoneOffset < -720) { hasToDateStringFormatBug = aNegativeTestDate.toDateString() !== 'Tue Jan 02 -45875'; hasToStringFormatBug = !(/^Thu Dec 10 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/).test(aPositiveTestDate.toString()); } else { hasToDateStringFormatBug = aNegativeTestDate.toDateString() !== 'Mon Jan 01 -45875'; hasToStringFormatBug = !(/^Wed Dec 09 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/).test(aPositiveTestDate.toString()); } var originalGetFullYear = call.bind(Date.prototype.getFullYear); var originalGetMonth = call.bind(Date.prototype.getMonth); var originalGetDate = call.bind(Date.prototype.getDate); var originalGetUTCFullYear = call.bind(Date.prototype.getUTCFullYear); var originalGetUTCMonth = call.bind(Date.prototype.getUTCMonth); var originalGetUTCDate = call.bind(Date.prototype.getUTCDate); var originalGetUTCDay = call.bind(Date.prototype.getUTCDay); var originalGetUTCHours = call.bind(Date.prototype.getUTCHours); var originalGetUTCMinutes = call.bind(Date.prototype.getUTCMinutes); var originalGetUTCSeconds = call.bind(Date.prototype.getUTCSeconds); var originalGetUTCMilliseconds = call.bind(Date.prototype.getUTCMilliseconds); var dayName = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; var monthName = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; var daysInMonth = function daysInMonth(month, year) { return originalGetDate(new Date(year, month, 0)); }; defineProperties(Date.prototype, { getFullYear: function getFullYear() { if (!this || !(this instanceof Date)) { throw new TypeError('this is not a Date object.'); } var year = originalGetFullYear(this); if (year < 0 && originalGetMonth(this) > 11) { return year + 1; } return year; }, getMonth: function getMonth() { if (!this || !(this instanceof Date)) { throw new TypeError('this is not a Date object.'); } var year = originalGetFullYear(this); var month = originalGetMonth(this); if (year < 0 && month > 11) { return 0; } return month; }, getDate: function getDate() { if (!this || !(this instanceof Date)) { throw new TypeError('this is not a Date object.'); } var year = originalGetFullYear(this); var month = originalGetMonth(this); var date = originalGetDate(this); if (year < 0 && month > 11) { if (month === 12) { return date; } var days = daysInMonth(0, year + 1); return (days - date) + 1; } return date; }, getUTCFullYear: function getUTCFullYear() { if (!this || !(this instanceof Date)) { throw new TypeError('this is not a Date object.'); } var year = originalGetUTCFullYear(this); if (year < 0 && originalGetUTCMonth(this) > 11) { return year + 1; } return year; }, getUTCMonth: function getUTCMonth() { if (!this || !(this instanceof Date)) { throw new TypeError('this is not a Date object.'); } var year = originalGetUTCFullYear(this); var month = originalGetUTCMonth(this); if (year < 0 && month > 11) { return 0; } return month; }, getUTCDate: function getUTCDate() { if (!this || !(this instanceof Date)) { throw new TypeError('this is not a Date object.'); } var year = originalGetUTCFullYear(this); var month = originalGetUTCMonth(this); var date = originalGetUTCDate(this); if (year < 0 && month > 11) { if (month === 12) { return date; } var days = daysInMonth(0, year + 1); return (days - date) + 1; } return date; } }, hasNegativeMonthYearBug); defineProperties(Date.prototype, { toUTCString: function toUTCString() { if (!this || !(this instanceof Date)) { throw new TypeError('this is not a Date object.'); } var day = originalGetUTCDay(this); var date = originalGetUTCDate(this); var month = originalGetUTCMonth(this); var year = originalGetUTCFullYear(this); var hour = originalGetUTCHours(this); var minute = originalGetUTCMinutes(this); var second = originalGetUTCSeconds(this); return dayName[day] + ', ' + (date < 10 ? '0' + date : date) + ' ' + monthName[month] + ' ' + year + ' ' + (hour < 10 ? '0' + hour : hour) + ':' + (minute < 10 ? '0' + minute : minute) + ':' + (second < 10 ? '0' + second : second) + ' GMT'; } }, hasNegativeMonthYearBug || hasToUTCStringFormatBug); // Opera 12 has `,` defineProperties(Date.prototype, { toDateString: function toDateString() { if (!this || !(this instanceof Date)) { throw new TypeError('this is not a Date object.'); } var day = this.getDay(); var date = this.getDate(); var month = this.getMonth(); var year = this.getFullYear(); return dayName[day] + ' ' + monthName[month] + ' ' + (date < 10 ? '0' + date : date) + ' ' + year; } }, hasNegativeMonthYearBug || hasToDateStringFormatBug); // can't use defineProperties here because of toString enumeration issue in IE <= 8 if (hasNegativeMonthYearBug || hasToStringFormatBug) { Date.prototype.toString = function toString() { if (!this || !(this instanceof Date)) { throw new TypeError('this is not a Date object.'); } var day = this.getDay(); var date = this.getDate(); var month = this.getMonth(); var year = this.getFullYear(); var hour = this.getHours(); var minute = this.getMinutes(); var second = this.getSeconds(); var timezoneOffset = this.getTimezoneOffset(); var hoursOffset = Math.floor(Math.abs(timezoneOffset) / 60); var minutesOffset = Math.floor(Math.abs(timezoneOffset) % 60); return dayName[day] + ' ' + monthName[month] + ' ' + (date < 10 ? '0' + date : date) + ' ' + year + ' ' + (hour < 10 ? '0' + hour : hour) + ':' + (minute < 10 ? '0' + minute : minute) + ':' + (second < 10 ? '0' + second : second) + ' GMT' + (timezoneOffset > 0 ? '-' : '+') + (hoursOffset < 10 ? '0' + hoursOffset : hoursOffset) + (minutesOffset < 10 ? '0' + minutesOffset : minutesOffset); }; if (supportsDescriptors) { $Object.defineProperty(Date.prototype, 'toString', { configurable: true, enumerable: false, writable: true }); } } // ES5 15.9.5.43 // http://es5.github.com/#x15.9.5.43 // This function returns a String value represent the instance in time // represented by this Date object. The format of the String is the Date Time // string format defined in 15.9.1.15. All fields are present in the String. // The time zone is always UTC, denoted by the suffix Z. If the time value of // this object is not a finite Number a RangeError exception is thrown. var negativeDate = -62198755200000; var negativeYearString = '-000001'; var hasNegativeDateBug = Date.prototype.toISOString && new Date(negativeDate).toISOString().indexOf(negativeYearString) === -1; var hasSafari51DateBug = Date.prototype.toISOString && new Date(-1).toISOString() !== '1969-12-31T23:59:59.999Z'; var getTime = call.bind(Date.prototype.getTime); defineProperties(Date.prototype, { toISOString: function toISOString() { if (!isFinite(this) || !isFinite(getTime(this))) { // Adope Photoshop requires the second check. throw new RangeError('Date.prototype.toISOString called on non-finite value.'); } var year = originalGetUTCFullYear(this); var month = originalGetUTCMonth(this); // see https://github.com/es-shims/es5-shim/issues/111 year += Math.floor(month / 12); month = (month % 12 + 12) % 12; // the date time string format is specified in 15.9.1.15. var result = [month + 1, originalGetUTCDate(this), originalGetUTCHours(this), originalGetUTCMinutes(this), originalGetUTCSeconds(this)]; year = ( (year < 0 ? '-' : (year > 9999 ? '+' : '')) + strSlice('00000' + Math.abs(year), (0 <= year && year <= 9999) ? -4 : -6) ); for (var i = 0; i < result.length; ++i) { // pad months, days, hours, minutes, and seconds to have two digits. result[i] = strSlice('00' + result[i], -2); } // pad milliseconds to have three digits. return ( year + '-' + arraySlice(result, 0, 2).join('-') + 'T' + arraySlice(result, 2).join(':') + '.' + strSlice('000' + originalGetUTCMilliseconds(this), -3) + 'Z' ); } }, hasNegativeDateBug || hasSafari51DateBug); // ES5 15.9.5.44 // http://es5.github.com/#x15.9.5.44 // This function provides a String representation of a Date object for use by // JSON.stringify (15.12.3). var dateToJSONIsSupported = (function () { try { return Date.prototype.toJSON && new Date(NaN).toJSON() === null && new Date(negativeDate).toJSON().indexOf(negativeYearString) !== -1 && Date.prototype.toJSON.call({ // generic toISOString: function () { return true; } }); } catch (e) { return false; } }()); if (!dateToJSONIsSupported) { Date.prototype.toJSON = function toJSON(key) { // When the toJSON method is called with argument key, the following // steps are taken: // 1. Let O be the result of calling ToObject, giving it the this // value as its argument. // 2. Let tv be ES.ToPrimitive(O, hint Number). var O = $Object(this); var tv = ES.ToPrimitive(O); // 3. If tv is a Number and is not finite, return null. if (typeof tv === 'number' && !isFinite(tv)) { return null; } // 4. Let toISO be the result of calling the [[Get]] internal method of // O with argument "toISOString". var toISO = O.toISOString; // 5. If IsCallable(toISO) is false, throw a TypeError exception. if (!isCallable(toISO)) { throw new TypeError('toISOString property is not callable'); } // 6. Return the result of calling the [[Call]] internal method of // toISO with O as the this value and an empty argument list. return toISO.call(O); // NOTE 1 The argument is ignored. // NOTE 2 The toJSON function is intentionally generic; it does not // require that its this value be a Date object. Therefore, it can be // transferred to other kinds of objects for use as a method. However, // it does require that any such object have a toISOString method. An // object is free to use the argument key to filter its // stringification. }; } // ES5 15.9.4.2 // http://es5.github.com/#x15.9.4.2 // based on work shared by Daniel Friesen (dantman) // http://gist.github.com/303249 var supportsExtendedYears = Date.parse('+033658-09-27T01:46:40.000Z') === 1e15; var acceptsInvalidDates = !isNaN(Date.parse('2012-04-04T24:00:00.500Z')) || !isNaN(Date.parse('2012-11-31T23:59:59.000Z')) || !isNaN(Date.parse('2012-12-31T23:59:60.000Z')); var doesNotParseY2KNewYear = isNaN(Date.parse('2000-01-01T00:00:00.000Z')); if (doesNotParseY2KNewYear || acceptsInvalidDates || !supportsExtendedYears) { // XXX global assignment won't work in embeddings that use // an alternate object for the context. /* global Date: true */ /* eslint-disable no-undef */ var maxSafeUnsigned32Bit = Math.pow(2, 31) - 1; var hasSafariSignedIntBug = isActualNaN(new Date(1970, 0, 1, 0, 0, 0, maxSafeUnsigned32Bit + 1).getTime()); /* eslint-disable no-implicit-globals */ Date = (function (NativeDate) { /* eslint-enable no-implicit-globals */ /* eslint-enable no-undef */ // Date.length === 7 var DateShim = function Date(Y, M, D, h, m, s, ms) { var length = arguments.length; var date; if (this instanceof NativeDate) { var seconds = s; var millis = ms; if (hasSafariSignedIntBug && length >= 7 && ms > maxSafeUnsigned32Bit) { // work around a Safari 8/9 bug where it treats the seconds as signed var msToShift = Math.floor(ms / maxSafeUnsigned32Bit) * maxSafeUnsigned32Bit; var sToShift = Math.floor(msToShift / 1e3); seconds += sToShift; millis -= sToShift * 1e3; } date = length === 1 && $String(Y) === Y ? // isString(Y) // We explicitly pass it through parse: new NativeDate(DateShim.parse(Y)) : // We have to manually make calls depending on argument // length here length >= 7 ? new NativeDate(Y, M, D, h, m, seconds, millis) : length >= 6 ? new NativeDate(Y, M, D, h, m, seconds) : length >= 5 ? new NativeDate(Y, M, D, h, m) : length >= 4 ? new NativeDate(Y, M, D, h) : length >= 3 ? new NativeDate(Y, M, D) : length >= 2 ? new NativeDate(Y, M) : length >= 1 ? new NativeDate(Y instanceof NativeDate ? +Y : Y) : new NativeDate(); } else { date = NativeDate.apply(this, arguments); } if (!isPrimitive(date)) { // Prevent mixups with unfixed Date object defineProperties(date, { constructor: DateShim }, true); } return date; }; // 15.9.1.15 Date Time String Format. var isoDateExpression = new RegExp('^' + '(\\d{4}|[+-]\\d{6})' + // four-digit year capture or sign + // 6-digit extended year '(?:-(\\d{2})' + // optional month capture '(?:-(\\d{2})' + // optional day capture '(?:' + // capture hours:minutes:seconds.milliseconds 'T(\\d{2})' + // hours capture ':(\\d{2})' + // minutes capture '(?:' + // optional :seconds.milliseconds ':(\\d{2})' + // seconds capture '(?:(\\.\\d{1,}))?' + // milliseconds capture ')?' + '(' + // capture UTC offset component 'Z|' + // UTC capture '(?:' + // offset specifier +/-hours:minutes '([-+])' + // sign capture '(\\d{2})' + // hours offset capture ':(\\d{2})' + // minutes offset capture ')' + ')?)?)?)?' + '$'); var months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]; var dayFromMonth = function dayFromMonth(year, month) { var t = month > 1 ? 1 : 0; return ( months[month] + Math.floor((year - 1969 + t) / 4) - Math.floor((year - 1901 + t) / 100) + Math.floor((year - 1601 + t) / 400) + 365 * (year - 1970) ); }; var toUTC = function toUTC(t) { var s = 0; var ms = t; if (hasSafariSignedIntBug && ms > maxSafeUnsigned32Bit) { // work around a Safari 8/9 bug where it treats the seconds as signed var msToShift = Math.floor(ms / maxSafeUnsigned32Bit) * maxSafeUnsigned32Bit; var sToShift = Math.floor(msToShift / 1e3); s += sToShift; ms -= sToShift * 1e3; } return $Number(new NativeDate(1970, 0, 1, 0, 0, s, ms)); }; // Copy any custom methods a 3rd party library may have added for (var key in NativeDate) { if (owns(NativeDate, key)) { DateShim[key] = NativeDate[key]; } } // Copy "native" methods explicitly; they may be non-enumerable defineProperties(DateShim, { now: NativeDate.now, UTC: NativeDate.UTC }, true); DateShim.prototype = NativeDate.prototype; defineProperties(DateShim.prototype, { constructor: DateShim }, true); // Upgrade Date.parse to handle simplified ISO 8601 strings var parseShim = function parse(string) { var match = isoDateExpression.exec(string); if (match) { // parse months, days, hours, minutes, seconds, and milliseconds // provide default values if necessary // parse the UTC offset component var year = $Number(match[1]), month = $Number(match[2] || 1) - 1, day = $Number(match[3] || 1) - 1, hour = $Number(match[4] || 0), minute = $Number(match[5] || 0), second = $Number(match[6] || 0), millisecond = Math.floor($Number(match[7] || 0) * 1000), // When time zone is missed, local offset should be used // (ES 5.1 bug) // see https://bugs.ecmascript.org/show_bug.cgi?id=112 isLocalTime = Boolean(match[4] && !match[8]), signOffset = match[9] === '-' ? 1 : -1, hourOffset = $Number(match[10] || 0), minuteOffset = $Number(match[11] || 0), result; var hasMinutesOrSecondsOrMilliseconds = minute > 0 || second > 0 || millisecond > 0; if ( hour < (hasMinutesOrSecondsOrMilliseconds ? 24 : 25) && minute < 60 && second < 60 && millisecond < 1000 && month > -1 && month < 12 && hourOffset < 24 && minuteOffset < 60 && // detect invalid offsets day > -1 && day < (dayFromMonth(year, month + 1) - dayFromMonth(year, month)) ) { result = ( (dayFromMonth(year, month) + day) * 24 + hour + hourOffset * signOffset ) * 60; result = ( (result + minute + minuteOffset * signOffset) * 60 + second ) * 1000 + millisecond; if (isLocalTime) { result = toUTC(result); } if (-8.64e15 <= result && result <= 8.64e15) { return result; } } return NaN; } return NativeDate.parse.apply(this, arguments); }; defineProperties(DateShim, { parse: parseShim }); return DateShim; }(Date)); /* global Date: false */ } // ES5 15.9.4.4 // http://es5.github.com/#x15.9.4.4 if (!Date.now) { Date.now = function now() { return new Date().getTime(); }; } // // Number // ====== // // ES5.1 15.7.4.5 // http://es5.github.com/#x15.7.4.5 var hasToFixedBugs = NumberPrototype.toFixed && ( (0.00008).toFixed(3) !== '0.000' || (0.9).toFixed(0) !== '1' || (1.255).toFixed(2) !== '1.25' || (1000000000000000128).toFixed(0) !== '1000000000000000128' ); var toFixedHelpers = { base: 1e7, size: 6, data: [0, 0, 0, 0, 0, 0], multiply: function multiply(n, c) { var i = -1; var c2 = c; while (++i < toFixedHelpers.size) { c2 += n * toFixedHelpers.data[i]; toFixedHelpers.data[i] = c2 % toFixedHelpers.base; c2 = Math.floor(c2 / toFixedHelpers.base); } }, divide: function divide(n) { var i = toFixedHelpers.size; var c = 0; while (--i >= 0) { c += toFixedHelpers.data[i]; toFixedHelpers.data[i] = Math.floor(c / n); c = (c % n) * toFixedHelpers.base; } }, numToString: function numToString() { var i = toFixedHelpers.size; var s = ''; while (--i >= 0) { if (s !== '' || i === 0 || toFixedHelpers.data[i] !== 0) { var t = $String(toFixedHelpers.data[i]); if (s === '') { s = t; } else { s += strSlice('0000000', 0, 7 - t.length) + t; } } } return s; }, pow: function pow(x, n, acc) { return (n === 0 ? acc : (n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc))); }, log: function log(x) { var n = 0; var x2 = x; while (x2 >= 4096) { n += 12; x2 /= 4096; } while (x2 >= 2) { n += 1; x2 /= 2; } return n; } }; var toFixedShim = function toFixed(fractionDigits) { var f, x, s, m, e, z, j, k; // Test for NaN and round fractionDigits down f = $Number(fractionDigits); f = isActualNaN(f) ? 0 : Math.floor(f); if (f < 0 || f > 20) { throw new RangeError('Number.toFixed called with invalid number of decimals'); } x = $Number(this); if (isActualNaN(x)) { return 'NaN'; } // If it is too big or small, return the string value of the number if (x <= -1e21 || x >= 1e21) { return $String(x); } s = ''; if (x < 0) { s = '-'; x = -x; } m = '0'; if (x > 1e-21) { // 1e-21 < x < 1e21 // -70 < log2(x) < 70 e = toFixedHelpers.log(x * toFixedHelpers.pow(2, 69, 1)) - 69; z = (e < 0 ? x * toFixedHelpers.pow(2, -e, 1) : x / toFixedHelpers.pow(2, e, 1)); z *= 0x10000000000000; // Math.pow(2, 52); e = 52 - e; // -18 < e < 122 // x = z / 2 ^ e if (e > 0) { toFixedHelpers.multiply(0, z); j = f; while (j >= 7) { toFixedHelpers.multiply(1e7, 0); j -= 7; } toFixedHelpers.multiply(toFixedHelpers.pow(10, j, 1), 0); j = e - 1; while (j >= 23) { toFixedHelpers.divide(1 << 23); j -= 23; } toFixedHelpers.divide(1 << j); toFixedHelpers.multiply(1, 1); toFixedHelpers.divide(2); m = toFixedHelpers.numToString(); } else { toFixedHelpers.multiply(0, z); toFixedHelpers.multiply(1 << (-e), 0); m = toFixedHelpers.numToString() + strSlice('0.00000000000000000000', 2, 2 + f); } } if (f > 0) { k = m.length; if (k <= f) { m = s + strSlice('0.0000000000000000000', 0, f - k + 2) + m; } else { m = s + strSlice(m, 0, k - f) + '.' + strSlice(m, k - f); } } else { m = s + m; } return m; }; defineProperties(NumberPrototype, { toFixed: toFixedShim }, hasToFixedBugs); var hasToPrecisionUndefinedBug = (function () { try { return 1.0.toPrecision(undefined) === '1'; } catch (e) { return true; } }()); var originalToPrecision = NumberPrototype.toPrecision; defineProperties(NumberPrototype, { toPrecision: function toPrecision(precision) { return typeof precision === 'undefined' ? originalToPrecision.call(this) : originalToPrecision.call(this, precision); } }, hasToPrecisionUndefinedBug); // // String // ====== // // ES5 15.5.4.14 // http://es5.github.com/#x15.5.4.14 // [bugfix, IE lt 9, firefox 4, Konqueror, Opera, obscure browsers] // Many browsers do not split properly with regular expressions or they // do not perform the split correctly under obscure conditions. // See http://blog.stevenlevithan.com/archives/cross-browser-split // I've tested in many browsers and this seems to cover the deviant ones: // 'ab'.split(/(?:ab)*/) should be ["", ""], not [""] // '.'.split(/(.?)(.?)/) should be ["", ".", "", ""], not ["", ""] // 'tesst'.split(/(s)*/) should be ["t", undefined, "e", "s", "t"], not // [undefined, "t", undefined, "e", ...] // ''.split(/.?/) should be [], not [""] // '.'.split(/()()/) should be ["."], not ["", "", "."] if ( 'ab'.split(/(?:ab)*/).length !== 2 || '.'.split(/(.?)(.?)/).length !== 4 || 'tesst'.split(/(s)*/)[1] === 't' || 'test'.split(/(?:)/, -1).length !== 4 || ''.split(/.?/).length || '.'.split(/()()/).length > 1 ) { (function () { var compliantExecNpcg = typeof (/()??/).exec('')[1] === 'undefined'; // NPCG: nonparticipating capturing group var maxSafe32BitInt = Math.pow(2, 32) - 1; StringPrototype.split = function (separator, limit) { var string = String(this); if (typeof separator === 'undefined' && limit === 0) { return []; } // If `separator` is not a regex, use native split if (!isRegex(separator)) { return strSplit(this, separator, limit); } var output = []; var flags = (separator.ignoreCase ? 'i' : '') + (separator.multiline ? 'm' : '') + (separator.unicode ? 'u' : '') + // in ES6 (separator.sticky ? 'y' : ''), // Firefox 3+ and ES6 lastLastIndex = 0, // Make `global` and avoid `lastIndex` issues by working with a copy separator2, match, lastIndex, lastLength; var separatorCopy = new RegExp(separator.source, flags + 'g'); if (!compliantExecNpcg) { // Doesn't need flags gy, but they don't hurt separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\s)', flags); } /* Values for `limit`, per the spec: * If undefined: 4294967295 // maxSafe32BitInt * If 0, Infinity, or NaN: 0 * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296; * If negative number: 4294967296 - Math.floor(Math.abs(limit)) * If other: Type-convert, then use the above rules */ var splitLimit = typeof limit === 'undefined' ? maxSafe32BitInt : ES.ToUint32(limit); match = separatorCopy.exec(string); while (match) { // `separatorCopy.lastIndex` is not reliable cross-browser lastIndex = match.index + match[0].length; if (lastIndex > lastLastIndex) { pushCall(output, strSlice(string, lastLastIndex, match.index)); // Fix browsers whose `exec` methods don't consistently return `undefined` for // nonparticipating capturing groups if (!compliantExecNpcg && match.length > 1) { /* eslint-disable no-loop-func */ match[0].replace(separator2, function () { for (var i = 1; i < arguments.length - 2; i++) { if (typeof arguments[i] === 'undefined') { match[i] = void 0; } } }); /* eslint-enable no-loop-func */ } if (match.length > 1 && match.index < string.length) { array_push.apply(output, arraySlice(match, 1)); } lastLength = match[0].length; lastLastIndex = lastIndex; if (output.length >= splitLimit) { break; } } if (separatorCopy.lastIndex === match.index) { separatorCopy.lastIndex++; // Avoid an infinite loop } match = separatorCopy.exec(string); } if (lastLastIndex === string.length) { if (lastLength || !separatorCopy.test('')) { pushCall(output, ''); } } else { pushCall(output, strSlice(string, lastLastIndex)); } return output.length > splitLimit ? arraySlice(output, 0, splitLimit) : output; }; }()); // [bugfix, chrome] // If separator is undefined, then the result array contains just one String, // which is the this value (converted to a String). If limit is not undefined, // then the output array is truncated so that it contains no more than limit // elements. // "0".split(undefined, 0) -> [] } else if ('0'.split(void 0, 0).length) { StringPrototype.split = function split(separator, limit) { if (typeof separator === 'undefined' && limit === 0) { return []; } return strSplit(this, separator, limit); }; } var str_replace = StringPrototype.replace; var replaceReportsGroupsCorrectly = (function () { var groups = []; 'x'.replace(/x(.)?/g, function (match, group) { pushCall(groups, group); }); return groups.length === 1 && typeof groups[0] === 'undefined'; }()); if (!replaceReportsGroupsCorrectly) { StringPrototype.replace = function replace(searchValue, replaceValue) { var isFn = isCallable(replaceValue); var hasCapturingGroups = isRegex(searchValue) && (/\)[*?]/).test(searchValue.source); if (!isFn || !hasCapturingGroups) { return str_replace.call(this, searchValue, replaceValue); } else { var wrappedReplaceValue = function (match) { var length = arguments.length; var originalLastIndex = searchValue.lastIndex; searchValue.lastIndex = 0; var args = searchValue.exec(match) || []; searchValue.lastIndex = originalLastIndex; pushCall(args, arguments[length - 2], arguments[length - 1]); return replaceValue.apply(this, args); }; return str_replace.call(this, searchValue, wrappedReplaceValue); } }; } // ECMA-262, 3rd B.2.3 // Not an ECMAScript standard, although ECMAScript 3rd Edition has a // non-normative section suggesting uniform semantics and it should be // normalized across all browsers // [bugfix, IE lt 9] IE < 9 substr() with negative value not working in IE var string_substr = StringPrototype.substr; var hasNegativeSubstrBug = ''.substr && '0b'.substr(-1) !== 'b'; defineProperties(StringPrototype, { substr: function substr(start, length) { var normalizedStart = start; if (start < 0) { normalizedStart = max(this.length + start, 0); } return string_substr.call(this, normalizedStart, length); } }, hasNegativeSubstrBug); // ES5 15.5.4.20 // whitespace from: http://es5.github.io/#x15.5.4.20 var ws = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028' + '\u2029\uFEFF'; var zeroWidth = '\u200b'; var wsRegexChars = '[' + ws + ']'; var trimBeginRegexp = new RegExp('^' + wsRegexChars + wsRegexChars + '*'); var trimEndRegexp = new RegExp(wsRegexChars + wsRegexChars + '*$'); var hasTrimWhitespaceBug = StringPrototype.trim && (ws.trim() || !zeroWidth.trim()); defineProperties(StringPrototype, { // http://blog.stevenlevithan.com/archives/faster-trim-javascript // http://perfectionkills.com/whitespace-deviations/ trim: function trim() { if (typeof this === 'undefined' || this === null) { throw new TypeError("can't convert " + this + ' to object'); } return $String(this).replace(trimBeginRegexp, '').replace(trimEndRegexp, ''); } }, hasTrimWhitespaceBug); var trim = call.bind(String.prototype.trim); var hasLastIndexBug = StringPrototype.lastIndexOf && 'abcあい'.lastIndexOf('あい', 2) !== -1; defineProperties(StringPrototype, { lastIndexOf: function lastIndexOf(searchString) { if (typeof this === 'undefined' || this === null) { throw new TypeError("can't convert " + this + ' to object'); } var S = $String(this); var searchStr = $String(searchString); var numPos = arguments.length > 1 ? $Number(arguments[1]) : NaN; var pos = isActualNaN(numPos) ? Infinity : ES.ToInteger(numPos); var start = min(max(pos, 0), S.length); var searchLen = searchStr.length; var k = start + searchLen; while (k > 0) { k = max(0, k - searchLen); var index = strIndexOf(strSlice(S, k, start + searchLen), searchStr); if (index !== -1) { return k + index; } } return -1; } }, hasLastIndexBug); var originalLastIndexOf = StringPrototype.lastIndexOf; defineProperties(StringPrototype, { lastIndexOf: function lastIndexOf(searchString) { return originalLastIndexOf.apply(this, arguments); } }, StringPrototype.lastIndexOf.length !== 1); // ES-5 15.1.2.2 /* eslint-disable radix */ if (parseInt(ws + '08') !== 8 || parseInt(ws + '0x16') !== 22) { /* eslint-enable radix */ /* global parseInt: true */ parseInt = (function (origParseInt) { var hexRegex = /^[\-+]?0[xX]/; return function parseInt(str, radix) { var string = trim(String(str)); var defaultedRadix = $Number(radix) || (hexRegex.test(string) ? 16 : 10); return origParseInt(string, defaultedRadix); }; }(parseInt)); } // https://es5.github.io/#x15.1.2.3 if (1 / parseFloat('-0') !== -Infinity) { /* global parseFloat: true */ parseFloat = (function (origParseFloat) { return function parseFloat(string) { var inputString = trim(String(string)); var result = origParseFloat(inputString); return result === 0 && strSlice(inputString, 0, 1) === '-' ? -0 : result; }; }(parseFloat)); } if (String(new RangeError('test')) !== 'RangeError: test') { var errorToStringShim = function toString() { if (typeof this === 'undefined' || this === null) { throw new TypeError("can't convert " + this + ' to object'); } var name = this.name; if (typeof name === 'undefined') { name = 'Error'; } else if (typeof name !== 'string') { name = $String(name); } var msg = this.message; if (typeof msg === 'undefined') { msg = ''; } else if (typeof msg !== 'string') { msg = $String(msg); } if (!name) { return msg; } if (!msg) { return name; } return name + ': ' + msg; }; // can't use defineProperties here because of toString enumeration issue in IE <= 8 Error.prototype.toString = errorToStringShim; } if (supportsDescriptors) { var ensureNonEnumerable = function (obj, prop) { if (isEnum(obj, prop)) { var desc = Object.getOwnPropertyDescriptor(obj, prop); if (desc.configurable) { desc.enumerable = false; Object.defineProperty(obj, prop, desc); } } }; ensureNonEnumerable(Error.prototype, 'message'); if (Error.prototype.message !== '') { Error.prototype.message = ''; } ensureNonEnumerable(Error.prototype, 'name'); } if (String(/a/mig) !== '/a/gim') { var regexToString = function toString() { var str = '/' + this.source + '/'; if (this.global) { str += 'g'; } if (this.ignoreCase) { str += 'i'; } if (this.multiline) { str += 'm'; } return str; }; // can't use defineProperties here because of toString enumeration issue in IE <= 8 RegExp.prototype.toString = regexToString; } })); 'use strict'; /*jslint eqeq: true*/ Handlebars.registerHelper('sanitize', function (text) { var result; if (text === undefined) { return ''; } result = sanitizeHtml(text, { allowedTags: [ 'div', 'span', 'b', 'i', 'em', 'strong', 'a', 'br', 'table', 'tbody', 'tr', 'th', 'td' ], allowedAttributes: { 'div': [ 'class' ], 'span': [ 'class' ], 'table': [ 'class' ], 'td': [ 'class' ], 'th': [ 'colspan' ], 'a': [ 'href' ] } }); return new Handlebars.SafeString(result); }); Handlebars.registerHelper('renderTextParam', function(param) { var result, type = 'text', idAtt = ''; var paramType = (param.schema) ? param.type || param.schema.type || '' : param.type || ''; var isArray = paramType.toLowerCase() === 'array' || param.allowMultiple; var defaultValue = isArray && Array.isArray(param.default) ? param.default.join('\n') : param.default; var name = Handlebars.Utils.escapeExpression(param.name); var valueId = Handlebars.Utils.escapeExpression(param.valueId); paramType = Handlebars.Utils.escapeExpression(paramType); var dataVendorExtensions = Object.keys(param).filter(function(property) { // filter X-data- properties return property.match(/^X-data-/i) !== null; }).reduce(function(result, property) { // remove X- from property name, so it results in html attributes like data-foo='bar' return result += ' ' + property.substring(2, property.length) + '=\'' + param[property] + '\''; }, ''); if(param.format && param.format === 'password') { type = 'password'; } if(valueId) { idAtt = ' id=\'' + valueId + '\''; } if (defaultValue) { defaultValue = sanitizeHtml(defaultValue); } else { defaultValue = ''; } if(isArray) { result = ''; } else { var parameterClass = 'parameter'; if(param.required) { parameterClass += ' required'; } result = ''; } return new Handlebars.SafeString(result); }); Handlebars.registerHelper('ifCond', function (v1, operator, v2, options) { switch (operator) { case '==': return (v1 == v2) ? options.fn(this) : options.inverse(this); case '===': return (v1 === v2) ? options.fn(this) : options.inverse(this); case '<': return (v1 < v2) ? options.fn(this) : options.inverse(this); case '<=': return (v1 <= v2) ? options.fn(this) : options.inverse(this); case '>': return (v1 > v2) ? options.fn(this) : options.inverse(this); case '>=': return (v1 >= v2) ? options.fn(this) : options.inverse(this); case '&&': return (v1 && v2) ? options.fn(this) : options.inverse(this); case '||': return (v1 || v2) ? options.fn(this) : options.inverse(this); default: return options.inverse(this); } }); Handlebars.registerHelper('escape', function (value) { var text = Handlebars.Utils.escapeExpression(value); return new Handlebars.SafeString(text); }); (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.sanitizeHtml=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o=0){globRegex.push(quoteRegexp(name).replace(/\\\*/g,".*"))}else{allowedAttributesMap[tag].push(name)}});allowedAttributesGlobMap[tag]=new RegExp("^("+globRegex.join("|")+")$")})}var allowedClassesMap={};each(options.allowedClasses,function(classes,tag){if(allowedAttributesMap){if(!has(allowedAttributesMap,tag)){allowedAttributesMap[tag]=[]}allowedAttributesMap[tag].push("class")}allowedClassesMap[tag]=classes});var transformTagsMap={};var transformTagsAll;each(options.transformTags,function(transform,tag){var transFun;if(typeof transform==="function"){transFun=transform}else if(typeof transform==="string"){transFun=sanitizeHtml.simpleTransform(transform)}if(tag==="*"){transformTagsAll=transFun}else{transformTagsMap[tag]=transFun}});var depth=0;var stack=[];var skipMap={};var transformMap={};var skipText=false;var skipTextDepth=0;var parser=new htmlparser.Parser({onopentag:function(name,attribs){if(skipText){skipTextDepth++;return}var frame=new Frame(name,attribs);stack.push(frame);var skip=false;var hasText=frame.text?true:false;var transformedTag;if(has(transformTagsMap,name)){transformedTag=transformTagsMap[name](name,attribs);frame.attribs=attribs=transformedTag.attribs;if(transformedTag.text!==undefined){frame.innerText=transformedTag.text}if(name!==transformedTag.tagName){frame.name=name=transformedTag.tagName;transformMap[depth]=transformedTag.tagName}}if(transformTagsAll){transformedTag=transformTagsAll(name,attribs);frame.attribs=attribs=transformedTag.attribs;if(name!==transformedTag.tagName){frame.name=name=transformedTag.tagName;transformMap[depth]=transformedTag.tagName}}if(options.allowedTags&&options.allowedTags.indexOf(name)===-1){skip=true;if(nonTextTagsArray.indexOf(name)!==-1){skipText=true;skipTextDepth=1}skipMap[depth]=true}depth++;if(skip){return}result+="<"+name;if(!allowedAttributesMap||has(allowedAttributesMap,name)||allowedAttributesMap["*"]){each(attribs,function(value,a){if(!allowedAttributesMap||has(allowedAttributesMap,name)&&allowedAttributesMap[name].indexOf(a)!==-1||allowedAttributesMap["*"]&&allowedAttributesMap["*"].indexOf(a)!==-1||has(allowedAttributesGlobMap,name)&&allowedAttributesGlobMap[name].test(a)||allowedAttributesGlobMap["*"]&&allowedAttributesGlobMap["*"].test(a)){if(a==="href"||a==="src"){if(naughtyHref(name,value)){delete frame.attribs[a];return}}if(a==="class"){value=filterClasses(value,allowedClassesMap[name]);if(!value.length){delete frame.attribs[a];return}}result+=" "+a;if(value.length){result+='="'+escapeHtml(value)+'"'}}else{delete frame.attribs[a]}})}if(options.selfClosing.indexOf(name)!==-1){result+=" />"}else{result+=">";if(frame.innerText&&!hasText&&!options.textFilter){result+=frame.innerText}}},ontext:function(text){if(skipText){return}var lastFrame=stack[stack.length-1];var tag;if(lastFrame){tag=lastFrame.tag;text=lastFrame.innerText!==undefined?lastFrame.innerText:text}if(tag==="script"||tag==="style"){result+=text}else{var escaped=escapeHtml(text);if(options.textFilter){result+=options.textFilter(escaped)}else{result+=escaped}}if(stack.length){var frame=stack[stack.length-1];frame.text+=text}},onclosetag:function(name){if(skipText){skipTextDepth--;if(!skipTextDepth){skipText=false}else{return}}var frame=stack.pop();if(!frame){return}skipText=false;depth--;if(skipMap[depth]){delete skipMap[depth];frame.updateParentNodeText();return}if(transformMap[depth]){name=transformMap[depth];delete transformMap[depth]}if(options.exclusiveFilter&&options.exclusiveFilter(frame)){result=result.substr(0,frame.tagPosition);return}frame.updateParentNodeText();if(options.selfClosing.indexOf(name)!==-1){return}result+=""}},options.parser);parser.write(html);parser.end();return result;function escapeHtml(s){if(typeof s!=="string"){s=s+""}return s.replace(/\&/g,"&").replace(//g,">").replace(/\"/g,""")}function naughtyHref(name,href){href=href.replace(/[\x00-\x20]+/g,"");href=href.replace(/<\!\-\-.*?\-\-\>/g,"");var matches=href.match(/^([a-zA-Z]+)\:/);if(!matches){return false}var scheme=matches[1].toLowerCase();if(has(options.allowedSchemesByTag,name)){return options.allowedSchemesByTag[name].indexOf(scheme)===-1}return!options.allowedSchemes||options.allowedSchemes.indexOf(scheme)===-1}function filterClasses(classes,allowed){if(!allowed){return classes}classes=classes.split(/\s+/);return classes.filter(function(clss){return allowed.indexOf(clss)!==-1}).join(" ")}}var htmlParserDefaults={decodeEntities:true};sanitizeHtml.defaults={allowedTags:["h3","h4","h5","h6","blockquote","p","a","ul","ol","nl","li","b","i","strong","em","strike","code","hr","br","div","table","thead","caption","tbody","tr","th","td","pre"],allowedAttributes:{a:["href","name","target"],img:["src"]},selfClosing:["img","br","hr","area","base","basefont","input","link","meta"],allowedSchemes:["http","https","ftp","mailto"],allowedSchemesByTag:{}};sanitizeHtml.simpleTransform=function(newTagName,newAttribs,merge){merge=merge===undefined?true:merge;newAttribs=newAttribs||{};return function(tagName,attribs){var attrib;if(merge){for(attrib in newAttribs){attribs[attrib]=newAttribs[attrib]}}else{attribs=newAttribs}return{tagName:newTagName,attribs:attribs}}}},{htmlparser2:36,"regexp-quote":54,xtend:58}],2:[function(require,module,exports){"use strict";exports.toByteArray=toByteArray;exports.fromByteArray=fromByteArray;var lookup=[];var revLookup=[];var Arr=typeof Uint8Array!=="undefined"?Uint8Array:Array;function init(){var code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var i=0,len=code.length;i0){throw new Error("Invalid string. Length must be a multiple of 4")}placeHolders=b64[len-2]==="="?2:b64[len-1]==="="?1:0;arr=new Arr(len*3/4-placeHolders);l=placeHolders>0?len-4:len;var L=0;for(i=0,j=0;i>16&255;arr[L++]=tmp>>8&255;arr[L++]=tmp&255}if(placeHolders===2){tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4;arr[L++]=tmp&255}else if(placeHolders===1){tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2;arr[L++]=tmp>>8&255;arr[L++]=tmp&255}return arr}function tripletToBase64(num){return lookup[num>>18&63]+lookup[num>>12&63]+lookup[num>>6&63]+lookup[num&63]}function encodeChunk(uint8,start,end){var tmp;var output=[];for(var i=start;ilen2?len2:i+maxChunkLength))}if(extraBytes===1){tmp=uint8[len-1];output+=lookup[tmp>>2];output+=lookup[tmp<<4&63];output+="=="}else if(extraBytes===2){tmp=(uint8[len-2]<<8)+uint8[len-1];output+=lookup[tmp>>10];output+=lookup[tmp>>4&63];output+=lookup[tmp<<2&63];output+="="}parts.push(output);return parts.join("")}},{}],3:[function(require,module,exports){},{}],4:[function(require,module,exports){(function(global){"use strict";var buffer=require("buffer");var Buffer=buffer.Buffer;var SlowBuffer=buffer.SlowBuffer;var MAX_LEN=buffer.kMaxLength||2147483647;exports.alloc=function alloc(size,fill,encoding){if(typeof Buffer.alloc==="function"){return Buffer.alloc(size,fill,encoding)}if(typeof encoding==="number"){throw new TypeError("encoding must not be number")}if(typeof size!=="number"){throw new TypeError("size must be a number")}if(size>MAX_LEN){throw new RangeError("size is too large")}var enc=encoding;var _fill=fill;if(_fill===undefined){enc=undefined;_fill=0}var buf=new Buffer(size);if(typeof _fill==="string"){var fillBuf=new Buffer(_fill,enc);var flen=fillBuf.length;var i=-1;while(++iMAX_LEN){throw new RangeError("size is too large")}return new Buffer(size)};exports.from=function from(value,encodingOrOffset,length){if(typeof Buffer.from==="function"&&(!global.Uint8Array||Uint8Array.from!==Buffer.from)){return Buffer.from(value,encodingOrOffset,length)}if(typeof value==="number"){throw new TypeError('"value" argument must not be a number')}if(typeof value==="string"){return new Buffer(value,encodingOrOffset)}if(typeof ArrayBuffer!=="undefined"&&value instanceof ArrayBuffer){var offset=encodingOrOffset;if(arguments.length===1){return new Buffer(value)}if(typeof offset==="undefined"){offset=0}var len=length;if(typeof len==="undefined"){len=value.byteLength-offset}if(offset>=value.byteLength){throw new RangeError("'offset' is out of bounds")}if(len>value.byteLength-offset){throw new RangeError("'length' is out of bounds")}return new Buffer(value.slice(offset,offset+len))}if(Buffer.isBuffer(value)){var out=new Buffer(value.length);value.copy(out,0,0,value.length);return out}if(value){if(Array.isArray(value)||typeof ArrayBuffer!=="undefined"&&value.buffer instanceof ArrayBuffer||"length"in value){return new Buffer(value)}if(value.type==="Buffer"&&Array.isArray(value.data)){return new Buffer(value.data)}}throw new TypeError("First argument must be a string, Buffer, "+"ArrayBuffer, Array, or array-like object.")};exports.allocUnsafeSlow=function allocUnsafeSlow(size){if(typeof Buffer.allocUnsafeSlow==="function"){return Buffer.allocUnsafeSlow(size)}if(typeof size!=="number"){throw new TypeError("size must be a number")}if(size>=MAX_LEN){throw new RangeError("size is too large")}return new SlowBuffer(size)}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{buffer:5}],5:[function(require,module,exports){(function(global){"use strict";var base64=require("base64-js");var ieee754=require("ieee754");var isArray=require("isarray");exports.Buffer=Buffer;exports.SlowBuffer=SlowBuffer;exports.INSPECT_MAX_BYTES=50;Buffer.TYPED_ARRAY_SUPPORT=global.TYPED_ARRAY_SUPPORT!==undefined?global.TYPED_ARRAY_SUPPORT:typedArraySupport();exports.kMaxLength=kMaxLength();function typedArraySupport(){try{var arr=new Uint8Array(1);arr.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}};return arr.foo()===42&&typeof arr.subarray==="function"&&arr.subarray(1,1).byteLength===0}catch(e){return false}}function kMaxLength(){return Buffer.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function createBuffer(that,length){if(kMaxLength()=kMaxLength()){throw new RangeError("Attempt to allocate Buffer larger than maximum "+"size: 0x"+kMaxLength().toString(16)+" bytes")}return length|0}function SlowBuffer(length){if(+length!=length){length=0}return Buffer.alloc(+length)}Buffer.isBuffer=function isBuffer(b){return!!(b!=null&&b._isBuffer)};Buffer.compare=function compare(a,b){if(!Buffer.isBuffer(a)||!Buffer.isBuffer(b)){throw new TypeError("Arguments must be Buffers")}if(a===b)return 0;var x=a.length;var y=b.length;for(var i=0,len=Math.min(x,y);i>>1;case"base64":return base64ToBytes(string).length;default:if(loweredCase)return utf8ToBytes(string).length;encoding=(""+encoding).toLowerCase();loweredCase=true}}}Buffer.byteLength=byteLength;function slowToString(encoding,start,end){var loweredCase=false;if(start===undefined||start<0){start=0}if(start>this.length){return""}if(end===undefined||end>this.length){end=this.length}if(end<=0){return""}end>>>=0;start>>>=0;if(end<=start){return""}if(!encoding)encoding="utf8";while(true){switch(encoding){case"hex":return hexSlice(this,start,end);case"utf8":case"utf-8":return utf8Slice(this,start,end);case"ascii":return asciiSlice(this,start,end);case"latin1":case"binary":return latin1Slice(this,start,end);case"base64":return base64Slice(this,start,end);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,start,end);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(encoding+"").toLowerCase();loweredCase=true}}}Buffer.prototype._isBuffer=true;function swap(b,n,m){var i=b[n];b[n]=b[m];b[m]=i}Buffer.prototype.swap16=function swap16(){var len=this.length;if(len%2!==0){throw new RangeError("Buffer size must be a multiple of 16-bits")}for(var i=0;i0){str=this.toString("hex",0,max).match(/.{2}/g).join(" ");if(this.length>max)str+=" ... "}return""};Buffer.prototype.compare=function compare(target,start,end,thisStart,thisEnd){if(!Buffer.isBuffer(target)){throw new TypeError("Argument must be a Buffer")}if(start===undefined){start=0}if(end===undefined){end=target?target.length:0}if(thisStart===undefined){thisStart=0}if(thisEnd===undefined){thisEnd=this.length}if(start<0||end>target.length||thisStart<0||thisEnd>this.length){throw new RangeError("out of range index")}if(thisStart>=thisEnd&&start>=end){return 0}if(thisStart>=thisEnd){return-1}if(start>=end){return 1}start>>>=0;end>>>=0;thisStart>>>=0;thisEnd>>>=0;if(this===target)return 0;var x=thisEnd-thisStart;var y=end-start;var len=Math.min(x,y);var thisCopy=this.slice(thisStart,thisEnd);var targetCopy=target.slice(start,end);for(var i=0;i2147483647){byteOffset=2147483647}else if(byteOffset<-2147483648){byteOffset=-2147483648}byteOffset=+byteOffset;if(isNaN(byteOffset)){byteOffset=dir?0:buffer.length-1}if(byteOffset<0)byteOffset=buffer.length+byteOffset;if(byteOffset>=buffer.length){if(dir)return-1;else byteOffset=buffer.length-1}else if(byteOffset<0){if(dir)byteOffset=0;else return-1}if(typeof val==="string"){val=Buffer.from(val,encoding)}if(Buffer.isBuffer(val)){if(val.length===0){return-1}return arrayIndexOf(buffer,val,byteOffset,encoding,dir)}else if(typeof val==="number"){val=val&255;if(Buffer.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf==="function"){if(dir){return Uint8Array.prototype.indexOf.call(buffer,val,byteOffset)}else{return Uint8Array.prototype.lastIndexOf.call(buffer,val,byteOffset)}}return arrayIndexOf(buffer,[val],byteOffset,encoding,dir)}throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(arr,val,byteOffset,encoding,dir){var indexSize=1;var arrLength=arr.length;var valLength=val.length;if(encoding!==undefined){encoding=String(encoding).toLowerCase();if(encoding==="ucs2"||encoding==="ucs-2"||encoding==="utf16le"||encoding==="utf-16le"){if(arr.length<2||val.length<2){return-1}indexSize=2;arrLength/=2;valLength/=2;byteOffset/=2}}function read(buf,i){if(indexSize===1){return buf[i]}else{return buf.readUInt16BE(i*indexSize)}}var i;if(dir){var foundIndex=-1;for(i=byteOffset;iarrLength)byteOffset=arrLength-valLength;for(i=byteOffset;i>=0;i--){var found=true;for(var j=0;jremaining){length=remaining}}var strLen=string.length;if(strLen%2!==0)throw new TypeError("Invalid hex string");if(length>strLen/2){length=strLen/2}for(var i=0;iremaining)length=remaining;if(string.length>0&&(length<0||offset<0)||offset>this.length){throw new RangeError("Attempt to write outside buffer bounds")}if(!encoding)encoding="utf8";var loweredCase=false;for(;;){switch(encoding){case"hex":return hexWrite(this,string,offset,length);case"utf8":case"utf-8":return utf8Write(this,string,offset,length);case"ascii":return asciiWrite(this,string,offset,length);case"latin1":case"binary":return latin1Write(this,string,offset,length);case"base64":return base64Write(this,string,offset,length);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,string,offset,length);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(""+encoding).toLowerCase();loweredCase=true}}};Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function base64Slice(buf,start,end){if(start===0&&end===buf.length){return base64.fromByteArray(buf)}else{return base64.fromByteArray(buf.slice(start,end))}}function utf8Slice(buf,start,end){end=Math.min(buf.length,end);var res=[];var i=start;while(i239?4:firstByte>223?3:firstByte>191?2:1;if(i+bytesPerSequence<=end){var secondByte,thirdByte,fourthByte,tempCodePoint;switch(bytesPerSequence){case 1:if(firstByte<128){codePoint=firstByte}break;case 2:secondByte=buf[i+1];if((secondByte&192)===128){tempCodePoint=(firstByte&31)<<6|secondByte&63;if(tempCodePoint>127){codePoint=tempCodePoint}}break;case 3:secondByte=buf[i+1];thirdByte=buf[i+2];if((secondByte&192)===128&&(thirdByte&192)===128){tempCodePoint=(firstByte&15)<<12|(secondByte&63)<<6|thirdByte&63;if(tempCodePoint>2047&&(tempCodePoint<55296||tempCodePoint>57343)){codePoint=tempCodePoint}}break;case 4:secondByte=buf[i+1];thirdByte=buf[i+2];fourthByte=buf[i+3];if((secondByte&192)===128&&(thirdByte&192)===128&&(fourthByte&192)===128){tempCodePoint=(firstByte&15)<<18|(secondByte&63)<<12|(thirdByte&63)<<6|fourthByte&63;if(tempCodePoint>65535&&tempCodePoint<1114112){codePoint=tempCodePoint}}}}if(codePoint===null){codePoint=65533;bytesPerSequence=1}else if(codePoint>65535){codePoint-=65536;res.push(codePoint>>>10&1023|55296);codePoint=56320|codePoint&1023}res.push(codePoint);i+=bytesPerSequence}return decodeCodePointsArray(res)}var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(codePoints){var len=codePoints.length;if(len<=MAX_ARGUMENTS_LENGTH){return String.fromCharCode.apply(String,codePoints)}var res="";var i=0;while(ilen)end=len;var out="";for(var i=start;ilen){start=len}if(end<0){end+=len;if(end<0)end=0}else if(end>len){end=len}if(endlength)throw new RangeError("Trying to access beyond buffer length")}Buffer.prototype.readUIntLE=function readUIntLE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i0&&(mul*=256)){val+=this[offset+--byteLength]*mul}return val};Buffer.prototype.readUInt8=function readUInt8(offset,noAssert){if(!noAssert)checkOffset(offset,1,this.length);return this[offset]};Buffer.prototype.readUInt16LE=function readUInt16LE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);return this[offset]|this[offset+1]<<8};Buffer.prototype.readUInt16BE=function readUInt16BE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);return this[offset]<<8|this[offset+1]};Buffer.prototype.readUInt32LE=function readUInt32LE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return(this[offset]|this[offset+1]<<8|this[offset+2]<<16)+this[offset+3]*16777216};Buffer.prototype.readUInt32BE=function readUInt32BE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]*16777216+(this[offset+1]<<16|this[offset+2]<<8|this[offset+3])};Buffer.prototype.readIntLE=function readIntLE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readIntBE=function readIntBE(offset,byteLength,noAssert){offset=offset|0;byteLength=byteLength|0;if(!noAssert)checkOffset(offset,byteLength,this.length); var i=byteLength;var mul=1;var val=this[offset+--i];while(i>0&&(mul*=256)){val+=this[offset+--i]*mul}mul*=128;if(val>=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readInt8=function readInt8(offset,noAssert){if(!noAssert)checkOffset(offset,1,this.length);if(!(this[offset]&128))return this[offset];return(255-this[offset]+1)*-1};Buffer.prototype.readInt16LE=function readInt16LE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset]|this[offset+1]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt16BE=function readInt16BE(offset,noAssert){if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset+1]|this[offset]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt32LE=function readInt32LE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]|this[offset+1]<<8|this[offset+2]<<16|this[offset+3]<<24};Buffer.prototype.readInt32BE=function readInt32BE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return this[offset]<<24|this[offset+1]<<16|this[offset+2]<<8|this[offset+3]};Buffer.prototype.readFloatLE=function readFloatLE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,true,23,4)};Buffer.prototype.readFloatBE=function readFloatBE(offset,noAssert){if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,false,23,4)};Buffer.prototype.readDoubleLE=function readDoubleLE(offset,noAssert){if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,true,52,8)};Buffer.prototype.readDoubleBE=function readDoubleBE(offset,noAssert){if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,false,52,8)};function checkInt(buf,value,offset,ext,max,min){if(!Buffer.isBuffer(buf))throw new TypeError('"buffer" argument must be a Buffer instance');if(value>max||valuebuf.length)throw new RangeError("Index out of range")}Buffer.prototype.writeUIntLE=function writeUIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;byteLength=byteLength|0;if(!noAssert){var maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0)}var mul=1;var i=0;this[offset]=value&255;while(++i=0&&(mul*=256)){this[offset+i]=value/mul&255}return offset+byteLength};Buffer.prototype.writeUInt8=function writeUInt8(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,1,255,0);if(!Buffer.TYPED_ARRAY_SUPPORT)value=Math.floor(value);this[offset]=value&255;return offset+1};function objectWriteUInt16(buf,value,offset,littleEndian){if(value<0)value=65535+value+1;for(var i=0,j=Math.min(buf.length-offset,2);i>>(littleEndian?i:1-i)*8}}Buffer.prototype.writeUInt16LE=function writeUInt16LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,65535,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value&255;this[offset+1]=value>>>8}else{objectWriteUInt16(this,value,offset,true)}return offset+2};Buffer.prototype.writeUInt16BE=function writeUInt16BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,65535,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>8;this[offset+1]=value&255}else{objectWriteUInt16(this,value,offset,false)}return offset+2};function objectWriteUInt32(buf,value,offset,littleEndian){if(value<0)value=4294967295+value+1;for(var i=0,j=Math.min(buf.length-offset,4);i>>(littleEndian?i:3-i)*8&255}}Buffer.prototype.writeUInt32LE=function writeUInt32LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset+3]=value>>>24;this[offset+2]=value>>>16;this[offset+1]=value>>>8;this[offset]=value&255}else{objectWriteUInt32(this,value,offset,true)}return offset+4};Buffer.prototype.writeUInt32BE=function writeUInt32BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255}else{objectWriteUInt32(this,value,offset,false)}return offset+4};Buffer.prototype.writeIntLE=function writeIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}var i=0;var mul=1;var sub=0;this[offset]=value&255;while(++i>0)-sub&255}return offset+byteLength};Buffer.prototype.writeIntBE=function writeIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset|0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}var i=byteLength-1;var mul=1;var sub=0;this[offset+i]=value&255;while(--i>=0&&(mul*=256)){if(value<0&&sub===0&&this[offset+i+1]!==0){sub=1}this[offset+i]=(value/mul>>0)-sub&255}return offset+byteLength};Buffer.prototype.writeInt8=function writeInt8(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,1,127,-128);if(!Buffer.TYPED_ARRAY_SUPPORT)value=Math.floor(value);if(value<0)value=255+value+1;this[offset]=value&255;return offset+1};Buffer.prototype.writeInt16LE=function writeInt16LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value&255;this[offset+1]=value>>>8}else{objectWriteUInt16(this,value,offset,true)}return offset+2};Buffer.prototype.writeInt16BE=function writeInt16BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>8;this[offset+1]=value&255}else{objectWriteUInt16(this,value,offset,false)}return offset+2};Buffer.prototype.writeInt32LE=function writeInt32LE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value&255;this[offset+1]=value>>>8;this[offset+2]=value>>>16;this[offset+3]=value>>>24}else{objectWriteUInt32(this,value,offset,true)}return offset+4};Buffer.prototype.writeInt32BE=function writeInt32BE(value,offset,noAssert){value=+value;offset=offset|0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);if(value<0)value=4294967295+value+1;if(Buffer.TYPED_ARRAY_SUPPORT){this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255}else{objectWriteUInt32(this,value,offset,false)}return offset+4};function checkIEEE754(buf,value,offset,ext,max,min){if(offset+ext>buf.length)throw new RangeError("Index out of range");if(offset<0)throw new RangeError("Index out of range")}function writeFloat(buf,value,offset,littleEndian,noAssert){if(!noAssert){checkIEEE754(buf,value,offset,4,3.4028234663852886e38,-3.4028234663852886e38)}ieee754.write(buf,value,offset,littleEndian,23,4);return offset+4}Buffer.prototype.writeFloatLE=function writeFloatLE(value,offset,noAssert){return writeFloat(this,value,offset,true,noAssert)};Buffer.prototype.writeFloatBE=function writeFloatBE(value,offset,noAssert){return writeFloat(this,value,offset,false,noAssert)};function writeDouble(buf,value,offset,littleEndian,noAssert){if(!noAssert){checkIEEE754(buf,value,offset,8,1.7976931348623157e308,-1.7976931348623157e308)}ieee754.write(buf,value,offset,littleEndian,52,8);return offset+8}Buffer.prototype.writeDoubleLE=function writeDoubleLE(value,offset,noAssert){return writeDouble(this,value,offset,true,noAssert)};Buffer.prototype.writeDoubleBE=function writeDoubleBE(value,offset,noAssert){return writeDouble(this,value,offset,false,noAssert)};Buffer.prototype.copy=function copy(target,targetStart,start,end){if(!start)start=0;if(!end&&end!==0)end=this.length;if(targetStart>=target.length)targetStart=target.length;if(!targetStart)targetStart=0;if(end>0&&end=this.length)throw new RangeError("sourceStart out of bounds");if(end<0)throw new RangeError("sourceEnd out of bounds");if(end>this.length)end=this.length;if(target.length-targetStart=0;--i){target[i+targetStart]=this[i+start]}}else if(len<1e3||!Buffer.TYPED_ARRAY_SUPPORT){for(i=0;i>>0;end=end===undefined?this.length:end>>>0;if(!val)val=0;var i;if(typeof val==="number"){for(i=start;i55295&&codePoint<57344){if(!leadSurrogate){if(codePoint>56319){if((units-=3)>-1)bytes.push(239,191,189);continue}else if(i+1===length){if((units-=3)>-1)bytes.push(239,191,189);continue}leadSurrogate=codePoint;continue}if(codePoint<56320){if((units-=3)>-1)bytes.push(239,191,189);leadSurrogate=codePoint;continue}codePoint=(leadSurrogate-55296<<10|codePoint-56320)+65536}else if(leadSurrogate){if((units-=3)>-1)bytes.push(239,191,189)}leadSurrogate=null;if(codePoint<128){if((units-=1)<0)break;bytes.push(codePoint)}else if(codePoint<2048){if((units-=2)<0)break;bytes.push(codePoint>>6|192,codePoint&63|128)}else if(codePoint<65536){if((units-=3)<0)break;bytes.push(codePoint>>12|224,codePoint>>6&63|128,codePoint&63|128)}else if(codePoint<1114112){if((units-=4)<0)break;bytes.push(codePoint>>18|240,codePoint>>12&63|128,codePoint>>6&63|128,codePoint&63|128)}else{throw new Error("Invalid code point")}}return bytes}function asciiToBytes(str){var byteArray=[];for(var i=0;i>8;lo=c%256;byteArray.push(lo);byteArray.push(hi)}return byteArray}function base64ToBytes(str){return base64.toByteArray(base64clean(str))}function blitBuffer(src,dst,offset,length){for(var i=0;i=dst.length||i>=src.length)break;dst[i+offset]=src[i]}return i}function isnan(val){return val!==val}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"base64-js":2,ieee754:37,isarray:40}],6:[function(require,module,exports){(function(Buffer){function isArray(arg){if(Array.isArray){return Array.isArray(arg)}return objectToString(arg)==="[object Array]"}exports.isArray=isArray;function isBoolean(arg){return typeof arg==="boolean"}exports.isBoolean=isBoolean;function isNull(arg){return arg===null}exports.isNull=isNull;function isNullOrUndefined(arg){return arg==null}exports.isNullOrUndefined=isNullOrUndefined;function isNumber(arg){return typeof arg==="number"}exports.isNumber=isNumber;function isString(arg){return typeof arg==="string"}exports.isString=isString;function isSymbol(arg){return typeof arg==="symbol"}exports.isSymbol=isSymbol;function isUndefined(arg){return arg===void 0}exports.isUndefined=isUndefined;function isRegExp(re){return objectToString(re)==="[object RegExp]"}exports.isRegExp=isRegExp;function isObject(arg){return typeof arg==="object"&&arg!==null}exports.isObject=isObject;function isDate(d){return objectToString(d)==="[object Date]"}exports.isDate=isDate;function isError(e){return objectToString(e)==="[object Error]"||e instanceof Error}exports.isError=isError;function isFunction(arg){return typeof arg==="function"}exports.isFunction=isFunction;function isPrimitive(arg){return arg===null||typeof arg==="boolean"||typeof arg==="number"||typeof arg==="string"||typeof arg==="symbol"||typeof arg==="undefined"}exports.isPrimitive=isPrimitive;exports.isBuffer=Buffer.isBuffer;function objectToString(o){return Object.prototype.toString.call(o)}}).call(this,{isBuffer:require("../../is-buffer/index.js")})},{"../../is-buffer/index.js":39}],7:[function(require,module,exports){var ElementType=require("domelementtype");var entities=require("entities");var booleanAttributes={__proto__:null,allowfullscreen:true,async:true,autofocus:true,autoplay:true,checked:true,controls:true,default:true,defer:true,disabled:true,hidden:true,ismap:true,loop:true,multiple:true,muted:true,open:true,readonly:true,required:true,reversed:true,scoped:true,seamless:true,selected:true,typemustmatch:true};var unencodedElements={__proto__:null,style:true,script:true,xmp:true,iframe:true,noembed:true,noframes:true,plaintext:true,noscript:true};function formatAttrs(attributes,opts){if(!attributes)return;var output="",value;for(var key in attributes){value=attributes[key];if(output){output+=" "}if(!value&&booleanAttributes[key]){output+=key}else{output+=key+'="'+(opts.decodeEntities?entities.encodeXML(value):value)+'"'}}return output}var singleTag={__proto__:null,area:true,base:true,basefont:true,br:true,col:true,command:true,embed:true,frame:true,hr:true,img:true,input:true,isindex:true,keygen:true,link:true,meta:true,param:true,source:true,track:true,wbr:true};var render=module.exports=function(dom,opts){if(!Array.isArray(dom)&&!dom.cheerio)dom=[dom];opts=opts||{};var output="";for(var i=0;i"}else{tag+=">";if(elem.children){tag+=render(elem.children,opts)}if(!singleTag[elem.name]||opts.xmlMode){tag+=""}}return tag}function renderDirective(elem){return"<"+elem.data+">"}function renderText(elem,opts){var data=elem.data||"";if(opts.decodeEntities&&!(elem.parent&&elem.parent.name in unencodedElements)){data=entities.encodeXML(data)}return data}function renderCdata(elem){return""}function renderComment(elem){return""}},{domelementtype:8,entities:20}],8:[function(require,module,exports){module.exports={Text:"text",Directive:"directive",Comment:"comment",Script:"script",Style:"style",Tag:"tag",CDATA:"cdata",isTag:function(elem){return elem.type==="tag"||elem.type==="script"||elem.type==="style"}}},{}],9:[function(require,module,exports){module.exports={Text:"text",Directive:"directive",Comment:"comment",Script:"script",Style:"style",Tag:"tag",CDATA:"cdata",Doctype:"doctype",isTag:function(elem){return elem.type==="tag"||elem.type==="script"||elem.type==="style"}}},{}],10:[function(require,module,exports){var ElementType=require("domelementtype");var re_whitespace=/\s+/g;var NodePrototype=require("./lib/node");var ElementPrototype=require("./lib/element");function DomHandler(callback,options,elementCB){if(typeof callback==="object"){elementCB=options;options=callback;callback=null}else if(typeof options==="function"){elementCB=options;options=defaultOpts}this._callback=callback;this._options=options||defaultOpts;this._elementCB=elementCB;this.dom=[];this._done=false;this._tagStack=[];this._parser=this._parser||null}var defaultOpts={normalizeWhitespace:false,withStartIndices:false};DomHandler.prototype.onparserinit=function(parser){this._parser=parser};DomHandler.prototype.onreset=function(){DomHandler.call(this,this._callback,this._options,this._elementCB)};DomHandler.prototype.onend=function(){if(this._done)return;this._done=true;this._parser=null;this._handleCallback(null)};DomHandler.prototype._handleCallback=DomHandler.prototype.onerror=function(error){if(typeof this._callback==="function"){this._callback(error,this.dom)}else{if(error)throw error}};DomHandler.prototype.onclosetag=function(){var elem=this._tagStack.pop();if(this._elementCB)this._elementCB(elem)};DomHandler.prototype._addDomElement=function(element){var parent=this._tagStack[this._tagStack.length-1];var siblings=parent?parent.children:this.dom;var previousSibling=siblings[siblings.length-1];element.next=null;if(this._options.withStartIndices){element.startIndex=this._parser.startIndex}if(this._options.withDomLvl1){element.__proto__=element.type==="tag"?ElementPrototype:NodePrototype}if(previousSibling){element.prev=previousSibling;previousSibling.next=element}else{element.prev=null}siblings.push(element);element.parent=parent||null};DomHandler.prototype.onopentag=function(name,attribs){var element={type:name==="script"?ElementType.Script:name==="style"?ElementType.Style:ElementType.Tag,name:name,attribs:attribs,children:[]};this._addDomElement(element);this._tagStack.push(element)};DomHandler.prototype.ontext=function(data){var normalize=this._options.normalizeWhitespace||this._options.ignoreWhitespace;var lastTag;if(!this._tagStack.length&&this.dom.length&&(lastTag=this.dom[this.dom.length-1]).type===ElementType.Text){if(normalize){lastTag.data=(lastTag.data+data).replace(re_whitespace," ")}else{lastTag.data+=data}}else{if(this._tagStack.length&&(lastTag=this._tagStack[this._tagStack.length-1])&&(lastTag=lastTag.children[lastTag.children.length-1])&&lastTag.type===ElementType.Text){if(normalize){lastTag.data=(lastTag.data+data).replace(re_whitespace," ")}else{lastTag.data+=data}}else{if(normalize){data=data.replace(re_whitespace," ")}this._addDomElement({data:data,type:ElementType.Text})}}};DomHandler.prototype.oncomment=function(data){var lastTag=this._tagStack[this._tagStack.length-1];if(lastTag&&lastTag.type===ElementType.Comment){lastTag.data+=data;return}var element={data:data,type:ElementType.Comment};this._addDomElement(element);this._tagStack.push(element)};DomHandler.prototype.oncdatastart=function(){var element={children:[{data:"",type:ElementType.Text}],type:ElementType.CDATA};this._addDomElement(element);this._tagStack.push(element)};DomHandler.prototype.oncommentend=DomHandler.prototype.oncdataend=function(){this._tagStack.pop()};DomHandler.prototype.onprocessinginstruction=function(name,data){this._addDomElement({name:name,data:data,type:ElementType.Directive})};module.exports=DomHandler},{"./lib/element":11,"./lib/node":12,domelementtype:9}],11:[function(require,module,exports){var NodePrototype=require("./node");var ElementPrototype=module.exports=Object.create(NodePrototype);var domLvl1={tagName:"name"};Object.keys(domLvl1).forEach(function(key){var shorthand=domLvl1[key];Object.defineProperty(ElementPrototype,key,{get:function(){return this[shorthand]||null},set:function(val){this[shorthand]=val;return val}})})},{"./node":12}],12:[function(require,module,exports){var NodePrototype=module.exports={get firstChild(){var children=this.children;return children&&children[0]||null},get lastChild(){var children=this.children;return children&&children[children.length-1]||null},get nodeType(){return nodeTypes[this.type]||nodeTypes.element}};var domLvl1={tagName:"name",childNodes:"children",parentNode:"parent",previousSibling:"prev",nextSibling:"next",nodeValue:"data"};var nodeTypes={element:1,text:3,cdata:4,comment:8};Object.keys(domLvl1).forEach(function(key){var shorthand=domLvl1[key];Object.defineProperty(NodePrototype,key,{get:function(){return this[shorthand]||null},set:function(val){this[shorthand]=val;return val}})})},{}],13:[function(require,module,exports){var DomUtils=module.exports;[require("./lib/stringify"),require("./lib/traversal"),require("./lib/manipulation"),require("./lib/querying"),require("./lib/legacy"),require("./lib/helpers")].forEach(function(ext){Object.keys(ext).forEach(function(key){DomUtils[key]=ext[key].bind(DomUtils)})})},{"./lib/helpers":14,"./lib/legacy":15,"./lib/manipulation":16,"./lib/querying":17,"./lib/stringify":18,"./lib/traversal":19}],14:[function(require,module,exports){exports.removeSubsets=function(nodes){var idx=nodes.length,node,ancestor,replace;while(--idx>-1){node=ancestor=nodes[idx];nodes[idx]=null;replace=true;while(ancestor){if(nodes.indexOf(ancestor)>-1){replace=false;nodes.splice(idx,1);break}ancestor=ancestor.parent}if(replace){nodes[idx]=node}}return nodes};var POSITION={DISCONNECTED:1,PRECEDING:2,FOLLOWING:4,CONTAINS:8,CONTAINED_BY:16};var comparePos=exports.compareDocumentPosition=function(nodeA,nodeB){var aParents=[];var bParents=[];var current,sharedParent,siblings,aSibling,bSibling,idx;if(nodeA===nodeB){return 0}current=nodeA;while(current){aParents.unshift(current);current=current.parent}current=nodeB;while(current){bParents.unshift(current);current=current.parent}idx=0;while(aParents[idx]===bParents[idx]){idx++}if(idx===0){return POSITION.DISCONNECTED}sharedParent=aParents[idx-1];siblings=sharedParent.children;aSibling=aParents[idx];bSibling=bParents[idx];if(siblings.indexOf(aSibling)>siblings.indexOf(bSibling)){if(sharedParent===nodeB){return POSITION.FOLLOWING|POSITION.CONTAINED_BY}return POSITION.FOLLOWING}else{if(sharedParent===nodeA){return POSITION.PRECEDING|POSITION.CONTAINS}return POSITION.PRECEDING}};exports.uniqueSort=function(nodes){var idx=nodes.length,node,position;nodes=nodes.slice();while(--idx>-1){node=nodes[idx];position=nodes.indexOf(node);if(position>-1&&position0){childs=find(test,childs,recurse,limit);result=result.concat(childs);limit-=childs.length;if(limit<=0)break}}return result}function findOneChild(test,elems){for(var i=0,l=elems.length;i0){elem=findOne(test,elems[i].children)}}return elem}function existsOne(test,elems){for(var i=0,l=elems.length;i0&&existsOne(test,elems[i].children))){return true}}return false}function findAll(test,elems){var result=[];for(var i=0,j=elems.length;i0){result=result.concat(findAll(test,elems[i].children))}}return result}},{domelementtype:9}],18:[function(require,module,exports){var ElementType=require("domelementtype"),getOuterHTML=require("dom-serializer"),isTag=ElementType.isTag;module.exports={getInnerHTML:getInnerHTML,getOuterHTML:getOuterHTML,getText:getText};function getInnerHTML(elem,opts){return elem.children?elem.children.map(function(elem){return getOuterHTML(elem,opts)}).join(""):""}function getText(elem){if(Array.isArray(elem))return elem.map(getText).join("");if(isTag(elem)||elem.type===ElementType.CDATA)return getText(elem.children);if(elem.type===ElementType.Text)return elem.data;return""}},{"dom-serializer":7,domelementtype:9}],19:[function(require,module,exports){var getChildren=exports.getChildren=function(elem){return elem.children};var getParent=exports.getParent=function(elem){return elem.parent};exports.getSiblings=function(elem){var parent=getParent(elem);return parent?getChildren(parent):[elem]};exports.getAttributeValue=function(elem,name){return elem.attribs&&elem.attribs[name]};exports.hasAttrib=function(elem,name){return!!elem.attribs&&hasOwnProperty.call(elem.attribs,name)};exports.getName=function(elem){return elem.name}},{}],20:[function(require,module,exports){var encode=require("./lib/encode.js"),decode=require("./lib/decode.js");exports.decode=function(data,level){return(!level||level<=0?decode.XML:decode.HTML)(data)};exports.decodeStrict=function(data,level){return(!level||level<=0?decode.XML:decode.HTMLStrict)(data)};exports.encode=function(data,level){return(!level||level<=0?encode.XML:encode.HTML)(data)};exports.encodeXML=encode.XML;exports.encodeHTML4=exports.encodeHTML5=exports.encodeHTML=encode.HTML;exports.decodeXML=exports.decodeXMLStrict=decode.XML;exports.decodeHTML4=exports.decodeHTML5=exports.decodeHTML=decode.HTML;exports.decodeHTML4Strict=exports.decodeHTML5Strict=exports.decodeHTMLStrict=decode.HTMLStrict;exports.escape=encode.escape},{"./lib/decode.js":21,"./lib/encode.js":23}],21:[function(require,module,exports){var entityMap=require("../maps/entities.json"),legacyMap=require("../maps/legacy.json"),xmlMap=require("../maps/xml.json"),decodeCodePoint=require("./decode_codepoint.js");var decodeXMLStrict=getStrictDecoder(xmlMap),decodeHTMLStrict=getStrictDecoder(entityMap);function getStrictDecoder(map){var keys=Object.keys(map).join("|"),replace=getReplacer(map);keys+="|#[xX][\\da-fA-F]+|#\\d+";var re=new RegExp("&(?:"+keys+");","g");return function(str){return String(str).replace(re,replace)}}var decodeHTML=function(){var legacy=Object.keys(legacyMap).sort(sorter);var keys=Object.keys(entityMap).sort(sorter);for(var i=0,j=0;i=55296&&codePoint<=57343||codePoint>1114111){return"�"}if(codePoint in decodeMap){codePoint=decodeMap[codePoint]}var output="";if(codePoint>65535){codePoint-=65536;output+=String.fromCharCode(codePoint>>>10&1023|55296);codePoint=56320|codePoint&1023}output+=String.fromCharCode(codePoint);return output}},{"../maps/decode.json":24}],23:[function(require,module,exports){var inverseXML=getInverseObj(require("../maps/xml.json")),xmlReplacer=getInverseReplacer(inverseXML);exports.XML=getInverse(inverseXML,xmlReplacer);var inverseHTML=getInverseObj(require("../maps/entities.json")),htmlReplacer=getInverseReplacer(inverseHTML);exports.HTML=getInverse(inverseHTML,htmlReplacer);function getInverseObj(obj){return Object.keys(obj).sort().reduce(function(inverse,name){inverse[obj[name]]="&"+name+";";return inverse},{})}function getInverseReplacer(inverse){var single=[],multiple=[];Object.keys(inverse).forEach(function(k){if(k.length===1){single.push("\\"+k)}else{multiple.push(k)}});multiple.unshift("["+single.join("")+"]");return new RegExp(multiple.join("|"),"g")}var re_nonASCII=/[^\0-\x7F]/g,re_astralSymbols=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;function singleCharReplacer(c){return"&#x"+c.charCodeAt(0).toString(16).toUpperCase()+";"}function astralReplacer(c){var high=c.charCodeAt(0);var low=c.charCodeAt(1);var codePoint=(high-55296)*1024+low-56320+65536;return"&#x"+codePoint.toString(16).toUpperCase()+";"}function getInverse(inverse,re){function func(name){return inverse[name]}return function(data){return data.replace(re,func).replace(re_astralSymbols,astralReplacer).replace(re_nonASCII,singleCharReplacer)}}var re_xmlChars=getInverseReplacer(inverseXML);function escapeXML(data){return data.replace(re_xmlChars,singleCharReplacer).replace(re_astralSymbols,astralReplacer).replace(re_nonASCII,singleCharReplacer)}exports.escape=escapeXML},{"../maps/entities.json":25,"../maps/xml.json":27}],24:[function(require,module,exports){module.exports={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376}},{}],25:[function(require,module,exports){module.exports={Aacute:"Á",aacute:"á",Abreve:"Ă",abreve:"ă",ac:"∾",acd:"∿",acE:"∾̳",Acirc:"Â",acirc:"â",acute:"´",Acy:"А",acy:"а",AElig:"Æ",aelig:"æ",af:"⁡",Afr:"𝔄",afr:"𝔞",Agrave:"À",agrave:"à",alefsym:"ℵ",aleph:"ℵ",Alpha:"Α",alpha:"α",Amacr:"Ā",amacr:"ā",amalg:"⨿",amp:"&",AMP:"&",andand:"⩕",And:"⩓",and:"∧",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angmsd:"∡",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",Aogon:"Ą",aogon:"ą",Aopf:"𝔸",aopf:"𝕒",apacir:"⩯",ap:"≈",apE:"⩰",ape:"≊",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",Aring:"Å",aring:"å",Ascr:"𝒜",ascr:"𝒶",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",Bcy:"Б",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",Beta:"Β",beta:"β",beth:"ℶ",between:"≬",Bfr:"𝔅",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bNot:"⫭",bnot:"⌐",Bopf:"𝔹",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxHd:"╤",boxhD:"╥",boxHD:"╦",boxhu:"┴",boxHu:"╧",boxhU:"╨",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsolb:"⧅",bsol:"\\",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",Bumpeq:"≎",bumpeq:"≏",Cacute:"Ć",cacute:"ć",capand:"⩄",capbrcup:"⩉",capcap:"⩋",cap:"∩",Cap:"⋒",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",Ccaron:"Č",ccaron:"č",Ccedil:"Ç",ccedil:"ç",Ccirc:"Ĉ",ccirc:"ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",Cdot:"Ċ",cdot:"ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",CHcy:"Ч",chcy:"ч",check:"✓",checkmark:"✓",Chi:"Χ",chi:"χ",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cir:"○",cirE:"⧃",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",Colone:"⩴",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",Cscr:"𝒞",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cup:"∪",Cup:"⋓",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",Darr:"↡",dArr:"⇓",dash:"‐",Dashv:"⫤",dashv:"⊣",dbkarow:"⤏",dblac:"˝",Dcaron:"Ď",dcaron:"ď",Dcy:"Д",dcy:"д",ddagger:"‡",ddarr:"⇊",DD:"ⅅ",dd:"ⅆ",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",Delta:"Δ",delta:"δ",demptyv:"⦱",dfisht:"⥿",Dfr:"𝔇",dfr:"𝔡",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",DJcy:"Ђ",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",Dopf:"𝔻",dopf:"𝕕",Dot:"¨",dot:"˙",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrowBar:"⤓",downarrow:"↓",DownArrow:"↓",Downarrow:"⇓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVectorBar:"⥖",DownLeftVector:"↽",DownRightTeeVector:"⥟",DownRightVectorBar:"⥗",DownRightVector:"⇁",DownTeeArrow:"↧",DownTee:"⊤",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",Dscr:"𝒟",dscr:"𝒹",DScy:"Ѕ",dscy:"ѕ",dsol:"⧶",Dstrok:"Đ",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",DZcy:"Џ",dzcy:"џ",dzigrarr:"⟿",Eacute:"É",eacute:"é",easter:"⩮",Ecaron:"Ě",ecaron:"ě",Ecirc:"Ê",ecirc:"ê",ecir:"≖",ecolon:"≕",Ecy:"Э",ecy:"э",eDDot:"⩷",Edot:"Ė",edot:"ė",eDot:"≑",ee:"ⅇ",efDot:"≒",Efr:"𝔈",efr:"𝔢",eg:"⪚",Egrave:"È",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",Emacr:"Ē",emacr:"ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp13:" ",emsp14:" ",emsp:" ",ENG:"Ŋ",eng:"ŋ",ensp:" ",Eogon:"Ę",eogon:"ę",Eopf:"𝔼",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",Epsilon:"Ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",Esim:"⩳",esim:"≂",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",Fcy:"Ф",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",Ffr:"𝔉",ffr:"𝔣",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",Fopf:"𝔽",fopf:"𝕗",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",Gamma:"Γ",gamma:"γ",Gammad:"Ϝ",gammad:"ϝ",gap:"⪆",Gbreve:"Ğ",gbreve:"ğ",Gcedil:"Ģ",Gcirc:"Ĝ",gcirc:"ĝ",Gcy:"Г",gcy:"г",Gdot:"Ġ",gdot:"ġ",ge:"≥",gE:"≧",gEl:"⪌",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",gescc:"⪩",ges:"⩾",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",Gfr:"𝔊",gfr:"𝔤",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",GJcy:"Ѓ",gjcy:"ѓ",gla:"⪥",gl:"≷",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",Gopf:"𝔾",gopf:"𝕘",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",gtcc:"⪧",gtcir:"⩺",gt:">",GT:">",Gt:"≫",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",harrcir:"⥈",harr:"↔",hArr:"⇔",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"⁣",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",Im:"ℑ",imof:"⊷",imped:"Ƶ",Implies:"⇒",incare:"℅",in:"∈",infin:"∞",infintie:"⧝",inodot:"ı",intcal:"⊺",int:"∫",Int:"∬",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larrb:"⇤",larrbfs:"⤟",larr:"←",Larr:"↞",lArr:"⇐",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",latail:"⤙",lAtail:"⤛",lat:"⪫",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",LeftArrowBar:"⇤",leftarrow:"←",LeftArrow:"←",Leftarrow:"⇐",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVectorBar:"⥙",LeftDownVector:"⇃",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTeeArrow:"↤",LeftTee:"⊣",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangleBar:"⧏",LeftTriangle:"⊲",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVectorBar:"⥘",LeftUpVector:"↿",LeftVectorBar:"⥒",LeftVector:"↼",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",lescc:"⪨",les:"⩽",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",llarr:"⇇",ll:"≪",Ll:"⋘",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoustache:"⎰",lmoust:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftrightarrow:"⟷",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longmapsto:"⟼",longrightarrow:"⟶",LongRightArrow:"⟶",Longrightarrow:"⟹",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",ltcc:"⪦",ltcir:"⩹",lt:"<",LT:"<",Lt:"≪",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",midast:"*",midcir:"⫰",mid:"∣",middot:"·",minusb:"⊟",minus:"−",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natural:"♮",naturals:"ℕ",natur:"♮",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",ne:"≠",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nlE:"≦̸",nle:"≰",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangleBar:"⧏̸",NotLeftTriangle:"⋪",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangleBar:"⧐̸",NotRightTriangle:"⋫",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",nparallel:"∦",npar:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",nprec:"⊀",npreceq:"⪯̸",npre:"⪯̸",nrarrc:"⤳̸",nrarr:"↛",nrArr:"⇏",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",Ocirc:"Ô",ocirc:"ô",ocir:"⊚",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",orarr:"↻",Or:"⩔",or:"∨",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",otimesas:"⨶",Otimes:"⨷",otimes:"⊗",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",para:"¶",parallel:"∥",par:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plus:"+",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",prap:"⪷",Pr:"⪻",pr:"≺",prcue:"≼",precapprox:"⪷",prec:"≺",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",pre:"⪯",prE:"⪳",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportional:"∝",Proportion:"∷",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarr:"→",Rarr:"↠",rArr:"⇒",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",Re:"ℜ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrowBar:"⇥",rightarrow:"→",RightArrow:"→",Rightarrow:"⇒",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVectorBar:"⥕",RightDownVector:"⇂",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTeeArrow:"↦",RightTee:"⊢",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangleBar:"⧐",RightTriangle:"⊳",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVectorBar:"⥔",RightUpVector:"↾",RightVectorBar:"⥓",RightVector:"⇀",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoustache:"⎱",rmoust:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",scap:"⪸",Scaron:"Š",scaron:"š",Sc:"⪼",sc:"≻",sccue:"≽",sce:"⪰",scE:"⪴",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdotb:"⊡",sdot:"⋅",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",solbar:"⌿",solb:"⧄",sol:"/",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squ:"□",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succapprox:"⪸",succ:"≻",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup1:"¹",sup2:"²",sup3:"³",sup:"⊃",Sup:"⋑",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",therefore:"∴",Therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",ThinSpace:" ",thinsp:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",timesbar:"⨱",timesb:"⊠",times:"×",timesd:"⨰",tint:"∭",toea:"⤨",topbot:"⌶",topcir:"⫱",top:"⊤",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",uarr:"↑",Uarr:"↟",uArr:"⇑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrowBar:"⤒",uparrow:"↑",UpArrow:"↑",Uparrow:"⇑",UpArrowDownArrow:"⇅",updownarrow:"↕",UpDownArrow:"↕",Updownarrow:"⇕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTeeArrow:"↥",UpTee:"⊥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",Vcy:"В",vcy:"в",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",veebar:"⊻",vee:"∨",Vee:"⋁",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xharr:"⟷",xhArr:"⟺",Xi:"Ξ",xi:"ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",yuml:"ÿ",Yuml:"Ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"​",Zeta:"Ζ",zeta:"ζ",zfr:"𝔷",Zfr:"ℨ",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",Zscr:"𝒵",zscr:"𝓏",zwj:"‍",zwnj:"‌"}},{}],26:[function(require,module,exports){module.exports={Aacute:"Á",aacute:"á",Acirc:"Â",acirc:"â",acute:"´",AElig:"Æ",aelig:"æ",Agrave:"À",agrave:"à",amp:"&",AMP:"&",Aring:"Å",aring:"å",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",brvbar:"¦",Ccedil:"Ç",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",Eacute:"É",eacute:"é",Ecirc:"Ê",ecirc:"ê",Egrave:"È",egrave:"è",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",Iacute:"Í",iacute:"í",Icirc:"Î",icirc:"î",iexcl:"¡",Igrave:"Ì",igrave:"ì",iquest:"¿",Iuml:"Ï",iuml:"ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",Ntilde:"Ñ",ntilde:"ñ",Oacute:"Ó",oacute:"ó",Ocirc:"Ô",ocirc:"ô",Ograve:"Ò",ograve:"ò",ordf:"ª",ordm:"º",Oslash:"Ø",oslash:"ø",Otilde:"Õ",otilde:"õ",Ouml:"Ö",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",THORN:"Þ",thorn:"þ",times:"×",Uacute:"Ú",uacute:"ú",Ucirc:"Û",ucirc:"û",Ugrave:"Ù",ugrave:"ù",uml:"¨",Uuml:"Ü",uuml:"ü",Yacute:"Ý",yacute:"ý",yen:"¥",yuml:"ÿ"}},{}],27:[function(require,module,exports){module.exports={amp:"&",apos:"'",gt:">",lt:"<",quot:'"'}},{}],28:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{var err=new Error('Uncaught, unspecified "error" event. ('+er+")");err.context=er;throw err}}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:args=Array.prototype.slice.call(arguments,1);handler.apply(this,args)}}else if(isObject(handler)){args=Array.prototype.slice.call(arguments,1);listeners=handler.slice();len=listeners.length;for(i=0;i0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-- >0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1); }if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else if(listeners){while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.prototype.listenerCount=function(type){if(this._events){var evlistener=this._events[type];if(isFunction(evlistener))return 1;else if(evlistener)return evlistener.length}return 0};EventEmitter.listenerCount=function(emitter,type){return emitter.listenerCount(type)};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],29:[function(require,module,exports){module.exports=CollectingHandler;function CollectingHandler(cbs){this._cbs=cbs||{};this.events=[]}var EVENTS=require("./").EVENTS;Object.keys(EVENTS).forEach(function(name){if(EVENTS[name]===0){name="on"+name;CollectingHandler.prototype[name]=function(){this.events.push([name]);if(this._cbs[name])this._cbs[name]()}}else if(EVENTS[name]===1){name="on"+name;CollectingHandler.prototype[name]=function(a){this.events.push([name,a]);if(this._cbs[name])this._cbs[name](a)}}else if(EVENTS[name]===2){name="on"+name;CollectingHandler.prototype[name]=function(a,b){this.events.push([name,a,b]);if(this._cbs[name])this._cbs[name](a,b)}}else{throw Error("wrong number of arguments")}});CollectingHandler.prototype.onreset=function(){this.events=[];if(this._cbs.onreset)this._cbs.onreset()};CollectingHandler.prototype.restart=function(){if(this._cbs.onreset)this._cbs.onreset();for(var i=0,len=this.events.length;i0;this._cbs.onclosetag(this._stack[--i]));}if(this._cbs.onend)this._cbs.onend()};Parser.prototype.reset=function(){if(this._cbs.onreset)this._cbs.onreset();this._tokenizer.reset();this._tagname="";this._attribname="";this._attribs=null;this._stack=[];if(this._cbs.onparserinit)this._cbs.onparserinit(this)};Parser.prototype.parseComplete=function(data){this.reset();this.end(data)};Parser.prototype.write=function(chunk){this._tokenizer.write(chunk)};Parser.prototype.end=function(chunk){this._tokenizer.end(chunk)};Parser.prototype.pause=function(){this._tokenizer.pause()};Parser.prototype.resume=function(){this._tokenizer.resume()};Parser.prototype.parseChunk=Parser.prototype.write;Parser.prototype.done=Parser.prototype.end;module.exports=Parser},{"./Tokenizer.js":34,events:28,inherits:38}],32:[function(require,module,exports){module.exports=ProxyHandler;function ProxyHandler(cbs){this._cbs=cbs||{}}var EVENTS=require("./").EVENTS;Object.keys(EVENTS).forEach(function(name){if(EVENTS[name]===0){name="on"+name;ProxyHandler.prototype[name]=function(){if(this._cbs[name])this._cbs[name]()}}else if(EVENTS[name]===1){name="on"+name;ProxyHandler.prototype[name]=function(a){if(this._cbs[name])this._cbs[name](a)}}else if(EVENTS[name]===2){name="on"+name;ProxyHandler.prototype[name]=function(a,b){if(this._cbs[name])this._cbs[name](a,b)}}else{throw Error("wrong number of arguments")}})},{"./":36}],33:[function(require,module,exports){module.exports=Stream;var Parser=require("./WritableStream.js");function Stream(options){Parser.call(this,new Cbs(this),options)}require("inherits")(Stream,Parser);Stream.prototype.readable=true;function Cbs(scope){this.scope=scope}var EVENTS=require("../").EVENTS;Object.keys(EVENTS).forEach(function(name){if(EVENTS[name]===0){Cbs.prototype["on"+name]=function(){this.scope.emit(name)}}else if(EVENTS[name]===1){Cbs.prototype["on"+name]=function(a){this.scope.emit(name,a)}}else if(EVENTS[name]===2){Cbs.prototype["on"+name]=function(a,b){this.scope.emit(name,a,b)}}else{throw Error("wrong number of arguments!")}})},{"../":36,"./WritableStream.js":35,inherits:38}],34:[function(require,module,exports){module.exports=Tokenizer;var decodeCodePoint=require("entities/lib/decode_codepoint.js"),entityMap=require("entities/maps/entities.json"),legacyMap=require("entities/maps/legacy.json"),xmlMap=require("entities/maps/xml.json"),i=0,TEXT=i++,BEFORE_TAG_NAME=i++,IN_TAG_NAME=i++,IN_SELF_CLOSING_TAG=i++,BEFORE_CLOSING_TAG_NAME=i++,IN_CLOSING_TAG_NAME=i++,AFTER_CLOSING_TAG_NAME=i++,BEFORE_ATTRIBUTE_NAME=i++,IN_ATTRIBUTE_NAME=i++,AFTER_ATTRIBUTE_NAME=i++,BEFORE_ATTRIBUTE_VALUE=i++,IN_ATTRIBUTE_VALUE_DQ=i++,IN_ATTRIBUTE_VALUE_SQ=i++,IN_ATTRIBUTE_VALUE_NQ=i++,BEFORE_DECLARATION=i++,IN_DECLARATION=i++,IN_PROCESSING_INSTRUCTION=i++,BEFORE_COMMENT=i++,IN_COMMENT=i++,AFTER_COMMENT_1=i++,AFTER_COMMENT_2=i++,BEFORE_CDATA_1=i++,BEFORE_CDATA_2=i++,BEFORE_CDATA_3=i++,BEFORE_CDATA_4=i++,BEFORE_CDATA_5=i++,BEFORE_CDATA_6=i++,IN_CDATA=i++,AFTER_CDATA_1=i++,AFTER_CDATA_2=i++,BEFORE_SPECIAL=i++,BEFORE_SPECIAL_END=i++,BEFORE_SCRIPT_1=i++,BEFORE_SCRIPT_2=i++,BEFORE_SCRIPT_3=i++,BEFORE_SCRIPT_4=i++,BEFORE_SCRIPT_5=i++,AFTER_SCRIPT_1=i++,AFTER_SCRIPT_2=i++,AFTER_SCRIPT_3=i++,AFTER_SCRIPT_4=i++,AFTER_SCRIPT_5=i++,BEFORE_STYLE_1=i++,BEFORE_STYLE_2=i++,BEFORE_STYLE_3=i++,BEFORE_STYLE_4=i++,AFTER_STYLE_1=i++,AFTER_STYLE_2=i++,AFTER_STYLE_3=i++,AFTER_STYLE_4=i++,BEFORE_ENTITY=i++,BEFORE_NUMERIC_ENTITY=i++,IN_NAMED_ENTITY=i++,IN_NUMERIC_ENTITY=i++,IN_HEX_ENTITY=i++,j=0,SPECIAL_NONE=j++,SPECIAL_SCRIPT=j++,SPECIAL_STYLE=j++;function whitespace(c){return c===" "||c==="\n"||c==="\t"||c==="\f"||c==="\r"}function characterState(char,SUCCESS){return function(c){if(c===char)this._state=SUCCESS}}function ifElseState(upper,SUCCESS,FAILURE){var lower=upper.toLowerCase();if(upper===lower){return function(c){if(c===lower){this._state=SUCCESS}else{this._state=FAILURE;this._index--}}}else{return function(c){if(c===lower||c===upper){this._state=SUCCESS}else{this._state=FAILURE;this._index--}}}}function consumeSpecialNameChar(upper,NEXT_STATE){var lower=upper.toLowerCase();return function(c){if(c===lower||c===upper){this._state=NEXT_STATE}else{this._state=IN_TAG_NAME;this._index--}}}function Tokenizer(options,cbs){this._state=TEXT;this._buffer="";this._sectionStart=0;this._index=0;this._bufferOffset=0;this._baseState=TEXT;this._special=SPECIAL_NONE;this._cbs=cbs;this._running=true;this._ended=false;this._xmlMode=!!(options&&options.xmlMode);this._decodeEntities=!!(options&&options.decodeEntities)}Tokenizer.prototype._stateText=function(c){if(c==="<"){if(this._index>this._sectionStart){this._cbs.ontext(this._getSection())}this._state=BEFORE_TAG_NAME;this._sectionStart=this._index}else if(this._decodeEntities&&this._special===SPECIAL_NONE&&c==="&"){if(this._index>this._sectionStart){this._cbs.ontext(this._getSection())}this._baseState=TEXT;this._state=BEFORE_ENTITY;this._sectionStart=this._index}};Tokenizer.prototype._stateBeforeTagName=function(c){if(c==="/"){this._state=BEFORE_CLOSING_TAG_NAME}else if(c==="<"){this._cbs.ontext(this._getSection());this._sectionStart=this._index}else if(c===">"||this._special!==SPECIAL_NONE||whitespace(c)){this._state=TEXT}else if(c==="!"){this._state=BEFORE_DECLARATION;this._sectionStart=this._index+1}else if(c==="?"){this._state=IN_PROCESSING_INSTRUCTION;this._sectionStart=this._index+1}else{this._state=!this._xmlMode&&(c==="s"||c==="S")?BEFORE_SPECIAL:IN_TAG_NAME;this._sectionStart=this._index}};Tokenizer.prototype._stateInTagName=function(c){if(c==="/"||c===">"||whitespace(c)){this._emitToken("onopentagname");this._state=BEFORE_ATTRIBUTE_NAME;this._index--}};Tokenizer.prototype._stateBeforeCloseingTagName=function(c){if(whitespace(c));else if(c===">"){this._state=TEXT}else if(this._special!==SPECIAL_NONE){if(c==="s"||c==="S"){this._state=BEFORE_SPECIAL_END}else{this._state=TEXT;this._index--}}else{this._state=IN_CLOSING_TAG_NAME;this._sectionStart=this._index}};Tokenizer.prototype._stateInCloseingTagName=function(c){if(c===">"||whitespace(c)){this._emitToken("onclosetag");this._state=AFTER_CLOSING_TAG_NAME;this._index--}};Tokenizer.prototype._stateAfterCloseingTagName=function(c){if(c===">"){this._state=TEXT;this._sectionStart=this._index+1}};Tokenizer.prototype._stateBeforeAttributeName=function(c){if(c===">"){this._cbs.onopentagend();this._state=TEXT;this._sectionStart=this._index+1}else if(c==="/"){this._state=IN_SELF_CLOSING_TAG}else if(!whitespace(c)){this._state=IN_ATTRIBUTE_NAME;this._sectionStart=this._index}};Tokenizer.prototype._stateInSelfClosingTag=function(c){if(c===">"){this._cbs.onselfclosingtag();this._state=TEXT;this._sectionStart=this._index+1}else if(!whitespace(c)){this._state=BEFORE_ATTRIBUTE_NAME;this._index--}};Tokenizer.prototype._stateInAttributeName=function(c){if(c==="="||c==="/"||c===">"||whitespace(c)){this._cbs.onattribname(this._getSection());this._sectionStart=-1;this._state=AFTER_ATTRIBUTE_NAME;this._index--}};Tokenizer.prototype._stateAfterAttributeName=function(c){if(c==="="){this._state=BEFORE_ATTRIBUTE_VALUE}else if(c==="/"||c===">"){this._cbs.onattribend();this._state=BEFORE_ATTRIBUTE_NAME;this._index--}else if(!whitespace(c)){this._cbs.onattribend();this._state=IN_ATTRIBUTE_NAME;this._sectionStart=this._index}};Tokenizer.prototype._stateBeforeAttributeValue=function(c){if(c==='"'){this._state=IN_ATTRIBUTE_VALUE_DQ;this._sectionStart=this._index+1}else if(c==="'"){this._state=IN_ATTRIBUTE_VALUE_SQ;this._sectionStart=this._index+1}else if(!whitespace(c)){this._state=IN_ATTRIBUTE_VALUE_NQ;this._sectionStart=this._index;this._index--}};Tokenizer.prototype._stateInAttributeValueDoubleQuotes=function(c){if(c==='"'){this._emitToken("onattribdata");this._cbs.onattribend();this._state=BEFORE_ATTRIBUTE_NAME}else if(this._decodeEntities&&c==="&"){this._emitToken("onattribdata");this._baseState=this._state;this._state=BEFORE_ENTITY;this._sectionStart=this._index}};Tokenizer.prototype._stateInAttributeValueSingleQuotes=function(c){if(c==="'"){this._emitToken("onattribdata");this._cbs.onattribend();this._state=BEFORE_ATTRIBUTE_NAME}else if(this._decodeEntities&&c==="&"){this._emitToken("onattribdata");this._baseState=this._state;this._state=BEFORE_ENTITY;this._sectionStart=this._index}};Tokenizer.prototype._stateInAttributeValueNoQuotes=function(c){if(whitespace(c)||c===">"){this._emitToken("onattribdata");this._cbs.onattribend();this._state=BEFORE_ATTRIBUTE_NAME;this._index--}else if(this._decodeEntities&&c==="&"){this._emitToken("onattribdata");this._baseState=this._state;this._state=BEFORE_ENTITY;this._sectionStart=this._index}};Tokenizer.prototype._stateBeforeDeclaration=function(c){this._state=c==="["?BEFORE_CDATA_1:c==="-"?BEFORE_COMMENT:IN_DECLARATION};Tokenizer.prototype._stateInDeclaration=function(c){if(c===">"){this._cbs.ondeclaration(this._getSection());this._state=TEXT;this._sectionStart=this._index+1}};Tokenizer.prototype._stateInProcessingInstruction=function(c){if(c===">"){this._cbs.onprocessinginstruction(this._getSection());this._state=TEXT;this._sectionStart=this._index+1}};Tokenizer.prototype._stateBeforeComment=function(c){if(c==="-"){this._state=IN_COMMENT;this._sectionStart=this._index+1}else{this._state=IN_DECLARATION}};Tokenizer.prototype._stateInComment=function(c){if(c==="-")this._state=AFTER_COMMENT_1};Tokenizer.prototype._stateAfterComment1=function(c){if(c==="-"){this._state=AFTER_COMMENT_2}else{this._state=IN_COMMENT}};Tokenizer.prototype._stateAfterComment2=function(c){if(c===">"){this._cbs.oncomment(this._buffer.substring(this._sectionStart,this._index-2));this._state=TEXT;this._sectionStart=this._index+1}else if(c!=="-"){this._state=IN_COMMENT}};Tokenizer.prototype._stateBeforeCdata1=ifElseState("C",BEFORE_CDATA_2,IN_DECLARATION);Tokenizer.prototype._stateBeforeCdata2=ifElseState("D",BEFORE_CDATA_3,IN_DECLARATION);Tokenizer.prototype._stateBeforeCdata3=ifElseState("A",BEFORE_CDATA_4,IN_DECLARATION);Tokenizer.prototype._stateBeforeCdata4=ifElseState("T",BEFORE_CDATA_5,IN_DECLARATION);Tokenizer.prototype._stateBeforeCdata5=ifElseState("A",BEFORE_CDATA_6,IN_DECLARATION);Tokenizer.prototype._stateBeforeCdata6=function(c){if(c==="["){this._state=IN_CDATA;this._sectionStart=this._index+1}else{this._state=IN_DECLARATION;this._index--}};Tokenizer.prototype._stateInCdata=function(c){if(c==="]")this._state=AFTER_CDATA_1};Tokenizer.prototype._stateAfterCdata1=characterState("]",AFTER_CDATA_2);Tokenizer.prototype._stateAfterCdata2=function(c){if(c===">"){this._cbs.oncdata(this._buffer.substring(this._sectionStart,this._index-2));this._state=TEXT;this._sectionStart=this._index+1}else if(c!=="]"){this._state=IN_CDATA}};Tokenizer.prototype._stateBeforeSpecial=function(c){if(c==="c"||c==="C"){this._state=BEFORE_SCRIPT_1}else if(c==="t"||c==="T"){this._state=BEFORE_STYLE_1}else{this._state=IN_TAG_NAME;this._index--}};Tokenizer.prototype._stateBeforeSpecialEnd=function(c){if(this._special===SPECIAL_SCRIPT&&(c==="c"||c==="C")){this._state=AFTER_SCRIPT_1}else if(this._special===SPECIAL_STYLE&&(c==="t"||c==="T")){this._state=AFTER_STYLE_1}else this._state=TEXT};Tokenizer.prototype._stateBeforeScript1=consumeSpecialNameChar("R",BEFORE_SCRIPT_2);Tokenizer.prototype._stateBeforeScript2=consumeSpecialNameChar("I",BEFORE_SCRIPT_3);Tokenizer.prototype._stateBeforeScript3=consumeSpecialNameChar("P",BEFORE_SCRIPT_4);Tokenizer.prototype._stateBeforeScript4=consumeSpecialNameChar("T",BEFORE_SCRIPT_5);Tokenizer.prototype._stateBeforeScript5=function(c){if(c==="/"||c===">"||whitespace(c)){this._special=SPECIAL_SCRIPT}this._state=IN_TAG_NAME;this._index--};Tokenizer.prototype._stateAfterScript1=ifElseState("R",AFTER_SCRIPT_2,TEXT);Tokenizer.prototype._stateAfterScript2=ifElseState("I",AFTER_SCRIPT_3,TEXT);Tokenizer.prototype._stateAfterScript3=ifElseState("P",AFTER_SCRIPT_4,TEXT);Tokenizer.prototype._stateAfterScript4=ifElseState("T",AFTER_SCRIPT_5,TEXT);Tokenizer.prototype._stateAfterScript5=function(c){if(c===">"||whitespace(c)){this._special=SPECIAL_NONE;this._state=IN_CLOSING_TAG_NAME;this._sectionStart=this._index-6;this._index--}else this._state=TEXT};Tokenizer.prototype._stateBeforeStyle1=consumeSpecialNameChar("Y",BEFORE_STYLE_2);Tokenizer.prototype._stateBeforeStyle2=consumeSpecialNameChar("L",BEFORE_STYLE_3);Tokenizer.prototype._stateBeforeStyle3=consumeSpecialNameChar("E",BEFORE_STYLE_4);Tokenizer.prototype._stateBeforeStyle4=function(c){if(c==="/"||c===">"||whitespace(c)){this._special=SPECIAL_STYLE}this._state=IN_TAG_NAME;this._index--};Tokenizer.prototype._stateAfterStyle1=ifElseState("Y",AFTER_STYLE_2,TEXT);Tokenizer.prototype._stateAfterStyle2=ifElseState("L",AFTER_STYLE_3,TEXT);Tokenizer.prototype._stateAfterStyle3=ifElseState("E",AFTER_STYLE_4,TEXT);Tokenizer.prototype._stateAfterStyle4=function(c){if(c===">"||whitespace(c)){this._special=SPECIAL_NONE;this._state=IN_CLOSING_TAG_NAME;this._sectionStart=this._index-5;this._index--}else this._state=TEXT};Tokenizer.prototype._stateBeforeEntity=ifElseState("#",BEFORE_NUMERIC_ENTITY,IN_NAMED_ENTITY);Tokenizer.prototype._stateBeforeNumericEntity=ifElseState("X",IN_HEX_ENTITY,IN_NUMERIC_ENTITY);Tokenizer.prototype._parseNamedEntityStrict=function(){if(this._sectionStart+16)limit=6;while(limit>=2){var entity=this._buffer.substr(start,limit);if(legacyMap.hasOwnProperty(entity)){this._emitPartial(legacyMap[entity]);this._sectionStart+=limit+1;return}else{limit--}}};Tokenizer.prototype._stateInNamedEntity=function(c){if(c===";"){this._parseNamedEntityStrict();if(this._sectionStart+1"z")&&(c<"A"||c>"Z")&&(c<"0"||c>"9")){if(this._xmlMode);else if(this._sectionStart+1===this._index);else if(this._baseState!==TEXT){if(c!=="="){this._parseNamedEntityStrict()}}else{this._parseLegacyEntity()}this._state=this._baseState;this._index--}};Tokenizer.prototype._decodeNumericEntity=function(offset,base){var sectionStart=this._sectionStart+offset;if(sectionStart!==this._index){var entity=this._buffer.substring(sectionStart,this._index);var parsed=parseInt(entity,base);this._emitPartial(decodeCodePoint(parsed));this._sectionStart=this._index}else{this._sectionStart--}this._state=this._baseState};Tokenizer.prototype._stateInNumericEntity=function(c){if(c===";"){this._decodeNumericEntity(2,10);this._sectionStart++}else if(c<"0"||c>"9"){if(!this._xmlMode){this._decodeNumericEntity(2,10)}else{this._state=this._baseState}this._index--}};Tokenizer.prototype._stateInHexEntity=function(c){if(c===";"){this._decodeNumericEntity(3,16);this._sectionStart++}else if((c<"a"||c>"f")&&(c<"A"||c>"F")&&(c<"0"||c>"9")){if(!this._xmlMode){this._decodeNumericEntity(3,16)}else{this._state=this._baseState}this._index--}};Tokenizer.prototype._cleanup=function(){if(this._sectionStart<0){this._buffer="";this._index=0;this._bufferOffset+=this._index}else if(this._running){if(this._state===TEXT){if(this._sectionStart!==this._index){this._cbs.ontext(this._buffer.substr(this._sectionStart))}this._buffer="";this._bufferOffset+=this._index;this._index=0}else if(this._sectionStart===this._index){this._buffer="";this._bufferOffset+=this._index;this._index=0}else{this._buffer=this._buffer.substr(this._sectionStart);this._index-=this._sectionStart;this._bufferOffset+=this._sectionStart}this._sectionStart=0}};Tokenizer.prototype.write=function(chunk){if(this._ended)this._cbs.onerror(Error(".write() after done!"));this._buffer+=chunk;this._parse()};Tokenizer.prototype._parse=function(){while(this._index>1;var nBits=-7;var i=isLE?nBytes-1:0;var d=isLE?-1:1;var s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8){}m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8){}if(e===0){e=1-eBias}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity}else{m=m+Math.pow(2,mLen);e=e-eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)};exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c;var eLen=nBytes*8-mLen-1;var eMax=(1<>1;var rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0;var i=isLE?0:nBytes-1;var d=isLE?1:-1;var s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2}if(e+eBias>=1){value+=rt/c}else{value+=rt*Math.pow(2,1-eBias)}if(value*c>=2){e++;c/=2}if(e+eBias>=eMax){m=0;e=eMax}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0}}for(;mLen>=8;buffer[offset+i]=m&255,i+=d,m/=256,mLen-=8){}e=e<0;buffer[offset+i]=e&255,i+=d,e/=256,eLen-=8){}buffer[offset+i-d]|=s*128}},{}],38:[function(require,module,exports){if(typeof Object.create==="function"){module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}})}}else{module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}}},{}],39:[function(require,module,exports){module.exports=function(obj){return obj!=null&&(isBuffer(obj)||isSlowBuffer(obj)||!!obj._isBuffer)};function isBuffer(obj){return!!obj.constructor&&typeof obj.constructor.isBuffer==="function"&&obj.constructor.isBuffer(obj)}function isSlowBuffer(obj){return typeof obj.readFloatLE==="function"&&typeof obj.slice==="function"&&isBuffer(obj.slice(0,0))}},{}],40:[function(require,module,exports){var toString={}.toString;module.exports=Array.isArray||function(arr){return toString.call(arr)=="[object Array]"}},{}],41:[function(require,module,exports){(function(process){"use strict";if(!process.version||process.version.indexOf("v0.")===0||process.version.indexOf("v1.")===0&&process.version.indexOf("v1.8.")!==0){module.exports=nextTick}else{module.exports=process.nextTick}function nextTick(fn,arg1,arg2,arg3){if(typeof fn!=="function"){throw new TypeError('"callback" argument must be a function')}var len=arguments.length;var args,i;switch(len){case 0:case 1:return process.nextTick(fn);case 2:return process.nextTick(function afterTickOne(){fn.call(null,arg1)});case 3:return process.nextTick(function afterTickTwo(){fn.call(null,arg1,arg2)});case 4:return process.nextTick(function afterTickThree(){fn.call(null,arg1,arg2,arg3)});default:args=new Array(len-1);i=0;while(i1){for(var i=1;i0){if(state.ended&&!addToFront){var e=new Error("stream.push() after EOF");stream.emit("error",e)}else if(state.endEmitted&&addToFront){var _e=new Error("stream.unshift() after end event");stream.emit("error",_e)}else{var skipAdd;if(state.decoder&&!addToFront&&!encoding){chunk=state.decoder.write(chunk);skipAdd=!state.objectMode&&chunk.length===0}if(!addToFront)state.reading=false;if(!skipAdd){if(state.flowing&&state.length===0&&!state.sync){stream.emit("data",chunk);stream.read(0)}else{state.length+=state.objectMode?1:chunk.length;if(addToFront)state.buffer.unshift(chunk);else state.buffer.push(chunk);if(state.needReadable)emitReadable(stream)}}maybeReadMore(stream,state)}}else if(!addToFront){state.reading=false}return needMoreData(state)}function needMoreData(state){return!state.ended&&(state.needReadable||state.length=MAX_HWM){n=MAX_HWM}else{n--;n|=n>>>1;n|=n>>>2;n|=n>>>4;n|=n>>>8;n|=n>>>16;n++}return n}function howMuchToRead(n,state){if(n<=0||state.length===0&&state.ended)return 0;if(state.objectMode)return 1;if(n!==n){if(state.flowing&&state.length)return state.buffer.head.data.length;else return state.length}if(n>state.highWaterMark)state.highWaterMark=computeNewHighWaterMark(n);if(n<=state.length)return n;if(!state.ended){state.needReadable=true;return 0}return state.length}Readable.prototype.read=function(n){debug("read",n);n=parseInt(n,10);var state=this._readableState;var nOrig=n;if(n!==0)state.emittedReadable=false;if(n===0&&state.needReadable&&(state.length>=state.highWaterMark||state.ended)){debug("read: emitReadable",state.length,state.ended);if(state.length===0&&state.ended)endReadable(this);else emitReadable(this);return null}n=howMuchToRead(n,state);if(n===0&&state.ended){if(state.length===0)endReadable(this);return null}var doRead=state.needReadable;debug("need readable",doRead);if(state.length===0||state.length-n0)ret=fromList(n,state);else ret=null;if(ret===null){state.needReadable=true;n=0}else{state.length-=n}if(state.length===0){if(!state.ended)state.needReadable=true;if(nOrig!==n&&state.ended)endReadable(this)}if(ret!==null)this.emit("data",ret);return ret};function chunkInvalid(state,chunk){var er=null;if(!Buffer.isBuffer(chunk)&&typeof chunk!=="string"&&chunk!==null&&chunk!==undefined&&!state.objectMode){er=new TypeError("Invalid non-string/buffer chunk")}return er}function onEofChunk(stream,state){if(state.ended)return;if(state.decoder){var chunk=state.decoder.end();if(chunk&&chunk.length){state.buffer.push(chunk);state.length+=state.objectMode?1:chunk.length}}state.ended=true;emitReadable(stream)}function emitReadable(stream){var state=stream._readableState;state.needReadable=false;if(!state.emittedReadable){debug("emitReadable",state.flowing);state.emittedReadable=true;if(state.sync)processNextTick(emitReadable_,stream);else emitReadable_(stream)}}function emitReadable_(stream){debug("emit readable");stream.emit("readable");flow(stream)}function maybeReadMore(stream,state){if(!state.readingMore){state.readingMore=true;processNextTick(maybeReadMore_,stream,state)}}function maybeReadMore_(stream,state){var len=state.length;while(!state.reading&&!state.flowing&&!state.ended&&state.length1&&indexOf(state.pipes,dest)!==-1)&&!cleanedUp){debug("false write response, pause",src._readableState.awaitDrain);src._readableState.awaitDrain++;increasedAwaitDrain=true}src.pause()}}function onerror(er){debug("onerror",er);unpipe();dest.removeListener("error",onerror);if(EElistenerCount(dest,"error")===0)dest.emit("error",er)}prependListener(dest,"error",onerror);function onclose(){dest.removeListener("finish",onfinish);unpipe()}dest.once("close",onclose);function onfinish(){debug("onfinish");dest.removeListener("close",onclose);unpipe()}dest.once("finish",onfinish);function unpipe(){debug("unpipe");src.unpipe(dest)}dest.emit("pipe",src);if(!state.flowing){debug("pipe resume");src.resume()}return dest};function pipeOnDrain(src){return function(){var state=src._readableState;debug("pipeOnDrain",state.awaitDrain);if(state.awaitDrain)state.awaitDrain--;if(state.awaitDrain===0&&EElistenerCount(src,"data")){state.flowing=true;flow(src)}}}Readable.prototype.unpipe=function(dest){var state=this._readableState;if(state.pipesCount===0)return this;if(state.pipesCount===1){if(dest&&dest!==state.pipes)return this;if(!dest)dest=state.pipes;state.pipes=null;state.pipesCount=0;state.flowing=false;if(dest)dest.emit("unpipe",this);return this}if(!dest){var dests=state.pipes;var len=state.pipesCount;state.pipes=null;state.pipesCount=0;state.flowing=false;for(var _i=0;_i=state.length){if(state.decoder)ret=state.buffer.join("");else if(state.buffer.length===1)ret=state.buffer.head.data;else ret=state.buffer.concat(state.length);state.buffer.clear()}else{ret=fromListPartial(n,state.buffer,state.decoder)}return ret}function fromListPartial(n,list,hasStrings){var ret;if(nstr.length?str.length:n;if(nb===str.length)ret+=str;else ret+=str.slice(0,n);n-=nb;if(n===0){if(nb===str.length){++c;if(p.next)list.head=p.next;else list.head=list.tail=null}else{list.head=p;p.data=str.slice(nb)}break}++c}list.length-=c;return ret}function copyFromBuffer(n,list){var ret=bufferShim.allocUnsafe(n);var p=list.head;var c=1;p.data.copy(ret);n-=p.data.length;while(p=p.next){var buf=p.data;var nb=n>buf.length?buf.length:n;buf.copy(ret,ret.length-n,0,nb);n-=nb;if(n===0){if(nb===buf.length){++c;if(p.next)list.head=p.next;else list.head=list.tail=null}else{list.head=p;p.data=buf.slice(nb)}break}++c}list.length-=c;return ret}function endReadable(stream){var state=stream._readableState;if(state.length>0)throw new Error('"endReadable()" called on non-empty stream');if(!state.endEmitted){state.ended=true;processNextTick(endReadableNT,state,stream)}}function endReadableNT(state,stream){if(!state.endEmitted&&state.length===0){state.endEmitted=true;stream.readable=false;stream.emit("end")}}function forEach(xs,f){for(var i=0,l=xs.length;i-1?setImmediate:processNextTick;Writable.WritableState=WritableState;var util=require("core-util-is");util.inherits=require("inherits");var internalUtil={deprecate:require("util-deprecate")};var Stream;(function(){try{Stream=require("st"+"ream")}catch(_){}finally{if(!Stream)Stream=require("events").EventEmitter}})();var Buffer=require("buffer").Buffer;var bufferShim=require("buffer-shims");util.inherits(Writable,Stream);function nop(){}function WriteReq(chunk,encoding,cb){this.chunk=chunk;this.encoding=encoding;this.callback=cb;this.next=null}var Duplex;function WritableState(options,stream){Duplex=Duplex||require("./_stream_duplex");options=options||{};this.objectMode=!!options.objectMode;if(stream instanceof Duplex)this.objectMode=this.objectMode||!!options.writableObjectMode;var hwm=options.highWaterMark;var defaultHwm=this.objectMode?16:16*1024;this.highWaterMark=hwm||hwm===0?hwm:defaultHwm;this.highWaterMark=~~this.highWaterMark;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;var noDecode=options.decodeStrings===false;this.decodeStrings=!noDecode;this.defaultEncoding=options.defaultEncoding||"utf8";this.length=0;this.writing=false;this.corked=0;this.sync=true;this.bufferProcessing=false;this.onwrite=function(er){onwrite(stream,er)};this.writecb=null;this.writelen=0;this.bufferedRequest=null;this.lastBufferedRequest=null;this.pendingcb=0;this.prefinished=false;this.errorEmitted=false;this.bufferedRequestCount=0;this.corkedRequestsFree=new CorkedRequest(this)}WritableState.prototype.getBuffer=function writableStateGetBuffer(){var current=this.bufferedRequest;var out=[];while(current){out.push(current);current=current.next}return out};(function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:internalUtil.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer "+"instead.")})}catch(_){}})();var Duplex;function Writable(options){Duplex=Duplex||require("./_stream_duplex");if(!(this instanceof Writable)&&!(this instanceof Duplex))return new Writable(options);this._writableState=new WritableState(options,this);this.writable=true;if(options){if(typeof options.write==="function")this._write=options.write;if(typeof options.writev==="function")this._writev=options.writev}Stream.call(this)}Writable.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function writeAfterEnd(stream,cb){var er=new Error("write after end");stream.emit("error",er);processNextTick(cb,er)}function validChunk(stream,state,chunk,cb){var valid=true;var er=false;if(chunk===null){er=new TypeError("May not write null values to stream")}else if(!Buffer.isBuffer(chunk)&&typeof chunk!=="string"&&chunk!==undefined&&!state.objectMode){er=new TypeError("Invalid non-string/buffer chunk")}if(er){stream.emit("error",er);processNextTick(cb,er);valid=false}return valid}Writable.prototype.write=function(chunk,encoding,cb){var state=this._writableState;var ret=false;if(typeof encoding==="function"){cb=encoding;encoding=null}if(Buffer.isBuffer(chunk))encoding="buffer";else if(!encoding)encoding=state.defaultEncoding;if(typeof cb!=="function")cb=nop;if(state.ended)writeAfterEnd(this,cb);else if(validChunk(this,state,chunk,cb)){ state.pendingcb++;ret=writeOrBuffer(this,state,chunk,encoding,cb)}return ret};Writable.prototype.cork=function(){var state=this._writableState;state.corked++};Writable.prototype.uncork=function(){var state=this._writableState;if(state.corked){state.corked--;if(!state.writing&&!state.corked&&!state.finished&&!state.bufferProcessing&&state.bufferedRequest)clearBuffer(this,state)}};Writable.prototype.setDefaultEncoding=function setDefaultEncoding(encoding){if(typeof encoding==="string")encoding=encoding.toLowerCase();if(!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((encoding+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+encoding);this._writableState.defaultEncoding=encoding;return this};function decodeChunk(state,chunk,encoding){if(!state.objectMode&&state.decodeStrings!==false&&typeof chunk==="string"){chunk=bufferShim.from(chunk,encoding)}return chunk}function writeOrBuffer(stream,state,chunk,encoding,cb){chunk=decodeChunk(state,chunk,encoding);if(Buffer.isBuffer(chunk))encoding="buffer";var len=state.objectMode?1:chunk.length;state.length+=len;var ret=state.length0)this.tail.next=entry;else this.head=entry;this.tail=entry;++this.length};BufferList.prototype.unshift=function(v){var entry={data:v,next:this.head};if(this.length===0)this.tail=entry;this.head=entry;++this.length};BufferList.prototype.shift=function(){if(this.length===0)return;var ret=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return ret};BufferList.prototype.clear=function(){this.head=this.tail=null;this.length=0};BufferList.prototype.join=function(s){if(this.length===0)return"";var p=this.head;var ret=""+p.data;while(p=p.next){ret+=s+p.data}return ret};BufferList.prototype.concat=function(n){if(this.length===0)return bufferShim.alloc(0);if(this.length===1)return this.head.data;var ret=bufferShim.allocUnsafe(n>>>0);var p=this.head;var i=0;while(p){p.data.copy(ret,i);i+=p.data.length;p=p.next}return ret}},{buffer:5,"buffer-shims":4}],50:[function(require,module,exports){module.exports=require("./lib/_stream_passthrough.js")},{"./lib/_stream_passthrough.js":45}],51:[function(require,module,exports){(function(process){var Stream=function(){try{return require("st"+"ream")}catch(_){}}();exports=module.exports=require("./lib/_stream_readable.js");exports.Stream=Stream||exports;exports.Readable=exports;exports.Writable=require("./lib/_stream_writable.js");exports.Duplex=require("./lib/_stream_duplex.js");exports.Transform=require("./lib/_stream_transform.js");exports.PassThrough=require("./lib/_stream_passthrough.js");if(!process.browser&&process.env.READABLE_STREAM==="disable"&&Stream){module.exports=Stream}}).call(this,require("_process"))},{"./lib/_stream_duplex.js":44,"./lib/_stream_passthrough.js":45,"./lib/_stream_readable.js":46,"./lib/_stream_transform.js":47,"./lib/_stream_writable.js":48,_process:42}],52:[function(require,module,exports){module.exports=require("./lib/_stream_transform.js")},{"./lib/_stream_transform.js":47}],53:[function(require,module,exports){module.exports=require("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":48}],54:[function(require,module,exports){module.exports=function(string){return string.replace(/[-\\^$*+?.()|[\]{}]/g,"\\$&")}},{}],55:[function(require,module,exports){module.exports=Stream;var EE=require("events").EventEmitter;var inherits=require("inherits");inherits(Stream,EE);Stream.Readable=require("readable-stream/readable.js");Stream.Writable=require("readable-stream/writable.js");Stream.Duplex=require("readable-stream/duplex.js");Stream.Transform=require("readable-stream/transform.js");Stream.PassThrough=require("readable-stream/passthrough.js");Stream.Stream=Stream;function Stream(){EE.call(this)}Stream.prototype.pipe=function(dest,options){var source=this;function ondata(chunk){if(dest.writable){if(false===dest.write(chunk)&&source.pause){source.pause()}}}source.on("data",ondata);function ondrain(){if(source.readable&&source.resume){source.resume()}}dest.on("drain",ondrain);if(!dest._isStdio&&(!options||options.end!==false)){source.on("end",onend);source.on("close",onclose)}var didOnEnd=false;function onend(){if(didOnEnd)return;didOnEnd=true;dest.end()}function onclose(){if(didOnEnd)return;didOnEnd=true;if(typeof dest.destroy==="function")dest.destroy()}function onerror(er){cleanup();if(EE.listenerCount(this,"error")===0){throw er}}source.on("error",onerror);dest.on("error",onerror);function cleanup(){source.removeListener("data",ondata);dest.removeListener("drain",ondrain);source.removeListener("end",onend);source.removeListener("close",onclose);source.removeListener("error",onerror);dest.removeListener("error",onerror);source.removeListener("end",cleanup);source.removeListener("close",cleanup);dest.removeListener("close",cleanup)}source.on("end",cleanup);source.on("close",cleanup);dest.on("close",cleanup);dest.emit("pipe",source);return dest}},{events:28,inherits:38,"readable-stream/duplex.js":43,"readable-stream/passthrough.js":50,"readable-stream/readable.js":51,"readable-stream/transform.js":52,"readable-stream/writable.js":53}],56:[function(require,module,exports){var Buffer=require("buffer").Buffer;var isBufferEncoding=Buffer.isEncoding||function(encoding){switch(encoding&&encoding.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return true;default:return false}};function assertEncoding(encoding){if(encoding&&!isBufferEncoding(encoding)){throw new Error("Unknown encoding: "+encoding)}}var StringDecoder=exports.StringDecoder=function(encoding){this.encoding=(encoding||"utf8").toLowerCase().replace(/[-_]/,"");assertEncoding(encoding);switch(this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2;this.detectIncompleteChar=utf16DetectIncompleteChar;break;case"base64":this.surrogateSize=3;this.detectIncompleteChar=base64DetectIncompleteChar;break;default:this.write=passThroughWrite;return}this.charBuffer=new Buffer(6);this.charReceived=0;this.charLength=0};StringDecoder.prototype.write=function(buffer){var charStr="";while(this.charLength){var available=buffer.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:buffer.length;buffer.copy(this.charBuffer,this.charReceived,0,available);this.charReceived+=available;if(this.charReceived=55296&&charCode<=56319){this.charLength+=this.surrogateSize;charStr="";continue}this.charReceived=this.charLength=0;if(buffer.length===0){return charStr}break}this.detectIncompleteChar(buffer);var end=buffer.length;if(this.charLength){buffer.copy(this.charBuffer,0,buffer.length-this.charReceived,end);end-=this.charReceived}charStr+=buffer.toString(this.encoding,0,end);var end=charStr.length-1;var charCode=charStr.charCodeAt(end);if(charCode>=55296&&charCode<=56319){var size=this.surrogateSize;this.charLength+=size;this.charReceived+=size;this.charBuffer.copy(this.charBuffer,size,0,size);buffer.copy(this.charBuffer,0,0,size);return charStr.substring(0,end)}return charStr};StringDecoder.prototype.detectIncompleteChar=function(buffer){var i=buffer.length>=3?3:buffer.length;for(;i>0;i--){var c=buffer[buffer.length-i];if(i==1&&c>>5==6){this.charLength=2;break}if(i<=2&&c>>4==14){this.charLength=3;break}if(i<=3&&c>>3==30){this.charLength=4;break}}this.charReceived=i};StringDecoder.prototype.end=function(buffer){var res="";if(buffer&&buffer.length)res=this.write(buffer);if(this.charReceived){var cr=this.charReceived;var buf=this.charBuffer;var enc=this.encoding;res+=buf.slice(0,cr).toString(enc)}return res};function passThroughWrite(buffer){return buffer.toString(this.encoding)}function utf16DetectIncompleteChar(buffer){this.charReceived=buffer.length%2;this.charLength=this.charReceived?2:0}function base64DetectIncompleteChar(buffer){this.charReceived=buffer.length%3;this.charLength=this.charReceived?3:0}},{buffer:5}],57:[function(require,module,exports){(function(global){module.exports=deprecate;function deprecate(fn,msg){if(config("noDeprecation")){return fn}var warned=false;function deprecated(){if(!warned){if(config("throwDeprecation")){throw new Error(msg)}else if(config("traceDeprecation")){console.trace(msg)}else{console.warn(msg)}warned=true}return fn.apply(this,arguments)}return deprecated}function config(name){try{if(!global.localStorage)return false}catch(_){return false}var val=global.localStorage[name];if(null==val)return false;return String(val).toLowerCase()==="true"}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],58:[function(require,module,exports){module.exports=extend;var hasOwnProperty=Object.prototype.hasOwnProperty;function extend(){var target={};for(var i=0;i 0) { qp = obj.url.substring(obj.url.indexOf('?') + 1); var parts = qp.split('&'); if(parts && parts.length > 0) { for(var i = 0; i < parts.length; i++) { var kv = parts[i].split('='); if(kv && kv.length > 0) { if (kv[0] === this.name) { // skip it return false; } } } } } if (obj.url.indexOf('?') > 0) { obj.url = obj.url + '&' + this.name + '=' + this.value; } else { obj.url = obj.url + '?' + this.name + '=' + this.value; } return true; } else if (this.type === 'header') { if(typeof obj.headers[this.name] === 'undefined') { obj.headers[this.name] = this.value; } return true; } }; var CookieAuthorization = module.exports.CookieAuthorization = function (cookie) { this.cookie = cookie; }; CookieAuthorization.prototype.apply = function (obj) { obj.cookieJar = obj.cookieJar || new CookieJar(); obj.cookieJar.setCookie(this.cookie); return true; }; /** * Password Authorization is a basic auth implementation */ var PasswordAuthorization = module.exports.PasswordAuthorization = function (username, password) { if (arguments.length === 3) { helpers.log('PasswordAuthorization: the \'name\' argument has been removed, pass only username and password'); username = arguments[1]; password = arguments[2]; } this.username = username; this.password = password; }; PasswordAuthorization.prototype.apply = function (obj) { if(typeof obj.headers.Authorization === 'undefined') { obj.headers.Authorization = 'Basic ' + btoa(this.username + ':' + this.password); } return true; }; },{"./helpers":4,"btoa":13,"cookiejar":18,"lodash-compat/collection/each":52,"lodash-compat/collection/includes":55,"lodash-compat/lang/isArray":140,"lodash-compat/lang/isObject":144}],3:[function(require,module,exports){ 'use strict'; var _ = { bind: require('lodash-compat/function/bind'), cloneDeep: require('lodash-compat/lang/cloneDeep'), find: require('lodash-compat/collection/find'), forEach: require('lodash-compat/collection/forEach'), indexOf: require('lodash-compat/array/indexOf'), isArray: require('lodash-compat/lang/isArray'), isObject: require('lodash-compat/lang/isObject'), isFunction: require('lodash-compat/lang/isFunction'), isPlainObject: require('lodash-compat/lang/isPlainObject'), isUndefined: require('lodash-compat/lang/isUndefined') }; var auth = require('./auth'); var helpers = require('./helpers'); var Model = require('./types/model'); var Operation = require('./types/operation'); var OperationGroup = require('./types/operationGroup'); var Resolver = require('./resolver'); var SwaggerHttp = require('./http'); var SwaggerSpecConverter = require('./spec-converter'); var Q = require('q'); // We have to keep track of the function/property names to avoid collisions for tag names which are used to allow the // following usage: 'client.{tagName}' var reservedClientTags = [ 'apis', 'authorizationScheme', 'authorizations', 'basePath', 'build', 'buildFrom1_1Spec', 'buildFrom1_2Spec', 'buildFromSpec', 'clientAuthorizations', 'convertInfo', 'debug', 'defaultErrorCallback', 'defaultSuccessCallback', 'enableCookies', 'fail', 'failure', 'finish', 'help', 'host', 'idFromOp', 'info', 'initialize', 'isBuilt', 'isValid', 'modelPropertyMacro', 'models', 'modelsArray', 'options', 'parameterMacro', 'parseUri', 'progress', 'resourceCount', 'sampleModels', 'selfReflect', 'setConsolidatedModels', 'spec', 'supportedSubmitMethods', 'swaggerRequestHeaders', 'tagFromLabel', 'title', 'url', 'useJQuery', 'jqueryAjaxCache' ]; // We have to keep track of the function/property names to avoid collisions for tag names which are used to allow the // following usage: 'client.apis.{tagName}' var reservedApiTags = [ 'apis', 'asCurl', 'description', 'externalDocs', 'help', 'label', 'name', 'operation', 'operations', 'operationsArray', 'path', 'tag' ]; var supportedOperationMethods = ['delete', 'get', 'head', 'options', 'patch', 'post', 'put']; var SwaggerClient = module.exports = function (url, options) { this.authorizations = null; this.authorizationScheme = null; this.basePath = null; this.debug = false; this.enableCookies = false; this.info = null; this.isBuilt = false; this.isValid = false; this.modelsArray = []; this.resourceCount = 0; this.url = null; this.useJQuery = false; this.jqueryAjaxCache = false; this.swaggerObject = {}; this.deferredClient = undefined; this.clientAuthorizations = new auth.SwaggerAuthorizations(); if (typeof url !== 'undefined') { return this.initialize(url, options); } else { return this; } }; SwaggerClient.prototype.initialize = function (url, options) { this.models = {}; this.sampleModels = {}; if (typeof url === 'string') { this.url = url; } else if (_.isObject(url)) { options = url; this.url = options.url; } if(this.url && this.url.indexOf('http:') === -1 && this.url.indexOf('https:') === -1) { // no protocol, so we can only use window if it exists if(typeof(window) !== 'undefined' && typeof(window.location) !== 'undefined') { this.url = window.location.origin + this.url; } } options = options || {}; this.clientAuthorizations.add(options.authorizations); this.swaggerRequestHeaders = options.swaggerRequestHeaders || 'application/json;charset=utf-8,*/*'; this.defaultSuccessCallback = options.defaultSuccessCallback || null; this.defaultErrorCallback = options.defaultErrorCallback || null; this.modelPropertyMacro = options.modelPropertyMacro || null; this.connectionAgent = options.connectionAgent || null; this.parameterMacro = options.parameterMacro || null; this.usePromise = options.usePromise || null; // operation request timeout default this.timeout = options.timeout || null; // default to request timeout when not specified this.fetchSpecTimeout = typeof options.fetchSpecTimeout !== 'undefined' ? options.fetchSpecTimeout : options.timeout || null; if(this.usePromise) { this.deferredClient = Q.defer(); } if (typeof options.success === 'function') { this.success = options.success; } if (options.useJQuery) { this.useJQuery = options.useJQuery; } if (options.jqueryAjaxCache) { this.jqueryAjaxCache = options.jqueryAjaxCache; } if (options.enableCookies) { this.enableCookies = options.enableCookies; } this.options = options || {}; // maybe don't need this? this.options.timeout = this.timeout; this.options.fetchSpecTimeout = this.fetchSpecTimeout; this.supportedSubmitMethods = options.supportedSubmitMethods || []; this.failure = options.failure || function (err) { throw err; }; this.progress = options.progress || function () {}; this.spec = _.cloneDeep(options.spec); // Clone so we do not alter the provided document if (options.scheme) { this.scheme = options.scheme; } if (this.usePromise || typeof options.success === 'function') { this.ready = true; return this.build(); } }; SwaggerClient.prototype.build = function (mock) { if (this.isBuilt) { return this; } var self = this; if (this.spec) { this.progress('fetching resource list; Please wait.'); } else { this.progress('fetching resource list: ' + this.url + '; Please wait.'); } var obj = { useJQuery: this.useJQuery, jqueryAjaxCache: this.jqueryAjaxCache, connectionAgent: this.connectionAgent, enableCookies: this.enableCookies, url: this.url, method: 'get', headers: { accept: this.swaggerRequestHeaders }, on: { error: function (response) { if (self && self.url && self.url.substring(0, 4) !== 'http') { return self.fail('Please specify the protocol for ' + self.url); } else if (response.errObj && (response.errObj.code === 'ECONNABORTED' || response.errObj.message.indexOf('timeout') !== -1)) { return self.fail('Request timed out after ' + self.fetchSpecTimeout + 'ms'); } else if (response.status === 0) { return self.fail('Can\'t read from server. It may not have the appropriate access-control-origin settings.'); } else if (response.status === 404) { return self.fail('Can\'t read swagger JSON from ' + self.url); } else { return self.fail(response.status + ' : ' + response.statusText + ' ' + self.url); } }, response: function (resp) { var responseObj = resp.obj; if(!responseObj) { return self.fail('failed to parse JSON/YAML response'); } self.swaggerVersion = responseObj.swaggerVersion; self.swaggerObject = responseObj; if (responseObj.swagger && parseInt(responseObj.swagger) === 2) { self.swaggerVersion = responseObj.swagger; new Resolver().resolve(responseObj, self.url, self.buildFromSpec, self); self.isValid = true; } else { var converter = new SwaggerSpecConverter(); self.oldSwaggerObject = self.swaggerObject; converter.setDocumentationLocation(self.url); converter.convert(responseObj, self.clientAuthorizations, self.options, function(spec) { self.swaggerObject = spec; new Resolver().resolve(spec, self.url, self.buildFromSpec, self); self.isValid = true; }); } } } }; // only set timeout when specified if (this.fetchSpecTimeout) { obj.timeout = this.fetchSpecTimeout; } if (this.spec && typeof this.spec === 'object') { self.swaggerObject = this.spec; setTimeout(function () { new Resolver().resolve(self.spec, self.url, self.buildFromSpec, self); }, 10); } else { this.clientAuthorizations.apply(obj); if (mock) { return obj; } new SwaggerHttp().execute(obj, this.options); } return (this.usePromise) ? this.deferredClient.promise : this; }; SwaggerClient.prototype.buildFromSpec = function (response) { if (this.isBuilt) { return this; } this.apis = {}; this.apisArray = []; this.basePath = response.basePath || ''; this.consumes = response.consumes; this.host = response.host || ''; this.info = response.info || {}; this.produces = response.produces; this.schemes = response.schemes || []; this.securityDefinitions = _.cloneDeep(response.securityDefinitions); this.security = response.security; this.title = response.title || ''; var key, definedTags = {}, k, location, self = this, i; if (response.externalDocs) { this.externalDocs = response.externalDocs; } // legacy support this.authSchemes = this.securityDefinitions; if(this.securityDefinitions) { for(key in this.securityDefinitions) { var securityDefinition = this.securityDefinitions[key]; securityDefinition.vendorExtensions = {}; for(var ext in securityDefinition) { helpers.extractExtensions(ext, securityDefinition); if (ext === 'scopes') { var scopes = securityDefinition[ext]; if(typeof scopes === 'object') { scopes.vendorExtensions = {}; for (var s in scopes) { helpers.extractExtensions(s, scopes); if(s.indexOf('x-') === 0) { delete scopes[s]; } } } } } } } if (Array.isArray(response.tags)) { definedTags = {}; for (k = 0; k < response.tags.length; k++) { var t = _.cloneDeep(response.tags[k]); definedTags[t.name] = t; for(i in t) { if(i === 'externalDocs' && typeof t[i] === 'object') { for(var j in t[i]) { helpers.extractExtensions(j, t[i]); } } helpers.extractExtensions(i, t); } } } if (typeof this.url === 'string') { location = this.parseUri(this.url); if (typeof this.scheme === 'undefined' && typeof this.schemes === 'undefined' || this.schemes.length === 0) { if (typeof location !== 'undefined' && typeof(location.scheme) !== 'undefined') { this.scheme = location.scheme; } if(typeof window !== 'undefined' && typeof(window.location) !== 'undefined') { // use the window scheme this.scheme = window.location.protocol.replace(':',''); } else { this.scheme = location.scheme || 'http'; } } else if (typeof window !== 'undefined' && typeof(window.location) !== 'undefined' && window.location.protocol.indexOf('chrome-extension') === 0) { // if it is chrome swagger ui extension scheme then let swagger doc url scheme decide the protocol this.scheme = location.scheme; } else if (typeof this.scheme === 'undefined') { if(typeof window !== 'undefined' && typeof(window.location) !== 'undefined') { var scheme = window.location.protocol.replace(':',''); if(scheme === 'https' && this.schemes.indexOf(scheme) === -1) { // can't call http from https served page in a browser! helpers.log('Cannot call a http server from https inside a browser!'); this.scheme = 'http'; } else if(this.schemes.indexOf(scheme) !== -1) { this.scheme = scheme; } else { if(this.schemes.indexOf('https') !== -1) { this.scheme = 'https'; } else { this.scheme = 'http'; } } } else { this.scheme = this.schemes[0] || location.scheme; } } if (typeof this.host === 'undefined' || this.host === '') { this.host = location.host; if (location.port) { this.host = this.host + ':' + location.port; } } } else { if (typeof this.schemes === 'undefined' || this.schemes.length === 0) { this.scheme = 'http'; } else if (typeof this.scheme === 'undefined') { this.scheme = this.schemes[0]; } } this.definitions = response.definitions; for (key in this.definitions) { var model = new Model(key, this.definitions[key], this.models, this.modelPropertyMacro); if (model) { this.models[key] = model; } } // get paths, create functions for each operationId // Bind help to 'client.apis' self.apis.help = _.bind(self.help, self); _.forEach(response.paths, function (pathObj, path) { // Only process a path if it's an object if (!_.isPlainObject(pathObj)) { return; } _.forEach(supportedOperationMethods, function (method) { var operation = pathObj[method]; if (_.isUndefined(operation)) { // Operation does not exist return; } else if (!_.isPlainObject(operation)) { // Operation exists but it is not an Operation Object. Since this is invalid, log it. helpers.log('The \'' + method + '\' operation for \'' + path + '\' path is not an Operation Object'); return; } var tags = operation.tags; if (_.isUndefined(tags) || !_.isArray(tags) || tags.length === 0) { tags = operation.tags = [ 'default' ]; } var operationId = self.idFromOp(path, method, operation); var operationObject = new Operation(self, operation.scheme, operationId, method, path, operation, self.definitions, self.models, self.clientAuthorizations); operationObject.connectionAgent = self.connectionAgent; operationObject.vendorExtensions = {}; for(i in operation) { helpers.extractExtensions(i, operationObject, operation[i]); } operationObject.externalDocs = operation.externalDocs; if(operationObject.externalDocs) { operationObject.externalDocs = _.cloneDeep(operationObject.externalDocs); operationObject.externalDocs.vendorExtensions = {}; for(i in operationObject.externalDocs) { helpers.extractExtensions(i, operationObject.externalDocs); } } // bind self operation's execute command to the api _.forEach(tags, function (tag) { var clientProperty = _.indexOf(reservedClientTags, tag) > -1 ? '_' + tag : tag; var apiProperty = _.indexOf(reservedApiTags, tag) > -1 ? '_' + tag : tag; var operationGroup = self[clientProperty]; if (clientProperty !== tag) { helpers.log('The \'' + tag + '\' tag conflicts with a SwaggerClient function/property name. Use \'client.' + clientProperty + '\' or \'client.apis.' + tag + '\' instead of \'client.' + tag + '\'.'); } if (apiProperty !== tag) { helpers.log('The \'' + tag + '\' tag conflicts with a SwaggerClient operation function/property name. Use ' + '\'client.apis.' + apiProperty + '\' instead of \'client.apis.' + tag + '\'.'); } if (_.indexOf(reservedApiTags, operationId) > -1) { helpers.log('The \'' + operationId + '\' operationId conflicts with a SwaggerClient operation ' + 'function/property name. Use \'client.apis.' + apiProperty + '._' + operationId + '\' instead of \'client.apis.' + apiProperty + '.' + operationId + '\'.'); operationId = '_' + operationId; operationObject.nickname = operationId; // So 'client.apis.[tag].operationId.help() works properly } if (_.isUndefined(operationGroup)) { operationGroup = self[clientProperty] = self.apis[apiProperty] = {}; operationGroup.operations = {}; operationGroup.label = apiProperty; operationGroup.apis = {}; var tagDef = definedTags[tag]; if (!_.isUndefined(tagDef)) { operationGroup.description = tagDef.description; operationGroup.externalDocs = tagDef.externalDocs; operationGroup.vendorExtensions = tagDef.vendorExtensions; } self[clientProperty].help = _.bind(self.help, operationGroup); self.apisArray.push(new OperationGroup(tag, operationGroup.description, operationGroup.externalDocs, operationObject)); } operationId = self.makeUniqueOperationId(operationId, self.apis[apiProperty]); // Bind tag help if (!_.isFunction(operationGroup.help)) { operationGroup.help = _.bind(self.help, operationGroup); } // bind to the apis object self.apis[apiProperty][operationId] = operationGroup[operationId] = _.bind(operationObject.execute, operationObject); self.apis[apiProperty][operationId].help = operationGroup[operationId].help = _.bind(operationObject.help, operationObject); self.apis[apiProperty][operationId].asCurl = operationGroup[operationId].asCurl = _.bind(operationObject.asCurl, operationObject); operationGroup.apis[operationId] = operationGroup.operations[operationId] = operationObject; // legacy UI feature var api = _.find(self.apisArray, function (api) { return api.tag === tag; }); if (api) { api.operationsArray.push(operationObject); } }); }); }); // sort the apisArray according to the tags var sortedApis = []; _.forEach(Object.keys(definedTags), function (tag) { var pos; for(pos in self.apisArray) { var _api = self.apisArray[pos]; if(_api && tag === _api.name) { sortedApis.push(_api); self.apisArray[pos] = null; } } }); // add anything left _.forEach(self.apisArray, function (api) { if(api) { sortedApis.push(api); } }); self.apisArray = sortedApis; _.forEach(response.definitions, function (definitionObj, definition) { definitionObj.id = definition.toLowerCase(); definitionObj.name = definition; self.modelsArray.push(definitionObj); }); this.isBuilt = true; if (this.usePromise) { this.isValid = true; this.isBuilt = true; this.deferredClient.resolve(this); return this.deferredClient.promise; } if (this.success) { this.success(); } return this; }; SwaggerClient.prototype.makeUniqueOperationId = function(operationId, api) { var count = 0; var name = operationId; // make unique across this operation group while(true) { var matched = false; _.forEach(api.operations, function (operation) { if(operation.nickname === name) { matched = true; } }); if(!matched) { return name; } name = operationId + '_' + count; count ++; } return operationId; }; SwaggerClient.prototype.parseUri = function (uri) { var urlParseRE = /^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/; var parts = urlParseRE.exec(uri); return { scheme: parts[4] ? parts[4].replace(':','') : undefined, host: parts[11], port: parts[12], path: parts[15] }; }; SwaggerClient.prototype.help = function (dontPrint) { var output = ''; if (this instanceof SwaggerClient) { _.forEach(this.apis, function (api, name) { if (_.isPlainObject(api)) { output += 'operations for the \'' + name + '\' tag\n'; _.forEach(api.operations, function (operation, name) { output += ' * ' + name + ': ' + operation.summary + '\n'; }); } }); } else if (this instanceof OperationGroup || _.isPlainObject(this)) { output += 'operations for the \'' + this.label + '\' tag\n'; _.forEach(this.apis, function (operation, name) { output += ' * ' + name + ': ' + operation.summary + '\n'; }); } if (dontPrint) { return output; } else { helpers.log(output); return output; } }; SwaggerClient.prototype.tagFromLabel = function (label) { return label; }; SwaggerClient.prototype.idFromOp = function (path, httpMethod, op) { if(!op || !op.operationId) { op = op || {}; op.operationId = httpMethod + '_' + path; } var opId = op.operationId.replace(/[\s!@#$%^&*()_+=\[{\]};:<>|.\/?,\\'""-]/g, '_') || (path.substring(1) + '_' + httpMethod); opId = opId.replace(/((_){2,})/g, '_'); opId = opId.replace(/^(_)*/g, ''); opId = opId.replace(/([_])*$/g, ''); return opId; }; SwaggerClient.prototype.setHost = function (host) { this.host = host; if(this.apis) { _.forEach(this.apis, function(api) { if(api.operations) { _.forEach(api.operations, function(operation) { operation.host = host; }); } }); } }; SwaggerClient.prototype.setBasePath = function (basePath) { this.basePath = basePath; if(this.apis) { _.forEach(this.apis, function(api) { if(api.operations) { _.forEach(api.operations, function(operation) { operation.basePath = basePath; }); } }); } }; SwaggerClient.prototype.setSchemes = function (schemes) { this.schemes = schemes; if(schemes && schemes.length > 0) { if(this.apis) { _.forEach(this.apis, function (api) { if (api.operations) { _.forEach(api.operations, function (operation) { operation.scheme = schemes[0]; }); } }); } } }; SwaggerClient.prototype.fail = function (message) { if (this.usePromise) { this.deferredClient.reject(message); return this.deferredClient.promise; } else { if (this.failure) { this.failure(message); } else { this.failure(message); } } }; },{"./auth":2,"./helpers":4,"./http":5,"./resolver":6,"./spec-converter":8,"./types/model":9,"./types/operation":10,"./types/operationGroup":11,"lodash-compat/array/indexOf":49,"lodash-compat/collection/find":53,"lodash-compat/collection/forEach":54,"lodash-compat/function/bind":58,"lodash-compat/lang/cloneDeep":138,"lodash-compat/lang/isArray":140,"lodash-compat/lang/isFunction":142,"lodash-compat/lang/isObject":144,"lodash-compat/lang/isPlainObject":145,"lodash-compat/lang/isUndefined":148,"q":157}],4:[function(require,module,exports){ (function (process){ 'use strict'; var _ = { isPlainObject: require('lodash-compat/lang/isPlainObject'), indexOf: require('lodash-compat/array/indexOf') }; module.exports.__bind = function (fn, me) { return function(){ return fn.apply(me, arguments); }; }; var log = module.exports.log = function() { // Only log if available and we're not testing if (console && process.env.NODE_ENV !== 'test') { console.log(Array.prototype.slice.call(arguments)[0]); } }; module.exports.fail = function (message) { log(message); }; module.exports.optionHtml = function (label, value) { return '' + label + ':' + value + ''; }; var resolveSchema = module.exports.resolveSchema = function (schema) { if (_.isPlainObject(schema.schema)) { schema = resolveSchema(schema.schema); } return schema; }; module.exports.simpleRef = function (name) { if (typeof name === 'undefined') { return null; } if (name.indexOf('#/definitions/') === 0) { return name.substring('#/definitions/'.length); } else { return name; } }; /** * helper to remove extensions and add them to an object * * @param keyname * @param obj */ module.exports.extractExtensions = function (keyname, obj, value) { if(!keyname || !obj) { return; } if (typeof keyname === 'string' && keyname.indexOf('x-') === 0) { obj.vendorExtensions = obj.vendorExtensions || {}; if(value) { obj.vendorExtensions[keyname] = value; } else { obj.vendorExtensions[keyname] = obj[keyname]; } } }; }).call(this,require('_process')) },{"_process":12,"lodash-compat/array/indexOf":49,"lodash-compat/lang/isPlainObject":145}],5:[function(require,module,exports){ (function (Buffer){ 'use strict'; var helpers = require('./helpers'); var request = require('superagent'); var jsyaml = require('js-yaml'); var _ = { isObject: require('lodash-compat/lang/isObject'), keys: require('lodash-compat/object/keys') }; /* * JQueryHttpClient is a light-weight, node or browser HTTP client */ var JQueryHttpClient = function () { this.type = 'JQueryHttpClient'; }; /* * SuperagentHttpClient is a light-weight, node or browser HTTP client */ var SuperagentHttpClient = function () { this.type = 'SuperagentHttpClient'; }; /** * SwaggerHttp is a wrapper for executing requests */ var SwaggerHttp = module.exports = function () {}; SwaggerHttp.prototype.execute = function (obj, opts) { var client; if(opts && opts.client) { client = opts.client; } else { client = new SuperagentHttpClient(opts); } client.opts = opts || {}; if (opts && opts.requestAgent) { request = opts.requestAgent; } // legacy support var hasJQuery = false; if(typeof window !== 'undefined') { if(typeof window.jQuery !== 'undefined') { hasJQuery = true; } } // OPTIONS support if(obj.method.toLowerCase() === 'options' && client.type === 'SuperagentHttpClient') { log('forcing jQuery as OPTIONS are not supported by SuperAgent'); obj.useJQuery = true; } if(this.isInternetExplorer() && (obj.useJQuery === false || !hasJQuery )) { throw new Error('Unsupported configuration! JQuery is required but not available'); } if ((obj && obj.useJQuery === true) || this.isInternetExplorer() && hasJQuery) { client = new JQueryHttpClient(opts); } var success = obj.on.response; var error = obj.on.error; var requestInterceptor = function(data) { if(opts && opts.requestInterceptor) { data = opts.requestInterceptor.apply(data); } return data; }; var responseInterceptor = function(data) { if(opts && opts.responseInterceptor) { data = opts.responseInterceptor.apply(data, [obj]); } return success(data); }; var errorInterceptor = function(data) { if(opts && opts.responseInterceptor) { data = opts.responseInterceptor.apply(data, [obj]); } error(data); }; obj.on.error = function(data) { errorInterceptor(data); }; obj.on.response = function(data) { if(data && data.status >= 400) { errorInterceptor(data); } else { responseInterceptor(data); } }; if (_.isObject(obj) && _.isObject(obj.body)) { // special processing for file uploads via jquery if (obj.body.type && obj.body.type === 'formData'){ if(opts.useJQuery) { obj.contentType = false; obj.processData = false; delete obj.headers['Content-Type']; } } } obj = requestInterceptor(obj) || obj; if (obj.beforeSend) { obj.beforeSend(function(_obj) { client.execute(_obj || obj); }); } else { client.execute(obj); } return (obj.deferred) ? obj.deferred.promise : obj; }; SwaggerHttp.prototype.isInternetExplorer = function () { var detectedIE = false; if (typeof navigator !== 'undefined' && navigator.userAgent) { var nav = navigator.userAgent.toLowerCase(); if (nav.indexOf('msie') !== -1) { var version = parseInt(nav.split('msie')[1]); if (version <= 8) { detectedIE = true; } } } return detectedIE; }; JQueryHttpClient.prototype.execute = function (obj) { var jq = this.jQuery || (typeof window !== 'undefined' && window.jQuery); var cb = obj.on; var request = obj; if(typeof jq === 'undefined' || jq === false) { throw new Error('Unsupported configuration! JQuery is required but not available'); } obj.type = obj.method; obj.cache = obj.jqueryAjaxCache; obj.data = obj.body; delete obj.jqueryAjaxCache; delete obj.useJQuery; delete obj.body; obj.complete = function (response) { var headers = {}; var headerArray = response.getAllResponseHeaders().split('\n'); for (var i = 0; i < headerArray.length; i++) { var toSplit = headerArray[i].trim(); if (toSplit.length === 0) { continue; } var separator = toSplit.indexOf(':'); if (separator === -1) { // Name but no value in the header headers[toSplit] = null; continue; } var name = toSplit.substring(0, separator).trim(); var value = toSplit.substring(separator + 1).trim(); headers[name] = value; } var out = { url: request.url, method: request.method, status: response.status, statusText: response.statusText, data: response.responseText, headers: headers }; try { var possibleObj = response.responseJSON || jsyaml.safeLoad(response.responseText); out.obj = (typeof possibleObj === 'string') ? {} : possibleObj; } catch (ex) { // do not set out.obj helpers.log('unable to parse JSON/YAML content'); } // I can throw, or parse null? out.obj = out.obj || null; if (response.status >= 200 && response.status < 300) { cb.response(out); } else if (response.status === 0 || (response.status >= 400 && response.status < 599)) { cb.error(out); } else { return cb.response(out); } }; jq.support.cors = true; return jq.ajax(obj); }; SuperagentHttpClient.prototype.execute = function (obj) { var method = obj.method.toLowerCase(); var timeout = obj.timeout; if (method === 'delete') { method = 'del'; } var headers = obj.headers || {}; var r = request[method](obj.url); if (obj.connectionAgent) { r.agent(obj.connectionAgent); } if (timeout) { r.timeout(timeout); } if (obj.enableCookies) { r.withCredentials(); } var accept = obj.headers.Accept; if(this.binaryRequest(accept)) { r.on('request', function () { if(this.xhr) { this.xhr.responseType = 'blob'; } }); } if(obj.body) { if(_.isObject(obj.body)) { var contentType = obj.headers['Content-Type'] || ''; if (contentType.indexOf('multipart/form-data') === 0) { delete headers['Content-Type']; if({}.toString.apply(obj.body) === '[object FormData]') { r.send(obj.body); } else { var keyname, value, v; for (keyname in obj.body) { value = obj.body[keyname]; if(Array.isArray(value)) { for(v in value) { r.field(keyname, v); } } else { r.field(keyname, value); } } } } else if (_.isObject(obj.body)) { // non multipart/form-data obj.body = JSON.stringify(obj.body); r.send(obj.body); } } else { r.send(obj.body); } } var name; for (name in headers) { r.set(name, headers[name]); } if(typeof r.buffer === 'function') { r.buffer(); // force superagent to populate res.text with the raw response data } r.end(function (err, res) { res = res || { status: 0, headers: {error: 'no response from server'} }; var response = { url: obj.url, method: obj.method, headers: res.headers }; var cb; if (!err && res.error) { err = res.error; } if (err && obj.on && obj.on.error) { response.errObj = err; response.status = res ? res.status : 500; response.statusText = res ? res.text : err.message; if (res.headers && res.headers['content-type']) { if (res.headers['content-type'].indexOf('application/json') >= 0) { try { response.obj = JSON.parse(response.statusText); } catch (e) { response.obj = null; } } } cb = obj.on.error; } else if (res && obj.on && obj.on.response) { var possibleObj; // Already parsed by by superagent? if (res.body && _.keys(res.body).length > 0) { possibleObj = res.body; } else { try { possibleObj = jsyaml.safeLoad(res.text); // can parse into a string... which we don't need running around in the system possibleObj = (typeof possibleObj === 'string') ? null : possibleObj; } catch (e) { helpers.log('cannot parse JSON/YAML content'); } } // null means we can't parse into object if(typeof Buffer === 'function' && Buffer.isBuffer(possibleObj)) { response.data = possibleObj; } else { response.obj = (typeof possibleObj === 'object') ? possibleObj : null; } response.status = res.status; response.statusText = res.text; cb = obj.on.response; } if (res.xhr && res.xhr.response) { response.data = res.xhr.response; } else if(!response.data) { response.data = response.statusText; } if (cb) { cb(response); } }); }; SuperagentHttpClient.prototype. binaryRequest = function (accept) { if(!accept) { return false; } return (/^image/i).test(accept) || (/^application\/pdf/).test(accept) || (/^application\/octet-stream/).test(accept); }; }).call(this,require("buffer").Buffer) },{"./helpers":4,"buffer":14,"js-yaml":19,"lodash-compat/lang/isObject":144,"lodash-compat/object/keys":149,"superagent":158}],6:[function(require,module,exports){ 'use strict'; var SwaggerHttp = require('./http'); var _ = { isObject: require('lodash-compat/lang/isObject'), cloneDeep: require('lodash-compat/lang/cloneDeep'), isArray: require('lodash-compat/lang/isArray'), isString: require('lodash-compat/lang/isString') }; /** * Resolves a spec's remote references */ var Resolver = module.exports = function () { this.failedUrls = []; this.resolverCache = {}; this.pendingUrls = {}; }; Resolver.prototype.processAllOf = function(root, name, definition, resolutionTable, unresolvedRefs, spec) { var i, location, property; definition['x-resolved-from'] = [ '#/definitions/' + name ]; var allOf = definition.allOf; // the refs go first allOf.sort(function(a, b) { if(a.$ref && b.$ref) { return 0; } else if(a.$ref) { return -1; } else { return 1; } }); for (i = 0; i < allOf.length; i++) { property = allOf[i]; location = '/definitions/' + name + '/allOf'; this.resolveInline(root, spec, property, resolutionTable, unresolvedRefs, location); } }; Resolver.prototype.resolve = function (spec, arg1, arg2, arg3) { this.spec = spec; var root = arg1, callback = arg2, scope = arg3, opts = {}, location, i; if(typeof arg1 === 'function') { root = null; callback = arg1; scope = arg2; } var _root = root, modelName; this.scope = (scope || this); this.iteration = this.iteration || 0; if(this.scope.options && this.scope.options.requestInterceptor){ opts.requestInterceptor = this.scope.options.requestInterceptor; } if(this.scope.options && this.scope.options.responseInterceptor){ opts.responseInterceptor = this.scope.options.responseInterceptor; } var name, path, property, propertyName, parameter, done, counter; var processedCalls = 0, resolvedRefs = {}, unresolvedRefs = {}; var resolutionTable = []; // store objects for dereferencing spec.definitions = spec.definitions || {}; // definitions for (name in spec.definitions) { var definition = spec.definitions[name]; if(definition.$ref) { this.resolveInline(root, spec, definition, resolutionTable, unresolvedRefs, definition); } else { for (propertyName in definition.properties) { property = definition.properties[propertyName]; if (_.isArray(property.allOf)) { this.processAllOf(root, name, property, resolutionTable, unresolvedRefs, spec); } else { this.resolveTo(root, property, resolutionTable, '/definitions'); } } if (definition.allOf) { this.processAllOf(root, name, definition, resolutionTable, unresolvedRefs, spec); } } } // shared parameters spec.parameters = spec.parameters || {}; for(name in spec.parameters) { parameter = spec.parameters[name]; if (parameter.in === 'body' && parameter.schema) { if(_.isArray(parameter.schema.allOf)) { // move to a definition modelName = 'inline_model'; var _name = modelName; done = false; counter = 0; while(!done) { if(typeof spec.definitions[_name] === 'undefined') { done = true; break; } _name = modelName + '_' + counter; counter ++; } spec.definitions[_name] = { allOf: parameter.schema.allOf }; delete parameter.schema.allOf; parameter.schema.$ref = '#/definitions/' + _name; this.processAllOf(root, _name, spec.definitions[_name], resolutionTable, unresolvedRefs, spec); } else { this.resolveTo(root, parameter.schema, resolutionTable, location); } } if (parameter.$ref) { // parameter reference this.resolveInline(root, spec, parameter, resolutionTable, unresolvedRefs, parameter.$ref); } } // operations for (name in spec.paths) { var method, operation, responseCode; path = spec.paths[name]; if(typeof path === 'object') { for (method in path) { // operation reference if (method === '$ref') { // location = path[method]; location = '/paths' + name; this.resolveInline(root, spec, path, resolutionTable, unresolvedRefs, location); } else { operation = path[method]; var sharedParameters = path.parameters || []; var parameters = operation.parameters || []; sharedParameters.forEach(function(parameter) { parameters.unshift(parameter); }); if (method !== 'parameters' && _.isObject(operation)) { operation.parameters = operation.parameters || parameters; } for (i in parameters) { parameter = parameters[i]; location = '/paths' + name + '/' + method + '/parameters'; if (parameter.in === 'body' && parameter.schema) { if (_.isArray(parameter.schema.allOf)) { // move to a definition modelName = 'inline_model'; name = modelName; done = false; counter = 0; while (!done) { if (typeof spec.definitions[name] === 'undefined') { done = true; break; } name = modelName + '_' + counter; counter++; } spec.definitions[name] = {allOf: parameter.schema.allOf}; delete parameter.schema.allOf; parameter.schema.$ref = '#/definitions/' + name; this.processAllOf(root, name, spec.definitions[name], resolutionTable, unresolvedRefs, spec); } else { this.resolveTo(root, parameter.schema, resolutionTable, location); } } if (parameter.$ref) { // parameter reference this.resolveInline(root, spec, parameter, resolutionTable, unresolvedRefs, parameter.$ref); } } for (responseCode in operation.responses) { var response = operation.responses[responseCode]; location = '/paths' + name + '/' + method + '/responses/' + responseCode; if (_.isObject(response)) { if (response.$ref) { // response reference this.resolveInline(root, spec, response, resolutionTable, unresolvedRefs, location); } if (response.schema) { var responseObj = response; if (_.isArray(responseObj.schema.allOf)) { // move to a definition modelName = 'inline_model'; name = modelName; done = false; counter = 0; while (!done) { if (typeof spec.definitions[name] === 'undefined') { done = true; break; } name = modelName + '_' + counter; counter++; } spec.definitions[name] = {allOf: responseObj.schema.allOf}; delete responseObj.schema.allOf; delete responseObj.schema.type; responseObj.schema.$ref = '#/definitions/' + name; this.processAllOf(root, name, spec.definitions[name], resolutionTable, unresolvedRefs, spec); } else if ('array' === responseObj.schema.type) { if (responseObj.schema.items && responseObj.schema.items.$ref) { // response reference this.resolveInline(root, spec, responseObj.schema.items, resolutionTable, unresolvedRefs, location); } } else { this.resolveTo(root, response.schema, resolutionTable, location); } } } } } } // clear them out to avoid multiple resolutions path.parameters = []; } } var expectedCalls = 0, toResolve = []; // if the root is same as obj[i].root we can resolve locally var all = resolutionTable; var parts; for(i = 0; i < all.length; i++) { var a = all[i]; if(root === a.root) { if(a.resolveAs === 'ref') { // resolve any path walking var joined = ((a.root || '') + '/' + a.key).split('/'); var normalized = []; var url = ''; var k; if(a.key.indexOf('../') >= 0) { for(var j = 0; j < joined.length; j++) { if(joined[j] === '..') { normalized = normalized.slice(0, normalized.length-1); } else { normalized.push(joined[j]); } } for(k = 0; k < normalized.length; k ++) { if(k > 0) { url += '/'; } url += normalized[k]; } // we now have to remote resolve this because the path has changed a.root = url; toResolve.push(a); } else { parts = a.key.split('#'); if(parts.length === 2) { if(parts[0].indexOf('http:') === 0 || parts[0].indexOf('https:') === 0) { a.root = parts[0]; } location = parts[1].split('/'); var r; var s = spec; for(k = 0; k < location.length; k++) { var part = location[k]; if(part !== '') { s = s[part]; if(typeof s !== 'undefined') { r = s; } else { r = null; break; } } } if(r === null) { // must resolve this too toResolve.push(a); } } } } else { if (a.resolveAs === 'inline') { if(a.key && a.key.indexOf('#') === -1 && a.key.charAt(0) !== '/') { // handle relative schema parts = a.root.split('/'); location = ''; for(i = 0; i < parts.length - 1; i++) { location += parts[i] + '/'; } location += a.key; a.root = location; a.location = ''; } toResolve.push(a); } } } else { toResolve.push(a); } } expectedCalls = toResolve.length; // resolve anything that is local var lock = {}; for(var ii = 0; ii < toResolve.length; ii++) { (function(item, spec, self, lock, ii) { if(!item.root || item.root === root) { // local resolve self.resolveItem(spec, _root, resolutionTable, resolvedRefs, unresolvedRefs, item); processedCalls += 1; if(processedCalls === expectedCalls) { self.finish(spec, root, resolutionTable, resolvedRefs, unresolvedRefs, callback, true); } } else if(self.failedUrls.indexOf(item.root) === -1) { var obj = { useJQuery: false, // TODO url: item.root, method: 'get', headers: { accept: self.scope.swaggerRequestHeaders || 'application/json' }, on: { error: function (error) { processedCalls += 1; console.log('failed url: ' + obj.url); self.failedUrls.push(obj.url); if (lock) { delete lock[item.root]; } unresolvedRefs[item.key] = { root: item.root, location: item.location }; if (processedCalls === expectedCalls) { self.finish(spec, _root, resolutionTable, resolvedRefs, unresolvedRefs, callback); } }, // jshint ignore:line response: function (response) { var swagger = response.obj; if (lock) { delete lock[item.root]; } if (self.resolverCache) { self.resolverCache[item.root] = swagger; } self.resolveItem(swagger, item.root, resolutionTable, resolvedRefs, unresolvedRefs, item); processedCalls += 1; if (processedCalls === expectedCalls) { self.finish(spec, _root, resolutionTable, resolvedRefs, unresolvedRefs, callback); } } } // jshint ignore:line }; // apply timeout only when specified if (scope && scope.fetchSpecTimeout) { obj.timeout = scope.fetchSpecTimeout; } if (scope && scope.clientAuthorizations) { scope.clientAuthorizations.apply(obj); } (function waitForUnlock() { setTimeout(function() { if (lock[obj.url]) { waitForUnlock(); } else { var cached = self.resolverCache[obj.url]; if (_.isObject(cached)) { obj.on.response({obj: cached}); } else { lock[obj.url] = true; new SwaggerHttp().execute(obj, opts); } } }, 0); })(); } else { processedCalls += 1; unresolvedRefs[item.key] = { root: item.root, location: item.location }; if (processedCalls === expectedCalls) { self.finish(spec, _root, resolutionTable, resolvedRefs, unresolvedRefs, callback); } } }(toResolve[ii], spec, this, lock, ii)); } if (Object.keys(toResolve).length === 0) { this.finish(spec, _root, resolutionTable, resolvedRefs, unresolvedRefs, callback); } }; Resolver.prototype.resolveItem = function(spec, root, resolutionTable, resolvedRefs, unresolvedRefs, item) { var path = item.location; var location = spec, parts = path.split('/'); if(path !== '') { for (var j = 0; j < parts.length; j++) { var segment = parts[j]; if (segment.indexOf('~1') !== -1) { segment = parts[j].replace(/~0/g, '~').replace(/~1/g, '/'); if (segment.charAt(0) !== '/') { segment = '/' + segment; } } if (typeof location === 'undefined' || location === null) { break; } if (segment === '' && j === (parts.length - 1) && parts.length > 1) { location = null; break; } if (segment.length > 0) { location = location[segment]; } } } var resolved = item.key; parts = item.key.split('/'); var resolvedName = parts[parts.length-1]; if(resolvedName.indexOf('#') >= 0) { resolvedName = resolvedName.split('#')[1]; } if (location !== null && typeof location !== 'undefined') { resolvedRefs[resolved] = { name: resolvedName, obj: location, key: item.key, root: item.root }; } else { unresolvedRefs[resolved] = { root: item.root, location: item.location }; } }; Resolver.prototype.finish = function (spec, root, resolutionTable, resolvedRefs, unresolvedRefs, callback, localResolve) { // walk resolution table and replace with resolved refs var ref, abs; for (ref in resolutionTable) { var item = resolutionTable[ref]; var key = item.key; var resolvedTo = resolvedRefs[key]; if (resolvedTo) { spec.definitions = spec.definitions || {}; if (item.resolveAs === 'ref') { if (localResolve !== true) { // don't retain root for local definitions for (key in resolvedTo.obj) { abs = this.retainRoot(key, resolvedTo.obj[key], item.root); resolvedTo.obj[key] = abs; } } spec.definitions[resolvedTo.name] = resolvedTo.obj; item.obj.$ref = '#/definitions/' + resolvedTo.name; } else if (item.resolveAs === 'inline') { var targetObj = item.obj; targetObj['x-resolved-from'] = [ item.key ]; delete targetObj.$ref; for (key in resolvedTo.obj) { abs = resolvedTo.obj[key]; if (localResolve !== true) { // don't retain root for local definitions abs = this.retainRoot(key, resolvedTo.obj[key], item.root); } targetObj[key] = abs; } } } } var existingUnresolved = this.countUnresolvedRefs(spec); if(existingUnresolved === 0 || this.iteration > 5) { this.resolveAllOf(spec.definitions); this.resolverCache = null; callback.call(this.scope, spec, unresolvedRefs); } else { this.iteration += 1; this.resolve(spec, root, callback, this.scope); } }; Resolver.prototype.countUnresolvedRefs = function(spec) { var i; var refs = this.getRefs(spec); var keys = []; var unresolvedKeys = []; for(i in refs) { if(i.indexOf('#') === 0) { keys.push(i.substring(1)); } else { unresolvedKeys.push(i); } } // verify possible keys for (i = 0; i < keys.length; i++) { var part = keys[i]; var parts = part.split('/'); var obj = spec; for (var k = 0; k < parts.length; k++) { var key = parts[k]; if(key !== '') { obj = obj[key]; if(typeof obj === 'undefined') { unresolvedKeys.push(part); break; } } } } return unresolvedKeys.length; }; Resolver.prototype.getRefs = function(spec, obj) { obj = obj || spec; var output = {}; for(var key in obj) { if (!obj.hasOwnProperty(key)) { continue; } var item = obj[key]; if(key === '$ref' && typeof item === 'string') { output[item] = null; } else if(_.isObject(item)) { var o = this.getRefs(item); for(var k in o) { output[k] = null; } } } return output; }; function splitUrl(url) { var result = {}; var proto = /[a-z]+:\/\//i.exec(url); if (proto) { result.proto = proto[0].slice(0, -3); url = url.slice(result.proto.length + 1); } if (url.slice(0, 2) === '//') { result.domain = url.slice(2).split('/')[0]; url = url.slice(2 + result.domain.length); } var p = url.split('#'); if (p[0].length) { result.path = p[0]; } if (p.length > 1) { result.fragment = p.slice(1).join('#'); } return result; } function unsplitUrl(url) { var result = url.path; if (result === undefined) { result = ''; } if (url.fragment !== undefined) { result += '#' + url.fragment; } if (url.domain !== undefined) { if (result.slice(0, 1) === '/') { result = result.slice(1); } result = '//' + url.domain + '/' + result; if (url.proto !== undefined) { result = url.proto + ':' + result; } } return result; } function joinUrl(base, rel) { var relsp = splitUrl(rel); if (relsp.domain !== undefined) { return rel; } var result = splitUrl(base); if (relsp.path === undefined) { // change only fragment part result.fragment = relsp.fragment; } else if (relsp.path.slice(0, 1) === '/') { // relative to domain result.path = relsp.path; result.fragment = relsp.fragment; } else { // relative to path var path = result.path === undefined ? [] : result.path.split('/'); var relpath = relsp.path.split('/'); if (path.length) { path.pop(); } while (relpath[0] === '..' || relpath[0] === '.') { if (relpath[0] === '..') { path.pop(); } relpath.shift(); } result.path = path.concat(relpath).join('/'); result.fragment = relsp.fragment; } return unsplitUrl(result); } Resolver.prototype.retainRoot = function(origKey, obj, root) { // walk object and look for relative $refs if(_.isObject(obj)) { for(var key in obj) { var item = obj[key]; if (key === '$ref' && typeof item === 'string') { obj[key] = joinUrl(root, item); } else if (_.isObject(item)) { this.retainRoot(key, item, root); } } } else if(_.isString(obj) && origKey === '$ref') { obj = joinUrl(root, obj); } return obj; }; /** * immediately in-lines local refs, queues remote refs * for inline resolution */ Resolver.prototype.resolveInline = function (root, spec, property, resolutionTable, unresolvedRefs, location) { var key = property.$ref, ref = property.$ref, i, p, p2, rs; var rootTrimmed = false; root = root || ''; // Guard against .split. @fehguy, you'll need to check if this logic fits // More imporantly is how do we gracefully handle relative urls, when provided just a 'spec', not a 'url' ? if (ref) { if(ref.indexOf('../') === 0) { // reset root p = ref.split('../'); p2 = root.split('/'); ref = ''; for(i = 0; i < p.length; i++) { if(p[i] === '') { p2 = p2.slice(0, p2.length-1); } else { ref += p[i]; } } root = ''; for(i = 0; i < p2.length - 1; i++) { if(i > 0) { root += '/'; } root += p2[i]; } rootTrimmed = true; } if(ref.indexOf('#') >= 0) { if(ref.indexOf('/') === 0) { rs = ref.split('#'); p = root.split('//'); p2 = p[1].split('/'); root = p[0] + '//' + p2[0] + rs[0]; location = rs[1]; } else { rs = ref.split('#'); if(rs[0] !== '') { p2 = root.split('/'); p2 = p2.slice(0, p2.length - 1); if(!rootTrimmed) { root = ''; for (var k = 0; k < p2.length; k++) { if(k > 0) { root += '/'; } root += p2[k]; } } root += '/' + ref.split('#')[0]; } location = rs[1]; } } if (ref.indexOf('http:') === 0 || ref.indexOf('https:') === 0) { if(ref.indexOf('#') >= 0) { root = ref.split('#')[0]; location = ref.split('#')[1]; } else { root = ref; location = ''; } resolutionTable.push({obj: property, resolveAs: 'inline', root: root, key: key, location: location}); } else if (ref.indexOf('#') === 0) { location = ref.split('#')[1]; resolutionTable.push({obj: property, resolveAs: 'inline', root: root, key: key, location: location}); } else if (ref.indexOf('/') === 0 && ref.indexOf('#') === -1) { location = ref; var matches = root.match(/^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i); if(matches) { root = matches[0] + ref.substring(1); location = ''; } resolutionTable.push({obj: property, resolveAs: 'inline', root: root, key: key, location: location}); } else { resolutionTable.push({obj: property, resolveAs: 'inline', root: root, key: key, location: location}); } } else if (property.type === 'array') { this.resolveTo(root, property.items, resolutionTable, location); } }; Resolver.prototype.resolveTo = function (root, property, resolutionTable, location) { var sp, i; var ref = property.$ref; var lroot = root; if ((typeof ref !== 'undefined') && (ref !== null)) { if(ref.indexOf('#') >= 0) { var parts = ref.split('#'); // #/definitions/foo // foo.json#/bar if(parts[0] && ref.indexOf('/') === 0) { } else if(parts[0] && (parts[0].indexOf('http:') === 0 || parts[0].indexOf('https:') === 0)) { lroot = parts[0]; ref = parts[1]; } else if(parts[0] && parts[0].length > 0) { // relative file sp = root.split('/'); lroot = ''; for(i = 0; i < sp.length - 1; i++) { lroot += sp[i] + '/'; } lroot += parts[0]; } else { } location = parts[1]; } else if (ref.indexOf('http:') === 0 || ref.indexOf('https:') === 0) { lroot = ref; location = ''; } else { // relative file sp = root.split('/'); lroot = ''; for(i = 0; i < sp.length - 1; i++) { lroot += sp[i] + '/'; } lroot += ref; location = ''; } resolutionTable.push({ obj: property, resolveAs: 'ref', root: lroot, key: ref, location: location }); } else if (property.type === 'array') { var items = property.items; this.resolveTo(root, items, resolutionTable, location); } else { if(property && (property.properties || property.additionalProperties)) { var name = this.uniqueName('inline_model'); if (property.title) { name = this.uniqueName(property.title); } delete property.title; this.spec.definitions[name] = _.cloneDeep(property); property.$ref = '#/definitions/' + name; delete property.type; delete property.properties; } } }; Resolver.prototype.uniqueName = function(base) { var name = base; var count = 0; while(true) { if(!_.isObject(this.spec.definitions[name])) { return name; } name = base + '_' + count; count++; } }; Resolver.prototype.resolveAllOf = function(spec, obj, depth) { depth = depth || 0; obj = obj || spec; var name; for(var key in obj) { if (!obj.hasOwnProperty(key)) { continue; } var item = obj[key]; if(item === null) { throw new TypeError('Swagger 2.0 does not support null types (' + obj + '). See https://github.com/swagger-api/swagger-spec/issues/229.'); } if(typeof item === 'object') { this.resolveAllOf(spec, item, depth + 1); } if(item && typeof item.allOf !== 'undefined') { var allOf = item.allOf; if(_.isArray(allOf)) { var output = _.cloneDeep(item); delete output.allOf; output['x-composed'] = true; if (typeof item['x-resolved-from'] !== 'undefined') { output['x-resolved-from'] = item['x-resolved-from']; } for(var i = 0; i < allOf.length; i++) { var component = allOf[i]; var source = 'self'; if(typeof component['x-resolved-from'] !== 'undefined') { source = component['x-resolved-from'][0]; } for(var part in component) { if(!output.hasOwnProperty(part)) { output[part] = _.cloneDeep(component[part]); if(part === 'properties') { for(name in output[part]) { output[part][name]['x-resolved-from'] = source; } } } else { if(part === 'properties') { var properties = component[part]; for(name in properties) { output.properties[name] = _.cloneDeep(properties[name]); var resolvedFrom = properties[name]['x-resolved-from']; if (typeof resolvedFrom === 'undefined' || resolvedFrom === 'self') { resolvedFrom = source; } output.properties[name]['x-resolved-from'] = resolvedFrom; } } else if(part === 'required') { // merge & dedup the required array var a = output.required.concat(component[part]); for(var k = 0; k < a.length; ++k) { for(var j = k + 1; j < a.length; ++j) { if(a[k] === a[j]) { a.splice(j--, 1); } } } output.required = a; } else if(part === 'x-resolved-from') { output['x-resolved-from'].push(source); } else { // TODO: need to merge this property // console.log('what to do with ' + part) } } } } obj[key] = output; } } } }; },{"./http":5,"lodash-compat/lang/cloneDeep":138,"lodash-compat/lang/isArray":140,"lodash-compat/lang/isObject":144,"lodash-compat/lang/isString":146}],7:[function(require,module,exports){ 'use strict'; var Helpers = require('./helpers'); var _ = { isPlainObject: require('lodash-compat/lang/isPlainObject'), isUndefined: require('lodash-compat/lang/isUndefined'), isArray: require('lodash-compat/lang/isArray'), isObject: require('lodash-compat/lang/isObject'), isEmpty: require('lodash-compat/lang/isEmpty'), map: require('lodash-compat/collection/map'), indexOf: require('lodash-compat/array/indexOf'), cloneDeep: require('lodash-compat/lang/cloneDeep'), keys: require('lodash-compat/object/keys'), forEach: require('lodash-compat/collection/forEach') }; var optionHtml = module.exports.optionHtml = function (label, value) { return '' + label + ':' + value + ''; }; module.exports.typeFromJsonSchema = function (type, format) { var str; if (type === 'integer' && format === 'int32') { str = 'integer'; } else if (type === 'integer' && format === 'int64') { str = 'long'; } else if (type === 'integer' && typeof format === 'undefined') { str = 'long'; } else if (type === 'string' && format === 'date-time') { str = 'date-time'; } else if (type === 'string' && format === 'date') { str = 'date'; } else if (type === 'number' && format === 'float') { str = 'float'; } else if (type === 'number' && format === 'double') { str = 'double'; } else if (type === 'number' && typeof format === 'undefined') { str = 'double'; } else if (type === 'boolean') { str = 'boolean'; } else if (type === 'string') { str = 'string'; } return str; }; var getStringSignature = module.exports.getStringSignature = function (obj, baseComponent) { var str = ''; if (typeof obj.$ref !== 'undefined') { str += Helpers.simpleRef(obj.$ref); } else if (typeof obj.type === 'undefined') { str += 'object'; } else if (obj.type === 'array') { if (baseComponent) { str += getStringSignature((obj.items || obj.$ref || {})); } else { str += 'Array['; str += getStringSignature((obj.items || obj.$ref || {})); str += ']'; } } else if (obj.type === 'integer' && obj.format === 'int32') { str += 'integer'; } else if (obj.type === 'integer' && obj.format === 'int64') { str += 'long'; } else if (obj.type === 'integer' && typeof obj.format === 'undefined') { str += 'long'; } else if (obj.type === 'string' && obj.format === 'date-time') { str += 'date-time'; } else if (obj.type === 'string' && obj.format === 'date') { str += 'date'; } else if (obj.type === 'string' && typeof obj.format === 'undefined') { str += 'string'; } else if (obj.type === 'number' && obj.format === 'float') { str += 'float'; } else if (obj.type === 'number' && obj.format === 'double') { str += 'double'; } else if (obj.type === 'number' && typeof obj.format === 'undefined') { str += 'double'; } else if (obj.type === 'boolean') { str += 'boolean'; } else if (obj.$ref) { str += Helpers.simpleRef(obj.$ref); } else { str += obj.type; } return str; }; var schemaToJSON = module.exports.schemaToJSON = function (schema, models, modelsToIgnore, modelPropertyMacro) { // Resolve the schema (Handle nested schemas) schema = Helpers.resolveSchema(schema); if(typeof modelPropertyMacro !== 'function') { modelPropertyMacro = function(prop){ return (prop || {}).default; }; } modelsToIgnore= modelsToIgnore || {}; var type = schema.type || 'object'; var format = schema.format; var model; var output; if (!_.isUndefined(schema.example)) { output = schema.example; } else if (_.isUndefined(schema.items) && _.isArray(schema.enum)) { output = schema.enum[0]; } if (_.isUndefined(output)) { if (schema.$ref) { model = models[Helpers.simpleRef(schema.$ref)]; if (!_.isUndefined(model)) { if (_.isUndefined(modelsToIgnore[model.name])) { modelsToIgnore[model.name] = model; output = schemaToJSON(model.definition, models, modelsToIgnore, modelPropertyMacro); delete modelsToIgnore[model.name]; } else { if (model.type === 'array') { output = []; } else { output = {}; } } } } else if (!_.isUndefined(schema.default)) { output = schema.default; } else if (type === 'string') { if (format === 'date-time') { output = new Date().toISOString(); } else if (format === 'date') { output = new Date().toISOString().split('T')[0]; } else { output = 'string'; } } else if (type === 'integer') { output = 0; } else if (type === 'number') { output = 0.0; } else if (type === 'boolean') { output = true; } else if (type === 'object') { output = {}; _.forEach(schema.properties, function (property, name) { var cProperty = _.cloneDeep(property); // Allow macro to set the default value cProperty.default = modelPropertyMacro(property); output[name] = schemaToJSON(cProperty, models, modelsToIgnore, modelPropertyMacro); }); } else if (type === 'array') { output = []; if (_.isArray(schema.items)) { _.forEach(schema.items, function (item) { output.push(schemaToJSON(item, models, modelsToIgnore, modelPropertyMacro)); }); } else if (_.isPlainObject(schema.items)) { output.push(schemaToJSON(schema.items, models, modelsToIgnore, modelPropertyMacro)); } else if (_.isUndefined(schema.items)) { output.push({}); } else { Helpers.log('Array type\'s \'items\' property is not an array or an object, cannot process'); } } } return output; }; module.exports.schemaToHTML =function (name, schema, models, modelPropertyMacro) { var strongOpen = ''; var strongClose = ''; // Allow for ignoring the 'name' argument.... shifting the rest if(_.isObject(arguments[0])) { name = void 0; schema = arguments[0]; models = arguments[1]; modelPropertyMacro = arguments[2]; } models = models || {}; // Resolve the schema (Handle nested schemas) schema = Helpers.resolveSchema(schema); // Return for empty object if(_.isEmpty(schema)) { return strongOpen + 'Empty' + strongClose; } // Dereference $ref from 'models' if(typeof schema.$ref === 'string') { name = Helpers.simpleRef(schema.$ref); schema = models[name]; if(typeof schema === 'undefined') { return strongOpen + name + ' is not defined!' + strongClose; } } if(typeof name !== 'string') { name = schema.title || 'Inline Model'; } // If we are a Model object... adjust accordingly if(schema.definition) { schema = schema.definition; } if(typeof modelPropertyMacro !== 'function') { modelPropertyMacro = function(prop){ return (prop || {}).default; }; } var references = {}; var seenModels = []; var inlineModels = 0; // Generate current HTML var html = processModel(schema, name); // Generate references HTML while (_.keys(references).length > 0) { /* jshint ignore:start */ _.forEach(references, function (schema, name) { var seenModel = _.indexOf(seenModels, name) > -1; delete references[name]; if (!seenModel) { seenModels.push(name); html += '
                ' + processModel(schema, name); } }); /* jshint ignore:end */ } return html; ///////////////////////////////// function addReference(schema, name, skipRef) { var modelName = name; var model; if (schema.$ref) { modelName = schema.title || Helpers.simpleRef(schema.$ref); model = models[modelName]; } else if (_.isUndefined(name)) { modelName = schema.title || 'Inline Model ' + (++inlineModels); model = {definition: schema}; } if (skipRef !== true) { references[modelName] = _.isUndefined(model) ? {} : model.definition; } return modelName; } function primitiveToHTML(schema) { var html = ''; var type = schema.type || 'object'; if (schema.$ref) { html += addReference(schema, Helpers.simpleRef(schema.$ref)); } else if (type === 'object') { if (!_.isUndefined(schema.properties)) { html += addReference(schema); } else { html += 'object'; } } else if (type === 'array') { html += 'Array['; if (_.isArray(schema.items)) { html += _.map(schema.items, addReference).join(','); } else if (_.isPlainObject(schema.items)) { if (_.isUndefined(schema.items.$ref)) { if (!_.isUndefined(schema.items.type) && _.indexOf(['array', 'object'], schema.items.type) === -1) { html += schema.items.type; } else { html += addReference(schema.items); } } else { html += addReference(schema.items, Helpers.simpleRef(schema.items.$ref)); } } else { Helpers.log('Array type\'s \'items\' schema is not an array or an object, cannot process'); html += 'object'; } html += ']'; } else { html += schema.type; } html += ''; return html; } function primitiveToOptionsHTML(schema, html) { var options = ''; var type = schema.type || 'object'; var isArray = type === 'array'; if (isArray) { if (_.isPlainObject(schema.items) && !_.isUndefined(schema.items.type)) { type = schema.items.type; } else { type = 'object'; } } if (!_.isUndefined(schema.default)) { options += optionHtml('Default', schema.default); } switch (type) { case 'string': if (schema.minLength) { options += optionHtml('Min. Length', schema.minLength); } if (schema.maxLength) { options += optionHtml('Max. Length', schema.maxLength); } if (schema.pattern) { options += optionHtml('Reg. Exp.', schema.pattern); } break; case 'integer': case 'number': if (schema.minimum) { options += optionHtml('Min. Value', schema.minimum); } if (schema.exclusiveMinimum) { options += optionHtml('Exclusive Min.', 'true'); } if (schema.maximum) { options += optionHtml('Max. Value', schema.maximum); } if (schema.exclusiveMaximum) { options += optionHtml('Exclusive Max.', 'true'); } if (schema.multipleOf) { options += optionHtml('Multiple Of', schema.multipleOf); } break; } if (isArray) { if (schema.minItems) { options += optionHtml('Min. Items', schema.minItems); } if (schema.maxItems) { options += optionHtml('Max. Items', schema.maxItems); } if (schema.uniqueItems) { options += optionHtml('Unique Items', 'true'); } if (schema.collectionFormat) { options += optionHtml('Coll. Format', schema.collectionFormat); } } if (_.isUndefined(schema.items)) { if (_.isArray(schema.enum)) { var enumString; if (type === 'number' || type === 'integer') { enumString = schema.enum.join(', '); } else { enumString = '"' + schema.enum.join('", "') + '"'; } options += optionHtml('Enum', enumString); } } if (options.length > 0) { html = '' + html + '' + options + '
                ' + type + '
                '; } return html; } function processModel(schema, name) { var type = schema.type || 'object'; var isArray = schema.type === 'array'; var html = strongOpen + name + ' ' + (isArray ? '[' : '{') + strongClose; if (name) { seenModels.push(name); } if (isArray) { if (_.isArray(schema.items)) { html += '
                ' + _.map(schema.items, function (item) { var type = item.type || 'object'; if (_.isUndefined(item.$ref)) { if (_.indexOf(['array', 'object'], type) > -1) { if (type === 'object' && _.isUndefined(item.properties)) { return 'object'; } else { return addReference(item); } } else { return primitiveToOptionsHTML(item, type); } } else { return addReference(item, Helpers.simpleRef(item.$ref)); } }).join(',
                '); } else if (_.isPlainObject(schema.items)) { if (_.isUndefined(schema.items.$ref)) { if (_.indexOf(['array', 'object'], schema.items.type || 'object') > -1) { if ((_.isUndefined(schema.items.type) || schema.items.type === 'object') && _.isUndefined(schema.items.properties)) { html += '
                object
                '; } else { html += '
                ' + addReference(schema.items) + '
                '; } } else { html += '
                ' + primitiveToOptionsHTML(schema.items, schema.items.type) + '
                '; } } else { html += '
                ' + addReference(schema.items, Helpers.simpleRef(schema.items.$ref)) + '
                '; } } else { Helpers.log('Array type\'s \'items\' property is not an array or an object, cannot process'); html += '
                object
                '; } } else { if (schema.$ref) { html += '
                ' + addReference(schema, name) + '
                '; } else if (type === 'object') { if (_.isPlainObject(schema.properties)) { var contents = _.map(schema.properties, function (property, name) { var propertyIsRequired = (_.indexOf(schema.required, name) >= 0); var cProperty = _.cloneDeep(property); var requiredClass = propertyIsRequired ? 'required' : ''; var html = '' + name + ' ('; var model; var propDescription; // Allow macro to set the default value cProperty.default = modelPropertyMacro(cProperty); // Resolve the schema (Handle nested schemas) cProperty = Helpers.resolveSchema(cProperty); propDescription = property.description || cProperty.description; // We need to handle property references to primitives (Issue 339) if (!_.isUndefined(cProperty.$ref)) { model = models[Helpers.simpleRef(cProperty.$ref)]; if (!_.isUndefined(model) && _.indexOf([undefined, 'array', 'object'], model.definition.type) === -1) { // Use referenced schema cProperty = Helpers.resolveSchema(model.definition); } } html += primitiveToHTML(cProperty); if(!propertyIsRequired) { html += ', optional'; } if(property.readOnly) { html += ', read only'; } html += ')'; if (!_.isUndefined(propDescription)) { html += ': ' + '' + propDescription + ''; } if (cProperty.enum) { html += ' = [\'' + cProperty.enum.join('\', \'') + '\']'; } return '' + primitiveToOptionsHTML(cProperty, html); }).join(',
                '); if (contents) { html += contents + '
                '; } } } else { html += '
                ' + primitiveToOptionsHTML(schema, type) + '
                '; } } return html + strongOpen + (isArray ? ']' : '}') + strongClose; } }; },{"./helpers":4,"lodash-compat/array/indexOf":49,"lodash-compat/collection/forEach":54,"lodash-compat/collection/map":56,"lodash-compat/lang/cloneDeep":138,"lodash-compat/lang/isArray":140,"lodash-compat/lang/isEmpty":141,"lodash-compat/lang/isObject":144,"lodash-compat/lang/isPlainObject":145,"lodash-compat/lang/isUndefined":148,"lodash-compat/object/keys":149}],8:[function(require,module,exports){ 'use strict'; var SwaggerHttp = require('./http'); var _ = { isObject: require('lodash-compat/lang/isObject') }; var SwaggerSpecConverter = module.exports = function () { this.errors = []; this.warnings = []; this.modelMap = {}; }; SwaggerSpecConverter.prototype.setDocumentationLocation = function (location) { this.docLocation = location; }; /** * converts a resource listing OR api declaration **/ SwaggerSpecConverter.prototype.convert = function (obj, clientAuthorizations, opts, callback) { // not a valid spec if(!obj || !Array.isArray(obj.apis)) { return this.finish(callback, null); } this.clientAuthorizations = clientAuthorizations; // create a new swagger object to return var swagger = { swagger: '2.0' }; swagger.originalVersion = obj.swaggerVersion; // add the info this.apiInfo(obj, swagger); // add security definitions this.securityDefinitions(obj, swagger); // take basePath into account if (obj.basePath) { this.setDocumentationLocation(obj.basePath); } // see if this is a single-file swagger definition var isSingleFileSwagger = false; var i; for(i = 0; i < obj.apis.length; i++) { var api = obj.apis[i]; if(Array.isArray(api.operations)) { isSingleFileSwagger = true; } } if(isSingleFileSwagger) { this.declaration(obj, swagger); this.finish(callback, swagger); } else { this.resourceListing(obj, swagger, opts, callback); } }; SwaggerSpecConverter.prototype.declaration = function(obj, swagger) { var name, i, p, pos; if(!obj.apis) { return; } if (obj.basePath.indexOf('http://') === 0) { p = obj.basePath.substring('http://'.length); pos = p.indexOf('/'); if (pos > 0) { swagger.host = p.substring(0, pos); swagger.basePath = p.substring(pos); } else { swagger.host = p; swagger.basePath = '/'; } } else if (obj.basePath.indexOf('https://') === 0) { p = obj.basePath.substring('https://'.length); pos = p.indexOf('/'); if (pos > 0) { swagger.host = p.substring(0, pos); swagger.basePath = p.substring(pos); } else { swagger.host = p; swagger.basePath = '/'; } } else { swagger.basePath = obj.basePath; } var resourceLevelAuth; if(obj.authorizations) { resourceLevelAuth = obj.authorizations; } if(obj.consumes) { swagger.consumes = obj.consumes; } if(obj.produces) { swagger.produces = obj.produces; } // build a mapping of id to name for 1.0 model resolutions if(_.isObject(obj)) { for(name in obj.models) { var existingModel = obj.models[name]; var key = (existingModel.id || name); this.modelMap[key] = name; } } for(i = 0; i < obj.apis.length; i++) { var api = obj.apis[i]; var path = api.path; var operations = api.operations; this.operations(path, obj.resourcePath, operations, resourceLevelAuth, swagger); } var models = obj.models || {}; this.models(models, swagger); }; SwaggerSpecConverter.prototype.models = function(obj, swagger) { if(!_.isObject(obj)) { return; } var name; swagger.definitions = swagger.definitions || {}; for(name in obj) { var existingModel = obj[name]; var _required = []; var schema = { properties: {}}; var propertyName; for(propertyName in existingModel.properties) { var existingProperty = existingModel.properties[propertyName]; var property = {}; this.dataType(existingProperty, property); if(existingProperty.description) { property.description = existingProperty.description; } if(existingProperty['enum']) { property['enum'] = existingProperty['enum']; } if(typeof existingProperty.required === 'boolean' && existingProperty.required === true) { _required.push(propertyName); } if(typeof existingProperty.required === 'string' && existingProperty.required === 'true') { _required.push(propertyName); } schema.properties[propertyName] = property; } if(_required.length > 0) { schema.required = _required; } else { schema.required = existingModel.required; } swagger.definitions[name] = schema; } }; SwaggerSpecConverter.prototype.extractTag = function(resourcePath) { var pathString = resourcePath || 'default'; if(pathString.indexOf('http:') === 0 || pathString.indexOf('https:') === 0) { pathString = pathString.split(['/']); pathString = pathString[pathString.length -1].substring(); } if(pathString.endsWith('.json')) { pathString = pathString.substring(0, pathString.length - '.json'.length); } return pathString.replace('/',''); }; SwaggerSpecConverter.prototype.operations = function(path, resourcePath, obj, resourceLevelAuth, swagger) { if(!Array.isArray(obj)) { return; } var i; if(!swagger.paths) { swagger.paths = {}; } var pathObj = swagger.paths[path] || {}; var tag = this.extractTag(resourcePath); swagger.tags = swagger.tags || []; var matched = false; for(i = 0; i < swagger.tags.length; i++) { var tagObject = swagger.tags[i]; if(tagObject.name === tag) { matched = true; } } if(!matched) { swagger.tags.push({name: tag}); } for(i = 0; i < obj.length; i++) { var existingOperation = obj[i]; var method = (existingOperation.method || existingOperation.httpMethod).toLowerCase(); var operation = {tags: [tag]}; var existingAuthorizations = existingOperation.authorizations; if(existingAuthorizations && Object.keys(existingAuthorizations).length === 0) { existingAuthorizations = resourceLevelAuth; } if(typeof existingAuthorizations !== 'undefined') { var scopesObject; for(var key in existingAuthorizations) { operation.security = operation.security || []; var scopes = existingAuthorizations[key]; if(scopes) { var securityScopes = []; for(var j in scopes) { securityScopes.push(scopes[j].scope); } scopesObject = {}; scopesObject[key] = securityScopes; operation.security.push(scopesObject); } else { scopesObject = {}; scopesObject[key] = []; operation.security.push(scopesObject); } } } if(existingOperation.consumes) { operation.consumes = existingOperation.consumes; } else if(swagger.consumes) { operation.consumes = swagger.consumes; } if(existingOperation.produces) { operation.produces = existingOperation.produces; } else if(swagger.produces) { operation.produces = swagger.produces; } if(existingOperation.summary) { operation.summary = existingOperation.summary; } if(existingOperation.notes) { operation.description = existingOperation.notes; } if(existingOperation.nickname) { operation.operationId = existingOperation.nickname; } if(existingOperation.deprecated) { operation.deprecated = existingOperation.deprecated; } this.authorizations(existingAuthorizations, swagger); this.parameters(operation, existingOperation.parameters, swagger); this.responseMessages(operation, existingOperation, swagger); pathObj[method] = operation; } swagger.paths[path] = pathObj; }; SwaggerSpecConverter.prototype.responseMessages = function(operation, existingOperation) { if(!_.isObject(existingOperation)) { return; } // build default response from the operation (1.x) var defaultResponse = {}; this.dataType(existingOperation, defaultResponse); // TODO: look into the real problem of rendering responses in swagger-ui // ....should reponseType have an implicit schema? if(!defaultResponse.schema && defaultResponse.type) { defaultResponse = {schema: defaultResponse}; } operation.responses = operation.responses || {}; // grab from responseMessages (1.2) var has200 = false; if(Array.isArray(existingOperation.responseMessages)) { var i; var existingResponses = existingOperation.responseMessages; for(i = 0; i < existingResponses.length; i++) { var existingResponse = existingResponses[i]; var response = { description: existingResponse.message }; if(existingResponse.code === 200) { has200 = true; } // Convert responseModel -> schema{$ref: responseModel} if(existingResponse.responseModel) { response.schema = {'$ref': '#/definitions/' + existingResponse.responseModel}; } operation.responses['' + existingResponse.code] = response; } } if(has200) { operation.responses['default'] = defaultResponse; } else { operation.responses['200'] = defaultResponse; } }; SwaggerSpecConverter.prototype.authorizations = function(obj) { // TODO if(!_.isObject(obj)) { return; } }; SwaggerSpecConverter.prototype.parameters = function(operation, obj) { if(!Array.isArray(obj)) { return; } var i; for(i = 0; i < obj.length; i++) { var existingParameter = obj[i]; var parameter = {}; parameter.name = existingParameter.name; parameter.description = existingParameter.description; parameter.required = existingParameter.required; parameter.in = existingParameter.paramType; // per #168 if(parameter.in === 'body') { parameter.name = 'body'; } if(parameter.in === 'form') { parameter.in = 'formData'; } if(existingParameter.enum) { parameter.enum = existingParameter.enum; } if(existingParameter.allowMultiple === true || existingParameter.allowMultiple === 'true') { var innerType = {}; this.dataType(existingParameter, innerType); parameter.type = 'array'; parameter.items = innerType; if(existingParameter.allowableValues) { var av = existingParameter.allowableValues; if(av.valueType === 'LIST') { parameter['enum'] = av.values; } } } else { this.dataType(existingParameter, parameter); } if(typeof existingParameter.defaultValue !== 'undefined') { parameter.default = existingParameter.defaultValue; } operation.parameters = operation.parameters || []; operation.parameters.push(parameter); } }; SwaggerSpecConverter.prototype.dataType = function(source, target) { if(!_.isObject(source)) { return; } if(source.minimum) { target.minimum = source.minimum; } if(source.maximum) { target.maximum = source.maximum; } if (source.format) { target.format = source.format; } // default can be 'false' if(typeof source.defaultValue !== 'undefined') { target.default = source.defaultValue; } var jsonSchemaType = this.toJsonSchema(source); if(jsonSchemaType) { target = target || {}; if(jsonSchemaType.type) { target.type = jsonSchemaType.type; } if(jsonSchemaType.format) { target.format = jsonSchemaType.format; } if(jsonSchemaType.$ref) { target.schema = {$ref: jsonSchemaType.$ref}; } if(jsonSchemaType.items) { target.items = jsonSchemaType.items; } } }; SwaggerSpecConverter.prototype.toJsonSchema = function(source) { if(!source) { return 'object'; } var detectedType = (source.type || source.dataType || source.responseClass || ''); var lcType = detectedType.toLowerCase(); var format = (source.format || '').toLowerCase(); if(lcType.indexOf('list[') === 0) { var innerType = detectedType.substring(5, detectedType.length - 1); var jsonType = this.toJsonSchema({type: innerType}); return {type: 'array', items: jsonType}; } else if(lcType === 'int' || (lcType === 'integer' && format === 'int32')) { {return {type: 'integer', format: 'int32'};} } else if(lcType === 'long' || (lcType === 'integer' && format === 'int64')) { {return {type: 'integer', format: 'int64'};} } else if(lcType === 'integer') { {return {type: 'integer', format: 'int64'};} } else if(lcType === 'float' || (lcType === 'number' && format === 'float')) { {return {type: 'number', format: 'float'};} } else if(lcType === 'double' || (lcType === 'number' && format === 'double')) { {return {type: 'number', format: 'double'};} } else if((lcType === 'string' && format === 'date-time') || (lcType === 'date')) { {return {type: 'string', format: 'date-time'};} } else if(lcType === 'string') { {return {type: 'string'};} } else if(lcType === 'file') { {return {type: 'file'};} } else if(lcType === 'boolean') { {return {type: 'boolean'};} } else if(lcType === 'boolean') { {return {type: 'boolean'};} } else if(lcType === 'array' || lcType === 'list') { if(source.items) { var it = this.toJsonSchema(source.items); return {type: 'array', items: it}; } else { return {type: 'array', items: {type: 'object'}}; } } else if(source.$ref) { return {$ref: this.modelMap[source.$ref] ? '#/definitions/' + this.modelMap[source.$ref] : source.$ref}; } else if(lcType === 'void' || lcType === '') { {return {};} } else if (this.modelMap[source.type]) { // If this a model using `type` instead of `$ref`, that's fine. return {$ref: '#/definitions/' + this.modelMap[source.type]}; } else { // Unknown model type or 'object', pass it along. return {type: source.type}; } }; SwaggerSpecConverter.prototype.resourceListing = function(obj, swagger, opts, callback) { var i; var processedCount = 0; // jshint ignore:line var self = this; // jshint ignore:line var expectedCount = obj.apis.length; var _swagger = swagger; // jshint ignore:line var _opts = {}; if(opts && opts.requestInterceptor){ _opts.requestInterceptor = opts.requestInterceptor; } if(opts && opts.responseInterceptor){ _opts.responseInterceptor = opts.responseInterceptor; } var swaggerRequestHeaders = 'application/json'; if(opts && opts.swaggerRequestHeaders) { swaggerRequestHeaders = opts.swaggerRequestHeaders; } if(expectedCount === 0) { this.finish(callback, swagger); } for(i = 0; i < expectedCount; i++) { var api = obj.apis[i]; var path = api.path; var absolutePath = this.getAbsolutePath(obj.swaggerVersion, this.docLocation, path); if(api.description) { swagger.tags = swagger.tags || []; swagger.tags.push({ name : this.extractTag(api.path), description : api.description || '' }); } var http = { url: absolutePath, headers: { accept: swaggerRequestHeaders }, on: {}, method: 'get', timeout: opts.timeout }; /* jshint ignore:start */ http.on.response = function(data) { processedCount += 1; var obj = data.obj; if(obj) { self.declaration(obj, _swagger); } if(processedCount === expectedCount) { self.finish(callback, _swagger); } }; http.on.error = function(data) { console.error(data); processedCount += 1; if(processedCount === expectedCount) { self.finish(callback, _swagger); } }; /* jshint ignore:end */ if(this.clientAuthorizations && typeof this.clientAuthorizations.apply === 'function') { this.clientAuthorizations.apply(http); } new SwaggerHttp().execute(http, _opts); } }; SwaggerSpecConverter.prototype.getAbsolutePath = function(version, docLocation, path) { if(version === '1.0') { if(docLocation.endsWith('.json')) { // get root path var pos = docLocation.lastIndexOf('/'); if(pos > 0) { docLocation = docLocation.substring(0, pos); } } } var location = docLocation; if(path.indexOf('http:') === 0 || path.indexOf('https:') === 0) { location = path; } else { if(docLocation.endsWith('/')) { location = docLocation.substring(0, docLocation.length - 1); } location += path; } location = location.replace('{format}', 'json'); return location; }; SwaggerSpecConverter.prototype.securityDefinitions = function(obj, swagger) { if(obj.authorizations) { var name; for(name in obj.authorizations) { var isValid = false; var securityDefinition = { vendorExtensions: {} }; var definition = obj.authorizations[name]; if(definition.type === 'apiKey') { securityDefinition.type = 'apiKey'; securityDefinition.in = definition.passAs; securityDefinition.name = definition.keyname || name; isValid = true; } else if(definition.type === 'basicAuth') { securityDefinition.type = 'basicAuth'; isValid = true; } else if(definition.type === 'oauth2') { var existingScopes = definition.scopes || []; var scopes = {}; var i; for(i in existingScopes) { var scope = existingScopes[i]; scopes[scope.scope] = scope.description; } securityDefinition.type = 'oauth2'; if(i > 0) { securityDefinition.scopes = scopes; } if(definition.grantTypes) { if(definition.grantTypes.implicit) { var implicit = definition.grantTypes.implicit; securityDefinition.flow = 'implicit'; securityDefinition.authorizationUrl = implicit.loginEndpoint; isValid = true; } /* jshint ignore:start */ if(definition.grantTypes['authorization_code']) { if(!securityDefinition.flow) { // cannot set if flow is already defined var authCode = definition.grantTypes['authorization_code']; securityDefinition.flow = 'accessCode'; securityDefinition.authorizationUrl = authCode.tokenRequestEndpoint.url; securityDefinition.tokenUrl = authCode.tokenEndpoint.url; isValid = true; } } /* jshint ignore:end */ } } if(isValid) { swagger.securityDefinitions = swagger.securityDefinitions || {}; swagger.securityDefinitions[name] = securityDefinition; } } } }; SwaggerSpecConverter.prototype.apiInfo = function(obj, swagger) { // info section if(obj.info) { var info = obj.info; swagger.info = {}; if(info.contact) { swagger.info.contact = {}; swagger.info.contact.email = info.contact; } if(info.description) { swagger.info.description = info.description; } if(info.title) { swagger.info.title = info.title; } if(info.termsOfServiceUrl) { swagger.info.termsOfService = info.termsOfServiceUrl; } if(info.license || info.licenseUrl) { swagger.license = {}; if(info.license) { swagger.license.name = info.license; } if(info.licenseUrl) { swagger.license.url = info.licenseUrl; } } } else { this.warnings.push('missing info section'); } }; SwaggerSpecConverter.prototype.finish = function (callback, obj) { callback(obj); }; },{"./http":5,"lodash-compat/lang/isObject":144}],9:[function(require,module,exports){ 'use strict'; var log = require('../helpers').log; var _ = { isPlainObject: require('lodash-compat/lang/isPlainObject'), isString: require('lodash-compat/lang/isString'), }; var SchemaMarkup = require('../schema-markup.js'); var jsyaml = require('js-yaml'); var Model = module.exports = function (name, definition, models, modelPropertyMacro) { this.definition = definition || {}; this.isArray = definition.type === 'array'; this.models = models || {}; this.name = name || definition.title || 'Inline Model'; this.modelPropertyMacro = modelPropertyMacro || function (property) { return property.default; }; return this; }; // Note! This function will be removed in 2.2.x! Model.prototype.createJSONSample = Model.prototype.getSampleValue = function (modelsToIgnore) { modelsToIgnore = modelsToIgnore || {}; modelsToIgnore[this.name] = this; // Response support if (this.examples && _.isPlainObject(this.examples) && this.examples['application/json']) { this.definition.example = this.examples['application/json']; if (_.isString(this.definition.example)) { this.definition.example = jsyaml.safeLoad(this.definition.example); } } else if (!this.definition.example) { this.definition.example = this.examples; } return SchemaMarkup.schemaToJSON(this.definition, this.models, modelsToIgnore, this.modelPropertyMacro); }; Model.prototype.getMockSignature = function () { return SchemaMarkup.schemaToHTML(this.name, this.definition, this.models, this.modelPropertyMacro); }; },{"../helpers":4,"../schema-markup.js":7,"js-yaml":19,"lodash-compat/lang/isPlainObject":145,"lodash-compat/lang/isString":146}],10:[function(require,module,exports){ 'use strict'; var _ = { cloneDeep: require('lodash-compat/lang/cloneDeep'), isUndefined: require('lodash-compat/lang/isUndefined'), isEmpty: require('lodash-compat/lang/isEmpty'), isObject: require('lodash-compat/lang/isObject') }; var helpers = require('../helpers'); var Model = require('./model'); var SwaggerHttp = require('../http'); var Q = require('q'); var Operation = module.exports = function (parent, scheme, operationId, httpMethod, path, args, definitions, models, clientAuthorizations) { var errors = []; parent = parent || {}; args = args || {}; if(parent && parent.options) { this.client = parent.options.client || null; this.requestInterceptor = parent.options.requestInterceptor || null; this.responseInterceptor = parent.options.responseInterceptor || null; this.requestAgent = parent.options.requestAgent; } this.authorizations = args.security; this.basePath = parent.basePath || '/'; this.clientAuthorizations = clientAuthorizations; this.consumes = args.consumes || parent.consumes || ['application/json']; this.produces = args.produces || parent.produces || ['application/json']; this.deprecated = args.deprecated; this.description = args.description; this.host = parent.host; this.method = (httpMethod || errors.push('Operation ' + operationId + ' is missing method.')); this.models = models || {}; this.nickname = (operationId || errors.push('Operations must have a nickname.')); this.operation = args; this.operations = {}; this.parameters = args !== null ? (args.parameters || []) : {}; this.parent = parent; this.path = (path || errors.push('Operation ' + this.nickname + ' is missing path.')); this.responses = (args.responses || {}); this.scheme = scheme || parent.scheme || 'http'; this.schemes = args.schemes || parent.schemes; this.security = args.security || parent.security; this.summary = args.summary || ''; this.timeout = parent.timeout; this.type = null; this.useJQuery = parent.useJQuery; this.jqueryAjaxCache = parent.jqueryAjaxCache; this.enableCookies = parent.enableCookies; var key; if(!this.host) { if(typeof window !== 'undefined') { this.host = window.location.host; } else { this.host = 'localhost'; } } this.parameterMacro = parent.parameterMacro || function (operation, parameter) { return parameter.default; }; this.inlineModels = []; if(this.basePath !== '/' && this.basePath.slice(-1) === '/') { this.basePath = this.basePath.slice(0, -1); } if (typeof this.deprecated === 'string') { switch(this.deprecated.toLowerCase()) { case 'true': case 'yes': case '1': { this.deprecated = true; break; } case 'false': case 'no': case '0': case null: { this.deprecated = false; break; } default: this.deprecated = Boolean(this.deprecated); } } var i, model; if (definitions) { // add to global models for (key in definitions) { model = new Model(key, definitions[key], this.models, parent.modelPropertyMacro); if (model) { this.models[key] = model; } } } else { definitions = {}; } for (i = 0; i < this.parameters.length; i++) { var d, param = this.parameters[i]; // Allow macro to set the default value param.default = this.parameterMacro(this, param); if (param.type === 'array') { param.isList = true; param.allowMultiple = true; } var innerType = this.getType(param); if (innerType && innerType.toString().toLowerCase() === 'boolean') { param.allowableValues = {}; param.isList = true; param['enum'] = [true, false]; // use actual primitives } for(key in param) { helpers.extractExtensions(key, param); } if(typeof param['x-example'] !== 'undefined') { d = param['x-example']; param.default = d; } if(param['x-examples']) { d = param['x-examples'].default; if(typeof d !== 'undefined') { param.default = d; } } var enumValues = param['enum'] || (param.items && param.items['enum']); if (typeof enumValues !== 'undefined') { var id; param.allowableValues = {}; param.allowableValues.values = []; param.allowableValues.descriptiveValues = []; for (id = 0; id < enumValues.length; id++) { var value = enumValues[id]; var isDefault = (value === param.default || value+'' === param.default); param.allowableValues.values.push(value); // Always have string for descriptive values.... param.allowableValues.descriptiveValues.push({value : value+'', isDefault: isDefault}); } } if (param.type === 'array') { innerType = [innerType]; if (typeof param.allowableValues === 'undefined') { // can't show as a list if no values to select from delete param.isList; delete param.allowMultiple; } } param.modelSignature = {type: innerType, definitions: this.models}; param.signature = this.getModelSignature(innerType, this.models).toString(); param.sampleJSON = this.getModelSampleJSON(innerType, this.models); param.responseClassSignature = param.signature; } var keyname, defaultResponseCode, response, responses = this.responses; if (responses['200']) { response = responses['200']; defaultResponseCode = '200'; } else if (responses['201']) { response = responses['201']; defaultResponseCode = '201'; } else if (responses['202']) { response = responses['202']; defaultResponseCode = '202'; } else if (responses['203']) { response = responses['203']; defaultResponseCode = '203'; } else if (responses['204']) { response = responses['204']; defaultResponseCode = '204'; } else if (responses['205']) { response = responses['205']; defaultResponseCode = '205'; } else if (responses['206']) { response = responses['206']; defaultResponseCode = '206'; } else if (responses['default']) { response = responses['default']; defaultResponseCode = 'default'; } for(keyname in responses) { helpers.extractExtensions(keyname, responses); if(typeof keyname === 'string' && keyname.indexOf('x-') === -1) { var responseObject = responses[keyname]; if(typeof responseObject === 'object' && typeof responseObject.headers === 'object') { var headers = responseObject.headers; for(var headerName in headers) { var header = headers[headerName]; if(typeof header === 'object') { for(var headerKey in header) { helpers.extractExtensions(headerKey, header); } } } } } } if (response) { for(keyname in response) { helpers.extractExtensions(keyname, response); } } if (response && response.schema) { var resolvedModel = this.resolveModel(response.schema, definitions); var successResponse; delete responses[defaultResponseCode]; if (resolvedModel) { this.successResponse = {}; successResponse = this.successResponse[defaultResponseCode] = resolvedModel; } else if (!response.schema.type || response.schema.type === 'object' || response.schema.type === 'array') { // Inline model this.successResponse = {}; successResponse = this.successResponse[defaultResponseCode] = new Model(undefined, response.schema || {}, this.models, parent.modelPropertyMacro); } else { // Primitive this.successResponse = {}; successResponse = this.successResponse[defaultResponseCode] = response.schema; } if (successResponse) { successResponse.vendorExtensions = response.vendorExtensions; // Attach response properties if (response.description) { successResponse.description = response.description; } if (response.examples) { successResponse.examples = response.examples; } if (response.headers) { successResponse.headers = response.headers; } } this.type = response; } if (errors.length > 0) { if (this.resource && this.resource.api && this.resource.api.fail) { this.resource.api.fail(errors); } } return this; }; Operation.prototype.isDefaultArrayItemValue = function(value, param) { if (param.default && Array.isArray(param.default)) { return param.default.indexOf(value) !== -1; } return value === param.default; }; Operation.prototype.getType = function (param) { var type = param.type; var format = param.format; var isArray = false; var str; if (type === 'integer' && format === 'int32') { str = 'integer'; } else if (type === 'integer' && format === 'int64') { str = 'long'; } else if (type === 'integer') { str = 'integer'; } else if (type === 'string') { if (format === 'date-time') { str = 'date-time'; } else if (format === 'date') { str = 'date'; } else { str = 'string'; } } else if (type === 'number' && format === 'float') { str = 'float'; } else if (type === 'number' && format === 'double') { str = 'double'; } else if (type === 'number') { str = 'double'; } else if (type === 'boolean') { str = 'boolean'; } else if (type === 'array') { isArray = true; if (param.items) { str = this.getType(param.items); } } else if (type === 'file') { str = 'file'; } if (param.$ref) { str = helpers.simpleRef(param.$ref); } var schema = param.schema; if (schema) { var ref = schema.$ref; if (ref) { ref = helpers.simpleRef(ref); if (isArray) { return [ ref ]; } else { return ref; } } else { // If inline schema, we add it our interal hash -> which gives us it's ID (int) if(schema.type === 'object') { return this.addInlineModel(schema); } return this.getType(schema); } } if (isArray) { return [ str ]; } else { return str; } }; /** * adds an inline schema (model) to a hash, where we can ref it later * @param {object} schema a schema * @return {number} the ID of the schema being added, or null **/ Operation.prototype.addInlineModel = function (schema) { var len = this.inlineModels.length; var model = this.resolveModel(schema, {}); if(model) { this.inlineModels.push(model); return 'Inline Model '+len; // return string ref of the inline model (used with #getInlineModel) } return null; // report errors? }; /** * gets the internal ref to an inline model * @param {string} inline_str a string reference to an inline model * @return {Model} the model being referenced. Or null **/ Operation.prototype.getInlineModel = function(inlineStr) { if(/^Inline Model \d+$/.test(inlineStr)) { var id = parseInt(inlineStr.substr('Inline Model'.length).trim(),10); // var model = this.inlineModels[id]; return model; } // I'm returning null here, should I rather throw an error? return null; }; Operation.prototype.resolveModel = function (schema, definitions) { if (typeof schema.$ref !== 'undefined') { var ref = schema.$ref; if (ref.indexOf('#/definitions/') === 0) { ref = ref.substring('#/definitions/'.length); } if (definitions[ref]) { return new Model(ref, definitions[ref], this.models, this.parent.modelPropertyMacro); } // schema must at least be an object to get resolved to an inline Model } else if (schema && typeof schema === 'object' && (schema.type === 'object' || _.isUndefined(schema.type))) { return new Model(undefined, schema, this.models, this.parent.modelPropertyMacro); } return null; }; Operation.prototype.help = function (dontPrint) { var out = this.nickname + ': ' + this.summary + '\n'; for (var i = 0; i < this.parameters.length; i++) { var param = this.parameters[i]; var typeInfo = param.signature; out += '\n * ' + param.name + ' (' + typeInfo + '): ' + param.description; } if (typeof dontPrint === 'undefined') { helpers.log(out); } return out; }; Operation.prototype.getModelSignature = function (type, definitions) { var isPrimitive, listType; if (type instanceof Array) { listType = true; type = type[0]; } // Convert undefined to string of 'undefined' if (typeof type === 'undefined') { type = 'undefined'; isPrimitive = true; } else if (definitions[type]){ // a model def exists? type = definitions[type]; /* Model */ isPrimitive = false; } else if (this.getInlineModel(type)) { type = this.getInlineModel(type); /* Model */ isPrimitive = false; } else { // We default to primitive isPrimitive = true; } if (isPrimitive) { if (listType) { return 'Array[' + type + ']'; } else { return type.toString(); } } else { if (listType) { return 'Array[' + type.getMockSignature() + ']'; } else { return type.getMockSignature(); } } }; Operation.prototype.supportHeaderParams = function () { return true; }; Operation.prototype.supportedSubmitMethods = function () { return this.parent.supportedSubmitMethods; }; Operation.prototype.getHeaderParams = function (args) { var headers = this.setContentTypes(args, {}); var headerParamsByLowerCase = {}; for (var i = 0; i < this.parameters.length; i++) { var param = this.parameters[i]; if (param.in === 'header') { headerParamsByLowerCase[param.name.toLowerCase()] = param; } } for (var arg in args) { var headerParam = headerParamsByLowerCase[arg.toLowerCase()]; if (typeof headerParam !== 'undefined') { var value = args[arg]; if (Array.isArray(value)) { value = value.toString(); } headers[headerParam.name] = value; } } return headers; }; Operation.prototype.urlify = function (args, maskPasswords) { var formParams = {}; var requestUrl = this.path.replace(/#.*/, ''); // remove URL fragment var querystring = ''; // grab params from the args, build the querystring along the way for (var i = 0; i < this.parameters.length; i++) { var param = this.parameters[i]; if (typeof args[param.name] !== 'undefined') { var isPassword; if(param.type === 'string' && param.format === 'password' && maskPasswords) { isPassword = true; } if (param.in === 'path') { var reg = new RegExp('\{' + param.name + '\}', 'gi'); var value = args[param.name]; if (Array.isArray(value)) { value = this.encodePathCollection(param.collectionFormat, param.name, value, isPassword); } else { if((typeof(param['x-escape']) === 'undefined') || (param['x-escape'] === true)) { value = this.encodePathParam(value, isPassword); } } requestUrl = requestUrl.replace(reg, value); } else if (param.in === 'query' && typeof args[param.name] !== 'undefined') { if (querystring === '' && requestUrl.indexOf('?') < 0) { querystring += '?'; } else { querystring += '&'; } if (typeof param.collectionFormat !== 'undefined') { var qp = args[param.name]; if (Array.isArray(qp)) { querystring += this.encodeQueryCollection(param.collectionFormat, param.name, qp, isPassword); } else { querystring += this.encodeQueryKey(param.name) + '=' + this.encodeQueryParam(args[param.name], isPassword); } } else { querystring += this.encodeQueryKey(param.name) + '=' + this.encodeQueryParam(args[param.name], isPassword); } } else if (param.in === 'formData') { formParams[param.name] = args[param.name]; } } else if(param.in === 'query' && typeof args[param.name] === 'undefined' && param.allowEmptyValue === true) { if (querystring === '' && requestUrl.indexOf('?') < 0) { querystring += '?'; } else { querystring += '&'; } if (typeof param.collectionFormat !== 'undefined' || param.type === 'array') { var qp; var collectionFormat = param.collectionFormat || 'multi'; if (Array.isArray(qp)) { querystring += this.encodeQueryCollection(collectionFormat, param.name, qp, isPassword); } else { querystring += this.encodeQueryCollection(collectionFormat, param.name, [qp], isPassword); } } else { querystring += this.encodeQueryKey(param.name) + '=' + this.encodeQueryParam('', isPassword); } } } var url = this.scheme + '://' + this.host; if (this.basePath !== '/') { url += this.basePath; } return url + requestUrl + querystring; }; Operation.prototype.getMissingParams = function (args) { var missingParams = []; // check required params, track the ones that are missing var i; for (i = 0; i < this.parameters.length; i++) { var param = this.parameters[i]; if (param.required === true) { if (typeof args[param.name] === 'undefined') { missingParams = param.name; } } } return missingParams; }; Operation.prototype.getBody = function (headers, args, opts) { var formParams = {}, hasFormParams, param, body, key, value, hasBody = false; // look at each param and put form params in an object for (var i = 0; i < this.parameters.length; i++) { param = this.parameters[i]; if (typeof args[param.name] !== 'undefined') { var isPassword; if(param.type === 'string' && param.format === 'password') { isPassword = 'password'; } if (param.in === 'body') { body = args[param.name]; } else if (param.in === 'formData') { formParams[param.name] = { param: param, value: args[param.name], password: isPassword }; hasFormParams = true; } } else { if(param.in === 'body') { hasBody = true; } } } // if body is null and hasBody is true, AND a JSON body is requested, send empty {} if(hasBody && typeof body === 'undefined') { var contentType = headers['Content-Type']; if(contentType && contentType.indexOf('application/json') === 0) { body = '{}'; } } var isMultiPart = false; if(headers['Content-Type'] && headers['Content-Type'].indexOf('multipart/form-data') >= 0) { isMultiPart = true; } // handle form params if (hasFormParams && !isMultiPart) { var encoded = ''; for (key in formParams) { param = formParams[key].param; value = formParams[key].value; var password; if(opts && opts.maskPasswords) { password = formParams[key].password; } if (typeof value !== 'undefined') { if (Array.isArray(value)) { if (encoded !== '') { encoded += '&'; } encoded += this.encodeQueryCollection(param.collectionFormat, key, value, password); } else { if (encoded !== '') { encoded += '&'; } encoded += encodeURIComponent(key) + '=' + mask(encodeURIComponent(value), password); } } } body = encoded; } else if (isMultiPart) { var bodyParam; if (typeof FormData === 'function') { bodyParam = new FormData(); bodyParam.type = 'formData'; for (key in formParams) { param = formParams[key].param; value = args[key]; if (typeof value !== 'undefined') { if({}.toString.apply(value) === '[object File]') { bodyParam.append(key, value); } else if (value.type === 'file' && value.value) { bodyParam.append(key, value.value); } else { if (Array.isArray(value)) { if(param.collectionFormat === 'multi') { bodyParam.delete(key); for(var v in value) { bodyParam.append(key, value[v]); } } else { bodyParam.append(key, this.encodeQueryCollection(param.collectionFormat, key, value).split('=').slice(1).join('=')); } } else { bodyParam.append(key, value); } } } } body = bodyParam; } else { bodyParam = {}; for (key in formParams) { value = args[key]; if (Array.isArray(value)) { var delimeter; var format = param.collectionFormat || 'multi'; if(format === 'ssv') { delimeter = ' '; } else if(format === 'pipes') { delimeter = '|'; } else if(format === 'tsv') { delimeter = '\t'; } else if(format === 'multi') { bodyParam[key] = value; break; } else { delimeter = ','; } var data; value.forEach(function(v) { if(data) { data += delimeter; } else { data = ''; } data += v; }); bodyParam[key] = data; } else { bodyParam[key] = value; } } body = bodyParam; } headers['Content-Type'] = 'multipart/form-data'; } return body; }; /** * gets sample response for a single operation **/ Operation.prototype.getModelSampleJSON = function (type, models) { var listType, sampleJson, innerType; models = models || {}; listType = (type instanceof Array); innerType = listType ? type[0] : type; if(models[innerType]) { sampleJson = models[innerType].createJSONSample(); } else if (this.getInlineModel(innerType)){ sampleJson = this.getInlineModel(innerType).createJSONSample(); // may return null, if type isn't correct } if (sampleJson) { sampleJson = listType ? [sampleJson] : sampleJson; if (typeof sampleJson === 'string') { return sampleJson; } else if (_.isObject(sampleJson)) { var t = sampleJson; if (sampleJson instanceof Array && sampleJson.length > 0) { t = sampleJson[0]; } if (t.nodeName && typeof t === 'Node') { var xmlString = new XMLSerializer().serializeToString(t); return this.formatXml(xmlString); } else { return JSON.stringify(sampleJson, null, 2); } } else { return sampleJson; } } }; /** * legacy binding **/ Operation.prototype.do = function (args, opts, callback, error, parent) { return this.execute(args, opts, callback, error, parent); }; /** * executes an operation **/ Operation.prototype.execute = function (arg1, arg2, arg3, arg4, parent) { var args = arg1 || {}; var opts = {}, success, error, deferred, timeout; if (_.isObject(arg2)) { opts = arg2; success = arg3; error = arg4; } timeout = typeof opts.timeout !== 'undefined' ? opts.timeout : this.timeout; if(this.client) { opts.client = this.client; } if(this.requestAgent) { opts.requestAgent = this.requestAgent; } // add the request interceptor from parent, if none sent from client if(!opts.requestInterceptor && this.requestInterceptor ) { opts.requestInterceptor = this.requestInterceptor ; } if(!opts.responseInterceptor && this.responseInterceptor) { opts.responseInterceptor = this.responseInterceptor; } if (typeof arg2 === 'function') { success = arg2; error = arg3; } if (this.parent.usePromise) { deferred = Q.defer(); } else { success = (success || this.parent.defaultSuccessCallback || helpers.log); error = (error || this.parent.defaultErrorCallback || helpers.log); } if (typeof opts.useJQuery === 'undefined') { opts.useJQuery = this.useJQuery; } if (typeof opts.jqueryAjaxCache === 'undefined') { opts.jqueryAjaxCache = this.jqueryAjaxCache; } if (typeof opts.enableCookies === 'undefined') { opts.enableCookies = this.enableCookies; } var missingParams = this.getMissingParams(args); if (missingParams.length > 0) { var message = 'missing required params: ' + missingParams; helpers.fail(message); if (this.parent.usePromise) { deferred.reject(message); return deferred.promise; } else { error(message, parent); return {}; } } var allHeaders = this.getHeaderParams(args); var contentTypeHeaders = this.setContentTypes(args, opts); var headers = {}, attrname; for (attrname in allHeaders) { headers[attrname] = allHeaders[attrname]; } for (attrname in contentTypeHeaders) { headers[attrname] = contentTypeHeaders[attrname]; } var body = this.getBody(contentTypeHeaders, args, opts); var url = this.urlify(args, opts.maskPasswords); if(url.indexOf('.{format}') > 0) { if(headers) { var format = headers.Accept || headers.accept; if(format && format.indexOf('json') > 0) { url = url.replace('.{format}', '.json'); } else if(format && format.indexOf('xml') > 0) { url = url.replace('.{format}', '.xml'); } } } var obj = { url: url, method: this.method.toUpperCase(), body: body, enableCookies: opts.enableCookies, useJQuery: opts.useJQuery, jqueryAjaxCache: opts.jqueryAjaxCache, deferred: deferred, headers: headers, clientAuthorizations: opts.clientAuthorizations, operation: this, connectionAgent: this.connectionAgent, on: { response: function (response) { if (deferred) { deferred.resolve(response); return deferred.promise; } else { return success(response, parent); } }, error: function (response) { if (deferred) { deferred.reject(response); return deferred.promise; } else { return error(response, parent); } } } }; if (timeout) { obj.timeout = timeout; } this.clientAuthorizations.apply(obj, this.operation.security); if (opts.mock === true) { if(opts.requestInterceptor) { opts.requestInterceptor.apply(obj); } return obj; } else { return new SwaggerHttp().execute(obj, opts); } }; function itemByPriority(col, itemPriority) { // No priorities? return first... if(_.isEmpty(itemPriority)) { return col[0]; } for (var i = 0, len = itemPriority.length; i < len; i++) { if(col.indexOf(itemPriority[i]) > -1) { return itemPriority[i]; } } // Otherwise return first return col[0]; } Operation.prototype.setContentTypes = function (args, opts) { // default type var allDefinedParams = this.parameters; var body; var consumes = args.parameterContentType || itemByPriority(this.consumes, ['application/json', 'application/yaml']); var accepts = opts.responseContentType || itemByPriority(this.produces, ['application/json', 'application/yaml']); var definedFileParams = []; var definedFormParams = []; var headers = {}; var i; // get params from the operation and set them in definedFileParams, definedFormParams, headers for (i = 0; i < allDefinedParams.length; i++) { var param = allDefinedParams[i]; if (param.in === 'formData') { if (param.type === 'file') { definedFileParams.push(param); } else { definedFormParams.push(param); } } else if (param.in === 'header' && opts) { var key = param.name; var headerValue = opts[param.name]; if (typeof opts[param.name] !== 'undefined') { headers[key] = headerValue; } } else if (param.in === 'body' && typeof args[param.name] !== 'undefined') { body = args[param.name]; } } // if there's a body, need to set the consumes header via requestContentType var hasBody = body || definedFileParams.length || definedFormParams.length; if (this.method === 'post' || this.method === 'put' || this.method === 'patch' || ((this.method === 'delete' || this.method === 'get') && hasBody)) { if (opts.requestContentType) { consumes = opts.requestContentType; } // if any form params, content type must be set if (definedFormParams.length > 0) { consumes = undefined; if (opts.requestContentType) { // override if set consumes = opts.requestContentType; } else if (definedFileParams.length > 0) { // if a file, must be multipart/form-data consumes = 'multipart/form-data'; } else { if (this.consumes && this.consumes.length > 0) { // use the consumes setting for(var c in this.consumes) { var chk = this.consumes[c]; if(chk.indexOf('application/x-www-form-urlencoded') === 0 || chk.indexOf('multipart/form-data') === 0) { consumes = chk; } } } } if(typeof consumes === 'undefined') { // default to x-www-from-urlencoded consumes = 'application/x-www-form-urlencoded'; } } } else { consumes = null; } if (consumes && this.consumes) { if (this.consumes.indexOf(consumes) === -1) { helpers.log('server doesn\'t consume ' + consumes + ', try ' + JSON.stringify(this.consumes)); } } if (!this.matchesAccept(accepts)) { helpers.log('server can\'t produce ' + accepts); } if ((consumes && body !== '') || (consumes === 'application/x-www-form-urlencoded')) { headers['Content-Type'] = consumes; } else if(this.consumes && this.consumes.length > 0 && this.consumes[0] === 'application/x-www-form-urlencoded') { headers['Content-Type'] = this.consumes[0]; } if (accepts) { headers.Accept = accepts; } return headers; }; /** * Returns true if the request accepts header matches anything in this.produces. * If this.produces contains * / *, ignore the accept header. * @param {string=} accepts The client request accept header. * @return {boolean} */ Operation.prototype.matchesAccept = function(accepts) { // no accepts or produces, no problem! if (!accepts || !this.produces) { return true; } return this.produces.indexOf(accepts) !== -1 || this.produces.indexOf('*/*') !== -1; }; Operation.prototype.asCurl = function (args1, args2) { var opts = {mock: true, maskPasswords: true}; if (typeof args2 === 'object') { for (var argKey in args2) { opts[argKey] = args2[argKey]; } } var obj = this.execute(args1, opts); this.clientAuthorizations.apply(obj, this.operation.security); var results = []; results.push('-X ' + this.method.toUpperCase()); if (typeof obj.headers !== 'undefined') { var key; for (key in obj.headers) { var value = obj.headers[key]; if(typeof value === 'string'){ value = value.replace(/\'/g, '\\u0027'); } results.push('--header \'' + key + ': ' + value + '\''); } } var isFormData = false; var isMultipart = false; var type = obj.headers['Content-Type']; if(type && type.indexOf('application/x-www-form-urlencoded') === 0) { isFormData = true; } else if (type && type.indexOf('multipart/form-data') === 0) { isFormData = true; isMultipart = true; } if (obj.body) { var body; if (_.isObject(obj.body)) { if(isMultipart) { isMultipart = true; // add the form data for(var i = 0; i < this.parameters.length; i++) { var parameter = this.parameters[i]; if(parameter.in === 'formData') { if (!body) { body = ''; } var paramValue; if(typeof FormData === 'function' && obj.body instanceof FormData) { paramValue = obj.body.getAll(parameter.name); } else { paramValue = obj.body[parameter.name]; } if (paramValue) { if (parameter.type === 'file') { if(paramValue.name) { body += '-F ' + parameter.name + '=@"' + paramValue.name + '" '; } } else { if (Array.isArray(paramValue)) { if(parameter.collectionFormat === 'multi') { for(var v in paramValue) { body += '-F ' + this.encodeQueryKey(parameter.name) + '=' + mask(paramValue[v], parameter.format) + ' '; } } else { body += '-F ' + this.encodeQueryCollection(parameter.collectionFormat, parameter.name, mask(paramValue, parameter.format)) + ' '; } } else { body += '-F ' + this.encodeQueryKey(parameter.name) + '=' + mask(paramValue, parameter.format) + ' '; } } } } } } if(!body) { body = JSON.stringify(obj.body); } } else { body = obj.body; } // escape @ => %40, ' => %27 body = body.replace(/\'/g, '%27').replace(/\n/g, ' \\ \n '); if(!isFormData) { // escape & => %26 body = body.replace(/&/g, '%26'); } if(isMultipart) { results.push(body); } else { results.push('-d \'' + body.replace(/@/g, '%40') + '\''); } } return 'curl ' + (results.join(' ')) + ' \'' + obj.url + '\''; }; Operation.prototype.encodePathCollection = function (type, name, value, maskPasswords) { var encoded = ''; var i; var separator = ''; if (type === 'ssv') { separator = '%20'; } else if (type === 'tsv') { separator = '%09'; } else if (type === 'pipes') { separator = '|'; } else { separator = ','; } for (i = 0; i < value.length; i++) { if (i === 0) { encoded = this.encodeQueryParam(value[i], maskPasswords); } else { encoded += separator + this.encodeQueryParam(value[i], maskPasswords); } } return encoded; }; Operation.prototype.encodeQueryCollection = function (type, name, value, maskPasswords) { var encoded = ''; var i; type = type || 'default'; if (type === 'default' || type === 'multi') { for (i = 0; i < value.length; i++) { if (i > 0) {encoded += '&';} encoded += this.encodeQueryKey(name) + '=' + mask(this.encodeQueryParam(value[i]), maskPasswords); } } else { var separator = ''; if (type === 'csv') { separator = ','; } else if (type === 'ssv') { separator = '%20'; } else if (type === 'tsv') { separator = '%09'; } else if (type === 'pipes') { separator = '|'; } else if (type === 'brackets') { for (i = 0; i < value.length; i++) { if (i !== 0) { encoded += '&'; } encoded += this.encodeQueryKey(name) + '[]=' + mask(this.encodeQueryParam(value[i]), maskPasswords); } } if (separator !== '') { for (i = 0; i < value.length; i++) { if (i === 0) { encoded = this.encodeQueryKey(name) + '=' + this.encodeQueryParam(value[i]); } else { encoded += separator + this.encodeQueryParam(value[i]); } } } } return encoded; }; Operation.prototype.encodeQueryKey = function (arg) { return encodeURIComponent(arg) .replace('%5B','[').replace('%5D', ']').replace('%24', '$'); }; Operation.prototype.encodeQueryParam = function (arg, maskPasswords) { if(maskPasswords) { return "******"; } if(arg !== undefined && arg !== null) { return encodeURIComponent(arg); } else { return ''; } }; /** * TODO revisit, might not want to leave '/' **/ Operation.prototype.encodePathParam = function (pathParam, maskPasswords) { return encodeURIComponent(pathParam, maskPasswords); }; var mask = function(value, format) { if(typeof format === 'string' && format === 'password') { return '******'; } return value; } },{"../helpers":4,"../http":5,"./model":9,"lodash-compat/lang/cloneDeep":138,"lodash-compat/lang/isEmpty":141,"lodash-compat/lang/isObject":144,"lodash-compat/lang/isUndefined":148,"q":157}],11:[function(require,module,exports){ 'use strict'; var OperationGroup = module.exports = function (tag, description, externalDocs, operation) { this.description = description; this.externalDocs = externalDocs; this.name = tag; this.operation = operation; this.operationsArray = []; this.path = tag; this.tag = tag; }; OperationGroup.prototype.sort = function () { }; },{}],12:[function(require,module,exports){ // shim for using process in browser var process = module.exports = {}; var queue = []; var draining = false; function drainQueue() { if (draining) { return; } draining = true; var currentQueue; var len = queue.length; while(len) { currentQueue = queue; queue = []; var i = -1; while (++i < len) { currentQueue[i](); } len = queue.length; } draining = false; } process.nextTick = function (fun) { queue.push(fun); if (!draining) { setTimeout(drainQueue, 0); } }; process.title = 'browser'; process.browser = true; process.env = {}; process.argv = []; process.version = ''; // empty string to avoid regexp issues process.versions = {}; function noop() {} process.on = noop; process.addListener = noop; process.once = noop; process.off = noop; process.removeListener = noop; process.removeAllListeners = noop; process.emit = noop; process.binding = function (name) { throw new Error('process.binding is not supported'); }; // TODO(shtylman) process.cwd = function () { return '/' }; process.chdir = function (dir) { throw new Error('process.chdir is not supported'); }; process.umask = function() { return 0; }; },{}],13:[function(require,module,exports){ (function (Buffer){ (function () { "use strict"; function btoa(str) { var buffer ; if (str instanceof Buffer) { buffer = str; } else { buffer = new Buffer(str.toString(), 'binary'); } return buffer.toString('base64'); } module.exports = btoa; }()); }).call(this,require("buffer").Buffer) },{"buffer":14}],14:[function(require,module,exports){ /*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ var base64 = require('base64-js') var ieee754 = require('ieee754') var isArray = require('is-array') exports.Buffer = Buffer exports.SlowBuffer = SlowBuffer exports.INSPECT_MAX_BYTES = 50 Buffer.poolSize = 8192 // not used by this implementation var rootParent = {} /** * If `Buffer.TYPED_ARRAY_SUPPORT`: * === true Use Uint8Array implementation (fastest) * === false Use Object implementation (most compatible, even IE6) * * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, * Opera 11.6+, iOS 4.2+. * * Due to various browser bugs, sometimes the Object implementation will be used even * when the browser supports typed arrays. * * Note: * * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. * * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property * on objects. * * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. * * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of * incorrect length in some situations. * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they * get the Object implementation, which is slower but behaves correctly. */ Buffer.TYPED_ARRAY_SUPPORT = (function () { function Bar () {} try { var arr = new Uint8Array(1) arr.foo = function () { return 42 } arr.constructor = Bar return arr.foo() === 42 && // typed array instances can be augmented arr.constructor === Bar && // constructor can be set typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` } catch (e) { return false } })() function kMaxLength () { return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff } /** * Class: Buffer * ============= * * The Buffer constructor returns instances of `Uint8Array` that are augmented * with function properties for all the node `Buffer` API functions. We use * `Uint8Array` so that square bracket notation works as expected -- it returns * a single octet. * * By augmenting the instances, we can avoid modifying the `Uint8Array` * prototype. */ function Buffer (arg) { if (!(this instanceof Buffer)) { // Avoid going through an ArgumentsAdaptorTrampoline in the common case. if (arguments.length > 1) return new Buffer(arg, arguments[1]) return new Buffer(arg) } this.length = 0 this.parent = undefined // Common case. if (typeof arg === 'number') { return fromNumber(this, arg) } // Slightly less common case. if (typeof arg === 'string') { return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8') } // Unusual. return fromObject(this, arg) } function fromNumber (that, length) { that = allocate(that, length < 0 ? 0 : checked(length) | 0) if (!Buffer.TYPED_ARRAY_SUPPORT) { for (var i = 0; i < length; i++) { that[i] = 0 } } return that } function fromString (that, string, encoding) { if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8' // Assumption: byteLength() return value is always < kMaxLength. var length = byteLength(string, encoding) | 0 that = allocate(that, length) that.write(string, encoding) return that } function fromObject (that, object) { if (Buffer.isBuffer(object)) return fromBuffer(that, object) if (isArray(object)) return fromArray(that, object) if (object == null) { throw new TypeError('must start with number, buffer, array or string') } if (typeof ArrayBuffer !== 'undefined') { if (object.buffer instanceof ArrayBuffer) { return fromTypedArray(that, object) } if (object instanceof ArrayBuffer) { return fromArrayBuffer(that, object) } } if (object.length) return fromArrayLike(that, object) return fromJsonObject(that, object) } function fromBuffer (that, buffer) { var length = checked(buffer.length) | 0 that = allocate(that, length) buffer.copy(that, 0, 0, length) return that } function fromArray (that, array) { var length = checked(array.length) | 0 that = allocate(that, length) for (var i = 0; i < length; i += 1) { that[i] = array[i] & 255 } return that } // Duplicate of fromArray() to keep fromArray() monomorphic. function fromTypedArray (that, array) { var length = checked(array.length) | 0 that = allocate(that, length) // Truncating the elements is probably not what people expect from typed // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior // of the old Buffer constructor. for (var i = 0; i < length; i += 1) { that[i] = array[i] & 255 } return that } function fromArrayBuffer (that, array) { if (Buffer.TYPED_ARRAY_SUPPORT) { // Return an augmented `Uint8Array` instance, for best performance array.byteLength that = Buffer._augment(new Uint8Array(array)) } else { // Fallback: Return an object instance of the Buffer class that = fromTypedArray(that, new Uint8Array(array)) } return that } function fromArrayLike (that, array) { var length = checked(array.length) | 0 that = allocate(that, length) for (var i = 0; i < length; i += 1) { that[i] = array[i] & 255 } return that } // Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object. // Returns a zero-length buffer for inputs that don't conform to the spec. function fromJsonObject (that, object) { var array var length = 0 if (object.type === 'Buffer' && isArray(object.data)) { array = object.data length = checked(array.length) | 0 } that = allocate(that, length) for (var i = 0; i < length; i += 1) { that[i] = array[i] & 255 } return that } function allocate (that, length) { if (Buffer.TYPED_ARRAY_SUPPORT) { // Return an augmented `Uint8Array` instance, for best performance that = Buffer._augment(new Uint8Array(length)) } else { // Fallback: Return an object instance of the Buffer class that.length = length that._isBuffer = true } var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1 if (fromPool) that.parent = rootParent return that } function checked (length) { // Note: cannot use `length < kMaxLength` here because that fails when // length is NaN (which is otherwise coerced to zero.) if (length >= kMaxLength()) { throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes') } return length | 0 } function SlowBuffer (subject, encoding) { if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding) var buf = new Buffer(subject, encoding) delete buf.parent return buf } Buffer.isBuffer = function isBuffer (b) { return !!(b != null && b._isBuffer) } Buffer.compare = function compare (a, b) { if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { throw new TypeError('Arguments must be Buffers') } if (a === b) return 0 var x = a.length var y = b.length var i = 0 var len = Math.min(x, y) while (i < len) { if (a[i] !== b[i]) break ++i } if (i !== len) { x = a[i] y = b[i] } if (x < y) return -1 if (y < x) return 1 return 0 } Buffer.isEncoding = function isEncoding (encoding) { switch (String(encoding).toLowerCase()) { case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'raw': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return true default: return false } } Buffer.concat = function concat (list, length) { if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.') if (list.length === 0) { return new Buffer(0) } var i if (length === undefined) { length = 0 for (i = 0; i < list.length; i++) { length += list[i].length } } var buf = new Buffer(length) var pos = 0 for (i = 0; i < list.length; i++) { var item = list[i] item.copy(buf, pos) pos += item.length } return buf } function byteLength (string, encoding) { if (typeof string !== 'string') string = '' + string var len = string.length if (len === 0) return 0 // Use a for loop to avoid recursion var loweredCase = false for (;;) { switch (encoding) { case 'ascii': case 'binary': // Deprecated case 'raw': case 'raws': return len case 'utf8': case 'utf-8': return utf8ToBytes(string).length case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return len * 2 case 'hex': return len >>> 1 case 'base64': return base64ToBytes(string).length default: if (loweredCase) return utf8ToBytes(string).length // assume utf8 encoding = ('' + encoding).toLowerCase() loweredCase = true } } } Buffer.byteLength = byteLength // pre-set for values that may exist in the future Buffer.prototype.length = undefined Buffer.prototype.parent = undefined function slowToString (encoding, start, end) { var loweredCase = false start = start | 0 end = end === undefined || end === Infinity ? this.length : end | 0 if (!encoding) encoding = 'utf8' if (start < 0) start = 0 if (end > this.length) end = this.length if (end <= start) return '' while (true) { switch (encoding) { case 'hex': return hexSlice(this, start, end) case 'utf8': case 'utf-8': return utf8Slice(this, start, end) case 'ascii': return asciiSlice(this, start, end) case 'binary': return binarySlice(this, start, end) case 'base64': return base64Slice(this, start, end) case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return utf16leSlice(this, start, end) default: if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) encoding = (encoding + '').toLowerCase() loweredCase = true } } } Buffer.prototype.toString = function toString () { var length = this.length | 0 if (length === 0) return '' if (arguments.length === 0) return utf8Slice(this, 0, length) return slowToString.apply(this, arguments) } Buffer.prototype.equals = function equals (b) { if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') if (this === b) return true return Buffer.compare(this, b) === 0 } Buffer.prototype.inspect = function inspect () { var str = '' var max = exports.INSPECT_MAX_BYTES if (this.length > 0) { str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') if (this.length > max) str += ' ... ' } return '' } Buffer.prototype.compare = function compare (b) { if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') if (this === b) return 0 return Buffer.compare(this, b) } Buffer.prototype.indexOf = function indexOf (val, byteOffset) { if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff else if (byteOffset < -0x80000000) byteOffset = -0x80000000 byteOffset >>= 0 if (this.length === 0) return -1 if (byteOffset >= this.length) return -1 // Negative offsets start from the end of the buffer if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0) if (typeof val === 'string') { if (val.length === 0) return -1 // special case: looking for empty string always fails return String.prototype.indexOf.call(this, val, byteOffset) } if (Buffer.isBuffer(val)) { return arrayIndexOf(this, val, byteOffset) } if (typeof val === 'number') { if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') { return Uint8Array.prototype.indexOf.call(this, val, byteOffset) } return arrayIndexOf(this, [ val ], byteOffset) } function arrayIndexOf (arr, val, byteOffset) { var foundIndex = -1 for (var i = 0; byteOffset + i < arr.length; i++) { if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) { if (foundIndex === -1) foundIndex = i if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex } else { foundIndex = -1 } } return -1 } throw new TypeError('val must be string, number or Buffer') } // `get` is deprecated Buffer.prototype.get = function get (offset) { console.log('.get() is deprecated. Access using array indexes instead.') return this.readUInt8(offset) } // `set` is deprecated Buffer.prototype.set = function set (v, offset) { console.log('.set() is deprecated. Access using array indexes instead.') return this.writeUInt8(v, offset) } function hexWrite (buf, string, offset, length) { offset = Number(offset) || 0 var remaining = buf.length - offset if (!length) { length = remaining } else { length = Number(length) if (length > remaining) { length = remaining } } // must be an even number of digits var strLen = string.length if (strLen % 2 !== 0) throw new Error('Invalid hex string') if (length > strLen / 2) { length = strLen / 2 } for (var i = 0; i < length; i++) { var parsed = parseInt(string.substr(i * 2, 2), 16) if (isNaN(parsed)) throw new Error('Invalid hex string') buf[offset + i] = parsed } return i } function utf8Write (buf, string, offset, length) { return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) } function asciiWrite (buf, string, offset, length) { return blitBuffer(asciiToBytes(string), buf, offset, length) } function binaryWrite (buf, string, offset, length) { return asciiWrite(buf, string, offset, length) } function base64Write (buf, string, offset, length) { return blitBuffer(base64ToBytes(string), buf, offset, length) } function ucs2Write (buf, string, offset, length) { return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) } Buffer.prototype.write = function write (string, offset, length, encoding) { // Buffer#write(string) if (offset === undefined) { encoding = 'utf8' length = this.length offset = 0 // Buffer#write(string, encoding) } else if (length === undefined && typeof offset === 'string') { encoding = offset length = this.length offset = 0 // Buffer#write(string, offset[, length][, encoding]) } else if (isFinite(offset)) { offset = offset | 0 if (isFinite(length)) { length = length | 0 if (encoding === undefined) encoding = 'utf8' } else { encoding = length length = undefined } // legacy write(string, encoding, offset, length) - remove in v0.13 } else { var swap = encoding encoding = offset offset = length | 0 length = swap } var remaining = this.length - offset if (length === undefined || length > remaining) length = remaining if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { throw new RangeError('attempt to write outside buffer bounds') } if (!encoding) encoding = 'utf8' var loweredCase = false for (;;) { switch (encoding) { case 'hex': return hexWrite(this, string, offset, length) case 'utf8': case 'utf-8': return utf8Write(this, string, offset, length) case 'ascii': return asciiWrite(this, string, offset, length) case 'binary': return binaryWrite(this, string, offset, length) case 'base64': // Warning: maxLength not taken into account in base64Write return base64Write(this, string, offset, length) case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return ucs2Write(this, string, offset, length) default: if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) encoding = ('' + encoding).toLowerCase() loweredCase = true } } } Buffer.prototype.toJSON = function toJSON () { return { type: 'Buffer', data: Array.prototype.slice.call(this._arr || this, 0) } } function base64Slice (buf, start, end) { if (start === 0 && end === buf.length) { return base64.fromByteArray(buf) } else { return base64.fromByteArray(buf.slice(start, end)) } } function utf8Slice (buf, start, end) { end = Math.min(buf.length, end) var res = [] var i = start while (i < end) { var firstByte = buf[i] var codePoint = null var bytesPerSequence = (firstByte > 0xEF) ? 4 : (firstByte > 0xDF) ? 3 : (firstByte > 0xBF) ? 2 : 1 if (i + bytesPerSequence <= end) { var secondByte, thirdByte, fourthByte, tempCodePoint switch (bytesPerSequence) { case 1: if (firstByte < 0x80) { codePoint = firstByte } break case 2: secondByte = buf[i + 1] if ((secondByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) if (tempCodePoint > 0x7F) { codePoint = tempCodePoint } } break case 3: secondByte = buf[i + 1] thirdByte = buf[i + 2] if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { codePoint = tempCodePoint } } break case 4: secondByte = buf[i + 1] thirdByte = buf[i + 2] fourthByte = buf[i + 3] if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { codePoint = tempCodePoint } } } } if (codePoint === null) { // we did not generate a valid codePoint so insert a // replacement char (U+FFFD) and advance only 1 byte codePoint = 0xFFFD bytesPerSequence = 1 } else if (codePoint > 0xFFFF) { // encode to utf16 (surrogate pair dance) codePoint -= 0x10000 res.push(codePoint >>> 10 & 0x3FF | 0xD800) codePoint = 0xDC00 | codePoint & 0x3FF } res.push(codePoint) i += bytesPerSequence } return decodeCodePointsArray(res) } // Based on http://stackoverflow.com/a/22747272/680742, the browser with // the lowest limit is Chrome, with 0x10000 args. // We go 1 magnitude less, for safety var MAX_ARGUMENTS_LENGTH = 0x1000 function decodeCodePointsArray (codePoints) { var len = codePoints.length if (len <= MAX_ARGUMENTS_LENGTH) { return String.fromCharCode.apply(String, codePoints) // avoid extra slice() } // Decode in chunks to avoid "call stack size exceeded". var res = '' var i = 0 while (i < len) { res += String.fromCharCode.apply( String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) ) } return res } function asciiSlice (buf, start, end) { var ret = '' end = Math.min(buf.length, end) for (var i = start; i < end; i++) { ret += String.fromCharCode(buf[i] & 0x7F) } return ret } function binarySlice (buf, start, end) { var ret = '' end = Math.min(buf.length, end) for (var i = start; i < end; i++) { ret += String.fromCharCode(buf[i]) } return ret } function hexSlice (buf, start, end) { var len = buf.length if (!start || start < 0) start = 0 if (!end || end < 0 || end > len) end = len var out = '' for (var i = start; i < end; i++) { out += toHex(buf[i]) } return out } function utf16leSlice (buf, start, end) { var bytes = buf.slice(start, end) var res = '' for (var i = 0; i < bytes.length; i += 2) { res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) } return res } Buffer.prototype.slice = function slice (start, end) { var len = this.length start = ~~start end = end === undefined ? len : ~~end if (start < 0) { start += len if (start < 0) start = 0 } else if (start > len) { start = len } if (end < 0) { end += len if (end < 0) end = 0 } else if (end > len) { end = len } if (end < start) end = start var newBuf if (Buffer.TYPED_ARRAY_SUPPORT) { newBuf = Buffer._augment(this.subarray(start, end)) } else { var sliceLen = end - start newBuf = new Buffer(sliceLen, undefined) for (var i = 0; i < sliceLen; i++) { newBuf[i] = this[i + start] } } if (newBuf.length) newBuf.parent = this.parent || this return newBuf } /* * Need to make sure that buffer isn't trying to write out of bounds. */ function checkOffset (offset, ext, length) { if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') } Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var val = this[offset] var mul = 1 var i = 0 while (++i < byteLength && (mul *= 0x100)) { val += this[offset + i] * mul } return val } Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) { checkOffset(offset, byteLength, this.length) } var val = this[offset + --byteLength] var mul = 1 while (byteLength > 0 && (mul *= 0x100)) { val += this[offset + --byteLength] * mul } return val } Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { if (!noAssert) checkOffset(offset, 1, this.length) return this[offset] } Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) return this[offset] | (this[offset + 1] << 8) } Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) return (this[offset] << 8) | this[offset + 1] } Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ((this[offset]) | (this[offset + 1] << 8) | (this[offset + 2] << 16)) + (this[offset + 3] * 0x1000000) } Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset] * 0x1000000) + ((this[offset + 1] << 16) | (this[offset + 2] << 8) | this[offset + 3]) } Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var val = this[offset] var mul = 1 var i = 0 while (++i < byteLength && (mul *= 0x100)) { val += this[offset + i] * mul } mul *= 0x80 if (val >= mul) val -= Math.pow(2, 8 * byteLength) return val } Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var i = byteLength var mul = 1 var val = this[offset + --i] while (i > 0 && (mul *= 0x100)) { val += this[offset + --i] * mul } mul *= 0x80 if (val >= mul) val -= Math.pow(2, 8 * byteLength) return val } Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { if (!noAssert) checkOffset(offset, 1, this.length) if (!(this[offset] & 0x80)) return (this[offset]) return ((0xff - this[offset] + 1) * -1) } Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) var val = this[offset] | (this[offset + 1] << 8) return (val & 0x8000) ? val | 0xFFFF0000 : val } Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) var val = this[offset + 1] | (this[offset] << 8) return (val & 0x8000) ? val | 0xFFFF0000 : val } Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset]) | (this[offset + 1] << 8) | (this[offset + 2] << 16) | (this[offset + 3] << 24) } Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset] << 24) | (this[offset + 1] << 16) | (this[offset + 2] << 8) | (this[offset + 3]) } Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ieee754.read(this, offset, true, 23, 4) } Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ieee754.read(this, offset, false, 23, 4) } Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { if (!noAssert) checkOffset(offset, 8, this.length) return ieee754.read(this, offset, true, 52, 8) } Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { if (!noAssert) checkOffset(offset, 8, this.length) return ieee754.read(this, offset, false, 52, 8) } function checkInt (buf, value, offset, ext, max, min) { if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance') if (value > max || value < min) throw new RangeError('value is out of bounds') if (offset + ext > buf.length) throw new RangeError('index out of range') } Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) var mul = 1 var i = 0 this[offset] = value & 0xFF while (++i < byteLength && (mul *= 0x100)) { this[offset + i] = (value / mul) & 0xFF } return offset + byteLength } Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 byteLength = byteLength | 0 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) var i = byteLength - 1 var mul = 1 this[offset + i] = value & 0xFF while (--i >= 0 && (mul *= 0x100)) { this[offset + i] = (value / mul) & 0xFF } return offset + byteLength } Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) this[offset] = value return offset + 1 } function objectWriteUInt16 (buf, value, offset, littleEndian) { if (value < 0) value = 0xffff + value + 1 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) { buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> (littleEndian ? i : 1 - i) * 8 } } Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = value this[offset + 1] = (value >>> 8) } else { objectWriteUInt16(this, value, offset, true) } return offset + 2 } Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 8) this[offset + 1] = value } else { objectWriteUInt16(this, value, offset, false) } return offset + 2 } function objectWriteUInt32 (buf, value, offset, littleEndian) { if (value < 0) value = 0xffffffff + value + 1 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) { buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff } } Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset + 3] = (value >>> 24) this[offset + 2] = (value >>> 16) this[offset + 1] = (value >>> 8) this[offset] = value } else { objectWriteUInt32(this, value, offset, true) } return offset + 4 } Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 24) this[offset + 1] = (value >>> 16) this[offset + 2] = (value >>> 8) this[offset + 3] = value } else { objectWriteUInt32(this, value, offset, false) } return offset + 4 } Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 if (!noAssert) { var limit = Math.pow(2, 8 * byteLength - 1) checkInt(this, value, offset, byteLength, limit - 1, -limit) } var i = 0 var mul = 1 var sub = value < 0 ? 1 : 0 this[offset] = value & 0xFF while (++i < byteLength && (mul *= 0x100)) { this[offset + i] = ((value / mul) >> 0) - sub & 0xFF } return offset + byteLength } Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { value = +value offset = offset | 0 if (!noAssert) { var limit = Math.pow(2, 8 * byteLength - 1) checkInt(this, value, offset, byteLength, limit - 1, -limit) } var i = byteLength - 1 var mul = 1 var sub = value < 0 ? 1 : 0 this[offset + i] = value & 0xFF while (--i >= 0 && (mul *= 0x100)) { this[offset + i] = ((value / mul) >> 0) - sub & 0xFF } return offset + byteLength } Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) if (value < 0) value = 0xff + value + 1 this[offset] = value return offset + 1 } Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = value this[offset + 1] = (value >>> 8) } else { objectWriteUInt16(this, value, offset, true) } return offset + 2 } Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 8) this[offset + 1] = value } else { objectWriteUInt16(this, value, offset, false) } return offset + 2 } Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = value this[offset + 1] = (value >>> 8) this[offset + 2] = (value >>> 16) this[offset + 3] = (value >>> 24) } else { objectWriteUInt32(this, value, offset, true) } return offset + 4 } Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { value = +value offset = offset | 0 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) if (value < 0) value = 0xffffffff + value + 1 if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 24) this[offset + 1] = (value >>> 16) this[offset + 2] = (value >>> 8) this[offset + 3] = value } else { objectWriteUInt32(this, value, offset, false) } return offset + 4 } function checkIEEE754 (buf, value, offset, ext, max, min) { if (value > max || value < min) throw new RangeError('value is out of bounds') if (offset + ext > buf.length) throw new RangeError('index out of range') if (offset < 0) throw new RangeError('index out of range') } function writeFloat (buf, value, offset, littleEndian, noAssert) { if (!noAssert) { checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) } ieee754.write(buf, value, offset, littleEndian, 23, 4) return offset + 4 } Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { return writeFloat(this, value, offset, true, noAssert) } Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { return writeFloat(this, value, offset, false, noAssert) } function writeDouble (buf, value, offset, littleEndian, noAssert) { if (!noAssert) { checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) } ieee754.write(buf, value, offset, littleEndian, 52, 8) return offset + 8 } Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { return writeDouble(this, value, offset, true, noAssert) } Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { return writeDouble(this, value, offset, false, noAssert) } // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) Buffer.prototype.copy = function copy (target, targetStart, start, end) { if (!start) start = 0 if (!end && end !== 0) end = this.length if (targetStart >= target.length) targetStart = target.length if (!targetStart) targetStart = 0 if (end > 0 && end < start) end = start // Copy 0 bytes; we're done if (end === start) return 0 if (target.length === 0 || this.length === 0) return 0 // Fatal error conditions if (targetStart < 0) { throw new RangeError('targetStart out of bounds') } if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') if (end < 0) throw new RangeError('sourceEnd out of bounds') // Are we oob? if (end > this.length) end = this.length if (target.length - targetStart < end - start) { end = target.length - targetStart + start } var len = end - start var i if (this === target && start < targetStart && targetStart < end) { // descending copy from end for (i = len - 1; i >= 0; i--) { target[i + targetStart] = this[i + start] } } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { // ascending copy from start for (i = 0; i < len; i++) { target[i + targetStart] = this[i + start] } } else { target._set(this.subarray(start, start + len), targetStart) } return len } // fill(value, start=0, end=buffer.length) Buffer.prototype.fill = function fill (value, start, end) { if (!value) value = 0 if (!start) start = 0 if (!end) end = this.length if (end < start) throw new RangeError('end < start') // Fill 0 bytes; we're done if (end === start) return if (this.length === 0) return if (start < 0 || start >= this.length) throw new RangeError('start out of bounds') if (end < 0 || end > this.length) throw new RangeError('end out of bounds') var i if (typeof value === 'number') { for (i = start; i < end; i++) { this[i] = value } } else { var bytes = utf8ToBytes(value.toString()) var len = bytes.length for (i = start; i < end; i++) { this[i] = bytes[i % len] } } return this } /** * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance. * Added in Node 0.12. Only available in browsers that support ArrayBuffer. */ Buffer.prototype.toArrayBuffer = function toArrayBuffer () { if (typeof Uint8Array !== 'undefined') { if (Buffer.TYPED_ARRAY_SUPPORT) { return (new Buffer(this)).buffer } else { var buf = new Uint8Array(this.length) for (var i = 0, len = buf.length; i < len; i += 1) { buf[i] = this[i] } return buf.buffer } } else { throw new TypeError('Buffer.toArrayBuffer not supported in this browser') } } // HELPER FUNCTIONS // ================ var BP = Buffer.prototype /** * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods */ Buffer._augment = function _augment (arr) { arr.constructor = Buffer arr._isBuffer = true // save reference to original Uint8Array set method before overwriting arr._set = arr.set // deprecated arr.get = BP.get arr.set = BP.set arr.write = BP.write arr.toString = BP.toString arr.toLocaleString = BP.toString arr.toJSON = BP.toJSON arr.equals = BP.equals arr.compare = BP.compare arr.indexOf = BP.indexOf arr.copy = BP.copy arr.slice = BP.slice arr.readUIntLE = BP.readUIntLE arr.readUIntBE = BP.readUIntBE arr.readUInt8 = BP.readUInt8 arr.readUInt16LE = BP.readUInt16LE arr.readUInt16BE = BP.readUInt16BE arr.readUInt32LE = BP.readUInt32LE arr.readUInt32BE = BP.readUInt32BE arr.readIntLE = BP.readIntLE arr.readIntBE = BP.readIntBE arr.readInt8 = BP.readInt8 arr.readInt16LE = BP.readInt16LE arr.readInt16BE = BP.readInt16BE arr.readInt32LE = BP.readInt32LE arr.readInt32BE = BP.readInt32BE arr.readFloatLE = BP.readFloatLE arr.readFloatBE = BP.readFloatBE arr.readDoubleLE = BP.readDoubleLE arr.readDoubleBE = BP.readDoubleBE arr.writeUInt8 = BP.writeUInt8 arr.writeUIntLE = BP.writeUIntLE arr.writeUIntBE = BP.writeUIntBE arr.writeUInt16LE = BP.writeUInt16LE arr.writeUInt16BE = BP.writeUInt16BE arr.writeUInt32LE = BP.writeUInt32LE arr.writeUInt32BE = BP.writeUInt32BE arr.writeIntLE = BP.writeIntLE arr.writeIntBE = BP.writeIntBE arr.writeInt8 = BP.writeInt8 arr.writeInt16LE = BP.writeInt16LE arr.writeInt16BE = BP.writeInt16BE arr.writeInt32LE = BP.writeInt32LE arr.writeInt32BE = BP.writeInt32BE arr.writeFloatLE = BP.writeFloatLE arr.writeFloatBE = BP.writeFloatBE arr.writeDoubleLE = BP.writeDoubleLE arr.writeDoubleBE = BP.writeDoubleBE arr.fill = BP.fill arr.inspect = BP.inspect arr.toArrayBuffer = BP.toArrayBuffer return arr } var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g function base64clean (str) { // Node strips out invalid characters like \n and \t from the string, base64-js does not str = stringtrim(str).replace(INVALID_BASE64_RE, '') // Node converts strings with length < 2 to '' if (str.length < 2) return '' // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not while (str.length % 4 !== 0) { str = str + '=' } return str } function stringtrim (str) { if (str.trim) return str.trim() return str.replace(/^\s+|\s+$/g, '') } function toHex (n) { if (n < 16) return '0' + n.toString(16) return n.toString(16) } function utf8ToBytes (string, units) { units = units || Infinity var codePoint var length = string.length var leadSurrogate = null var bytes = [] for (var i = 0; i < length; i++) { codePoint = string.charCodeAt(i) // is surrogate component if (codePoint > 0xD7FF && codePoint < 0xE000) { // last char was a lead if (!leadSurrogate) { // no lead yet if (codePoint > 0xDBFF) { // unexpected trail if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) continue } else if (i + 1 === length) { // unpaired lead if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) continue } // valid lead leadSurrogate = codePoint continue } // 2 leads in a row if (codePoint < 0xDC00) { if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) leadSurrogate = codePoint continue } // valid surrogate pair codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000 } else if (leadSurrogate) { // valid bmp char, but last char was a lead if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) } leadSurrogate = null // encode utf8 if (codePoint < 0x80) { if ((units -= 1) < 0) break bytes.push(codePoint) } else if (codePoint < 0x800) { if ((units -= 2) < 0) break bytes.push( codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80 ) } else if (codePoint < 0x10000) { if ((units -= 3) < 0) break bytes.push( codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80 ) } else if (codePoint < 0x110000) { if ((units -= 4) < 0) break bytes.push( codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80 ) } else { throw new Error('Invalid code point') } } return bytes } function asciiToBytes (str) { var byteArray = [] for (var i = 0; i < str.length; i++) { // Node's code seems to be doing this and not & 0x7F.. byteArray.push(str.charCodeAt(i) & 0xFF) } return byteArray } function utf16leToBytes (str, units) { var c, hi, lo var byteArray = [] for (var i = 0; i < str.length; i++) { if ((units -= 2) < 0) break c = str.charCodeAt(i) hi = c >> 8 lo = c % 256 byteArray.push(lo) byteArray.push(hi) } return byteArray } function base64ToBytes (str) { return base64.toByteArray(base64clean(str)) } function blitBuffer (src, dst, offset, length) { for (var i = 0; i < length; i++) { if ((i + offset >= dst.length) || (i >= src.length)) break dst[i + offset] = src[i] } return i } },{"base64-js":15,"ieee754":16,"is-array":17}],15:[function(require,module,exports){ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; ;(function (exports) { 'use strict'; var Arr = (typeof Uint8Array !== 'undefined') ? Uint8Array : Array var PLUS = '+'.charCodeAt(0) var SLASH = '/'.charCodeAt(0) var NUMBER = '0'.charCodeAt(0) var LOWER = 'a'.charCodeAt(0) var UPPER = 'A'.charCodeAt(0) var PLUS_URL_SAFE = '-'.charCodeAt(0) var SLASH_URL_SAFE = '_'.charCodeAt(0) function decode (elt) { var code = elt.charCodeAt(0) if (code === PLUS || code === PLUS_URL_SAFE) return 62 // '+' if (code === SLASH || code === SLASH_URL_SAFE) return 63 // '/' if (code < NUMBER) return -1 //no match if (code < NUMBER + 10) return code - NUMBER + 26 + 26 if (code < UPPER + 26) return code - UPPER if (code < LOWER + 26) return code - LOWER + 26 } function b64ToByteArray (b64) { var i, j, l, tmp, placeHolders, arr if (b64.length % 4 > 0) { throw new Error('Invalid string. Length must be a multiple of 4') } // the number of equal signs (place holders) // if there are two placeholders, than the two characters before it // represent one byte // if there is only one, then the three characters before it represent 2 bytes // this is just a cheap hack to not do indexOf twice var len = b64.length placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 // base64 is 4/3 + up to two characters of the original data arr = new Arr(b64.length * 3 / 4 - placeHolders) // if there are placeholders, only get up to the last complete 4 chars l = placeHolders > 0 ? b64.length - 4 : b64.length var L = 0 function push (v) { arr[L++] = v } for (i = 0, j = 0; i < l; i += 4, j += 3) { tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) push((tmp & 0xFF0000) >> 16) push((tmp & 0xFF00) >> 8) push(tmp & 0xFF) } if (placeHolders === 2) { tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) push(tmp & 0xFF) } else if (placeHolders === 1) { tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) push((tmp >> 8) & 0xFF) push(tmp & 0xFF) } return arr } function uint8ToBase64 (uint8) { var i, extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes output = "", temp, length function encode (num) { return lookup.charAt(num) } function tripletToBase64 (num) { return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) } // go through the array every three bytes, we'll deal with trailing stuff later for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) output += tripletToBase64(temp) } // pad the end with zeros, but make sure to not forget the extra bytes switch (extraBytes) { case 1: temp = uint8[uint8.length - 1] output += encode(temp >> 2) output += encode((temp << 4) & 0x3F) output += '==' break case 2: temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) output += encode(temp >> 10) output += encode((temp >> 4) & 0x3F) output += encode((temp << 2) & 0x3F) output += '=' break } return output } exports.toByteArray = b64ToByteArray exports.fromByteArray = uint8ToBase64 }(typeof exports === 'undefined' ? (this.base64js = {}) : exports)) },{}],16:[function(require,module,exports){ exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = nBytes * 8 - mLen - 1 var eMax = (1 << eLen) - 1 var eBias = eMax >> 1 var nBits = -7 var i = isLE ? (nBytes - 1) : 0 var d = isLE ? -1 : 1 var s = buffer[offset + i] i += d e = s & ((1 << (-nBits)) - 1) s >>= (-nBits) nBits += eLen for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} m = e & ((1 << (-nBits)) - 1) e >>= (-nBits) nBits += mLen for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} if (e === 0) { e = 1 - eBias } else if (e === eMax) { return m ? NaN : ((s ? -1 : 1) * Infinity) } else { m = m + Math.pow(2, mLen) e = e - eBias } return (s ? -1 : 1) * m * Math.pow(2, e - mLen) } exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { var e, m, c var eLen = nBytes * 8 - mLen - 1 var eMax = (1 << eLen) - 1 var eBias = eMax >> 1 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) var i = isLE ? 0 : (nBytes - 1) var d = isLE ? 1 : -1 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 value = Math.abs(value) if (isNaN(value) || value === Infinity) { m = isNaN(value) ? 1 : 0 e = eMax } else { e = Math.floor(Math.log(value) / Math.LN2) if (value * (c = Math.pow(2, -e)) < 1) { e-- c *= 2 } if (e + eBias >= 1) { value += rt / c } else { value += rt * Math.pow(2, 1 - eBias) } if (value * c >= 2) { e++ c /= 2 } if (e + eBias >= eMax) { m = 0 e = eMax } else if (e + eBias >= 1) { m = (value * c - 1) * Math.pow(2, mLen) e = e + eBias } else { m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) e = 0 } } for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} e = (e << mLen) | m eLen += mLen for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} buffer[offset + i - d] |= s * 128 } },{}],17:[function(require,module,exports){ /** * isArray */ var isArray = Array.isArray; /** * toString */ var str = Object.prototype.toString; /** * Whether or not the given `val` * is an array. * * example: * * isArray([]); * // > true * isArray(arguments); * // > false * isArray(''); * // > false * * @param {mixed} val * @return {bool} */ module.exports = isArray || function (val) { return !! val && '[object Array]' == str.call(val); }; },{}],18:[function(require,module,exports){ /* jshint node: true */ (function () { "use strict"; function CookieAccessInfo(domain, path, secure, script) { if (this instanceof CookieAccessInfo) { this.domain = domain || undefined; this.path = path || "/"; this.secure = !!secure; this.script = !!script; return this; } return new CookieAccessInfo(domain, path, secure, script); } exports.CookieAccessInfo = CookieAccessInfo; function Cookie(cookiestr, request_domain, request_path) { if (cookiestr instanceof Cookie) { return cookiestr; } if (this instanceof Cookie) { this.name = null; this.value = null; this.expiration_date = Infinity; this.path = String(request_path || "/"); this.explicit_path = false; this.domain = request_domain || null; this.explicit_domain = false; this.secure = false; //how to define default? this.noscript = false; //httponly if (cookiestr) { this.parse(cookiestr, request_domain, request_path); } return this; } return new Cookie(cookiestr, request_domain, request_path); } exports.Cookie = Cookie; Cookie.prototype.toString = function toString() { var str = [this.name + "=" + this.value]; if (this.expiration_date !== Infinity) { str.push("expires=" + (new Date(this.expiration_date)).toGMTString()); } if (this.domain) { str.push("domain=" + this.domain); } if (this.path) { str.push("path=" + this.path); } if (this.secure) { str.push("secure"); } if (this.noscript) { str.push("httponly"); } return str.join("; "); }; Cookie.prototype.toValueString = function toValueString() { return this.name + "=" + this.value; }; var cookie_str_splitter = /[:](?=\s*[a-zA-Z0-9_\-]+\s*[=])/g; Cookie.prototype.parse = function parse(str, request_domain, request_path) { if (this instanceof Cookie) { var parts = str.split(";").filter(function (value) { return !!value; }), pair = parts[0].match(/([^=]+)=([\s\S]*)/), key = pair[1], value = pair[2], i; this.name = key; this.value = value; for (i = 1; i < parts.length; i += 1) { pair = parts[i].match(/([^=]+)(?:=([\s\S]*))?/); key = pair[1].trim().toLowerCase(); value = pair[2]; switch (key) { case "httponly": this.noscript = true; break; case "expires": this.expiration_date = value ? Number(Date.parse(value)) : Infinity; break; case "path": this.path = value ? value.trim() : ""; this.explicit_path = true; break; case "domain": this.domain = value ? value.trim() : ""; this.explicit_domain = !!this.domain; break; case "secure": this.secure = true; break; } } if (!this.explicit_path) { this.path = request_path || "/"; } if (!this.explicit_domain) { this.domain = request_domain; } return this; } return new Cookie().parse(str, request_domain, request_path); }; Cookie.prototype.matches = function matches(access_info) { if (this.noscript && access_info.script || this.secure && !access_info.secure || !this.collidesWith(access_info)) { return false; } return true; }; Cookie.prototype.collidesWith = function collidesWith(access_info) { if ((this.path && !access_info.path) || (this.domain && !access_info.domain)) { return false; } if (this.path && access_info.path.indexOf(this.path) !== 0) { return false; } if (this.explicit_path && access_info.path.indexOf( this.path ) !== 0) { return false; } var access_domain = access_info.domain && access_info.domain.replace(/^[\.]/,''); var cookie_domain = this.domain && this.domain.replace(/^[\.]/,''); if (cookie_domain === access_domain) { return true; } if (cookie_domain) { if (!this.explicit_domain) { return false; // we already checked if the domains were exactly the same } var wildcard = access_domain.indexOf(cookie_domain); if (wildcard === -1 || wildcard !== access_domain.length - cookie_domain.length) { return false; } return true; } return true; }; function CookieJar() { var cookies, cookies_list, collidable_cookie; if (this instanceof CookieJar) { cookies = Object.create(null); //name: [Cookie] this.setCookie = function setCookie(cookie, request_domain, request_path) { var remove, i; cookie = new Cookie(cookie, request_domain, request_path); //Delete the cookie if the set is past the current time remove = cookie.expiration_date <= Date.now(); if (cookies[cookie.name] !== undefined) { cookies_list = cookies[cookie.name]; for (i = 0; i < cookies_list.length; i += 1) { collidable_cookie = cookies_list[i]; if (collidable_cookie.collidesWith(cookie)) { if (remove) { cookies_list.splice(i, 1); if (cookies_list.length === 0) { delete cookies[cookie.name]; } return false; } cookies_list[i] = cookie; return cookie; } } if (remove) { return false; } cookies_list.push(cookie); return cookie; } if (remove) { return false; } cookies[cookie.name] = [cookie]; return cookies[cookie.name]; }; //returns a cookie this.getCookie = function getCookie(cookie_name, access_info) { var cookie, i; cookies_list = cookies[cookie_name]; if (!cookies_list) { return; } for (i = 0; i < cookies_list.length; i += 1) { cookie = cookies_list[i]; if (cookie.expiration_date <= Date.now()) { if (cookies_list.length === 0) { delete cookies[cookie.name]; } continue; } if (cookie.matches(access_info)) { return cookie; } } }; //returns a list of cookies this.getCookies = function getCookies(access_info) { var matches = [], cookie_name, cookie; for (cookie_name in cookies) { cookie = this.getCookie(cookie_name, access_info); if (cookie) { matches.push(cookie); } } matches.toString = function toString() { return matches.join(":"); }; matches.toValueString = function toValueString() { return matches.map(function (c) { return c.toValueString(); }).join(';'); }; return matches; }; return this; } return new CookieJar(); } exports.CookieJar = CookieJar; //returns list of cookies that were set correctly. Cookies that are expired and removed are not returned. CookieJar.prototype.setCookies = function setCookies(cookies, request_domain, request_path) { cookies = Array.isArray(cookies) ? cookies : cookies.split(cookie_str_splitter); var successful = [], i, cookie; cookies = cookies.map(function(item){ return new Cookie(item, request_domain, request_path); }); for (i = 0; i < cookies.length; i += 1) { cookie = cookies[i]; if (this.setCookie(cookie, request_domain, request_path)) { successful.push(cookie); } } return successful; }; }()); },{}],19:[function(require,module,exports){ 'use strict'; var yaml = require('./lib/js-yaml.js'); module.exports = yaml; },{"./lib/js-yaml.js":20}],20:[function(require,module,exports){ 'use strict'; var loader = require('./js-yaml/loader'); var dumper = require('./js-yaml/dumper'); function deprecated(name) { return function () { throw new Error('Function ' + name + ' is deprecated and cannot be used.'); }; } module.exports.Type = require('./js-yaml/type'); module.exports.Schema = require('./js-yaml/schema'); module.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe'); module.exports.JSON_SCHEMA = require('./js-yaml/schema/json'); module.exports.CORE_SCHEMA = require('./js-yaml/schema/core'); module.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe'); module.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full'); module.exports.load = loader.load; module.exports.loadAll = loader.loadAll; module.exports.safeLoad = loader.safeLoad; module.exports.safeLoadAll = loader.safeLoadAll; module.exports.dump = dumper.dump; module.exports.safeDump = dumper.safeDump; module.exports.YAMLException = require('./js-yaml/exception'); // Deprecated schema names from JS-YAML 2.0.x module.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe'); module.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe'); module.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full'); // Deprecated functions from JS-YAML 1.x.x module.exports.scan = deprecated('scan'); module.exports.parse = deprecated('parse'); module.exports.compose = deprecated('compose'); module.exports.addConstructor = deprecated('addConstructor'); },{"./js-yaml/dumper":22,"./js-yaml/exception":23,"./js-yaml/loader":24,"./js-yaml/schema":26,"./js-yaml/schema/core":27,"./js-yaml/schema/default_full":28,"./js-yaml/schema/default_safe":29,"./js-yaml/schema/failsafe":30,"./js-yaml/schema/json":31,"./js-yaml/type":32}],21:[function(require,module,exports){ 'use strict'; function isNothing(subject) { return (typeof subject === 'undefined') || (subject === null); } function isObject(subject) { return (typeof subject === 'object') && (subject !== null); } function toArray(sequence) { if (Array.isArray(sequence)) return sequence; else if (isNothing(sequence)) return []; return [ sequence ]; } function extend(target, source) { var index, length, key, sourceKeys; if (source) { sourceKeys = Object.keys(source); for (index = 0, length = sourceKeys.length; index < length; index += 1) { key = sourceKeys[index]; target[key] = source[key]; } } return target; } function repeat(string, count) { var result = '', cycle; for (cycle = 0; cycle < count; cycle += 1) { result += string; } return result; } function isNegativeZero(number) { return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); } module.exports.isNothing = isNothing; module.exports.isObject = isObject; module.exports.toArray = toArray; module.exports.repeat = repeat; module.exports.isNegativeZero = isNegativeZero; module.exports.extend = extend; },{}],22:[function(require,module,exports){ 'use strict'; /*eslint-disable no-use-before-define*/ var common = require('./common'); var YAMLException = require('./exception'); var DEFAULT_FULL_SCHEMA = require('./schema/default_full'); var DEFAULT_SAFE_SCHEMA = require('./schema/default_safe'); var _toString = Object.prototype.toString; var _hasOwnProperty = Object.prototype.hasOwnProperty; var CHAR_TAB = 0x09; /* Tab */ var CHAR_LINE_FEED = 0x0A; /* LF */ var CHAR_SPACE = 0x20; /* Space */ var CHAR_EXCLAMATION = 0x21; /* ! */ var CHAR_DOUBLE_QUOTE = 0x22; /* " */ var CHAR_SHARP = 0x23; /* # */ var CHAR_PERCENT = 0x25; /* % */ var CHAR_AMPERSAND = 0x26; /* & */ var CHAR_SINGLE_QUOTE = 0x27; /* ' */ var CHAR_ASTERISK = 0x2A; /* * */ var CHAR_COMMA = 0x2C; /* , */ var CHAR_MINUS = 0x2D; /* - */ var CHAR_COLON = 0x3A; /* : */ var CHAR_GREATER_THAN = 0x3E; /* > */ var CHAR_QUESTION = 0x3F; /* ? */ var CHAR_COMMERCIAL_AT = 0x40; /* @ */ var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ var CHAR_GRAVE_ACCENT = 0x60; /* ` */ var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ var CHAR_VERTICAL_LINE = 0x7C; /* | */ var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ var ESCAPE_SEQUENCES = {}; ESCAPE_SEQUENCES[0x00] = '\\0'; ESCAPE_SEQUENCES[0x07] = '\\a'; ESCAPE_SEQUENCES[0x08] = '\\b'; ESCAPE_SEQUENCES[0x09] = '\\t'; ESCAPE_SEQUENCES[0x0A] = '\\n'; ESCAPE_SEQUENCES[0x0B] = '\\v'; ESCAPE_SEQUENCES[0x0C] = '\\f'; ESCAPE_SEQUENCES[0x0D] = '\\r'; ESCAPE_SEQUENCES[0x1B] = '\\e'; ESCAPE_SEQUENCES[0x22] = '\\"'; ESCAPE_SEQUENCES[0x5C] = '\\\\'; ESCAPE_SEQUENCES[0x85] = '\\N'; ESCAPE_SEQUENCES[0xA0] = '\\_'; ESCAPE_SEQUENCES[0x2028] = '\\L'; ESCAPE_SEQUENCES[0x2029] = '\\P'; var DEPRECATED_BOOLEANS_SYNTAX = [ 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' ]; function compileStyleMap(schema, map) { var result, keys, index, length, tag, style, type; if (map === null) return {}; result = {}; keys = Object.keys(map); for (index = 0, length = keys.length; index < length; index += 1) { tag = keys[index]; style = String(map[tag]); if (tag.slice(0, 2) === '!!') { tag = 'tag:yaml.org,2002:' + tag.slice(2); } type = schema.compiledTypeMap[tag]; if (type && _hasOwnProperty.call(type.styleAliases, style)) { style = type.styleAliases[style]; } result[tag] = style; } return result; } function encodeHex(character) { var string, handle, length; string = character.toString(16).toUpperCase(); if (character <= 0xFF) { handle = 'x'; length = 2; } else if (character <= 0xFFFF) { handle = 'u'; length = 4; } else if (character <= 0xFFFFFFFF) { handle = 'U'; length = 8; } else { throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF'); } return '\\' + handle + common.repeat('0', length - string.length) + string; } function State(options) { this.schema = options['schema'] || DEFAULT_FULL_SCHEMA; this.indent = Math.max(1, (options['indent'] || 2)); this.skipInvalid = options['skipInvalid'] || false; this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); this.styleMap = compileStyleMap(this.schema, options['styles'] || null); this.sortKeys = options['sortKeys'] || false; this.lineWidth = options['lineWidth'] || 80; this.noRefs = options['noRefs'] || false; this.noCompatMode = options['noCompatMode'] || false; this.implicitTypes = this.schema.compiledImplicit; this.explicitTypes = this.schema.compiledExplicit; this.tag = null; this.result = ''; this.duplicates = []; this.usedDuplicates = null; } // Indents every line in a string. Empty lines (\n only) are not indented. function indentString(string, spaces) { var ind = common.repeat(' ', spaces), position = 0, next = -1, result = '', line, length = string.length; while (position < length) { next = string.indexOf('\n', position); if (next === -1) { line = string.slice(position); position = length; } else { line = string.slice(position, next + 1); position = next + 1; } if (line.length && line !== '\n') result += ind; result += line; } return result; } function generateNextLine(state, level) { return '\n' + common.repeat(' ', state.indent * level); } function testImplicitResolving(state, str) { var index, length, type; for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { type = state.implicitTypes[index]; if (type.resolve(str)) { return true; } } return false; } // [33] s-white ::= s-space | s-tab function isWhitespace(c) { return c === CHAR_SPACE || c === CHAR_TAB; } // Returns true if the character can be printed without escaping. // From YAML 1.2: "any allowed characters known to be non-printable // should also be escaped. [However,] This isn’t mandatory" // Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. function isPrintable(c) { return (0x00020 <= c && c <= 0x00007E) || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */) || (0x10000 <= c && c <= 0x10FFFF); } // Simplified test for values allowed after the first character in plain style. function isPlainSafe(c) { // Uses a subset of nb-char - c-flow-indicator - ":" - "#" // where nb-char ::= c-printable - b-char - c-byte-order-mark. return isPrintable(c) && c !== 0xFEFF // - c-flow-indicator && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET // - ":" - "#" && c !== CHAR_COLON && c !== CHAR_SHARP; } // Simplified test for values allowed as the first character in plain style. function isPlainSafeFirst(c) { // Uses a subset of ns-char - c-indicator // where ns-char = nb-char - s-white. return isPrintable(c) && c !== 0xFEFF && !isWhitespace(c) // - s-white // - (c-indicator ::= // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “"” && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE // | “%” | “@” | “`”) && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT; } var STYLE_PLAIN = 1, STYLE_SINGLE = 2, STYLE_LITERAL = 3, STYLE_FOLDED = 4, STYLE_DOUBLE = 5; // Determines which scalar styles are possible and returns the preferred style. // lineWidth = -1 => no limit. // Pre-conditions: str.length > 0. // Post-conditions: // STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. // STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). // STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) { var i; var char; var hasLineBreak = false; var hasFoldableLine = false; // only checked if shouldTrackWidth var shouldTrackWidth = lineWidth !== -1; var previousLineBreak = -1; // count the first line correctly var plain = isPlainSafeFirst(string.charCodeAt(0)) && !isWhitespace(string.charCodeAt(string.length - 1)); if (singleLineOnly) { // Case: no block styles. // Check for disallowed characters to rule out plain and single. for (i = 0; i < string.length; i++) { char = string.charCodeAt(i); if (!isPrintable(char)) { return STYLE_DOUBLE; } plain = plain && isPlainSafe(char); } } else { // Case: block styles permitted. for (i = 0; i < string.length; i++) { char = string.charCodeAt(i); if (char === CHAR_LINE_FEED) { hasLineBreak = true; // Check if any line can be folded. if (shouldTrackWidth) { hasFoldableLine = hasFoldableLine || // Foldable line = too long, and not more-indented. (i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== ' '); previousLineBreak = i; } } else if (!isPrintable(char)) { return STYLE_DOUBLE; } plain = plain && isPlainSafe(char); } // in case the end is missing a \n hasFoldableLine = hasFoldableLine || (shouldTrackWidth && (i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== ' ')); } // Although every style can represent \n without escaping, prefer block styles // for multiline, since they're more readable and they don't add empty lines. // Also prefer folding a super-long line. if (!hasLineBreak && !hasFoldableLine) { // Strings interpretable as another type have to be quoted; // e.g. the string 'true' vs. the boolean true. return plain && !testAmbiguousType(string) ? STYLE_PLAIN : STYLE_SINGLE; } // Edge case: block indentation indicator can only have one digit. if (string[0] === ' ' && indentPerLevel > 9) { return STYLE_DOUBLE; } // At this point we know block styles are valid. // Prefer literal style unless we want to fold. return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; } // Note: line breaking/folding is implemented for only the folded style. // NB. We drop the last trailing newline (if any) of a returned block scalar // since the dumper adds its own newline. This always works: // • No ending newline => unaffected; already using strip "-" chomping. // • Ending newline => removed then restored. // Importantly, this keeps the "+" chomp indicator from gaining an extra line. function writeScalar(state, string, level, iskey) { state.dump = (function () { if (string.length === 0) { return "''"; } if (!state.noCompatMode && DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) { return "'" + string + "'"; } var indent = state.indent * Math.max(1, level); // no 0-indent scalars // As indentation gets deeper, let the width decrease monotonically // to the lower bound min(state.lineWidth, 40). // Note that this implies // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. // state.lineWidth > 40 + state.indent: width decreases until the lower bound. // This behaves better than a constant minimum width which disallows narrower options, // or an indent threshold which causes the width to suddenly increase. var lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); // Without knowing if keys are implicit/explicit, assume implicit for safety. var singleLineOnly = iskey // No block styles in flow mode. || (state.flowLevel > -1 && level >= state.flowLevel); function testAmbiguity(string) { return testImplicitResolving(state, string); } switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) { case STYLE_PLAIN: return string; case STYLE_SINGLE: return "'" + string.replace(/'/g, "''") + "'"; case STYLE_LITERAL: return '|' + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent)); case STYLE_FOLDED: return '>' + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); case STYLE_DOUBLE: return '"' + escapeString(string, lineWidth) + '"'; default: throw new YAMLException('impossible error: invalid scalar style'); } }()); } // Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. function blockHeader(string, indentPerLevel) { var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : ''; // note the special case: the string '\n' counts as a "trailing" empty line. var clip = string[string.length - 1] === '\n'; var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); var chomp = keep ? '+' : (clip ? '' : '-'); return indentIndicator + chomp + '\n'; } // (See the note for writeScalar.) function dropEndingNewline(string) { return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; } // Note: a long line without a suitable break point will exceed the width limit. // Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. function foldString(string, width) { // In folded style, $k$ consecutive newlines output as $k+1$ newlines— // unless they're before or after a more-indented line, or at the very // beginning or end, in which case $k$ maps to $k$. // Therefore, parse each chunk as newline(s) followed by a content line. var lineRe = /(\n+)([^\n]*)/g; // first line (possibly an empty line) var result = (function () { var nextLF = string.indexOf('\n'); nextLF = nextLF !== -1 ? nextLF : string.length; lineRe.lastIndex = nextLF; return foldLine(string.slice(0, nextLF), width); }()); // If we haven't reached the first content line yet, don't add an extra \n. var prevMoreIndented = string[0] === '\n' || string[0] === ' '; var moreIndented; // rest of the lines var match; while ((match = lineRe.exec(string))) { var prefix = match[1], line = match[2]; moreIndented = (line[0] === ' '); result += prefix + (!prevMoreIndented && !moreIndented && line !== '' ? '\n' : '') + foldLine(line, width); prevMoreIndented = moreIndented; } return result; } // Greedy line breaking. // Picks the longest line under the limit each time, // otherwise settles for the shortest line over the limit. // NB. More-indented lines *cannot* be folded, as that would add an extra \n. function foldLine(line, width) { if (line === '' || line[0] === ' ') return line; // Since a more-indented line adds a \n, breaks can't be followed by a space. var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. var match; // start is an inclusive index. end, curr, and next are exclusive. var start = 0, end, curr = 0, next = 0; var result = ''; // Invariants: 0 <= start <= length-1. // 0 <= curr <= next <= max(0, length-2). curr - start <= width. // Inside the loop: // A match implies length >= 2, so curr and next are <= length-2. while ((match = breakRe.exec(line))) { next = match.index; // maintain invariant: curr - start <= width if (next - start > width) { end = (curr > start) ? curr : next; // derive end <= length-2 result += '\n' + line.slice(start, end); // skip the space that was output as \n start = end + 1; // derive start <= length-1 } curr = next; } // By the invariants, start <= length-1, so there is something left over. // It is either the whole string or a part starting from non-whitespace. result += '\n'; // Insert a break if the remainder is too long and there is a break available. if (line.length - start > width && curr > start) { result += line.slice(start, curr) + '\n' + line.slice(curr + 1); } else { result += line.slice(start); } return result.slice(1); // drop extra \n joiner } // Escapes a double-quoted string. function escapeString(string) { var result = ''; var char; var escapeSeq; for (var i = 0; i < string.length; i++) { char = string.charCodeAt(i); escapeSeq = ESCAPE_SEQUENCES[char]; result += !escapeSeq && isPrintable(char) ? string[i] : escapeSeq || encodeHex(char); } return result; } function writeFlowSequence(state, level, object) { var _result = '', _tag = state.tag, index, length; for (index = 0, length = object.length; index < length; index += 1) { // Write only valid elements. if (writeNode(state, level, object[index], false, false)) { if (index !== 0) _result += ', '; _result += state.dump; } } state.tag = _tag; state.dump = '[' + _result + ']'; } function writeBlockSequence(state, level, object, compact) { var _result = '', _tag = state.tag, index, length; for (index = 0, length = object.length; index < length; index += 1) { // Write only valid elements. if (writeNode(state, level + 1, object[index], true, true)) { if (!compact || index !== 0) { _result += generateNextLine(state, level); } _result += '- ' + state.dump; } } state.tag = _tag; state.dump = _result || '[]'; // Empty sequence if no valid values. } function writeFlowMapping(state, level, object) { var _result = '', _tag = state.tag, objectKeyList = Object.keys(object), index, length, objectKey, objectValue, pairBuffer; for (index = 0, length = objectKeyList.length; index < length; index += 1) { pairBuffer = ''; if (index !== 0) pairBuffer += ', '; objectKey = objectKeyList[index]; objectValue = object[objectKey]; if (!writeNode(state, level, objectKey, false, false)) { continue; // Skip this pair because of invalid key; } if (state.dump.length > 1024) pairBuffer += '? '; pairBuffer += state.dump + ': '; if (!writeNode(state, level, objectValue, false, false)) { continue; // Skip this pair because of invalid value. } pairBuffer += state.dump; // Both key and value are valid. _result += pairBuffer; } state.tag = _tag; state.dump = '{' + _result + '}'; } function writeBlockMapping(state, level, object, compact) { var _result = '', _tag = state.tag, objectKeyList = Object.keys(object), index, length, objectKey, objectValue, explicitPair, pairBuffer; // Allow sorting keys so that the output file is deterministic if (state.sortKeys === true) { // Default sorting objectKeyList.sort(); } else if (typeof state.sortKeys === 'function') { // Custom sort function objectKeyList.sort(state.sortKeys); } else if (state.sortKeys) { // Something is wrong throw new YAMLException('sortKeys must be a boolean or a function'); } for (index = 0, length = objectKeyList.length; index < length; index += 1) { pairBuffer = ''; if (!compact || index !== 0) { pairBuffer += generateNextLine(state, level); } objectKey = objectKeyList[index]; objectValue = object[objectKey]; if (!writeNode(state, level + 1, objectKey, true, true, true)) { continue; // Skip this pair because of invalid key. } explicitPair = (state.tag !== null && state.tag !== '?') || (state.dump && state.dump.length > 1024); if (explicitPair) { if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { pairBuffer += '?'; } else { pairBuffer += '? '; } } pairBuffer += state.dump; if (explicitPair) { pairBuffer += generateNextLine(state, level); } if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { continue; // Skip this pair because of invalid value. } if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { pairBuffer += ':'; } else { pairBuffer += ': '; } pairBuffer += state.dump; // Both key and value are valid. _result += pairBuffer; } state.tag = _tag; state.dump = _result || '{}'; // Empty mapping if no valid pairs. } function detectType(state, object, explicit) { var _result, typeList, index, length, type, style; typeList = explicit ? state.explicitTypes : state.implicitTypes; for (index = 0, length = typeList.length; index < length; index += 1) { type = typeList[index]; if ((type.instanceOf || type.predicate) && (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && (!type.predicate || type.predicate(object))) { state.tag = explicit ? type.tag : '?'; if (type.represent) { style = state.styleMap[type.tag] || type.defaultStyle; if (_toString.call(type.represent) === '[object Function]') { _result = type.represent(object, style); } else if (_hasOwnProperty.call(type.represent, style)) { _result = type.represent[style](object, style); } else { throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); } state.dump = _result; } return true; } } return false; } // Serializes `object` and writes it to global `result`. // Returns true on success, or false on invalid object. // function writeNode(state, level, object, block, compact, iskey) { state.tag = null; state.dump = object; if (!detectType(state, object, false)) { detectType(state, object, true); } var type = _toString.call(state.dump); if (block) { block = (state.flowLevel < 0 || state.flowLevel > level); } var objectOrArray = type === '[object Object]' || type === '[object Array]', duplicateIndex, duplicate; if (objectOrArray) { duplicateIndex = state.duplicates.indexOf(object); duplicate = duplicateIndex !== -1; } if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { compact = false; } if (duplicate && state.usedDuplicates[duplicateIndex]) { state.dump = '*ref_' + duplicateIndex; } else { if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { state.usedDuplicates[duplicateIndex] = true; } if (type === '[object Object]') { if (block && (Object.keys(state.dump).length !== 0)) { writeBlockMapping(state, level, state.dump, compact); if (duplicate) { state.dump = '&ref_' + duplicateIndex + state.dump; } } else { writeFlowMapping(state, level, state.dump); if (duplicate) { state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; } } } else if (type === '[object Array]') { if (block && (state.dump.length !== 0)) { writeBlockSequence(state, level, state.dump, compact); if (duplicate) { state.dump = '&ref_' + duplicateIndex + state.dump; } } else { writeFlowSequence(state, level, state.dump); if (duplicate) { state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; } } } else if (type === '[object String]') { if (state.tag !== '?') { writeScalar(state, state.dump, level, iskey); } } else { if (state.skipInvalid) return false; throw new YAMLException('unacceptable kind of an object to dump ' + type); } if (state.tag !== null && state.tag !== '?') { state.dump = '!<' + state.tag + '> ' + state.dump; } } return true; } function getDuplicateReferences(object, state) { var objects = [], duplicatesIndexes = [], index, length; inspectNode(object, objects, duplicatesIndexes); for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { state.duplicates.push(objects[duplicatesIndexes[index]]); } state.usedDuplicates = new Array(length); } function inspectNode(object, objects, duplicatesIndexes) { var objectKeyList, index, length; if (object !== null && typeof object === 'object') { index = objects.indexOf(object); if (index !== -1) { if (duplicatesIndexes.indexOf(index) === -1) { duplicatesIndexes.push(index); } } else { objects.push(object); if (Array.isArray(object)) { for (index = 0, length = object.length; index < length; index += 1) { inspectNode(object[index], objects, duplicatesIndexes); } } else { objectKeyList = Object.keys(object); for (index = 0, length = objectKeyList.length; index < length; index += 1) { inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); } } } } } function dump(input, options) { options = options || {}; var state = new State(options); if (!state.noRefs) getDuplicateReferences(input, state); if (writeNode(state, 0, input, true, true)) return state.dump + '\n'; return ''; } function safeDump(input, options) { return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); } module.exports.dump = dump; module.exports.safeDump = safeDump; },{"./common":21,"./exception":23,"./schema/default_full":28,"./schema/default_safe":29}],23:[function(require,module,exports){ // YAML error class. http://stackoverflow.com/questions/8458984 // 'use strict'; function YAMLException(reason, mark) { // Super constructor Error.call(this); // Include stack trace in error object if (Error.captureStackTrace) { // Chrome and NodeJS Error.captureStackTrace(this, this.constructor); } else { // FF, IE 10+ and Safari 6+. Fallback for others this.stack = (new Error()).stack || ''; } this.name = 'YAMLException'; this.reason = reason; this.mark = mark; this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : ''); } // Inherit from Error YAMLException.prototype = Object.create(Error.prototype); YAMLException.prototype.constructor = YAMLException; YAMLException.prototype.toString = function toString(compact) { var result = this.name + ': '; result += this.reason || '(unknown reason)'; if (!compact && this.mark) { result += ' ' + this.mark.toString(); } return result; }; module.exports = YAMLException; },{}],24:[function(require,module,exports){ 'use strict'; /*eslint-disable max-len,no-use-before-define*/ var common = require('./common'); var YAMLException = require('./exception'); var Mark = require('./mark'); var DEFAULT_SAFE_SCHEMA = require('./schema/default_safe'); var DEFAULT_FULL_SCHEMA = require('./schema/default_full'); var _hasOwnProperty = Object.prototype.hasOwnProperty; var CONTEXT_FLOW_IN = 1; var CONTEXT_FLOW_OUT = 2; var CONTEXT_BLOCK_IN = 3; var CONTEXT_BLOCK_OUT = 4; var CHOMPING_CLIP = 1; var CHOMPING_STRIP = 2; var CHOMPING_KEEP = 3; var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; function is_EOL(c) { return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); } function is_WHITE_SPACE(c) { return (c === 0x09/* Tab */) || (c === 0x20/* Space */); } function is_WS_OR_EOL(c) { return (c === 0x09/* Tab */) || (c === 0x20/* Space */) || (c === 0x0A/* LF */) || (c === 0x0D/* CR */); } function is_FLOW_INDICATOR(c) { return c === 0x2C/* , */ || c === 0x5B/* [ */ || c === 0x5D/* ] */ || c === 0x7B/* { */ || c === 0x7D/* } */; } function fromHexCode(c) { var lc; if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { return c - 0x30; } /*eslint-disable no-bitwise*/ lc = c | 0x20; if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { return lc - 0x61 + 10; } return -1; } function escapedHexLen(c) { if (c === 0x78/* x */) { return 2; } if (c === 0x75/* u */) { return 4; } if (c === 0x55/* U */) { return 8; } return 0; } function fromDecimalCode(c) { if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { return c - 0x30; } return -1; } function simpleEscapeSequence(c) { return (c === 0x30/* 0 */) ? '\x00' : (c === 0x61/* a */) ? '\x07' : (c === 0x62/* b */) ? '\x08' : (c === 0x74/* t */) ? '\x09' : (c === 0x09/* Tab */) ? '\x09' : (c === 0x6E/* n */) ? '\x0A' : (c === 0x76/* v */) ? '\x0B' : (c === 0x66/* f */) ? '\x0C' : (c === 0x72/* r */) ? '\x0D' : (c === 0x65/* e */) ? '\x1B' : (c === 0x20/* Space */) ? ' ' : (c === 0x22/* " */) ? '\x22' : (c === 0x2F/* / */) ? '/' : (c === 0x5C/* \ */) ? '\x5C' : (c === 0x4E/* N */) ? '\x85' : (c === 0x5F/* _ */) ? '\xA0' : (c === 0x4C/* L */) ? '\u2028' : (c === 0x50/* P */) ? '\u2029' : ''; } function charFromCodepoint(c) { if (c <= 0xFFFF) { return String.fromCharCode(c); } // Encode UTF-16 surrogate pair // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800, ((c - 0x010000) & 0x03FF) + 0xDC00); } var simpleEscapeCheck = new Array(256); // integer, for fast access var simpleEscapeMap = new Array(256); for (var i = 0; i < 256; i++) { simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; simpleEscapeMap[i] = simpleEscapeSequence(i); } function State(input, options) { this.input = input; this.filename = options['filename'] || null; this.schema = options['schema'] || DEFAULT_FULL_SCHEMA; this.onWarning = options['onWarning'] || null; this.legacy = options['legacy'] || false; this.json = options['json'] || false; this.listener = options['listener'] || null; this.implicitTypes = this.schema.compiledImplicit; this.typeMap = this.schema.compiledTypeMap; this.length = input.length; this.position = 0; this.line = 0; this.lineStart = 0; this.lineIndent = 0; this.documents = []; /* this.version; this.checkLineBreaks; this.tagMap; this.anchorMap; this.tag; this.anchor; this.kind; this.result;*/ } function generateError(state, message) { return new YAMLException( message, new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart))); } function throwError(state, message) { throw generateError(state, message); } function throwWarning(state, message) { if (state.onWarning) { state.onWarning.call(null, generateError(state, message)); } } var directiveHandlers = { YAML: function handleYamlDirective(state, name, args) { var match, major, minor; if (state.version !== null) { throwError(state, 'duplication of %YAML directive'); } if (args.length !== 1) { throwError(state, 'YAML directive accepts exactly one argument'); } match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); if (match === null) { throwError(state, 'ill-formed argument of the YAML directive'); } major = parseInt(match[1], 10); minor = parseInt(match[2], 10); if (major !== 1) { throwError(state, 'unacceptable YAML version of the document'); } state.version = args[0]; state.checkLineBreaks = (minor < 2); if (minor !== 1 && minor !== 2) { throwWarning(state, 'unsupported YAML version of the document'); } }, TAG: function handleTagDirective(state, name, args) { var handle, prefix; if (args.length !== 2) { throwError(state, 'TAG directive accepts exactly two arguments'); } handle = args[0]; prefix = args[1]; if (!PATTERN_TAG_HANDLE.test(handle)) { throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); } if (_hasOwnProperty.call(state.tagMap, handle)) { throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); } if (!PATTERN_TAG_URI.test(prefix)) { throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); } state.tagMap[handle] = prefix; } }; function captureSegment(state, start, end, checkJson) { var _position, _length, _character, _result; if (start < end) { _result = state.input.slice(start, end); if (checkJson) { for (_position = 0, _length = _result.length; _position < _length; _position += 1) { _character = _result.charCodeAt(_position); if (!(_character === 0x09 || (0x20 <= _character && _character <= 0x10FFFF))) { throwError(state, 'expected valid JSON character'); } } } else if (PATTERN_NON_PRINTABLE.test(_result)) { throwError(state, 'the stream contains non-printable characters'); } state.result += _result; } } function mergeMappings(state, destination, source, overridableKeys) { var sourceKeys, key, index, quantity; if (!common.isObject(source)) { throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); } sourceKeys = Object.keys(source); for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { key = sourceKeys[index]; if (!_hasOwnProperty.call(destination, key)) { destination[key] = source[key]; overridableKeys[key] = true; } } } function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) { var index, quantity; keyNode = String(keyNode); if (_result === null) { _result = {}; } if (keyTag === 'tag:yaml.org,2002:merge') { if (Array.isArray(valueNode)) { for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { mergeMappings(state, _result, valueNode[index], overridableKeys); } } else { mergeMappings(state, _result, valueNode, overridableKeys); } } else { if (!state.json && !_hasOwnProperty.call(overridableKeys, keyNode) && _hasOwnProperty.call(_result, keyNode)) { throwError(state, 'duplicated mapping key'); } _result[keyNode] = valueNode; delete overridableKeys[keyNode]; } return _result; } function readLineBreak(state) { var ch; ch = state.input.charCodeAt(state.position); if (ch === 0x0A/* LF */) { state.position++; } else if (ch === 0x0D/* CR */) { state.position++; if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { state.position++; } } else { throwError(state, 'a line break is expected'); } state.line += 1; state.lineStart = state.position; } function skipSeparationSpace(state, allowComments, checkIndent) { var lineBreaks = 0, ch = state.input.charCodeAt(state.position); while (ch !== 0) { while (is_WHITE_SPACE(ch)) { ch = state.input.charCodeAt(++state.position); } if (allowComments && ch === 0x23/* # */) { do { ch = state.input.charCodeAt(++state.position); } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); } if (is_EOL(ch)) { readLineBreak(state); ch = state.input.charCodeAt(state.position); lineBreaks++; state.lineIndent = 0; while (ch === 0x20/* Space */) { state.lineIndent++; ch = state.input.charCodeAt(++state.position); } } else { break; } } if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { throwWarning(state, 'deficient indentation'); } return lineBreaks; } function testDocumentSeparator(state) { var _position = state.position, ch; ch = state.input.charCodeAt(_position); // Condition state.position === state.lineStart is tested // in parent on each call, for efficiency. No needs to test here again. if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) { _position += 3; ch = state.input.charCodeAt(_position); if (ch === 0 || is_WS_OR_EOL(ch)) { return true; } } return false; } function writeFoldedLines(state, count) { if (count === 1) { state.result += ' '; } else if (count > 1) { state.result += common.repeat('\n', count - 1); } } function readPlainScalar(state, nodeIndent, withinFlowCollection) { var preceding, following, captureStart, captureEnd, hasPendingContent, _line, _lineStart, _lineIndent, _kind = state.kind, _result = state.result, ch; ch = state.input.charCodeAt(state.position); if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 0x23/* # */ || ch === 0x26/* & */ || ch === 0x2A/* * */ || ch === 0x21/* ! */ || ch === 0x7C/* | */ || ch === 0x3E/* > */ || ch === 0x27/* ' */ || ch === 0x22/* " */ || ch === 0x25/* % */ || ch === 0x40/* @ */ || ch === 0x60/* ` */) { return false; } if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { following = state.input.charCodeAt(state.position + 1); if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { return false; } } state.kind = 'scalar'; state.result = ''; captureStart = captureEnd = state.position; hasPendingContent = false; while (ch !== 0) { if (ch === 0x3A/* : */) { following = state.input.charCodeAt(state.position + 1); if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) { break; } } else if (ch === 0x23/* # */) { preceding = state.input.charCodeAt(state.position - 1); if (is_WS_OR_EOL(preceding)) { break; } } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || withinFlowCollection && is_FLOW_INDICATOR(ch)) { break; } else if (is_EOL(ch)) { _line = state.line; _lineStart = state.lineStart; _lineIndent = state.lineIndent; skipSeparationSpace(state, false, -1); if (state.lineIndent >= nodeIndent) { hasPendingContent = true; ch = state.input.charCodeAt(state.position); continue; } else { state.position = captureEnd; state.line = _line; state.lineStart = _lineStart; state.lineIndent = _lineIndent; break; } } if (hasPendingContent) { captureSegment(state, captureStart, captureEnd, false); writeFoldedLines(state, state.line - _line); captureStart = captureEnd = state.position; hasPendingContent = false; } if (!is_WHITE_SPACE(ch)) { captureEnd = state.position + 1; } ch = state.input.charCodeAt(++state.position); } captureSegment(state, captureStart, captureEnd, false); if (state.result) { return true; } state.kind = _kind; state.result = _result; return false; } function readSingleQuotedScalar(state, nodeIndent) { var ch, captureStart, captureEnd; ch = state.input.charCodeAt(state.position); if (ch !== 0x27/* ' */) { return false; } state.kind = 'scalar'; state.result = ''; state.position++; captureStart = captureEnd = state.position; while ((ch = state.input.charCodeAt(state.position)) !== 0) { if (ch === 0x27/* ' */) { captureSegment(state, captureStart, state.position, true); ch = state.input.charCodeAt(++state.position); if (ch === 0x27/* ' */) { captureStart = captureEnd = state.position; state.position++; } else { return true; } } else if (is_EOL(ch)) { captureSegment(state, captureStart, captureEnd, true); writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); captureStart = captureEnd = state.position; } else if (state.position === state.lineStart && testDocumentSeparator(state)) { throwError(state, 'unexpected end of the document within a single quoted scalar'); } else { state.position++; captureEnd = state.position; } } throwError(state, 'unexpected end of the stream within a single quoted scalar'); } function readDoubleQuotedScalar(state, nodeIndent) { var captureStart, captureEnd, hexLength, hexResult, tmp, ch; ch = state.input.charCodeAt(state.position); if (ch !== 0x22/* " */) { return false; } state.kind = 'scalar'; state.result = ''; state.position++; captureStart = captureEnd = state.position; while ((ch = state.input.charCodeAt(state.position)) !== 0) { if (ch === 0x22/* " */) { captureSegment(state, captureStart, state.position, true); state.position++; return true; } else if (ch === 0x5C/* \ */) { captureSegment(state, captureStart, state.position, true); ch = state.input.charCodeAt(++state.position); if (is_EOL(ch)) { skipSeparationSpace(state, false, nodeIndent); // TODO: rework to inline fn with no type cast? } else if (ch < 256 && simpleEscapeCheck[ch]) { state.result += simpleEscapeMap[ch]; state.position++; } else if ((tmp = escapedHexLen(ch)) > 0) { hexLength = tmp; hexResult = 0; for (; hexLength > 0; hexLength--) { ch = state.input.charCodeAt(++state.position); if ((tmp = fromHexCode(ch)) >= 0) { hexResult = (hexResult << 4) + tmp; } else { throwError(state, 'expected hexadecimal character'); } } state.result += charFromCodepoint(hexResult); state.position++; } else { throwError(state, 'unknown escape sequence'); } captureStart = captureEnd = state.position; } else if (is_EOL(ch)) { captureSegment(state, captureStart, captureEnd, true); writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); captureStart = captureEnd = state.position; } else if (state.position === state.lineStart && testDocumentSeparator(state)) { throwError(state, 'unexpected end of the document within a double quoted scalar'); } else { state.position++; captureEnd = state.position; } } throwError(state, 'unexpected end of the stream within a double quoted scalar'); } function readFlowCollection(state, nodeIndent) { var readNext = true, _line, _tag = state.tag, _result, _anchor = state.anchor, following, terminator, isPair, isExplicitPair, isMapping, overridableKeys = {}, keyNode, keyTag, valueNode, ch; ch = state.input.charCodeAt(state.position); if (ch === 0x5B/* [ */) { terminator = 0x5D;/* ] */ isMapping = false; _result = []; } else if (ch === 0x7B/* { */) { terminator = 0x7D;/* } */ isMapping = true; _result = {}; } else { return false; } if (state.anchor !== null) { state.anchorMap[state.anchor] = _result; } ch = state.input.charCodeAt(++state.position); while (ch !== 0) { skipSeparationSpace(state, true, nodeIndent); ch = state.input.charCodeAt(state.position); if (ch === terminator) { state.position++; state.tag = _tag; state.anchor = _anchor; state.kind = isMapping ? 'mapping' : 'sequence'; state.result = _result; return true; } else if (!readNext) { throwError(state, 'missed comma between flow collection entries'); } keyTag = keyNode = valueNode = null; isPair = isExplicitPair = false; if (ch === 0x3F/* ? */) { following = state.input.charCodeAt(state.position + 1); if (is_WS_OR_EOL(following)) { isPair = isExplicitPair = true; state.position++; skipSeparationSpace(state, true, nodeIndent); } } _line = state.line; composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); keyTag = state.tag; keyNode = state.result; skipSeparationSpace(state, true, nodeIndent); ch = state.input.charCodeAt(state.position); if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { isPair = true; ch = state.input.charCodeAt(++state.position); skipSeparationSpace(state, true, nodeIndent); composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); valueNode = state.result; } if (isMapping) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode); } else if (isPair) { _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode)); } else { _result.push(keyNode); } skipSeparationSpace(state, true, nodeIndent); ch = state.input.charCodeAt(state.position); if (ch === 0x2C/* , */) { readNext = true; ch = state.input.charCodeAt(++state.position); } else { readNext = false; } } throwError(state, 'unexpected end of the stream within a flow collection'); } function readBlockScalar(state, nodeIndent) { var captureStart, folding, chomping = CHOMPING_CLIP, didReadContent = false, detectedIndent = false, textIndent = nodeIndent, emptyLines = 0, atMoreIndented = false, tmp, ch; ch = state.input.charCodeAt(state.position); if (ch === 0x7C/* | */) { folding = false; } else if (ch === 0x3E/* > */) { folding = true; } else { return false; } state.kind = 'scalar'; state.result = ''; while (ch !== 0) { ch = state.input.charCodeAt(++state.position); if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { if (CHOMPING_CLIP === chomping) { chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; } else { throwError(state, 'repeat of a chomping mode identifier'); } } else if ((tmp = fromDecimalCode(ch)) >= 0) { if (tmp === 0) { throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); } else if (!detectedIndent) { textIndent = nodeIndent + tmp - 1; detectedIndent = true; } else { throwError(state, 'repeat of an indentation width identifier'); } } else { break; } } if (is_WHITE_SPACE(ch)) { do { ch = state.input.charCodeAt(++state.position); } while (is_WHITE_SPACE(ch)); if (ch === 0x23/* # */) { do { ch = state.input.charCodeAt(++state.position); } while (!is_EOL(ch) && (ch !== 0)); } } while (ch !== 0) { readLineBreak(state); state.lineIndent = 0; ch = state.input.charCodeAt(state.position); while ((!detectedIndent || state.lineIndent < textIndent) && (ch === 0x20/* Space */)) { state.lineIndent++; ch = state.input.charCodeAt(++state.position); } if (!detectedIndent && state.lineIndent > textIndent) { textIndent = state.lineIndent; } if (is_EOL(ch)) { emptyLines++; continue; } // End of the scalar. if (state.lineIndent < textIndent) { // Perform the chomping. if (chomping === CHOMPING_KEEP) { state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); } else if (chomping === CHOMPING_CLIP) { if (didReadContent) { // i.e. only if the scalar is not empty. state.result += '\n'; } } // Break this `while` cycle and go to the funciton's epilogue. break; } // Folded style: use fancy rules to handle line breaks. if (folding) { // Lines starting with white space characters (more-indented lines) are not folded. if (is_WHITE_SPACE(ch)) { atMoreIndented = true; // except for the first content line (cf. Example 8.1) state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); // End of more-indented block. } else if (atMoreIndented) { atMoreIndented = false; state.result += common.repeat('\n', emptyLines + 1); // Just one line break - perceive as the same line. } else if (emptyLines === 0) { if (didReadContent) { // i.e. only if we have already read some scalar content. state.result += ' '; } // Several line breaks - perceive as different lines. } else { state.result += common.repeat('\n', emptyLines); } // Literal style: just add exact number of line breaks between content lines. } else { // Keep all line breaks except the header line break. state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); } didReadContent = true; detectedIndent = true; emptyLines = 0; captureStart = state.position; while (!is_EOL(ch) && (ch !== 0)) { ch = state.input.charCodeAt(++state.position); } captureSegment(state, captureStart, state.position, false); } return true; } function readBlockSequence(state, nodeIndent) { var _line, _tag = state.tag, _anchor = state.anchor, _result = [], following, detected = false, ch; if (state.anchor !== null) { state.anchorMap[state.anchor] = _result; } ch = state.input.charCodeAt(state.position); while (ch !== 0) { if (ch !== 0x2D/* - */) { break; } following = state.input.charCodeAt(state.position + 1); if (!is_WS_OR_EOL(following)) { break; } detected = true; state.position++; if (skipSeparationSpace(state, true, -1)) { if (state.lineIndent <= nodeIndent) { _result.push(null); ch = state.input.charCodeAt(state.position); continue; } } _line = state.line; composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); _result.push(state.result); skipSeparationSpace(state, true, -1); ch = state.input.charCodeAt(state.position); if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { throwError(state, 'bad indentation of a sequence entry'); } else if (state.lineIndent < nodeIndent) { break; } } if (detected) { state.tag = _tag; state.anchor = _anchor; state.kind = 'sequence'; state.result = _result; return true; } return false; } function readBlockMapping(state, nodeIndent, flowIndent) { var following, allowCompact, _line, _tag = state.tag, _anchor = state.anchor, _result = {}, overridableKeys = {}, keyTag = null, keyNode = null, valueNode = null, atExplicitKey = false, detected = false, ch; if (state.anchor !== null) { state.anchorMap[state.anchor] = _result; } ch = state.input.charCodeAt(state.position); while (ch !== 0) { following = state.input.charCodeAt(state.position + 1); _line = state.line; // Save the current line. // // Explicit notation case. There are two separate blocks: // first for the key (denoted by "?") and second for the value (denoted by ":") // if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { if (ch === 0x3F/* ? */) { if (atExplicitKey) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); keyTag = keyNode = valueNode = null; } detected = true; atExplicitKey = true; allowCompact = true; } else if (atExplicitKey) { // i.e. 0x3A/* : */ === character after the explicit key. atExplicitKey = false; allowCompact = true; } else { throwError(state, 'incomplete explicit mapping pair; a key node is missed'); } state.position += 1; ch = following; // // Implicit notation case. Flow-style node as the key first, then ":", and the value. // } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { if (state.line === _line) { ch = state.input.charCodeAt(state.position); while (is_WHITE_SPACE(ch)) { ch = state.input.charCodeAt(++state.position); } if (ch === 0x3A/* : */) { ch = state.input.charCodeAt(++state.position); if (!is_WS_OR_EOL(ch)) { throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); } if (atExplicitKey) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); keyTag = keyNode = valueNode = null; } detected = true; atExplicitKey = false; allowCompact = false; keyTag = state.tag; keyNode = state.result; } else if (detected) { throwError(state, 'can not read an implicit mapping pair; a colon is missed'); } else { state.tag = _tag; state.anchor = _anchor; return true; // Keep the result of `composeNode`. } } else if (detected) { throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); } else { state.tag = _tag; state.anchor = _anchor; return true; // Keep the result of `composeNode`. } } else { break; // Reading is done. Go to the epilogue. } // // Common reading code for both explicit and implicit notations. // if (state.line === _line || state.lineIndent > nodeIndent) { if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { if (atExplicitKey) { keyNode = state.result; } else { valueNode = state.result; } } if (!atExplicitKey) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode); keyTag = keyNode = valueNode = null; } skipSeparationSpace(state, true, -1); ch = state.input.charCodeAt(state.position); } if (state.lineIndent > nodeIndent && (ch !== 0)) { throwError(state, 'bad indentation of a mapping entry'); } else if (state.lineIndent < nodeIndent) { break; } } // // Epilogue. // // Special case: last mapping's node contains only the key in explicit notation. if (atExplicitKey) { storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); } // Expose the resulting mapping. if (detected) { state.tag = _tag; state.anchor = _anchor; state.kind = 'mapping'; state.result = _result; } return detected; } function readTagProperty(state) { var _position, isVerbatim = false, isNamed = false, tagHandle, tagName, ch; ch = state.input.charCodeAt(state.position); if (ch !== 0x21/* ! */) return false; if (state.tag !== null) { throwError(state, 'duplication of a tag property'); } ch = state.input.charCodeAt(++state.position); if (ch === 0x3C/* < */) { isVerbatim = true; ch = state.input.charCodeAt(++state.position); } else if (ch === 0x21/* ! */) { isNamed = true; tagHandle = '!!'; ch = state.input.charCodeAt(++state.position); } else { tagHandle = '!'; } _position = state.position; if (isVerbatim) { do { ch = state.input.charCodeAt(++state.position); } while (ch !== 0 && ch !== 0x3E/* > */); if (state.position < state.length) { tagName = state.input.slice(_position, state.position); ch = state.input.charCodeAt(++state.position); } else { throwError(state, 'unexpected end of the stream within a verbatim tag'); } } else { while (ch !== 0 && !is_WS_OR_EOL(ch)) { if (ch === 0x21/* ! */) { if (!isNamed) { tagHandle = state.input.slice(_position - 1, state.position + 1); if (!PATTERN_TAG_HANDLE.test(tagHandle)) { throwError(state, 'named tag handle cannot contain such characters'); } isNamed = true; _position = state.position + 1; } else { throwError(state, 'tag suffix cannot contain exclamation marks'); } } ch = state.input.charCodeAt(++state.position); } tagName = state.input.slice(_position, state.position); if (PATTERN_FLOW_INDICATORS.test(tagName)) { throwError(state, 'tag suffix cannot contain flow indicator characters'); } } if (tagName && !PATTERN_TAG_URI.test(tagName)) { throwError(state, 'tag name cannot contain such characters: ' + tagName); } if (isVerbatim) { state.tag = tagName; } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { state.tag = state.tagMap[tagHandle] + tagName; } else if (tagHandle === '!') { state.tag = '!' + tagName; } else if (tagHandle === '!!') { state.tag = 'tag:yaml.org,2002:' + tagName; } else { throwError(state, 'undeclared tag handle "' + tagHandle + '"'); } return true; } function readAnchorProperty(state) { var _position, ch; ch = state.input.charCodeAt(state.position); if (ch !== 0x26/* & */) return false; if (state.anchor !== null) { throwError(state, 'duplication of an anchor property'); } ch = state.input.charCodeAt(++state.position); _position = state.position; while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { ch = state.input.charCodeAt(++state.position); } if (state.position === _position) { throwError(state, 'name of an anchor node must contain at least one character'); } state.anchor = state.input.slice(_position, state.position); return true; } function readAlias(state) { var _position, alias, ch; ch = state.input.charCodeAt(state.position); if (ch !== 0x2A/* * */) return false; ch = state.input.charCodeAt(++state.position); _position = state.position; while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { ch = state.input.charCodeAt(++state.position); } if (state.position === _position) { throwError(state, 'name of an alias node must contain at least one character'); } alias = state.input.slice(_position, state.position); if (!state.anchorMap.hasOwnProperty(alias)) { throwError(state, 'unidentified alias "' + alias + '"'); } state.result = state.anchorMap[alias]; skipSeparationSpace(state, true, -1); return true; } function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { var allowBlockStyles, allowBlockScalars, allowBlockCollections, indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) { indentStatus = 1; } else if (state.lineIndent === parentIndent) { indentStatus = 0; } else if (state.lineIndent < parentIndent) { indentStatus = -1; } } } if (indentStatus === 1) { while (readTagProperty(state) || readAnchorProperty(state)) { if (skipSeparationSpace(state, true, -1)) { atNewLine = true; allowBlockCollections = allowBlockStyles; if (state.lineIndent > parentIndent) { indentStatus = 1; } else if (state.lineIndent === parentIndent) { indentStatus = 0; } else if (state.lineIndent < parentIndent) { indentStatus = -1; } } else { allowBlockCollections = false; } } } if (allowBlockCollections) { allowBlockCollections = atNewLine || allowCompact; } if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { flowIndent = parentIndent; } else { flowIndent = parentIndent + 1; } blockIndent = state.position - state.lineStart; if (indentStatus === 1) { if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) { hasContent = true; } else { if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) { hasContent = true; } else if (readAlias(state)) { hasContent = true; if (state.tag !== null || state.anchor !== null) { throwError(state, 'alias node should not have any properties'); } } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { hasContent = true; if (state.tag === null) { state.tag = '?'; } } if (state.anchor !== null) { state.anchorMap[state.anchor] = state.result; } } } else if (indentStatus === 0) { // Special case: block sequences are allowed to have same indentation level as the parent. // http://www.yaml.org/spec/1.2/spec.html#id2799784 hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); } } if (state.tag !== null && state.tag !== '!') { if (state.tag === '?') { for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { type = state.implicitTypes[typeIndex]; // Implicit resolving is not allowed for non-scalar types, and '?' // non-specific tag is only assigned to plain scalars. So, it isn't // needed to check for 'kind' conformity. if (type.resolve(state.result)) { // `state.result` updated in resolver if matched state.result = type.construct(state.result); state.tag = type.tag; if (state.anchor !== null) { state.anchorMap[state.anchor] = state.result; } break; } } } else if (_hasOwnProperty.call(state.typeMap, state.tag)) { type = state.typeMap[state.tag]; if (state.result !== null && type.kind !== state.kind) { throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); } if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); } else { state.result = type.construct(state.result); if (state.anchor !== null) { state.anchorMap[state.anchor] = state.result; } } } else { throwError(state, 'unknown tag !<' + state.tag + '>'); } } if (state.listener !== null) { state.listener('close', state); } return state.tag !== null || state.anchor !== null || hasContent; } function readDocument(state) { var documentStart = state.position, _position, directiveName, directiveArgs, hasDirectives = false, ch; state.version = null; state.checkLineBreaks = state.legacy; state.tagMap = {}; state.anchorMap = {}; while ((ch = state.input.charCodeAt(state.position)) !== 0) { skipSeparationSpace(state, true, -1); ch = state.input.charCodeAt(state.position); if (state.lineIndent > 0 || ch !== 0x25/* % */) { break; } hasDirectives = true; ch = state.input.charCodeAt(++state.position); _position = state.position; while (ch !== 0 && !is_WS_OR_EOL(ch)) { ch = state.input.charCodeAt(++state.position); } directiveName = state.input.slice(_position, state.position); directiveArgs = []; if (directiveName.length < 1) { throwError(state, 'directive name must not be less than one character in length'); } while (ch !== 0) { while (is_WHITE_SPACE(ch)) { ch = state.input.charCodeAt(++state.position); } if (ch === 0x23/* # */) { do { ch = state.input.charCodeAt(++state.position); } while (ch !== 0 && !is_EOL(ch)); break; } if (is_EOL(ch)) break; _position = state.position; while (ch !== 0 && !is_WS_OR_EOL(ch)) { ch = state.input.charCodeAt(++state.position); } directiveArgs.push(state.input.slice(_position, state.position)); } if (ch !== 0) readLineBreak(state); if (_hasOwnProperty.call(directiveHandlers, directiveName)) { directiveHandlers[directiveName](state, directiveName, directiveArgs); } else { throwWarning(state, 'unknown document directive "' + directiveName + '"'); } } skipSeparationSpace(state, true, -1); if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 0x2D/* - */ && state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { state.position += 3; skipSeparationSpace(state, true, -1); } else if (hasDirectives) { throwError(state, 'directives end mark is expected'); } composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); skipSeparationSpace(state, true, -1); if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { throwWarning(state, 'non-ASCII line breaks are interpreted as content'); } state.documents.push(state.result); if (state.position === state.lineStart && testDocumentSeparator(state)) { if (state.input.charCodeAt(state.position) === 0x2E/* . */) { state.position += 3; skipSeparationSpace(state, true, -1); } return; } if (state.position < (state.length - 1)) { throwError(state, 'end of the stream or a document separator is expected'); } else { return; } } function loadDocuments(input, options) { input = String(input); options = options || {}; if (input.length !== 0) { // Add tailing `\n` if not exists if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { input += '\n'; } // Strip BOM if (input.charCodeAt(0) === 0xFEFF) { input = input.slice(1); } } var state = new State(input, options); // Use 0 as string terminator. That significantly simplifies bounds check. state.input += '\0'; while (state.input.charCodeAt(state.position) === 0x20/* Space */) { state.lineIndent += 1; state.position += 1; } while (state.position < (state.length - 1)) { readDocument(state); } return state.documents; } function loadAll(input, iterator, options) { var documents = loadDocuments(input, options), index, length; for (index = 0, length = documents.length; index < length; index += 1) { iterator(documents[index]); } } function load(input, options) { var documents = loadDocuments(input, options); if (documents.length === 0) { /*eslint-disable no-undefined*/ return undefined; } else if (documents.length === 1) { return documents[0]; } throw new YAMLException('expected a single document in the stream, but found more'); } function safeLoadAll(input, output, options) { loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); } function safeLoad(input, options) { return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); } module.exports.loadAll = loadAll; module.exports.load = load; module.exports.safeLoadAll = safeLoadAll; module.exports.safeLoad = safeLoad; },{"./common":21,"./exception":23,"./mark":25,"./schema/default_full":28,"./schema/default_safe":29}],25:[function(require,module,exports){ 'use strict'; var common = require('./common'); function Mark(name, buffer, position, line, column) { this.name = name; this.buffer = buffer; this.position = position; this.line = line; this.column = column; } Mark.prototype.getSnippet = function getSnippet(indent, maxLength) { var head, start, tail, end, snippet; if (!this.buffer) return null; indent = indent || 4; maxLength = maxLength || 75; head = ''; start = this.position; while (start > 0 && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) { start -= 1; if (this.position - start > (maxLength / 2 - 1)) { head = ' ... '; start += 5; break; } } tail = ''; end = this.position; while (end < this.buffer.length && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(end)) === -1) { end += 1; if (end - this.position > (maxLength / 2 - 1)) { tail = ' ... '; end -= 5; break; } } snippet = this.buffer.slice(start, end); return common.repeat(' ', indent) + head + snippet + tail + '\n' + common.repeat(' ', indent + this.position - start + head.length) + '^'; }; Mark.prototype.toString = function toString(compact) { var snippet, where = ''; if (this.name) { where += 'in "' + this.name + '" '; } where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1); if (!compact) { snippet = this.getSnippet(); if (snippet) { where += ':\n' + snippet; } } return where; }; module.exports = Mark; },{"./common":21}],26:[function(require,module,exports){ 'use strict'; /*eslint-disable max-len*/ var common = require('./common'); var YAMLException = require('./exception'); var Type = require('./type'); function compileList(schema, name, result) { var exclude = []; schema.include.forEach(function (includedSchema) { result = compileList(includedSchema, name, result); }); schema[name].forEach(function (currentType) { result.forEach(function (previousType, previousIndex) { if (previousType.tag === currentType.tag) { exclude.push(previousIndex); } }); result.push(currentType); }); return result.filter(function (type, index) { return exclude.indexOf(index) === -1; }); } function compileMap(/* lists... */) { var result = {}, index, length; function collectType(type) { result[type.tag] = type; } for (index = 0, length = arguments.length; index < length; index += 1) { arguments[index].forEach(collectType); } return result; } function Schema(definition) { this.include = definition.include || []; this.implicit = definition.implicit || []; this.explicit = definition.explicit || []; this.implicit.forEach(function (type) { if (type.loadKind && type.loadKind !== 'scalar') { throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); } }); this.compiledImplicit = compileList(this, 'implicit', []); this.compiledExplicit = compileList(this, 'explicit', []); this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit); } Schema.DEFAULT = null; Schema.create = function createSchema() { var schemas, types; switch (arguments.length) { case 1: schemas = Schema.DEFAULT; types = arguments[0]; break; case 2: schemas = arguments[0]; types = arguments[1]; break; default: throw new YAMLException('Wrong number of arguments for Schema.create function'); } schemas = common.toArray(schemas); types = common.toArray(types); if (!schemas.every(function (schema) { return schema instanceof Schema; })) { throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.'); } if (!types.every(function (type) { return type instanceof Type; })) { throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); } return new Schema({ include: schemas, explicit: types }); }; module.exports = Schema; },{"./common":21,"./exception":23,"./type":32}],27:[function(require,module,exports){ // Standard YAML's Core schema. // http://www.yaml.org/spec/1.2/spec.html#id2804923 // // NOTE: JS-YAML does not support schema-specific tag resolution restrictions. // So, Core schema has no distinctions from JSON schema is JS-YAML. 'use strict'; var Schema = require('../schema'); module.exports = new Schema({ include: [ require('./json') ] }); },{"../schema":26,"./json":31}],28:[function(require,module,exports){ // JS-YAML's default schema for `load` function. // It is not described in the YAML specification. // // This schema is based on JS-YAML's default safe schema and includes // JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function. // // Also this schema is used as default base schema at `Schema.create` function. 'use strict'; var Schema = require('../schema'); module.exports = Schema.DEFAULT = new Schema({ include: [ require('./default_safe') ], explicit: [ require('../type/js/undefined'), require('../type/js/regexp'), require('../type/js/function') ] }); },{"../schema":26,"../type/js/function":37,"../type/js/regexp":38,"../type/js/undefined":39,"./default_safe":29}],29:[function(require,module,exports){ // JS-YAML's default schema for `safeLoad` function. // It is not described in the YAML specification. // // This schema is based on standard YAML's Core schema and includes most of // extra types described at YAML tag repositories. (http://yaml.org/type/) 'use strict'; var Schema = require('../schema'); module.exports = new Schema({ include: [ require('./core') ], implicit: [ require('../type/timestamp'), require('../type/merge') ], explicit: [ require('../type/binary'), require('../type/omap'), require('../type/pairs'), require('../type/set') ] }); },{"../schema":26,"../type/binary":33,"../type/merge":41,"../type/omap":43,"../type/pairs":44,"../type/set":46,"../type/timestamp":48,"./core":27}],30:[function(require,module,exports){ // Standard YAML's Failsafe schema. // http://www.yaml.org/spec/1.2/spec.html#id2802346 'use strict'; var Schema = require('../schema'); module.exports = new Schema({ explicit: [ require('../type/str'), require('../type/seq'), require('../type/map') ] }); },{"../schema":26,"../type/map":40,"../type/seq":45,"../type/str":47}],31:[function(require,module,exports){ // Standard YAML's JSON schema. // http://www.yaml.org/spec/1.2/spec.html#id2803231 // // NOTE: JS-YAML does not support schema-specific tag resolution restrictions. // So, this schema is not such strict as defined in the YAML specification. // It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc. 'use strict'; var Schema = require('../schema'); module.exports = new Schema({ include: [ require('./failsafe') ], implicit: [ require('../type/null'), require('../type/bool'), require('../type/int'), require('../type/float') ] }); },{"../schema":26,"../type/bool":34,"../type/float":35,"../type/int":36,"../type/null":42,"./failsafe":30}],32:[function(require,module,exports){ 'use strict'; var YAMLException = require('./exception'); var TYPE_CONSTRUCTOR_OPTIONS = [ 'kind', 'resolve', 'construct', 'instanceOf', 'predicate', 'represent', 'defaultStyle', 'styleAliases' ]; var YAML_NODE_KINDS = [ 'scalar', 'sequence', 'mapping' ]; function compileStyleAliases(map) { var result = {}; if (map !== null) { Object.keys(map).forEach(function (style) { map[style].forEach(function (alias) { result[String(alias)] = style; }); }); } return result; } function Type(tag, options) { options = options || {}; Object.keys(options).forEach(function (name) { if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); } }); // TODO: Add tag format check. this.tag = tag; this.kind = options['kind'] || null; this.resolve = options['resolve'] || function () { return true; }; this.construct = options['construct'] || function (data) { return data; }; this.instanceOf = options['instanceOf'] || null; this.predicate = options['predicate'] || null; this.represent = options['represent'] || null; this.defaultStyle = options['defaultStyle'] || null; this.styleAliases = compileStyleAliases(options['styleAliases'] || null); if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); } } module.exports = Type; },{"./exception":23}],33:[function(require,module,exports){ 'use strict'; /*eslint-disable no-bitwise*/ var NodeBuffer; try { // A trick for browserified version, to not include `Buffer` shim var _require = require; NodeBuffer = _require('buffer').Buffer; } catch (__) {} var Type = require('../type'); // [ 64, 65, 66 ] -> [ padding, CR, LF ] var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; function resolveYamlBinary(data) { if (data === null) return false; var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; // Convert one by one. for (idx = 0; idx < max; idx++) { code = map.indexOf(data.charAt(idx)); // Skip CR/LF if (code > 64) continue; // Fail on illegal characters if (code < 0) return false; bitlen += 6; } // If there are any bits left, source was corrupted return (bitlen % 8) === 0; } function constructYamlBinary(data) { var idx, tailbits, input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan max = input.length, map = BASE64_MAP, bits = 0, result = []; // Collect by 6*4 bits (3 bytes) for (idx = 0; idx < max; idx++) { if ((idx % 4 === 0) && idx) { result.push((bits >> 16) & 0xFF); result.push((bits >> 8) & 0xFF); result.push(bits & 0xFF); } bits = (bits << 6) | map.indexOf(input.charAt(idx)); } // Dump tail tailbits = (max % 4) * 6; if (tailbits === 0) { result.push((bits >> 16) & 0xFF); result.push((bits >> 8) & 0xFF); result.push(bits & 0xFF); } else if (tailbits === 18) { result.push((bits >> 10) & 0xFF); result.push((bits >> 2) & 0xFF); } else if (tailbits === 12) { result.push((bits >> 4) & 0xFF); } // Wrap into Buffer for NodeJS and leave Array for browser if (NodeBuffer) return new NodeBuffer(result); return result; } function representYamlBinary(object /*, style*/) { var result = '', bits = 0, idx, tail, max = object.length, map = BASE64_MAP; // Convert every three bytes to 4 ASCII characters. for (idx = 0; idx < max; idx++) { if ((idx % 3 === 0) && idx) { result += map[(bits >> 18) & 0x3F]; result += map[(bits >> 12) & 0x3F]; result += map[(bits >> 6) & 0x3F]; result += map[bits & 0x3F]; } bits = (bits << 8) + object[idx]; } // Dump tail tail = max % 3; if (tail === 0) { result += map[(bits >> 18) & 0x3F]; result += map[(bits >> 12) & 0x3F]; result += map[(bits >> 6) & 0x3F]; result += map[bits & 0x3F]; } else if (tail === 2) { result += map[(bits >> 10) & 0x3F]; result += map[(bits >> 4) & 0x3F]; result += map[(bits << 2) & 0x3F]; result += map[64]; } else if (tail === 1) { result += map[(bits >> 2) & 0x3F]; result += map[(bits << 4) & 0x3F]; result += map[64]; result += map[64]; } return result; } function isBinary(object) { return NodeBuffer && NodeBuffer.isBuffer(object); } module.exports = new Type('tag:yaml.org,2002:binary', { kind: 'scalar', resolve: resolveYamlBinary, construct: constructYamlBinary, predicate: isBinary, represent: representYamlBinary }); },{"../type":32}],34:[function(require,module,exports){ 'use strict'; var Type = require('../type'); function resolveYamlBoolean(data) { if (data === null) return false; var max = data.length; return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); } function constructYamlBoolean(data) { return data === 'true' || data === 'True' || data === 'TRUE'; } function isBoolean(object) { return Object.prototype.toString.call(object) === '[object Boolean]'; } module.exports = new Type('tag:yaml.org,2002:bool', { kind: 'scalar', resolve: resolveYamlBoolean, construct: constructYamlBoolean, predicate: isBoolean, represent: { lowercase: function (object) { return object ? 'true' : 'false'; }, uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, camelcase: function (object) { return object ? 'True' : 'False'; } }, defaultStyle: 'lowercase' }); },{"../type":32}],35:[function(require,module,exports){ 'use strict'; var common = require('../common'); var Type = require('../type'); var YAML_FLOAT_PATTERN = new RegExp( '^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?' + '|\\.[0-9_]+(?:[eE][-+][0-9]+)?' + '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' + '|[-+]?\\.(?:inf|Inf|INF)' + '|\\.(?:nan|NaN|NAN))$'); function resolveYamlFloat(data) { if (data === null) return false; if (!YAML_FLOAT_PATTERN.test(data)) return false; return true; } function constructYamlFloat(data) { var value, sign, base, digits; value = data.replace(/_/g, '').toLowerCase(); sign = value[0] === '-' ? -1 : 1; digits = []; if ('+-'.indexOf(value[0]) >= 0) { value = value.slice(1); } if (value === '.inf') { return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; } else if (value === '.nan') { return NaN; } else if (value.indexOf(':') >= 0) { value.split(':').forEach(function (v) { digits.unshift(parseFloat(v, 10)); }); value = 0.0; base = 1; digits.forEach(function (d) { value += d * base; base *= 60; }); return sign * value; } return sign * parseFloat(value, 10); } var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; function representYamlFloat(object, style) { var res; if (isNaN(object)) { switch (style) { case 'lowercase': return '.nan'; case 'uppercase': return '.NAN'; case 'camelcase': return '.NaN'; } } else if (Number.POSITIVE_INFINITY === object) { switch (style) { case 'lowercase': return '.inf'; case 'uppercase': return '.INF'; case 'camelcase': return '.Inf'; } } else if (Number.NEGATIVE_INFINITY === object) { switch (style) { case 'lowercase': return '-.inf'; case 'uppercase': return '-.INF'; case 'camelcase': return '-.Inf'; } } else if (common.isNegativeZero(object)) { return '-0.0'; } res = object.toString(10); // JS stringifier can build scientific format without dots: 5e-100, // while YAML requres dot: 5.e-100. Fix it with simple hack return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; } function isFloat(object) { return (Object.prototype.toString.call(object) === '[object Number]') && (object % 1 !== 0 || common.isNegativeZero(object)); } module.exports = new Type('tag:yaml.org,2002:float', { kind: 'scalar', resolve: resolveYamlFloat, construct: constructYamlFloat, predicate: isFloat, represent: representYamlFloat, defaultStyle: 'lowercase' }); },{"../common":21,"../type":32}],36:[function(require,module,exports){ 'use strict'; var common = require('../common'); var Type = require('../type'); function isHexCode(c) { return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || ((0x61/* a */ <= c) && (c <= 0x66/* f */)); } function isOctCode(c) { return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); } function isDecCode(c) { return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); } function resolveYamlInteger(data) { if (data === null) return false; var max = data.length, index = 0, hasDigits = false, ch; if (!max) return false; ch = data[index]; // sign if (ch === '-' || ch === '+') { ch = data[++index]; } if (ch === '0') { // 0 if (index + 1 === max) return true; ch = data[++index]; // base 2, base 8, base 16 if (ch === 'b') { // base 2 index++; for (; index < max; index++) { ch = data[index]; if (ch === '_') continue; if (ch !== '0' && ch !== '1') return false; hasDigits = true; } return hasDigits; } if (ch === 'x') { // base 16 index++; for (; index < max; index++) { ch = data[index]; if (ch === '_') continue; if (!isHexCode(data.charCodeAt(index))) return false; hasDigits = true; } return hasDigits; } // base 8 for (; index < max; index++) { ch = data[index]; if (ch === '_') continue; if (!isOctCode(data.charCodeAt(index))) return false; hasDigits = true; } return hasDigits; } // base 10 (except 0) or base 60 for (; index < max; index++) { ch = data[index]; if (ch === '_') continue; if (ch === ':') break; if (!isDecCode(data.charCodeAt(index))) { return false; } hasDigits = true; } if (!hasDigits) return false; // if !base60 - done; if (ch !== ':') return true; // base60 almost not used, no needs to optimize return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); } function constructYamlInteger(data) { var value = data, sign = 1, ch, base, digits = []; if (value.indexOf('_') !== -1) { value = value.replace(/_/g, ''); } ch = value[0]; if (ch === '-' || ch === '+') { if (ch === '-') sign = -1; value = value.slice(1); ch = value[0]; } if (value === '0') return 0; if (ch === '0') { if (value[1] === 'b') return sign * parseInt(value.slice(2), 2); if (value[1] === 'x') return sign * parseInt(value, 16); return sign * parseInt(value, 8); } if (value.indexOf(':') !== -1) { value.split(':').forEach(function (v) { digits.unshift(parseInt(v, 10)); }); value = 0; base = 1; digits.forEach(function (d) { value += (d * base); base *= 60; }); return sign * value; } return sign * parseInt(value, 10); } function isInteger(object) { return (Object.prototype.toString.call(object)) === '[object Number]' && (object % 1 === 0 && !common.isNegativeZero(object)); } module.exports = new Type('tag:yaml.org,2002:int', { kind: 'scalar', resolve: resolveYamlInteger, construct: constructYamlInteger, predicate: isInteger, represent: { binary: function (object) { return '0b' + object.toString(2); }, octal: function (object) { return '0' + object.toString(8); }, decimal: function (object) { return object.toString(10); }, hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); } }, defaultStyle: 'decimal', styleAliases: { binary: [ 2, 'bin' ], octal: [ 8, 'oct' ], decimal: [ 10, 'dec' ], hexadecimal: [ 16, 'hex' ] } }); },{"../common":21,"../type":32}],37:[function(require,module,exports){ 'use strict'; var esprima; // Browserified version does not have esprima // // 1. For node.js just require module as deps // 2. For browser try to require mudule via external AMD system. // If not found - try to fallback to window.esprima. If not // found too - then fail to parse. // try { // workaround to exclude package from browserify list. var _require = require; esprima = _require('esprima'); } catch (_) { /*global window */ if (typeof window !== 'undefined') esprima = window.esprima; } var Type = require('../../type'); function resolveJavascriptFunction(data) { if (data === null) return false; try { var source = '(' + data + ')', ast = esprima.parse(source, { range: true }); if (ast.type !== 'Program' || ast.body.length !== 1 || ast.body[0].type !== 'ExpressionStatement' || ast.body[0].expression.type !== 'FunctionExpression') { return false; } return true; } catch (err) { return false; } } function constructJavascriptFunction(data) { /*jslint evil:true*/ var source = '(' + data + ')', ast = esprima.parse(source, { range: true }), params = [], body; if (ast.type !== 'Program' || ast.body.length !== 1 || ast.body[0].type !== 'ExpressionStatement' || ast.body[0].expression.type !== 'FunctionExpression') { throw new Error('Failed to resolve function'); } ast.body[0].expression.params.forEach(function (param) { params.push(param.name); }); body = ast.body[0].expression.body.range; // Esprima's ranges include the first '{' and the last '}' characters on // function expressions. So cut them out. /*eslint-disable no-new-func*/ return new Function(params, source.slice(body[0] + 1, body[1] - 1)); } function representJavascriptFunction(object /*, style*/) { return object.toString(); } function isFunction(object) { return Object.prototype.toString.call(object) === '[object Function]'; } module.exports = new Type('tag:yaml.org,2002:js/function', { kind: 'scalar', resolve: resolveJavascriptFunction, construct: constructJavascriptFunction, predicate: isFunction, represent: representJavascriptFunction }); },{"../../type":32}],38:[function(require,module,exports){ 'use strict'; var Type = require('../../type'); function resolveJavascriptRegExp(data) { if (data === null) return false; if (data.length === 0) return false; var regexp = data, tail = /\/([gim]*)$/.exec(data), modifiers = ''; // if regexp starts with '/' it can have modifiers and must be properly closed // `/foo/gim` - modifiers tail can be maximum 3 chars if (regexp[0] === '/') { if (tail) modifiers = tail[1]; if (modifiers.length > 3) return false; // if expression starts with /, is should be properly terminated if (regexp[regexp.length - modifiers.length - 1] !== '/') return false; } return true; } function constructJavascriptRegExp(data) { var regexp = data, tail = /\/([gim]*)$/.exec(data), modifiers = ''; // `/foo/gim` - tail can be maximum 4 chars if (regexp[0] === '/') { if (tail) modifiers = tail[1]; regexp = regexp.slice(1, regexp.length - modifiers.length - 1); } return new RegExp(regexp, modifiers); } function representJavascriptRegExp(object /*, style*/) { var result = '/' + object.source + '/'; if (object.global) result += 'g'; if (object.multiline) result += 'm'; if (object.ignoreCase) result += 'i'; return result; } function isRegExp(object) { return Object.prototype.toString.call(object) === '[object RegExp]'; } module.exports = new Type('tag:yaml.org,2002:js/regexp', { kind: 'scalar', resolve: resolveJavascriptRegExp, construct: constructJavascriptRegExp, predicate: isRegExp, represent: representJavascriptRegExp }); },{"../../type":32}],39:[function(require,module,exports){ 'use strict'; var Type = require('../../type'); function resolveJavascriptUndefined() { return true; } function constructJavascriptUndefined() { /*eslint-disable no-undefined*/ return undefined; } function representJavascriptUndefined() { return ''; } function isUndefined(object) { return typeof object === 'undefined'; } module.exports = new Type('tag:yaml.org,2002:js/undefined', { kind: 'scalar', resolve: resolveJavascriptUndefined, construct: constructJavascriptUndefined, predicate: isUndefined, represent: representJavascriptUndefined }); },{"../../type":32}],40:[function(require,module,exports){ 'use strict'; var Type = require('../type'); module.exports = new Type('tag:yaml.org,2002:map', { kind: 'mapping', construct: function (data) { return data !== null ? data : {}; } }); },{"../type":32}],41:[function(require,module,exports){ 'use strict'; var Type = require('../type'); function resolveYamlMerge(data) { return data === '<<' || data === null; } module.exports = new Type('tag:yaml.org,2002:merge', { kind: 'scalar', resolve: resolveYamlMerge }); },{"../type":32}],42:[function(require,module,exports){ 'use strict'; var Type = require('../type'); function resolveYamlNull(data) { if (data === null) return true; var max = data.length; return (max === 1 && data === '~') || (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); } function constructYamlNull() { return null; } function isNull(object) { return object === null; } module.exports = new Type('tag:yaml.org,2002:null', { kind: 'scalar', resolve: resolveYamlNull, construct: constructYamlNull, predicate: isNull, represent: { canonical: function () { return '~'; }, lowercase: function () { return 'null'; }, uppercase: function () { return 'NULL'; }, camelcase: function () { return 'Null'; } }, defaultStyle: 'lowercase' }); },{"../type":32}],43:[function(require,module,exports){ 'use strict'; var Type = require('../type'); var _hasOwnProperty = Object.prototype.hasOwnProperty; var _toString = Object.prototype.toString; function resolveYamlOmap(data) { if (data === null) return true; var objectKeys = [], index, length, pair, pairKey, pairHasKey, object = data; for (index = 0, length = object.length; index < length; index += 1) { pair = object[index]; pairHasKey = false; if (_toString.call(pair) !== '[object Object]') return false; for (pairKey in pair) { if (_hasOwnProperty.call(pair, pairKey)) { if (!pairHasKey) pairHasKey = true; else return false; } } if (!pairHasKey) return false; if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); else return false; } return true; } function constructYamlOmap(data) { return data !== null ? data : []; } module.exports = new Type('tag:yaml.org,2002:omap', { kind: 'sequence', resolve: resolveYamlOmap, construct: constructYamlOmap }); },{"../type":32}],44:[function(require,module,exports){ 'use strict'; var Type = require('../type'); var _toString = Object.prototype.toString; function resolveYamlPairs(data) { if (data === null) return true; var index, length, pair, keys, result, object = data; result = new Array(object.length); for (index = 0, length = object.length; index < length; index += 1) { pair = object[index]; if (_toString.call(pair) !== '[object Object]') return false; keys = Object.keys(pair); if (keys.length !== 1) return false; result[index] = [ keys[0], pair[keys[0]] ]; } return true; } function constructYamlPairs(data) { if (data === null) return []; var index, length, pair, keys, result, object = data; result = new Array(object.length); for (index = 0, length = object.length; index < length; index += 1) { pair = object[index]; keys = Object.keys(pair); result[index] = [ keys[0], pair[keys[0]] ]; } return result; } module.exports = new Type('tag:yaml.org,2002:pairs', { kind: 'sequence', resolve: resolveYamlPairs, construct: constructYamlPairs }); },{"../type":32}],45:[function(require,module,exports){ 'use strict'; var Type = require('../type'); module.exports = new Type('tag:yaml.org,2002:seq', { kind: 'sequence', construct: function (data) { return data !== null ? data : []; } }); },{"../type":32}],46:[function(require,module,exports){ 'use strict'; var Type = require('../type'); var _hasOwnProperty = Object.prototype.hasOwnProperty; function resolveYamlSet(data) { if (data === null) return true; var key, object = data; for (key in object) { if (_hasOwnProperty.call(object, key)) { if (object[key] !== null) return false; } } return true; } function constructYamlSet(data) { return data !== null ? data : {}; } module.exports = new Type('tag:yaml.org,2002:set', { kind: 'mapping', resolve: resolveYamlSet, construct: constructYamlSet }); },{"../type":32}],47:[function(require,module,exports){ 'use strict'; var Type = require('../type'); module.exports = new Type('tag:yaml.org,2002:str', { kind: 'scalar', construct: function (data) { return data !== null ? data : ''; } }); },{"../type":32}],48:[function(require,module,exports){ 'use strict'; var Type = require('../type'); var YAML_DATE_REGEXP = new RegExp( '^([0-9][0-9][0-9][0-9])' + // [1] year '-([0-9][0-9])' + // [2] month '-([0-9][0-9])$'); // [3] day var YAML_TIMESTAMP_REGEXP = new RegExp( '^([0-9][0-9][0-9][0-9])' + // [1] year '-([0-9][0-9]?)' + // [2] month '-([0-9][0-9]?)' + // [3] day '(?:[Tt]|[ \\t]+)' + // ... '([0-9][0-9]?)' + // [4] hour ':([0-9][0-9])' + // [5] minute ':([0-9][0-9])' + // [6] second '(?:\\.([0-9]*))?' + // [7] fraction '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour '(?::([0-9][0-9]))?))?$'); // [11] tz_minute function resolveYamlTimestamp(data) { if (data === null) return false; if (YAML_DATE_REGEXP.exec(data) !== null) return true; if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; return false; } function constructYamlTimestamp(data) { var match, year, month, day, hour, minute, second, fraction = 0, delta = null, tz_hour, tz_minute, date; match = YAML_DATE_REGEXP.exec(data); if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); if (match === null) throw new Error('Date resolve error'); // match: [1] year [2] month [3] day year = +(match[1]); month = +(match[2]) - 1; // JS month starts with 0 day = +(match[3]); if (!match[4]) { // no hour return new Date(Date.UTC(year, month, day)); } // match: [4] hour [5] minute [6] second [7] fraction hour = +(match[4]); minute = +(match[5]); second = +(match[6]); if (match[7]) { fraction = match[7].slice(0, 3); while (fraction.length < 3) { // milli-seconds fraction += '0'; } fraction = +fraction; } // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute if (match[9]) { tz_hour = +(match[10]); tz_minute = +(match[11] || 0); delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds if (match[9] === '-') delta = -delta; } date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); if (delta) date.setTime(date.getTime() - delta); return date; } function representYamlTimestamp(object /*, style*/) { return object.toISOString(); } module.exports = new Type('tag:yaml.org,2002:timestamp', { kind: 'scalar', resolve: resolveYamlTimestamp, construct: constructYamlTimestamp, instanceOf: Date, represent: representYamlTimestamp }); },{"../type":32}],49:[function(require,module,exports){ var baseIndexOf = require('../internal/baseIndexOf'), binaryIndex = require('../internal/binaryIndex'); /* Native method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** * Gets the index at which the first occurrence of `value` is found in `array` * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) * for equality comparisons. If `fromIndex` is negative, it's used as the offset * from the end of `array`. If `array` is sorted providing `true` for `fromIndex` * performs a faster binary search. * * @static * @memberOf _ * @category Array * @param {Array} array The array to search. * @param {*} value The value to search for. * @param {boolean|number} [fromIndex=0] The index to search from or `true` * to perform a binary search on a sorted array. * @returns {number} Returns the index of the matched value, else `-1`. * @example * * _.indexOf([1, 2, 1, 2], 2); * // => 1 * * // using `fromIndex` * _.indexOf([1, 2, 1, 2], 2, 2); * // => 3 * * // performing a binary search * _.indexOf([1, 1, 2, 2], 2, true); * // => 2 */ function indexOf(array, value, fromIndex) { var length = array ? array.length : 0; if (!length) { return -1; } if (typeof fromIndex == 'number') { fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex; } else if (fromIndex) { var index = binaryIndex(array, value); if (index < length && (value === value ? (value === array[index]) : (array[index] !== array[index]))) { return index; } return -1; } return baseIndexOf(array, value, fromIndex || 0); } module.exports = indexOf; },{"../internal/baseIndexOf":78,"../internal/binaryIndex":92}],50:[function(require,module,exports){ /** * Gets the last element of `array`. * * @static * @memberOf _ * @category Array * @param {Array} array The array to query. * @returns {*} Returns the last element of `array`. * @example * * _.last([1, 2, 3]); * // => 3 */ function last(array) { var length = array ? array.length : 0; return length ? array[length - 1] : undefined; } module.exports = last; },{}],51:[function(require,module,exports){ var LazyWrapper = require('../internal/LazyWrapper'), LodashWrapper = require('../internal/LodashWrapper'), baseLodash = require('../internal/baseLodash'), isArray = require('../lang/isArray'), isObjectLike = require('../internal/isObjectLike'), wrapperClone = require('../internal/wrapperClone'); /** Used for native method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Creates a `lodash` object which wraps `value` to enable implicit chaining. * Methods that operate on and return arrays, collections, and functions can * be chained together. Methods that retrieve a single value or may return a * primitive value will automatically end the chain returning the unwrapped * value. Explicit chaining may be enabled using `_.chain`. The execution of * chained methods is lazy, that is, execution is deferred until `_#value` * is implicitly or explicitly called. * * Lazy evaluation allows several methods to support shortcut fusion. Shortcut * fusion is an optimization strategy which merge iteratee calls; this can help * to avoid the creation of intermediate data structures and greatly reduce the * number of iteratee executions. * * Chaining is supported in custom builds as long as the `_#value` method is * directly or indirectly included in the build. * * In addition to lodash methods, wrappers have `Array` and `String` methods. * * The wrapper `Array` methods are: * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, * `splice`, and `unshift` * * The wrapper `String` methods are: * `replace` and `split` * * The wrapper methods that support shortcut fusion are: * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`, * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`, * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`, * and `where` * * The chainable wrapper methods are: * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`, * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`, * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defaultsDeep`, * `defer`, `delay`, `difference`, `drop`, `dropRight`, `dropRightWhile`, * `dropWhile`, `fill`, `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, * `invoke`, `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, * `matchesProperty`, `memoize`, `merge`, `method`, `methodOf`, `mixin`, * `modArgs`, `negate`, `omit`, `once`, `pairs`, `partial`, `partialRight`, * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`, * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `restParam`, * `reverse`, `set`, `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`, * `sortByOrder`, `splice`, `spread`, `take`, `takeRight`, `takeRightWhile`, * `takeWhile`, `tap`, `throttle`, `thru`, `times`, `toArray`, `toPlainObject`, * `transform`, `union`, `uniq`, `unshift`, `unzip`, `unzipWith`, `values`, * `valuesIn`, `where`, `without`, `wrap`, `xor`, `zip`, `zipObject`, `zipWith` * * The wrapper methods that are **not** chainable by default are: * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clone`, `cloneDeep`, * `deburr`, `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, * `floor`, `get`, `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`, * `inRange`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`, * `isEmpty`, `isEqual`, `isError`, `isFinite` `isFunction`, `isMatch`, * `isNative`, `isNaN`, `isNull`, `isNumber`, `isObject`, `isPlainObject`, * `isRegExp`, `isString`, `isUndefined`, `isTypedArray`, `join`, `kebabCase`, * `last`, `lastIndexOf`, `lt`, `lte`, `max`, `min`, `noConflict`, `noop`, * `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, `random`, `reduce`, * `reduceRight`, `repeat`, `result`, `round`, `runInContext`, `shift`, `size`, * `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, `startCase`, * `startsWith`, `sum`, `template`, `trim`, `trimLeft`, `trimRight`, `trunc`, * `unescape`, `uniqueId`, `value`, and `words` * * The wrapper method `sample` will return a wrapped value when `n` is provided, * otherwise an unwrapped value is returned. * * @name _ * @constructor * @category Chain * @param {*} value The value to wrap in a `lodash` instance. * @returns {Object} Returns the new `lodash` wrapper instance. * @example * * var wrapped = _([1, 2, 3]); * * // returns an unwrapped value * wrapped.reduce(function(total, n) { * return total + n; * }); * // => 6 * * // returns a wrapped value * var squares = wrapped.map(function(n) { * return n * n; * }); * * _.isArray(squares); * // => false * * _.isArray(squares.value()); * // => true */ function lodash(value) { if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { if (value instanceof LodashWrapper) { return value; } if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) { return wrapperClone(value); } } return new LodashWrapper(value); } // Ensure wrappers are instances of `baseLodash`. lodash.prototype = baseLodash.prototype; module.exports = lodash; },{"../internal/LazyWrapper":60,"../internal/LodashWrapper":61,"../internal/baseLodash":82,"../internal/isObjectLike":126,"../internal/wrapperClone":137,"../lang/isArray":140}],52:[function(require,module,exports){ module.exports = require('./forEach'); },{"./forEach":54}],53:[function(require,module,exports){ var baseEach = require('../internal/baseEach'), createFind = require('../internal/createFind'); /** * Iterates over elements of `collection`, returning the first element * `predicate` returns truthy for. The predicate is bound to `thisArg` and * invoked with three arguments: (value, index|key, collection). * * If a property name is provided for `predicate` the created `_.property` * style callback returns the property value of the given element. * * If a value is also provided for `thisArg` the created `_.matchesProperty` * style callback returns `true` for elements that have a matching property * value, else `false`. * * If an object is provided for `predicate` the created `_.matches` style * callback returns `true` for elements that have the properties of the given * object, else `false`. * * @static * @memberOf _ * @alias detect * @category Collection * @param {Array|Object|string} collection The collection to search. * @param {Function|Object|string} [predicate=_.identity] The function invoked * per iteration. * @param {*} [thisArg] The `this` binding of `predicate`. * @returns {*} Returns the matched element, else `undefined`. * @example * * var users = [ * { 'user': 'barney', 'age': 36, 'active': true }, * { 'user': 'fred', 'age': 40, 'active': false }, * { 'user': 'pebbles', 'age': 1, 'active': true } * ]; * * _.result(_.find(users, function(chr) { * return chr.age < 40; * }), 'user'); * // => 'barney' * * // using the `_.matches` callback shorthand * _.result(_.find(users, { 'age': 1, 'active': true }), 'user'); * // => 'pebbles' * * // using the `_.matchesProperty` callback shorthand * _.result(_.find(users, 'active', false), 'user'); * // => 'fred' * * // using the `_.property` callback shorthand * _.result(_.find(users, 'active'), 'user'); * // => 'barney' */ var find = createFind(baseEach); module.exports = find; },{"../internal/baseEach":71,"../internal/createFind":102}],54:[function(require,module,exports){ var arrayEach = require('../internal/arrayEach'), baseEach = require('../internal/baseEach'), createForEach = require('../internal/createForEach'); /** * Iterates over elements of `collection` invoking `iteratee` for each element. * The `iteratee` is bound to `thisArg` and invoked with three arguments: * (value, index|key, collection). Iteratee functions may exit iteration early * by explicitly returning `false`. * * **Note:** As with other "Collections" methods, objects with a "length" property * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn` * may be used for object iteration. * * @static * @memberOf _ * @alias each * @category Collection * @param {Array|Object|string} collection The collection to iterate over. * @param {Function} [iteratee=_.identity] The function invoked per iteration. * @param {*} [thisArg] The `this` binding of `iteratee`. * @returns {Array|Object|string} Returns `collection`. * @example * * _([1, 2]).forEach(function(n) { * console.log(n); * }).value(); * // => logs each value from left to right and returns the array * * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) { * console.log(n, key); * }); * // => logs each value-key pair and returns the object (iteration order is not guaranteed) */ var forEach = createForEach(arrayEach, baseEach); module.exports = forEach; },{"../internal/arrayEach":63,"../internal/baseEach":71,"../internal/createForEach":103}],55:[function(require,module,exports){ var baseIndexOf = require('../internal/baseIndexOf'), getLength = require('../internal/getLength'), isArray = require('../lang/isArray'), isIterateeCall = require('../internal/isIterateeCall'), isLength = require('../internal/isLength'), isString = require('../lang/isString'), values = require('../object/values'); /* Native method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** * Checks if `target` is in `collection` using * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) * for equality comparisons. If `fromIndex` is negative, it's used as the offset * from the end of `collection`. * * @static * @memberOf _ * @alias contains, include * @category Collection * @param {Array|Object|string} collection The collection to search. * @param {*} target The value to search for. * @param {number} [fromIndex=0] The index to search from. * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`. * @returns {boolean} Returns `true` if a matching element is found, else `false`. * @example * * _.includes([1, 2, 3], 1); * // => true * * _.includes([1, 2, 3], 1, 2); * // => false * * _.includes({ 'user': 'fred', 'age': 40 }, 'fred'); * // => true * * _.includes('pebbles', 'eb'); * // => true */ function includes(collection, target, fromIndex, guard) { var length = collection ? getLength(collection) : 0; if (!isLength(length)) { collection = values(collection); length = collection.length; } if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) { fromIndex = 0; } else { fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0); } return (typeof collection == 'string' || !isArray(collection) && isString(collection)) ? (fromIndex <= length && collection.indexOf(target, fromIndex) > -1) : (!!length && baseIndexOf(collection, target, fromIndex) > -1); } module.exports = includes; },{"../internal/baseIndexOf":78,"../internal/getLength":112,"../internal/isIterateeCall":122,"../internal/isLength":125,"../lang/isArray":140,"../lang/isString":146,"../object/values":152}],56:[function(require,module,exports){ var arrayMap = require('../internal/arrayMap'), baseCallback = require('../internal/baseCallback'), baseMap = require('../internal/baseMap'), isArray = require('../lang/isArray'); /** * Creates an array of values by running each element in `collection` through * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three * arguments: (value, index|key, collection). * * If a property name is provided for `iteratee` the created `_.property` * style callback returns the property value of the given element. * * If a value is also provided for `thisArg` the created `_.matchesProperty` * style callback returns `true` for elements that have a matching property * value, else `false`. * * If an object is provided for `iteratee` the created `_.matches` style * callback returns `true` for elements that have the properties of the given * object, else `false`. * * Many lodash methods are guarded to work as iteratees for methods like * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. * * The guarded methods are: * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`, * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`, * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`, * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`, * `sum`, `uniq`, and `words` * * @static * @memberOf _ * @alias collect * @category Collection * @param {Array|Object|string} collection The collection to iterate over. * @param {Function|Object|string} [iteratee=_.identity] The function invoked * per iteration. * @param {*} [thisArg] The `this` binding of `iteratee`. * @returns {Array} Returns the new mapped array. * @example * * function timesThree(n) { * return n * 3; * } * * _.map([1, 2], timesThree); * // => [3, 6] * * _.map({ 'a': 1, 'b': 2 }, timesThree); * // => [3, 6] (iteration order is not guaranteed) * * var users = [ * { 'user': 'barney' }, * { 'user': 'fred' } * ]; * * // using the `_.property` callback shorthand * _.map(users, 'user'); * // => ['barney', 'fred'] */ function map(collection, iteratee, thisArg) { var func = isArray(collection) ? arrayMap : baseMap; iteratee = baseCallback(iteratee, thisArg, 3); return func(collection, iteratee); } module.exports = map; },{"../internal/arrayMap":64,"../internal/baseCallback":67,"../internal/baseMap":83,"../lang/isArray":140}],57:[function(require,module,exports){ var getNative = require('../internal/getNative'); /* Native method references for those with the same name as other `lodash` methods. */ var nativeNow = getNative(Date, 'now'); /** * Gets the number of milliseconds that have elapsed since the Unix epoch * (1 January 1970 00:00:00 UTC). * * @static * @memberOf _ * @category Date * @example * * _.defer(function(stamp) { * console.log(_.now() - stamp); * }, _.now()); * // => logs the number of milliseconds it took for the deferred function to be invoked */ var now = nativeNow || function() { return new Date().getTime(); }; module.exports = now; },{"../internal/getNative":114}],58:[function(require,module,exports){ var createWrapper = require('../internal/createWrapper'), replaceHolders = require('../internal/replaceHolders'), restParam = require('./restParam'); /** Used to compose bitmasks for wrapper metadata. */ var BIND_FLAG = 1, PARTIAL_FLAG = 32; /** * Creates a function that invokes `func` with the `this` binding of `thisArg` * and prepends any additional `_.bind` arguments to those provided to the * bound function. * * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, * may be used as a placeholder for partially applied arguments. * * **Note:** Unlike native `Function#bind` this method does not set the "length" * property of bound functions. * * @static * @memberOf _ * @category Function * @param {Function} func The function to bind. * @param {*} thisArg The `this` binding of `func`. * @param {...*} [partials] The arguments to be partially applied. * @returns {Function} Returns the new bound function. * @example * * var greet = function(greeting, punctuation) { * return greeting + ' ' + this.user + punctuation; * }; * * var object = { 'user': 'fred' }; * * var bound = _.bind(greet, object, 'hi'); * bound('!'); * // => 'hi fred!' * * // using placeholders * var bound = _.bind(greet, object, _, '!'); * bound('hi'); * // => 'hi fred!' */ var bind = restParam(function(func, thisArg, partials) { var bitmask = BIND_FLAG; if (partials.length) { var holders = replaceHolders(partials, bind.placeholder); bitmask |= PARTIAL_FLAG; } return createWrapper(func, bitmask, thisArg, partials, holders); }); // Assign default placeholders. bind.placeholder = {}; module.exports = bind; },{"../internal/createWrapper":106,"../internal/replaceHolders":132,"./restParam":59}],59:[function(require,module,exports){ /** Used as the `TypeError` message for "Functions" methods. */ var FUNC_ERROR_TEXT = 'Expected a function'; /* Native method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** * Creates a function that invokes `func` with the `this` binding of the * created function and arguments from `start` and beyond provided as an array. * * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters). * * @static * @memberOf _ * @category Function * @param {Function} func The function to apply a rest parameter to. * @param {number} [start=func.length-1] The start position of the rest parameter. * @returns {Function} Returns the new function. * @example * * var say = _.restParam(function(what, names) { * return what + ' ' + _.initial(names).join(', ') + * (_.size(names) > 1 ? ', & ' : '') + _.last(names); * }); * * say('hello', 'fred', 'barney', 'pebbles'); * // => 'hello fred, barney, & pebbles' */ function restParam(func, start) { if (typeof func != 'function') { throw new TypeError(FUNC_ERROR_TEXT); } start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0); return function() { var args = arguments, index = -1, length = nativeMax(args.length - start, 0), rest = Array(length); while (++index < length) { rest[index] = args[start + index]; } switch (start) { case 0: return func.call(this, rest); case 1: return func.call(this, args[0], rest); case 2: return func.call(this, args[0], args[1], rest); } var otherArgs = Array(start + 1); index = -1; while (++index < start) { otherArgs[index] = args[index]; } otherArgs[start] = rest; return func.apply(this, otherArgs); }; } module.exports = restParam; },{}],60:[function(require,module,exports){ var baseCreate = require('./baseCreate'), baseLodash = require('./baseLodash'); /** Used as references for `-Infinity` and `Infinity`. */ var POSITIVE_INFINITY = Number.POSITIVE_INFINITY; /** * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. * * @private * @param {*} value The value to wrap. */ function LazyWrapper(value) { this.__wrapped__ = value; this.__actions__ = []; this.__dir__ = 1; this.__filtered__ = false; this.__iteratees__ = []; this.__takeCount__ = POSITIVE_INFINITY; this.__views__ = []; } LazyWrapper.prototype = baseCreate(baseLodash.prototype); LazyWrapper.prototype.constructor = LazyWrapper; module.exports = LazyWrapper; },{"./baseCreate":70,"./baseLodash":82}],61:[function(require,module,exports){ var baseCreate = require('./baseCreate'), baseLodash = require('./baseLodash'); /** * The base constructor for creating `lodash` wrapper objects. * * @private * @param {*} value The value to wrap. * @param {boolean} [chainAll] Enable chaining for all wrapper methods. * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value. */ function LodashWrapper(value, chainAll, actions) { this.__wrapped__ = value; this.__actions__ = actions || []; this.__chain__ = !!chainAll; } LodashWrapper.prototype = baseCreate(baseLodash.prototype); LodashWrapper.prototype.constructor = LodashWrapper; module.exports = LodashWrapper; },{"./baseCreate":70,"./baseLodash":82}],62:[function(require,module,exports){ /** * Copies the values of `source` to `array`. * * @private * @param {Array} source The array to copy values from. * @param {Array} [array=[]] The array to copy values to. * @returns {Array} Returns `array`. */ function arrayCopy(source, array) { var index = -1, length = source.length; array || (array = Array(length)); while (++index < length) { array[index] = source[index]; } return array; } module.exports = arrayCopy; },{}],63:[function(require,module,exports){ /** * A specialized version of `_.forEach` for arrays without support for callback * shorthands and `this` binding. * * @private * @param {Array} array The array to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Array} Returns `array`. */ function arrayEach(array, iteratee) { var index = -1, length = array.length; while (++index < length) { if (iteratee(array[index], index, array) === false) { break; } } return array; } module.exports = arrayEach; },{}],64:[function(require,module,exports){ /** * A specialized version of `_.map` for arrays without support for callback * shorthands and `this` binding. * * @private * @param {Array} array The array to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Array} Returns the new mapped array. */ function arrayMap(array, iteratee) { var index = -1, length = array.length, result = Array(length); while (++index < length) { result[index] = iteratee(array[index], index, array); } return result; } module.exports = arrayMap; },{}],65:[function(require,module,exports){ /** * A specialized version of `_.some` for arrays without support for callback * shorthands and `this` binding. * * @private * @param {Array} array The array to iterate over. * @param {Function} predicate The function invoked per iteration. * @returns {boolean} Returns `true` if any element passes the predicate check, * else `false`. */ function arraySome(array, predicate) { var index = -1, length = array.length; while (++index < length) { if (predicate(array[index], index, array)) { return true; } } return false; } module.exports = arraySome; },{}],66:[function(require,module,exports){ var baseCopy = require('./baseCopy'), keys = require('../object/keys'); /** * The base implementation of `_.assign` without support for argument juggling, * multiple sources, and `customizer` functions. * * @private * @param {Object} object The destination object. * @param {Object} source The source object. * @returns {Object} Returns `object`. */ function baseAssign(object, source) { return source == null ? object : baseCopy(source, keys(source), object); } module.exports = baseAssign; },{"../object/keys":149,"./baseCopy":69}],67:[function(require,module,exports){ var baseMatches = require('./baseMatches'), baseMatchesProperty = require('./baseMatchesProperty'), bindCallback = require('./bindCallback'), identity = require('../utility/identity'), property = require('../utility/property'); /** * The base implementation of `_.callback` which supports specifying the * number of arguments to provide to `func`. * * @private * @param {*} [func=_.identity] The value to convert to a callback. * @param {*} [thisArg] The `this` binding of `func`. * @param {number} [argCount] The number of arguments to provide to `func`. * @returns {Function} Returns the callback. */ function baseCallback(func, thisArg, argCount) { var type = typeof func; if (type == 'function') { return thisArg === undefined ? func : bindCallback(func, thisArg, argCount); } if (func == null) { return identity; } if (type == 'object') { return baseMatches(func); } return thisArg === undefined ? property(func) : baseMatchesProperty(func, thisArg); } module.exports = baseCallback; },{"../utility/identity":154,"../utility/property":156,"./baseMatches":84,"./baseMatchesProperty":85,"./bindCallback":94}],68:[function(require,module,exports){ var arrayCopy = require('./arrayCopy'), arrayEach = require('./arrayEach'), baseAssign = require('./baseAssign'), baseForOwn = require('./baseForOwn'), initCloneArray = require('./initCloneArray'), initCloneByTag = require('./initCloneByTag'), initCloneObject = require('./initCloneObject'), isArray = require('../lang/isArray'), isHostObject = require('./isHostObject'), isObject = require('../lang/isObject'); /** `Object#toString` result references. */ var argsTag = '[object Arguments]', arrayTag = '[object Array]', boolTag = '[object Boolean]', dateTag = '[object Date]', errorTag = '[object Error]', funcTag = '[object Function]', mapTag = '[object Map]', numberTag = '[object Number]', objectTag = '[object Object]', regexpTag = '[object RegExp]', setTag = '[object Set]', stringTag = '[object String]', weakMapTag = '[object WeakMap]'; var arrayBufferTag = '[object ArrayBuffer]', float32Tag = '[object Float32Array]', float64Tag = '[object Float64Array]', int8Tag = '[object Int8Array]', int16Tag = '[object Int16Array]', int32Tag = '[object Int32Array]', uint8Tag = '[object Uint8Array]', uint8ClampedTag = '[object Uint8ClampedArray]', uint16Tag = '[object Uint16Array]', uint32Tag = '[object Uint32Array]'; /** Used to identify `toStringTag` values supported by `_.clone`. */ var cloneableTags = {}; cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[stringTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[mapTag] = cloneableTags[setTag] = cloneableTags[weakMapTag] = false; /** Used for native method references. */ var objectProto = Object.prototype; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /** * The base implementation of `_.clone` without support for argument juggling * and `this` binding `customizer` functions. * * @private * @param {*} value The value to clone. * @param {boolean} [isDeep] Specify a deep clone. * @param {Function} [customizer] The function to customize cloning values. * @param {string} [key] The key of `value`. * @param {Object} [object] The object `value` belongs to. * @param {Array} [stackA=[]] Tracks traversed source objects. * @param {Array} [stackB=[]] Associates clones with source counterparts. * @returns {*} Returns the cloned value. */ function baseClone(value, isDeep, customizer, key, object, stackA, stackB) { var result; if (customizer) { result = object ? customizer(value, key, object) : customizer(value); } if (result !== undefined) { return result; } if (!isObject(value)) { return value; } var isArr = isArray(value); if (isArr) { result = initCloneArray(value); if (!isDeep) { return arrayCopy(value, result); } } else { var tag = objToString.call(value), isFunc = tag == funcTag; if (tag == objectTag || tag == argsTag || (isFunc && !object)) { if (isHostObject(value)) { return object ? value : {}; } result = initCloneObject(isFunc ? {} : value); if (!isDeep) { return baseAssign(result, value); } } else { return cloneableTags[tag] ? initCloneByTag(value, tag, isDeep) : (object ? value : {}); } } // Check for circular references and return its corresponding clone. stackA || (stackA = []); stackB || (stackB = []); var length = stackA.length; while (length--) { if (stackA[length] == value) { return stackB[length]; } } // Add the source value to the stack of traversed objects and associate it with its clone. stackA.push(value); stackB.push(result); // Recursively populate clone (susceptible to call stack limits). (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) { result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB); }); return result; } module.exports = baseClone; },{"../lang/isArray":140,"../lang/isObject":144,"./arrayCopy":62,"./arrayEach":63,"./baseAssign":66,"./baseForOwn":76,"./initCloneArray":116,"./initCloneByTag":117,"./initCloneObject":118,"./isHostObject":120}],69:[function(require,module,exports){ /** * Copies properties of `source` to `object`. * * @private * @param {Object} source The object to copy properties from. * @param {Array} props The property names to copy. * @param {Object} [object={}] The object to copy properties to. * @returns {Object} Returns `object`. */ function baseCopy(source, props, object) { object || (object = {}); var index = -1, length = props.length; while (++index < length) { var key = props[index]; object[key] = source[key]; } return object; } module.exports = baseCopy; },{}],70:[function(require,module,exports){ var isObject = require('../lang/isObject'); /** * The base implementation of `_.create` without support for assigning * properties to the created object. * * @private * @param {Object} prototype The object to inherit from. * @returns {Object} Returns the new object. */ var baseCreate = (function() { function object() {} return function(prototype) { if (isObject(prototype)) { object.prototype = prototype; var result = new object; object.prototype = undefined; } return result || {}; }; }()); module.exports = baseCreate; },{"../lang/isObject":144}],71:[function(require,module,exports){ var baseForOwn = require('./baseForOwn'), createBaseEach = require('./createBaseEach'); /** * The base implementation of `_.forEach` without support for callback * shorthands and `this` binding. * * @private * @param {Array|Object|string} collection The collection to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Array|Object|string} Returns `collection`. */ var baseEach = createBaseEach(baseForOwn); module.exports = baseEach; },{"./baseForOwn":76,"./createBaseEach":98}],72:[function(require,module,exports){ /** * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`, * without support for callback shorthands and `this` binding, which iterates * over `collection` using the provided `eachFunc`. * * @private * @param {Array|Object|string} collection The collection to search. * @param {Function} predicate The function invoked per iteration. * @param {Function} eachFunc The function to iterate over `collection`. * @param {boolean} [retKey] Specify returning the key of the found element * instead of the element itself. * @returns {*} Returns the found element or its key, else `undefined`. */ function baseFind(collection, predicate, eachFunc, retKey) { var result; eachFunc(collection, function(value, key, collection) { if (predicate(value, key, collection)) { result = retKey ? key : value; return false; } }); return result; } module.exports = baseFind; },{}],73:[function(require,module,exports){ /** * The base implementation of `_.findIndex` and `_.findLastIndex` without * support for callback shorthands and `this` binding. * * @private * @param {Array} array The array to search. * @param {Function} predicate The function invoked per iteration. * @param {boolean} [fromRight] Specify iterating from right to left. * @returns {number} Returns the index of the matched value, else `-1`. */ function baseFindIndex(array, predicate, fromRight) { var length = array.length, index = fromRight ? length : -1; while ((fromRight ? index-- : ++index < length)) { if (predicate(array[index], index, array)) { return index; } } return -1; } module.exports = baseFindIndex; },{}],74:[function(require,module,exports){ var createBaseFor = require('./createBaseFor'); /** * The base implementation of `baseForIn` and `baseForOwn` which iterates * over `object` properties returned by `keysFunc` invoking `iteratee` for * each property. Iteratee functions may exit iteration early by explicitly * returning `false`. * * @private * @param {Object} object The object to iterate over. * @param {Function} iteratee The function invoked per iteration. * @param {Function} keysFunc The function to get the keys of `object`. * @returns {Object} Returns `object`. */ var baseFor = createBaseFor(); module.exports = baseFor; },{"./createBaseFor":99}],75:[function(require,module,exports){ var baseFor = require('./baseFor'), keysIn = require('../object/keysIn'); /** * The base implementation of `_.forIn` without support for callback * shorthands and `this` binding. * * @private * @param {Object} object The object to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Object} Returns `object`. */ function baseForIn(object, iteratee) { return baseFor(object, iteratee, keysIn); } module.exports = baseForIn; },{"../object/keysIn":150,"./baseFor":74}],76:[function(require,module,exports){ var baseFor = require('./baseFor'), keys = require('../object/keys'); /** * The base implementation of `_.forOwn` without support for callback * shorthands and `this` binding. * * @private * @param {Object} object The object to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Object} Returns `object`. */ function baseForOwn(object, iteratee) { return baseFor(object, iteratee, keys); } module.exports = baseForOwn; },{"../object/keys":149,"./baseFor":74}],77:[function(require,module,exports){ var toObject = require('./toObject'); /** * The base implementation of `get` without support for string paths * and default values. * * @private * @param {Object} object The object to query. * @param {Array} path The path of the property to get. * @param {string} [pathKey] The key representation of path. * @returns {*} Returns the resolved value. */ function baseGet(object, path, pathKey) { if (object == null) { return; } object = toObject(object); if (pathKey !== undefined && pathKey in object) { path = [pathKey]; } var index = 0, length = path.length; while (object != null && index < length) { object = toObject(object)[path[index++]]; } return (index && index == length) ? object : undefined; } module.exports = baseGet; },{"./toObject":135}],78:[function(require,module,exports){ var indexOfNaN = require('./indexOfNaN'); /** * The base implementation of `_.indexOf` without support for binary searches. * * @private * @param {Array} array The array to search. * @param {*} value The value to search for. * @param {number} fromIndex The index to search from. * @returns {number} Returns the index of the matched value, else `-1`. */ function baseIndexOf(array, value, fromIndex) { if (value !== value) { return indexOfNaN(array, fromIndex); } var index = fromIndex - 1, length = array.length; while (++index < length) { if (array[index] === value) { return index; } } return -1; } module.exports = baseIndexOf; },{"./indexOfNaN":115}],79:[function(require,module,exports){ var baseIsEqualDeep = require('./baseIsEqualDeep'), isObject = require('../lang/isObject'), isObjectLike = require('./isObjectLike'); /** * The base implementation of `_.isEqual` without support for `this` binding * `customizer` functions. * * @private * @param {*} value The value to compare. * @param {*} other The other value to compare. * @param {Function} [customizer] The function to customize comparing values. * @param {boolean} [isLoose] Specify performing partial comparisons. * @param {Array} [stackA] Tracks traversed `value` objects. * @param {Array} [stackB] Tracks traversed `other` objects. * @returns {boolean} Returns `true` if the values are equivalent, else `false`. */ function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) { if (value === other) { return true; } if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) { return value !== value && other !== other; } return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB); } module.exports = baseIsEqual; },{"../lang/isObject":144,"./baseIsEqualDeep":80,"./isObjectLike":126}],80:[function(require,module,exports){ var equalArrays = require('./equalArrays'), equalByTag = require('./equalByTag'), equalObjects = require('./equalObjects'), isArray = require('../lang/isArray'), isHostObject = require('./isHostObject'), isTypedArray = require('../lang/isTypedArray'); /** `Object#toString` result references. */ var argsTag = '[object Arguments]', arrayTag = '[object Array]', objectTag = '[object Object]'; /** Used for native method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /** * A specialized version of `baseIsEqual` for arrays and objects which performs * deep comparisons and tracks traversed objects enabling objects with circular * references to be compared. * * @private * @param {Object} object The object to compare. * @param {Object} other The other object to compare. * @param {Function} equalFunc The function to determine equivalents of values. * @param {Function} [customizer] The function to customize comparing objects. * @param {boolean} [isLoose] Specify performing partial comparisons. * @param {Array} [stackA=[]] Tracks traversed `value` objects. * @param {Array} [stackB=[]] Tracks traversed `other` objects. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) { var objIsArr = isArray(object), othIsArr = isArray(other), objTag = arrayTag, othTag = arrayTag; if (!objIsArr) { objTag = objToString.call(object); if (objTag == argsTag) { objTag = objectTag; } else if (objTag != objectTag) { objIsArr = isTypedArray(object); } } if (!othIsArr) { othTag = objToString.call(other); if (othTag == argsTag) { othTag = objectTag; } else if (othTag != objectTag) { othIsArr = isTypedArray(other); } } var objIsObj = objTag == objectTag && !isHostObject(object), othIsObj = othTag == objectTag && !isHostObject(other), isSameTag = objTag == othTag; if (isSameTag && !(objIsArr || objIsObj)) { return equalByTag(object, other, objTag); } if (!isLoose) { var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); if (objIsWrapped || othIsWrapped) { return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB); } } if (!isSameTag) { return false; } // Assume cyclic values are equal. // For more information on detecting circular references see https://es5.github.io/#JO. stackA || (stackA = []); stackB || (stackB = []); var length = stackA.length; while (length--) { if (stackA[length] == object) { return stackB[length] == other; } } // Add `object` and `other` to the stack of traversed objects. stackA.push(object); stackB.push(other); var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB); stackA.pop(); stackB.pop(); return result; } module.exports = baseIsEqualDeep; },{"../lang/isArray":140,"../lang/isTypedArray":147,"./equalArrays":107,"./equalByTag":108,"./equalObjects":109,"./isHostObject":120}],81:[function(require,module,exports){ var baseIsEqual = require('./baseIsEqual'), toObject = require('./toObject'); /** * The base implementation of `_.isMatch` without support for callback * shorthands and `this` binding. * * @private * @param {Object} object The object to inspect. * @param {Array} matchData The propery names, values, and compare flags to match. * @param {Function} [customizer] The function to customize comparing objects. * @returns {boolean} Returns `true` if `object` is a match, else `false`. */ function baseIsMatch(object, matchData, customizer) { var index = matchData.length, length = index, noCustomizer = !customizer; if (object == null) { return !length; } object = toObject(object); while (index--) { var data = matchData[index]; if ((noCustomizer && data[2]) ? data[1] !== object[data[0]] : !(data[0] in object) ) { return false; } } while (++index < length) { data = matchData[index]; var key = data[0], objValue = object[key], srcValue = data[1]; if (noCustomizer && data[2]) { if (objValue === undefined && !(key in object)) { return false; } } else { var result = customizer ? customizer(objValue, srcValue, key) : undefined; if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, true) : result)) { return false; } } } return true; } module.exports = baseIsMatch; },{"./baseIsEqual":79,"./toObject":135}],82:[function(require,module,exports){ /** * The function whose prototype all chaining wrappers inherit from. * * @private */ function baseLodash() { // No operation performed. } module.exports = baseLodash; },{}],83:[function(require,module,exports){ var baseEach = require('./baseEach'), isArrayLike = require('./isArrayLike'); /** * The base implementation of `_.map` without support for callback shorthands * and `this` binding. * * @private * @param {Array|Object|string} collection The collection to iterate over. * @param {Function} iteratee The function invoked per iteration. * @returns {Array} Returns the new mapped array. */ function baseMap(collection, iteratee) { var index = -1, result = isArrayLike(collection) ? Array(collection.length) : []; baseEach(collection, function(value, key, collection) { result[++index] = iteratee(value, key, collection); }); return result; } module.exports = baseMap; },{"./baseEach":71,"./isArrayLike":119}],84:[function(require,module,exports){ var baseIsMatch = require('./baseIsMatch'), getMatchData = require('./getMatchData'), toObject = require('./toObject'); /** * The base implementation of `_.matches` which does not clone `source`. * * @private * @param {Object} source The object of property values to match. * @returns {Function} Returns the new function. */ function baseMatches(source) { var matchData = getMatchData(source); if (matchData.length == 1 && matchData[0][2]) { var key = matchData[0][0], value = matchData[0][1]; return function(object) { if (object == null) { return false; } object = toObject(object); return object[key] === value && (value !== undefined || (key in object)); }; } return function(object) { return baseIsMatch(object, matchData); }; } module.exports = baseMatches; },{"./baseIsMatch":81,"./getMatchData":113,"./toObject":135}],85:[function(require,module,exports){ var baseGet = require('./baseGet'), baseIsEqual = require('./baseIsEqual'), baseSlice = require('./baseSlice'), isArray = require('../lang/isArray'), isKey = require('./isKey'), isStrictComparable = require('./isStrictComparable'), last = require('../array/last'), toObject = require('./toObject'), toPath = require('./toPath'); /** * The base implementation of `_.matchesProperty` which does not clone `srcValue`. * * @private * @param {string} path The path of the property to get. * @param {*} srcValue The value to compare. * @returns {Function} Returns the new function. */ function baseMatchesProperty(path, srcValue) { var isArr = isArray(path), isCommon = isKey(path) && isStrictComparable(srcValue), pathKey = (path + ''); path = toPath(path); return function(object) { if (object == null) { return false; } var key = pathKey; object = toObject(object); if ((isArr || !isCommon) && !(key in object)) { object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); if (object == null) { return false; } key = last(path); object = toObject(object); } return object[key] === srcValue ? (srcValue !== undefined || (key in object)) : baseIsEqual(srcValue, object[key], undefined, true); }; } module.exports = baseMatchesProperty; },{"../array/last":50,"../lang/isArray":140,"./baseGet":77,"./baseIsEqual":79,"./baseSlice":89,"./isKey":123,"./isStrictComparable":127,"./toObject":135,"./toPath":136}],86:[function(require,module,exports){ var toObject = require('./toObject'); /** * The base implementation of `_.property` without support for deep paths. * * @private * @param {string} key The key of the property to get. * @returns {Function} Returns the new function. */ function baseProperty(key) { return function(object) { return object == null ? undefined : toObject(object)[key]; }; } module.exports = baseProperty; },{"./toObject":135}],87:[function(require,module,exports){ var baseGet = require('./baseGet'), toPath = require('./toPath'); /** * A specialized version of `baseProperty` which supports deep paths. * * @private * @param {Array|string} path The path of the property to get. * @returns {Function} Returns the new function. */ function basePropertyDeep(path) { var pathKey = (path + ''); path = toPath(path); return function(object) { return baseGet(object, path, pathKey); }; } module.exports = basePropertyDeep; },{"./baseGet":77,"./toPath":136}],88:[function(require,module,exports){ var identity = require('../utility/identity'), metaMap = require('./metaMap'); /** * The base implementation of `setData` without support for hot loop detection. * * @private * @param {Function} func The function to associate metadata with. * @param {*} data The metadata. * @returns {Function} Returns `func`. */ var baseSetData = !metaMap ? identity : function(func, data) { metaMap.set(func, data); return func; }; module.exports = baseSetData; },{"../utility/identity":154,"./metaMap":129}],89:[function(require,module,exports){ /** * The base implementation of `_.slice` without an iteratee call guard. * * @private * @param {Array} array The array to slice. * @param {number} [start=0] The start position. * @param {number} [end=array.length] The end position. * @returns {Array} Returns the slice of `array`. */ function baseSlice(array, start, end) { var index = -1, length = array.length; start = start == null ? 0 : (+start || 0); if (start < 0) { start = -start > length ? 0 : (length + start); } end = (end === undefined || end > length) ? length : (+end || 0); if (end < 0) { end += length; } length = start > end ? 0 : ((end - start) >>> 0); start >>>= 0; var result = Array(length); while (++index < length) { result[index] = array[index + start]; } return result; } module.exports = baseSlice; },{}],90:[function(require,module,exports){ /** * Converts `value` to a string if it's not one. An empty string is returned * for `null` or `undefined` values. * * @private * @param {*} value The value to process. * @returns {string} Returns the string. */ function baseToString(value) { return value == null ? '' : (value + ''); } module.exports = baseToString; },{}],91:[function(require,module,exports){ /** * The base implementation of `_.values` and `_.valuesIn` which creates an * array of `object` property values corresponding to the property names * of `props`. * * @private * @param {Object} object The object to query. * @param {Array} props The property names to get values for. * @returns {Object} Returns the array of property values. */ function baseValues(object, props) { var index = -1, length = props.length, result = Array(length); while (++index < length) { result[index] = object[props[index]]; } return result; } module.exports = baseValues; },{}],92:[function(require,module,exports){ var binaryIndexBy = require('./binaryIndexBy'), identity = require('../utility/identity'); /** Used as references for the maximum length and index of an array. */ var MAX_ARRAY_LENGTH = 4294967295, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; /** * Performs a binary search of `array` to determine the index at which `value` * should be inserted into `array` in order to maintain its sort order. * * @private * @param {Array} array The sorted array to inspect. * @param {*} value The value to evaluate. * @param {boolean} [retHighest] Specify returning the highest qualified index. * @returns {number} Returns the index at which `value` should be inserted * into `array`. */ function binaryIndex(array, value, retHighest) { var low = 0, high = array ? array.length : low; if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { while (low < high) { var mid = (low + high) >>> 1, computed = array[mid]; if ((retHighest ? (computed <= value) : (computed < value)) && computed !== null) { low = mid + 1; } else { high = mid; } } return high; } return binaryIndexBy(array, value, identity, retHighest); } module.exports = binaryIndex; },{"../utility/identity":154,"./binaryIndexBy":93}],93:[function(require,module,exports){ /* Native method references for those with the same name as other `lodash` methods. */ var nativeFloor = Math.floor, nativeMin = Math.min; /** Used as references for the maximum length and index of an array. */ var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1; /** * This function is like `binaryIndex` except that it invokes `iteratee` for * `value` and each element of `array` to compute their sort ranking. The * iteratee is invoked with one argument; (value). * * @private * @param {Array} array The sorted array to inspect. * @param {*} value The value to evaluate. * @param {Function} iteratee The function invoked per iteration. * @param {boolean} [retHighest] Specify returning the highest qualified index. * @returns {number} Returns the index at which `value` should be inserted * into `array`. */ function binaryIndexBy(array, value, iteratee, retHighest) { value = iteratee(value); var low = 0, high = array ? array.length : 0, valIsNaN = value !== value, valIsNull = value === null, valIsUndef = value === undefined; while (low < high) { var mid = nativeFloor((low + high) / 2), computed = iteratee(array[mid]), isDef = computed !== undefined, isReflexive = computed === computed; if (valIsNaN) { var setLow = isReflexive || retHighest; } else if (valIsNull) { setLow = isReflexive && isDef && (retHighest || computed != null); } else if (valIsUndef) { setLow = isReflexive && (retHighest || isDef); } else if (computed == null) { setLow = false; } else { setLow = retHighest ? (computed <= value) : (computed < value); } if (setLow) { low = mid + 1; } else { high = mid; } } return nativeMin(high, MAX_ARRAY_INDEX); } module.exports = binaryIndexBy; },{}],94:[function(require,module,exports){ var identity = require('../utility/identity'); /** * A specialized version of `baseCallback` which only supports `this` binding * and specifying the number of arguments to provide to `func`. * * @private * @param {Function} func The function to bind. * @param {*} thisArg The `this` binding of `func`. * @param {number} [argCount] The number of arguments to provide to `func`. * @returns {Function} Returns the callback. */ function bindCallback(func, thisArg, argCount) { if (typeof func != 'function') { return identity; } if (thisArg === undefined) { return func; } switch (argCount) { case 1: return function(value) { return func.call(thisArg, value); }; case 3: return function(value, index, collection) { return func.call(thisArg, value, index, collection); }; case 4: return function(accumulator, value, index, collection) { return func.call(thisArg, accumulator, value, index, collection); }; case 5: return function(value, other, key, object, source) { return func.call(thisArg, value, other, key, object, source); }; } return function() { return func.apply(thisArg, arguments); }; } module.exports = bindCallback; },{"../utility/identity":154}],95:[function(require,module,exports){ (function (global){ /** Native method references. */ var ArrayBuffer = global.ArrayBuffer, Uint8Array = global.Uint8Array; /** * Creates a clone of the given array buffer. * * @private * @param {ArrayBuffer} buffer The array buffer to clone. * @returns {ArrayBuffer} Returns the cloned array buffer. */ function bufferClone(buffer) { var result = new ArrayBuffer(buffer.byteLength), view = new Uint8Array(result); view.set(new Uint8Array(buffer)); return result; } module.exports = bufferClone; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{}],96:[function(require,module,exports){ /* Native method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** * Creates an array that is the composition of partially applied arguments, * placeholders, and provided arguments into a single array of arguments. * * @private * @param {Array|Object} args The provided arguments. * @param {Array} partials The arguments to prepend to those provided. * @param {Array} holders The `partials` placeholder indexes. * @returns {Array} Returns the new array of composed arguments. */ function composeArgs(args, partials, holders) { var holdersLength = holders.length, argsIndex = -1, argsLength = nativeMax(args.length - holdersLength, 0), leftIndex = -1, leftLength = partials.length, result = Array(leftLength + argsLength); while (++leftIndex < leftLength) { result[leftIndex] = partials[leftIndex]; } while (++argsIndex < holdersLength) { result[holders[argsIndex]] = args[argsIndex]; } while (argsLength--) { result[leftIndex++] = args[argsIndex++]; } return result; } module.exports = composeArgs; },{}],97:[function(require,module,exports){ /* Native method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** * This function is like `composeArgs` except that the arguments composition * is tailored for `_.partialRight`. * * @private * @param {Array|Object} args The provided arguments. * @param {Array} partials The arguments to append to those provided. * @param {Array} holders The `partials` placeholder indexes. * @returns {Array} Returns the new array of composed arguments. */ function composeArgsRight(args, partials, holders) { var holdersIndex = -1, holdersLength = holders.length, argsIndex = -1, argsLength = nativeMax(args.length - holdersLength, 0), rightIndex = -1, rightLength = partials.length, result = Array(argsLength + rightLength); while (++argsIndex < argsLength) { result[argsIndex] = args[argsIndex]; } var offset = argsIndex; while (++rightIndex < rightLength) { result[offset + rightIndex] = partials[rightIndex]; } while (++holdersIndex < holdersLength) { result[offset + holders[holdersIndex]] = args[argsIndex++]; } return result; } module.exports = composeArgsRight; },{}],98:[function(require,module,exports){ var getLength = require('./getLength'), isLength = require('./isLength'), toObject = require('./toObject'); /** * Creates a `baseEach` or `baseEachRight` function. * * @private * @param {Function} eachFunc The function to iterate over a collection. * @param {boolean} [fromRight] Specify iterating from right to left. * @returns {Function} Returns the new base function. */ function createBaseEach(eachFunc, fromRight) { return function(collection, iteratee) { var length = collection ? getLength(collection) : 0; if (!isLength(length)) { return eachFunc(collection, iteratee); } var index = fromRight ? length : -1, iterable = toObject(collection); while ((fromRight ? index-- : ++index < length)) { if (iteratee(iterable[index], index, iterable) === false) { break; } } return collection; }; } module.exports = createBaseEach; },{"./getLength":112,"./isLength":125,"./toObject":135}],99:[function(require,module,exports){ var toObject = require('./toObject'); /** * Creates a base function for `_.forIn` or `_.forInRight`. * * @private * @param {boolean} [fromRight] Specify iterating from right to left. * @returns {Function} Returns the new base function. */ function createBaseFor(fromRight) { return function(object, iteratee, keysFunc) { var iterable = toObject(object), props = keysFunc(object), length = props.length, index = fromRight ? length : -1; while ((fromRight ? index-- : ++index < length)) { var key = props[index]; if (iteratee(iterable[key], key, iterable) === false) { break; } } return object; }; } module.exports = createBaseFor; },{"./toObject":135}],100:[function(require,module,exports){ (function (global){ var createCtorWrapper = require('./createCtorWrapper'); /** * Creates a function that wraps `func` and invokes it with the `this` * binding of `thisArg`. * * @private * @param {Function} func The function to bind. * @param {*} [thisArg] The `this` binding of `func`. * @returns {Function} Returns the new bound function. */ function createBindWrapper(func, thisArg) { var Ctor = createCtorWrapper(func); function wrapper() { var fn = (this && this !== global && this instanceof wrapper) ? Ctor : func; return fn.apply(thisArg, arguments); } return wrapper; } module.exports = createBindWrapper; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"./createCtorWrapper":101}],101:[function(require,module,exports){ var baseCreate = require('./baseCreate'), isObject = require('../lang/isObject'); /** * Creates a function that produces an instance of `Ctor` regardless of * whether it was invoked as part of a `new` expression or by `call` or `apply`. * * @private * @param {Function} Ctor The constructor to wrap. * @returns {Function} Returns the new wrapped function. */ function createCtorWrapper(Ctor) { return function() { // Use a `switch` statement to work with class constructors. // See http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist // for more details. var args = arguments; switch (args.length) { case 0: return new Ctor; case 1: return new Ctor(args[0]); case 2: return new Ctor(args[0], args[1]); case 3: return new Ctor(args[0], args[1], args[2]); case 4: return new Ctor(args[0], args[1], args[2], args[3]); case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); } var thisBinding = baseCreate(Ctor.prototype), result = Ctor.apply(thisBinding, args); // Mimic the constructor's `return` behavior. // See https://es5.github.io/#x13.2.2 for more details. return isObject(result) ? result : thisBinding; }; } module.exports = createCtorWrapper; },{"../lang/isObject":144,"./baseCreate":70}],102:[function(require,module,exports){ var baseCallback = require('./baseCallback'), baseFind = require('./baseFind'), baseFindIndex = require('./baseFindIndex'), isArray = require('../lang/isArray'); /** * Creates a `_.find` or `_.findLast` function. * * @private * @param {Function} eachFunc The function to iterate over a collection. * @param {boolean} [fromRight] Specify iterating from right to left. * @returns {Function} Returns the new find function. */ function createFind(eachFunc, fromRight) { return function(collection, predicate, thisArg) { predicate = baseCallback(predicate, thisArg, 3); if (isArray(collection)) { var index = baseFindIndex(collection, predicate, fromRight); return index > -1 ? collection[index] : undefined; } return baseFind(collection, predicate, eachFunc); }; } module.exports = createFind; },{"../lang/isArray":140,"./baseCallback":67,"./baseFind":72,"./baseFindIndex":73}],103:[function(require,module,exports){ var bindCallback = require('./bindCallback'), isArray = require('../lang/isArray'); /** * Creates a function for `_.forEach` or `_.forEachRight`. * * @private * @param {Function} arrayFunc The function to iterate over an array. * @param {Function} eachFunc The function to iterate over a collection. * @returns {Function} Returns the new each function. */ function createForEach(arrayFunc, eachFunc) { return function(collection, iteratee, thisArg) { return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection)) ? arrayFunc(collection, iteratee) : eachFunc(collection, bindCallback(iteratee, thisArg, 3)); }; } module.exports = createForEach; },{"../lang/isArray":140,"./bindCallback":94}],104:[function(require,module,exports){ (function (global){ var arrayCopy = require('./arrayCopy'), composeArgs = require('./composeArgs'), composeArgsRight = require('./composeArgsRight'), createCtorWrapper = require('./createCtorWrapper'), isLaziable = require('./isLaziable'), reorder = require('./reorder'), replaceHolders = require('./replaceHolders'), setData = require('./setData'); /** Used to compose bitmasks for wrapper metadata. */ var BIND_FLAG = 1, BIND_KEY_FLAG = 2, CURRY_BOUND_FLAG = 4, CURRY_FLAG = 8, CURRY_RIGHT_FLAG = 16, PARTIAL_FLAG = 32, PARTIAL_RIGHT_FLAG = 64, ARY_FLAG = 128; /* Native method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** * Creates a function that wraps `func` and invokes it with optional `this` * binding of, partial application, and currying. * * @private * @param {Function|string} func The function or method name to reference. * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details. * @param {*} [thisArg] The `this` binding of `func`. * @param {Array} [partials] The arguments to prepend to those provided to the new function. * @param {Array} [holders] The `partials` placeholder indexes. * @param {Array} [partialsRight] The arguments to append to those provided to the new function. * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. * @param {Array} [argPos] The argument positions of the new function. * @param {number} [ary] The arity cap of `func`. * @param {number} [arity] The arity of `func`. * @returns {Function} Returns the new wrapped function. */ function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { var isAry = bitmask & ARY_FLAG, isBind = bitmask & BIND_FLAG, isBindKey = bitmask & BIND_KEY_FLAG, isCurry = bitmask & CURRY_FLAG, isCurryBound = bitmask & CURRY_BOUND_FLAG, isCurryRight = bitmask & CURRY_RIGHT_FLAG, Ctor = isBindKey ? undefined : createCtorWrapper(func); function wrapper() { // Avoid `arguments` object use disqualifying optimizations by // converting it to an array before providing it to other functions. var length = arguments.length, index = length, args = Array(length); while (index--) { args[index] = arguments[index]; } if (partials) { args = composeArgs(args, partials, holders); } if (partialsRight) { args = composeArgsRight(args, partialsRight, holdersRight); } if (isCurry || isCurryRight) { var placeholder = wrapper.placeholder, argsHolders = replaceHolders(args, placeholder); length -= argsHolders.length; if (length < arity) { var newArgPos = argPos ? arrayCopy(argPos) : undefined, newArity = nativeMax(arity - length, 0), newsHolders = isCurry ? argsHolders : undefined, newHoldersRight = isCurry ? undefined : argsHolders, newPartials = isCurry ? args : undefined, newPartialsRight = isCurry ? undefined : args; bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG); bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG); if (!isCurryBound) { bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG); } var newData = [func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity], result = createHybridWrapper.apply(undefined, newData); if (isLaziable(func)) { setData(result, newData); } result.placeholder = placeholder; return result; } } var thisBinding = isBind ? thisArg : this, fn = isBindKey ? thisBinding[func] : func; if (argPos) { args = reorder(args, argPos); } if (isAry && ary < args.length) { args.length = ary; } if (this && this !== global && this instanceof wrapper) { fn = Ctor || createCtorWrapper(func); } return fn.apply(thisBinding, args); } return wrapper; } module.exports = createHybridWrapper; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"./arrayCopy":62,"./composeArgs":96,"./composeArgsRight":97,"./createCtorWrapper":101,"./isLaziable":124,"./reorder":131,"./replaceHolders":132,"./setData":133}],105:[function(require,module,exports){ (function (global){ var createCtorWrapper = require('./createCtorWrapper'); /** Used to compose bitmasks for wrapper metadata. */ var BIND_FLAG = 1; /** * Creates a function that wraps `func` and invokes it with the optional `this` * binding of `thisArg` and the `partials` prepended to those provided to * the wrapper. * * @private * @param {Function} func The function to partially apply arguments to. * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details. * @param {*} thisArg The `this` binding of `func`. * @param {Array} partials The arguments to prepend to those provided to the new function. * @returns {Function} Returns the new bound function. */ function createPartialWrapper(func, bitmask, thisArg, partials) { var isBind = bitmask & BIND_FLAG, Ctor = createCtorWrapper(func); function wrapper() { // Avoid `arguments` object use disqualifying optimizations by // converting it to an array before providing it `func`. var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array(leftLength + argsLength); while (++leftIndex < leftLength) { args[leftIndex] = partials[leftIndex]; } while (argsLength--) { args[leftIndex++] = arguments[++argsIndex]; } var fn = (this && this !== global && this instanceof wrapper) ? Ctor : func; return fn.apply(isBind ? thisArg : this, args); } return wrapper; } module.exports = createPartialWrapper; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"./createCtorWrapper":101}],106:[function(require,module,exports){ var baseSetData = require('./baseSetData'), createBindWrapper = require('./createBindWrapper'), createHybridWrapper = require('./createHybridWrapper'), createPartialWrapper = require('./createPartialWrapper'), getData = require('./getData'), mergeData = require('./mergeData'), setData = require('./setData'); /** Used to compose bitmasks for wrapper metadata. */ var BIND_FLAG = 1, BIND_KEY_FLAG = 2, PARTIAL_FLAG = 32, PARTIAL_RIGHT_FLAG = 64; /** Used as the `TypeError` message for "Functions" methods. */ var FUNC_ERROR_TEXT = 'Expected a function'; /* Native method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; /** * Creates a function that either curries or invokes `func` with optional * `this` binding and partially applied arguments. * * @private * @param {Function|string} func The function or method name to reference. * @param {number} bitmask The bitmask of flags. * The bitmask may be composed of the following flags: * 1 - `_.bind` * 2 - `_.bindKey` * 4 - `_.curry` or `_.curryRight` of a bound function * 8 - `_.curry` * 16 - `_.curryRight` * 32 - `_.partial` * 64 - `_.partialRight` * 128 - `_.rearg` * 256 - `_.ary` * @param {*} [thisArg] The `this` binding of `func`. * @param {Array} [partials] The arguments to be partially applied. * @param {Array} [holders] The `partials` placeholder indexes. * @param {Array} [argPos] The argument positions of the new function. * @param {number} [ary] The arity cap of `func`. * @param {number} [arity] The arity of `func`. * @returns {Function} Returns the new wrapped function. */ function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { var isBindKey = bitmask & BIND_KEY_FLAG; if (!isBindKey && typeof func != 'function') { throw new TypeError(FUNC_ERROR_TEXT); } var length = partials ? partials.length : 0; if (!length) { bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG); partials = holders = undefined; } length -= (holders ? holders.length : 0); if (bitmask & PARTIAL_RIGHT_FLAG) { var partialsRight = partials, holdersRight = holders; partials = holders = undefined; } var data = isBindKey ? undefined : getData(func), newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity]; if (data) { mergeData(newData, data); bitmask = newData[1]; arity = newData[9]; } newData[9] = arity == null ? (isBindKey ? 0 : func.length) : (nativeMax(arity - length, 0) || 0); if (bitmask == BIND_FLAG) { var result = createBindWrapper(newData[0], newData[2]); } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) { result = createPartialWrapper.apply(undefined, newData); } else { result = createHybridWrapper.apply(undefined, newData); } var setter = data ? baseSetData : setData; return setter(result, newData); } module.exports = createWrapper; },{"./baseSetData":88,"./createBindWrapper":100,"./createHybridWrapper":104,"./createPartialWrapper":105,"./getData":110,"./mergeData":128,"./setData":133}],107:[function(require,module,exports){ var arraySome = require('./arraySome'); /** * A specialized version of `baseIsEqualDeep` for arrays with support for * partial deep comparisons. * * @private * @param {Array} array The array to compare. * @param {Array} other The other array to compare. * @param {Function} equalFunc The function to determine equivalents of values. * @param {Function} [customizer] The function to customize comparing arrays. * @param {boolean} [isLoose] Specify performing partial comparisons. * @param {Array} [stackA] Tracks traversed `value` objects. * @param {Array} [stackB] Tracks traversed `other` objects. * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. */ function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) { var index = -1, arrLength = array.length, othLength = other.length; if (arrLength != othLength && !(isLoose && othLength > arrLength)) { return false; } // Ignore non-index properties. while (++index < arrLength) { var arrValue = array[index], othValue = other[index], result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined; if (result !== undefined) { if (result) { continue; } return false; } // Recursively compare arrays (susceptible to call stack limits). if (isLoose) { if (!arraySome(other, function(othValue) { return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB); })) { return false; } } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) { return false; } } return true; } module.exports = equalArrays; },{"./arraySome":65}],108:[function(require,module,exports){ /** `Object#toString` result references. */ var boolTag = '[object Boolean]', dateTag = '[object Date]', errorTag = '[object Error]', numberTag = '[object Number]', regexpTag = '[object RegExp]', stringTag = '[object String]'; /** * A specialized version of `baseIsEqualDeep` for comparing objects of * the same `toStringTag`. * * **Note:** This function only supports comparing values with tags of * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. * * @private * @param {Object} object The object to compare. * @param {Object} other The other object to compare. * @param {string} tag The `toStringTag` of the objects to compare. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ function equalByTag(object, other, tag) { switch (tag) { case boolTag: case dateTag: // Coerce dates and booleans to numbers, dates to milliseconds and booleans // to `1` or `0` treating invalid dates coerced to `NaN` as not equal. return +object == +other; case errorTag: return object.name == other.name && object.message == other.message; case numberTag: // Treat `NaN` vs. `NaN` as equal. return (object != +object) ? other != +other : object == +other; case regexpTag: case stringTag: // Coerce regexes to strings and treat strings primitives and string // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details. return object == (other + ''); } return false; } module.exports = equalByTag; },{}],109:[function(require,module,exports){ var keys = require('../object/keys'); /** Used for native method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * A specialized version of `baseIsEqualDeep` for objects with support for * partial deep comparisons. * * @private * @param {Object} object The object to compare. * @param {Object} other The other object to compare. * @param {Function} equalFunc The function to determine equivalents of values. * @param {Function} [customizer] The function to customize comparing values. * @param {boolean} [isLoose] Specify performing partial comparisons. * @param {Array} [stackA] Tracks traversed `value` objects. * @param {Array} [stackB] Tracks traversed `other` objects. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) { var objProps = keys(object), objLength = objProps.length, othProps = keys(other), othLength = othProps.length; if (objLength != othLength && !isLoose) { return false; } var index = objLength; while (index--) { var key = objProps[index]; if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) { return false; } } var skipCtor = isLoose; while (++index < objLength) { key = objProps[index]; var objValue = object[key], othValue = other[key], result = customizer ? customizer(isLoose ? othValue : objValue, isLoose? objValue : othValue, key) : undefined; // Recursively compare objects (susceptible to call stack limits). if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) { return false; } skipCtor || (skipCtor = key == 'constructor'); } if (!skipCtor) { var objCtor = object.constructor, othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal. if (objCtor != othCtor && ('constructor' in object && 'constructor' in other) && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) { return false; } } return true; } module.exports = equalObjects; },{"../object/keys":149}],110:[function(require,module,exports){ var metaMap = require('./metaMap'), noop = require('../utility/noop'); /** * Gets metadata for `func`. * * @private * @param {Function} func The function to query. * @returns {*} Returns the metadata for `func`. */ var getData = !metaMap ? noop : function(func) { return metaMap.get(func); }; module.exports = getData; },{"../utility/noop":155,"./metaMap":129}],111:[function(require,module,exports){ var realNames = require('./realNames'); /** * Gets the name of `func`. * * @private * @param {Function} func The function to query. * @returns {string} Returns the function name. */ function getFuncName(func) { var result = (func.name + ''), array = realNames[result], length = array ? array.length : 0; while (length--) { var data = array[length], otherFunc = data.func; if (otherFunc == null || otherFunc == func) { return data.name; } } return result; } module.exports = getFuncName; },{"./realNames":130}],112:[function(require,module,exports){ var baseProperty = require('./baseProperty'); /** * Gets the "length" property value of `object`. * * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) * that affects Safari on at least iOS 8.1-8.3 ARM64. * * @private * @param {Object} object The object to query. * @returns {*} Returns the "length" value. */ var getLength = baseProperty('length'); module.exports = getLength; },{"./baseProperty":86}],113:[function(require,module,exports){ var isStrictComparable = require('./isStrictComparable'), pairs = require('../object/pairs'); /** * Gets the propery names, values, and compare flags of `object`. * * @private * @param {Object} object The object to query. * @returns {Array} Returns the match data of `object`. */ function getMatchData(object) { var result = pairs(object), length = result.length; while (length--) { result[length][2] = isStrictComparable(result[length][1]); } return result; } module.exports = getMatchData; },{"../object/pairs":151,"./isStrictComparable":127}],114:[function(require,module,exports){ var isNative = require('../lang/isNative'); /** * Gets the native function at `key` of `object`. * * @private * @param {Object} object The object to query. * @param {string} key The key of the method to get. * @returns {*} Returns the function if it's native, else `undefined`. */ function getNative(object, key) { var value = object == null ? undefined : object[key]; return isNative(value) ? value : undefined; } module.exports = getNative; },{"../lang/isNative":143}],115:[function(require,module,exports){ /** * Gets the index at which the first occurrence of `NaN` is found in `array`. * * @private * @param {Array} array The array to search. * @param {number} fromIndex The index to search from. * @param {boolean} [fromRight] Specify iterating from right to left. * @returns {number} Returns the index of the matched `NaN`, else `-1`. */ function indexOfNaN(array, fromIndex, fromRight) { var length = array.length, index = fromIndex + (fromRight ? 0 : -1); while ((fromRight ? index-- : ++index < length)) { var other = array[index]; if (other !== other) { return index; } } return -1; } module.exports = indexOfNaN; },{}],116:[function(require,module,exports){ /** Used for native method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Initializes an array clone. * * @private * @param {Array} array The array to clone. * @returns {Array} Returns the initialized clone. */ function initCloneArray(array) { var length = array.length, result = new array.constructor(length); // Add array properties assigned by `RegExp#exec`. if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { result.index = array.index; result.input = array.input; } return result; } module.exports = initCloneArray; },{}],117:[function(require,module,exports){ (function (global){ var bufferClone = require('./bufferClone'); /** `Object#toString` result references. */ var boolTag = '[object Boolean]', dateTag = '[object Date]', numberTag = '[object Number]', regexpTag = '[object RegExp]', stringTag = '[object String]'; var arrayBufferTag = '[object ArrayBuffer]', float32Tag = '[object Float32Array]', float64Tag = '[object Float64Array]', int8Tag = '[object Int8Array]', int16Tag = '[object Int16Array]', int32Tag = '[object Int32Array]', uint8Tag = '[object Uint8Array]', uint8ClampedTag = '[object Uint8ClampedArray]', uint16Tag = '[object Uint16Array]', uint32Tag = '[object Uint32Array]'; /** Used to match `RegExp` flags from their coerced string values. */ var reFlags = /\w*$/; /** Native method references. */ var Uint8Array = global.Uint8Array; /** Used to lookup a type array constructors by `toStringTag`. */ var ctorByTag = {}; ctorByTag[float32Tag] = global.Float32Array; ctorByTag[float64Tag] = global.Float64Array; ctorByTag[int8Tag] = global.Int8Array; ctorByTag[int16Tag] = global.Int16Array; ctorByTag[int32Tag] = global.Int32Array; ctorByTag[uint8Tag] = Uint8Array; ctorByTag[uint8ClampedTag] = global.Uint8ClampedArray; ctorByTag[uint16Tag] = global.Uint16Array; ctorByTag[uint32Tag] = global.Uint32Array; /** * Initializes an object clone based on its `toStringTag`. * * **Note:** This function only supports cloning values with tags of * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. * * @private * @param {Object} object The object to clone. * @param {string} tag The `toStringTag` of the object to clone. * @param {boolean} [isDeep] Specify a deep clone. * @returns {Object} Returns the initialized clone. */ function initCloneByTag(object, tag, isDeep) { var Ctor = object.constructor; switch (tag) { case arrayBufferTag: return bufferClone(object); case boolTag: case dateTag: return new Ctor(+object); case float32Tag: case float64Tag: case int8Tag: case int16Tag: case int32Tag: case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: // Safari 5 mobile incorrectly has `Object` as the constructor of typed arrays. if (Ctor instanceof Ctor) { Ctor = ctorByTag[tag]; } var buffer = object.buffer; return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length); case numberTag: case stringTag: return new Ctor(object); case regexpTag: var result = new Ctor(object.source, reFlags.exec(object)); result.lastIndex = object.lastIndex; } return result; } module.exports = initCloneByTag; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"./bufferClone":95}],118:[function(require,module,exports){ /** * Initializes an object clone. * * @private * @param {Object} object The object to clone. * @returns {Object} Returns the initialized clone. */ function initCloneObject(object) { var Ctor = object.constructor; if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) { Ctor = Object; } return new Ctor; } module.exports = initCloneObject; },{}],119:[function(require,module,exports){ var getLength = require('./getLength'), isLength = require('./isLength'); /** * Checks if `value` is array-like. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is array-like, else `false`. */ function isArrayLike(value) { return value != null && isLength(getLength(value)); } module.exports = isArrayLike; },{"./getLength":112,"./isLength":125}],120:[function(require,module,exports){ /** * Checks if `value` is a host object in IE < 9. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a host object, else `false`. */ var isHostObject = (function() { try { Object({ 'toString': 0 } + ''); } catch(e) { return function() { return false; }; } return function(value) { // IE < 9 presents many host objects as `Object` objects that can coerce // to strings despite having improperly defined `toString` methods. return typeof value.toString != 'function' && typeof (value + '') == 'string'; }; }()); module.exports = isHostObject; },{}],121:[function(require,module,exports){ /** Used to detect unsigned integer values. */ var reIsUint = /^\d+$/; /** * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) * of an array-like value. */ var MAX_SAFE_INTEGER = 9007199254740991; /** * Checks if `value` is a valid array-like index. * * @private * @param {*} value The value to check. * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. */ function isIndex(value, length) { value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1; length = length == null ? MAX_SAFE_INTEGER : length; return value > -1 && value % 1 == 0 && value < length; } module.exports = isIndex; },{}],122:[function(require,module,exports){ var isArrayLike = require('./isArrayLike'), isIndex = require('./isIndex'), isObject = require('../lang/isObject'); /** * Checks if the provided arguments are from an iteratee call. * * @private * @param {*} value The potential iteratee value argument. * @param {*} index The potential iteratee index or key argument. * @param {*} object The potential iteratee object argument. * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`. */ function isIterateeCall(value, index, object) { if (!isObject(object)) { return false; } var type = typeof index; if (type == 'number' ? (isArrayLike(object) && isIndex(index, object.length)) : (type == 'string' && index in object)) { var other = object[index]; return value === value ? (value === other) : (other !== other); } return false; } module.exports = isIterateeCall; },{"../lang/isObject":144,"./isArrayLike":119,"./isIndex":121}],123:[function(require,module,exports){ var isArray = require('../lang/isArray'), toObject = require('./toObject'); /** Used to match property names within property paths. */ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/; /** * Checks if `value` is a property name and not a property path. * * @private * @param {*} value The value to check. * @param {Object} [object] The object to query keys on. * @returns {boolean} Returns `true` if `value` is a property name, else `false`. */ function isKey(value, object) { var type = typeof value; if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') { return true; } if (isArray(value)) { return false; } var result = !reIsDeepProp.test(value); return result || (object != null && value in toObject(object)); } module.exports = isKey; },{"../lang/isArray":140,"./toObject":135}],124:[function(require,module,exports){ var LazyWrapper = require('./LazyWrapper'), getData = require('./getData'), getFuncName = require('./getFuncName'), lodash = require('../chain/lodash'); /** * Checks if `func` has a lazy counterpart. * * @private * @param {Function} func The function to check. * @returns {boolean} Returns `true` if `func` has a lazy counterpart, else `false`. */ function isLaziable(func) { var funcName = getFuncName(func), other = lodash[funcName]; if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { return false; } if (func === other) { return true; } var data = getData(other); return !!data && func === data[0]; } module.exports = isLaziable; },{"../chain/lodash":51,"./LazyWrapper":60,"./getData":110,"./getFuncName":111}],125:[function(require,module,exports){ /** * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) * of an array-like value. */ var MAX_SAFE_INTEGER = 9007199254740991; /** * Checks if `value` is a valid array-like length. * * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. */ function isLength(value) { return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; } module.exports = isLength; },{}],126:[function(require,module,exports){ /** * Checks if `value` is object-like. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is object-like, else `false`. */ function isObjectLike(value) { return !!value && typeof value == 'object'; } module.exports = isObjectLike; },{}],127:[function(require,module,exports){ var isObject = require('../lang/isObject'); /** * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. * * @private * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` if suitable for strict * equality comparisons, else `false`. */ function isStrictComparable(value) { return value === value && !isObject(value); } module.exports = isStrictComparable; },{"../lang/isObject":144}],128:[function(require,module,exports){ var arrayCopy = require('./arrayCopy'), composeArgs = require('./composeArgs'), composeArgsRight = require('./composeArgsRight'), replaceHolders = require('./replaceHolders'); /** Used to compose bitmasks for wrapper metadata. */ var BIND_FLAG = 1, CURRY_BOUND_FLAG = 4, CURRY_FLAG = 8, ARY_FLAG = 128, REARG_FLAG = 256; /** Used as the internal argument placeholder. */ var PLACEHOLDER = '__lodash_placeholder__'; /* Native method references for those with the same name as other `lodash` methods. */ var nativeMin = Math.min; /** * Merges the function metadata of `source` into `data`. * * Merging metadata reduces the number of wrappers required to invoke a function. * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg` * augment function arguments, making the order in which they are executed important, * preventing the merging of metadata. However, we make an exception for a safe * common case where curried functions have `_.ary` and or `_.rearg` applied. * * @private * @param {Array} data The destination metadata. * @param {Array} source The source metadata. * @returns {Array} Returns `data`. */ function mergeData(data, source) { var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < ARY_FLAG; var isCombo = (srcBitmask == ARY_FLAG && bitmask == CURRY_FLAG) || (srcBitmask == ARY_FLAG && bitmask == REARG_FLAG && data[7].length <= source[8]) || (srcBitmask == (ARY_FLAG | REARG_FLAG) && bitmask == CURRY_FLAG); // Exit early if metadata can't be merged. if (!(isCommon || isCombo)) { return data; } // Use source `thisArg` if available. if (srcBitmask & BIND_FLAG) { data[2] = source[2]; // Set when currying a bound function. newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG; } // Compose partial arguments. var value = source[3]; if (value) { var partials = data[3]; data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value); data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]); } // Compose partial right arguments. value = source[5]; if (value) { partials = data[5]; data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value); data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]); } // Use source `argPos` if available. value = source[7]; if (value) { data[7] = arrayCopy(value); } // Use source `ary` if it's smaller. if (srcBitmask & ARY_FLAG) { data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); } // Use source `arity` if one is not provided. if (data[9] == null) { data[9] = source[9]; } // Use source `func` and merge bitmasks. data[0] = source[0]; data[1] = newBitmask; return data; } module.exports = mergeData; },{"./arrayCopy":62,"./composeArgs":96,"./composeArgsRight":97,"./replaceHolders":132}],129:[function(require,module,exports){ (function (global){ var getNative = require('./getNative'); /** Native method references. */ var WeakMap = getNative(global, 'WeakMap'); /** Used to store function metadata. */ var metaMap = WeakMap && new WeakMap; module.exports = metaMap; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"./getNative":114}],130:[function(require,module,exports){ /** Used to lookup unminified function names. */ var realNames = {}; module.exports = realNames; },{}],131:[function(require,module,exports){ var arrayCopy = require('./arrayCopy'), isIndex = require('./isIndex'); /* Native method references for those with the same name as other `lodash` methods. */ var nativeMin = Math.min; /** * Reorder `array` according to the specified indexes where the element at * the first index is assigned as the first element, the element at * the second index is assigned as the second element, and so on. * * @private * @param {Array} array The array to reorder. * @param {Array} indexes The arranged array indexes. * @returns {Array} Returns `array`. */ function reorder(array, indexes) { var arrLength = array.length, length = nativeMin(indexes.length, arrLength), oldArray = arrayCopy(array); while (length--) { var index = indexes[length]; array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; } return array; } module.exports = reorder; },{"./arrayCopy":62,"./isIndex":121}],132:[function(require,module,exports){ /** Used as the internal argument placeholder. */ var PLACEHOLDER = '__lodash_placeholder__'; /** * Replaces all `placeholder` elements in `array` with an internal placeholder * and returns an array of their indexes. * * @private * @param {Array} array The array to modify. * @param {*} placeholder The placeholder to replace. * @returns {Array} Returns the new array of placeholder indexes. */ function replaceHolders(array, placeholder) { var index = -1, length = array.length, resIndex = -1, result = []; while (++index < length) { if (array[index] === placeholder) { array[index] = PLACEHOLDER; result[++resIndex] = index; } } return result; } module.exports = replaceHolders; },{}],133:[function(require,module,exports){ var baseSetData = require('./baseSetData'), now = require('../date/now'); /** Used to detect when a function becomes hot. */ var HOT_COUNT = 150, HOT_SPAN = 16; /** * Sets metadata for `func`. * * **Note:** If this function becomes hot, i.e. is invoked a lot in a short * period of time, it will trip its breaker and transition to an identity function * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070) * for more details. * * @private * @param {Function} func The function to associate metadata with. * @param {*} data The metadata. * @returns {Function} Returns `func`. */ var setData = (function() { var count = 0, lastCalled = 0; return function(key, value) { var stamp = now(), remaining = HOT_SPAN - (stamp - lastCalled); lastCalled = stamp; if (remaining > 0) { if (++count >= HOT_COUNT) { return key; } } else { count = 0; } return baseSetData(key, value); }; }()); module.exports = setData; },{"../date/now":57,"./baseSetData":88}],134:[function(require,module,exports){ var isArguments = require('../lang/isArguments'), isArray = require('../lang/isArray'), isIndex = require('./isIndex'), isLength = require('./isLength'), isString = require('../lang/isString'), keysIn = require('../object/keysIn'); /** Used for native method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * A fallback implementation of `Object.keys` which creates an array of the * own enumerable property names of `object`. * * @private * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. */ function shimKeys(object) { var props = keysIn(object), propsLength = props.length, length = propsLength && object.length; var allowIndexes = !!length && isLength(length) && (isArray(object) || isArguments(object) || isString(object)); var index = -1, result = []; while (++index < propsLength) { var key = props[index]; if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) { result.push(key); } } return result; } module.exports = shimKeys; },{"../lang/isArguments":139,"../lang/isArray":140,"../lang/isString":146,"../object/keysIn":150,"./isIndex":121,"./isLength":125}],135:[function(require,module,exports){ var isObject = require('../lang/isObject'), isString = require('../lang/isString'), support = require('../support'); /** * Converts `value` to an object if it's not one. * * @private * @param {*} value The value to process. * @returns {Object} Returns the object. */ function toObject(value) { if (support.unindexedChars && isString(value)) { var index = -1, length = value.length, result = Object(value); while (++index < length) { result[index] = value.charAt(index); } return result; } return isObject(value) ? value : Object(value); } module.exports = toObject; },{"../lang/isObject":144,"../lang/isString":146,"../support":153}],136:[function(require,module,exports){ var baseToString = require('./baseToString'), isArray = require('../lang/isArray'); /** Used to match property names within property paths. */ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g; /** Used to match backslashes in property paths. */ var reEscapeChar = /\\(\\)?/g; /** * Converts `value` to property path array if it's not one. * * @private * @param {*} value The value to process. * @returns {Array} Returns the property path array. */ function toPath(value) { if (isArray(value)) { return value; } var result = []; baseToString(value).replace(rePropName, function(match, number, quote, string) { result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); }); return result; } module.exports = toPath; },{"../lang/isArray":140,"./baseToString":90}],137:[function(require,module,exports){ var LazyWrapper = require('./LazyWrapper'), LodashWrapper = require('./LodashWrapper'), arrayCopy = require('./arrayCopy'); /** * Creates a clone of `wrapper`. * * @private * @param {Object} wrapper The wrapper to clone. * @returns {Object} Returns the cloned wrapper. */ function wrapperClone(wrapper) { return wrapper instanceof LazyWrapper ? wrapper.clone() : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__)); } module.exports = wrapperClone; },{"./LazyWrapper":60,"./LodashWrapper":61,"./arrayCopy":62}],138:[function(require,module,exports){ var baseClone = require('../internal/baseClone'), bindCallback = require('../internal/bindCallback'); /** * Creates a deep clone of `value`. If `customizer` is provided it's invoked * to produce the cloned values. If `customizer` returns `undefined` cloning * is handled by the method instead. The `customizer` is bound to `thisArg` * and invoked with up to three argument; (value [, index|key, object]). * * **Note:** This method is loosely based on the * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm). * The enumerable properties of `arguments` objects and objects created by * constructors other than `Object` are cloned to plain `Object` objects. An * empty object is returned for uncloneable values such as functions, DOM nodes, * Maps, Sets, and WeakMaps. * * @static * @memberOf _ * @category Lang * @param {*} value The value to deep clone. * @param {Function} [customizer] The function to customize cloning values. * @param {*} [thisArg] The `this` binding of `customizer`. * @returns {*} Returns the deep cloned value. * @example * * var users = [ * { 'user': 'barney' }, * { 'user': 'fred' } * ]; * * var deep = _.cloneDeep(users); * deep[0] === users[0]; * // => false * * // using a customizer callback * var el = _.cloneDeep(document.body, function(value) { * if (_.isElement(value)) { * return value.cloneNode(true); * } * }); * * el === document.body * // => false * el.nodeName * // => BODY * el.childNodes.length; * // => 20 */ function cloneDeep(value, customizer, thisArg) { return typeof customizer == 'function' ? baseClone(value, true, bindCallback(customizer, thisArg, 3)) : baseClone(value, true); } module.exports = cloneDeep; },{"../internal/baseClone":68,"../internal/bindCallback":94}],139:[function(require,module,exports){ var isArrayLike = require('../internal/isArrayLike'), isObjectLike = require('../internal/isObjectLike'); /** Used for native method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** Native method references. */ var propertyIsEnumerable = objectProto.propertyIsEnumerable; /** * Checks if `value` is classified as an `arguments` object. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. * @example * * _.isArguments(function() { return arguments; }()); * // => true * * _.isArguments([1, 2, 3]); * // => false */ function isArguments(value) { return isObjectLike(value) && isArrayLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee'); } module.exports = isArguments; },{"../internal/isArrayLike":119,"../internal/isObjectLike":126}],140:[function(require,module,exports){ var getNative = require('../internal/getNative'), isLength = require('../internal/isLength'), isObjectLike = require('../internal/isObjectLike'); /** `Object#toString` result references. */ var arrayTag = '[object Array]'; /** Used for native method references. */ var objectProto = Object.prototype; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /* Native method references for those with the same name as other `lodash` methods. */ var nativeIsArray = getNative(Array, 'isArray'); /** * Checks if `value` is classified as an `Array` object. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. * @example * * _.isArray([1, 2, 3]); * // => true * * _.isArray(function() { return arguments; }()); * // => false */ var isArray = nativeIsArray || function(value) { return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag; }; module.exports = isArray; },{"../internal/getNative":114,"../internal/isLength":125,"../internal/isObjectLike":126}],141:[function(require,module,exports){ var isArguments = require('./isArguments'), isArray = require('./isArray'), isArrayLike = require('../internal/isArrayLike'), isFunction = require('./isFunction'), isObjectLike = require('../internal/isObjectLike'), isString = require('./isString'), keys = require('../object/keys'); /** * Checks if `value` is empty. A value is considered empty unless it's an * `arguments` object, array, string, or jQuery-like collection with a length * greater than `0` or an object with own enumerable properties. * * @static * @memberOf _ * @category Lang * @param {Array|Object|string} value The value to inspect. * @returns {boolean} Returns `true` if `value` is empty, else `false`. * @example * * _.isEmpty(null); * // => true * * _.isEmpty(true); * // => true * * _.isEmpty(1); * // => true * * _.isEmpty([1, 2, 3]); * // => false * * _.isEmpty({ 'a': 1 }); * // => false */ function isEmpty(value) { if (value == null) { return true; } if (isArrayLike(value) && (isArray(value) || isString(value) || isArguments(value) || (isObjectLike(value) && isFunction(value.splice)))) { return !value.length; } return !keys(value).length; } module.exports = isEmpty; },{"../internal/isArrayLike":119,"../internal/isObjectLike":126,"../object/keys":149,"./isArguments":139,"./isArray":140,"./isFunction":142,"./isString":146}],142:[function(require,module,exports){ var isObject = require('./isObject'); /** `Object#toString` result references. */ var funcTag = '[object Function]'; /** Used for native method references. */ var objectProto = Object.prototype; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /** * Checks if `value` is classified as a `Function` object. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. * @example * * _.isFunction(_); * // => true * * _.isFunction(/abc/); * // => false */ function isFunction(value) { // The use of `Object#toString` avoids issues with the `typeof` operator // in older versions of Chrome and Safari which return 'function' for regexes // and Safari 8 which returns 'object' for typed array constructors. return isObject(value) && objToString.call(value) == funcTag; } module.exports = isFunction; },{"./isObject":144}],143:[function(require,module,exports){ var isFunction = require('./isFunction'), isHostObject = require('../internal/isHostObject'), isObjectLike = require('../internal/isObjectLike'); /** Used to detect host constructors (Safari > 5). */ var reIsHostCtor = /^\[object .+?Constructor\]$/; /** Used for native method references. */ var objectProto = Object.prototype; /** Used to resolve the decompiled source of functions. */ var fnToString = Function.prototype.toString; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** Used to detect if a method is native. */ var reIsNative = RegExp('^' + fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' ); /** * Checks if `value` is a native function. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a native function, else `false`. * @example * * _.isNative(Array.prototype.push); * // => true * * _.isNative(_); * // => false */ function isNative(value) { if (value == null) { return false; } if (isFunction(value)) { return reIsNative.test(fnToString.call(value)); } return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value); } module.exports = isNative; },{"../internal/isHostObject":120,"../internal/isObjectLike":126,"./isFunction":142}],144:[function(require,module,exports){ /** * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is an object, else `false`. * @example * * _.isObject({}); * // => true * * _.isObject([1, 2, 3]); * // => true * * _.isObject(1); * // => false */ function isObject(value) { // Avoid a V8 JIT bug in Chrome 19-20. // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. var type = typeof value; return !!value && (type == 'object' || type == 'function'); } module.exports = isObject; },{}],145:[function(require,module,exports){ var baseForIn = require('../internal/baseForIn'), isArguments = require('./isArguments'), isHostObject = require('../internal/isHostObject'), isObjectLike = require('../internal/isObjectLike'), support = require('../support'); /** `Object#toString` result references. */ var objectTag = '[object Object]'; /** Used for native method references. */ var objectProto = Object.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /** * Checks if `value` is a plain object, that is, an object created by the * `Object` constructor or one with a `[[Prototype]]` of `null`. * * **Note:** This method assumes objects created by the `Object` constructor * have no inherited enumerable properties. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. * @example * * function Foo() { * this.a = 1; * } * * _.isPlainObject(new Foo); * // => false * * _.isPlainObject([1, 2, 3]); * // => false * * _.isPlainObject({ 'x': 0, 'y': 0 }); * // => true * * _.isPlainObject(Object.create(null)); * // => true */ function isPlainObject(value) { var Ctor; // Exit early for non `Object` objects. if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) || (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) { return false; } // IE < 9 iterates inherited properties before own properties. If the first // iterated property is an object's own property then there are no inherited // enumerable properties. var result; if (support.ownLast) { baseForIn(value, function(subValue, key, object) { result = hasOwnProperty.call(object, key); return false; }); return result !== false; } // In most environments an object's own properties are iterated before // its inherited properties. If the last iterated property is an object's // own property then there are no inherited enumerable properties. baseForIn(value, function(subValue, key) { result = key; }); return result === undefined || hasOwnProperty.call(value, result); } module.exports = isPlainObject; },{"../internal/baseForIn":75,"../internal/isHostObject":120,"../internal/isObjectLike":126,"../support":153,"./isArguments":139}],146:[function(require,module,exports){ var isObjectLike = require('../internal/isObjectLike'); /** `Object#toString` result references. */ var stringTag = '[object String]'; /** Used for native method references. */ var objectProto = Object.prototype; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /** * Checks if `value` is classified as a `String` primitive or object. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. * @example * * _.isString('abc'); * // => true * * _.isString(1); * // => false */ function isString(value) { return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag); } module.exports = isString; },{"../internal/isObjectLike":126}],147:[function(require,module,exports){ var isLength = require('../internal/isLength'), isObjectLike = require('../internal/isObjectLike'); /** `Object#toString` result references. */ var argsTag = '[object Arguments]', arrayTag = '[object Array]', boolTag = '[object Boolean]', dateTag = '[object Date]', errorTag = '[object Error]', funcTag = '[object Function]', mapTag = '[object Map]', numberTag = '[object Number]', objectTag = '[object Object]', regexpTag = '[object RegExp]', setTag = '[object Set]', stringTag = '[object String]', weakMapTag = '[object WeakMap]'; var arrayBufferTag = '[object ArrayBuffer]', float32Tag = '[object Float32Array]', float64Tag = '[object Float64Array]', int8Tag = '[object Int8Array]', int16Tag = '[object Int16Array]', int32Tag = '[object Int32Array]', uint8Tag = '[object Uint8Array]', uint8ClampedTag = '[object Uint8ClampedArray]', uint16Tag = '[object Uint16Array]', uint32Tag = '[object Uint32Array]'; /** Used to identify `toStringTag` values of typed arrays. */ var typedArrayTags = {}; typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; /** Used for native method references. */ var objectProto = Object.prototype; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /** * Checks if `value` is classified as a typed array. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. * @example * * _.isTypedArray(new Uint8Array); * // => true * * _.isTypedArray([]); * // => false */ function isTypedArray(value) { return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)]; } module.exports = isTypedArray; },{"../internal/isLength":125,"../internal/isObjectLike":126}],148:[function(require,module,exports){ /** * Checks if `value` is `undefined`. * * @static * @memberOf _ * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. * @example * * _.isUndefined(void 0); * // => true * * _.isUndefined(null); * // => false */ function isUndefined(value) { return value === undefined; } module.exports = isUndefined; },{}],149:[function(require,module,exports){ var getNative = require('../internal/getNative'), isArrayLike = require('../internal/isArrayLike'), isObject = require('../lang/isObject'), shimKeys = require('../internal/shimKeys'), support = require('../support'); /* Native method references for those with the same name as other `lodash` methods. */ var nativeKeys = getNative(Object, 'keys'); /** * Creates an array of the own enumerable property names of `object`. * * **Note:** Non-object values are coerced to objects. See the * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) * for more details. * * @static * @memberOf _ * @category Object * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. * @example * * function Foo() { * this.a = 1; * this.b = 2; * } * * Foo.prototype.c = 3; * * _.keys(new Foo); * // => ['a', 'b'] (iteration order is not guaranteed) * * _.keys('hi'); * // => ['0', '1'] */ var keys = !nativeKeys ? shimKeys : function(object) { var Ctor = object == null ? undefined : object.constructor; if ((typeof Ctor == 'function' && Ctor.prototype === object) || (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) { return shimKeys(object); } return isObject(object) ? nativeKeys(object) : []; }; module.exports = keys; },{"../internal/getNative":114,"../internal/isArrayLike":119,"../internal/shimKeys":134,"../lang/isObject":144,"../support":153}],150:[function(require,module,exports){ var arrayEach = require('../internal/arrayEach'), isArguments = require('../lang/isArguments'), isArray = require('../lang/isArray'), isFunction = require('../lang/isFunction'), isIndex = require('../internal/isIndex'), isLength = require('../internal/isLength'), isObject = require('../lang/isObject'), isString = require('../lang/isString'), support = require('../support'); /** `Object#toString` result references. */ var arrayTag = '[object Array]', boolTag = '[object Boolean]', dateTag = '[object Date]', errorTag = '[object Error]', funcTag = '[object Function]', numberTag = '[object Number]', objectTag = '[object Object]', regexpTag = '[object RegExp]', stringTag = '[object String]'; /** Used to fix the JScript `[[DontEnum]]` bug. */ var shadowProps = [ 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf' ]; /** Used for native method references. */ var errorProto = Error.prototype, objectProto = Object.prototype, stringProto = String.prototype; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; /** * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) * of values. */ var objToString = objectProto.toString; /** Used to avoid iterating over non-enumerable properties in IE < 9. */ var nonEnumProps = {}; nonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true }; nonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true }; nonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true }; nonEnumProps[objectTag] = { 'constructor': true }; arrayEach(shadowProps, function(key) { for (var tag in nonEnumProps) { if (hasOwnProperty.call(nonEnumProps, tag)) { var props = nonEnumProps[tag]; props[key] = hasOwnProperty.call(props, key); } } }); /** * Creates an array of the own and inherited enumerable property names of `object`. * * **Note:** Non-object values are coerced to objects. * * @static * @memberOf _ * @category Object * @param {Object} object The object to query. * @returns {Array} Returns the array of property names. * @example * * function Foo() { * this.a = 1; * this.b = 2; * } * * Foo.prototype.c = 3; * * _.keysIn(new Foo); * // => ['a', 'b', 'c'] (iteration order is not guaranteed) */ function keysIn(object) { if (object == null) { return []; } if (!isObject(object)) { object = Object(object); } var length = object.length; length = (length && isLength(length) && (isArray(object) || isArguments(object) || isString(object)) && length) || 0; var Ctor = object.constructor, index = -1, proto = (isFunction(Ctor) && Ctor.prototype) || objectProto, isProto = proto === object, result = Array(length), skipIndexes = length > 0, skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error), skipProto = support.enumPrototypes && isFunction(object); while (++index < length) { result[index] = (index + ''); } // lodash skips the `constructor` property when it infers it's iterating // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]` // attribute of an existing property and the `constructor` property of a // prototype defaults to non-enumerable. for (var key in object) { if (!(skipProto && key == 'prototype') && !(skipErrorProps && (key == 'message' || key == 'name')) && !(skipIndexes && isIndex(key, length)) && !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { result.push(key); } } if (support.nonEnumShadows && object !== objectProto) { var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)), nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag]; if (tag == objectTag) { proto = objectProto; } length = shadowProps.length; while (length--) { key = shadowProps[length]; var nonEnum = nonEnums[key]; if (!(isProto && nonEnum) && (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) { result.push(key); } } } return result; } module.exports = keysIn; },{"../internal/arrayEach":63,"../internal/isIndex":121,"../internal/isLength":125,"../lang/isArguments":139,"../lang/isArray":140,"../lang/isFunction":142,"../lang/isObject":144,"../lang/isString":146,"../support":153}],151:[function(require,module,exports){ var keys = require('./keys'), toObject = require('../internal/toObject'); /** * Creates a two dimensional array of the key-value pairs for `object`, * e.g. `[[key1, value1], [key2, value2]]`. * * @static * @memberOf _ * @category Object * @param {Object} object The object to query. * @returns {Array} Returns the new array of key-value pairs. * @example * * _.pairs({ 'barney': 36, 'fred': 40 }); * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed) */ function pairs(object) { object = toObject(object); var index = -1, props = keys(object), length = props.length, result = Array(length); while (++index < length) { var key = props[index]; result[index] = [key, object[key]]; } return result; } module.exports = pairs; },{"../internal/toObject":135,"./keys":149}],152:[function(require,module,exports){ var baseValues = require('../internal/baseValues'), keys = require('./keys'); /** * Creates an array of the own enumerable property values of `object`. * * **Note:** Non-object values are coerced to objects. * * @static * @memberOf _ * @category Object * @param {Object} object The object to query. * @returns {Array} Returns the array of property values. * @example * * function Foo() { * this.a = 1; * this.b = 2; * } * * Foo.prototype.c = 3; * * _.values(new Foo); * // => [1, 2] (iteration order is not guaranteed) * * _.values('hi'); * // => ['h', 'i'] */ function values(object) { return baseValues(object, keys(object)); } module.exports = values; },{"../internal/baseValues":91,"./keys":149}],153:[function(require,module,exports){ /** Used for native method references. */ var arrayProto = Array.prototype, errorProto = Error.prototype, objectProto = Object.prototype; /** Native method references. */ var propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice; /** * An object environment feature flags. * * @static * @memberOf _ * @type Object */ var support = {}; (function(x) { var Ctor = function() { this.x = x; }, object = { '0': x, 'length': x }, props = []; Ctor.prototype = { 'valueOf': x, 'y': x }; for (var key in new Ctor) { props.push(key); } /** * Detect if `name` or `message` properties of `Error.prototype` are * enumerable by default (IE < 9, Safari < 5.1). * * @memberOf _.support * @type boolean */ support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') || propertyIsEnumerable.call(errorProto, 'name'); /** * Detect if `prototype` properties are enumerable by default. * * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1 * (if the prototype or a property on the prototype has been set) * incorrectly set the `[[Enumerable]]` value of a function's `prototype` * property to `true`. * * @memberOf _.support * @type boolean */ support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype'); /** * Detect if properties shadowing those on `Object.prototype` are non-enumerable. * * In IE < 9 an object's own properties, shadowing non-enumerable ones, * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug). * * @memberOf _.support * @type boolean */ support.nonEnumShadows = !/valueOf/.test(props); /** * Detect if own properties are iterated after inherited properties (IE < 9). * * @memberOf _.support * @type boolean */ support.ownLast = props[0] != 'x'; /** * Detect if `Array#shift` and `Array#splice` augment array-like objects * correctly. * * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array * `shift()` and `splice()` functions that fail to remove the last element, * `value[0]`, of array-like objects even though the "length" property is * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8, * while `splice()` is buggy regardless of mode in IE < 9. * * @memberOf _.support * @type boolean */ support.spliceObjects = (splice.call(object, 0, 1), !object[0]); /** * Detect lack of support for accessing string characters by index. * * IE < 8 can't access characters by index. IE 8 can only access characters * by index on string literals, not string objects. * * @memberOf _.support * @type boolean */ support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx'; }(1, 0)); module.exports = support; },{}],154:[function(require,module,exports){ /** * This method returns the first argument provided to it. * * @static * @memberOf _ * @category Utility * @param {*} value Any value. * @returns {*} Returns `value`. * @example * * var object = { 'user': 'fred' }; * * _.identity(object) === object; * // => true */ function identity(value) { return value; } module.exports = identity; },{}],155:[function(require,module,exports){ /** * A no-operation function that returns `undefined` regardless of the * arguments it receives. * * @static * @memberOf _ * @category Utility * @example * * var object = { 'user': 'fred' }; * * _.noop(object) === undefined; * // => true */ function noop() { // No operation performed. } module.exports = noop; },{}],156:[function(require,module,exports){ var baseProperty = require('../internal/baseProperty'), basePropertyDeep = require('../internal/basePropertyDeep'), isKey = require('../internal/isKey'); /** * Creates a function that returns the property value at `path` on a * given object. * * @static * @memberOf _ * @category Utility * @param {Array|string} path The path of the property to get. * @returns {Function} Returns the new function. * @example * * var objects = [ * { 'a': { 'b': { 'c': 2 } } }, * { 'a': { 'b': { 'c': 1 } } } * ]; * * _.map(objects, _.property('a.b.c')); * // => [2, 1] * * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c'); * // => [1, 2] */ function property(path) { return isKey(path) ? baseProperty(path) : basePropertyDeep(path); } module.exports = property; },{"../internal/baseProperty":86,"../internal/basePropertyDeep":87,"../internal/isKey":123}],157:[function(require,module,exports){ (function (process){ // vim:ts=4:sts=4:sw=4: /*! * * Copyright 2009-2012 Kris Kowal under the terms of the MIT * license found at http://github.com/kriskowal/q/raw/master/LICENSE * * With parts by Tyler Close * Copyright 2007-2009 Tyler Close under the terms of the MIT X license found * at http://www.opensource.org/licenses/mit-license.html * Forked at ref_send.js version: 2009-05-11 * * With parts by Mark Miller * Copyright (C) 2011 Google Inc. * * 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. * */ (function (definition) { "use strict"; // This file will function properly as a ================================================ FILE: ymall-web-ui/src/api/cart.js ================================================ import http from './public' // 添加商品到购物车 export const addCartProduct = (params) => { return http.fetchPost('/api/member/cart/addProduct', params) } // 获取购物车列表 export const getCartList = (params) => { return http.fetchGet('/api/member/cart/getCartList', params) } // 删除购物车商品 export const delCartProduct = (params) => { return http.fetchPost('/api/member/cart/delProduct', params) } // 修改购物车商品 export const editCartProduct = (params) => { return http.fetchPost('/api/member/cart/editProduct', params) } // 编辑全选购物车 export const editCheckAll = (params) => { return http.fetchPost('/api/member/cart/editCheckAll', params) } // 删除购物车已选中 export const delCartChecked = (params) => { return http.fetchPost('/api/member/cart/delChecked', params) } ================================================ FILE: ymall-web-ui/src/api/goods.js ================================================ import http from './public' // 商品列表 export const getAllGoods = (params) => { return http.fetchGet('/api/goods/getCategoryGoods', params) } // 商品详情 export const productDet = (params) => { return http.fetchGet('/api/goods/productDet', params) } // 商品列表 export const getSearch = (params) => { return http.fetchGet('/api/goods/search', params) } // 快速搜索 export const getQuickSearch = (params) => { return http.fetchGet('/api/goods/quickSearch', params) } ================================================ FILE: ymall-web-ui/src/api/index.js ================================================ import http from './public' // 登陆 export const memberLogin = (params) => { return http.fetchPost('/api/member/login', params) } // 极验验证码 export const geetest = (params) => { return http.fetchGet('/api/member/geetestInit?t=' + (new Date()).getTime(), params) } // 阿里验证码 export const vercode = (params) => { return http.fetchGet('/api/member/sendsms/' + params.phone, null) } // 验证手机号是否存在 export const checkPhone = (params) => { return http.fetchGet('/api/member/checkphone/' + params.value, null) } // 验证邮箱是否存在 export const checkEmail = (params) => { return http.fetchGet('/api/member/checkEmail', params) } // 验证手机号或邮箱是存在 export const checkAccount = (params) => { return http.fetchGet('/api/member/checkAccount', params) } // 发送手机或邮箱验证码 export const forgetVerCode = (params) => { return http.fetchGet('/api/member/forgetVerCode', params) } // 修改密码 export const updatePassword = (params) => { return http.fetchPost('/api/member/updatePassword', params) } // 用户信息 export const userInfo = (params) => { return http.fetchGet('/api/member/checkLogin', params) } // 注册账号 export const register = (params) => { return http.fetchPost('/api/member/register', params) } // 首页接口 export const productHome = (params) => { return http.fetchGet('/api/goods/home', params) } // 获取分类信息 export const cateList = (params) => { return http.fetchGet('/api/goods/cateList', params) } // 推荐板块 export const recommend = (params) => { return http.fetchGet('/api/goods/recommend', params) } ================================================ FILE: ymall-web-ui/src/api/member.js ================================================ import http from './public' // 获取会员地址列表 export const addressList = (params) => { return http.fetchGet('/api/member/addressList', params) } // 修改会员地址 export const addressUpdate = (params) => { return http.fetchPost('/api/member/addressUpdate', params) } // 新增会员地址 export const addressAdd = (params) => { return http.fetchPost('/api/member/addressAdd', params) } // 删除会员地址 export const addressDel = (params) => { return http.fetchPost('/api/member/addressDel', params) } // 会员修改头像 export const uploadImg = (params) => { return http.fetchPost('/api/member/uploadImg', params) } // 修改会员昵称 export const updateUsername = (params) => { return http.fetchPost('/api/member/updateUsername', params) } // 修改手机号 export const updatePhone = (params) => { return http.fetchPost('/api/member/updatePhone', params) } // 修改密码 export const updatePass = (params) => { return http.fetchPost('/api/member/updatePass', params) } // 退出登陆 export const logout = (params) => { return http.fetchGet('/api/member/logout', params) } // 更改邮箱发送邮件验证 export const sendEmailCode = (params) => { return http.fetchGet('/api/member/sendEmailCode', params) } // 修改邮箱 export const updateEmail = (params) => { return http.fetchPost('/api/member/updateEmail', params) } ================================================ FILE: ymall-web-ui/src/api/order.js ================================================ import http from './public' // 提交订单 export const submitOrder = (params) => { return http.fetchPost('/api/order/addOrder', params) } // 获取订单详情 export const getOrderDet = (params) => { return http.fetchGet('/api/order/getOrderDet', params) } // 订单支付 export const payment = (params) => { return http.fetchPost('/api/order/payment', params) } // 获取订单支付状态 export const getOrderStatus = (params) => { return http.fetchGet('/api/order/getOrderStatus', params) } // 获取会员订单 export const getOrderList = (params) => { return http.fetchGet('/api/order/orderList', params) } // 确认收货 export const confirmReceipt = (params) => { return http.fetchPost('/api/order/confirmReceipt', params) } // 删除订单 export const deleteOrder = (params) => { return http.fetchPost('/api/order/deleteOrder', params) } // 取消订单 export const cancelOrder = (params) => { return http.fetchPost('/api/order/cancelOrder', params) } ================================================ FILE: ymall-web-ui/src/api/public.js ================================================ import axios from 'axios' axios.defaults.timeout = 30000 axios.defaults.headers.post['Content-Type'] = 'application/x-www=form-urlencoded' export default { fetchGet (url, params = {}) { return new Promise((resolve, reject) => { axios.get(url, params).then(res => { resolve(res.data) }).catch(error => { reject(error) }) }) }, fetchPost (url, params = {}) { return new Promise((resolve, reject) => { axios.post(url, params).then(res => { resolve(res.data) }).catch(error => { reject(error) }) }) } } ================================================ FILE: ymall-web-ui/src/assets/icon/iconfont.css ================================================ @font-face {font-family: "iconfont"; src: url('iconfont.eot?t=1507378437149'); /* IE9*/ src: url('iconfont.eot?t=1507378437149#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAvMAAsAAAAAEQwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFZW8UlpY21hcAAAAYAAAAChAAACGDcJ1AZnbHlmAAACJAAAB3IAAAoA3a2KqGhlYWQAAAmYAAAALwAAADYPHRAEaGhlYQAACcgAAAAcAAAAJAfeA4tobXR4AAAJ5AAAABQAAAAoJ+kAAGxvY2EAAAn4AAAAFgAAABYMJgjSbWF4cAAAChAAAAAdAAAAIAEeASduYW1lAAAKMAAAAUUAAAJtPlT+fXBvc3QAAAt4AAAAVAAAAG9o9X8deJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/sc4gYGVgYOpk+kMAwNDP4RmfM1gxMjBwMDEwMrMgBUEpLmmMDgwVDyvZG7438AQw9zA0AwUZgTJAQAueAzveJzFkV0OgkAMhGf5U8QHA4YnjuDJPAEk3oLEJy/ERYZjwHRLTNB3bfNt0tm0u5kCyAGk4iYyILwQYPGUGqKe4hT1DHfVNS5SEvSs2LBlx5HTPCyL7kyrP7R9BPVbXt9pWq7ZCY6aW+CAUlLx1fmzCP97eh/neD62Sq6g39AXWTm2P9aO7Y+NIz/B1pGzYOfYrjk6chucHPmOeXBQrtpJLfUAAAB4nG1VW4zcVhn2f46Pjz2e8W18mZ3dGY/t7Hh3k8zu3Owk2+wlCSikSRqyTdKSFraNUKXQNkghLJckSiqhpFWFqBBFiArohdsD6hNvEYoqFAkVeIEHLqVKlQjaUsELSDxkHf4zmzQg8OX497H/y/ed//+PxCTp9jv0Cq1JVWlK6kp7pEOSBMpmiA3SgCgddMhm8CLmBa5B0ySNeBJ36E4IYsX1e9mgHShcMcGAJvSjXpZ2SArDwQKZh57fABgbr684kxMO/RqUamnzK8U+8gp4YTJhLmwtPrZl0e21qupa2XHGHOd5VWFMJUQ2DXgq8DWmlZTiNWbWvSvhNAmhPJbW9z9caY07j10ePN2YDDSACxegOt4yfrho1228ztb9qjPGrYpaq1eSTS6s3dRr1XKjfUPCgyDWa/Qq3YVYQ0TZxtD9oAl5kHv9IE8hazMD0vYgz3o4TaYevvnQCjy45/XDhy5dgktQvNyeKP4RHYlaYXQ0CoH8Hb/iP8vj6SEY/fHI4dcvh9CKjsRhGB0RPkvo87os0ZakS65Ul1rSJuR5izQnDaQljKED6QLkTQjQsQEblFZnIQ+BpYsQcOh7iRfdO1nkTZNh347svhfZEazuPk7I8d0b43SWHc6ytYkH3NNx8cxSfNp9AH6AFEm3pbt3cR2Wiqvke8X167cuXC8wNFj9UH/38QKEhcPZ+vpPxu5Lf6OWftu+bwyOLG0cF5aWyNX1pSW6JMkCHP2A3EAse6XL0rOSNBkhmCGiQUSDdprfeYsQnGcADwS8gN95G3ZgkOXDQTuJYqWB2eMq3HN9kUPDycRzRQa2d0ISt4WReRjekfI+rs8iZCHkePuuCf0Ni5il/Z4vpKRLf3rrxSAEMMuwqdPZBGUTIAzoyf+d687Pdy391i91a0OiA90qrq2qbIKpqwoH4Mrqnef9D1LqqNrq46rmUHpk/39/RQi1V9EmLW0/uL1E0c2rtSb838lf2CtPrthrZdMsr90TX9ujqKqyBz0rPFeVcTT7iFxiVc5PfkZVq7IuP4puxhU15woGJ+hnozU4Td7EnBpKB6Sj0qcwoyIDGsC7GJHIpnyYC5ozsQyeLWaGdgdAVO88LOAKDdoxMs9wSDqQjNYItZDUvlhFFrcHWc93leiuQKeKldbMd3nJ1OClCvg2fN/2dVuH6fVfqbquPt4ogW6VAI61h+znyqA9k+czyUC9pg6S6TwvVmqt1myrBU/VwnCu1SJvwkz45eNM+5em69rfPsEq5y0fwLeKE8IavBzOFC+gPRKRg1zX+cFPz01OzkG2ksFMHM8I4ZvC3t1LUILk3L5M/0i/IJWlQGpKsTQtdaQd0keRHcECdqoODO0ktTF1IkA+0irmU8pD4Glu0hxSLzAhh0hUYxoJUvKRLJLV9cnNxlRxUS/ebUzVAtjVhRi+hY/OMWf1/CedZ+P5eGWdhS+BfXb+3X1OcYa4pUqltP6BGP9DpvsgbRZXijVIG+TXnXW5uwzwHXi0uwvWv/pQ9bHzJ2yebJt019m3Q3DOLs//2doPfyk7ZQAcXiw7lYpTvtvXztG36AXsLLOIEasniXBI27MggC6I1ux7doJFl0SBoKAvMmOSDyM8ydvI9numcf/nntfK4FnkactfBEMvmn9wrZu6AbDzZ8UbmCw7/mT5P1JLfGr5IHN0csv2fbu48X7JPKWHlfW3Tf3HF9+4+MzFUTzv0CfpMnbZ1qjH5V2s3A5mnSh/X+HYADzsuz4GgeSTNV6rTA+BfPaVUxSGM5WGduzrsvLWs8/9nrNvHIcuRLNbzu154uTJJz5ybvPMJAlP5BN7ewC9vRPbTjQliv5uoL8JANyI6qKzp7EySxB+7M8CPsSYttMOiL1KXLkQMp7gDsCVNhclowQitkBsCFkuTgw5E/WBilgjLnabtAlt8Qiw7bg5HymjGQ/1hc0PTYvZOEu40p+BNN5wjsNdwRfLIqze+zJM24sw4AugYG8TN8/Fo5dkQS/fCCfDV56PJnt9PxxFEtw5cbfdCMxvB2ILYVlPNEclRtuDIBeFi5FhCdOj1ZoZWp7rupRQoqjcIkQrl52qPVMtqaY7hhyWuKoTIKo2tdmKLG8CtNLWODswm+t+vTzfOzCMpzkDypnCKprMACiF0SETFGVeUhiBUqVhMSC6FSYOoWXD8HEDYJQQYKjMaAlbtWESmRhJs6Ir6M9qVBQFrWg6l4VFwoRN1KBACCNEpZSoBAxzEkE6VrPmOBxkTijHz0zVUKdRG/fqhuW6jUaNylTdUMIo199TTOUM08Xwpb8ys6y8r5g6ecEi6IcQdA9UlrGysMc4tsE0ptq1qiBBZkwAU/E/WUn8A9u37zw9+PjO9rjCOA83Lx/d9sWlXm9rOdBVRdYq+DeROSUY0465rgnEsewwNEwMw6/P+QqQSjVu4ryqa6aOWwega6YbWklHSW9EhqEiZG+2XjGQnLFmaFsuQtF6/UWEicwwgQh1NlRlqjDNGatWOZHFhGBuvObZJUYE1yPrCBAj+6einEHM7PPMPPU7wYQY/g3PhnyyAAB4nGNgZGBgAGI7/veS8fw2Xxm4WRhA4Oq/Z6wI+n8tCwNzA5DLwcAEEgUAJNcKjwB4nGNgZGBgbvjfwBDDwgACQJKRARVwAQBHEAJzeJxjYWBgYH7JwMDCgB8DACNPAREAAAAAAHYAsAEcAd4CagLiAyoDYgUAAAB4nGNgZGBg4GKUZuBiAAEmEA/M/g/mMwAADPsBRwAAAHicZY9NTsMwEIVf+gekEqqoYIfkBWIBKP0Rq25YVGr3XXTfpk6bKokjx63UA3AejsAJOALcgDvwSCebNpbH37x5Y08A3OAHHo7fLfeRPVwyO3INF7gXrlN/EG6QX4SbaONVuEX9TdjHM6bCbXRheYPXuGL2hHdhDx18CNdwjU/hOvUv4Qb5W7iJO/wKt9Dx6sI+5l5XuI1HL/bHVi+cXqnlQcWhySKTOb+CmV7vkoWt0uqca1vEJlODoF9JU51pW91T7NdD5yIVWZOqCas6SYzKrdnq0AUb5/JRrxeJHoQm5Vhj/rbGAo5xBYUlDowxQhhkiMro6DtVZvSvsUPCXntWPc3ndFsU1P9zhQEC9M9cU7qy0nk6T4E9XxtSdXQrbsuelDSRXs1JErJCXta2VELqATZlV44RelzRiT8oZ0j/AAlabsgAAAB4nG3JSwqAMAxF0bx+rNZVFlqpEyOJQd29glPP8F5y9Mn0L8PBIyBiQMKICRkz4Rr3onqy1LBuCw83W7c1lVqlqca3N/FsRzBtkrS/m43oAU4lE+0=') format('woff'), url('iconfont.ttf?t=1507378437149') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ url('iconfont.svg?t=1507378437149#iconfont') format('svg'); /* iOS 4.1- */ } [class^="el-icon"], [class*=" el-icon"] { font-family:"iconfont" !important; /* 以下内容参照第三方图标库本身的规则 */ font-size: 16px; font-style:normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .el-icon-password:before { content: "\e613"; } .el-icon-info:before { content: "\e61c"; } .el-icon-youhui:before { content: "\e612"; } .el-icon-address:before { content: "\e60b"; } .el-icon-order:before { content: "\e693"; } .el-icon-out:before { content: "\e6c9"; } .el-icon-user:before { content: "\e616"; } .el-icon-shouhou:before { content: "\e779"; } ================================================ FILE: ymall-web-ui/src/assets/style/common.scss ================================================ .w { width: 1220px; margin: 0 auto; } .fl { float: left; } .fr { float: right; } .pr { position: relative; } .pa { position: absolute; } .active { color: #c81623; } .clearfix:after { content: ''; display: block; clear: both; line-height: 0; visibility: hidden; } .clearfix { *zoom: 1 } .ellipsis { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } // 删除按钮 .del-btn { display: block; cursor: pointer; width: 20px; height: 20px; background: url(/static/images/account-icon@2x.32d87deb02b3d1c3cc5bcff0c26314ac.png) -50px -60px no-repeat; background-size: 240px 107px; text-indent: -9999em; &:hover { background-position: -75px -60px; } } .layout-container { min-height: 400px; background: #E6E6E6; } .gray-box { overflow: hidden; background: #fff; border-radius: 8px; border: 1px solid #dcdcdc; border-color: rgba(0, 0, 0, .14); box-shadow: 0 3px 8px -6px rgba(0, 0, 0, .1); } ================================================ FILE: ymall-web-ui/src/assets/style/index.scss ================================================ // @import "reset"; @import "./reset.scss"; @import "common"; ================================================ FILE: ymall-web-ui/src/assets/style/mixin.scss ================================================ %block-center { display: flex; align-items: center; justify-content: center; } @mixin wh($w,$h:$w) { width: $w; height: $h; } ================================================ FILE: ymall-web-ui/src/assets/style/reset.scss ================================================ * { padding: 0; margin: 0; box-sizing: border-box; } body { font-family: PingFang SC, Helvetica Neue, Helvetica, Arial, Hiragino Sans GB, Microsoft Yahei, \\5FAE\8F6F\96C5\9ED1, STHeiti, \\534E\6587\7EC6\9ED1, sans-serif; color: #666; font-size: 14px; } a { font-style: normal; text-decoration: none; color: #5079d9; cursor: pointer; transition: all .15s ease-out; &:hover { color: #6b95ea; } } li { list-style-type: none; } input, img, button { border: none; outline: none; } h1, h2, h3, h4, h5, h6 { font-size: 100%; font-weight: 400; } i, em { font-style: normal; } input[type=number], textarea { -moz-appearance: textfield; } input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button, input[type="submit"], input[type="search"], input[type="reset"] { -webkit-appearance: none; } ::-webkit-input-placeholder { /* WebKit browsers */ color: #BEBEBE; } :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #BEBEBE; } ::-moz-placeholder { /* Mozilla Firefox 19+ */ color: #BEBEBE; } :-ms-input-placeholder { /* Internet Explorer 10+ */ color: #BEBEBE; } ================================================ FILE: ymall-web-ui/src/assets/style/theme.scss ================================================ // 主色 $main-col: #5079d9; // 头部 $head-bgc: #1a1a1a; // 字体颜色 $cc: #ccc; $c6: #666; $c9: #999; $c3: #333; $cf: #fff ================================================ FILE: ymall-web-ui/src/common/footer.vue ================================================ ================================================ FILE: ymall-web-ui/src/common/header.vue ================================================ ================================================ FILE: ymall-web-ui/src/components/YButton.vue ================================================ ================================================ FILE: ymall-web-ui/src/components/buynum.vue ================================================ ================================================ FILE: ymall-web-ui/src/components/countDown.vue ================================================ ================================================ FILE: ymall-web-ui/src/components/mallGoods.vue ================================================ ================================================ FILE: ymall-web-ui/src/components/popup.vue ================================================ ================================================ FILE: ymall-web-ui/src/components/product.vue ================================================ ================================================ FILE: ymall-web-ui/src/components/shelf.vue ================================================ ================================================ FILE: ymall-web-ui/src/main.js ================================================ import Vue from 'vue' import App from './App' import router from './router' import store from './store/' import VueLazyload from 'vue-lazyload' import infiniteScroll from 'vue-infinite-scroll' import VueCookie from 'vue-cookie' // import PicZoom from 'vue-piczoom' import { userInfo } from './api' import { Button, Pagination, Checkbox, Col, Menu, Submenu, MenuItem, MenuItemGroup, Icon, Autocomplete, Loading, Message, Notification, Steps, Step, Form, FormItem, Table, TableColumn, Input, Dialog, Select, Option, MessageBox, Cascader } from 'element-ui' import { getStore } from './utils/storage' import VueContentPlaceholders from 'vue-content-placeholders' Vue.use(VueContentPlaceholders) Vue.use(Button) Vue.use(Pagination) Vue.use(Checkbox) Vue.use(Col) Vue.use(Menu) Vue.use(Submenu) Vue.use(MenuItem) Vue.use(MenuItemGroup) Vue.use(Icon) Vue.use(Autocomplete) Vue.use(Steps) Vue.use(Step) Vue.use(Form) Vue.use(FormItem) Vue.use(Table) Vue.use(TableColumn) Vue.use(Input) Vue.use(Dialog) Vue.use(Select) Vue.use(Option) Vue.use(Cascader) Vue.component(MessageBox) Vue.use(Loading.directive) Vue.prototype.$loading = Loading.service Vue.prototype.$notify = Notification Vue.prototype.$message = Message Vue.prototype.$msgbox = MessageBox Vue.prototype.$confirm = MessageBox.confirm Vue.use(infiniteScroll) Vue.use(VueCookie) // Vue.use(PicZoom) Vue.use(VueLazyload, { // preLoad: 1.3, // error: 'dist/error.png', loading: '/static/images/load.gif' // attempt: 1 }) Vue.config.productionTip = false const whiteList = ['/home', '/goods', '/login', '/register', '/forgetPassword', '/goodsDetails', '/search', '/cart', '/refreshsearch', '/refreshgoods'] // 不需要登陆的页面 router.beforeEach(function (to, from, next) { let params = { params: { token: getStore('token') } } userInfo(params).then(res => { if (res.status === 500) { // 没登录 if (whiteList.indexOf(to.path) !== -1) { // 白名单 next() } else { next('/login') } } else { store.commit('RECORD_USERINFO', {info: res.result}) if (to.path === '/login') { // 跳转到 next({path: '/'}) } next() } }) }) /* eslint-disable no-new */ new Vue({ el: '#app', store, router, render: h => h(App) }) ================================================ FILE: ymall-web-ui/src/page/Cart/cart.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/Checkout/checkout.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/Goods/goods.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/Goods/goodsDetails.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/Home/home.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/Login/forgetPassword.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/Login/login.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/Login/register.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/Order/order.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/Order/payment.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/Order/paysuccess.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/Refresh/refreshsearch.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/Search/search.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/User/children/addressList.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/User/children/information.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/User/children/order.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/User/children/orderDetail.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/User/user.vue ================================================ ================================================ FILE: ymall-web-ui/src/page/index.vue ================================================ ================================================ FILE: ymall-web-ui/src/router/index.js ================================================ import Vue from 'vue' import Router from 'vue-router' const Index = () => import('/page/index.vue') const Login = () => import('/page/Login/login.vue') const Register = () => import('/page/Login/register.vue') const forgetPassword = () => import('/page/Login/forgetPassword.vue') const Home = () => import('/page/Home/home.vue') const GoodS = () => import('/page/Goods/goods.vue') const goodsDetails = () => import('/page/Goods/goodsDetails.vue') const Cart = () => import('/page/Cart/cart.vue') const order = () => import('/page/Order/order.vue') const user = () => import('/page/User/user.vue') const orderList = () => import('/page/User/children/order.vue') const information = () => import('/page/User/children/information.vue') const addressList = () => import('/page/User/children/addressList.vue') const checkout = () => import('/page/Checkout/checkout.vue') const payment = () => import('/page/Order/payment.vue') const paysuccess = () => import('/page/Order/paysuccess.vue') const Search = () => import('/page/Search/search.vue') const RefreshSearch = () => import('/page/Refresh/refreshsearch.vue') const orderDetail = () => import('/page/User/children/orderDetail.vue') Vue.use(Router) export default new Router({ mode: 'history', routes: [ { path: '/', component: Index, name: 'index', redirect: '/home', children: [ {path: 'home', component: Home}, {path: 'goods', component: GoodS}, {path: 'search', name: 'search', component: Search}, {path: 'goodsDetails', name: 'goodsDetails', component: goodsDetails} ] }, {path: '/login', name: 'login', component: Login}, {path: '/register', name: 'register', component: Register}, {path: '/forgetPassword', name: 'forgetPassword', component: forgetPassword}, {path: '/cart', name: 'cart', component: Cart}, {path: '/refreshsearch', name: 'refreshsearch', component: RefreshSearch}, { path: '/order', name: 'order', component: order, children: [ {path: 'paysuccess', name: 'paysuccess', component: paysuccess}, {path: 'payment', name: 'payment', component: payment} ] }, { path: '/user', name: 'user', component: user, redirect: '/user/orderList', children: [ {path: 'orderList', name: '订单列表', component: orderList}, {path: 'orderDetail', name: '订单详情', component: orderDetail}, {path: 'information', name: '账户资料', component: information}, {path: 'addressList', name: '收货地址', component: addressList} ] }, {path: '/checkout', name: 'checkout', component: checkout}, {path: '*', redirect: '/home'} ] }) ================================================ FILE: ymall-web-ui/src/store/action.js ================================================ export default {} ================================================ FILE: ymall-web-ui/src/store/index.js ================================================ import Vue from 'vue' import Vuex from 'vuex' import mutations from './mutations' import action from './action' Vue.use(Vuex) const state = { login: false, // 是否登录 userInfo: null, // 用户信息 cartList: [], // 加入购物车列表 showMoveImg: false, // 显示飞入图片 elLeft: 0, elTop: 0, moveImgUrl: null, cartPositionT: 0, // 购物车位置 cartPositionL: 0, receiveInCart: false, // 是否进入购物车 showCart: false // 是否显示购物车 } export default new Vuex.Store({ state, action, mutations }) ================================================ FILE: ymall-web-ui/src/store/mutation-types.js ================================================ export const INIT_BUYCART = 'INIT_BUYCART' export const ADD_CART = 'ADD_CART' export const GET_USERINFO = 'GET_USERINFO' export const RECORD_USERINFO = 'RECORD_USERINFO' export const ADD_ANIMATION = 'ADD_ANIMATION' export const SHOW_CART = 'SHOW_CART' export const REDUCE_CART = 'REDUCE_CART' export const EDIT_CART = 'EDIT_CART' ================================================ FILE: ymall-web-ui/src/store/mutations.js ================================================ import { INIT_BUYCART, ADD_CART, GET_USERINFO, RECORD_USERINFO, ADD_ANIMATION, SHOW_CART, REDUCE_CART, EDIT_CART } from './mutation-types' import { setStore, getStore } from '../utils/storage' export default { // 网页初始化时从本地缓存获取购物车数据 [INIT_BUYCART] (state) { let initCart = getStore('buyCart') if (initCart) { state.cartList = JSON.parse(initCart) } }, // 加入购物车 [ADD_CART] (state, {productId, salePrice, productName, productImg, limitNum, productNum = 1}) { let cart = state.cartList // 购物车 let flag = true let goods = { productId, salePrice, productName, productImg, limitNum } if (cart.length) { // 有内容 cart.forEach(item => { if (item.productId === productId) { if (item.productNum >= 0) { flag = false item.productNum += productNum } } }) } if (!cart.length || flag) { goods.productNum = productNum goods.checked = '1' cart.push(goods) } state.cartList = cart // 存入localStorage setStore('buyCart', cart) }, // 加入购物车动画 [ADD_ANIMATION] (state, {moveShow, elLeft, elTop, img, cartPositionT, cartPositionL, receiveInCart}) { state.showMoveImg = moveShow if (elLeft) { state.elLeft = elLeft state.elTop = elTop } state.moveImgUrl = img state.receiveInCart = receiveInCart if (cartPositionT) { state.cartPositionT = cartPositionT state.cartPositionL = cartPositionL } }, // 是否显示购物车 [SHOW_CART] (state, {showCart}) { // let timer = null state.showCart = showCart // clearTimeout(timer) // if (showCart) { // timer = setTimeout(() => { // state.showCart = false // }, 5000) // } }, // 移除商品 [REDUCE_CART] (state, {productId}) { let cart = state.cartList cart.forEach((item, i) => { if (item.productId === productId) { if (item.productNum > 1) { item.productNum-- } else { cart.splice(i, 1) } } }) state.cartList = cart // 存入localStorage setStore('buyCart', state.cartList) }, // 修改购物车 [EDIT_CART] (state, {productId, productNum, checked, checkedDelete}) { productId = Number(productId) let cart = state.cartList if (productNum) { cart.forEach((item, i) => { if (item.productId === productId) { item.productNum = productNum item.checked = checked } }) } else if (productId) { cart.forEach((item, i) => { console.log(productId) console.log(i) if (item.productId === productId) { console.log('splice') console.log(cart) cart.splice(i, 1) console.log(cart) } }) } else { cart.forEach((item) => { item.checked = checked ? '1' : '0' }) } state.cartList = cart // 存入localStorage setStore('buyCart', state.cartList) }, // 记录用户信息 [RECORD_USERINFO] (state, info) { state.userInfo = info state.login = true setStore('userInfo', info) }, // 获取用户信息 [GET_USERINFO] (state, info) { if (state.userInfo && (state.userInfo.username !== info.username)) { return } if (!state.login) { return } if (!info.message) { state.userInfo = {...info} } else { state.userInfo = null } } } ================================================ FILE: ymall-web-ui/src/utils/storage.js ================================================ /** * 存储localStorage */ export const setStore = (name, content) => { if (!name) return if (typeof content !== 'string') { content = JSON.stringify(content) } window.localStorage.setItem(name, content) } /** * 获取localStorage */ export const getStore = name => { if (!name) return return window.localStorage.getItem(name) } /** * 删除localStorage */ export const removeStore = name => { if (!name) return window.localStorage.removeItem(name) } ================================================ FILE: ymall-web-ui/static/.gitkeep ================================================ ================================================ FILE: ymall-web-ui/static/geetest/gt.js ================================================ /* initGeetest 1.0.0 * 用于加载id对应的验证码库,并支持宕机模式 * 暴露 initGeetest 进行验证码的初始化 * 一般不需要用户进行修改 */ (function (global, factory) { "use strict"; if (typeof module === "object" && typeof module.exports === "object") { // CommonJS module.exports = global.document ? factory(global, true) : function (w) { if (!w.document) { throw new Error("Geetest requires a window with a document"); } return factory(w); }; } else { factory(global); } })(typeof window !== "undefined" ? window : this, function (window, noGlobal) { "use strict"; if (typeof window === 'undefined') { throw new Error('Geetest requires browser environment'); } var document = window.document; var Math = window.Math; var head = document.getElementsByTagName("head")[0]; function _Object(obj) { this._obj = obj; } _Object.prototype = { _each: function (process) { var _obj = this._obj; for (var k in _obj) { if (_obj.hasOwnProperty(k)) { process(k, _obj[k]); } } return this; } }; function Config(config) { var self = this; new _Object(config)._each(function (key, value) { self[key] = value; }); } Config.prototype = { api_server: 'api.geetest.com', protocol: 'http://', type_path: '/gettype.php', fallback_config: { slide: { static_servers: ["static.geetest.com", "dn-staticdown.qbox.me"], type: 'slide', slide: '/static/js/geetest.0.0.0.js' }, fullpage: { static_servers: ["static.geetest.com", "dn-staticdown.qbox.me"], type: 'fullpage', fullpage: '/static/js/fullpage.0.0.0.js' } }, _get_fallback_config: function () { var self = this; if (isString(self.type)) { return self.fallback_config[self.type]; } else if (self.new_captcha) { return self.fallback_config.fullpage; } else { return self.fallback_config.slide; } }, _extend: function (obj) { var self = this; new _Object(obj)._each(function (key, value) { self[key] = value; }) } }; var isNumber = function (value) { return (typeof value === 'number'); }; var isString = function (value) { return (typeof value === 'string'); }; var isBoolean = function (value) { return (typeof value === 'boolean'); }; var isObject = function (value) { return (typeof value === 'object' && value !== null); }; var isFunction = function (value) { return (typeof value === 'function'); }; var callbacks = {}; var status = {}; var random = function () { return parseInt(Math.random() * 10000) + (new Date()).valueOf(); }; var loadScript = function (url, cb) { var script = document.createElement("script"); script.charset = "UTF-8"; script.async = true; script.onerror = function () { cb(true); }; var loaded = false; script.onload = script.onreadystatechange = function () { if (!loaded && (!script.readyState || "loaded" === script.readyState || "complete" === script.readyState)) { loaded = true; setTimeout(function () { cb(false); }, 0); } }; script.src = url; head.appendChild(script); }; var normalizeDomain = function (domain) { return domain.replace(/^https?:\/\/|\/$/g, ''); }; var normalizePath = function (path) { path = path.replace(/\/+/g, '/'); if (path.indexOf('/') !== 0) { path = '/' + path; } return path; }; var normalizeQuery = function (query) { if (!query) { return ''; } var q = '?'; new _Object(query)._each(function (key, value) { if (isString(value) || isNumber(value) || isBoolean(value)) { q = q + encodeURIComponent(key) + '=' + encodeURIComponent(value) + '&'; } }); if (q === '?') { q = ''; } return q.replace(/&$/, ''); }; var makeURL = function (protocol, domain, path, query) { domain = normalizeDomain(domain); var url = normalizePath(path) + normalizeQuery(query); if (domain) { url = protocol + domain + url; } return url; }; var load = function (protocol, domains, path, query, cb) { var tryRequest = function (at) { var url = makeURL(protocol, domains[at], path, query); loadScript(url, function (err) { if (err) { if (at >= domains.length - 1) { cb(true); } else { tryRequest(at + 1); } } else { cb(false); } }); }; tryRequest(0); }; var jsonp = function (domains, path, config, callback) { if (isObject(config.getLib)) { config._extend(config.getLib); callback(config); return; } if (config.offline) { callback(config._get_fallback_config()); return; } var cb = "geetest_" + random(); window[cb] = function (data) { if (data.status === 'success') { callback(data.data); } else if (!data.status) { callback(data); } else { callback(config._get_fallback_config()); } window[cb] = undefined; try { delete window[cb]; } catch (e) { } }; load(config.protocol, domains, path, { gt: config.gt, callback: cb }, function (err) { if (err) { callback(config._get_fallback_config()); } }); }; var throwError = function (errorType, config) { var errors = { networkError: '网络错误' }; if (typeof config.onError === 'function') { config.onError(errors[errorType]); } else { throw new Error(errors[errorType]); } }; var detect = function () { return !!window.Geetest; }; if (detect()) { status.slide = "loaded"; } var initGeetest = function (userConfig, callback) { var config = new Config(userConfig); if (userConfig.https) { config.protocol = 'https://'; } else if (!userConfig.protocol) { config.protocol = window.location.protocol + '//'; } jsonp([config.api_server || config.apiserver], config.type_path, config, function (newConfig) { var type = newConfig.type; var init = function () { config._extend(newConfig); callback(new window.Geetest(config)); }; callbacks[type] = callbacks[type] || []; var s = status[type] || 'init'; if (s === 'init') { status[type] = 'loading'; callbacks[type].push(init); load(config.protocol, newConfig.static_servers || newConfig.domains, newConfig[type] || newConfig.path, null, function (err) { if (err) { status[type] = 'fail'; throwError('networkError', config); } else { status[type] = 'loaded'; var cbs = callbacks[type]; for (var i = 0, len = cbs.length; i < len; i = i + 1) { var cb = cbs[i]; if (isFunction(cb)) { cb(); } } callbacks[type] = []; } }); } else if (s === "loaded") { init(); } else if (s === "fail") { throwError('networkError', config); } else if (s === "loading") { callbacks[type].push(init); } }); }; window.initGeetest = initGeetest; return initGeetest; }); ================================================ FILE: ymall-web-ui/static/js/3.c565d4ee71bdb3ac0105.js ================================================ webpackJsonp([3],{191:function(e,o,t){function A(e){t(334)}var l=t(96)(t(280),t(362),A,"data-v-90aa0c9c",null);e.exports=l.exports},192:function(e,o,t){function A(e){t(195)}var l=t(96)(t(193),t(196),A,"data-v-b42a215c",null);e.exports=l.exports},193:function(e,o,t){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.default={props:{text:{type:[String,Number],default:"一颗小按钮"},inputType:{type:[String],default:"button"},classStyle:{type:String,default:"default-btn"}},methods:{btnClick:function(e){this.$emit("btnClick",e)}}}},194:function(e,o,t){o=e.exports=t(163)(!0),o.push([e.i,".default-btn[data-v-b42a215c],.disabled-btn[data-v-b42a215c],.main-btn[data-v-b42a215c]{width:100px;height:30px;line-height:28px;vertical-align:middle}input[data-v-b42a215c]{display:inline-block;cursor:pointer;text-align:center}.gray-btn[data-v-b42a215c]{border:1px solid #d5d5d5;color:#646464}.default-btn[data-v-b42a215c]{border:1px solid #e1e1e1;border-radius:4px;font-size:12px;color:#646464;background-color:#f9f9f9;background-image:linear-gradient(180deg,#fff,#f9f9f9)}.default-btn[data-v-b42a215c]:hover{background-color:#eee;background-image:linear-gradient(180deg,#f5f5f5,#eee)}.main-btn[data-v-b42a215c]{border:1px solid #5c81e3;border-radius:4px;font-size:12px;color:#fff;background-color:#678ee7;background-image:linear-gradient(180deg,#678ee7,#5078df)}.main-btn[data-v-b42a215c]:hover{background-color:#6c8cd4;background-image:linear-gradient(180deg,#6c8cd4,#4769c2)}.disabled-btn[data-v-b42a215c]{cursor:not-allowed;border:1px solid #afafaf;border-radius:4px;font-size:12px;color:#fff;background-color:#a9a9a9;background-image:linear-gradient(180deg,#b8b8b8,#a9a9a9)}","",{version:3,sources:["D:/桌面/YMall-front/src/components/YButton.vue"],names:[],mappings:"AAEA,wFACE,YAAa,AACb,YAAa,AACb,iBAAkB,AAClB,qBAAuB,CACxB,AACD,uBACE,qBAAsB,AACtB,eAAgB,AAChB,iBAAmB,CAOpB,AAGD,2BACE,yBAA0B,AAC1B,aAAe,CAChB,AACD,8BACE,yBAA0B,AAC1B,kBAAmB,AACnB,eAAgB,AAChB,cAAe,AACf,yBAA0B,AAC1B,qDAAyD,CAC1D,AACD,oCACI,sBAAuB,AACvB,qDAAyD,CAC5D,AACD,2BACE,yBAA0B,AAC1B,kBAAmB,AACnB,eAAgB,AAChB,WAAY,AACZ,yBAA0B,AAC1B,wDAA4D,CAC7D,AACD,iCACI,yBAA0B,AAC1B,wDAA4D,CAC/D,AACD,+BACE,mBAAoB,AACpB,yBAA0B,AAC1B,kBAAmB,AACnB,eAAgB,AAChB,WAAY,AACZ,yBAA0B,AAC1B,wDAA4D,CAC7D",file:"YButton.vue",sourcesContent:['\n@charset "UTF-8";\n.default-btn[data-v-b42a215c], .main-btn[data-v-b42a215c], .disabled-btn[data-v-b42a215c] {\n width: 100px;\n height: 30px;\n line-height: 28px;\n vertical-align: middle;\n}\ninput[data-v-b42a215c] {\n display: inline-block;\n cursor: pointer;\n text-align: center;\n /*> span {*/\n /*user-select: none;*/\n /*display: inline-block;*/\n /*width: 100%;*/\n /*height: 100%;*/\n /*}*/\n}\n\n/*灰色的按钮*/\n.gray-btn[data-v-b42a215c] {\n border: 1px solid #d5d5d5;\n color: #646464;\n}\n.default-btn[data-v-b42a215c] {\n border: 1px solid #e1e1e1;\n border-radius: 4px;\n font-size: 12px;\n color: #646464;\n background-color: #f9f9f9;\n background-image: linear-gradient(180deg, #fff, #f9f9f9);\n}\n.default-btn[data-v-b42a215c]:hover {\n background-color: #eee;\n background-image: linear-gradient(180deg, #f5f5f5, #eee);\n}\n.main-btn[data-v-b42a215c] {\n border: 1px solid #5c81e3;\n border-radius: 4px;\n font-size: 12px;\n color: #fff;\n background-color: #678ee7;\n background-image: linear-gradient(180deg, #678ee7, #5078df);\n}\n.main-btn[data-v-b42a215c]:hover {\n background-color: #6c8cd4;\n background-image: linear-gradient(180deg, #6c8cd4, #4769c2);\n}\n.disabled-btn[data-v-b42a215c] {\n cursor: not-allowed;\n border: 1px solid #afafaf;\n border-radius: 4px;\n font-size: 12px;\n color: #fff;\n background-color: #a9a9a9;\n background-image: linear-gradient(180deg, #b8b8b8, #a9a9a9);\n}\n'],sourceRoot:""}])},195:function(e,o,t){var A=t(194);"string"==typeof A&&(A=[[e.i,A,""]]),A.locals&&(e.exports=A.locals);t(164)("1a40afec",A,!0)},196:function(e,o){e.exports={render:function(){var e=this,o=e.$createElement;return(e._self._c||o)("input",{class:e.classStyle,attrs:{type:e.inputType,readonly:"",disabled:"disabled-btn"===e.classStyle},domProps:{value:e.text},on:{click:function(o){e.btnClick(o)}}})},staticRenderFns:[]}},202:function(e,o,t){"use strict";t.d(o,"s",function(){return l}),t.d(o,"e",function(){return i}),t.d(o,"g",function(){return r}),t.d(o,"r",function(){return a}),t.d(o,"q",function(){return n}),t.d(o,"f",function(){return s}),t.d(o,"i",function(){return c}),t.d(o,"j",function(){return p}),t.d(o,"k",function(){return d}),t.d(o,"l",function(){return B}),t.d(o,"m",function(){return b}),t.d(o,"h",function(){return f}),t.d(o,"o",function(){return g}),t.d(o,"a",function(){return u}),t.d(o,"b",function(){return C}),t.d(o,"n",function(){return h}),t.d(o,"p",function(){return m}),t.d(o,"c",function(){return x}),t.d(o,"d",function(){return _});var A=t(98),l=function(e){return A.a.fetchGet("/goods/allGoods",e)},i=function(e){return A.a.fetchPost("/member/cartList",e)},r=function(e){return A.a.fetchPost("/member/addCart",e)},a=function(e){return A.a.fetchPost("/member/cartEdit",e)},n=function(e){return A.a.fetchPost("/member/editCheckAll",e)},s=function(e){return A.a.fetchPost("/member/cartDel",e)},c=function(e){return A.a.fetchPost("/member/addressList",e)},p=function(e){return A.a.fetchPost("/member/updateAddress",e)},d=function(e){return A.a.fetchPost("/member/addAddress",e)},B=function(e){return A.a.fetchPost("/member/delAddress",e)},b=function(e){return A.a.fetchPost("/member/addOrder",e)},f=function(e){return A.a.fetchPost("/member/payOrder",e)},g=function(e){return A.a.fetchGet("/member/orderList",e)},u=function(e){return A.a.fetchGet("/member/orderDetail",e)},C=function(e){return A.a.fetchPost("/member/cancelOrder",e)},h=function(e){return A.a.fetchGet("/goods/productDet",e)},m=function(e){return A.a.fetchGet("/member/delOrder",e)},x=function(e){return A.a.fetchGet("/goods/search",e)},_=function(e){return A.a.fetchQuickSearch("http://127.0.0.1:9200/item/itemList/_search?q=productName: "+e)}},203:function(e,o,t){var A=t(1),l=t(3),i=t(43),r=t(204),a=t(11).f;e.exports=function(e){var o=l.Symbol||(l.Symbol=i?{}:A.Symbol||{});"_"==e.charAt(0)||e in o||a(o,e,{value:r.f(e)})}},204:function(e,o,t){o.f=t(2)},205:function(e,o,t){var A=t(106),l=t(46).concat("length","prototype");o.f=Object.getOwnPropertyNames||function(e){return A(e,l)}},206:function(e,o,t){"use strict";Object.defineProperty(o,"__esModule",{value:!0});var A=t(192),l=t.n(A);o.default={data:function(){return{}},methods:{open1:function(){this.$notify.info({title:"法律声明",message:"此仅为个人练习开源模仿项目,仅供学习参考,承担不起任何法律问题"})},open2:function(){this.$notify.info({title:"隐私条款",message:"本网站将不会严格遵守有关法律法规和本隐私政策所载明的内容收集、使用您的信息"})},open3:function(){this.$notify({title:"离线帮助",message:"没人会帮助你,请自己靠自己",type:"warning"})},open4:function(){this.$notify.info({title:"支付方式",message:"支持支付宝、微信等方式捐赠"})},open5:function(){this.$notify({title:"送货政策",message:"本网站所有商品购买后不会发货,将用作捐赠",type:"warning"})}},components:{YButton:l.a}}},207:function(e,o,t){o=e.exports=t(163)(!0),o.push([e.i,".footer[data-v-dc0a64e2]{padding:50px 0 20px;border-top:1px solid #e6e6e6;background:#fafafa;margin-top:60px;height:350px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.container[data-v-dc0a64e2]{width:1220px}.siteinfo[data-v-dc0a64e2]{height:100px;padding:50px 0 130px;border-bottom:1px solid #e6e6e6;position:relative}.c0[data-v-dc0a64e2]{width:149px;line-height:1;float:left}.c1[data-v-dc0a64e2]{color:#646464;font-size:12px;padding:0 0 14px}.c2[data-v-dc0a64e2]{color:#c3c3c3;font-size:12px;padding:6px 0}.c3[data-v-dc0a64e2]{color:#969696}.c4[data-v-dc0a64e2]{position:absolute;right:0;overflow:hidden;line-height:34px}.tel[data-v-dc0a64e2]{font-size:30px;line-height:1;color:#646464;top:-2px;position:relative}.c5[data-v-dc0a64e2]{color:#646464;right:-70px;position:relative}.time[data-v-dc0a64e2]{margin-top:5px;right:-4px;position:relative}.online[data-v-dc0a64e2],.time[data-v-dc0a64e2]{clear:both;width:241px;font-size:12px;line-height:18px;color:#c3c3c3;text-align:right}.button[data-v-dc0a64e2]{width:130px;height:34px;font-size:14px;color:#5079d9;border:1px solid #dcdcdc;margin-top:8px}.copyright[data-v-dc0a64e2]{color:#434d55;font-size:12px;padding:40px 0 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:left;-ms-flex-align:left;align-items:left}.privacy[data-v-dc0a64e2]{float:left;margin:0 0 0 12px}.content-c0[data-v-dc0a64e2]{color:#5079d9;cursor:pointer;text-decoration:none}.content-c0[data-v-dc0a64e2]:hover{color:#3a5fcd}.content-c1[data-v-dc0a64e2]{float:left;line-height:12px;padding:1px 10px 0;border-left:1px solid #ccc}.content-c2[data-v-dc0a64e2]{float:left;height:15px;line-height:15px;color:#757575}.cop[data-v-dc0a64e2]{clear:both;padding:10px 0 0;height:15px}.content-c3[data-v-dc0a64e2]{margin-right:20px;color:#bdbdbd;font-size:12px;height:12px;line-height:1}","",{version:3,sources:["D:/桌面/YMall-front/src/common/footer.vue"],names:[],mappings:"AACA,yBACE,oBAAqB,AACrB,6BAA8B,AAC9B,mBAAoB,AACpB,gBAAiB,AACjB,aAAc,AACd,oBAAqB,AACrB,oBAAqB,AACrB,aAAc,AACd,4BAA6B,AAC7B,6BAA8B,AAC1B,0BAA2B,AACvB,sBAAuB,AAC/B,yBAA0B,AACtB,sBAAuB,AACnB,kBAAoB,CAC7B,AACD,4BACE,YAAc,CACf,AACD,2BACE,aAAc,AACd,qBAAsB,AACtB,gCAAiC,AACjC,iBAAmB,CACpB,AACD,qBACE,YAAa,AACb,cAAe,AACf,UAAY,CACb,AACD,qBACE,cAAe,AACf,eAAgB,AAChB,gBAAkB,CACnB,AACD,qBACE,cAAe,AACf,eAAgB,AAChB,aAAe,CAChB,AACD,qBACE,aAAe,CAChB,AACD,qBACE,kBAAmB,AACnB,QAAS,AACT,gBAAiB,AACjB,gBAAkB,CACnB,AACD,sBACE,eAAgB,AAChB,cAAe,AACf,cAAe,AACf,SAAU,AACV,iBAAmB,CACpB,AACD,qBACE,cAAe,AACf,YAAa,AACb,iBAAmB,CACpB,AACD,uBACE,eAAgB,AAChB,WAAY,AACZ,iBAAmB,CAOpB,AACD,gDAPE,WAAY,AACZ,YAAa,AACb,eAAgB,AAChB,iBAAkB,AAClB,cAAe,AACf,gBAAkB,CASnB,AACD,yBACE,YAAa,AACb,YAAa,AACb,eAAgB,AAChB,cAAe,AACf,yBAA0B,AAC1B,cAAgB,CACjB,AACD,4BACE,cAAe,AACf,eAAgB,AAChB,iBAAkB,AAClB,oBAAqB,AACrB,oBAAqB,AACrB,aAAc,AACd,uBAAwB,AACpB,oBAAqB,AACjB,gBAAkB,CAC3B,AACD,0BACE,WAAY,AACZ,iBAAmB,CACpB,AACD,6BACE,cAAe,AACf,eAAgB,AAChB,oBAAsB,CACvB,AACD,mCACI,aAAe,CAClB,AACD,6BACE,WAAY,AACZ,iBAAkB,AAClB,mBAAoB,AACpB,0BAA4B,CAC7B,AACD,6BACE,WAAY,AACZ,YAAa,AACb,iBAAkB,AAClB,aAAe,CAChB,AACD,sBACE,WAAY,AACZ,iBAAkB,AAClB,WAAa,CACd,AACD,6BACE,kBAAmB,AACnB,cAAe,AACf,eAAgB,AAChB,YAAa,AACb,aAAe,CAChB",file:"footer.vue",sourcesContent:["\n.footer[data-v-dc0a64e2] {\n padding: 50px 0 20px;\n border-top: 1px solid #e6e6e6;\n background: #fafafa;\n margin-top: 60px;\n height: 350px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n.container[data-v-dc0a64e2] {\n width: 1220px;\n}\n.siteinfo[data-v-dc0a64e2] {\n height: 100px;\n padding: 50px 0 130px;\n border-bottom: 1px solid #e6e6e6;\n position: relative;\n}\n.c0[data-v-dc0a64e2] {\n width: 149px;\n line-height: 1;\n float: left;\n}\n.c1[data-v-dc0a64e2] {\n color: #646464;\n font-size: 12px;\n padding: 0 0 14px;\n}\n.c2[data-v-dc0a64e2] {\n color: #c3c3c3;\n font-size: 12px;\n padding: 6px 0;\n}\n.c3[data-v-dc0a64e2] {\n color: #969696;\n}\n.c4[data-v-dc0a64e2] {\n position: absolute;\n right: 0;\n overflow: hidden;\n line-height: 34px;\n}\n.tel[data-v-dc0a64e2] {\n font-size: 30px;\n line-height: 1;\n color: #646464;\n top: -2px;\n position: relative;\n}\n.c5[data-v-dc0a64e2] {\n color: #646464;\n right: -70px;\n position: relative;\n}\n.time[data-v-dc0a64e2] {\n margin-top: 5px;\n right: -4px;\n position: relative;\n clear: both;\n width: 241px;\n font-size: 12px;\n line-height: 18px;\n color: #c3c3c3;\n text-align: right;\n}\n.online[data-v-dc0a64e2] {\n clear: both;\n width: 241px;\n font-size: 12px;\n line-height: 18px;\n color: #c3c3c3;\n text-align: right;\n}\n.button[data-v-dc0a64e2] {\n width: 130px;\n height: 34px;\n font-size: 14px;\n color: #5079d9;\n border: 1px solid #dcdcdc;\n margin-top: 8px;\n}\n.copyright[data-v-dc0a64e2] {\n color: #434d55;\n font-size: 12px;\n padding: 40px 0 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: left;\n -ms-flex-align: left;\n align-items: left;\n}\n.privacy[data-v-dc0a64e2] {\n float: left;\n margin: 0 0 0 12px;\n}\n.content-c0[data-v-dc0a64e2] {\n color: #5079d9;\n cursor: pointer;\n text-decoration: none;\n}\n.content-c0[data-v-dc0a64e2]:hover {\n color: #3A5FCD;\n}\n.content-c1[data-v-dc0a64e2] {\n float: left;\n line-height: 12px;\n padding: 1px 10px 0;\n border-left: 1px solid #ccc;\n}\n.content-c2[data-v-dc0a64e2] {\n float: left;\n height: 15px;\n line-height: 15px;\n color: #757575;\n}\n.cop[data-v-dc0a64e2] {\n clear: both;\n padding: 10px 0 0;\n height: 15px;\n}\n.content-c3[data-v-dc0a64e2] {\n margin-right: 20px;\n color: #bdbdbd;\n font-size: 12px;\n height: 12px;\n line-height: 1;\n}\n"],sourceRoot:""}])},208:function(e,o,t){var A=t(207);"string"==typeof A&&(A=[[e.i,A,""]]),A.locals&&(e.exports=A.locals);t(164)("68d21b77",A,!0)},209:function(e,o,t){function A(e){t(208)}var l=t(96)(t(206),t(210),A,"data-v-dc0a64e2",null);e.exports=l.exports},210:function(e,o){e.exports={render:function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("div",{staticClass:"footer"},[t("div",{staticClass:"container"},[t("div",{staticClass:"siteinfo"},[t("ul",{staticClass:"c0"},[t("h3",{staticClass:"c1"},[e._v("订单服务")]),e._v(" "),t("ul",[t("li",{staticClass:"c2"},[t("router-link",{attrs:{to:"/thanks"}},[t("a",{staticClass:"c3"},[e._v("购买指南")])])],1),e._v(" "),t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",on:{click:e.open4}},[e._v("支付方式")])]),e._v(" "),t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",on:{click:e.open5}},[e._v("送货政策")])])])]),e._v(" "),e._m(0),e._v(" "),e._m(1),e._v(" "),e._m(2),e._v(" "),e._m(3),e._v(" "),e._m(4),e._v(" "),t("ul",{staticClass:"c4"},[e._m(5),e._v(" "),t("li",{staticClass:"time"},[e._v("周一至周日 10:00-23:00(限Starrer或捐赠人联系)")]),e._v(" "),t("li",{staticClass:"online"},[t("y-button",{staticClass:"button",attrs:{text:"在线帮助"},on:{btnClick:e.open3}})],1)])]),e._v(" "),t("div",{staticClass:"copyright"},[t("h4",{staticClass:"content-c2"},[e._v("Copyright ©2017, yuu.cn Co., Ltd. All Rights Reserved.本网站设计内容大部分属锤子科技")]),e._v(" "),t("ul",{staticClass:"privacy"},[t("li",{staticClass:"content-c1"},[t("a",{staticClass:"content-c0",on:{click:e.open1}},[e._v("法律声明")])]),e._v(" "),t("li",{staticClass:"content-c1"},[t("a",{staticClass:"content-c0",on:{click:e.open2}},[e._v("隐私条款")])]),e._v(" "),e._m(6)])]),e._v(" "),e._m(7)])])},staticRenderFns:[function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("ul",{staticClass:"c0"},[t("h3",{staticClass:"c1"},[e._v("服务支持")]),e._v(" "),t("ul",[t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",attrs:{target:"_blank",href:"https://github.com/yuu"}},[e._v("官方开源")])]),e._v(" "),t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",attrs:{target:"_blank",href:"https://github.com/yuu/YMall-front"}},[e._v("项目前端")])]),e._v(" "),t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",attrs:{target:"_blank",href:"https://github.com/yuu/YMall"}},[e._v("项目后端")])])])])},function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("ul",{staticClass:"c0"},[t("h3",{staticClass:"c1"},[e._v("自助服务")]),e._v(" "),t("ul",[t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",attrs:{target:"_blank",href:"http://blog.yuu.cn"}},[e._v("个人博客")])]),e._v(" "),t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",attrs:{target:"_blank",href:"http://blog.yuu.cn/intro/"}},[e._v("个人简介")])]),e._v(" "),t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",attrs:{target:"_blank",href:"https://www.bilibili.com/video/av15860053/"}},[e._v("个人视频")])])])])},function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("ul",{staticClass:"c0"},[t("h3",{staticClass:"c1"},[e._v("其他项目")]),e._v(" "),t("ul",[t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",attrs:{target:"_blank",href:"http://xpay.yuu.cn"}},[e._v("XPay支付系统")])]),e._v(" "),t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",attrs:{target:"_blank",href:"http://shouji.baidu.com/software/11783429.html"}},[e._v("数据共享")])]),e._v(" "),t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",attrs:{target:"_blank",href:"https://github.com/yuu"}},[e._v("待开发...")])])])])},function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("ul",{staticClass:"c0"},[t("h3",{staticClass:"c1"},[e._v("友情链接")]),e._v(" "),t("ul",[t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",attrs:{target:"_blank",href:"http://yucccc.com/"}},[e._v("宇cccc")])]),e._v(" "),t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",attrs:{target:"_blank",href:"http://www.smartisan.com"}},[e._v("Smartisan")])]),e._v(" "),t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",attrs:{target:"_blank",href:"https://cn.vuejs.org/"}},[e._v("Vue")])])])])},function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("ul",{staticClass:"c0"},[t("h3",{staticClass:"c1"},[e._v("关注我吧")]),e._v(" "),t("ul",[t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",attrs:{target:"_blank",href:"http://wpa.qq.com/msgrd?v=3&uin=1012139570&site=qq&menu=yes"}},[e._v("腾讯 QQ")])]),e._v(" "),t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",attrs:{target:"_blank",href:"http://weibo.com/2255094222/profile"}},[e._v("新浪微博")])]),e._v(" "),t("li",{staticClass:"c2"},[t("a",{staticClass:"c3",attrs:{target:"_blank",href:"mailto:1012139570@qq.com"}},[e._v("官方邮箱")])])])])},function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("li",{staticClass:"tel"},[t("a",{staticClass:"c5",attrs:{href:"http://wpa.qq.com/msgrd?v=3&uin=1012139570&site=qq&menu=yes",target:"_blank"}},[e._v("1012139570")])])},function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("li",{staticClass:"content-c1"},[t("a",{staticClass:"content-c0",attrs:{target:"_blank",href:"https://github.com/yuu"}},[e._v("开发者中心")])])},function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("div",{staticClass:"cop"},[t("a",{staticClass:"content-c3",attrs:{href:"http://www.miibeian.gov.cn/",target:"_blank"}},[t("span",{staticClass:"content-c3"},[e._v("蜀ICP备16030308号-1")]),e._v(" "),t("span",{staticClass:"content-c3"},[e._v("蜀ICP证16030308号")])])])}]}},211:function(e,o,t){"use strict";Object.defineProperty(o,"__esModule",{value:!0});var A=t(214),l=t.n(A),i=t(99),r=t.n(i),a=t(192),n=t.n(a),s=t(100),c=(t.n(s),t(202)),p=t(42),d=t(23),B=t(227);t.n(B);o.default={data:function(){return{user:{},st:!1,cartShow:!1,positionL:0,positionT:0,timerCartShow:null,input:"",choosePage:1,searchResults:[],timeout:null,token:""}},computed:r()({},t.i(s.mapState)(["cartList","login","receiveInCart","showCart","userInfo"]),{totalPrice:function(){var e=0;return this.cartList&&this.cartList.forEach(function(o){e+=o.productNum*o.salePrice}),e},totalNum:function(){var e=0;return this.cartList&&this.cartList.forEach(function(o){e+=o.productNum}),e}}),methods:r()({},t.i(s.mapMutations)(["ADD_CART","INIT_BUYCART","ADD_ANIMATION","SHOW_CART","REDUCE_CART","RECORD_USERINFO","EDIT_CART"]),{handleIconClick:function(e){"/search"===this.$route.path?this.$router.push({path:"/refreshsearch",query:{key:this.input}}):this.$router.push({path:"/search",query:{key:this.input}})},changePage:function(e){this.choosePage=e},loadAll:function(){var e=this;t.i(c.d)(this.input).then(function(o){var t=[],A=5;o.hits.hits.length<=5&&(A=o.hits.hits.length);for(var l=0;l=100;var o=document.querySelector(".num");this.positionL=o.getBoundingClientRect().left,this.positionT=o.getBoundingClientRect().top,this.ADD_ANIMATION({cartPositionL:this.positionL,cartPositionT:this.positionT})}},_loginOut:function(){var e={params:{token:this.token}};t.i(p.c)(e).then(function(e){t.i(d.c)("buyCart"),window.location.href="/"})},getPage:function(){"/"===this.$route.path||"/home"===this.$route.path?this.changePage(1):"/goods"===this.$route.path?this.changePage(2):"/thanks"===this.$route.path?this.changePage(3):this.changePage(4)}}),mounted:function(){this.token=t.i(d.a)("token"),this.login?this._getCartList():this.INIT_BUYCART(),this.navFixed(),this.getPage(),window.addEventListener("scroll",this.navFixed),window.addEventListener("resize",this.navFixed),void 0!==l()(this.$route.query.key)&&(this.input=this.$route.query.key)},components:{YButton:n.a}}},212:function(e,o,t){e.exports={default:t(215),__esModule:!0}},213:function(e,o,t){e.exports={default:t(216),__esModule:!0}},214:function(e,o,t){"use strict";function A(e){return e&&e.__esModule?e:{default:e}}o.__esModule=!0;var l=t(213),i=A(l),r=t(212),a=A(r),n="function"==typeof a.default&&"symbol"==typeof i.default?function(e){return typeof e}:function(e){return e&&"function"==typeof a.default&&e.constructor===a.default&&e!==a.default.prototype?"symbol":typeof e};o.default="function"==typeof a.default&&"symbol"===n(i.default)?function(e){return void 0===e?"undefined":n(e)}:function(e){return e&&"function"==typeof a.default&&e.constructor===a.default&&e!==a.default.prototype?"symbol":void 0===e?"undefined":n(e)}},215:function(e,o,t){t(222),t(108),t(223),t(224),e.exports=t(3).Symbol},216:function(e,o,t){t(103),t(109),e.exports=t(204).f("iterator")},217:function(e,o,t){var A=t(44),l=t(101),i=t(97);e.exports=function(e){var o=A(e),t=l.f;if(t)for(var r,a=t(e),n=i.f,s=0;a.length>s;)n.call(e,r=a[s++])&&o.push(r);return o}},218:function(e,o,t){var A=t(16);e.exports=Array.isArray||function(e){return"Array"==A(e)}},219:function(e,o,t){var A=t(45)("meta"),l=t(12),i=t(15),r=t(11).f,a=0,n=Object.isExtensible||function(){return!0},s=!t(25)(function(){return n(Object.preventExtensions({}))}),c=function(e){r(e,A,{value:{i:"O"+ ++a,w:{}}})},p=function(e,o){if(!l(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,A)){if(!n(e))return"F";if(!o)return"E";c(e)}return e[A].i},d=function(e,o){if(!i(e,A)){if(!n(e))return!0;if(!o)return!1;c(e)}return e[A].w},B=function(e){return s&&b.NEED&&n(e)&&!i(e,A)&&c(e),e},b=e.exports={KEY:A,NEED:!1,fastKey:p,getWeak:d,onFreeze:B}},220:function(e,o,t){var A=t(97),l=t(41),i=t(24),r=t(102),a=t(15),n=t(104),s=Object.getOwnPropertyDescriptor;o.f=t(8)?s:function(e,o){if(e=i(e),o=r(o,!0),n)try{return s(e,o)}catch(e){}if(a(e,o))return l(!A.f.call(e,o),e[o])}},221:function(e,o,t){var A=t(24),l=t(205).f,i={}.toString,r="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(e){try{return l(e)}catch(e){return r.slice()}};e.exports.f=function(e){return r&&"[object Window]"==i.call(e)?a(e):l(A(e))}},222:function(e,o,t){"use strict";var A=t(1),l=t(15),i=t(8),r=t(9),a=t(107),n=t(219).KEY,s=t(25),c=t(47),p=t(26),d=t(45),B=t(2),b=t(204),f=t(203),g=t(217),u=t(218),C=t(4),h=t(24),m=t(102),x=t(41),_=t(105),k=t(221),v=t(220),w=t(11),y=t(44),q=v.f,z=w.f,W=k.f,D=A.Symbol,Y=A.JSON,S=Y&&Y.stringify,U=B("_hidden"),E=B("toPrimitive"),Q={}.propertyIsEnumerable,O=c("symbol-registry"),M=c("symbols"),I=c("op-symbols"),F=Object.prototype,G="function"==typeof D,j=A.QObject,P=!j||!j.prototype||!j.prototype.findChild,X=i&&s(function(){return 7!=_(z({},"a",{get:function(){return z(this,"a",{value:7}).a}})).a})?function(e,o,t){var A=q(F,o);A&&delete F[o],z(e,o,t),A&&e!==F&&z(F,o,A)}:z,R=function(e){var o=M[e]=_(D.prototype);return o._k=e,o},T=G&&"symbol"==typeof D.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof D},Z=function(e,o,t){return e===F&&Z(I,o,t),C(e),o=m(o,!0),C(t),l(M,o)?(t.enumerable?(l(e,U)&&e[U][o]&&(e[U][o]=!1),t=_(t,{enumerable:x(0,!1)})):(l(e,U)||z(e,U,x(1,{})),e[U][o]=!0),X(e,o,t)):z(e,o,t)},L=function(e,o){C(e);for(var t,A=g(o=h(o)),l=0,i=A.length;i>l;)Z(e,t=A[l++],o[t]);return e},N=function(e,o){return void 0===o?_(e):L(_(e),o)},K=function(e){var o=Q.call(this,e=m(e,!0));return!(this===F&&l(M,e)&&!l(I,e))&&(!(o||!l(this,e)||!l(M,e)||l(this,U)&&this[U][e])||o)},H=function(e,o){if(e=h(e),o=m(o,!0),e!==F||!l(M,o)||l(I,o)){var t=q(e,o);return!t||!l(M,o)||l(e,U)&&e[U][o]||(t.enumerable=!0),t}},$=function(e){for(var o,t=W(h(e)),A=[],i=0;t.length>i;)l(M,o=t[i++])||o==U||o==n||A.push(o);return A},V=function(e){for(var o,t=e===F,A=W(t?I:h(e)),i=[],r=0;A.length>r;)!l(M,o=A[r++])||t&&!l(F,o)||i.push(M[o]);return i};G||(D=function(){if(this instanceof D)throw TypeError("Symbol is not a constructor!");var e=d(arguments.length>0?arguments[0]:void 0),o=function(t){this===F&&o.call(I,t),l(this,U)&&l(this[U],e)&&(this[U][e]=!1),X(this,e,x(1,t))};return i&&P&&X(F,e,{configurable:!0,set:o}),R(e)},a(D.prototype,"toString",function(){return this._k}),v.f=H,w.f=Z,t(205).f=k.f=$,t(97).f=K,t(101).f=V,i&&!t(43)&&a(F,"propertyIsEnumerable",K,!0),b.f=function(e){return R(B(e))}),r(r.G+r.W+r.F*!G,{Symbol:D});for(var J="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ee=0;J.length>ee;)B(J[ee++]);for(var oe=y(B.store),te=0;oe.length>te;)f(oe[te++]);r(r.S+r.F*!G,"Symbol",{for:function(e){return l(O,e+="")?O[e]:O[e]=D(e)},keyFor:function(e){if(!T(e))throw TypeError(e+" is not a symbol!");for(var o in O)if(O[o]===e)return o},useSetter:function(){P=!0},useSimple:function(){P=!1}}),r(r.S+r.F*!G,"Object",{create:N,defineProperty:Z,defineProperties:L,getOwnPropertyDescriptor:H,getOwnPropertyNames:$,getOwnPropertySymbols:V}),Y&&r(r.S+r.F*(!G||s(function(){var e=D();return"[null]"!=S([e])||"{}"!=S({a:e})||"{}"!=S(Object(e))})),"JSON",{stringify:function(e){if(void 0!==e&&!T(e)){for(var o,t,A=[e],l=1;arguments.length>l;)A.push(arguments[l++]);return o=A[1],"function"==typeof o&&(t=o),!t&&u(o)||(o=function(e,o){if(t&&(o=t.call(this,e,o)),!T(o))return o}),A[1]=o,S.apply(Y,A)}}}),D.prototype[E]||t(10)(D.prototype,E,D.prototype.valueOf),p(D,"Symbol"),p(Math,"Math",!0),p(A.JSON,"JSON",!0)},223:function(e,o,t){t(203)("asyncIterator")},224:function(e,o,t){t(203)("observable")},225:function(e,o,t){o=e.exports=t(163)(!0),o.push([e.i,'.el-breadcrumb:after,.el-breadcrumb:before,.el-button-group:after,.el-button-group:before,.el-form-item:after,.el-form-item:before,.el-form-item__content:after,.el-form-item__content:before{display:table;content:""}.el-checkbox-button__original,.el-pagination--small .arrow.disabled,.el-table--hidden,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*{visibility:hidden}.el-breadcrumb:after,.el-button-group:after,.el-form-item:after,.el-form-item__content:after{clear:both}.el-autocomplete-suggestion.is-loading li:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-dialog__header:after,.el-dialog__header:before{display:table;content:""}.el-dialog__header:after{clear:both}@font-face{font-family:element-icons;src:url('+t(166)+') format("woff"),url('+t(165)+') format("truetype");font-weight:400;font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-arrow-down:before{content:"\\E600"}.el-icon-arrow-left:before{content:"\\E601"}.el-icon-arrow-right:before{content:"\\E602"}.el-icon-arrow-up:before{content:"\\E603"}.el-icon-caret-bottom:before{content:"\\E604"}.el-icon-caret-left:before{content:"\\E605"}.el-icon-caret-right:before{content:"\\E606"}.el-icon-caret-top:before{content:"\\E607"}.el-icon-check:before{content:"\\E608"}.el-icon-circle-check:before{content:"\\E609"}.el-icon-circle-close:before{content:"\\E60A"}.el-icon-circle-cross:before{content:"\\E60B"}.el-icon-close:before{content:"\\E60C"}.el-icon-upload:before{content:"\\E60D"}.el-icon-d-arrow-left:before{content:"\\E60E"}.el-icon-d-arrow-right:before{content:"\\E60F"}.el-icon-d-caret:before{content:"\\E610"}.el-icon-date:before{content:"\\E611"}.el-icon-delete:before{content:"\\E612"}.el-icon-document:before{content:"\\E613"}.el-icon-edit:before{content:"\\E614"}.el-icon-information:before{content:"\\E615"}.el-icon-loading:before{content:"\\E616"}.el-icon-menu:before{content:"\\E617"}.el-icon-message:before{content:"\\E618"}.el-icon-minus:before{content:"\\E619"}.el-icon-more:before{content:"\\E61A"}.el-icon-picture:before{content:"\\E61B"}.el-icon-plus:before{content:"\\E61C"}.el-icon-search:before{content:"\\E61D"}.el-icon-setting:before{content:"\\E61E"}.el-icon-share:before{content:"\\E61F"}.el-icon-star-off:before{content:"\\E620"}.el-icon-star-on:before{content:"\\E621"}.el-icon-time:before{content:"\\E622"}.el-icon-warning:before{content:"\\E623"}.el-icon-delete2:before{content:"\\E624"}.el-icon-upload2:before{content:"\\E627"}.el-icon-view:before{content:"\\E626"}.el-icon-loading{animation:rotating 1s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#48576a}.el-pagination:after,.el-pagination:before{display:table;content:""}.el-pagination:after{clear:both}.el-pagination button,.el-pagination span{display:inline-block;font-size:13px;min-width:28px;height:28px;line-height:28px;vertical-align:top;box-sizing:border-box}.el-pagination .el-select .el-input{width:110px}.el-pagination .el-select .el-input input{padding-right:25px;border-radius:2px;height:28px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#20a0ff}.el-pagination button.disabled{color:#e4e4e4;background-color:#fff;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination .btn-next,.el-pagination .btn-prev{background:50% no-repeat #fff;background-size:16px;border:1px solid #d1dbe5;cursor:pointer;margin:0;color:#97a8be}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px}.el-pagination .btn-prev{border-radius:2px 0 0 2px;border-right:0}.el-pagination .btn-next{border-radius:0 2px 2px 0;border-left:0}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .el-pager li{border-radius:2px}.el-pagination__sizes{margin:0 10px 0 0}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;border-color:#d1dbe5}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#20a0ff}.el-pagination__jump{margin-left:10px}.el-pagination__total{margin:0 10px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{border:1px solid #d1dbe5;border-radius:2px;line-height:18px;padding:4px 2px;width:30px;text-align:center;margin:0 6px;box-sizing:border-box;transition:border .3s;-moz-appearance:textfield}.el-pager,.el-pager li{vertical-align:top;display:inline-block;margin:0}.el-pagination__editor::-webkit-inner-spin-button,.el-pagination__editor::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__editor:focus{outline:0;border-color:#20a0ff}.el-autocomplete-suggestion__wrap,.el-pager li{border:1px solid #d1dbe5;box-sizing:border-box}.el-pager{-moz-user-select:none;user-select:none;list-style:none;font-size:0;padding:0}.el-date-table,.el-pager,.el-radio{-webkit-user-select:none;-ms-user-select:none}.el-date-table,.el-radio,.el-time-panel{-moz-user-select:none}.el-pager li{padding:0 4px;border-right:0;background:#fff;font-size:13px;min-width:28px;height:28px;line-height:28px;text-align:center}.el-pager li:last-child{border-right:1px solid #d1dbe5}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#97a8be}.el-pager li.active+li{border-left:0;padding-left:5px}.el-pager li:hover{color:#20a0ff}.el-pager li.active{border-color:#20a0ff;background-color:#20a0ff;color:#fff;cursor:default}.el-dialog{position:absolute;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%);background:#fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;margin-bottom:50px}.el-dialog--tiny{width:30%}.el-dialog--small{width:50%}.el-dialog--large{width:90%}.el-dialog--full{width:100%;top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{top:0;right:0;bottom:0;left:0;position:fixed;overflow:auto;margin:0}.el-autocomplete,.el-dropdown{display:inline-block;position:relative}.el-dialog__header{padding:20px 20px 0}.el-dialog__headerbtn{float:right;background:0 0;border:none;outline:0;padding:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#bfcbd9}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#20a0ff}.el-dialog__title{line-height:1;font-size:16px;font-weight:700;color:#1f2d3d}.el-dialog__body{padding:30px 20px;color:#48576a;font-size:14px}.el-dialog__footer{padding:10px 20px 15px;text-align:right;box-sizing:border-box}.dialog-fade-enter-active{animation:dialog-fade-in .3s}.dialog-fade-leave-active{animation:dialog-fade-out .3s}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete-suggestion{margin:5px 0;box-shadow:0 0 6px 0 rgba(0,0,0,.04),0 2px 4px 0 rgba(0,0,0,.12)}.el-autocomplete-suggestion li{list-style:none;line-height:36px;padding:0 10px;margin:0;cursor:pointer;color:#48576a;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li:hover{background-color:#e4e8f1}.el-autocomplete-suggestion li.highlighted{background-color:#20a0ff;color:#fff}.el-autocomplete-suggestion li:active{background-color:#0082e6}.el-autocomplete-suggestion.is-loading li:hover,.el-dropdown-menu{background-color:#fff}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #d1dbe5}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-autocomplete-suggestion__wrap{max-height:280px;overflow:auto;background-color:#fff;padding:6px 0;border-radius:2px}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-dropdown{color:#48576a;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-right:5px;padding-left:5px}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown-menu{margin:5px 0;border:1px solid #d1dbe5;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.12);padding:6px 0;z-index:10;position:absolute;top:0;left:0;min-width:100px}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 10px;margin:0;cursor:pointer}.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#e4e8f1;color:#48576a}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bfcbd9;pointer-events:none}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #d1dbe5}.el-dropdown-menu__item--divided:before{content:"";height:6px;display:block;margin:0 -10px;background-color:#fff}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;font-size:14px;color:#48576a;padding:0 20px;cursor:pointer;position:relative;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box;white-space:nowrap}.el-menu{border-radius:2px;list-style:none;position:relative;margin:0;padding-left:0;background-color:#eef1f6}.el-menu:after,.el-menu:before{display:table;content:""}.el-menu:after{clear:both}.el-menu li{list-style:none}.el-menu--dark{background-color:#324157}.el-menu--dark .el-menu-item,.el-menu--dark .el-submenu__title{color:#bfcbd9}.el-menu--dark .el-menu-item:hover,.el-menu--dark .el-submenu__title:hover{background-color:#48576a}.el-menu--dark .el-submenu .el-menu{background-color:#1f2d3d}.el-menu--dark .el-submenu .el-menu .el-menu-item:hover{background-color:#48576a}.el-menu--horizontal .el-menu-item{float:left;height:60px;line-height:60px;margin:0;cursor:pointer;position:relative;box-sizing:border-box;border-bottom:5px solid transparent}.el-menu--horizontal .el-menu-item a,.el-menu--horizontal .el-menu-item a:hover{color:inherit}.el-menu--horizontal .el-submenu{float:left;position:relative}.el-menu--horizontal .el-submenu>.el-menu{position:absolute;top:65px;left:0;border:1px solid #d1dbe5;padding:5px 0;background-color:#fff;z-index:100;min-width:100%;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-menu--horizontal .el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:5px solid transparent}.el-menu--horizontal .el-submenu .el-menu-item{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px}.el-menu--horizontal .el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:5px;color:#97a8be;margin-top:-3px}.el-menu--horizontal .el-menu-item:hover,.el-menu--horizontal .el-submenu__title:hover{background-color:#eef1f6}.el-menu--horizontal>.el-menu-item:hover,.el-menu--horizontal>.el-submenu.is-active .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{border-bottom:5px solid #20a0ff}.el-menu--horizontal.el-menu--dark .el-menu-item:hover,.el-menu--horizontal.el-menu--dark .el-submenu__title:hover{background-color:#324157}.el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item:hover,.el-menu--horizontal.el-menu--dark .el-submenu .el-submenu-title:hover,.el-menu-item:hover{background-color:#d1dbe5}.el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item,.el-menu--horizontal.el-menu--dark .el-submenu .el-submenu-title{color:#48576a}.el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item.is-active,.el-menu-item.is-active{color:#20a0ff}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-ms-transform:none;transform:none}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center}.el-menu-item *{vertical-align:middle}.el-menu-item:first-child{margin-left:0}.el-menu-item:last-child{margin-right:0}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center}.el-submenu .el-menu{background-color:#e4e8f1}.el-submenu .el-menu-item:hover,.el-submenu__title:hover{background-color:#d1dbe5}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-ms-transform:rotate(180deg);transform:rotate(180deg)}.el-submenu.is-active .el-submenu__title{border-bottom-color:#20a0ff}.el-submenu__title{position:relative}.el-submenu__title *{vertical-align:middle}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;transition:transform .3s;font-size:12px}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding-top:15px;line-height:normal;font-size:14px;padding-left:20px;color:#97a8be}.el-radio-button__inner,.el-radio-group,.el-radio__input{line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{transition:.2s;opacity:0}.el-radio{color:#1f2d3d;cursor:pointer;white-space:nowrap}.el-radio+.el-radio{margin-left:15px}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0}.el-radio__input.is-focus .el-radio__inner{border-color:#20a0ff}.el-radio__input.is-checked .el-radio__inner{border-color:#20a0ff;background:#20a0ff}.el-radio__input.is-checked .el-radio__inner:after{-ms-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-disabled .el-radio__inner{background-color:#eef1f6;border-color:#d1dbe5;cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:#eef1f6}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#d1dbe5;border-color:#d1dbe5}.el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:#fff}.el-radio__input.is-disabled+.el-radio__label{color:#bbb;cursor:not-allowed}.el-radio__inner{border:1px solid #bfcbd9;width:18px;height:18px;border-radius:50%;cursor:pointer;box-sizing:border-box}.el-radio__inner:hover{border-color:#20a0ff}.el-radio__inner:after{width:6px;height:6px;border-radius:50%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-ms-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);transition:transform .15s cubic-bezier(.71,-.46,.88,.6)}.el-switch__core,.el-switch__label{width:46px;height:22px;cursor:pointer}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio-button,.el-radio-button__inner{position:relative;display:inline-block}.el-radio__label{font-size:14px;padding-left:5px}.el-radio-group{display:inline-block;font-size:0}.el-radio-group .el-radio{font-size:14px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #bfcbd9;border-radius:4px 0 0 4px;box-shadow:none!important}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button__inner{white-space:nowrap;background:#fff;border:1px solid #bfcbd9;border-left:0;color:#1f2d3d;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:10px 15px;font-size:14px;border-radius:0}.el-radio-button__inner:hover{color:#20a0ff}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1;left:-999px}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#20a0ff;border-color:#20a0ff;box-shadow:-1px 0 0 0 #20a0ff}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#bfcbd9;cursor:not-allowed;background-image:none;background-color:#eef1f6;border-color:#d1dbe5;box-shadow:none}.el-radio-button--large .el-radio-button__inner{padding:11px 19px;font-size:16px;border-radius:0}.el-radio-button--small .el-radio-button__inner{padding:7px 9px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner{padding:4px;font-size:12px;border-radius:0}.el-switch{display:inline-block;position:relative;font-size:14px;line-height:22px;height:22px;vertical-align:middle}.el-switch__label,.el-switch__label *{position:absolute;font-size:14px;display:inline-block}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-switch.is-disabled .el-switch__core{border-color:#e4e8f1!important;background:#e4e8f1!important}.el-switch.is-disabled .el-switch__core span{background-color:#fbfdff!important}.el-switch.is-disabled .el-switch__core~.el-switch__label *{color:#fbfdff!important}.el-switch.is-checked .el-switch__core{border-color:#20a0ff;background-color:#20a0ff}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:.2s;left:0;top:0}.el-switch__label *{line-height:1;top:4px;color:#fff}.el-switch__label--left i{left:6px}.el-switch__label--right i{right:6px}.el-switch__input{display:none}.el-switch__core{margin:0;display:inline-block;position:relative;border:1px solid #bfcbd9;outline:0;border-radius:12px;box-sizing:border-box;background:#bfcbd9;transition:border-color .3s,background-color .3s}.el-switch__core .el-switch__button{top:0;left:0;position:absolute;border-radius:100%;transition:transform .3s;width:16px;height:16px;background-color:#fff}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #d1dbe5;border-radius:2px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);box-sizing:border-box;margin:5px 0}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#20a0ff;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover,.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#e4e8f1}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected:after{position:absolute;right:10px;font-family:element-icons;content:"\\E608";font-size:11px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:8px 10px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#48576a;height:36px;line-height:1.5;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.selected{color:#fff;background-color:#20a0ff}.el-select-dropdown__item.selected.hover{background-color:#1c8de0}.el-select-dropdown__item span{line-height:1.5!important}.el-select-dropdown__item.is-disabled{color:#bfcbd9;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-group{margin:0;padding:0}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select-group__wrap{list-style:none;margin:0;padding:0}.el-select-group__title{padding-left:10px;font-size:12px;color:#999;height:30px;line-height:30px}.el-select{display:inline-block;position:relative}.el-select:hover .el-input__inner{border-color:#8391a5}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#20a0ff}.el-select .el-input .el-input__icon{font-size:12px;transition:transform .3s;line-height:16px;top:50%;cursor:pointer}.el-select .el-input .el-input__icon,.el-select .el-input .el-input__icon.is-show-close{color:#bfcbd9;-ms-transform:translateY(-50%) rotate(180deg);transform:translateY(-50%) rotate(180deg)}.el-select .el-input .el-input__icon.is-show-close{transition:0s;width:16px;height:16px;font-size:14px;right:8px;text-align:center;border-radius:100%}.el-select .el-input .el-input__icon.is-show-close:hover{color:#97a8be}.el-select .el-input .el-input__icon.is-reverse{-ms-transform:translateY(-50%);transform:translateY(-50%)}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#d1dbe5}.el-select>.el-input{display:block}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{height:24px;line-height:24px;box-sizing:border-box;margin:3px 0 3px 6px}.el-select__input{border:none;outline:0;padding:0;margin-left:10px;color:#666;font-size:14px;vertical-align:baseline;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#bfcbd9;line-height:18px;font-size:12px}.el-select__close:hover{color:#97a8be}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%)}.el-table,.el-table td,.el-table th{box-sizing:border-box;position:relative}.el-select__tag{display:inline-block;height:24px;line-height:24px;font-size:14px;border-radius:4px;color:#fff;background-color:#20a0ff}.el-select__tag .el-icon-close{font-size:12px}.el-table{overflow:hidden;width:100%;max-width:100%;background-color:#fff;border:1px solid #dfe6ec;font-size:14px;color:#1f2d3d}.el-table .el-tooltip.cell{white-space:nowrap;min-width:50px}.el-table td,.el-table th{height:40px;min-width:0;text-overflow:ellipsis;vertical-align:middle}.el-table:after,.el-table:before{content:"";position:absolute;background-color:#dfe6ec;z-index:1}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.is-left,.el-table th.is-left{text-align:left}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #dfe6ec}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table .cell,.el-table th>div{padding-left:18px;padding-right:18px;box-sizing:border-box;text-overflow:ellipsis}.el-table:before{left:0;bottom:0;width:100%;height:1px}.el-table:after{top:0;right:0;width:1px;height:100%}.el-table .caret-wrapper,.el-table th>.cell{position:relative;display:inline-block;vertical-align:middle}.el-table th{white-space:nowrap;overflow:hidden;background-color:#eef1f6;text-align:left}.el-table th.is-sortable{cursor:pointer}.el-table th>div{display:inline-block;line-height:40px;overflow:hidden;white-space:nowrap}.el-table td>div{box-sizing:border-box}.el-table th.required>div:before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table th>.cell{word-wrap:normal;text-overflow:ellipsis;line-height:30px;width:100%;box-sizing:border-box}.el-table th>.cell.highlight{color:#20a0ff}.el-table .caret-wrapper{cursor:pointer;margin-left:5px;margin-top:-2px;width:16px;height:30px;overflow:visible;overflow:initial}.el-table .cell,.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table .sort-caret{display:inline-block;width:0;height:0;border:0;content:"";position:absolute;left:3px;z-index:2}.el-table .sort-caret.ascending,.el-table .sort-caret.descending{border-right:5px solid transparent;border-left:5px solid transparent}.el-table .sort-caret.ascending{top:9px;border-top:none;border-bottom:5px solid #97a8be}.el-table .sort-caret.descending{bottom:9px;border-top:5px solid #97a8be;border-bottom:none}.el-table .ascending .sort-caret.ascending{border-bottom-color:#48576a}.el-table .descending .sort-caret.descending{border-top-color:#48576a}.el-table td.gutter{width:0}.el-table .cell{white-space:normal;word-break:break-all;line-height:24px}.el-badge__content,.el-message__group p,.el-progress-bar__inner,.el-steps.is-horizontal,.el-tabs__nav,.el-tag,.el-time-spinner,.el-tree-node,.el-upload-list__item-name{white-space:nowrap}.el-table tr input[type=checkbox]{margin:0}.el-table tr{background-color:#fff}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-table__empty-text{position:absolute;left:50%;top:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#5e7382}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;font-size:12px;transition:transform .2s ease-in-out;height:40px}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expand-icon--expanded{-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expanded-cell{padding:20px 50px;background-color:#fbfdff;box-shadow:inset 0 2px 0 #f4f4f4}.el-table__expanded-cell:hover{background-color:#fbfdff!important}.el-table--fit{border-right:0;border-bottom:0}.el-table--border th,.el-table__fixed-right-patch{border-bottom:1px solid #dfe6ec}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--border td,.el-table--border th{border-right:1px solid #dfe6ec}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;box-shadow:1px 0 8px #d3d4d6;overflow-x:hidden}.el-table__fixed-right:before,.el-table__fixed:before{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#dfe6ec;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#eef1f6}.el-table__fixed-right{top:0;left:auto;right:0;box-shadow:-1px 0 8px #d3d4d6}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-header-wrapper thead div{background-color:#eef1f6;color:#1f2d3d}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #dfe6ec;background-color:#fbfdff;color:#1f2d3d}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #dfe6ec}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed}.el-table__footer-wrapper thead div,.el-table__header-wrapper thead div{background-color:#eef1f6;color:#1f2d3d}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#fbfdff;color:#1f2d3d}.el-table__body-wrapper{overflow:auto;position:relative}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#fafafa;background-clip:padding-box}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td{background:#edf7ff}.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:#eef1f6}.el-table__body tr.current-row>td{background:#edf7ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #dfe6ec;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;margin-left:5px;cursor:pointer}.el-table__column-filter-trigger i{color:#97a8be}.el-table--enable-row-transition .el-table__body td{transition:background-color .25s ease}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active,.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:opacity .2s linear}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#eef1f6;background-clip:padding-box}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #d1dbe5;border-radius:2px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.12);box-sizing:border-box;margin:2px 0}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#e4e8f1;color:#48576a}.el-table-filter__list-item.is-active{background-color:#20a0ff;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #d1dbe5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#8391a5;cursor:pointer;font-size:14px;padding:0 3px}.el-table-filter__bottom button:hover{color:#20a0ff}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#bfcbd9;cursor:not-allowed}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;min-width:224px;user-select:none}.el-date-table td{width:32px;height:32px;box-sizing:border-box;text-align:center;cursor:pointer}.el-date-table td.next-month,.el-date-table td.prev-month{color:#ddd}.el-date-table td.today{color:#20a0ff;position:relative}.el-date-table td.today:before{content:" ";position:absolute;top:0;right:0;width:0;height:0;border-top:.5em solid #20a0ff;border-left:.5em solid transparent}.el-month-table td .cell,.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px}.el-date-table td.available:hover{background-color:#e4e8f1}.el-date-table td.in-range{background-color:#d2ecff}.el-date-table td.in-range:hover{background-color:#afddff}.el-date-table td.current:not(.disabled),.el-date-table td.end-date,.el-date-table td.start-date{background-color:#20a0ff!important;color:#fff}.el-date-table td.disabled{background-color:#f4f4f4;opacity:1;cursor:not-allowed;color:#ccc}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-date-table td.week{font-size:80%;color:#8391a5}.el-month-table,.el-year-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-date-table th{padding:5px;color:#8391a5;font-weight:400}.el-date-table.is-week-mode .el-date-table__row:hover{background-color:#e4e8f1}.el-date-table.is-week-mode .el-date-table__row.current{background-color:#d2ecff}.el-month-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-month-table td .cell{color:#48576a}.el-month-table td .cell:hover{background-color:#e4e8f1}.el-month-table td.disabled .cell{background-color:#f4f4f4;cursor:not-allowed;color:#ccc}.el-month-table td.current:not(.disabled) .cell{background-color:#20a0ff!important;color:#fff}.el-year-table .el-icon{color:#97a8be}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td .cell{color:#48576a}.el-year-table td .cell:hover{background-color:#e4e8f1}.el-year-table td.disabled .cell{background-color:#f4f4f4;cursor:not-allowed;color:#ccc}.el-year-table td.current:not(.disabled) .cell{background-color:#20a0ff!important;color:#fff}.el-date-range-picker{min-width:520px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker.has-sidebar.has-time{min-width:766px}.el-date-range-picker.has-sidebar{min-width:620px}.el-date-range-picker.has-time{min-width:660px}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header button{float:left}.el-date-range-picker__header div{font-size:14px;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-right .el-date-range-picker__header button{float:right}.el-date-range-picker__content.is-right .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#97a8be}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-time-range-picker{min-width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-picker-panel,.el-time-range-picker__body{border-radius:2px;border:1px solid #d1dbe5}.el-picker-panel{color:#48576a;box-shadow:0 2px 6px #ccc;background:#fff;line-height:20px;margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#48576a;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{background-color:#e4e8f1}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#20a0ff}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#97a8be;border:0;background:0 0;cursor:pointer;outline:0;margin-top:3px}.el-date-picker__header-label.active,.el-date-picker__header-label:hover,.el-picker-panel__icon-btn:hover{color:#20a0ff}.el-picker-panel__link-btn{cursor:pointer;color:#20a0ff;text-decoration:none;padding:15px;font-size:12px}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;box-sizing:border-box;padding-top:6px;background-color:#fbfdff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{min-width:254px}.el-date-picker .el-picker-panel__content{min-width:224px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker.has-sidebar.has-time{min-width:434px}.el-date-picker.has-sidebar{min-width:370px}.el-date-picker.has-time{min-width:324px}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header-label{font-size:14px;padding:0 5px;line-height:22px;text-align:center;cursor:pointer}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px}.time-select-item.selected:not(.disabled){background-color:#20a0ff;color:#fff}.time-select-item.selected:not(.disabled):hover{background-color:#20a0ff}.time-select-item.disabled{color:#d1dbe5;cursor:not-allowed}.time-select-item:hover{background-color:#e4e8f1;cursor:pointer}.el-fade-in-enter-active,.el-fade-in-leave-active,.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active,.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active,.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-ms-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-ms-transform:scaleY(1);transform:scaleY(1);-ms-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-ms-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-ms-transform:scaleY(1);transform:scaleY(1);-ms-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-ms-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-ms-transform:scale(1);transform:scale(1);-ms-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-ms-transform:scale(.45);transform:scale(.45)}.collapse-transition{transition:height .3s ease-in-out,padding-top .3s ease-in-out,padding-bottom .3s ease-in-out}.horizontal-collapse-transition{transition:width .3s ease-in-out,padding-left .3s ease-in-out,padding-right .3s ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-ms-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-date-editor{position:relative;display:inline-block}.el-date-editor .el-picker-panel{position:absolute;min-width:180px;box-sizing:border-box;box-shadow:0 2px 6px #ccc;background:#fff;z-index:10;top:41px}.el-date-editor.el-input{width:193px}.el-date-editor--daterange.el-input{width:220px}.el-date-editor--datetimerange.el-input{width:350px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33%}.el-time-spinner.has-seconds .el-time-spinner__wrapper:nth-child(2){margin-left:1%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#e4e8f1;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#fff}.el-time-spinner__item.disabled{color:#d1dbe5;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #d1dbe5;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-ms-user-select:none;user-select:none}.el-popover,.el-tabs--border-card{box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-slider__button,.el-slider__button-wrapper{-webkit-user-select:none;-moz-user-select:none}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:":";top:50%;color:#fff;position:absolute;font-size:14px;margin-top:-15px;line-height:16px;background-color:#20a0ff;height:32px;z-index:-1;left:0;right:0;box-sizing:border-box;padding-top:6px;text-align:left}.el-time-panel__content:after{left:50%;margin-left:-2px}.el-time-panel__content:before{padding-left:50%;margin-right:-2px}.el-time-panel__content.has-seconds:after{left:66.66667%}.el-time-panel__content.has-seconds:before{padding-left:33.33333%}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#8391a5}.el-time-panel__btn.confirm{font-weight:800;color:#20a0ff}.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:2px;border:1px solid #d1dbe5;padding:10px;z-index:2000;font-size:12px}.el-popover .popper__arrow,.el-popover .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popover .popper__arrow{border-width:6px}.el-popover .popper__arrow:after{content:" ";border-width:6px}.el-popover[x-placement^=top]{margin-bottom:12px}.el-popover[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#d1dbe5;border-bottom-width:0}.el-popover[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popover[x-placement^=bottom]{margin-top:12px}.el-popover[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#d1dbe5}.el-popover[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popover[x-placement^=right]{margin-left:12px}.el-popover[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#d1dbe5;border-left-width:0}.el-popover[x-placement^=right] .popper__arrow:after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popover[x-placement^=left]{margin-right:12px}.el-popover[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#d1dbe5}.el-popover[x-placement^=left] .popper__arrow:after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-popover__title{color:#1f2d3d;font-size:13px;line-height:1;margin-bottom:9px}.v-modal-enter{animation:v-modal-in .2s ease}.v-modal-leave{animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-message-box{text-align:left;display:inline-block;vertical-align:middle;background-color:#fff;width:420px;border-radius:3px;font-size:16px;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper:after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:20px 20px 0}.el-message-box__headerbtn{position:absolute;top:19px;right:20px;background:0 0;border:none;outline:0;padding:0;cursor:pointer}.el-message-box__headerbtn .el-message-box__close{color:#999}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#20a0ff}.el-message-box__content{padding:30px 20px;color:#48576a;font-size:14px;position:relative}.el-message-box__input{padding-top:15px}.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#ff4949}.el-message-box__errormsg{color:#ff4949;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:16px;font-weight:700;height:18px;color:#333}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:1.4}.el-message-box__btns{padding:10px 20px 15px;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box__status{position:absolute;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:36px!important}.el-message-box__status.el-icon-circle-check{color:#13ce66}.el-message-box__status.el-icon-information{color:#50bfff}.el-message-box__status.el-icon-warning{color:#f7ba2a}.el-message-box__status.el-icon-circle-cross{color:#ff4949}.msgbox-fade-enter-active{animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{animation:msgbox-fade-out .3s}@keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes msgbox-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:13px;line-height:1}.el-breadcrumb__separator{margin:0 8px;color:#bfcbd9}.el-breadcrumb__item{float:left}.el-breadcrumb__item:last-child .el-breadcrumb__item__inner,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner:hover,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner a:hover{color:#97a8be;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-breadcrumb__item__inner,.el-breadcrumb__item__inner a{transition:color .15s linear;color:#48576a}.el-breadcrumb__item__inner:hover,.el-breadcrumb__item__inner a:hover{color:#20a0ff;cursor:pointer}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner,.el-form-item.is-error .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-textarea__inner{border-color:#ff4949}.el-form-item.is-required .el-form-item__label:before{content:"*";color:#ff4949;margin-right:4px}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#48576a;line-height:1;padding:11px 12px 11px 0;box-sizing:border-box}.el-form-item__content{line-height:36px;position:relative;font-size:14px}.el-form-item__error{color:#ff4949;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-tabs__header{border-bottom:1px solid #d1dbe5;padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:3px;background-color:#20a0ff;z-index:1;transition:transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;transition:all .15s}.el-tabs__new-tab .el-icon-plus{-ms-transform:scale(.8);transform:scale(.8)}.el-tabs__new-tab:hover{color:#20a0ff}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap.is-scrollable{padding:0 15px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#8391a5}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{position:relative;transition:transform .3s;float:left}.el-tabs__item{padding:0 16px;height:42px;box-sizing:border-box;line-height:42px;display:inline-block;list-style:none;font-size:14px;color:#8391a5;position:relative}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-ms-transform:scale(.7);transform:scale(.7);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#97a8be;color:#fff}.el-tabs__item:hover{color:#1f2d3d;cursor:pointer}.el-tabs__item.is-disabled{color:#bbb;cursor:default}.el-tabs__item.is-active{color:#20a0ff}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tag,.slideInLeft-transition,.slideInRight-transition{display:inline-block}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-ms-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border:1px solid transparent;transition:all .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-right:9px;padding-left:9px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border:1px solid #d1dbe5;border-bottom-color:#fff;border-radius:4px 4px 0 0}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-right:16px;padding-left:16px}.el-tabs--border-card{background:#fff;border:1px solid #d1dbe5}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#eef1f6;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;border-top:0;margin-right:-1px;margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:#fff;border-right-color:#d1dbe5;border-left-color:#d1dbe5}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active:first-child{border-left-color:#d1dbe5}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active:last-child{border-right-color:#d1dbe5}.slideInRight-enter{animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave .3s}.slideInLeft-enter{animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave .3s}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(-100%);opacity:0}}.el-tag{background-color:#8391a5;padding:0 5px;height:24px;line-height:22px;font-size:12px;color:#fff;border-radius:4px;box-sizing:border-box;border:1px solid transparent}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;-ms-transform:scale(.75);transform:scale(.75);height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-2px}.el-tag .el-icon-close:hover{background-color:#fff;color:#8391a5}.el-tag--gray{background-color:#e4e8f1;border-color:#e4e8f1;color:#48576a}.el-tag--gray .el-tag__close:hover{background-color:#48576a;color:#fff}.el-tag--gray.is-hit{border-color:#48576a}.el-tag--primary{background-color:rgba(32,160,255,.1);border-color:rgba(32,160,255,.2);color:#20a0ff}.el-tag--primary .el-tag__close:hover{background-color:#20a0ff;color:#fff}.el-tag--primary.is-hit{border-color:#20a0ff}.el-tag--success{background-color:rgba(18,206,102,.1);border-color:rgba(18,206,102,.2);color:#13ce66}.el-tag--success .el-tag__close:hover{background-color:#13ce66;color:#fff}.el-tag--success.is-hit{border-color:#13ce66}.el-tag--warning{background-color:rgba(247,186,41,.1);border-color:rgba(247,186,41,.2);color:#f7ba2a}.el-tag--warning .el-tag__close:hover{background-color:#f7ba2a;color:#fff}.el-tag--warning.is-hit{border-color:#f7ba2a}.el-tag--danger{background-color:rgba(255,73,73,.1);border-color:rgba(255,73,73,.2);color:#ff4949}.el-tag--danger .el-tag__close:hover{background-color:#ff4949;color:#fff}.el-tag--danger.is-hit{border-color:#ff4949}.el-tree{cursor:default;background:#fff;border:1px solid #d1dbe5}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#5e7382}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree-node__expand-icon,.el-tree-node__label,.el-tree-node__loading-icon{display:inline-block;vertical-align:middle}.el-tree-node__content{line-height:36px;height:36px;cursor:pointer}.el-tree-node__content>.el-checkbox,.el-tree-node__content>.el-tree-node__expand-icon{margin-right:8px}.el-tree-node__content>.el-checkbox{vertical-align:middle}.el-tree-node__content:hover{background:#e4e8f1}.el-tree-node__expand-icon{cursor:pointer;width:0;height:0;margin-left:10px;border:6px solid transparent;border-right-width:0;border-left-color:#97a8be;border-left-width:7px;-ms-transform:rotate(0);transform:rotate(0);transition:transform .3s ease-in-out}.el-tree-node__expand-icon:hover{border-left-color:#999}.el-tree-node__expand-icon.expanded{-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{border-color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:4px;font-size:14px;color:#97a8be}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#edf7ff}.el-alert{width:100%;padding:8px 16px;margin:0;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;color:#fff;opacity:1;display:table;transition:opacity .2s}.el-alert .el-alert__description{color:#fff;font-size:12px;margin:5px 0 0}.el-alert--success{background-color:#13ce66}.el-alert--info{background-color:#50bfff}.el-alert--warning{background-color:#f7ba2a}.el-alert--error{background-color:#ff4949}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px;display:table-cell;color:#fff;vertical-align:middle}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert__closebtn{font-size:12px;color:#fff;opacity:1;top:12px;right:15px;position:absolute;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{width:330px;padding:20px;box-sizing:border-box;border-radius:2px;position:fixed;right:16px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);transition:opacity .3s,transform .3s,right .3s,top .4s;overflow:hidden}.el-notification .el-icon-circle-check{color:#13ce66}.el-notification .el-icon-circle-cross{color:#ff4949}.el-notification .el-icon-information{color:#50bfff}.el-notification .el-icon-warning{color:#f7ba2a}.el-notification__group{margin-left:0}.el-notification__group.is-with-icon{margin-left:55px}.el-notification__title{font-weight:400;font-size:16px;color:#1f2d3d;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:10px 0 0;color:#8391a5;text-align:justify}.el-notification__icon{width:40px;height:40px;font-size:40px;float:left;position:relative;top:3px}.el-notification__closeBtn{top:20px;right:20px;position:absolute;cursor:pointer;color:#bfcbd9;font-size:14px}.el-notification__closeBtn:hover{color:#97a8be}.el-notification-fade-enter{-ms-transform:translateX(100%);transform:translateX(100%);right:0}.el-input-number{display:inline-block;width:180px;position:relative;line-height:normal}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:82px}.el-input-number.is-without-controls .el-input__inner{padding-right:10px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#d1dbe5;color:#d1dbe5}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#d1dbe5;cursor:not-allowed}.el-input-number__decrease,.el-input-number__increase{height:auto;border-left:1px solid #bfcbd9;width:36px;line-height:34px;top:1px;text-align:center;color:#97a8be;cursor:pointer;position:absolute;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#20a0ff}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#20a0ff}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#d1dbe5;cursor:not-allowed}.el-input-number__increase{right:0}.el-input-number__decrease{right:37px}.el-input-number--large{width:200px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{line-height:40px;width:42px;font-size:16px}.el-input-number--large .el-input-number__decrease{right:43px}.el-input-number--large .el-input__inner{padding-right:94px}.el-input-number--small{width:130px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{line-height:28px;width:30px;font-size:13px}.el-input-number--small .el-input-number__decrease{right:31px}.el-input-number--small .el-input__inner{padding-right:70px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow:after{content:" ";border-width:5px}.el-progress-bar__inner:after,.el-row:after,.el-row:before,.el-slider:after,.el-slider:before,.el-slider__button-wrapper:after,.el-upload-cover:after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#1f2d3d;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-5px;border-top-color:#1f2d3d;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#1f2d3d}.el-tooltip__popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#1f2d3d}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#1f2d3d;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow:after{bottom:-5px;left:1px;border-right-color:#1f2d3d;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#1f2d3d}.el-tooltip__popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#1f2d3d}.el-tooltip__popper.is-light{background:#fff;border:1px solid #1f2d3d}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#1f2d3d}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow:after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#1f2d3d}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow:after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#1f2d3d}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow:after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#1f2d3d}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow:after{border-right-color:#fff}.el-tooltip__popper.is-dark{background:#1f2d3d;color:#fff}.el-slider:after,.el-slider:before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper:after{display:inline-block;vertical-align:middle}.el-slider:after{clear:both}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:4px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:4px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-16px}.el-slider.is-vertical .el-slider__button-wrapper,.el-slider.is-vertical .el-slider__stop{-ms-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:64px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:30px;margin-top:-1px;border:1px solid #bfcbd9;line-height:20px;box-sizing:border-box;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#8391a5}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#20a0ff}.el-slider__runway{width:100%;height:4px;margin:16px 0;background-color:#e4e8f1;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar,.el-slider__runway.disabled .el-slider__button{background-color:#bfcbd9}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-ms-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__input{float:right;margin-top:3px}.el-slider__bar{height:4px;background-color:#20a0ff;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{width:36px;height:36px;position:absolute;z-index:1001;top:-16px;-ms-transform:translateX(-50%);transform:translateX(-50%);background-color:transparent;text-align:center;-ms-user-select:none;user-select:none}.el-slider__button-wrapper:after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:12px;height:12px;background-color:#20a0ff;border-radius:50%;transition:.2s;-ms-user-select:none;user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-ms-transform:scale(1.5);transform:scale(1.5);background-color:#1c8de0}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{position:absolute;width:4px;height:4px;border-radius:100%;background-color:#bfcbd9;-ms-transform:translateX(-50%);transform:translateX(-50%)}.el-loading-mask{position:absolute;z-index:10000;background-color:hsla(0,0%,100%,.9);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{width:50px;height:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-2,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-push-0,.el-col-push-1,.el-col-push-2,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#20a0ff;margin:3px 0;font-size:14px}.el-loading-spinner .circular{width:42px;height:42px;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#20a0ff;stroke-linecap:round}@keyframes loading-rotate{to{transform:rotate(1turn)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{box-sizing:border-box}.el-row:after,.el-row:before{display:table}.el-row:after{clear:both}.el-row--flex{display:-ms-flexbox;display:flex}.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-align-bottom{-ms-flex-align:end;align-items:flex-end}.el-row--flex.is-align-middle{-ms-flex-align:center;align-items:center}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-justify-space-between{-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-end{-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-center{-ms-flex-pack:center;justify-content:center}.el-col-1,.el-col-2,.el-col-3,.el-col-4,.el-col-5,.el-col-6,.el-col-7,.el-col-8,.el-col-9,.el-col-10,.el-col-11,.el-col-12,.el-col-13,.el-col-14,.el-col-15,.el-col-16,.el-col-17,.el-col-18,.el-col-19,.el-col-20,.el-col-21,.el-col-22,.el-col-23,.el-col-24{float:left;box-sizing:border-box}.el-col-0{width:0}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media (max-width:768px){.el-col-xs-0{width:0}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media (min-width:768px){.el-col-sm-0{width:0}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media (min-width:992px){.el-col-md-0{width:0}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media (min-width:1200px){.el-col-lg-0{width:0}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}.el-progress-bar__inner:after{display:inline-block;height:100%;vertical-align:middle}.el-upload{display:inline-block;text-align:center;cursor:pointer}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#8391a5;margin-top:7px}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;cursor:pointer;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover{border-color:#20a0ff;color:#20a0ff}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;cursor:pointer;position:relative;overflow:hidden}.el-upload-dragger .el-upload__text{color:#97a8be;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#20a0ff;font-style:normal}.el-upload-dragger .el-icon-upload{font-size:67px;color:#97a8be;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid rgba(191,203,217,.2);margin-top:7px;padding-top:5px}.el-upload-dragger:hover{border-color:#20a0ff}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #20a0ff}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item{transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#48576a;line-height:1.8;margin-top:5px;box-sizing:border-box;border-radius:4px;width:100%;position:relative}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;top:-13px;right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#13ce66}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#48576a;-ms-transform:scale(.7);transform:scale(.7)}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item:hover{background-color:#eef1f6}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#20a0ff;cursor:pointer}.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none}.el-upload-list__item-name{color:#48576a;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;transition:color .3s}.el-upload-list__item-name [class^=el-icon]{color:#97a8be;margin-right:7px;height:100%;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#48576a;display:none}.el-upload-list__item-delete:hover{color:#20a0ff}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-ms-transform:rotate(45deg);transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-ms-transform:rotate(-45deg) scale(.8);transform:rotate(-45deg) scale(.8)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-ms-transform:rotate(45deg);transform:rotate(45deg);box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-ms-transform:rotate(-45deg) scale(.8);transform:rotate(-45deg) scale(.8)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover:after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-ms-transform:rotate(45deg);transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-ms-transform:rotate(-45deg) scale(.8);transform:rotate(-45deg) scale(.8);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-ms-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#48576a}.el-progress{position:relative;line-height:1}.el-progress.is-exception .el-progress-bar__inner{background-color:#ff4949}.el-progress.is-exception .el-progress__text{color:#ff4949}.el-progress.is-success .el-progress-bar__inner{background-color:#13ce66}.el-progress.is-success .el-progress__text{color:#13ce66}.el-progress__text{font-size:14px;color:#48576a;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle{display:inline-block}.el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-ms-transform:translateY(-50%);transform:translateY(-50%)}.el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#e4e8f1;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#20a0ff;text-align:right;border-radius:100px;line-height:1}.el-progress-bar__innerText{color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}.el-time-spinner{width:100%}.el-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(1turn)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);min-width:300px;padding:10px 12px;box-sizing:border-box;border-radius:2px;position:fixed;left:50%;top:20px;-ms-transform:translateX(-50%);transform:translateX(-50%);background-color:#fff;transition:opacity .3s,transform .4s;overflow:hidden}.el-message .el-icon-circle-check{color:#13ce66}.el-message .el-icon-circle-cross{color:#ff4949}.el-message .el-icon-information{color:#50bfff}.el-message .el-icon-warning{color:#f7ba2a}.el-message__group{margin-left:38px;position:relative;height:20px;line-height:20px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.el-message__group p{font-size:14px;margin:0 34px 0 0;color:#8391a5;text-align:justify}.el-step__head,.el-steps.is-horizontal.is-center{text-align:center}.el-message__group.is-with-icon{margin-left:0}.el-message__img{width:40px;height:40px;position:absolute;left:0;top:0}.el-message__icon{vertical-align:middle;margin-right:8px}.el-message__closeBtn{top:3px;right:0;position:absolute;cursor:pointer;color:#bfcbd9;font-size:14px}.el-message__closeBtn:hover{color:#97a8be}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-ms-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#ff4949;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;border:1px solid #fff}.el-badge__content.is-dot{width:8px;height:8px;padding:0;right:0;border-radius:50%}.el-badge__content.is-fixed{top:0;right:10px;position:absolute;-ms-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-card{border:1px solid #d1dbe5;border-radius:4px;background-color:#fff;overflow:hidden;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-card__header{padding:18px 20px;border-bottom:1px solid #d1dbe5;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#bfcbd9;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-ms-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{font-size:0}.el-steps>:last-child .el-step__line{display:none}.el-step.is-horizontal,.el-step.is-vertical .el-step__head,.el-step.is-vertical .el-step__main,.el-step__line{display:inline-block}.el-step{position:relative;vertical-align:top}.el-step:last-child .el-step__main{padding-right:0}.el-step.is-vertical .el-step__main{padding-left:10px}.el-step__line{position:absolute;border-color:inherit;background-color:#bfcbd9}.el-step__line.is-vertical{width:2px;box-sizing:border-box;top:32px;bottom:0;left:15px}.el-step__line.is-horizontal{top:15px;height:2px;left:32px;right:0}.el-step__line.is-icon.is-horizontal{right:4px}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:all .15s;box-sizing:border-box;width:0;height:0}.el-step__icon{display:block;line-height:28px}.el-step__icon>*{line-height:inherit;vertical-align:middle}.el-step__head{width:28px;height:28px;border-radius:50%;background-color:transparent;line-height:28px;font-size:28px;vertical-align:top;transition:all .15s}.el-carousel__arrow,.el-carousel__button{margin:0;transition:.3s;cursor:pointer;outline:0}.el-step__head.is-finish{color:#20a0ff;border-color:#20a0ff}.el-step__head.is-error{color:#ff4949;border-color:#ff4949}.el-step__head.is-success{color:#13ce66;border-color:#13ce66}.el-step__head.is-process,.el-step__head.is-wait{color:#bfcbd9;border-color:#bfcbd9}.el-step__head.is-text{font-size:14px;border-width:2px;border-style:solid}.el-step__head.is-text.is-finish{color:#fff;background-color:#20a0ff;border-color:#20a0ff}.el-step__head.is-text.is-error{color:#fff;background-color:#ff4949;border-color:#ff4949}.el-step__head.is-text.is-success{color:#fff;background-color:#13ce66;border-color:#13ce66}.el-step__head.is-text.is-wait{color:#bfcbd9;background-color:#fff;border-color:#bfcbd9}.el-step__head.is-text.is-process{color:#fff;background-color:#bfcbd9;border-color:#bfcbd9}.el-step__main{white-space:normal;padding-right:10px;text-align:left}.el-step__title{font-size:14px;line-height:32px;display:inline-block}.el-step__title.is-finish{font-weight:700;color:#20a0ff}.el-step__title.is-error{font-weight:700;color:#ff4949}.el-step__title.is-success{font-weight:700;color:#13ce66}.el-step__title.is-wait{font-weight:400;color:#97a8be}.el-step__title.is-process{font-weight:700;color:#48576a}.el-step__description{font-size:12px;font-weight:400;line-height:14px}.el-step__description.is-finish{color:#20a0ff}.el-step__description.is-error{color:#ff4949}.el-step__description.is-success{color:#13ce66}.el-step__description.is-wait{color:#bfcbd9}.el-step__description.is-process{color:#8391a5}.el-carousel{overflow-x:hidden;position:relative}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;padding:0;width:36px;height:36px;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-ms-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__indicators{position:absolute;list-style:none;bottom:0;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%);margin:0;padding:0;z-index:2}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-ms-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#8391a5;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-ms-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{width:auto;height:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{display:inline-block;background-color:transparent;padding:12px 4px;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;padding:0}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-ms-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-ms-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active .el-scrollbar__bar,.el-scrollbar:focus .el-scrollbar__bar,.el-scrollbar:hover .el-scrollbar__bar{opacity:1;transition:opacity .34s ease-out}.el-scrollbar__wrap{overflow:scroll}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(151,168,190,.3);transition:background-color .3s}.el-scrollbar__thumb:hover{background-color:rgba(151,168,190,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;transition:opacity .12s ease-out}.el-carousel__item--card,.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-carousel__item{position:absolute;top:0;left:0;width:100%;height:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-active,.el-cascader-menus,.el-cascader .el-icon-circle-close{z-index:2}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__mask{position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;opacity:.24;transition:.2s}.el-collapse{border:1px solid #dfe6ec;border-radius:0}.el-collapse-item:last-child{margin-bottom:-1px}.el-collapse-item.is-active>.el-collapse-item__header .el-collapse-item__header__arrow{-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header{height:43px;line-height:43px;padding-left:15px;background-color:#fff;color:#48576a;cursor:pointer;border-bottom:1px solid #dfe6ec;font-size:13px}.el-collapse-item__header__arrow{margin-right:8px;transition:transform .3s}.el-collapse-item__wrap{will-change:height;background-color:#fbfdff;overflow:hidden;box-sizing:border-box;border-bottom:1px solid #dfe6ec}.el-collapse-item__content{padding:10px 15px;font-size:13px;color:#1f2d3d;line-height:1.769230769230769}.el-cascader{display:inline-block;position:relative}.el-cascader .el-input,.el-cascader .el-input__inner{cursor:pointer}.el-cascader .el-input__icon{transition:none}.el-cascader .el-icon-caret-bottom{transition:transform .3s}.el-cascader .el-icon-caret-bottom.is-reverse{-ms-transform:rotate(180deg);transform:rotate(180deg)}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#bbb}.el-cascader__label{position:absolute;left:0;top:0;height:100%;line-height:36px;padding:0 25px 0 10px;color:#1f2d3d;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;box-sizing:border-box;cursor:pointer;font-size:14px;text-align:left}.el-cascader__label span{color:#97a8be}.el-cascader--large{font-size:16px}.el-cascader--large .el-cascader__label{line-height:40px}.el-cascader--small{font-size:13px}.el-cascader--small .el-cascader__label{line-height:28px}.el-cascader-menus{white-space:nowrap;background:#fff;position:absolute;margin:5px 0;border:1px solid #d1dbe5;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04)}.el-cascader-menu{display:inline-block;vertical-align:top;height:204px;overflow:auto;border-right:1px solid #d1dbe5;background-color:#fff;box-sizing:border-box;margin:0;padding:6px 0;min-width:160px}.el-cascader-menu:last-child{border-right:0}.el-cascader-menu__item{font-size:14px;padding:8px 30px 8px 10px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#48576a;height:36px;line-height:1.5;box-sizing:border-box;cursor:pointer}.el-cascader-menu__item:hover{background-color:#e4e8f1}.el-cascader-menu__item.selected{color:#fff;background-color:#20a0ff}.el-cascader-menu__item.selected.hover{background-color:#1c8de0}.el-cascader-menu__item.is-active{color:#fff;background-color:#20a0ff}.el-cascader-menu__item.is-active:hover{background-color:#1c8de0}.el-cascader-menu__item.is-disabled{color:#bfcbd9;background-color:#fff;cursor:not-allowed}.el-cascader-menu__item.is-disabled:hover{background-color:#fff}.el-cascader-menu__item__keyword{font-weight:700}.el-cascader-menu__item--extensible:after{font-family:element-icons;content:"\\E606";font-size:12px;-ms-transform:scale(.8);transform:scale(.8);color:#bfcbd9;position:absolute;right:10px;margin-top:1px}.el-cascader-menu--flexible{height:auto;max-height:180px;overflow:auto}.el-cascader-menu--flexible .el-cascader-menu__item{overflow:visible}.el-color-hue-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-hue-slider__bar{position:relative;background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.el-color-svpanel__black{background:linear-gradient(0deg,#000,transparent)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-ms-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(180deg,hsla(0,0%,100%,0) 0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-alpha-slider__bar{position:relative;background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#1f2d3d}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#20a0ff;border-color:#20a0ff}.el-color-dropdown__link-btn{cursor:pointer;color:#20a0ff;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:#4db3ff}.el-color-picker{display:inline-block;position:relative;line-height:normal}.el-color-picker__trigger{display:inline-block;box-sizing:border-box;height:36px;padding:6px;border:1px solid #bfcbd9;border-radius:4px;font-size:0}.el-color-picker__color{position:relative;display:inline-block;box-sizing:border-box;border:1px solid #666;width:22px;height:22px;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty{font-size:12px;vertical-align:middle;color:#666;position:absolute;top:4px;left:4px}.el-color-picker__icon{display:inline-block;position:relative;top:-6px;margin-left:8px;width:12px;color:#888;font-size:12px}.el-input,.el-input__inner{width:100%;display:inline-block}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;background-color:#fff;border:1px solid #d1dbe5;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.12)}.el-input{position:relative;font-size:14px}.el-input.is-disabled .el-input__inner{background-color:#eef1f6;border-color:#d1dbe5;color:#bbb;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#bfcbd9}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#bfcbd9}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#bfcbd9}.el-input.is-disabled .el-input__inner::placeholder{color:#bfcbd9}.el-input.is-active .el-input__inner{outline:0;border-color:#20a0ff}.el-input__inner{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #bfcbd9;box-sizing:border-box;color:#1f2d3d;font-size:inherit;height:36px;line-height:1;outline:0;padding:3px 10px;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-button,.el-checkbox-button__inner{-webkit-appearance:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;outline:0;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#97a8be}.el-input__inner::-moz-placeholder{color:#97a8be}.el-input__inner:-ms-input-placeholder{color:#97a8be}.el-input__inner::placeholder{color:#97a8be}.el-input__inner:hover{border-color:#8391a5}.el-input__inner:focus{outline:0;border-color:#20a0ff}.el-input__icon{position:absolute;width:35px;height:100%;right:0;top:0;text-align:center;color:#bfcbd9;transition:all .3s}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__icon+.el-input__inner{padding-right:35px}.el-input__icon.is-clickable:hover{cursor:pointer;color:#8391a5}.el-input__icon.is-clickable:hover+.el-input__inner{border-color:#8391a5}.el-input--large{font-size:16px}.el-input--large .el-input__inner{height:42px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:30px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:22px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#fbfdff;color:#97a8be;vertical-align:middle;display:table-cell;position:relative;border:1px solid #bfcbd9;border-radius:4px;padding:0 10px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:block;margin:-10px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-button,.el-textarea__inner{font-size:14px;box-sizing:border-box}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-textarea{display:inline-block;width:100%;vertical-align:bottom}.el-textarea.is-disabled .el-textarea__inner{background-color:#eef1f6;border-color:#d1dbe5;color:#bbb;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#bfcbd9}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#bfcbd9}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#bfcbd9}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#bfcbd9}.el-textarea__inner{display:block;resize:vertical;padding:5px 7px;line-height:1.5;width:100%;color:#1f2d3d;background-color:#fff;background-image:none;border:1px solid #bfcbd9;border-radius:4px;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#97a8be}.el-textarea__inner::-moz-placeholder{color:#97a8be}.el-textarea__inner:-ms-input-placeholder{color:#97a8be}.el-textarea__inner::placeholder{color:#97a8be}.el-textarea__inner:hover{border-color:#8391a5}.el-textarea__inner:focus{outline:0;border-color:#20a0ff}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #c4c4c4;color:#1f2d3d;margin:0;padding:10px 15px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#20a0ff;border-color:#20a0ff}.el-button:active{color:#1d90e6;border-color:#1d90e6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:hsla(0,0%,100%,.35)}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#bfcbd9;cursor:not-allowed;background-image:none;background-color:#eef1f6;border-color:#d1dbe5}.el-checkbox,.el-checkbox__input{cursor:pointer;display:inline-block;position:relative;white-space:nowrap}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#d1dbe5;color:#bfcbd9}.el-button.is-active{color:#1d90e6;border-color:#1d90e6}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#20a0ff;color:#20a0ff}.el-button.is-plain:active{background:#fff;border-color:#1d90e6;color:#1d90e6;outline:0}.el-button--primary{color:#fff;background-color:#20a0ff;border-color:#20a0ff}.el-button--primary:focus,.el-button--primary:hover{background:#4db3ff;border-color:#4db3ff;color:#fff}.el-button--primary.is-active,.el-button--primary:active{background:#1d90e6;border-color:#1d90e6;color:#fff}.el-button--primary:active{outline:0}.el-button--primary.is-plain{background:#fff;border:1px solid #bfcbd9;color:#1f2d3d}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#fff;border-color:#20a0ff;color:#20a0ff}.el-button--primary.is-plain:active{background:#fff;border-color:#1d90e6;color:#1d90e6;outline:0}.el-button--success{color:#fff;background-color:#13ce66;border-color:#13ce66}.el-button--success:focus,.el-button--success:hover{background:#42d885;border-color:#42d885;color:#fff}.el-button--success.is-active,.el-button--success:active{background:#11b95c;border-color:#11b95c;color:#fff}.el-button--success:active{outline:0}.el-button--success.is-plain{background:#fff;border:1px solid #bfcbd9;color:#1f2d3d}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#fff;border-color:#13ce66;color:#13ce66}.el-button--success.is-plain:active{background:#fff;border-color:#11b95c;color:#11b95c;outline:0}.el-button--warning{color:#fff;background-color:#f7ba2a;border-color:#f7ba2a}.el-button--warning:focus,.el-button--warning:hover{background:#f9c855;border-color:#f9c855;color:#fff}.el-button--warning.is-active,.el-button--warning:active{background:#dea726;border-color:#dea726;color:#fff}.el-button--warning:active{outline:0}.el-button--warning.is-plain{background:#fff;border:1px solid #bfcbd9;color:#1f2d3d}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#fff;border-color:#f7ba2a;color:#f7ba2a}.el-button--warning.is-plain:active{background:#fff;border-color:#dea726;color:#dea726;outline:0}.el-button--danger{color:#fff;background-color:#ff4949;border-color:#ff4949}.el-button--danger:focus,.el-button--danger:hover{background:#ff6d6d;border-color:#ff6d6d;color:#fff}.el-button--danger.is-active,.el-button--danger:active{background:#e64242;border-color:#e64242;color:#fff}.el-button--danger:active{outline:0}.el-button--danger.is-plain{background:#fff;border:1px solid #bfcbd9;color:#1f2d3d}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#fff;border-color:#ff4949;color:#ff4949}.el-button--danger.is-plain:active{background:#fff;border-color:#e64242;color:#e64242;outline:0}.el-button--info{color:#fff;background-color:#50bfff;border-color:#50bfff}.el-button--info:focus,.el-button--info:hover{background:#73ccff;border-color:#73ccff;color:#fff}.el-button--info.is-active,.el-button--info:active{background:#48ace6;border-color:#48ace6;color:#fff}.el-button--info:active{outline:0}.el-button--info.is-plain{background:#fff;border:1px solid #bfcbd9;color:#1f2d3d}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#fff;border-color:#50bfff;color:#50bfff}.el-button--info.is-plain:active{background:#fff;border-color:#48ace6;color:#48ace6;outline:0}.el-button--large{padding:11px 19px;font-size:16px;border-radius:4px}.el-button--small{padding:7px 9px;font-size:12px;border-radius:4px}.el-button--mini{padding:4px;font-size:12px;border-radius:4px}.el-button--text{border:none;color:#20a0ff;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#4db3ff}.el-button--text:active{color:#1d90e6}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group .el-button--primary:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button{float:left;position:relative}.el-button-group .el-button+.el-button{margin-left:0}.el-button-group .el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group .el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group .el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group .el-button:not(:last-child){margin-right:-1px}.el-button-group .el-button.is-active,.el-button-group .el-button:active,.el-button-group .el-button:focus,.el-button-group .el-button:hover{z-index:1}.el-checkbox{color:#1f2d3d;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-checkbox+.el-checkbox{margin-left:15px}.el-checkbox__input{outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#20a0ff;border-color:#0190fe}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:"";position:absolute;display:block;border:1px solid #fff;margin-top:-1px;left:3px;right:3px;top:50%}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#20a0ff}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#20a0ff;border-color:#0190fe}.el-checkbox__input.is-checked .el-checkbox__inner:after{-ms-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#eef1f6;border-color:#d1dbe5;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:#eef1f6}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#d1dbe5;border-color:#d1dbe5}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:#fff}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#d1dbe5;border-color:#d1dbe5}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{border-color:#fff}.el-checkbox__input.is-disabled+.el-checkbox__label{color:#bbb;cursor:not-allowed}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #bfcbd9;border-radius:4px;box-sizing:border-box;width:18px;height:18px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#20a0ff}.el-checkbox__inner:after{box-sizing:content-box;content:"";border:2px solid #fff;border-left:0;border-top:0;height:8px;left:5px;position:absolute;top:1px;-ms-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:4px;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;-ms-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;left:-999px}.el-checkbox-button,.el-checkbox-button__inner{position:relative;display:inline-block}.el-checkbox__label{font-size:14px;padding-left:5px}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#20a0ff;border-color:#20a0ff;box-shadow:-1px 0 0 0 #20a0ff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#bfcbd9;cursor:not-allowed;background-image:none;background-color:#eef1f6;border-color:#d1dbe5;box-shadow:none}.el-checkbox-button__inner,.el-transfer-panel{background:#fff;vertical-align:middle;box-sizing:border-box}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#20a0ff}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #bfcbd9;border-radius:4px 0 0 4px;box-shadow:none!important}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button__inner{line-height:1;white-space:nowrap;border:1px solid #bfcbd9;border-left:0;color:#1f2d3d;margin:0;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:10px 15px;font-size:14px;border-radius:0}.el-checkbox-button__inner:hover{color:#20a0ff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;left:-999px}.el-checkbox-button--large .el-checkbox-button__inner{padding:11px 19px;font-size:16px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner{padding:7px 9px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner{padding:4px;font-size:12px;border-radius:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 10px}.el-transfer__buttons .el-button{display:block;margin:0 auto;padding:8px 12px}.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__buttons .el-button [class*=el-icon-]+span{margin-left:0}.el-transfer__buttons .el-button:first-child{margin-bottom:6px}.el-transfer-panel{border:1px solid #d1dbe5;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);display:inline-block;width:200px;position:relative}.el-transfer-panel .el-transfer-panel__header{height:36px;line-height:36px;background:#fbfdff;margin:0;padding-left:20px;border-bottom:1px solid #d1dbe5;box-sizing:border-box;color:#1f2d3d}.el-transfer-panel .el-transfer-panel__footer{height:36px;background:#fff;margin:0;padding:0;border-top:1px solid #d1dbe5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#8391a5}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:32px;line-height:32px;padding:6px 20px 0;color:#8391a5}.el-transfer-panel .el-checkbox__label{padding-left:14px}.el-transfer-panel .el-checkbox__inner{width:14px;height:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner:after{height:6px;width:3px;left:4px}.el-transfer-panel__body{padding-bottom:36px;height:246px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:214px}.el-transfer-panel__item{height:32px;line-height:32px;padding-left:20px;display:block}.el-transfer-panel__item .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;box-sizing:border-box;padding-left:28px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:9px}.el-transfer-panel__item.el-checkbox{color:#48576a}.el-transfer-panel__item:hover{background:#e4e8f1}.el-transfer-panel__filter{margin-top:10px;text-align:center;padding:0 10px;width:100%;box-sizing:border-box}.el-transfer-panel__filter .el-input__inner{height:22px;width:100%;display:inline-block;box-sizing:border-box}.el-transfer-panel__filter .el-input__icon{right:10px}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}',"",{version:3,sources:["D:/桌面/YMall-front/node_modules/element-ui/lib/theme-default/index.css"],names:[],mappings:"AAAiB,8LAA8L,cAAc,UAAU,CAAC,kKAAkK,iBAAiB,CAAC,AAAuG,6FAAuB,UAAU,CAAC,gDAAgD,qBAAqB,WAAW,YAAY,qBAAqB,CAAC,mDAAmD,cAAc,UAAU,CAAC,yBAAyB,UAAU,CAAC,WAAW,0BAA0B,kGAA2H,gBAAgB,iBAAiB,CAAC,uCAAuC,oCAAoC,WAAW,kBAAkB,gBAAgB,oBAAoB,oBAAoB,cAAc,wBAAwB,qBAAqB,mCAAmC,iCAAiC,CAAC,2BAA2B,eAAe,CAAC,2BAA2B,eAAe,CAAC,4BAA4B,eAAe,CAAC,yBAAyB,eAAe,CAAC,6BAA6B,eAAe,CAAC,2BAA2B,eAAe,CAAC,4BAA4B,eAAe,CAAC,0BAA0B,eAAe,CAAC,sBAAsB,eAAe,CAAC,6BAA6B,eAAe,CAAC,6BAA6B,eAAe,CAAC,6BAA6B,eAAe,CAAC,sBAAsB,eAAe,CAAC,uBAAuB,eAAe,CAAC,6BAA6B,eAAe,CAAC,8BAA8B,eAAe,CAAC,wBAAwB,eAAe,CAAC,qBAAqB,eAAe,CAAC,uBAAuB,eAAe,CAAC,yBAAyB,eAAe,CAAC,qBAAqB,eAAe,CAAC,4BAA4B,eAAe,CAAC,wBAAwB,eAAe,CAAC,qBAAqB,eAAe,CAAC,wBAAwB,eAAe,CAAC,sBAAsB,eAAe,CAAC,qBAAqB,eAAe,CAAC,wBAAwB,eAAe,CAAC,qBAAqB,eAAe,CAAC,uBAAuB,eAAe,CAAC,wBAAwB,eAAe,CAAC,sBAAsB,eAAe,CAAC,yBAAyB,eAAe,CAAC,wBAAwB,eAAe,CAAC,qBAAqB,eAAe,CAAC,wBAAwB,eAAe,CAAC,wBAAwB,eAAe,CAAC,wBAAwB,eAAe,CAAC,qBAAqB,eAAe,CAAC,iBAAiB,qCAAqC,CAAC,gBAAgB,eAAe,CAAC,eAAe,gBAAgB,CAAC,oBAAoB,GAAG,mBAAoB,CAAC,GAAK,uBAAyB,CAAC,CAAC,eAAe,mBAAmB,gBAAgB,aAAa,CAAC,2CAA2C,cAAc,UAAU,CAAC,qBAAqB,UAAU,CAAC,0CAA0C,qBAAqB,eAAe,eAAe,YAAY,iBAAiB,mBAAmB,qBAAqB,CAAC,oCAAoC,WAAW,CAAC,0CAA0C,mBAAmB,kBAAkB,WAAW,CAAC,sBAAsB,YAAY,cAAc,cAAc,CAAC,4BAA4B,SAAS,CAAC,4BAA4B,aAAa,CAAC,+BAA+B,cAAc,sBAAsB,kBAAkB,CAAC,+EAA+E,cAAc,CAAC,kDAAkD,8BAAwC,qBAAqB,yBAAyB,eAAe,SAAS,aAAa,CAAC,oEAAoE,cAAc,cAAc,CAAC,yBAAyB,0BAA0B,cAAc,CAAC,yBAAyB,0BAA0B,aAAa,CAAC,iJAAiJ,yBAAyB,eAAe,iBAAiB,YAAY,cAAc,CAAC,mCAAmC,iBAAiB,CAAC,sBAAsB,iBAAiB,CAAC,iDAAiD,eAAe,oBAAoB,CAAC,uDAAuD,oBAAoB,CAAC,qBAAqB,gBAAgB,CAAC,sBAAsB,aAAa,CAAC,6BAA6B,WAAW,CAAC,uBAAuB,yBAAyB,kBAAkB,iBAAiB,gBAAgB,WAAW,kBAAkB,aAAa,sBAAsB,sBAAsB,yBAAyB,CAAC,uBAAuB,mBAAmB,qBAAqB,QAAQ,CAAC,oGAAoG,wBAAwB,QAAQ,CAAC,6BAA6B,UAAU,oBAAoB,CAAC,+CAA+C,yBAAyB,qBAAqB,CAAC,UAAmC,sBAAsB,AAAqB,iBAAiB,gBAAgB,YAAY,SAAS,CAAC,mCAA3H,yBAAyB,AAAsB,oBAAqB,CAA8H,wCAAwC,qBAAqB,CAAC,aAAa,cAAc,eAAe,gBAAgB,eAAe,eAAe,YAAY,iBAAiB,iBAAiB,CAAC,wBAAwB,8BAA8B,CAAC,sDAAsD,iBAAiB,aAAa,CAAC,uBAAuB,cAAc,gBAAgB,CAAC,mBAAmB,aAAa,CAAC,oBAAoB,qBAAqB,yBAAyB,WAAW,cAAc,CAAC,WAAW,kBAAkB,SAAS,+BAA+B,2BAA2B,gBAAgB,kBAAkB,oCAAoC,sBAAsB,kBAAkB,CAAC,iBAAiB,SAAS,CAAC,kBAAkB,SAAS,CAAC,kBAAkB,SAAS,CAAC,iBAAiB,WAAW,MAAM,gBAAgB,YAAY,aAAa,CAAC,oBAAoB,MAAM,QAAQ,SAAS,OAAO,eAAe,cAAc,QAAQ,CAAC,8BAA8B,qBAAqB,iBAAiB,CAAC,mBAAmB,mBAAmB,CAAC,sBAAsB,YAAY,eAAe,YAAY,UAAU,UAAU,eAAe,cAAc,CAAC,wCAAwC,aAAa,CAAC,4FAA4F,aAAa,CAAC,kBAAkB,cAAc,eAAe,gBAAgB,aAAa,CAAC,iBAAiB,kBAAkB,cAAc,cAAc,CAAC,mBAAmB,uBAAuB,iBAAiB,qBAAqB,CAAC,0BAA0B,4BAA4B,CAAC,0BAA0B,6BAA6B,CAAC,0BAA0B,GAAG,iCAAiC,SAAS,CAAC,GAAK,wBAA6B,SAAS,CAAC,CAAC,2BAA2B,GAAG,wBAA6B,SAAS,CAAC,GAAK,iCAAiC,SAAS,CAAC,CAAC,4BAA4B,aAAa,gEAAgE,CAAC,+BAA+B,gBAAgB,iBAAiB,eAAe,SAAS,eAAe,cAAc,eAAe,mBAAmB,gBAAgB,sBAAsB,CAAC,qCAAqC,wBAAwB,CAAC,2CAA2C,yBAAyB,UAAU,CAAC,sCAAsC,wBAAwB,CAAC,kEAAkE,qBAAqB,CAAC,uCAAuC,eAAe,4BAA4B,CAAC,kDAAkD,kBAAkB,CAAC,0CAA0C,kBAAkB,aAAa,kBAAkB,eAAe,UAAU,CAAC,wDAAwD,qBAAqB,CAAC,kCAAkC,iBAAiB,cAAc,sBAAsB,cAAc,iBAAiB,CAAC,kCAAkC,SAAS,SAAS,CAAC,aAAa,cAAc,cAAc,CAAC,8BAA8B,aAAa,CAAC,yCAAyC,UAAU,CAAC,wCAAwC,kBAAkB,gBAAgB,CAAC,2DAA2D,cAAc,CAAC,mBAAmB,eAAe,YAAY,CAAC,kBAAkB,aAAa,yBAAyB,6DAA6D,cAAc,WAAW,kBAAkB,MAAM,OAAO,eAAe,CAAC,wBAAwB,gBAAgB,iBAAiB,eAAe,SAAS,cAAc,CAAC,gDAAgD,yBAAyB,aAAa,CAAC,oCAAoC,eAAe,cAAc,mBAAmB,CAAC,iCAAiC,kBAAkB,eAAe,4BAA4B,CAAC,wCAAwC,WAAW,WAAW,cAAc,eAAe,qBAAqB,CAAC,iCAAiC,YAAY,iBAAiB,eAAe,cAAc,eAAe,eAAe,kBAAkB,2DAA2D,sBAAsB,kBAAkB,CAAC,SAAS,kBAAkB,gBAAgB,kBAAkB,SAAS,eAAe,wBAAwB,CAAC,+BAA+B,cAAc,UAAU,CAAC,eAAe,UAAU,CAAC,YAAY,eAAe,CAAC,eAAe,wBAAwB,CAAC,+DAA+D,aAAa,CAAC,2EAA2E,wBAAwB,CAAC,oCAAoC,wBAAwB,CAAC,wDAAwD,wBAAwB,CAAC,mCAAmC,WAAW,YAAY,iBAAiB,SAAS,eAAe,kBAAkB,sBAAsB,mCAAmC,CAAC,gFAAgF,aAAa,CAAC,iCAAiC,WAAW,iBAAiB,CAAC,0CAA0C,kBAAkB,SAAS,OAAO,yBAAyB,cAAc,sBAAsB,YAAY,eAAe,gEAAgE,CAAC,oDAAoD,YAAY,iBAAiB,mCAAmC,CAAC,+CAA+C,sBAAsB,WAAW,YAAY,iBAAiB,cAAc,CAAC,yDAAyD,gBAAgB,sBAAsB,gBAAgB,cAAc,eAAe,CAAC,uFAAuF,wBAAwB,CAAC,iKAAiK,+BAA+B,CAAC,mHAAmH,wBAAwB,CAAC,8JAA8J,wBAAwB,CAAC,8HAA8H,aAAa,CAAC,+FAA+F,aAAa,CAAC,mBAAmB,UAAU,CAAC,uHAAuH,SAAS,sBAAsB,WAAW,iBAAiB,CAAC,mIAAmI,YAAY,CAAC,6FAA6F,SAAS,QAAQ,gBAAgB,kBAAkB,oBAAoB,CAAC,+BAA+B,iBAAiB,CAAC,wCAAwC,kBAAkB,gBAAgB,MAAM,UAAU,UAAU,CAAC,oFAAoF,mBAAmB,cAAc,CAAC,gCAAgC,iBAAiB,WAAW,iBAAiB,CAAC,gBAAgB,qBAAqB,CAAC,0BAA0B,aAAa,CAAC,yBAAyB,cAAc,CAAC,8BAA8B,sBAAsB,iBAAiB,WAAW,iBAAiB,CAAC,qBAAqB,wBAAwB,CAAC,yDAAyD,wBAAwB,CAAC,0BAA0B,YAAY,iBAAiB,eAAe,eAAe,CAAC,iEAAiE,6BAA6B,wBAAyB,CAAC,yCAAyC,2BAA2B,CAAC,mBAAmB,iBAAiB,CAAC,qBAAqB,qBAAqB,CAAC,wBAAwB,kBAAkB,QAAQ,WAAW,gBAAgB,yBAAyB,cAAc,CAAC,4CAA4C,kBAAkB,oBAAoB,CAAC,uBAAuB,SAAS,CAAC,2BAA2B,iBAAiB,mBAAmB,eAAe,kBAAkB,aAAa,CAAC,yDAAyD,cAAc,qBAAqB,CAAC,2EAA2E,eAAe,SAAS,CAAC,UAAU,cAAc,eAAe,kBAAkB,CAAC,oBAAoB,gBAAgB,CAAC,iBAAiB,mBAAmB,eAAe,SAAS,CAAC,2CAA2C,oBAAoB,CAAC,6CAA6C,qBAAqB,kBAAkB,CAAC,mDAAoD,4CAA4C,uCAAuC,CAAC,8CAA8C,yBAAyB,qBAAqB,kBAAkB,CAAC,oDAAqD,mBAAmB,wBAAwB,CAAC,+DAA+D,kBAAkB,CAAC,yDAAyD,yBAAyB,oBAAoB,CAAC,gFAAiF,qBAAqB,CAAC,8CAA8C,WAAW,kBAAkB,CAAC,iBAAiB,yBAAyB,WAAW,YAAY,kBAAkB,eAAe,qBAAqB,CAAC,uBAAuB,oBAAoB,CAAC,uBAAwB,UAAU,WAAW,kBAAkB,sBAAsB,WAAW,kBAAkB,SAAS,QAAQ,4CAA4C,wCAAwC,uDAAuD,CAAC,mCAAmC,WAAW,YAAY,cAAc,CAAC,oBAAoB,UAAU,UAAU,kBAAkB,WAAW,MAAM,OAAO,QAAQ,SAAS,QAAQ,CAAC,yCAAyC,kBAAkB,oBAAoB,CAAC,iBAAiB,eAAe,gBAAgB,CAAC,gBAAgB,qBAAqB,WAAW,CAAC,0BAA0B,cAAc,CAAC,qDAAqD,8BAA8B,0BAA0B,yBAAyB,CAAC,oDAAoD,yBAAyB,CAAC,gEAAgE,iBAAiB,CAAC,wBAAwB,mBAAmB,gBAAgB,yBAAyB,cAAc,cAAc,wBAAwB,kBAAkB,sBAAsB,UAAU,SAAS,eAAe,kDAAkD,kBAAkB,eAAe,eAAe,CAAC,8BAA8B,aAAa,CAAC,0CAA0C,cAAc,CAAC,+CAA+C,eAAe,CAAC,6BAA6B,UAAU,UAAU,kBAAkB,WAAW,WAAW,CAAC,6DAA6D,WAAW,yBAAyB,qBAAqB,6BAA6B,CAAC,8DAA8D,cAAc,mBAAmB,sBAAsB,yBAAyB,qBAAqB,eAAe,CAAC,gDAAgD,kBAAkB,eAAe,eAAe,CAAC,gDAAgD,gBAAgB,eAAe,eAAe,CAAC,+CAA+C,YAAY,eAAe,eAAe,CAAC,WAAW,qBAAqB,kBAAkB,eAAe,iBAAiB,YAAY,qBAAqB,CAAC,sCAAsC,kBAAkB,eAAe,oBAAoB,CAAC,iEAAiE,SAAS,CAAC,wCAAwC,+BAA+B,4BAA4B,CAAC,6CAA6C,kCAAkC,CAAC,4DAA4D,uBAAuB,CAAC,uCAAuC,qBAAqB,wBAAwB,CAAC,iFAAiF,kBAAkB,CAAC,kBAAkB,eAAe,OAAO,KAAK,CAAC,oBAAoB,cAAc,QAAQ,UAAU,CAAC,0BAA0B,QAAQ,CAAC,2BAA2B,SAAS,CAAC,kBAAkB,YAAY,CAAC,iBAAiB,SAAS,qBAAqB,kBAAkB,yBAAyB,UAAU,mBAAmB,sBAAsB,mBAAmB,gDAAgD,CAAC,oCAAoC,MAAM,OAAO,kBAAkB,mBAAmB,yBAAyB,WAAW,YAAY,qBAAqB,CAAC,+DAA+D,SAAS,CAAC,gEAAgE,UAAU,CAAC,oBAAoB,kBAAkB,aAAa,yBAAyB,kBAAkB,sBAAsB,6DAA6D,sBAAsB,YAAY,CAAC,qEAAqE,SAAS,CAAC,mEAAmE,cAAc,qBAAqB,CAAC,yIAAyI,wBAAwB,CAAC,yEAA0E,kBAAkB,WAAW,0BAA0B,gBAAgB,eAAe,mCAAmC,iCAAiC,CAAC,2BAA2B,eAAe,SAAS,kBAAkB,WAAW,cAAc,CAAC,0BAA0B,gBAAgB,CAAC,0BAA0B,gBAAgB,cAAc,SAAS,qBAAqB,CAAC,0BAA0B,eAAe,iBAAiB,kBAAkB,mBAAmB,gBAAgB,uBAAuB,cAAc,YAAY,gBAAgB,sBAAsB,cAAc,CAAC,mCAAmC,WAAW,wBAAwB,CAAC,yCAAyC,wBAAwB,CAAC,+BAA+B,yBAAyB,CAAC,sCAAsC,cAAc,kBAAkB,CAAC,4CAA4C,qBAAqB,CAAC,iBAAiB,SAAS,SAAS,CAAC,2CAA2C,iBAAiB,CAAC,uBAAuB,gBAAgB,SAAS,SAAS,CAAC,wBAAwB,kBAAkB,eAAe,WAAW,YAAY,gBAAgB,CAAC,WAAW,qBAAqB,iBAAiB,CAAC,kCAAkC,oBAAoB,CAAC,4BAA4B,eAAe,kBAAkB,CAAC,kCAAkC,oBAAoB,CAAC,qCAAmD,eAAe,yBAAyB,AAAyF,iBAAiB,QAAQ,cAAc,CAAC,wFAAvL,cAAc,AAAwC,8CAA8C,yCAA2C,CAAqS,AAA7P,mDAAmD,cAAc,WAAW,YAAY,eAAe,UAAU,kBAAkB,AAAyF,kBAAmB,CAAc,yDAAyD,aAAa,CAAC,gDAAgD,+BAA+B,0BAA0B,CAAC,kDAAkD,kBAAkB,CAAC,wDAAwD,oBAAoB,CAAC,qBAAqB,aAAa,CAAC,0BAA0B,eAAe,CAAC,mBAAmB,YAAY,iBAAiB,sBAAsB,oBAAoB,CAAC,kBAAkB,YAAY,UAAU,UAAU,iBAAiB,WAAW,eAAe,wBAAwB,wBAAwB,qBAAqB,gBAAgB,YAAY,4BAA4B,CAAC,0BAA0B,WAAW,CAAC,kBAAkB,eAAe,kBAAkB,QAAQ,aAAa,WAAW,cAAc,iBAAiB,cAAc,CAAC,wBAAwB,aAAa,CAAC,iBAAiB,kBAAkB,mBAAmB,mBAAmB,UAAU,QAAQ,+BAA+B,0BAA0B,CAAC,oCAAoC,sBAAsB,iBAAiB,CAAC,gBAAgB,qBAAqB,YAAY,iBAAiB,eAAe,kBAAkB,WAAW,wBAAwB,CAAC,+BAA+B,cAAc,CAAC,UAAU,gBAAgB,WAAW,eAAe,sBAAsB,yBAAyB,eAAe,aAAa,CAAC,2BAA2B,mBAAmB,cAAc,CAAC,0BAA0B,YAAY,YAAY,uBAAuB,qBAAqB,CAAC,iCAAmC,WAAW,kBAAkB,yBAAyB,SAAS,CAAC,4CAA4C,gBAAgB,CAAC,0CAA0C,eAAe,CAAC,8CAA8C,iBAAiB,CAAC,kCAAkC,+BAA+B,CAAC,wCAAwC,WAAW,qBAAqB,sBAAsB,SAAS,CAAC,iCAAiC,kBAAkB,mBAAmB,sBAAsB,sBAAsB,CAAC,iBAAkB,OAAO,SAAS,WAAW,UAAU,CAAC,gBAAiB,MAAM,QAAQ,UAAU,WAAW,CAAC,4CAA4C,kBAAkB,qBAAqB,qBAAqB,CAAC,aAAa,mBAAmB,gBAAgB,yBAAyB,eAAe,CAAC,yBAAyB,cAAc,CAAC,iBAAiB,qBAAqB,iBAAiB,gBAAgB,kBAAkB,CAAC,iBAAiB,qBAAqB,CAAC,iCAAkC,qBAAqB,WAAW,UAAU,WAAW,kBAAkB,mBAAmB,iBAAiB,qBAAqB,CAAC,mBAAmB,iBAAiB,uBAAuB,iBAAiB,WAAW,qBAAqB,CAAC,6BAA6B,aAAa,CAAC,yBAAyB,eAAe,gBAAgB,gBAAgB,WAAW,YAAY,iBAAiB,gBAAgB,CAAC,oEAAoE,eAAe,CAAC,sBAAsB,qBAAqB,QAAQ,SAAS,SAAS,WAAW,kBAAkB,SAAS,SAAS,CAAC,iEAAiE,mCAAmC,iCAAiC,CAAC,gCAAgC,QAAQ,gBAAgB,+BAA+B,CAAC,iCAAiC,WAAW,6BAA6B,kBAAkB,CAAC,2CAA2C,2BAA2B,CAAC,6CAA6C,wBAAwB,CAAC,oBAAoB,OAAO,CAAC,gBAAgB,mBAAmB,qBAAqB,gBAAgB,CAAC,wKAAwK,kBAAkB,CAAC,kCAAkC,QAAQ,CAAC,aAAa,qBAAqB,CAAC,0BAA0B,kBAAkB,UAAU,CAAC,uBAAuB,kBAAkB,gBAAgB,kBAAkB,WAAW,WAAW,CAAC,sBAAsB,kBAAkB,SAAS,QAAQ,mCAAmC,+BAA+B,aAAa,CAAC,+BAA+B,UAAU,iBAAiB,CAAC,uBAAuB,kBAAkB,eAAe,WAAW,eAAe,qCAAqC,WAAW,CAAC,gCAAgC,kBAAkB,SAAS,QAAQ,iBAAiB,eAAe,CAAC,iCAAiC,4BAA4B,uBAAuB,CAAC,yBAAyB,kBAAkB,yBAAyB,gCAAgC,CAAC,+BAA+B,kCAAkC,CAAC,eAAe,eAAe,eAAe,CAAC,kDAAkD,+BAA+B,CAAC,kDAAkD,sBAAsB,CAAC,0CAA0C,8BAA8B,CAAC,wCAAwC,kBAAkB,MAAM,OAAO,6BAA6B,iBAAiB,CAAC,sDAAwD,WAAW,kBAAkB,OAAO,SAAS,WAAW,WAAW,yBAAyB,SAAS,CAAC,6BAA6B,kBAAkB,SAAS,QAAQ,wBAAwB,CAAC,uBAAuB,MAAM,UAAU,QAAQ,6BAA6B,CAAC,mKAAmK,UAAU,OAAO,CAAC,gCAAgC,kBAAkB,OAAO,MAAM,SAAS,CAAC,0CAA0C,yBAAyB,aAAa,CAAC,gCAAgC,kBAAkB,OAAO,SAAS,SAAS,CAAC,yCAAyC,6BAA6B,yBAAyB,aAAa,CAAC,8BAA8B,kBAAkB,OAAO,SAAS,gBAAgB,SAAS,CAAC,4EAA4E,UAAU,CAAC,0BAA0B,eAAe,CAAC,6BAA6B,4BAA4B,CAAC,oDAAoD,kBAAkB,CAAC,wEAAwE,yBAAyB,aAAa,CAAC,sEAAsE,yBAAyB,aAAa,CAAC,wBAAwB,cAAc,iBAAiB,CAAC,gEAAgE,mBAAmB,2BAA2B,CAAC,4EAA4E,kBAAkB,CAAC,sMAAsM,wBAAwB,CAAC,kCAAkC,kBAAkB,CAAC,+BAA+B,kBAAkB,WAAW,MAAM,SAAS,QAAQ,8BAA8B,UAAU,CAAC,iCAAiC,qBAAqB,iBAAiB,gBAAgB,cAAc,CAAC,mCAAmC,aAAa,CAAC,oDAAoD,qCAAqC,CAAC,0HAA0H,6BAA6B,CAAC,wDAAwD,yBAAyB,2BAA2B,CAAC,wFAAwF,SAAS,eAAe,CAAC,kCAAkC,kBAAkB,kBAAkB,CAAC,iBAAiB,yBAAyB,kBAAkB,sBAAsB,6DAA6D,sBAAsB,YAAY,CAAC,uBAAuB,cAAc,SAAS,gBAAgB,eAAe,CAAC,4BAA4B,iBAAiB,eAAe,eAAe,cAAc,CAAC,kCAAkC,yBAAyB,aAAa,CAAC,sCAAsC,yBAAyB,UAAU,CAAC,0BAA0B,eAAe,CAAC,yBAAyB,6BAA6B,WAAW,CAAC,gCAAgC,eAAe,YAAY,cAAc,eAAe,eAAe,aAAa,CAAC,sCAAsC,aAAa,CAAC,sCAAsC,SAAS,CAAC,4CAA4C,cAAc,kBAAkB,CAAC,iCAAiC,YAAY,CAAC,mDAAmD,cAAc,kBAAkB,eAAe,CAAC,yDAAyD,eAAe,CAAC,eAAe,eAAe,gBAAgB,gBAAgB,CAAC,kBAAkB,WAAW,YAAY,sBAAsB,kBAAkB,cAAc,CAAC,0DAA0D,UAAU,CAAC,wBAAwB,cAAc,iBAAiB,CAAC,+BAA+B,YAAY,kBAAkB,MAAM,QAAQ,QAAQ,SAAS,8BAA8B,kCAAkC,CAAC,iDAAiD,WAAW,YAAY,cAAc,gBAAgB,CAAC,kCAAkC,wBAAwB,CAAC,2BAA2B,wBAAwB,CAAC,iCAAiC,wBAAwB,CAAC,iGAAiG,mCAAmC,UAAU,CAAC,2BAA2B,yBAAyB,UAAU,mBAAmB,UAAU,CAAC,sMAAsM,SAAS,CAAC,uBAAuB,cAAc,aAAa,CAAC,+BAA+B,eAAe,YAAY,wBAAwB,CAAC,kBAAkB,YAAY,cAAc,eAAe,CAAC,sDAAsD,wBAAwB,CAAC,wDAAwD,wBAAwB,CAAC,mBAAmB,kBAAkB,iBAAiB,cAAc,CAAC,yBAAyB,aAAa,CAAC,+BAA+B,wBAAwB,CAAC,kCAAkC,yBAAyB,mBAAmB,UAAU,CAAC,gDAAgD,mCAAmC,UAAU,CAAC,wBAAwB,aAAa,CAAC,kBAAkB,kBAAkB,iBAAiB,cAAc,CAAC,wBAAwB,aAAa,CAAC,8BAA8B,wBAAwB,CAAC,iCAAiC,yBAAyB,mBAAmB,UAAU,CAAC,+CAA+C,mCAAmC,UAAU,CAAC,sBAAsB,eAAe,CAAC,4BAA4B,mBAAmB,UAAU,CAAC,6CAA6C,eAAe,CAAC,gDAAgD,QAAQ,CAAC,2CAA2C,eAAe,CAAC,kCAAkC,eAAe,CAAC,+BAA+B,eAAe,CAAC,8BAA8B,kBAAkB,kBAAkB,WAAW,CAAC,qCAAqC,UAAU,CAAC,kCAAkC,eAAe,iBAAiB,CAAC,+BAA+B,WAAW,UAAU,sBAAsB,SAAS,YAAY,CAAC,6EAA6E,WAAW,CAAC,0EAA0E,iBAAiB,iBAAiB,CAAC,uCAAuC,8BAA8B,CAAC,oCAAoC,sBAAsB,kBAAkB,CAAC,6CAA6C,gBAAgB,CAAC,mCAAmC,kBAAkB,gCAAgC,eAAe,oBAAoB,cAAc,WAAW,qBAAqB,CAAC,wDAAwD,eAAe,sBAAsB,mBAAmB,aAAa,CAAC,wCAAwC,kBAAkB,mBAAmB,aAAa,CAAC,yDAAyD,kBAAkB,SAAS,QAAQ,UAAU,eAAe,CAAC,sBAAsB,gBAAgB,gBAAgB,CAAC,+BAA+B,kBAAkB,kBAAkB,YAAY,CAAC,4BAA4B,sBAAsB,SAAS,oBAAoB,UAAU,oBAAoB,CAAC,8BAA8B,kBAAkB,kBAAkB,cAAc,CAAC,AAAuE,6CAA3C,kBAAkB,wBAAwB,CAAmJ,AAAlJ,iBAAiB,cAAc,AAAyB,0BAA0B,gBAAgB,AAAkB,iBAAiB,YAAY,CAAC,kEAAoE,WAAW,cAAc,UAAU,CAAC,0BAA0B,kBAAkB,WAAW,CAAC,yBAAyB,6BAA6B,YAAY,iBAAiB,sBAAsB,iBAAiB,CAAC,2BAA2B,cAAc,WAAW,SAAS,6BAA6B,iBAAiB,eAAe,cAAc,kBAAkB,gBAAgB,UAAU,cAAc,CAAC,iCAAiC,wBAAwB,CAAC,kCAAkC,yBAAyB,aAAa,CAAC,sBAAsB,yBAAyB,WAAW,iBAAiB,kBAAkB,eAAe,eAAe,6BAA6B,UAAU,cAAc,CAAC,gCAAgC,WAAW,kBAAkB,CAAC,2BAA2B,eAAe,cAAc,SAAS,eAAe,eAAe,UAAU,cAAc,CAAC,0GAA0G,aAAa,CAAC,2BAA2B,eAAe,cAAc,qBAAqB,aAAa,cAAc,CAAC,0DAA0D,kBAAkB,MAAM,SAAS,YAAY,+BAA+B,sBAAsB,gBAAgB,yBAAyB,aAAa,CAAC,wGAAwG,iBAAiB,CAAC,gBAAgB,eAAe,CAAC,0CAA0C,eAAe,CAAC,sBAAsB,mBAAmB,UAAU,CAAC,qCAAqC,eAAe,CAAC,4BAA4B,eAAe,CAAC,yBAAyB,eAAe,CAAC,6BAA6B,kBAAkB,mBAAmB,aAAa,CAAC,6BAA6B,kBAAkB,gCAAgC,eAAe,oBAAoB,cAAc,WAAW,qBAAqB,CAAC,wBAAwB,YAAY,iBAAiB,CAAC,8BAA8B,eAAe,cAAc,iBAAiB,kBAAkB,cAAc,CAAC,0BAA0B,UAAU,CAAC,0BAA0B,WAAW,CAAC,2BAA2B,aAAa,iBAAiB,CAAC,4BAA4B,WAAW,eAAe,iBAAiB,gBAAgB,CAAC,aAAa,aAAa,WAAW,CAAC,uCAAuC,iBAAiB,QAAQ,CAAC,kBAAkB,iBAAiB,cAAc,CAAC,0CAA0C,yBAAyB,UAAU,CAAC,gDAAgD,wBAAwB,CAAC,2BAA2B,cAAc,kBAAkB,CAAC,wBAAwB,yBAAyB,cAAc,CAAC,kHAAkH,2CAA2C,CAAC,sLAAsL,gGAAgG,CAAC,yDAAyD,UAAU,wBAAwB,mBAAmB,CAAC,0DAA0D,UAAU,wBAAwB,oBAAoB,gCAAgC,2BAA2B,CAAC,mDAAmD,UAAU,wBAAwB,mBAAmB,CAAC,gEAAgE,UAAU,wBAAwB,oBAAoB,mCAAmC,8BAA8B,CAAC,yDAAyD,UAAU,wBAAwB,mBAAmB,CAAC,4DAA4D,UAAU,uBAAyB,mBAAqB,8BAA8B,yBAAyB,CAAC,qDAAqD,UAAU,yBAA6B,oBAAwB,CAAC,qBAAqB,4FAA4F,CAAC,gCAAgC,2FAA2F,CAAC,4CAA4C,iBAAiB,CAAC,qCAAqC,UAAU,gCAAgC,2BAA2B,CAAC,uBAAuB,+CAA+C,CAAC,gBAAgB,kBAAkB,oBAAoB,CAAC,iCAAiC,kBAAkB,gBAAgB,sBAAsB,0BAA0B,gBAAgB,WAAW,QAAQ,CAAC,yBAAyB,WAAW,CAAC,oCAAoC,WAAW,CAAC,wCAAwC,WAAW,CAAC,uDAAuD,SAAS,CAAC,oEAAoE,cAAc,CAAC,0BAA0B,iBAAiB,cAAc,qBAAqB,UAAU,mBAAmB,iBAAiB,CAAC,uFAAuF,mBAAmB,CAAC,uBAAuB,UAAU,SAAS,gBAAgB,iBAAiB,CAAC,2DAA6D,WAAW,cAAc,WAAW,WAAW,CAAC,uBAAuB,YAAY,iBAAiB,cAAc,CAAC,yDAAyD,mBAAmB,cAAc,CAAC,6CAA6C,UAAU,CAAC,gCAAgC,cAAc,kBAAkB,CAAC,eAAe,aAAa,yBAAyB,sBAAsB,6DAA6D,kBAAkB,kBAAkB,YAAY,OAAO,aAAa,yBAAyB,qBAAqB,gBAAgB,CAAC,kCAAkC,gEAAgE,CAAC,8CAA8C,yBAAyB,qBAAqB,CAAC,wBAAwB,YAAY,kBAAkB,eAAe,CAAC,6DAA+D,YAAY,QAAQ,WAAW,kBAAkB,eAAe,iBAAiB,iBAAiB,yBAAyB,YAAY,WAAW,OAAO,QAAQ,sBAAsB,gBAAgB,eAAe,CAAC,8BAA+B,SAAS,gBAAgB,CAAC,+BAAgC,iBAAiB,iBAAiB,CAAC,0CAA2C,cAAc,CAAC,2CAA4C,sBAAsB,CAAC,uBAAuB,6BAA6B,YAAY,YAAY,iBAAiB,iBAAiB,qBAAqB,CAAC,oBAAoB,YAAY,iBAAiB,cAAc,aAAa,eAAe,6BAA6B,UAAU,eAAe,aAAa,CAAC,4BAA4B,gBAAgB,aAAa,CAAC,YAAY,kBAAkB,gBAAgB,gBAAgB,kBAAkB,yBAAyB,aAAa,aAAa,cAAc,CAAC,4DAA6D,kBAAkB,cAAc,QAAQ,SAAS,yBAAyB,kBAAkB,CAAC,2BAA2B,gBAAgB,CAAC,iCAAkC,YAAY,gBAAgB,CAAC,8BAA8B,kBAAkB,CAAC,6CAA6C,YAAY,SAAS,iBAAiB,yBAAyB,qBAAqB,CAAC,mDAAoD,WAAW,iBAAiB,sBAAsB,qBAAqB,CAAC,iCAAiC,eAAe,CAAC,gDAAgD,SAAS,SAAS,iBAAiB,mBAAmB,2BAA2B,CAAC,sDAAuD,QAAQ,iBAAiB,mBAAmB,wBAAwB,CAAC,gCAAgC,gBAAgB,CAAC,+CAA+C,QAAQ,UAAU,kBAAkB,2BAA2B,mBAAmB,CAAC,qDAAsD,YAAY,SAAS,wBAAwB,mBAAmB,CAAC,+BAA+B,iBAAiB,CAAC,8CAA8C,QAAQ,WAAW,kBAAkB,qBAAqB,yBAAyB,CAAC,oDAAqD,UAAU,YAAY,iBAAiB,qBAAqB,sBAAsB,CAAC,mBAAmB,cAAc,eAAe,cAAc,iBAAiB,CAAC,eAAe,6BAA6B,CAAC,eAAe,uCAAuC,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAAC,uBAAuB,GAAK,SAAS,CAAC,CAAC,SAAS,eAAe,OAAO,MAAM,WAAW,YAAY,WAAW,eAAe,CAAC,gBAAgB,gBAAgB,qBAAqB,sBAAsB,sBAAsB,YAAY,kBAAkB,eAAe,gBAAgB,mCAAmC,0BAA0B,CAAC,yBAAyB,eAAe,MAAM,SAAS,OAAO,QAAQ,iBAAiB,CAAC,+BAAgC,WAAW,qBAAqB,YAAY,QAAQ,qBAAqB,CAAC,wBAAwB,kBAAkB,mBAAmB,CAAC,2BAA2B,kBAAkB,SAAS,WAAW,eAAe,YAAY,UAAU,UAAU,cAAc,CAAC,kDAAkD,UAAU,CAAC,gHAAgH,aAAa,CAAC,yBAAyB,kBAAkB,cAAc,eAAe,iBAAiB,CAAC,uBAAuB,gBAAgB,CAAC,gFAAgF,oBAAoB,CAAC,0BAA0B,cAAc,eAAe,gBAAgB,cAAc,CAAC,uBAAuB,eAAe,gBAAgB,eAAe,gBAAgB,YAAY,UAAU,CAAC,yBAAyB,QAAQ,CAAC,2BAA2B,SAAS,eAAe,CAAC,sBAAsB,uBAAuB,gBAAgB,CAAC,0CAA0C,gBAAgB,CAAC,8BAA8B,+BAA+B,0BAA0B,CAAC,wBAAwB,kBAAkB,QAAQ,+BAA+B,2BAA2B,wBAAwB,CAAC,6CAA6C,aAAa,CAAC,4CAA4C,aAAa,CAAC,wCAAwC,aAAa,CAAC,6CAA6C,aAAa,CAAC,0BAA0B,4BAA4B,CAAC,0BAA0B,6BAA6B,CAAC,0BAA0B,GAAG,iCAAiC,SAAS,CAAC,GAAK,wBAA6B,SAAS,CAAC,CAAC,2BAA2B,GAAG,wBAA6B,SAAS,CAAC,GAAK,iCAAiC,SAAS,CAAC,CAAC,eAAe,eAAe,aAAa,CAAC,0BAA0B,aAAa,aAAa,CAAC,qBAAqB,UAAU,CAAC,gQAAgQ,cAAc,WAAW,CAAC,0DAA0D,YAAY,CAAC,0DAA0D,6BAA6B,aAAa,CAAC,sEAAsE,cAAc,cAAc,CAAC,0CAA0C,eAAe,CAAC,yCAAyC,WAAW,qBAAqB,gBAAgB,gBAAgB,CAAC,+BAA+B,qBAAqB,kBAAkB,kBAAkB,CAAC,sCAAsC,WAAW,oBAAoB,CAAC,wCAAwC,qBAAqB,kBAAkB,CAAC,2DAA2D,aAAa,CAAC,cAAc,kBAAkB,CAAC,4BAA4B,eAAe,CAAC,yKAAyK,wBAAwB,CAAC,mFAAmF,oBAAoB,CAAC,sDAAsD,YAAY,cAAc,gBAAgB,CAAC,qBAAqB,iBAAiB,sBAAsB,WAAW,eAAe,cAAc,cAAc,yBAAyB,qBAAqB,CAAC,uBAAuB,iBAAiB,kBAAkB,cAAc,CAAC,qBAAqB,cAAc,eAAe,cAAc,gBAAgB,kBAAkB,SAAS,MAAM,CAAC,iBAAiB,gCAAgC,UAAU,kBAAkB,eAAe,CAAC,qBAAqB,kBAAkB,SAAS,OAAO,WAAW,yBAAyB,UAAU,wDAAwD,eAAe,CAAC,kBAAkB,YAAY,yBAAyB,YAAY,WAAW,iBAAiB,uBAAuB,kBAAkB,kBAAkB,eAAe,cAAc,eAAe,mBAAmB,CAAC,gCAAgC,wBAA2B,mBAAsB,CAAC,wBAAwB,aAAa,CAAC,mBAAmB,gBAAgB,mBAAmB,iBAAiB,CAAC,iCAAiC,cAAc,CAAC,qBAAqB,eAAe,CAAC,sCAAsC,kBAAkB,eAAe,iBAAiB,eAAe,aAAa,CAAC,mBAAmB,OAAO,CAAC,mBAAmB,MAAM,CAAC,cAAc,kBAAkB,yBAAyB,UAAU,CAAC,eAAe,eAAe,YAAY,sBAAsB,iBAAiB,qBAAqB,gBAAgB,eAAe,cAAc,iBAAiB,CAAC,8BAA8B,kBAAkB,kBAAkB,kDAAkD,eAAe,CAAC,qCAAqC,wBAA2B,oBAAuB,oBAAoB,CAAC,oCAAoC,yBAAyB,UAAU,CAAC,qBAAqB,cAAc,cAAc,CAAC,2BAA2B,WAAW,cAAc,CAAC,yBAAyB,aAAa,CAAC,kBAAkB,gBAAgB,iBAAiB,CAAC,qDAAqD,YAAY,CAAC,yDAAyD,oBAAoB,CAAC,8DAA8D,kBAAkB,eAAe,QAAQ,YAAY,sBAAsB,iBAAiB,gBAAgB,SAAS,WAAW,8BAA8B,yBAAyB,CAAC,oKAAoK,UAAU,CAAC,+CAA+C,6BAA6B,iDAAiD,CAAC,iEAAiE,kBAAkB,gBAAgB,CAAC,yDAAyD,yBAAyB,yBAAyB,yBAAyB,CAAC,qEAAqE,mBAAmB,iBAAiB,CAAC,sBAAsB,gBAAgB,wBAAwB,CAAC,wCAAwC,YAAY,CAAC,uCAAuC,yBAAyB,QAAQ,CAAC,sDAAsD,kDAAkD,6BAA6B,aAAa,kBAAkB,gBAAgB,CAAC,gEAAgE,sBAAsB,2BAA2B,yBAAyB,CAAC,4EAA4E,yBAAyB,CAAC,2EAA2E,0BAA0B,CAAC,oBAAoB,gCAAgC,CAAC,oBAAoB,kBAAkB,OAAO,QAAQ,gCAAgC,CAAC,mBAAmB,+BAA+B,CAAC,mBAAmB,kBAAkB,OAAO,QAAQ,+BAA+B,CAAC,8BAA8B,GAAG,UAAU,qBAAqB,0BAA0B,CAAC,GAAG,UAAU,qBAAqB,uBAAuB,CAAC,CAAC,8BAA8B,GAAG,qBAAqB,wBAAwB,SAAS,CAAC,GAAK,qBAAqB,2BAA2B,SAAS,CAAC,CAAC,6BAA6B,GAAG,UAAU,qBAAqB,2BAA2B,CAAC,GAAG,UAAU,qBAAqB,uBAAuB,CAAC,CAAC,6BAA6B,GAAG,qBAAqB,wBAAwB,SAAS,CAAC,GAAK,qBAAqB,4BAA4B,SAAS,CAAC,CAAC,QAAQ,yBAAyB,cAAc,YAAY,iBAAiB,eAAe,WAAW,kBAAkB,sBAAsB,4BAA4B,CAAC,uBAAuB,kBAAkB,kBAAkB,kBAAkB,eAAe,eAAe,yBAA6B,qBAAyB,YAAY,WAAW,iBAAiB,sBAAsB,SAAS,UAAU,CAAC,6BAA6B,sBAAsB,aAAa,CAAC,cAAc,yBAAyB,qBAAqB,aAAa,CAAC,mCAAmC,yBAAyB,UAAU,CAAC,qBAAqB,oBAAoB,CAAC,iBAAiB,qCAAqC,iCAAiC,aAAa,CAAC,sCAAsC,yBAAyB,UAAU,CAAC,wBAAwB,oBAAoB,CAAC,iBAAiB,qCAAqC,iCAAiC,aAAa,CAAC,sCAAsC,yBAAyB,UAAU,CAAC,wBAAwB,oBAAoB,CAAC,iBAAiB,qCAAqC,iCAAiC,aAAa,CAAC,sCAAsC,yBAAyB,UAAU,CAAC,wBAAwB,oBAAoB,CAAC,gBAAgB,oCAAoC,gCAAgC,aAAa,CAAC,qCAAqC,yBAAyB,UAAU,CAAC,uBAAuB,oBAAoB,CAAC,SAAS,eAAe,gBAAgB,wBAAwB,CAAC,sBAAsB,kBAAkB,gBAAgB,kBAAkB,WAAW,WAAW,CAAC,qBAAqB,kBAAkB,SAAS,QAAQ,mCAAmC,+BAA+B,aAAa,CAAC,sCAAsC,gBAAgB,4BAA4B,CAAC,kDAAkD,aAAa,CAAC,4EAA4E,qBAAqB,qBAAqB,CAAC,uBAAuB,iBAAiB,YAAY,cAAc,CAAC,sFAAsF,gBAAgB,CAAC,oCAAoC,qBAAqB,CAAC,6BAA6B,kBAAkB,CAAC,2BAA2B,eAAe,QAAQ,SAAS,iBAAiB,6BAA6B,qBAAqB,0BAA0B,sBAAsB,wBAAwB,oBAAoB,oCAAoC,CAAC,iCAAiC,sBAAsB,CAAC,oCAAoC,4BAA4B,uBAAuB,CAAC,mCAAmC,yBAAyB,cAAc,CAAC,qBAAqB,cAAc,CAAC,4BAA4B,iBAAiB,eAAe,aAAa,CAAC,4EAA4E,wBAAwB,CAAC,UAAU,WAAW,iBAAiB,SAAS,sBAAsB,kBAAkB,kBAAkB,sBAAsB,gBAAgB,WAAW,UAAU,cAAc,sBAAsB,CAAC,iCAAiC,WAAW,eAAe,cAAc,CAAC,mBAAmB,wBAAwB,CAAC,gBAAgB,wBAAwB,CAAC,mBAAmB,wBAAwB,CAAC,iBAAiB,wBAAwB,CAAC,mBAAmB,mBAAmB,aAAa,CAAC,gBAAgB,eAAe,WAAW,mBAAmB,WAAW,qBAAqB,CAAC,uBAAuB,eAAe,UAAU,CAAC,iBAAiB,eAAe,gBAAgB,CAAC,yBAAyB,eAAe,CAAC,oBAAoB,eAAe,WAAW,UAAU,SAAS,WAAW,kBAAkB,cAAc,CAAC,yIAAyI,SAAS,CAAC,gCAAgC,kBAAkB,eAAe,OAAO,CAAC,iBAAiB,YAAY,aAAa,sBAAsB,kBAAkB,eAAe,WAAW,sBAAsB,6DAA6D,uDAAuD,eAAe,CAAC,uCAAuC,aAAa,CAAC,uCAAuC,aAAa,CAAC,sCAAsC,aAAa,CAAC,kCAAkC,aAAa,CAAC,wBAAwB,aAAa,CAAC,qCAAqC,gBAAgB,CAAC,wBAAwB,gBAAgB,eAAe,cAAc,QAAQ,CAAC,0BAA0B,eAAe,iBAAiB,gBAAgB,cAAc,kBAAkB,CAAC,uBAAuB,WAAW,YAAY,eAAe,WAAW,kBAAkB,OAAO,CAAC,2BAA2B,SAAS,WAAW,kBAAkB,eAAe,cAAc,cAAc,CAAC,iCAAiC,aAAa,CAAC,4BAA4B,+BAA+B,2BAA2B,OAAO,CAAC,iBAAiB,qBAAqB,YAAY,kBAAkB,kBAAkB,CAAC,2BAA2B,aAAa,CAAC,kCAAkC,wBAAwB,qBAAqB,gBAAgB,kBAAkB,CAAC,sDAAsD,kBAAkB,CAAC,gHAAgH,qBAAqB,aAAa,CAAC,4HAA4H,cAAc,kBAAkB,CAAC,sDAAsD,YAAY,8BAA8B,WAAW,iBAAiB,QAAQ,kBAAkB,cAAc,eAAe,kBAAkB,SAAS,CAAC,kEAAkE,aAAa,CAAC,gMAAgM,oBAAoB,CAAC,8EAA8E,cAAc,kBAAkB,CAAC,2BAA2B,OAAO,CAAC,2BAA2B,UAAU,CAAC,wBAAwB,WAAW,CAAC,sGAAsG,iBAAiB,WAAW,cAAc,CAAC,mDAAmD,UAAU,CAAC,yCAAyC,kBAAkB,CAAC,wBAAwB,WAAW,CAAC,sGAAsG,iBAAiB,WAAW,cAAc,CAAC,mDAAmD,UAAU,CAAC,yCAAyC,kBAAkB,CAAC,oBAAoB,kBAAkB,kBAAkB,aAAa,aAAa,eAAe,eAAe,CAAC,4EAA6E,kBAAkB,cAAc,QAAQ,SAAS,yBAAyB,kBAAkB,CAAC,mCAAmC,gBAAgB,CAAC,yCAA0C,YAAY,gBAAgB,CAAC,sJAAsJ,UAAU,CAAC,sCAAsC,kBAAkB,CAAC,qDAAqD,YAAY,yBAAyB,qBAAqB,CAAC,2DAA4D,WAAW,iBAAiB,yBAAyB,qBAAqB,CAAC,yCAAyC,eAAe,CAAC,wDAAwD,SAAS,mBAAmB,2BAA2B,CAAC,8DAA+D,QAAQ,iBAAiB,mBAAmB,2BAA2B,CAAC,wCAAwC,gBAAgB,CAAC,uDAAuD,UAAU,2BAA2B,mBAAmB,CAAC,6DAA8D,YAAY,SAAS,2BAA2B,mBAAmB,CAAC,uCAAuC,iBAAiB,CAAC,sDAAsD,WAAW,qBAAqB,yBAAyB,CAAC,4DAA6D,UAAU,YAAY,iBAAiB,qBAAqB,yBAAyB,CAAC,6BAA6B,gBAAgB,wBAAwB,CAAC,8DAA8D,wBAAwB,CAAC,oEAAqE,qBAAqB,CAAC,iEAAiE,2BAA2B,CAAC,uEAAwE,wBAAwB,CAAC,+DAA+D,yBAAyB,CAAC,qEAAsE,sBAAsB,CAAC,gEAAgE,0BAA0B,CAAC,sEAAuE,uBAAuB,CAAC,4BAA4B,mBAAmB,UAAU,CAAC,mCAAmC,aAAa,CAAC,wEAAwE,qBAAqB,qBAAqB,CAAC,iBAAiB,UAAU,CAAC,uBAAuB,iBAAiB,CAAC,0CAA0C,UAAU,YAAY,aAAa,CAAC,uCAAuC,UAAU,YAAY,yBAAyB,CAAC,kDAAkD,SAAS,UAAW,CAAwD,0FAAxD,8BAA8B,yBAAyB,CAAiG,6CAA6C,mBAAmB,CAAC,+DAA+D,iBAAiB,WAAW,kBAAkB,YAAY,WAAW,eAAe,CAAC,gFAAgF,kBAAkB,iBAAiB,iBAAiB,CAAC,oLAAoL,SAAS,gBAAgB,yBAAyB,iBAAiB,sBAAsB,0DAA0D,CAAC,0FAA0F,WAAW,WAAW,6BAA6B,CAAC,0FAA0F,WAAW,8BAA8B,CAAC,qHAAqH,4BAA4B,4BAA4B,CAAC,gMAAgM,oBAAoB,CAAC,kMAAkM,oBAAoB,CAAC,mBAAmB,WAAW,WAAW,cAAc,yBAAyB,kBAAkB,kBAAkB,eAAe,qBAAqB,CAAC,8BAA8B,mBAAmB,UAAU,CAAC,4BAA4B,cAAc,CAAC,2FAA2F,wBAAwB,CAAC,0LAA0L,kBAAkB,CAAC,kKAAkK,uBAAuB,mBAAmB,kBAAkB,CAAC,kBAAkB,YAAY,cAAc,CAAC,gBAAgB,WAAW,yBAAyB,2BAA2B,8BAA8B,iBAAiB,CAAC,2BAA2B,WAAW,YAAY,kBAAkB,aAAa,UAAU,+BAA+B,2BAA2B,6BAA6B,kBAAkB,qBAAqB,gBAAgB,CAAC,iCAAiC,WAAW,CAAC,kEAAkE,oBAAoB,WAAW,CAAC,oCAAoC,wBAAwB,eAAe,CAAC,mBAAmB,WAAW,YAAY,yBAAyB,kBAAkB,eAAe,qBAAqB,gBAAgB,CAAC,8EAA8E,yBAAyB,qBAAqB,wBAAwB,CAAC,kDAAkD,oBAAoB,WAAW,CAAC,4BAA4B,wBAAwB,eAAe,CAAC,iBAAiB,kBAAkB,UAAU,WAAW,mBAAmB,yBAAyB,+BAA+B,0BAA0B,CAAC,iBAAiB,kBAAkB,cAAc,oCAAsC,SAAS,MAAM,QAAQ,SAAS,OAAO,sBAAsB,CAAC,+BAA+B,cAAc,CAAC,mDAAmD,gBAAgB,CAAC,6DAA6D,WAAW,WAAW,CAAC,oBAAoB,QAAQ,iBAAiB,WAAW,kBAAkB,iBAAiB,CAAC,owBAAowB,iBAAiB,CAAC,qCAAqC,cAAc,aAAa,cAAc,CAAC,8BAA8B,WAAW,YAAY,2CAA2C,CAAC,0BAA0B,iDAAiD,wBAAwB,oBAAoB,eAAe,eAAe,oBAAoB,CAAC,0BAA0B,GAAK,uBAAwB,CAAC,CAAC,wBAAwB,GAAG,uBAAuB,mBAAmB,CAAC,IAAI,wBAAwB,uBAAuB,CAAC,GAAK,wBAAwB,wBAAwB,CAAC,CAAC,QAAQ,qBAAqB,CAAC,6BAA6B,aAAa,CAAC,cAAc,UAAU,CAAC,cAAc,oBAAoB,YAAY,CAAC,yCAAyC,YAAY,CAAC,8BAA8B,mBAAmB,oBAAoB,CAAC,8BAA8B,sBAAsB,kBAAkB,CAAC,sCAAsC,yBAAyB,4BAA4B,CAAC,uCAAuC,sBAAsB,6BAA6B,CAAC,6BAA6B,kBAAkB,wBAAwB,CAAC,gCAAgC,qBAAqB,sBAAsB,CAAC,+PAA+P,WAAW,qBAAqB,CAAC,UAAU,OAAO,CAAC,iBAAiB,aAAa,CAAC,eAAe,OAAO,CAAC,eAAe,MAAM,CAAC,UAAU,cAAc,CAAC,iBAAiB,oBAAoB,CAAC,eAAe,cAAc,CAAC,eAAe,aAAa,CAAC,UAAU,cAAc,CAAC,iBAAiB,oBAAoB,CAAC,eAAe,cAAc,CAAC,eAAe,aAAa,CAAC,UAAU,WAAW,CAAC,iBAAiB,iBAAiB,CAAC,eAAe,WAAW,CAAC,eAAe,UAAU,CAAC,UAAU,eAAe,CAAC,iBAAiB,qBAAqB,CAAC,eAAe,eAAe,CAAC,eAAe,cAAc,CAAC,UAAU,eAAe,CAAC,iBAAiB,qBAAqB,CAAC,eAAe,eAAe,CAAC,eAAe,cAAc,CAAC,UAAU,SAAS,CAAC,iBAAiB,eAAe,CAAC,eAAe,SAAS,CAAC,eAAe,QAAQ,CAAC,UAAU,eAAe,CAAC,iBAAiB,qBAAqB,CAAC,eAAe,eAAe,CAAC,eAAe,cAAc,CAAC,UAAU,eAAe,CAAC,iBAAiB,qBAAqB,CAAC,eAAe,eAAe,CAAC,eAAe,cAAc,CAAC,UAAU,WAAW,CAAC,iBAAiB,iBAAiB,CAAC,eAAe,WAAW,CAAC,eAAe,UAAU,CAAC,WAAW,eAAe,CAAC,kBAAkB,qBAAqB,CAAC,gBAAgB,eAAe,CAAC,gBAAgB,cAAc,CAAC,WAAW,eAAe,CAAC,kBAAkB,qBAAqB,CAAC,gBAAgB,eAAe,CAAC,gBAAgB,cAAc,CAAC,WAAW,SAAS,CAAC,kBAAkB,eAAe,CAAC,gBAAgB,kBAAkB,SAAS,CAAC,gBAAgB,QAAQ,CAAC,WAAW,eAAe,CAAC,kBAAkB,qBAAqB,CAAC,gBAAgB,eAAe,CAAC,gBAAgB,cAAc,CAAC,WAAW,eAAe,CAAC,kBAAkB,qBAAqB,CAAC,gBAAgB,eAAe,CAAC,gBAAgB,cAAc,CAAC,WAAW,WAAW,CAAC,kBAAkB,iBAAiB,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,UAAU,CAAC,WAAW,eAAe,CAAC,kBAAkB,qBAAqB,CAAC,gBAAgB,eAAe,CAAC,gBAAgB,cAAc,CAAC,WAAW,eAAe,CAAC,kBAAkB,qBAAqB,CAAC,gBAAgB,eAAe,CAAC,gBAAgB,cAAc,CAAC,WAAW,SAAS,CAAC,kBAAkB,eAAe,CAAC,gBAAgB,SAAS,CAAC,gBAAgB,QAAQ,CAAC,WAAW,eAAe,CAAC,kBAAkB,qBAAqB,CAAC,gBAAgB,eAAe,CAAC,gBAAgB,cAAc,CAAC,WAAW,eAAe,CAAC,kBAAkB,qBAAqB,CAAC,gBAAgB,eAAe,CAAC,gBAAgB,cAAc,CAAC,WAAW,WAAW,CAAC,kBAAkB,iBAAiB,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,UAAU,CAAC,WAAW,eAAe,CAAC,kBAAkB,qBAAqB,CAAC,gBAAgB,eAAe,CAAC,gBAAgB,cAAc,CAAC,WAAW,eAAe,CAAC,kBAAkB,qBAAqB,CAAC,gBAAgB,eAAe,CAAC,gBAAgB,cAAc,CAAC,WAAW,UAAU,CAAC,kBAAkB,gBAAgB,CAAC,gBAAgB,UAAU,CAAC,gBAAgB,SAAS,CAAC,yBAAyB,aAAa,OAAO,CAAC,oBAAoB,aAAa,CAAC,kBAAkB,kBAAkB,OAAO,CAAC,kBAAkB,kBAAkB,MAAM,CAAC,aAAa,cAAc,CAAC,oBAAoB,oBAAoB,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,kBAAkB,kBAAkB,aAAa,CAAC,aAAa,cAAc,CAAC,oBAAoB,oBAAoB,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,kBAAkB,kBAAkB,aAAa,CAAC,aAAa,WAAW,CAAC,oBAAoB,iBAAiB,CAAC,kBAAkB,kBAAkB,WAAW,CAAC,kBAAkB,kBAAkB,UAAU,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,SAAS,CAAC,oBAAoB,eAAe,CAAC,kBAAkB,kBAAkB,SAAS,CAAC,kBAAkB,kBAAkB,QAAQ,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,WAAW,CAAC,oBAAoB,iBAAiB,CAAC,kBAAkB,kBAAkB,WAAW,CAAC,kBAAkB,kBAAkB,UAAU,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,SAAS,CAAC,qBAAqB,eAAe,CAAC,mBAAmB,kBAAkB,SAAS,CAAC,mBAAmB,kBAAkB,QAAQ,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,WAAW,CAAC,qBAAqB,iBAAiB,CAAC,mBAAmB,kBAAkB,WAAW,CAAC,mBAAmB,kBAAkB,UAAU,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,SAAS,CAAC,qBAAqB,eAAe,CAAC,mBAAmB,kBAAkB,SAAS,CAAC,mBAAmB,kBAAkB,QAAQ,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,WAAW,CAAC,qBAAqB,iBAAiB,CAAC,mBAAmB,kBAAkB,WAAW,CAAC,mBAAmB,kBAAkB,UAAU,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,UAAU,CAAC,qBAAqB,gBAAgB,CAAC,mBAAmB,kBAAkB,UAAU,CAAC,mBAAmB,kBAAkB,SAAS,CAAC,CAAC,yBAAyB,aAAa,OAAO,CAAC,oBAAoB,aAAa,CAAC,kBAAkB,kBAAkB,OAAO,CAAC,kBAAkB,kBAAkB,MAAM,CAAC,aAAa,cAAc,CAAC,oBAAoB,oBAAoB,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,kBAAkB,kBAAkB,aAAa,CAAC,aAAa,cAAc,CAAC,oBAAoB,oBAAoB,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,kBAAkB,kBAAkB,aAAa,CAAC,aAAa,WAAW,CAAC,oBAAoB,iBAAiB,CAAC,kBAAkB,kBAAkB,WAAW,CAAC,kBAAkB,kBAAkB,UAAU,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,SAAS,CAAC,oBAAoB,eAAe,CAAC,kBAAkB,kBAAkB,SAAS,CAAC,kBAAkB,kBAAkB,QAAQ,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,WAAW,CAAC,oBAAoB,iBAAiB,CAAC,kBAAkB,kBAAkB,WAAW,CAAC,kBAAkB,kBAAkB,UAAU,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,SAAS,CAAC,qBAAqB,eAAe,CAAC,mBAAmB,kBAAkB,SAAS,CAAC,mBAAmB,kBAAkB,QAAQ,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,WAAW,CAAC,qBAAqB,iBAAiB,CAAC,mBAAmB,kBAAkB,WAAW,CAAC,mBAAmB,kBAAkB,UAAU,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,SAAS,CAAC,qBAAqB,eAAe,CAAC,mBAAmB,kBAAkB,SAAS,CAAC,mBAAmB,kBAAkB,QAAQ,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,WAAW,CAAC,qBAAqB,iBAAiB,CAAC,mBAAmB,kBAAkB,WAAW,CAAC,mBAAmB,kBAAkB,UAAU,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,UAAU,CAAC,qBAAqB,gBAAgB,CAAC,mBAAmB,kBAAkB,UAAU,CAAC,mBAAmB,kBAAkB,SAAS,CAAC,CAAC,yBAAyB,aAAa,OAAO,CAAC,oBAAoB,aAAa,CAAC,kBAAkB,kBAAkB,OAAO,CAAC,kBAAkB,kBAAkB,MAAM,CAAC,aAAa,cAAc,CAAC,oBAAoB,oBAAoB,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,kBAAkB,kBAAkB,aAAa,CAAC,aAAa,cAAc,CAAC,oBAAoB,oBAAoB,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,kBAAkB,kBAAkB,aAAa,CAAC,aAAa,WAAW,CAAC,oBAAoB,iBAAiB,CAAC,kBAAkB,kBAAkB,WAAW,CAAC,kBAAkB,kBAAkB,UAAU,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,SAAS,CAAC,oBAAoB,eAAe,CAAC,kBAAkB,kBAAkB,SAAS,CAAC,kBAAkB,kBAAkB,QAAQ,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,WAAW,CAAC,oBAAoB,iBAAiB,CAAC,kBAAkB,kBAAkB,WAAW,CAAC,kBAAkB,kBAAkB,UAAU,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,SAAS,CAAC,qBAAqB,eAAe,CAAC,mBAAmB,kBAAkB,SAAS,CAAC,mBAAmB,kBAAkB,QAAQ,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,WAAW,CAAC,qBAAqB,iBAAiB,CAAC,mBAAmB,kBAAkB,WAAW,CAAC,mBAAmB,kBAAkB,UAAU,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,SAAS,CAAC,qBAAqB,eAAe,CAAC,mBAAmB,kBAAkB,SAAS,CAAC,mBAAmB,kBAAkB,QAAQ,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,WAAW,CAAC,qBAAqB,iBAAiB,CAAC,mBAAmB,kBAAkB,WAAW,CAAC,mBAAmB,kBAAkB,UAAU,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,UAAU,CAAC,qBAAqB,gBAAgB,CAAC,mBAAmB,kBAAkB,UAAU,CAAC,mBAAmB,kBAAkB,SAAS,CAAC,CAAC,0BAA0B,aAAa,OAAO,CAAC,oBAAoB,aAAa,CAAC,kBAAkB,kBAAkB,OAAO,CAAC,kBAAkB,kBAAkB,MAAM,CAAC,aAAa,cAAc,CAAC,oBAAoB,oBAAoB,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,kBAAkB,kBAAkB,aAAa,CAAC,aAAa,cAAc,CAAC,oBAAoB,oBAAoB,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,kBAAkB,kBAAkB,aAAa,CAAC,aAAa,WAAW,CAAC,oBAAoB,iBAAiB,CAAC,kBAAkB,kBAAkB,WAAW,CAAC,kBAAkB,kBAAkB,UAAU,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,SAAS,CAAC,oBAAoB,eAAe,CAAC,kBAAkB,kBAAkB,SAAS,CAAC,kBAAkB,kBAAkB,QAAQ,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,eAAe,CAAC,oBAAoB,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe,CAAC,kBAAkB,kBAAkB,cAAc,CAAC,aAAa,WAAW,CAAC,oBAAoB,iBAAiB,CAAC,kBAAkB,kBAAkB,WAAW,CAAC,kBAAkB,kBAAkB,UAAU,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,SAAS,CAAC,qBAAqB,eAAe,CAAC,mBAAmB,kBAAkB,SAAS,CAAC,mBAAmB,kBAAkB,QAAQ,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,WAAW,CAAC,qBAAqB,iBAAiB,CAAC,mBAAmB,kBAAkB,WAAW,CAAC,mBAAmB,kBAAkB,UAAU,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,SAAS,CAAC,qBAAqB,eAAe,CAAC,mBAAmB,kBAAkB,SAAS,CAAC,mBAAmB,kBAAkB,QAAQ,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,WAAW,CAAC,qBAAqB,iBAAiB,CAAC,mBAAmB,kBAAkB,WAAW,CAAC,mBAAmB,kBAAkB,UAAU,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,eAAe,CAAC,qBAAqB,qBAAqB,CAAC,mBAAmB,kBAAkB,eAAe,CAAC,mBAAmB,kBAAkB,cAAc,CAAC,cAAc,UAAU,CAAC,qBAAqB,gBAAgB,CAAC,mBAAmB,kBAAkB,UAAU,CAAC,mBAAmB,kBAAkB,SAAS,CAAC,CAAC,8BAA8B,qBAAqB,YAAY,qBAAqB,CAAC,WAAW,qBAAqB,kBAAkB,cAAc,CAAC,kBAAkB,kBAAkB,WAAW,MAAM,OAAO,UAAU,uBAAuB,CAAC,kBAAkB,YAAY,CAAC,gBAAgB,eAAe,cAAc,cAAc,CAAC,yBAAyB,yBAAyB,0BAA0B,kBAAkB,sBAAsB,YAAY,aAAa,eAAe,kBAAkB,kBAAkB,CAAC,2BAA2B,eAAe,aAAa,CAAC,+BAA+B,qBAAqB,aAAa,CAAC,mBAAmB,sBAAsB,0BAA0B,kBAAkB,sBAAsB,YAAY,aAAa,kBAAkB,eAAe,kBAAkB,eAAe,CAAC,oCAAoC,cAAc,eAAe,iBAAiB,CAAC,uCAAuC,cAAc,iBAAiB,CAAC,mCAAmC,eAAe,cAAc,mBAAmB,gBAAgB,CAAC,mCAAmC,iBAAiB,CAAC,qCAAqC,0CAA0C,eAAe,eAAe,CAAC,yBAAyB,oBAAoB,CAAC,+BAA+B,sCAAsC,yBAAyB,CAAC,gBAAgB,SAAS,UAAU,eAAe,CAAC,2FAA2F,aAAa,CAAC,sBAAsB,4CAA4C,eAAe,cAAc,gBAAgB,eAAe,sBAAsB,kBAAkB,WAAW,iBAAiB,CAAC,uCAAuC,eAAe,eAAe,CAAC,mCAAmC,kBAAkB,SAAS,UAAU,CAAC,yCAAyC,kBAAkB,UAAU,OAAO,CAAC,kCAAkC,eAAe,CAAC,8CAA8C,aAAa,CAAC,qCAAqC,aAAa,kBAAkB,QAAQ,UAAU,eAAe,YAAY,cAAc,wBAAwB,mBAAmB,CAAC,2CAA2C,SAAS,CAAC,4BAA4B,wBAAwB,CAAC,2CAA2C,oBAAoB,CAAC,+CAA+C,YAAY,CAAC,oEAAoE,aAAa,CAAC,kEAAkE,cAAc,cAAc,CAAC,0EAA0E,YAAY,CAAC,2BAA2B,cAAc,cAAc,kBAAkB,gBAAgB,iBAAiB,uBAAuB,oBAAoB,CAAC,4CAA4C,cAAc,iBAAiB,YAAY,mBAAmB,CAAC,mCAAmC,kBAAkB,UAAU,MAAM,oBAAoB,YAAY,CAAC,6BAA6B,kBAAkB,WAAW,MAAM,eAAe,cAAc,YAAY,CAAC,mCAAmC,aAAa,CAAC,8BAA8B,SAAS,eAAe,kBAAkB,CAAC,oDAAoD,gBAAgB,sBAAsB,yBAAyB,kBAAkB,sBAAsB,YAAY,aAAa,mBAAmB,oBAAoB,CAAC,6IAA6I,UAAU,CAAC,gKAAgK,YAAY,CAAC,6EAA6E,aAAa,CAAC,yDAAyD,YAAY,CAAC,8DAA8D,WAAW,WAAW,CAAC,iEAAiE,kBAAkB,YAAY,SAAS,WAAW,YAAY,mBAAmB,kBAAkB,4BAA4B,wBAAwB,qCAAqC,CAAC,mEAAmE,eAAe,gBAAgB,uCAAuC,kCAAkC,CAAC,4DAA4D,kBAAkB,WAAW,YAAY,OAAO,MAAM,eAAe,kBAAkB,WAAW,UAAU,eAAe,gCAAgC,sBAAsB,CAAC,kEAAkE,qBAAqB,WAAW,YAAY,qBAAqB,CAAC,iEAAiE,aAAa,cAAc,CAAC,sEAAsE,gBAAgB,CAAC,yFAAyF,gBAAgB,kBAAkB,aAAa,CAAC,kEAAkE,SAAS,CAAC,uEAAuE,oBAAoB,CAAC,2CAA2C,QAAQ,SAAS,mCAAmC,+BAA+B,YAAY,WAAW,CAAC,8DAA8D,OAAO,CAAC,+CAA+C,gBAAgB,sBAAsB,yBAAyB,kBAAkB,sBAAsB,gBAAgB,4BAA4B,WAAW,CAAC,mIAAmI,UAAU,CAAC,wFAAwF,eAAe,gBAAgB,SAAS,WAAW,CAAC,wEAAwE,aAAa,CAAC,qFAAqF,iBAAiB,YAAY,CAAC,uFAAuF,YAAY,CAAC,yDAAyD,sBAAsB,qBAAqB,WAAW,YAAY,WAAW,kBAAkB,UAAU,iBAAiB,CAAC,oDAAoD,cAAc,eAAe,CAAC,sDAAsD,eAAe,cAAc,kBAAkB,SAAS,QAAQ,CAAC,4DAA4D,kBAAkB,YAAY,SAAS,WAAW,YAAY,mBAAmB,kBAAkB,4BAA4B,wBAAwB,yBAAyB,CAAC,8DAA8D,eAAe,gBAAgB,uCAAuC,kCAAkC,CAAC,sCAAsC,kBAAkB,QAAQ,CAAC,iBAAiB,kBAAkB,OAAO,MAAM,WAAW,YAAY,gBAAgB,WAAW,cAAc,CAAC,uBAAuB,qBAAqB,YAAY,qBAAqB,CAAC,qBAAqB,cAAc,WAAW,WAAW,CAAC,mCAAmC,UAAU,kBAAkB,SAAS,CAAC,wBAAwB,kBAAkB,YAAY,SAAS,WAAW,YAAY,mBAAmB,kBAAkB,4BAA4B,wBAAwB,qCAAqC,CAAC,0BAA0B,eAAe,gBAAgB,uCAAuC,mCAAmC,UAAU,CAAC,2BAA2B,qBAAqB,sBAAsB,gBAAgB,WAAW,CAAC,6CAA6C,SAAS,CAAC,0BAA0B,kBAAkB,MAAM,OAAO,WAAW,WAAW,CAAC,2BAA2B,kBAAkB,SAAS,OAAO,WAAW,YAAY,iCAAiC,iBAAiB,CAAC,gCAAgC,qBAAqB,WAAW,eAAe,eAAe,sBAAsB,iGAAiG,eAAe,CAAC,qCAAqC,UAAU,8BAA8B,CAAC,kDAAkD,gBAAgB,CAAC,sCAAsC,gCAAgC,2BAA2B,CAAC,2CAA2C,SAAS,CAAC,kCAAkC,WAAW,cAAc,eAAe,oBAAoB,iBAAiB,CAAC,wBAAwB,kBAAkB,SAAS,OAAO,sBAAsB,YAAY,WAAW,gBAAgB,uBAAuB,mBAAmB,gBAAgB,gBAAgB,eAAe,SAAS,iBAAiB,eAAe,aAAa,CAAC,aAAa,kBAAkB,aAAa,CAAC,kDAAkD,wBAAwB,CAAC,6CAA6C,aAAa,CAAC,gDAAgD,wBAAwB,CAAC,2CAA2C,aAAa,CAAC,mBAAmB,eAAe,cAAc,qBAAqB,sBAAsB,iBAAiB,aAAa,CAAC,qBAAqB,sBAAsB,aAAa,CAAC,qBAAqB,oBAAoB,CAAC,wCAAwC,kBAAkB,QAAQ,OAAO,WAAW,kBAAkB,SAAS,+BAAgC,0BAA2B,CAAC,0CAA0C,sBAAsB,oBAAoB,CAAC,8CAA8C,YAAY,CAAC,4CAA4C,gBAAgB,eAAe,aAAa,CAAC,yDAAyD,qBAAqB,qBAAqB,CAAC,2CAA2C,gBAAgB,cAAc,CAAC,iBAAiB,mBAAmB,WAAW,mBAAmB,qBAAqB,CAAC,wBAAwB,WAAW,oBAAoB,yBAAyB,gBAAgB,kBAAkB,qBAAqB,CAAC,wBAAwB,kBAAkB,OAAO,MAAM,YAAY,yBAAyB,iBAAiB,oBAAoB,aAAa,CAAC,4BAA4B,WAAW,eAAe,YAAY,CAAC,oBAAoB,GAAG,uBAAuB,CAAC,GAAK,0BAA0B,CAAC,CAAC,iBAAiB,UAAU,CAAC,kBAAkB,oCAAoC,WAAW,WAAW,CAAC,wBAAwB,eAAe,qBAAqB,wCAAwC,CAAC,kBAAkB,GAAK,uBAAwB,CAAC,CAAC,gBAAgB,GAAG,uBAAuB,mBAAmB,CAAC,IAAI,wBAAwB,qBAAqB,CAAC,GAAK,wBAAwB,sBAAsB,CAAC,CAAC,YAAY,6DAA6D,gBAAgB,kBAAkB,sBAAsB,kBAAkB,eAAe,SAAS,SAAS,+BAA+B,2BAA2B,sBAAsB,qCAAqC,eAAe,CAAC,kCAAkC,aAAa,CAAC,kCAAkC,aAAa,CAAC,iCAAiC,aAAa,CAAC,6BAA6B,aAAa,CAAC,mBAAmB,iBAAiB,kBAAkB,YAAY,iBAAiB,oBAAoB,aAAa,sBAAsB,kBAAkB,CAAC,qBAAqB,eAAe,kBAAkB,cAAc,kBAAkB,CAAC,iDAAiD,iBAAiB,CAAC,gCAAgC,aAAa,CAAC,iBAAiB,WAAW,YAAY,kBAAkB,OAAO,KAAK,CAAC,kBAAkB,sBAAsB,gBAAgB,CAAC,sBAAsB,QAAQ,QAAQ,kBAAkB,eAAe,cAAc,cAAc,CAAC,4BAA4B,aAAa,CAAC,qDAAqD,UAAU,oCAAoC,+BAA+B,CAAC,UAAU,kBAAkB,sBAAsB,oBAAoB,CAAC,mBAAmB,yBAAyB,mBAAmB,WAAW,qBAAqB,eAAe,YAAY,iBAAiB,cAAc,kBAAkB,qBAAqB,CAAC,0BAA0B,UAAU,WAAW,UAAU,QAAQ,iBAAiB,CAAC,4BAA4B,MAAM,WAAW,kBAAkB,gDAAgD,2CAA2C,CAAC,8BAA8B,kBAAkB,oBAAoB,CAAC,mCAAmC,SAAS,CAAC,SAAS,yBAAyB,kBAAkB,sBAAsB,gBAAgB,gEAAgE,CAAC,iBAAiB,kBAAkB,gCAAgC,qBAAqB,CAAC,eAAe,YAAY,CAAC,SAAS,YAAY,aAAa,CAAC,eAAe,YAAY,qBAAqB,CAAC,eAAe,eAAe,iBAAiB,cAAc,cAAc,CAAC,wCAAwC,kBAAkB,MAAM,MAAM,CAAC,qBAAqB,0BAA0B,qBAAqB,CAAC,kBAAkB,qBAAqB,eAAe,CAAC,eAAe,eAAe,qBAAqB,CAAC,UAAU,WAAW,CAAC,qCAAqC,YAAY,CAAC,8GAA8G,oBAAoB,CAAC,SAAS,kBAAkB,kBAAkB,CAAC,mCAAmC,eAAe,CAAC,oCAAoC,iBAAiB,CAAC,eAAe,kBAAkB,qBAAqB,wBAAwB,CAAC,2BAA2B,UAAU,sBAAsB,SAAS,SAAS,SAAS,CAAC,6BAA6B,SAAS,WAAW,UAAU,OAAO,CAAC,qCAAqC,SAAS,CAAC,qBAAqB,cAAc,iBAAiB,mBAAmB,qBAAqB,oBAAqB,sBAAsB,QAAQ,QAAQ,CAAC,eAAe,cAAc,gBAAgB,CAAC,iBAAiB,oBAAoB,qBAAqB,CAAC,eAAe,WAAW,YAAY,kBAAkB,6BAA6B,iBAAiB,eAAe,mBAAmB,mBAAoB,CAAC,yCAAyC,SAAS,eAAe,eAAe,SAAS,CAAC,yBAAyB,cAAc,oBAAoB,CAAC,wBAAwB,cAAc,oBAAoB,CAAC,0BAA0B,cAAc,oBAAoB,CAAC,iDAAiD,cAAc,oBAAoB,CAAC,uBAAuB,eAAe,iBAAiB,kBAAkB,CAAC,iCAAiC,WAAW,yBAAyB,oBAAoB,CAAC,gCAAgC,WAAW,yBAAyB,oBAAoB,CAAC,kCAAkC,WAAW,yBAAyB,oBAAoB,CAAC,+BAA+B,cAAc,sBAAsB,oBAAoB,CAAC,kCAAkC,WAAW,yBAAyB,oBAAoB,CAAC,eAAe,mBAAmB,mBAAmB,eAAe,CAAC,gBAAgB,eAAe,iBAAiB,oBAAoB,CAAC,0BAA0B,gBAAgB,aAAa,CAAC,yBAAyB,gBAAgB,aAAa,CAAC,2BAA2B,gBAAgB,aAAa,CAAC,wBAAwB,gBAAgB,aAAa,CAAC,2BAA2B,gBAAgB,aAAa,CAAC,sBAAsB,eAAe,gBAAgB,gBAAgB,CAAC,gCAAgC,aAAa,CAAC,+BAA+B,aAAa,CAAC,iCAAiC,aAAa,CAAC,8BAA8B,aAAa,CAAC,iCAAiC,aAAa,CAAC,aAAa,kBAAkB,iBAAiB,CAAC,wBAAwB,kBAAkB,YAAY,CAAC,oBAAoB,YAAY,UAAU,WAAW,YAAY,kBAAkB,oCAAoC,WAAW,kBAAkB,QAAQ,WAAW,+BAA+B,2BAA2B,kBAAkB,cAAc,CAAC,0BAA0B,mCAAmC,CAAC,sBAAsB,cAAc,CAAC,0BAA0B,SAAS,CAAC,2BAA2B,UAAU,CAAC,yBAAyB,kBAAkB,gBAAgB,SAAS,SAAS,+BAA+B,2BAA2B,SAAS,UAAU,SAAS,CAAC,kCAAkC,YAAY,kBAAkB,gBAAgB,mBAAmB,cAAc,CAAC,uEAAuE,WAAW,CAAC,yCAAyC,yBAAyB,WAAW,CAAC,iCAAiC,OAAO,QAAQ,mBAAmB,eAAe,iBAAiB,CAAC,sDAAsD,WAAW,YAAY,iBAAiB,cAAc,CAAC,yDAAyD,eAAe,CAAC,wBAAwB,qBAAqB,6BAA6B,iBAAiB,cAAc,CAAC,qCAAqC,WAAW,CAAC,yCAAyC,SAAS,CAAC,qBAAqB,cAAc,YAAY,WAAW,WAAW,sBAAsB,YAAY,SAAS,CAAC,6DAA6D,iDAAiD,6CAA6C,SAAS,CAAC,+DAA+D,gDAAgD,4CAA4C,SAAS,CAAC,cAAc,gBAAgB,iBAAiB,CAAC,sHAAsH,UAAU,gCAAiC,CAAC,oBAAoB,eAAe,CAAC,uDAAuD,QAAQ,QAAQ,CAAC,qBAAqB,kBAAkB,cAAc,QAAQ,SAAS,eAAe,sBAAsB,sCAAsC,+BAA+B,CAAC,2BAA2B,qCAAqC,CAAC,mBAAmB,kBAAkB,UAAU,WAAW,UAAU,kBAAkB,UAAU,gCAAiC,CAAC,yDAAyD,oCAAoC,CAAC,iCAAiC,WAAW,QAAQ,CAAC,qCAAqC,WAAW,CAAC,+BAA+B,UAAU,OAAO,CAAC,mCAAmC,UAAU,CAAC,mBAAmB,kBAAkB,MAAM,OAAO,WAAW,YAAY,qBAAqB,gBAAgB,SAAS,CAAC,6BAA6B,SAAS,CAAC,yBAAyB,SAAS,CAAC,qCAAqC,eAAe,SAAS,CAAC,yFAAyF,SAAS,CAAC,+HAA+H,WAAW,CAAC,mBAAmB,kBAAkB,WAAW,YAAY,MAAM,OAAO,sBAAsB,YAAY,cAAc,CAAC,aAAa,yBAAyB,eAAe,CAAC,6BAA6B,kBAAkB,CAAC,uFAAuF,4BAA4B,uBAAuB,CAAC,0BAA0B,YAAY,iBAAiB,kBAAkB,sBAAsB,cAAc,eAAe,gCAAgC,cAAc,CAAC,iCAAiC,iBAAiB,wBAAwB,CAAC,wBAAwB,mBAAmB,yBAAyB,gBAAgB,sBAAsB,+BAA+B,CAAC,2BAA2B,kBAAkB,eAAe,cAAc,6BAA6B,CAAC,aAAa,qBAAqB,iBAAiB,CAAC,qDAAqD,cAAc,CAAC,6BAA6B,eAAe,CAAC,mCAAmC,wBAAwB,CAAC,8CAA8C,6BAA6B,wBAAyB,CAAC,6CAA6C,UAAU,UAAU,CAAC,oBAAoB,kBAAkB,OAAO,MAAM,YAAY,iBAAiB,sBAAsB,cAAc,WAAW,mBAAmB,uBAAuB,gBAAgB,sBAAsB,eAAe,eAAe,eAAe,CAAC,yBAAyB,aAAa,CAAC,oBAAoB,cAAc,CAAC,wCAAwC,gBAAgB,CAAC,oBAAoB,cAAc,CAAC,wCAAwC,gBAAgB,CAAC,mBAAmB,mBAAmB,gBAAgB,kBAAkB,aAAa,yBAAyB,kBAAkB,4DAA4D,CAAC,kBAAkB,qBAAqB,mBAAmB,aAAa,cAAc,+BAA+B,sBAAsB,sBAAsB,SAAS,cAAc,eAAe,CAAC,6BAA6B,cAAc,CAAC,wBAAwB,eAAe,0BAA0B,kBAAkB,mBAAmB,gBAAgB,uBAAuB,cAAc,YAAY,gBAAgB,sBAAsB,cAAc,CAAC,8BAA8B,wBAAwB,CAAC,iCAAiC,WAAW,wBAAwB,CAAC,uCAAuC,wBAAwB,CAAC,kCAAkC,WAAW,wBAAwB,CAAC,wCAAwC,wBAAwB,CAAC,oCAAoC,cAAc,sBAAsB,kBAAkB,CAAC,0CAA0C,qBAAqB,CAAC,iCAAiC,eAAe,CAAC,0CAA0C,0BAA0B,gBAAgB,eAAe,wBAAwB,oBAAoB,cAAc,kBAAkB,WAAW,cAAc,CAAC,4BAA4B,YAAY,iBAAiB,aAAa,CAAC,oDAAoD,gBAAgB,CAAC,qBAAqB,kBAAkB,sBAAsB,YAAY,YAAY,qBAAqB,aAAa,CAAC,iCAAiC,WAAW,aAAa,aAAa,CAAC,2DAA2D,yFAAiG,CAAC,6DAA6D,OAAO,MAAM,WAAW,UAAU,CAAC,0BAA0B,kBAAkB,yFAAiG,WAAW,CAAC,4BAA4B,kBAAkB,eAAe,sBAAsB,OAAO,MAAM,UAAU,YAAY,kBAAkB,gBAAgB,yBAAyB,kCAAkC,SAAS,CAAC,kBAAkB,kBAAkB,YAAY,YAAY,CAAC,kDAAkD,kBAAkB,MAAM,OAAO,QAAQ,QAAQ,CAAC,yBAAyB,wDAA6D,CAAC,yBAAyB,iDAAqD,CAAC,0BAA0B,iBAAiB,CAAC,8BAA8B,YAAY,UAAU,WAAW,wFAAwF,kBAAkB,mCAAmC,8BAA8B,CAAC,uBAAuB,kBAAkB,sBAAsB,YAAY,YAAY,sJAAsJ,CAAC,mCAAmC,WAAW,YAAY,CAAC,+DAA+D,2DAAoF,CAAC,iEAAiE,OAAO,MAAM,WAAW,UAAU,CAAC,4BAA4B,kBAAkB,2DAAoF,WAAW,CAAC,8BAA8B,kBAAkB,eAAe,sBAAsB,OAAO,MAAM,UAAU,YAAY,kBAAkB,gBAAgB,yBAAyB,kCAAkC,SAAS,CAAC,mBAAmB,WAAW,CAAC,iCAAiC,iBAAiB,CAAC,uCAAwC,WAAW,cAAc,UAAU,CAAC,yBAAyB,eAAe,gBAAgB,CAAC,0BAA0B,WAAW,iBAAiB,eAAe,aAAa,CAAC,wBAAwB,yBAAyB,WAAW,iBAAiB,kBAAkB,eAAe,eAAe,6BAA6B,UAAU,cAAc,CAAC,kCAAkC,WAAW,kBAAkB,CAAC,8BAA8B,cAAc,oBAAoB,CAAC,6BAA6B,eAAe,cAAc,qBAAqB,aAAa,cAAc,CAAC,mCAAmC,aAAa,CAAC,iBAAiB,qBAAqB,kBAAkB,kBAAkB,CAAC,0BAA0B,qBAAqB,sBAAsB,YAAY,YAAY,yBAAyB,kBAAkB,WAAW,CAAC,wBAAwB,kBAAkB,qBAAqB,sBAAsB,sBAAsB,WAAW,YAAY,iBAAiB,CAAC,iCAAiC,4JAA4J,CAAC,8BAA8B,kBAAkB,OAAO,MAAM,QAAQ,QAAQ,CAAC,wBAAwB,eAAe,sBAAsB,WAAW,kBAAkB,QAAQ,QAAQ,CAAC,uBAAuB,qBAAqB,kBAAkB,SAAS,gBAAgB,WAAW,WAAW,cAAc,CAAC,2BAA2B,WAAW,oBAAoB,CAAC,wBAAwB,kBAAkB,WAAW,YAAY,sBAAsB,yBAAyB,4DAA4D,CAAC,UAAU,kBAAkB,cAAc,CAAC,uCAAuC,yBAAyB,qBAAqB,WAAW,kBAAkB,CAAC,kEAAkE,aAAa,CAAC,yDAAyD,aAAa,CAAC,6DAA6D,aAAa,CAAC,oDAAoD,aAAa,CAAC,qCAAqC,UAAU,oBAAoB,CAAC,iBAAiB,wBAAwB,qBAAqB,gBAAgB,sBAAsB,sBAAsB,kBAAkB,yBAAyB,sBAAsB,cAAc,kBAAkB,YAAY,cAAc,UAAU,iBAAiB,0DAA0D,CAAC,sCAAsC,wBAAwB,sBAAsB,yBAAyB,qBAAqB,UAAU,iBAAiB,CAAC,4CAA4C,aAAa,CAAC,mCAAmC,aAAa,CAAC,uCAAuC,aAAa,CAAC,8BAA8B,aAAa,CAAC,uBAAuB,oBAAoB,CAAC,uBAAuB,UAAU,oBAAoB,CAAC,gBAAgB,kBAAkB,WAAW,YAAY,QAAQ,MAAM,kBAAkB,cAAc,kBAAkB,CAAC,sBAAsB,WAAW,YAAY,QAAQ,qBAAqB,qBAAqB,CAAC,iCAAiC,kBAAkB,CAAC,mCAAmC,eAAe,aAAa,CAAC,oDAAoD,oBAAoB,CAAC,iBAAiB,cAAc,CAAC,kCAAkC,WAAW,CAAC,iBAAiB,cAAc,CAAC,kCAAkC,WAAW,CAAC,gBAAgB,cAAc,CAAC,iCAAiC,WAAW,CAAC,gBAAgB,mBAAmB,qBAAqB,WAAW,wBAAwB,CAAC,iCAAiC,sBAAsB,kBAAkB,CAAC,iDAAiD,yBAAyB,cAAc,sBAAsB,mBAAmB,kBAAkB,yBAAyB,kBAAkB,eAAe,UAAU,kBAAkB,CAAC,kEAAkE,yBAAyB,2BAA2B,CAAC,kEAAkE,0BAA0B,4BAA4B,CAAC,8IAA8I,cAAc,YAAY,CAAC,6TAA6T,yBAAyB,6BAA6B,cAAc,aAAa,eAAe,CAAC,4IAA4I,iBAAiB,CAAC,+BAA+B,eAAe,qBAAqB,CAAC,yBAAyB,cAAc,CAAC,wBAAwB,aAAa,CAAC,aAAa,qBAAqB,WAAW,qBAAqB,CAAC,6CAA6C,yBAAyB,qBAAqB,WAAW,kBAAkB,CAAC,wEAAwE,aAAa,CAAC,+DAA+D,aAAa,CAAC,mEAAmE,aAAa,CAAC,0DAA0D,aAAa,CAAC,oBAAoB,cAAc,gBAAgB,gBAAgB,gBAAgB,WAAW,cAAc,sBAAsB,sBAAsB,yBAAyB,kBAAkB,0DAA0D,CAAC,+CAA+C,aAAa,CAAC,sCAAsC,aAAa,CAAC,0CAA0C,aAAa,CAAC,iCAAiC,aAAa,CAAC,0BAA0B,oBAAoB,CAAC,0BAA0B,UAAU,oBAAoB,CAAC,WAAW,qBAAqB,cAAc,mBAAmB,eAAe,gBAAgB,yBAAyB,cAAc,SAAS,kBAAkB,iBAAiB,CAAC,sBAAsB,gBAAgB,CAAC,kCAAkC,cAAc,oBAAoB,CAAC,kBAAkB,cAAc,qBAAqB,SAAS,CAAC,6BAA6B,QAAQ,CAAC,kCAAkC,eAAe,CAAC,sBAAsB,kBAAkB,mBAAmB,CAAC,6BAA6B,oBAAoB,WAAW,kBAAkB,UAAU,SAAS,WAAW,YAAY,sBAAsB,oCAAsC,CAAC,iFAAiF,cAAc,mBAAmB,sBAAsB,yBAAyB,oBAAoB,CAAC,iCAAiC,eAAe,qBAAqB,kBAAkB,kBAAkB,CAAC,uCAAuC,4BAA4B,CAAC,4GAA4G,sBAAsB,qBAAqB,aAAa,CAAC,qBAAqB,cAAc,oBAAoB,CAAC,oDAAoD,gBAAgB,qBAAqB,aAAa,CAAC,2BAA2B,gBAAgB,qBAAqB,cAAc,SAAS,CAAC,oBAAoB,WAAW,yBAAyB,oBAAoB,CAAC,oDAAoD,mBAAmB,qBAAqB,UAAU,CAAC,yDAAyD,mBAAmB,qBAAqB,UAAU,CAAC,2BAA2B,SAAS,CAAC,6BAA6B,gBAAgB,yBAAyB,aAAa,CAAC,sEAAsE,gBAAgB,qBAAqB,aAAa,CAAC,oCAAoC,gBAAgB,qBAAqB,cAAc,SAAS,CAAC,oBAAoB,WAAW,yBAAyB,oBAAoB,CAAC,oDAAoD,mBAAmB,qBAAqB,UAAU,CAAC,yDAAyD,mBAAmB,qBAAqB,UAAU,CAAC,2BAA2B,SAAS,CAAC,6BAA6B,gBAAgB,yBAAyB,aAAa,CAAC,sEAAsE,gBAAgB,qBAAqB,aAAa,CAAC,oCAAoC,gBAAgB,qBAAqB,cAAc,SAAS,CAAC,oBAAoB,WAAW,yBAAyB,oBAAoB,CAAC,oDAAoD,mBAAmB,qBAAqB,UAAU,CAAC,yDAAyD,mBAAmB,qBAAqB,UAAU,CAAC,2BAA2B,SAAS,CAAC,6BAA6B,gBAAgB,yBAAyB,aAAa,CAAC,sEAAsE,gBAAgB,qBAAqB,aAAa,CAAC,oCAAoC,gBAAgB,qBAAqB,cAAc,SAAS,CAAC,mBAAmB,WAAW,yBAAyB,oBAAoB,CAAC,kDAAkD,mBAAmB,qBAAqB,UAAU,CAAC,uDAAuD,mBAAmB,qBAAqB,UAAU,CAAC,0BAA0B,SAAS,CAAC,4BAA4B,gBAAgB,yBAAyB,aAAa,CAAC,oEAAoE,gBAAgB,qBAAqB,aAAa,CAAC,mCAAmC,gBAAgB,qBAAqB,cAAc,SAAS,CAAC,iBAAiB,WAAW,yBAAyB,oBAAoB,CAAC,8CAA8C,mBAAmB,qBAAqB,UAAU,CAAC,mDAAmD,mBAAmB,qBAAqB,UAAU,CAAC,wBAAwB,SAAS,CAAC,0BAA0B,gBAAgB,yBAAyB,aAAa,CAAC,gEAAgE,gBAAgB,qBAAqB,aAAa,CAAC,iCAAiC,gBAAgB,qBAAqB,cAAc,SAAS,CAAC,kBAAkB,kBAAkB,eAAe,iBAAiB,CAAC,kBAAkB,gBAAgB,eAAe,iBAAiB,CAAC,iBAAiB,YAAY,eAAe,iBAAiB,CAAC,iBAAiB,YAAY,cAAc,eAAe,eAAe,eAAe,CAAC,8CAA8C,aAAa,CAAC,wBAAwB,aAAa,CAAC,iBAAiB,qBAAqB,qBAAqB,CAAC,iDAAiD,qCAAuC,CAAC,gDAAgD,oCAAsC,CAAC,wEAAwE,qCAAuC,qCAAuC,CAAC,iDAAiD,qCAAuC,CAAC,gDAAgD,oCAAsC,CAAC,wEAAwE,qCAAuC,qCAAuC,CAAC,iDAAiD,qCAAuC,CAAC,gDAAgD,oCAAsC,CAAC,wEAAwE,qCAAuC,qCAAuC,CAAC,gDAAgD,qCAAuC,CAAC,+CAA+C,oCAAsC,CAAC,uEAAuE,qCAAuC,qCAAuC,CAAC,8CAA8C,qCAAuC,CAAC,6CAA6C,oCAAsC,CAAC,qEAAqE,qCAAuC,qCAAuC,CAAC,4BAA4B,WAAW,iBAAiB,CAAC,uCAAuC,aAAa,CAAC,wCAAwC,0BAA0B,4BAA4B,CAAC,uCAAuC,yBAAyB,2BAA2B,CAAC,+DAA+D,eAAe,CAAC,6CAA6C,iBAAiB,CAAC,6IAA6I,SAAS,CAAC,aAAa,cAAc,sBAAsB,yBAAyB,oBAAoB,CAAC,0BAA0B,gBAAgB,CAAC,oBAAoB,UAAU,cAAc,qBAAqB,CAAC,yDAAyD,yBAAyB,oBAAoB,CAAC,gEAAiE,WAAW,kBAAkB,cAAc,sBAAsB,gBAAgB,SAAS,UAAU,OAAO,CAAC,+DAAgE,YAAY,CAAC,iDAAiD,oBAAoB,CAAC,mDAAmD,yBAAyB,oBAAoB,CAAC,yDAA0D,sCAAsC,iCAAiC,CAAC,oDAAoD,yBAAyB,qBAAqB,kBAAkB,CAAC,0DAA2D,mBAAmB,oBAAoB,CAAC,wEAAwE,kBAAkB,CAAC,+DAA+D,yBAAyB,oBAAoB,CAAC,qEAAsE,iBAAiB,CAAC,qEAAqE,yBAAyB,oBAAoB,CAAC,4EAA6E,iBAAiB,CAAC,oDAAoD,WAAW,kBAAkB,CAAC,oBAAoB,qBAAqB,kBAAkB,yBAAyB,kBAAkB,sBAAsB,WAAW,YAAY,sBAAsB,UAAU,kHAAkH,CAAC,0BAA0B,oBAAoB,CAAC,0BAA2B,uBAAuB,WAAW,sBAAsB,cAAc,aAAa,WAAW,SAAS,kBAAkB,QAAQ,sCAAsC,kCAAkC,UAAU,6DAA6D,4BAA4B,uBAAuB,CAAC,uBAAuB,UAAU,UAAU,kBAAkB,SAAS,QAAQ,SAAS,WAAW,CAAC,+CAA+C,kBAAkB,oBAAoB,CAAC,oBAAoB,eAAe,gBAAgB,CAAC,0DAA0D,WAAW,yBAAyB,qBAAqB,6BAA6B,CAAC,2DAA2D,cAAc,mBAAmB,sBAAsB,yBAAyB,qBAAqB,eAAe,CAAC,8CAA8C,gBAAgB,sBAAsB,qBAAqB,CAAC,wDAAwD,oBAAoB,CAAC,2DAA2D,8BAA8B,0BAA0B,yBAAyB,CAAC,0DAA0D,yBAAyB,CAAC,2BAA2B,cAAc,mBAAmB,yBAAyB,cAAc,cAAc,SAAS,eAAe,kDAAkD,kBAAkB,eAAe,eAAe,CAAC,iCAAiC,aAAa,CAAC,6CAA6C,cAAc,CAAC,kDAAkD,eAAe,CAAC,8BAA8B,UAAU,UAAU,kBAAkB,SAAS,WAAW,CAAC,sDAAsD,kBAAkB,eAAe,eAAe,CAAC,sDAAsD,gBAAgB,eAAe,eAAe,CAAC,qDAAqD,YAAY,eAAe,eAAe,CAAC,aAAa,cAAc,CAAC,sBAAsB,qBAAqB,sBAAsB,cAAc,CAAC,iCAAiC,cAAc,cAAc,gBAAgB,CAAC,0GAA0G,aAAa,CAAC,6CAA6C,iBAAiB,CAAC,mBAAmB,yBAAyB,6DAA6D,qBAAqB,YAAY,iBAAiB,CAAC,8CAA8C,YAAY,iBAAiB,mBAAmB,SAAS,kBAAkB,gCAAgC,sBAAsB,aAAa,CAAC,8CAA8C,YAAY,gBAAgB,SAAS,UAAU,6BAA6B,kBAAkB,SAAS,OAAO,WAAW,SAAS,CAAC,oDAAoD,qBAAqB,WAAW,YAAY,qBAAqB,CAAC,2DAA2D,kBAAkB,aAAa,CAAC,6CAA6C,SAAS,YAAY,iBAAiB,mBAAmB,aAAa,CAAC,uCAAuC,iBAAiB,CAAC,uCAAuC,WAAW,YAAY,iBAAiB,CAAC,6CAA8C,WAAW,UAAU,QAAQ,CAAC,yBAAyB,oBAAoB,YAAY,CAAC,yBAAyB,SAAS,cAAc,gBAAgB,aAAa,cAAc,qBAAqB,CAAC,uCAAuC,YAAY,CAAC,yBAAyB,YAAY,iBAAiB,kBAAkB,aAAa,CAAC,6CAA6C,WAAW,gBAAgB,uBAAuB,mBAAmB,cAAc,sBAAsB,iBAAiB,CAAC,6CAA6C,kBAAkB,OAAO,CAAC,qCAAqC,aAAa,CAAC,+BAA+B,kBAAkB,CAAC,2BAA2B,gBAAgB,kBAAkB,eAAe,WAAW,qBAAqB,CAAC,4CAA4C,YAAY,WAAW,qBAAqB,qBAAqB,CAAC,2CAA2C,UAAU,CAAC,iDAAiD,cAAc,CAAC",file:"index.css",sourcesContent:['@charset "UTF-8";.el-breadcrumb:after,.el-breadcrumb:before,.el-button-group:after,.el-button-group:before,.el-form-item:after,.el-form-item:before,.el-form-item__content:after,.el-form-item__content:before{display:table;content:""}.el-checkbox-button__original,.el-pagination--small .arrow.disabled,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*,.el-table--hidden{visibility:hidden}.el-form-item__content:after{clear:both}.el-form-item:after{clear:both}.el-breadcrumb:after{clear:both}.el-button-group:after{clear:both}.el-autocomplete-suggestion.is-loading li:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-dialog__header:after,.el-dialog__header:before{display:table;content:""}.el-dialog__header:after{clear:both}@font-face{font-family:element-icons;src:url(fonts/element-icons.woff?t=1472440741) format(\'woff\'),url(fonts/element-icons.ttf?t=1472440741) format(\'truetype\');font-weight:400;font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-arrow-down:before{content:"\\e600"}.el-icon-arrow-left:before{content:"\\e601"}.el-icon-arrow-right:before{content:"\\e602"}.el-icon-arrow-up:before{content:"\\e603"}.el-icon-caret-bottom:before{content:"\\e604"}.el-icon-caret-left:before{content:"\\e605"}.el-icon-caret-right:before{content:"\\e606"}.el-icon-caret-top:before{content:"\\e607"}.el-icon-check:before{content:"\\e608"}.el-icon-circle-check:before{content:"\\e609"}.el-icon-circle-close:before{content:"\\e60a"}.el-icon-circle-cross:before{content:"\\e60b"}.el-icon-close:before{content:"\\e60c"}.el-icon-upload:before{content:"\\e60d"}.el-icon-d-arrow-left:before{content:"\\e60e"}.el-icon-d-arrow-right:before{content:"\\e60f"}.el-icon-d-caret:before{content:"\\e610"}.el-icon-date:before{content:"\\e611"}.el-icon-delete:before{content:"\\e612"}.el-icon-document:before{content:"\\e613"}.el-icon-edit:before{content:"\\e614"}.el-icon-information:before{content:"\\e615"}.el-icon-loading:before{content:"\\e616"}.el-icon-menu:before{content:"\\e617"}.el-icon-message:before{content:"\\e618"}.el-icon-minus:before{content:"\\e619"}.el-icon-more:before{content:"\\e61a"}.el-icon-picture:before{content:"\\e61b"}.el-icon-plus:before{content:"\\e61c"}.el-icon-search:before{content:"\\e61d"}.el-icon-setting:before{content:"\\e61e"}.el-icon-share:before{content:"\\e61f"}.el-icon-star-off:before{content:"\\e620"}.el-icon-star-on:before{content:"\\e621"}.el-icon-time:before{content:"\\e622"}.el-icon-warning:before{content:"\\e623"}.el-icon-delete2:before{content:"\\e624"}.el-icon-upload2:before{content:"\\e627"}.el-icon-view:before{content:"\\e626"}.el-icon-loading{animation:rotating 1s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotateZ(0)}100%{transform:rotateZ(360deg)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#48576a}.el-pagination:after,.el-pagination:before{display:table;content:""}.el-pagination:after{clear:both}.el-pagination button,.el-pagination span{display:inline-block;font-size:13px;min-width:28px;height:28px;line-height:28px;vertical-align:top;box-sizing:border-box}.el-pagination .el-select .el-input{width:110px}.el-pagination .el-select .el-input input{padding-right:25px;border-radius:2px;height:28px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#20a0ff}.el-pagination button.disabled{color:#e4e4e4;background-color:#fff;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat #fff;background-size:16px;border:1px solid #d1dbe5;cursor:pointer;margin:0;color:#97a8be}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px}.el-pagination .btn-prev{border-radius:2px 0 0 2px;border-right:0}.el-pagination .btn-next{border-radius:0 2px 2px 0;border-left:0}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .el-pager li{border-radius:2px}.el-pagination__sizes{margin:0 10px 0 0}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;border-color:#d1dbe5}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#20a0ff}.el-pagination__jump{margin-left:10px}.el-pagination__total{margin:0 10px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{border:1px solid #d1dbe5;border-radius:2px;line-height:18px;padding:4px 2px;width:30px;text-align:center;margin:0 6px;box-sizing:border-box;transition:border .3s;-moz-appearance:textfield}.el-pager,.el-pager li{vertical-align:top;display:inline-block;margin:0}.el-pagination__editor::-webkit-inner-spin-button,.el-pagination__editor::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__editor:focus{outline:0;border-color:#20a0ff}.el-autocomplete-suggestion__wrap,.el-pager li{border:1px solid #d1dbe5;box-sizing:border-box}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0;padding:0}.el-date-table,.el-radio{-webkit-user-select:none;-ms-user-select:none}.el-date-table,.el-radio,.el-time-panel{-moz-user-select:none}.el-pager li{padding:0 4px;border-right:0;background:#fff;font-size:13px;min-width:28px;height:28px;line-height:28px;text-align:center}.el-pager li:last-child{border-right:1px solid #d1dbe5}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#97a8be}.el-pager li.active+li{border-left:0;padding-left:5px}.el-pager li:hover{color:#20a0ff}.el-pager li.active{border-color:#20a0ff;background-color:#20a0ff;color:#fff;cursor:default}.el-dialog{position:absolute;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%);background:#fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;margin-bottom:50px}.el-dialog--tiny{width:30%}.el-dialog--small{width:50%}.el-dialog--large{width:90%}.el-dialog--full{width:100%;top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{top:0;right:0;bottom:0;left:0;position:fixed;overflow:auto;margin:0}.el-autocomplete,.el-dropdown{display:inline-block;position:relative}.el-dialog__header{padding:20px 20px 0}.el-dialog__headerbtn{float:right;background:0 0;border:none;outline:0;padding:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#bfcbd9}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#20a0ff}.el-dialog__title{line-height:1;font-size:16px;font-weight:700;color:#1f2d3d}.el-dialog__body{padding:30px 20px;color:#48576a;font-size:14px}.el-dialog__footer{padding:10px 20px 15px;text-align:right;box-sizing:border-box}.dialog-fade-enter-active{animation:dialog-fade-in .3s}.dialog-fade-leave-active{animation:dialog-fade-out .3s}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete-suggestion{margin:5px 0;box-shadow:0 0 6px 0 rgba(0,0,0,.04),0 2px 4px 0 rgba(0,0,0,.12)}.el-autocomplete-suggestion li{list-style:none;line-height:36px;padding:0 10px;margin:0;cursor:pointer;color:#48576a;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li:hover{background-color:#e4e8f1}.el-autocomplete-suggestion li.highlighted{background-color:#20a0ff;color:#fff}.el-autocomplete-suggestion li:active{background-color:#0082e6}.el-autocomplete-suggestion.is-loading li:hover,.el-dropdown-menu{background-color:#fff}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #d1dbe5}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-autocomplete-suggestion__wrap{max-height:280px;overflow:auto;background-color:#fff;padding:6px 0;border-radius:2px}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-dropdown{color:#48576a;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-right:5px;padding-left:5px}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown-menu{margin:5px 0;border:1px solid #d1dbe5;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.12);padding:6px 0;z-index:10;position:absolute;top:0;left:0;min-width:100px}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 10px;margin:0;cursor:pointer}.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#e4e8f1;color:#48576a}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bfcbd9;pointer-events:none}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #d1dbe5}.el-dropdown-menu__item--divided:before{content:\'\';height:6px;display:block;margin:0 -10px;background-color:#fff}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;font-size:14px;color:#48576a;padding:0 20px;cursor:pointer;position:relative;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box;white-space:nowrap}.el-menu{border-radius:2px;list-style:none;position:relative;margin:0;padding-left:0;background-color:#eef1f6}.el-menu:after,.el-menu:before{display:table;content:""}.el-menu:after{clear:both}.el-menu li{list-style:none}.el-menu--dark{background-color:#324157}.el-menu--dark .el-menu-item,.el-menu--dark .el-submenu__title{color:#bfcbd9}.el-menu--dark .el-menu-item:hover,.el-menu--dark .el-submenu__title:hover{background-color:#48576a}.el-menu--dark .el-submenu .el-menu{background-color:#1f2d3d}.el-menu--dark .el-submenu .el-menu .el-menu-item:hover{background-color:#48576a}.el-menu--horizontal .el-menu-item{float:left;height:60px;line-height:60px;margin:0;cursor:pointer;position:relative;box-sizing:border-box;border-bottom:5px solid transparent}.el-menu--horizontal .el-menu-item a,.el-menu--horizontal .el-menu-item a:hover{color:inherit}.el-menu--horizontal .el-submenu{float:left;position:relative}.el-menu--horizontal .el-submenu>.el-menu{position:absolute;top:65px;left:0;border:1px solid #d1dbe5;padding:5px 0;background-color:#fff;z-index:100;min-width:100%;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-menu--horizontal .el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:5px solid transparent}.el-menu--horizontal .el-submenu .el-menu-item{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px}.el-menu--horizontal .el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:5px;color:#97a8be;margin-top:-3px}.el-menu--horizontal .el-menu-item:hover,.el-menu--horizontal .el-submenu__title:hover{background-color:#eef1f6}.el-menu--horizontal>.el-menu-item:hover,.el-menu--horizontal>.el-submenu.is-active .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{border-bottom:5px solid #20a0ff}.el-menu--horizontal.el-menu--dark .el-menu-item:hover,.el-menu--horizontal.el-menu--dark .el-submenu__title:hover{background-color:#324157}.el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item:hover,.el-menu--horizontal.el-menu--dark .el-submenu .el-submenu-title:hover,.el-menu-item:hover{background-color:#d1dbe5}.el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item,.el-menu--horizontal.el-menu--dark .el-submenu .el-submenu-title{color:#48576a}.el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item.is-active,.el-menu-item.is-active{color:#20a0ff}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-ms-transform:none;transform:none}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center}.el-menu-item *{vertical-align:middle}.el-menu-item:first-child{margin-left:0}.el-menu-item:last-child{margin-right:0}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center}.el-submenu .el-menu{background-color:#e4e8f1}.el-submenu .el-menu-item:hover,.el-submenu__title:hover{background-color:#d1dbe5}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-ms-transform:rotate(180deg);transform:rotateZ(180deg)}.el-submenu.is-active .el-submenu__title{border-bottom-color:#20a0ff}.el-submenu__title{position:relative}.el-submenu__title *{vertical-align:middle}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;transition:transform .3s;font-size:12px}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding-top:15px;line-height:normal;font-size:14px;padding-left:20px;color:#97a8be}.el-radio-button__inner,.el-radio-group,.el-radio__input{line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{transition:.2s;opacity:0}.el-radio{color:#1f2d3d;cursor:pointer;white-space:nowrap}.el-radio+.el-radio{margin-left:15px}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0}.el-radio__input.is-focus .el-radio__inner{border-color:#20a0ff}.el-radio__input.is-checked .el-radio__inner{border-color:#20a0ff;background:#20a0ff}.el-radio__input.is-checked .el-radio__inner::after{-ms-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-disabled .el-radio__inner{background-color:#eef1f6;border-color:#d1dbe5;cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#eef1f6}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#d1dbe5;border-color:#d1dbe5}.el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#fff}.el-radio__input.is-disabled+.el-radio__label{color:#bbb;cursor:not-allowed}.el-radio__inner{border:1px solid #bfcbd9;width:18px;height:18px;border-radius:50%;cursor:pointer;box-sizing:border-box}.el-radio__inner:hover{border-color:#20a0ff}.el-radio__inner::after{width:6px;height:6px;border-radius:50%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-ms-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);transition:transform .15s cubic-bezier(.71,-.46,.88,.6)}.el-switch__core,.el-switch__label{width:46px;height:22px;cursor:pointer}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio-button,.el-radio-button__inner{position:relative;display:inline-block}.el-radio__label{font-size:14px;padding-left:5px}.el-radio-group{display:inline-block;font-size:0}.el-radio-group .el-radio{font-size:14px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #bfcbd9;border-radius:4px 0 0 4px;box-shadow:none!important}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button__inner{white-space:nowrap;background:#fff;border:1px solid #bfcbd9;border-left:0;color:#1f2d3d;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:10px 15px;font-size:14px;border-radius:0}.el-radio-button__inner:hover{color:#20a0ff}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1;left:-999px}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#20a0ff;border-color:#20a0ff;box-shadow:-1px 0 0 0 #20a0ff}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#bfcbd9;cursor:not-allowed;background-image:none;background-color:#eef1f6;border-color:#d1dbe5;box-shadow:none}.el-radio-button--large .el-radio-button__inner{padding:11px 19px;font-size:16px;border-radius:0}.el-radio-button--small .el-radio-button__inner{padding:7px 9px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner{padding:4px;font-size:12px;border-radius:0}.el-switch{display:inline-block;position:relative;font-size:14px;line-height:22px;height:22px;vertical-align:middle}.el-switch__label,.el-switch__label *{position:absolute;font-size:14px;display:inline-block}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-switch.is-disabled .el-switch__core{border-color:#e4e8f1!important;background:#e4e8f1!important}.el-switch.is-disabled .el-switch__core span{background-color:#fbfdff!important}.el-switch.is-disabled .el-switch__core~.el-switch__label *{color:#fbfdff!important}.el-switch.is-checked .el-switch__core{border-color:#20a0ff;background-color:#20a0ff}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:.2s;left:0;top:0}.el-switch__label *{line-height:1;top:4px;color:#fff}.el-switch__label--left i{left:6px}.el-switch__label--right i{right:6px}.el-switch__input{display:none}.el-switch__core{margin:0;display:inline-block;position:relative;border:1px solid #bfcbd9;outline:0;border-radius:12px;box-sizing:border-box;background:#bfcbd9;transition:border-color .3s,background-color .3s}.el-switch__core .el-switch__button{top:0;left:0;position:absolute;border-radius:100%;transition:transform .3s;width:16px;height:16px;background-color:#fff}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #d1dbe5;border-radius:2px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);box-sizing:border-box;margin:5px 0}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#20a0ff;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover,.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#e4e8f1}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:10px;font-family:element-icons;content:"\\E608";font-size:11px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:8px 10px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#48576a;height:36px;line-height:1.5;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.selected{color:#fff;background-color:#20a0ff}.el-select-dropdown__item.selected.hover{background-color:#1c8de0}.el-select-dropdown__item span{line-height:1.5!important}.el-select-dropdown__item.is-disabled{color:#bfcbd9;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-group{margin:0;padding:0}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select-group__wrap{list-style:none;margin:0;padding:0}.el-select-group__title{padding-left:10px;font-size:12px;color:#999;height:30px;line-height:30px}.el-select{display:inline-block;position:relative}.el-select:hover .el-input__inner{border-color:#8391a5}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#20a0ff}.el-select .el-input .el-input__icon{color:#bfcbd9;font-size:12px;transition:transform .3s;-ms-transform:translateY(-50%) rotate(180deg);transform:translateY(-50%) rotateZ(180deg);line-height:16px;top:50%;cursor:pointer}.el-select .el-input .el-input__icon.is-show-close{transition:0s;width:16px;height:16px;font-size:14px;right:8px;text-align:center;-ms-transform:translateY(-50%) rotate(180deg);transform:translateY(-50%) rotateZ(180deg);border-radius:100%;color:#bfcbd9}.el-select .el-input .el-input__icon.is-show-close:hover{color:#97a8be}.el-select .el-input .el-input__icon.is-reverse{-ms-transform:translateY(-50%);transform:translateY(-50%)}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#d1dbe5}.el-select>.el-input{display:block}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{height:24px;line-height:24px;box-sizing:border-box;margin:3px 0 3px 6px}.el-select__input{border:none;outline:0;padding:0;margin-left:10px;color:#666;font-size:14px;vertical-align:baseline;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#bfcbd9;line-height:18px;font-size:12px}.el-select__close:hover{color:#97a8be}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%)}.el-table,.el-table td,.el-table th{box-sizing:border-box;position:relative}.el-select__tag{display:inline-block;height:24px;line-height:24px;font-size:14px;border-radius:4px;color:#fff;background-color:#20a0ff}.el-select__tag .el-icon-close{font-size:12px}.el-table{overflow:hidden;width:100%;max-width:100%;background-color:#fff;border:1px solid #dfe6ec;font-size:14px;color:#1f2d3d}.el-table .el-tooltip.cell{white-space:nowrap;min-width:50px}.el-table td,.el-table th{height:40px;min-width:0;text-overflow:ellipsis;vertical-align:middle}.el-table::after,.el-table::before{content:\'\';position:absolute;background-color:#dfe6ec;z-index:1}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.is-left,.el-table th.is-left{text-align:left}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #dfe6ec}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table .cell,.el-table th>div{padding-left:18px;padding-right:18px;box-sizing:border-box;text-overflow:ellipsis}.el-table::before{left:0;bottom:0;width:100%;height:1px}.el-table::after{top:0;right:0;width:1px;height:100%}.el-table .caret-wrapper,.el-table th>.cell{position:relative;display:inline-block;vertical-align:middle}.el-table th{white-space:nowrap;overflow:hidden;background-color:#eef1f6;text-align:left}.el-table th.is-sortable{cursor:pointer}.el-table th>div{display:inline-block;line-height:40px;overflow:hidden;white-space:nowrap}.el-table td>div{box-sizing:border-box}.el-table th.required>div::before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table th>.cell{word-wrap:normal;text-overflow:ellipsis;line-height:30px;width:100%;box-sizing:border-box}.el-table th>.cell.highlight{color:#20a0ff}.el-table .caret-wrapper{cursor:pointer;margin-left:5px;margin-top:-2px;width:16px;height:30px;overflow:visible;overflow:initial}.el-table .cell,.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table .sort-caret{display:inline-block;width:0;height:0;border:0;content:"";position:absolute;left:3px;z-index:2}.el-table .sort-caret.ascending,.el-table .sort-caret.descending{border-right:5px solid transparent;border-left:5px solid transparent}.el-table .sort-caret.ascending{top:9px;border-top:none;border-bottom:5px solid #97a8be}.el-table .sort-caret.descending{bottom:9px;border-top:5px solid #97a8be;border-bottom:none}.el-table .ascending .sort-caret.ascending{border-bottom-color:#48576a}.el-table .descending .sort-caret.descending{border-top-color:#48576a}.el-table td.gutter{width:0}.el-table .cell{white-space:normal;word-break:break-all;line-height:24px}.el-badge__content,.el-message__group p,.el-progress-bar__inner,.el-steps.is-horizontal,.el-tabs__nav,.el-tag,.el-time-spinner,.el-tree-node,.el-upload-list__item-name{white-space:nowrap}.el-table tr input[type=checkbox]{margin:0}.el-table tr{background-color:#fff}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-table__empty-text{position:absolute;left:50%;top:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#5e7382}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;font-size:12px;transition:transform .2s ease-in-out;height:40px}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expand-icon--expanded{-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expanded-cell{padding:20px 50px;background-color:#fbfdff;box-shadow:inset 0 2px 0 #f4f4f4}.el-table__expanded-cell:hover{background-color:#fbfdff!important}.el-table--fit{border-right:0;border-bottom:0}.el-table--border th,.el-table__fixed-right-patch{border-bottom:1px solid #dfe6ec}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--border td,.el-table--border th{border-right:1px solid #dfe6ec}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;box-shadow:1px 0 8px #d3d4d6;overflow-x:hidden}.el-table__fixed-right::before,.el-table__fixed::before{content:\'\';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#dfe6ec;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#eef1f6}.el-table__fixed-right{top:0;left:auto;right:0;box-shadow:-1px 0 8px #d3d4d6}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-header-wrapper thead div{background-color:#eef1f6;color:#1f2d3d}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #dfe6ec;background-color:#fbfdff;color:#1f2d3d}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #dfe6ec}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed}.el-table__footer-wrapper thead div,.el-table__header-wrapper thead div{background-color:#eef1f6;color:#1f2d3d}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#fbfdff;color:#1f2d3d}.el-table__body-wrapper{overflow:auto;position:relative}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#FAFAFA;background-clip:padding-box}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td{background:#edf7ff}.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:#eef1f6}.el-table__body tr.current-row>td{background:#edf7ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #dfe6ec;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;margin-left:5px;cursor:pointer}.el-table__column-filter-trigger i{color:#97a8be}.el-table--enable-row-transition .el-table__body td{transition:background-color .25s ease}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active,.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:opacity .2s linear}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#eef1f6;background-clip:padding-box}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #d1dbe5;border-radius:2px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.12);box-sizing:border-box;margin:2px 0}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#e4e8f1;color:#48576a}.el-table-filter__list-item.is-active{background-color:#20a0ff;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #d1dbe5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#8391a5;cursor:pointer;font-size:14px;padding:0 3px}.el-table-filter__bottom button:hover{color:#20a0ff}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#bfcbd9;cursor:not-allowed}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;min-width:224px;user-select:none}.el-date-table td{width:32px;height:32px;box-sizing:border-box;text-align:center;cursor:pointer}.el-date-table td.next-month,.el-date-table td.prev-month{color:#ddd}.el-date-table td.today{color:#20a0ff;position:relative}.el-date-table td.today:before{content:" ";position:absolute;top:0;right:0;width:0;height:0;border-top:.5em solid #20a0ff;border-left:.5em solid transparent}.el-month-table td .cell,.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px}.el-date-table td.available:hover{background-color:#e4e8f1}.el-date-table td.in-range{background-color:#d2ecff}.el-date-table td.in-range:hover{background-color:#afddff}.el-date-table td.current:not(.disabled),.el-date-table td.end-date,.el-date-table td.start-date{background-color:#20a0ff!important;color:#fff}.el-date-table td.disabled{background-color:#f4f4f4;opacity:1;cursor:not-allowed;color:#ccc}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-date-table td.week{font-size:80%;color:#8391a5}.el-month-table,.el-year-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-date-table th{padding:5px;color:#8391a5;font-weight:400}.el-date-table.is-week-mode .el-date-table__row:hover{background-color:#e4e8f1}.el-date-table.is-week-mode .el-date-table__row.current{background-color:#d2ecff}.el-month-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-month-table td .cell{color:#48576a}.el-month-table td .cell:hover{background-color:#e4e8f1}.el-month-table td.disabled .cell{background-color:#f4f4f4;cursor:not-allowed;color:#ccc}.el-month-table td.current:not(.disabled) .cell{background-color:#20a0ff!important;color:#fff}.el-year-table .el-icon{color:#97a8be}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td .cell{color:#48576a}.el-year-table td .cell:hover{background-color:#e4e8f1}.el-year-table td.disabled .cell{background-color:#f4f4f4;cursor:not-allowed;color:#ccc}.el-year-table td.current:not(.disabled) .cell{background-color:#20a0ff!important;color:#fff}.el-date-range-picker{min-width:520px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker.has-sidebar.has-time{min-width:766px}.el-date-range-picker.has-sidebar{min-width:620px}.el-date-range-picker.has-time{min-width:660px}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header button{float:left}.el-date-range-picker__header div{font-size:14px;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-right .el-date-range-picker__header button{float:right}.el-date-range-picker__content.is-right .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#97a8be}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-time-range-picker{min-width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #d1dbe5}.el-picker-panel{color:#48576a;border:1px solid #d1dbe5;box-shadow:0 2px 6px #ccc;background:#fff;border-radius:2px;line-height:20px;margin:5px 0}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#48576a;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{background-color:#e4e8f1}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#20a0ff}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#97a8be;border:0;background:0 0;cursor:pointer;outline:0;margin-top:3px}.el-date-picker__header-label.active,.el-date-picker__header-label:hover,.el-picker-panel__icon-btn:hover{color:#20a0ff}.el-picker-panel__link-btn{cursor:pointer;color:#20a0ff;text-decoration:none;padding:15px;font-size:12px}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;box-sizing:border-box;padding-top:6px;background-color:#fbfdff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{min-width:254px}.el-date-picker .el-picker-panel__content{min-width:224px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker.has-sidebar.has-time{min-width:434px}.el-date-picker.has-sidebar{min-width:370px}.el-date-picker.has-time{min-width:324px}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header-label{font-size:14px;padding:0 5px;line-height:22px;text-align:center;cursor:pointer}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px}.time-select-item.selected:not(.disabled){background-color:#20a0ff;color:#fff}.time-select-item.selected:not(.disabled):hover{background-color:#20a0ff}.time-select-item.disabled{color:#d1dbe5;cursor:not-allowed}.time-select-item:hover{background-color:#e4e8f1;cursor:pointer}.el-fade-in-enter-active,.el-fade-in-leave-active,.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active,.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active,.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-ms-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-ms-transform:scaleY(1);transform:scaleY(1);-ms-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-ms-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-ms-transform:scaleY(1);transform:scaleY(1);-ms-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-ms-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-ms-transform:scale(1,1);transform:scale(1,1);-ms-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-ms-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-ms-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-date-editor{position:relative;display:inline-block}.el-date-editor .el-picker-panel{position:absolute;min-width:180px;box-sizing:border-box;box-shadow:0 2px 6px #ccc;background:#fff;z-index:10;top:41px}.el-date-editor.el-input{width:193px}.el-date-editor--daterange.el-input{width:220px}.el-date-editor--datetimerange.el-input{width:350px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33%}.el-time-spinner.has-seconds .el-time-spinner__wrapper:nth-child(2){margin-left:1%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.el-time-spinner__list::after,.el-time-spinner__list::before{content:\'\';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#e4e8f1;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#fff}.el-time-spinner__item.disabled{color:#d1dbe5;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #d1dbe5;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-ms-user-select:none;user-select:none}.el-popover,.el-tabs--border-card{box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-slider__button,.el-slider__button-wrapper{-webkit-user-select:none;-moz-user-select:none}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:":";top:50%;color:#fff;position:absolute;font-size:14px;margin-top:-15px;line-height:16px;background-color:#20a0ff;height:32px;z-index:-1;left:0;right:0;box-sizing:border-box;padding-top:6px;text-align:left}.el-time-panel__content::after{left:50%;margin-left:-2px}.el-time-panel__content::before{padding-left:50%;margin-right:-2px}.el-time-panel__content.has-seconds::after{left:66.66667%}.el-time-panel__content.has-seconds::before{padding-left:33.33333%}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#8391a5}.el-time-panel__btn.confirm{font-weight:800;color:#20a0ff}.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:2px;border:1px solid #d1dbe5;padding:10px;z-index:2000;font-size:12px}.el-popover .popper__arrow,.el-popover .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popover .popper__arrow{border-width:6px}.el-popover .popper__arrow::after{content:" ";border-width:6px}.el-popover[x-placement^=top]{margin-bottom:12px}.el-popover[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#d1dbe5;border-bottom-width:0}.el-popover[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popover[x-placement^=bottom]{margin-top:12px}.el-popover[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#d1dbe5}.el-popover[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popover[x-placement^=right]{margin-left:12px}.el-popover[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#d1dbe5;border-left-width:0}.el-popover[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popover[x-placement^=left]{margin-right:12px}.el-popover[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#d1dbe5}.el-popover[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-popover__title{color:#1f2d3d;font-size:13px;line-height:1;margin-bottom:9px}.v-modal-enter{animation:v-modal-in .2s ease}.v-modal-leave{animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-message-box{text-align:left;display:inline-block;vertical-align:middle;background-color:#fff;width:420px;border-radius:3px;font-size:16px;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper::after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:20px 20px 0}.el-message-box__headerbtn{position:absolute;top:19px;right:20px;background:0 0;border:none;outline:0;padding:0;cursor:pointer}.el-message-box__headerbtn .el-message-box__close{color:#999}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#20a0ff}.el-message-box__content{padding:30px 20px;color:#48576a;font-size:14px;position:relative}.el-message-box__input{padding-top:15px}.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#ff4949}.el-message-box__errormsg{color:#ff4949;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:16px;font-weight:700;height:18px;color:#333}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:1.4}.el-message-box__btns{padding:10px 20px 15px;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box__status{position:absolute;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:36px!important}.el-message-box__status.el-icon-circle-check{color:#13ce66}.el-message-box__status.el-icon-information{color:#50bfff}.el-message-box__status.el-icon-warning{color:#f7ba2a}.el-message-box__status.el-icon-circle-cross{color:#ff4949}.msgbox-fade-enter-active{animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{animation:msgbox-fade-out .3s}@keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:13px;line-height:1}.el-breadcrumb__separator{margin:0 8px;color:#bfcbd9}.el-breadcrumb__item{float:left}.el-breadcrumb__item:last-child .el-breadcrumb__item__inner,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner:hover{color:#97a8be;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-breadcrumb__item__inner,.el-breadcrumb__item__inner a{transition:color .15s linear;color:#48576a}.el-breadcrumb__item__inner a:hover,.el-breadcrumb__item__inner:hover{color:#20a0ff;cursor:pointer}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner,.el-form-item.is-error .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-textarea__inner{border-color:#ff4949}.el-form-item.is-required .el-form-item__label:before{content:\'*\';color:#ff4949;margin-right:4px}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#48576a;line-height:1;padding:11px 12px 11px 0;box-sizing:border-box}.el-form-item__content{line-height:36px;position:relative;font-size:14px}.el-form-item__error{color:#ff4949;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-tabs__header{border-bottom:1px solid #d1dbe5;padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:3px;background-color:#20a0ff;z-index:1;transition:transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;transition:all .15s}.el-tabs__new-tab .el-icon-plus{-ms-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#20a0ff}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap.is-scrollable{padding:0 15px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#8391a5}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{position:relative;transition:transform .3s;float:left}.el-tabs__item{padding:0 16px;height:42px;box-sizing:border-box;line-height:42px;display:inline-block;list-style:none;font-size:14px;color:#8391a5;position:relative}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-ms-transform:scale(.7,.7);transform:scale(.7,.7);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#97a8be;color:#fff}.el-tabs__item:hover{color:#1f2d3d;cursor:pointer}.el-tabs__item.is-disabled{color:#bbb;cursor:default}.el-tabs__item.is-active{color:#20a0ff}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tag,.slideInLeft-transition,.slideInRight-transition{display:inline-block}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-ms-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border:1px solid transparent;transition:all .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-right:9px;padding-left:9px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border:1px solid #d1dbe5;border-bottom-color:#fff;border-radius:4px 4px 0 0}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-right:16px;padding-left:16px}.el-tabs--border-card{background:#fff;border:1px solid #d1dbe5}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#eef1f6;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;border-top:0;margin-right:-1px;margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:#fff;border-right-color:#d1dbe5;border-left-color:#d1dbe5}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active:first-child{border-left-color:#d1dbe5}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active:last-child{border-right-color:#d1dbe5}.slideInRight-enter{animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave .3s}.slideInLeft-enter{animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave .3s}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(-100%);opacity:0}}.el-tag{background-color:#8391a5;padding:0 5px;height:24px;line-height:22px;font-size:12px;color:#fff;border-radius:4px;box-sizing:border-box;border:1px solid transparent}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;-ms-transform:scale(.75,.75);transform:scale(.75,.75);height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-2px}.el-tag .el-icon-close:hover{background-color:#fff;color:#8391a5}.el-tag--gray{background-color:#e4e8f1;border-color:#e4e8f1;color:#48576a}.el-tag--gray .el-tag__close:hover{background-color:#48576a;color:#fff}.el-tag--gray.is-hit{border-color:#48576a}.el-tag--primary{background-color:rgba(32,160,255,.1);border-color:rgba(32,160,255,.2);color:#20a0ff}.el-tag--primary .el-tag__close:hover{background-color:#20a0ff;color:#fff}.el-tag--primary.is-hit{border-color:#20a0ff}.el-tag--success{background-color:rgba(18,206,102,.1);border-color:rgba(18,206,102,.2);color:#13ce66}.el-tag--success .el-tag__close:hover{background-color:#13ce66;color:#fff}.el-tag--success.is-hit{border-color:#13ce66}.el-tag--warning{background-color:rgba(247,186,41,.1);border-color:rgba(247,186,41,.2);color:#f7ba2a}.el-tag--warning .el-tag__close:hover{background-color:#f7ba2a;color:#fff}.el-tag--warning.is-hit{border-color:#f7ba2a}.el-tag--danger{background-color:rgba(255,73,73,.1);border-color:rgba(255,73,73,.2);color:#ff4949}.el-tag--danger .el-tag__close:hover{background-color:#ff4949;color:#fff}.el-tag--danger.is-hit{border-color:#ff4949}.el-tree{cursor:default;background:#fff;border:1px solid #d1dbe5}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#5e7382}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree-node__expand-icon,.el-tree-node__label,.el-tree-node__loading-icon{display:inline-block;vertical-align:middle}.el-tree-node__content{line-height:36px;height:36px;cursor:pointer}.el-tree-node__content>.el-checkbox,.el-tree-node__content>.el-tree-node__expand-icon{margin-right:8px}.el-tree-node__content>.el-checkbox{vertical-align:middle}.el-tree-node__content:hover{background:#e4e8f1}.el-tree-node__expand-icon{cursor:pointer;width:0;height:0;margin-left:10px;border:6px solid transparent;border-right-width:0;border-left-color:#97a8be;border-left-width:7px;-ms-transform:rotate(0);transform:rotate(0);transition:transform .3s ease-in-out}.el-tree-node__expand-icon:hover{border-left-color:#999}.el-tree-node__expand-icon.expanded{-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{border-color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:4px;font-size:14px;color:#97a8be}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#edf7ff}.el-alert{width:100%;padding:8px 16px;margin:0;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;color:#fff;opacity:1;display:table;transition:opacity .2s}.el-alert .el-alert__description{color:#fff;font-size:12px;margin:5px 0 0}.el-alert--success{background-color:#13ce66}.el-alert--info{background-color:#50bfff}.el-alert--warning{background-color:#f7ba2a}.el-alert--error{background-color:#ff4949}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px;display:table-cell;color:#fff;vertical-align:middle}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert__closebtn{font-size:12px;color:#fff;opacity:1;top:12px;right:15px;position:absolute;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{width:330px;padding:20px;box-sizing:border-box;border-radius:2px;position:fixed;right:16px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);transition:opacity .3s,transform .3s,right .3s,top .4s;overflow:hidden}.el-notification .el-icon-circle-check{color:#13ce66}.el-notification .el-icon-circle-cross{color:#ff4949}.el-notification .el-icon-information{color:#50bfff}.el-notification .el-icon-warning{color:#f7ba2a}.el-notification__group{margin-left:0}.el-notification__group.is-with-icon{margin-left:55px}.el-notification__title{font-weight:400;font-size:16px;color:#1f2d3d;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:10px 0 0;color:#8391a5;text-align:justify}.el-notification__icon{width:40px;height:40px;font-size:40px;float:left;position:relative;top:3px}.el-notification__closeBtn{top:20px;right:20px;position:absolute;cursor:pointer;color:#bfcbd9;font-size:14px}.el-notification__closeBtn:hover{color:#97a8be}.el-notification-fade-enter{-ms-transform:translateX(100%);transform:translateX(100%);right:0}.el-input-number{display:inline-block;width:180px;position:relative;line-height:normal}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:82px}.el-input-number.is-without-controls .el-input__inner{padding-right:10px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#d1dbe5;color:#d1dbe5}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#d1dbe5;cursor:not-allowed}.el-input-number__decrease,.el-input-number__increase{height:auto;border-left:1px solid #bfcbd9;width:36px;line-height:34px;top:1px;text-align:center;color:#97a8be;cursor:pointer;position:absolute;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#20a0ff}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#20a0ff}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#d1dbe5;cursor:not-allowed}.el-input-number__increase{right:0}.el-input-number__decrease{right:37px}.el-input-number--large{width:200px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{line-height:40px;width:42px;font-size:16px}.el-input-number--large .el-input-number__decrease{right:43px}.el-input-number--large .el-input__inner{padding-right:94px}.el-input-number--small{width:130px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{line-height:28px;width:30px;font-size:13px}.el-input-number--small .el-input-number__decrease{right:31px}.el-input-number--small .el-input__inner{padding-right:70px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-progress-bar__inner:after,.el-row:after,.el-row:before,.el-slider:after,.el-slider:before,.el-slider__button-wrapper:after,.el-upload-cover:after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#1f2d3d;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#1f2d3d;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#1f2d3d}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#1f2d3d}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#1f2d3d;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#1f2d3d;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#1f2d3d}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#1f2d3d}.el-tooltip__popper.is-light{background:#fff;border:1px solid #1f2d3d}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#1f2d3d}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#1f2d3d}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#1f2d3d}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#1f2d3d}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.el-tooltip__popper.is-dark{background:#1f2d3d;color:#fff}.el-slider:after,.el-slider:before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper:after{display:inline-block;vertical-align:middle}.el-slider:after{clear:both}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:4px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:4px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-16px;-ms-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{-ms-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:64px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:30px;margin-top:-1px;border:1px solid #bfcbd9;line-height:20px;box-sizing:border-box;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#8391a5}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#20a0ff}.el-slider__runway{width:100%;height:4px;margin:16px 0;background-color:#e4e8f1;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar,.el-slider__runway.disabled .el-slider__button{background-color:#bfcbd9}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-ms-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__input{float:right;margin-top:3px}.el-slider__bar{height:4px;background-color:#20a0ff;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{width:36px;height:36px;position:absolute;z-index:1001;top:-16px;-ms-transform:translateX(-50%);transform:translateX(-50%);background-color:transparent;text-align:center;-ms-user-select:none;user-select:none}.el-slider__button-wrapper:after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:12px;height:12px;background-color:#20a0ff;border-radius:50%;transition:.2s;-ms-user-select:none;user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-ms-transform:scale(1.5);transform:scale(1.5);background-color:#1c8de0}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{position:absolute;width:4px;height:4px;border-radius:100%;background-color:#bfcbd9;-ms-transform:translateX(-50%);transform:translateX(-50%)}.el-loading-mask{position:absolute;z-index:10000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{width:50px;height:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-2,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-push-0,.el-col-push-1,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-2,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#20a0ff;margin:3px 0;font-size:14px}.el-loading-spinner .circular{width:42px;height:42px;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#20a0ff;stroke-linecap:round}@keyframes loading-rotate{100%{transform:rotate(360deg)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{box-sizing:border-box}.el-row:after,.el-row:before{display:table}.el-row:after{clear:both}.el-row--flex{display:-ms-flexbox;display:flex}.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-align-bottom{-ms-flex-align:end;align-items:flex-end}.el-row--flex.is-align-middle{-ms-flex-align:center;align-items:center}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-justify-space-between{-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-end{-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-center{-ms-flex-pack:center;justify-content:center}.el-col-1,.el-col-10,.el-col-11,.el-col-12,.el-col-13,.el-col-14,.el-col-15,.el-col-16,.el-col-17,.el-col-18,.el-col-19,.el-col-2,.el-col-20,.el-col-21,.el-col-22,.el-col-23,.el-col-24,.el-col-3,.el-col-4,.el-col-5,.el-col-6,.el-col-7,.el-col-8,.el-col-9{float:left;box-sizing:border-box}.el-col-0{width:0}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media (max-width:768px){.el-col-xs-0{width:0}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media (min-width:768px){.el-col-sm-0{width:0}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media (min-width:992px){.el-col-md-0{width:0}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media (min-width:1200px){.el-col-lg-0{width:0}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}.el-progress-bar__inner:after{display:inline-block;height:100%;vertical-align:middle}.el-upload{display:inline-block;text-align:center;cursor:pointer}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#8391a5;margin-top:7px}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;cursor:pointer;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover{border-color:#20a0ff;color:#20a0ff}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;cursor:pointer;position:relative;overflow:hidden}.el-upload-dragger .el-upload__text{color:#97a8be;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#20a0ff;font-style:normal}.el-upload-dragger .el-icon-upload{font-size:67px;color:#97a8be;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid rgba(191,203,217,.2);margin-top:7px;padding-top:5px}.el-upload-dragger:hover{border-color:#20a0ff}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #20a0ff}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item{transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#48576a;line-height:1.8;margin-top:5px;box-sizing:border-box;border-radius:4px;width:100%;position:relative}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;top:-13px;right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#13ce66}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#48576a;-ms-transform:scale(.7);transform:scale(.7)}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item:hover{background-color:#eef1f6}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#20a0ff;cursor:pointer}.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none}.el-upload-list__item-name{color:#48576a;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;transition:color .3s}.el-upload-list__item-name [class^=el-icon]{color:#97a8be;margin-right:7px;height:100%;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#48576a;display:none}.el-upload-list__item-delete:hover{color:#20a0ff}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-ms-transform:rotate(45deg);transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-ms-transform:rotate(-45deg) scale(.8);transform:rotate(-45deg) scale(.8)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-ms-transform:rotate(45deg);transform:rotate(45deg);box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-ms-transform:rotate(-45deg) scale(.8);transform:rotate(-45deg) scale(.8)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover:after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-ms-transform:rotate(45deg);transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-ms-transform:rotate(-45deg) scale(.8);transform:rotate(-45deg) scale(.8);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-ms-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#48576a}.el-progress{position:relative;line-height:1}.el-progress.is-exception .el-progress-bar__inner{background-color:#ff4949}.el-progress.is-exception .el-progress__text{color:#ff4949}.el-progress.is-success .el-progress-bar__inner{background-color:#13ce66}.el-progress.is-success .el-progress__text{color:#13ce66}.el-progress__text{font-size:14px;color:#48576a;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle{display:inline-block}.el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-ms-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#e4e8f1;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#20a0ff;text-align:right;border-radius:100px;line-height:1}.el-progress-bar__innerText{color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-time-spinner{width:100%}.el-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);min-width:300px;padding:10px 12px;box-sizing:border-box;border-radius:2px;position:fixed;left:50%;top:20px;-ms-transform:translateX(-50%);transform:translateX(-50%);background-color:#fff;transition:opacity .3s,transform .4s;overflow:hidden}.el-message .el-icon-circle-check{color:#13ce66}.el-message .el-icon-circle-cross{color:#ff4949}.el-message .el-icon-information{color:#50bfff}.el-message .el-icon-warning{color:#f7ba2a}.el-message__group{margin-left:38px;position:relative;height:20px;line-height:20px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.el-message__group p{font-size:14px;margin:0 34px 0 0;color:#8391a5;text-align:justify}.el-step__head,.el-steps.is-horizontal.is-center{text-align:center}.el-message__group.is-with-icon{margin-left:0}.el-message__img{width:40px;height:40px;position:absolute;left:0;top:0}.el-message__icon{vertical-align:middle;margin-right:8px}.el-message__closeBtn{top:3px;right:0;position:absolute;cursor:pointer;color:#bfcbd9;font-size:14px}.el-message__closeBtn:hover{color:#97a8be}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-ms-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#ff4949;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;border:1px solid #fff}.el-badge__content.is-dot{width:8px;height:8px;padding:0;right:0;border-radius:50%}.el-badge__content.is-fixed{top:0;right:10px;position:absolute;-ms-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-card{border:1px solid #d1dbe5;border-radius:4px;background-color:#fff;overflow:hidden;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-card__header{padding:18px 20px;border-bottom:1px solid #d1dbe5;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#bfcbd9;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-ms-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{font-size:0}.el-steps>:last-child .el-step__line{display:none}.el-step.is-horizontal,.el-step.is-vertical .el-step__head,.el-step.is-vertical .el-step__main,.el-step__line{display:inline-block}.el-step{position:relative;vertical-align:top}.el-step:last-child .el-step__main{padding-right:0}.el-step.is-vertical .el-step__main{padding-left:10px}.el-step__line{position:absolute;border-color:inherit;background-color:#bfcbd9}.el-step__line.is-vertical{width:2px;box-sizing:border-box;top:32px;bottom:0;left:15px}.el-step__line.is-horizontal{top:15px;height:2px;left:32px;right:0}.el-step__line.is-icon.is-horizontal{right:4px}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:all 150ms;box-sizing:border-box;width:0;height:0}.el-step__icon{display:block;line-height:28px}.el-step__icon>*{line-height:inherit;vertical-align:middle}.el-step__head{width:28px;height:28px;border-radius:50%;background-color:transparent;line-height:28px;font-size:28px;vertical-align:top;transition:all 150ms}.el-carousel__arrow,.el-carousel__button{margin:0;transition:.3s;cursor:pointer;outline:0}.el-step__head.is-finish{color:#20a0ff;border-color:#20a0ff}.el-step__head.is-error{color:#ff4949;border-color:#ff4949}.el-step__head.is-success{color:#13ce66;border-color:#13ce66}.el-step__head.is-process,.el-step__head.is-wait{color:#bfcbd9;border-color:#bfcbd9}.el-step__head.is-text{font-size:14px;border-width:2px;border-style:solid}.el-step__head.is-text.is-finish{color:#fff;background-color:#20a0ff;border-color:#20a0ff}.el-step__head.is-text.is-error{color:#fff;background-color:#ff4949;border-color:#ff4949}.el-step__head.is-text.is-success{color:#fff;background-color:#13ce66;border-color:#13ce66}.el-step__head.is-text.is-wait{color:#bfcbd9;background-color:#fff;border-color:#bfcbd9}.el-step__head.is-text.is-process{color:#fff;background-color:#bfcbd9;border-color:#bfcbd9}.el-step__main{white-space:normal;padding-right:10px;text-align:left}.el-step__title{font-size:14px;line-height:32px;display:inline-block}.el-step__title.is-finish{font-weight:700;color:#20a0ff}.el-step__title.is-error{font-weight:700;color:#ff4949}.el-step__title.is-success{font-weight:700;color:#13ce66}.el-step__title.is-wait{font-weight:400;color:#97a8be}.el-step__title.is-process{font-weight:700;color:#48576a}.el-step__description{font-size:12px;font-weight:400;line-height:14px}.el-step__description.is-finish{color:#20a0ff}.el-step__description.is-error{color:#ff4949}.el-step__description.is-success{color:#13ce66}.el-step__description.is-wait{color:#bfcbd9}.el-step__description.is-process{color:#8391a5}.el-carousel{overflow-x:hidden;position:relative}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;padding:0;width:36px;height:36px;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-ms-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__indicators{position:absolute;list-style:none;bottom:0;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%);margin:0;padding:0;z-index:2}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-ms-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#8391a5;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-ms-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{width:auto;height:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{display:inline-block;background-color:transparent;padding:12px 4px;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;padding:0}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-ms-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-ms-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active .el-scrollbar__bar,.el-scrollbar:focus .el-scrollbar__bar,.el-scrollbar:hover .el-scrollbar__bar{opacity:1;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(151,168,190,.3);transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(151,168,190,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;transition:opacity 120ms ease-out}.el-carousel__item--card,.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-carousel__item{position:absolute;top:0;left:0;width:100%;height:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-active,.el-cascader .el-icon-circle-close,.el-cascader-menus{z-index:2}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__mask{position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;opacity:.24;transition:.2s}.el-collapse{border:1px solid #dfe6ec;border-radius:0}.el-collapse-item:last-child{margin-bottom:-1px}.el-collapse-item.is-active>.el-collapse-item__header .el-collapse-item__header__arrow{-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header{height:43px;line-height:43px;padding-left:15px;background-color:#fff;color:#48576a;cursor:pointer;border-bottom:1px solid #dfe6ec;font-size:13px}.el-collapse-item__header__arrow{margin-right:8px;transition:transform .3s}.el-collapse-item__wrap{will-change:height;background-color:#fbfdff;overflow:hidden;box-sizing:border-box;border-bottom:1px solid #dfe6ec}.el-collapse-item__content{padding:10px 15px;font-size:13px;color:#1f2d3d;line-height:1.769230769230769}.el-cascader{display:inline-block;position:relative}.el-cascader .el-input,.el-cascader .el-input__inner{cursor:pointer}.el-cascader .el-input__icon{transition:none}.el-cascader .el-icon-caret-bottom{transition:transform .3s}.el-cascader .el-icon-caret-bottom.is-reverse{-ms-transform:rotate(180deg);transform:rotateZ(180deg)}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#bbb}.el-cascader__label{position:absolute;left:0;top:0;height:100%;line-height:36px;padding:0 25px 0 10px;color:#1f2d3d;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;box-sizing:border-box;cursor:pointer;font-size:14px;text-align:left}.el-cascader__label span{color:#97a8be}.el-cascader--large{font-size:16px}.el-cascader--large .el-cascader__label{line-height:40px}.el-cascader--small{font-size:13px}.el-cascader--small .el-cascader__label{line-height:28px}.el-cascader-menus{white-space:nowrap;background:#fff;position:absolute;margin:5px 0;border:1px solid #d1dbe5;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04)}.el-cascader-menu{display:inline-block;vertical-align:top;height:204px;overflow:auto;border-right:solid 1px #d1dbe5;background-color:#fff;box-sizing:border-box;margin:0;padding:6px 0;min-width:160px}.el-cascader-menu:last-child{border-right:0}.el-cascader-menu__item{font-size:14px;padding:8px 30px 8px 10px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#48576a;height:36px;line-height:1.5;box-sizing:border-box;cursor:pointer}.el-cascader-menu__item:hover{background-color:#e4e8f1}.el-cascader-menu__item.selected{color:#fff;background-color:#20a0ff}.el-cascader-menu__item.selected.hover{background-color:#1c8de0}.el-cascader-menu__item.is-active{color:#fff;background-color:#20a0ff}.el-cascader-menu__item.is-active:hover{background-color:#1c8de0}.el-cascader-menu__item.is-disabled{color:#bfcbd9;background-color:#fff;cursor:not-allowed}.el-cascader-menu__item.is-disabled:hover{background-color:#fff}.el-cascader-menu__item__keyword{font-weight:700}.el-cascader-menu__item--extensible:after{font-family:element-icons;content:"\\e606";font-size:12px;-ms-transform:scale(.8);transform:scale(.8);color:#bfcbd9;position:absolute;right:10px;margin-top:1px}.el-cascader-menu--flexible{height:auto;max-height:180px;overflow:auto}.el-cascader-menu--flexible .el-cascader-menu__item{overflow:visible}.el-color-hue-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-hue-slider__bar{position:relative;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-ms-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(to bottom,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-alpha-slider__bar{position:relative;background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#1f2d3d}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#20a0ff;border-color:#20a0ff}.el-color-dropdown__link-btn{cursor:pointer;color:#20a0ff;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:#4db3ff}.el-color-picker{display:inline-block;position:relative;line-height:normal}.el-color-picker__trigger{display:inline-block;box-sizing:border-box;height:36px;padding:6px;border:1px solid #bfcbd9;border-radius:4px;font-size:0}.el-color-picker__color{position:relative;display:inline-block;box-sizing:border-box;border:1px solid #666;width:22px;height:22px;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty{font-size:12px;vertical-align:middle;color:#666;position:absolute;top:4px;left:4px}.el-color-picker__icon{display:inline-block;position:relative;top:-6px;margin-left:8px;width:12px;color:#888;font-size:12px}.el-input,.el-input__inner{width:100%;display:inline-block}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;background-color:#fff;border:1px solid #d1dbe5;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.12)}.el-input{position:relative;font-size:14px}.el-input.is-disabled .el-input__inner{background-color:#eef1f6;border-color:#d1dbe5;color:#bbb;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#bfcbd9}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#bfcbd9}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#bfcbd9}.el-input.is-disabled .el-input__inner::placeholder{color:#bfcbd9}.el-input.is-active .el-input__inner{outline:0;border-color:#20a0ff}.el-input__inner{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #bfcbd9;box-sizing:border-box;color:#1f2d3d;font-size:inherit;height:36px;line-height:1;outline:0;padding:3px 10px;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-button,.el-checkbox-button__inner{-webkit-appearance:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;outline:0;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#97a8be}.el-input__inner::-moz-placeholder{color:#97a8be}.el-input__inner:-ms-input-placeholder{color:#97a8be}.el-input__inner::placeholder{color:#97a8be}.el-input__inner:hover{border-color:#8391a5}.el-input__inner:focus{outline:0;border-color:#20a0ff}.el-input__icon{position:absolute;width:35px;height:100%;right:0;top:0;text-align:center;color:#bfcbd9;transition:all .3s}.el-input__icon:after{content:\'\';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__icon+.el-input__inner{padding-right:35px}.el-input__icon.is-clickable:hover{cursor:pointer;color:#8391a5}.el-input__icon.is-clickable:hover+.el-input__inner{border-color:#8391a5}.el-input--large{font-size:16px}.el-input--large .el-input__inner{height:42px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:30px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:22px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#fbfdff;color:#97a8be;vertical-align:middle;display:table-cell;position:relative;border:1px solid #bfcbd9;border-radius:4px;padding:0 10px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:block;margin:-10px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-button,.el-textarea__inner{font-size:14px;box-sizing:border-box}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-textarea{display:inline-block;width:100%;vertical-align:bottom}.el-textarea.is-disabled .el-textarea__inner{background-color:#eef1f6;border-color:#d1dbe5;color:#bbb;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#bfcbd9}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#bfcbd9}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#bfcbd9}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#bfcbd9}.el-textarea__inner{display:block;resize:vertical;padding:5px 7px;line-height:1.5;width:100%;color:#1f2d3d;background-color:#fff;background-image:none;border:1px solid #bfcbd9;border-radius:4px;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#97a8be}.el-textarea__inner::-moz-placeholder{color:#97a8be}.el-textarea__inner:-ms-input-placeholder{color:#97a8be}.el-textarea__inner::placeholder{color:#97a8be}.el-textarea__inner:hover{border-color:#8391a5}.el-textarea__inner:focus{outline:0;border-color:#20a0ff}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #c4c4c4;color:#1f2d3d;margin:0;padding:10px 15px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#20a0ff;border-color:#20a0ff}.el-button:active{color:#1d90e6;border-color:#1d90e6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:\'\';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#bfcbd9;cursor:not-allowed;background-image:none;background-color:#eef1f6;border-color:#d1dbe5}.el-checkbox,.el-checkbox__input{cursor:pointer;display:inline-block;position:relative;white-space:nowrap}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#d1dbe5;color:#bfcbd9}.el-button.is-active{color:#1d90e6;border-color:#1d90e6}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#20a0ff;color:#20a0ff}.el-button.is-plain:active{background:#fff;border-color:#1d90e6;color:#1d90e6;outline:0}.el-button--primary{color:#fff;background-color:#20a0ff;border-color:#20a0ff}.el-button--primary:focus,.el-button--primary:hover{background:#4db3ff;border-color:#4db3ff;color:#fff}.el-button--primary.is-active,.el-button--primary:active{background:#1d90e6;border-color:#1d90e6;color:#fff}.el-button--primary:active{outline:0}.el-button--primary.is-plain{background:#fff;border:1px solid #bfcbd9;color:#1f2d3d}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#fff;border-color:#20a0ff;color:#20a0ff}.el-button--primary.is-plain:active{background:#fff;border-color:#1d90e6;color:#1d90e6;outline:0}.el-button--success{color:#fff;background-color:#13ce66;border-color:#13ce66}.el-button--success:focus,.el-button--success:hover{background:#42d885;border-color:#42d885;color:#fff}.el-button--success.is-active,.el-button--success:active{background:#11b95c;border-color:#11b95c;color:#fff}.el-button--success:active{outline:0}.el-button--success.is-plain{background:#fff;border:1px solid #bfcbd9;color:#1f2d3d}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#fff;border-color:#13ce66;color:#13ce66}.el-button--success.is-plain:active{background:#fff;border-color:#11b95c;color:#11b95c;outline:0}.el-button--warning{color:#fff;background-color:#f7ba2a;border-color:#f7ba2a}.el-button--warning:focus,.el-button--warning:hover{background:#f9c855;border-color:#f9c855;color:#fff}.el-button--warning.is-active,.el-button--warning:active{background:#dea726;border-color:#dea726;color:#fff}.el-button--warning:active{outline:0}.el-button--warning.is-plain{background:#fff;border:1px solid #bfcbd9;color:#1f2d3d}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#fff;border-color:#f7ba2a;color:#f7ba2a}.el-button--warning.is-plain:active{background:#fff;border-color:#dea726;color:#dea726;outline:0}.el-button--danger{color:#fff;background-color:#ff4949;border-color:#ff4949}.el-button--danger:focus,.el-button--danger:hover{background:#ff6d6d;border-color:#ff6d6d;color:#fff}.el-button--danger.is-active,.el-button--danger:active{background:#e64242;border-color:#e64242;color:#fff}.el-button--danger:active{outline:0}.el-button--danger.is-plain{background:#fff;border:1px solid #bfcbd9;color:#1f2d3d}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#fff;border-color:#ff4949;color:#ff4949}.el-button--danger.is-plain:active{background:#fff;border-color:#e64242;color:#e64242;outline:0}.el-button--info{color:#fff;background-color:#50bfff;border-color:#50bfff}.el-button--info:focus,.el-button--info:hover{background:#73ccff;border-color:#73ccff;color:#fff}.el-button--info.is-active,.el-button--info:active{background:#48ace6;border-color:#48ace6;color:#fff}.el-button--info:active{outline:0}.el-button--info.is-plain{background:#fff;border:1px solid #bfcbd9;color:#1f2d3d}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#fff;border-color:#50bfff;color:#50bfff}.el-button--info.is-plain:active{background:#fff;border-color:#48ace6;color:#48ace6;outline:0}.el-button--large{padding:11px 19px;font-size:16px;border-radius:4px}.el-button--small{padding:7px 9px;font-size:12px;border-radius:4px}.el-button--mini{padding:4px;font-size:12px;border-radius:4px}.el-button--text{border:none;color:#20a0ff;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#4db3ff}.el-button--text:active{color:#1d90e6}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button{float:left;position:relative}.el-button-group .el-button+.el-button{margin-left:0}.el-button-group .el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group .el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group .el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group .el-button:not(:last-child){margin-right:-1px}.el-button-group .el-button.is-active,.el-button-group .el-button:active,.el-button-group .el-button:focus,.el-button-group .el-button:hover{z-index:1}.el-checkbox{color:#1f2d3d;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-checkbox+.el-checkbox{margin-left:15px}.el-checkbox__input{outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#20a0ff;border-color:#0190fe}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:\'\';position:absolute;display:block;border:1px solid #fff;margin-top:-1px;left:3px;right:3px;top:50%}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#20a0ff}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#20a0ff;border-color:#0190fe}.el-checkbox__input.is-checked .el-checkbox__inner::after{-ms-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#eef1f6;border-color:#d1dbe5;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#eef1f6}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#d1dbe5;border-color:#d1dbe5}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#fff}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#d1dbe5;border-color:#d1dbe5}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{border-color:#fff}.el-checkbox__input.is-disabled+.el-checkbox__label{color:#bbb;cursor:not-allowed}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #bfcbd9;border-radius:4px;box-sizing:border-box;width:18px;height:18px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#20a0ff}.el-checkbox__inner::after{box-sizing:content-box;content:"";border:2px solid #fff;border-left:0;border-top:0;height:8px;left:5px;position:absolute;top:1px;-ms-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:4px;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;-ms-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;left:-999px}.el-checkbox-button,.el-checkbox-button__inner{position:relative;display:inline-block}.el-checkbox__label{font-size:14px;padding-left:5px}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#20a0ff;border-color:#20a0ff;box-shadow:-1px 0 0 0 #20a0ff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#bfcbd9;cursor:not-allowed;background-image:none;background-color:#eef1f6;border-color:#d1dbe5;box-shadow:none}.el-checkbox-button__inner,.el-transfer-panel{background:#fff;vertical-align:middle;box-sizing:border-box}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#20a0ff}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #bfcbd9;border-radius:4px 0 0 4px;box-shadow:none!important}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button__inner{line-height:1;white-space:nowrap;border:1px solid #bfcbd9;border-left:0;color:#1f2d3d;margin:0;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:10px 15px;font-size:14px;border-radius:0}.el-checkbox-button__inner:hover{color:#20a0ff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;left:-999px}.el-checkbox-button--large .el-checkbox-button__inner{padding:11px 19px;font-size:16px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner{padding:7px 9px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner{padding:4px;font-size:12px;border-radius:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 10px}.el-transfer__buttons .el-button{display:block;margin:0 auto;padding:8px 12px}.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__buttons .el-button [class*=el-icon-]+span{margin-left:0}.el-transfer__buttons .el-button:first-child{margin-bottom:6px}.el-transfer-panel{border:1px solid #d1dbe5;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);display:inline-block;width:200px;position:relative}.el-transfer-panel .el-transfer-panel__header{height:36px;line-height:36px;background:#fbfdff;margin:0;padding-left:20px;border-bottom:1px solid #d1dbe5;box-sizing:border-box;color:#1f2d3d}.el-transfer-panel .el-transfer-panel__footer{height:36px;background:#fff;margin:0;padding:0;border-top:1px solid #d1dbe5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#8391a5}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:32px;line-height:32px;padding:6px 20px 0;color:#8391a5}.el-transfer-panel .el-checkbox__label{padding-left:14px}.el-transfer-panel .el-checkbox__inner{width:14px;height:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-transfer-panel__body{padding-bottom:36px;height:246px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:214px}.el-transfer-panel__item{height:32px;line-height:32px;padding-left:20px;display:block}.el-transfer-panel__item .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;box-sizing:border-box;padding-left:28px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:9px}.el-transfer-panel__item.el-checkbox{color:#48576a}.el-transfer-panel__item:hover{background:#e4e8f1}.el-transfer-panel__filter{margin-top:10px;text-align:center;padding:0 10px;width:100%;box-sizing:border-box}.el-transfer-panel__filter .el-input__inner{height:22px;width:100%;display:inline-block;box-sizing:border-box}.el-transfer-panel__filter .el-input__icon{right:10px}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}'],sourceRoot:""}])},226:function(e,o,t){o=e.exports=t(163)(!0),o.push([e.i,'.move_in_cart[data-v-99a59cfe]{-webkit-animation:mymove-data-v-99a59cfe .5s ease-in-out;animation:mymove-data-v-99a59cfe .5s ease-in-out}@keyframes mymove-data-v-99a59cfe{0%{-webkit-transform:scale(1);transform:scale(1)}25%{-webkit-transform:scale(.8);transform:scale(.8)}50%{-webkit-transform:scale(1.2);transform:scale(1.2)}75%{-webkit-transform:scale(.9);transform:scale(.9)}to{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes mymove{0%{-webkit-transform:scale(1);transform:scale(1)}25%{-webkit-transform:scale(.8);transform:scale(.8)}50%{-webkit-transform:scale(1.2);transform:scale(1.2)}75%{-webkit-transform:scale(.9);transform:scale(.9)}to{-webkit-transform:scale(1);transform:scale(1)}}.header-box[data-v-99a59cfe]{background:#1a1a1a;background-image:linear-gradient(#000,#121212);width:100%}header[data-v-99a59cfe]{height:100px;z-index:30;position:relative}.w-box[data-v-99a59cfe]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.w-box[data-v-99a59cfe],.w-box h1[data-v-99a59cfe]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%}.w-box h1>a[data-v-99a59cfe]{background:url(/static/images/global-logo-red@2x.png) no-repeat 50%;background-size:cover;display:block;width:50px;height:40px;text-indent:-9999px;background-position:0 0}.w-box .nav-list[data-v-99a59cfe]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:22px}.w-box .nav-list .el-autocomplete[data-v-99a59cfe]{width:20vw}.w-box .nav-list a[data-v-99a59cfe]{width:110px;color:#c8c8c8;display:block;font-size:14px;padding:0 25px}.w-box .nav-list a[data-v-99a59cfe]:hover{color:#fff}.w-box .nav-list a[data-v-99a59cfe]:nth-child(2){margin-left:-10px}.w-box .nav-aside[data-v-99a59cfe]{position:relative}.w-box .nav-aside[data-v-99a59cfe]:before{background:#333;background:hsla(0,0%,100%,.2);content:" ";width:1px;height:13px;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;left:0}.w-box .nav-aside.fixed[data-v-99a59cfe]{width:262px;position:fixed;left:50%;top:19px;margin-left:451px;margin-top:0;z-index:32;top:-40px;-webkit-transform:translate3d(0,59px,0);transform:translate3d(0,59px,0);transition:-webkit-transform .3s cubic-bezier(.165,.84,.44,1);transition:transform .3s cubic-bezier(.165,.84,.44,1);transition:transform .3s cubic-bezier(.165,.84,.44,1),-webkit-transform .3s cubic-bezier(.165,.84,.44,1)}.w-box .nav-aside.fixed .user:hover a[data-v-99a59cfe]:before{background-position:-215px 0}.w-box .nav-aside.fixed .shop:hover a[data-v-99a59cfe]:before{background-position:-210px -22px}.w-box .nav-aside[data-v-99a59cfe],.w-box .right-box[data-v-99a59cfe]{display:-webkit-box;display:-ms-flexbox;display:flex}.w-box .nav-aside[data-v-99a59cfe]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.w-box .user[data-v-99a59cfe]{margin-left:41px;width:36px}.w-box .user:hover a[data-v-99a59cfe]:before{background-position:-5px 0}.w-box .user:hover .nav-user-wrapper[data-v-99a59cfe]{top:18px;visibility:visible;opacity:1;transition:opacity .15s ease-out}.w-box .user>a[data-v-99a59cfe]{position:relative;width:36px;height:20px;display:block;text-indent:-9999px}.w-box .user>a[data-v-99a59cfe]:before{content:" ";position:absolute;left:8px;top:0;width:20px;height:20px;background:url(/static/images/account-icon@2x.32d87deb02b3d1c3cc5bcff0c26314ac.png) -155px 0;background-size:240px 107px;transition:none}.w-box .user li+li[data-v-99a59cfe]{text-align:center;position:relative;border-top:1px solid #f5f5f5;line-height:44px;height:44px;color:#616161;font-size:12px}.w-box .user li+li[data-v-99a59cfe]:hover{background:#fafafa}.w-box .user li+li a[data-v-99a59cfe]{display:block;color:#616161}.w-box .user .nav-user-avatar>div[data-v-99a59cfe]{position:relative;margin:0 auto 8px;width:46px;height:46px;text-align:center}.w-box .user .nav-user-avatar>div[data-v-99a59cfe]:before{content:"";position:absolute;left:0;right:0;top:0;bottom:0;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}.w-box .user .nav-user-avatar>div .avatar[data-v-99a59cfe]{border-radius:50%;display:block;width:100%;height:100%;background-repeat:no-repeat;background-size:contain}.w-box .user .nav-user-avatar .name[data-v-99a59cfe]{margin-bottom:16px;font-size:12px;line-height:1.5;text-align:center;color:#757575}.w-box .user .nav-user-wrapper[data-v-99a59cfe]{width:168px;-webkit-transform:translate(-50%);transform:translate(-50%);left:50%}.w-box .user .nav-user-list[data-v-99a59cfe]{width:168px}.w-box .user .nav-user-list[data-v-99a59cfe]:before{left:50%}.w-box .shop[data-v-99a59cfe]{position:relative;float:left;margin-left:21px;width:61px;z-index:99}.w-box .shop:hover a[data-v-99a59cfe]:before{content:" ";background-position:0 -22px}.w-box .shop .nav-user-wrapper.active[data-v-99a59cfe]{top:18px;visibility:visible;opacity:1;transition:opacity .15s ease-out}.w-box .shop>a[data-v-99a59cfe]{position:absolute;left:0;top:0;bottom:0;display:block;right:0;z-index:1}.w-box .shop>a[data-v-99a59cfe]:before{display:block;width:30px;height:100%;content:" ";background:url(/static/images/account-icon@2x.32d87deb02b3d1c3cc5bcff0c26314ac.png) 0 -22px;background-size:240px 107px;background-position:-150px -22px}.w-box .shop .cart-num[data-v-99a59cfe]{position:relative;display:block;margin-left:31px;margin-top:-1px;min-width:30px;text-indent:0;line-height:20px}.w-box .shop .cart-num>i[data-v-99a59cfe]{background:#eb746b;background-image:linear-gradient(#eb746b,#e25147);box-shadow:inset 0 0 1px hsla(0,0%,100%,.15),0 1px 2px hsla(0,0%,100%,.15);text-align:center;font-style:normal;display:inline-block;width:20px;height:20px;line-height:20px;border-radius:10px;color:#fff;font-size:12px}.w-box .shop .cart-num>i.no[data-v-99a59cfe]{background:#969696;background-image:linear-gradient(#a4a4a4,#909090);box-shadow:inset 0 0 1px #838383,0 1px 2px #838383}.w-box .shop .nav-user-wrapper[data-v-99a59cfe]{right:0;width:360px}.w-box .shop .nav-user-wrapper .nav-user-list[data-v-99a59cfe]:before{right:34px}.w-box .shop .nav-user-list[data-v-99a59cfe]{padding:0;width:100%}.w-box .shop .nav-user-list .full[data-v-99a59cfe]{border-radius:8px;overflow:hidden}.w-box .shop .nav-user-list .nav-cart-items[data-v-99a59cfe]{max-height:363px;overflow-x:hidden;overflow-y:auto}.w-box .shop .nav-user-list .cart-item[data-v-99a59cfe]{height:120px;width:100%;overflow:hidden;border-top:1px solid #f0f0f0}.w-box .shop .nav-user-list .cart-item[data-v-99a59cfe]:hover{background:#fcfcfc}.w-box .shop .nav-user-list .cart-item:hover .del[data-v-99a59cfe]{display:block}.w-box .shop .nav-user-list li:first-child .cart-item[data-v-99a59cfe]:first-child{border-top:none;border-radius:8px 8px 0 0;overflow:hidden}.w-box .shop .nav-user-list .cart-item-inner[data-v-99a59cfe]{padding:20px;position:relative}.w-box .shop .nav-user-list .item-thumb[data-v-99a59cfe]{position:relative;float:left;width:80px;height:80px;border-radius:3px}.w-box .shop .nav-user-list .item-thumb[data-v-99a59cfe]:before{content:"";position:absolute;left:0;right:0;top:0;bottom:0;z-index:2;border:1px solid #f0f0f0;border:0 solid transparent;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06);border-radius:3px}.w-box .shop .nav-user-list .item-thumb img[data-v-99a59cfe]{display:block;width:80px;height:80px;border-radius:3px;overflow:hidden}.w-box .shop .nav-user-list .item-desc[data-v-99a59cfe]{margin-left:98px;display:table;width:205px;height:80px}.w-box .shop .nav-user-list .item-desc h4[data-v-99a59cfe]{color:#000;width:185px;overflow:hidden;word-break:keep-all;white-space:nowrap;text-overflow:ellipsis;font-size:14px;line-height:16px;margin-bottom:10px}.w-box .shop .nav-user-list .item-desc .attrs span[data-v-99a59cfe]{position:relative;display:inline-block;margin-right:20px;font-size:14px;line-height:14px;color:#999}.w-box .shop .nav-user-list .item-desc .attrs span[data-v-99a59cfe]:last-child{margin-right:0}.w-box .shop .nav-user-list .item-desc h6[data-v-99a59cfe]{color:#cacaca;font-size:12px;line-height:14px;margin-top:20px}.w-box .shop .nav-user-list .item-desc h6 span[data-v-99a59cfe]{display:inline-block;font-weight:700;color:#cacaca}.w-box .shop .nav-user-list .item-desc h6 .price-icon[data-v-99a59cfe],.w-box .shop .nav-user-list .item-desc h6 .price-num[data-v-99a59cfe]{color:#d44d44}.w-box .shop .nav-user-list .item-desc h6 .price-num[data-v-99a59cfe]{margin-left:5px;font-size:14px}.w-box .shop .nav-user-list .item-desc h6 .item-num[data-v-99a59cfe]{margin-left:10px}.w-box .shop .nav-user-list .cart-cell[data-v-99a59cfe]{display:table-cell;vertical-align:middle}.w-box .shop .nav-user-list .del[data-v-99a59cfe]{display:none;overflow:hidden;position:absolute;right:20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.w-box .shop .nav-cart-total[data-v-99a59cfe]{box-sizing:content-box;position:relative;padding:20px;height:40px;background:#fafafa;border-top:1px solid #f0f0f0;border-radius:0 0 8px 8px;box-shadow:inset 0 -1px 0 hsla(0,0%,100%,.5),0 -3px 8px rgba(0,0,0,.04);background:linear-gradient(#fafafa,#f5f5f5)}.w-box .shop .nav-cart-total p[data-v-99a59cfe]{margin-bottom:4px;line-height:16px;font-size:12px;color:#c1c1c1}.w-box .shop .nav-cart-total h5[data-v-99a59cfe]{line-height:20px;font-size:14px;color:#6f6f6f}.w-box .shop .nav-cart-total h5 span[data-v-99a59cfe]{font-size:18px;color:#de4037;display:inline-block;font-weight:700}.w-box .shop .nav-cart-total h5 span[data-v-99a59cfe]:first-child{font-size:12px;margin-right:5px}.w-box .shop .nav-cart-total h6[data-v-99a59cfe]{position:absolute;right:20px;top:20px;width:108px}@media (max-height:780px){.nav-cart-items[data-v-99a59cfe]{max-height:423px!important}}@media (max-height:900px){.nav-cart-items[data-v-99a59cfe]{max-height:544px!important}}@media (max-height:1080px){.nav-cart-items[data-v-99a59cfe]{max-height:620px!important}}.nav-user-wrapper[data-v-99a59cfe]{position:absolute;z-index:30;padding-top:18px;opacity:0;visibility:hidden;top:-3000px}.nav-user-wrapper .nav-user-list[data-v-99a59cfe]{position:relative;padding-top:20px;background:#fff;border:1px solid #d6d6d6;border-color:rgba(0,0,0,.08);border-radius:8px;box-shadow:0 20px 40px rgba(0,0,0,.15);z-index:10}.nav-user-wrapper .nav-user-list[data-v-99a59cfe]:before{position:absolute;content:" ";background:url(/static/images/account-icon@2x.32d87deb02b3d1c3cc5bcff0c26314ac.png) no-repeat -49px -43px;background-size:240px 107px;width:20px;height:8px;top:-8px;margin-left:-10px}.nav-sub[data-v-99a59cfe]{position:relative;z-index:20;height:90px;background:#f7f7f7;box-shadow:0 2px 4px rgba(0,0,0,.04)}.nav-sub.fixed[data-v-99a59cfe]{position:fixed;z-index:21;height:60px;top:0;left:0;right:0;border-bottom:1px solid #dadada;background-image:linear-gradient(#fff,#f1f1f1)}.nav-sub .nav-sub-wrapper[data-v-99a59cfe]{padding:31px 0;height:90px;position:relative}.nav-sub .nav-sub-wrapper.fixed[data-v-99a59cfe]{padding:0;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.nav-sub .nav-sub-wrapper[data-v-99a59cfe]:after{content:" ";position:absolute;top:89px;left:50%;margin-left:-610px;width:1220px;background:#000;height:1px;display:none;opacity:0;transition:opacity .3s ease-in}.nav-sub .w[data-v-99a59cfe]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.nav-sub .nav-list2[data-v-99a59cfe]{height:28px;line-height:28px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%}.nav-sub .nav-list2 li[data-v-99a59cfe]:first-child{padding-left:0}.nav-sub .nav-list2 li:first-child a[data-v-99a59cfe]{padding-left:10px}.nav-sub .nav-list2 li[data-v-99a59cfe]{position:relative;float:left;padding-left:2px}.nav-sub .nav-list2 li a[data-v-99a59cfe]{display:block;padding:0 10px;color:#666}.nav-sub .nav-list2 li a.active[data-v-99a59cfe]{font-weight:700}.nav-sub .nav-list2 li a[data-v-99a59cfe]:hover{color:#5683ea}.nav-sub .nav-list2 li[data-v-99a59cfe]:before{content:" ";position:absolute;left:0;top:13px;width:2px;height:2px;background:#bdbdbd}@media (min-width:1px){.nav-sub .nav-sub-wrapper[data-v-99a59cfe]:after{display:block}}.cart-con[data-v-99a59cfe]{text-align:center;position:relative}.cart-con p[data-v-99a59cfe]{padding-top:185px;color:#333;font-size:16px}.cart-con[data-v-99a59cfe]:before{position:absolute;content:" ";left:50%;-webkit-transform:translate(-50%,-70%);transform:translate(-50%,-70%);top:50%;width:76px;height:62px;background:url("/static/images/cart-empty-new.png") no-repeat;background-size:cover}',"",{version:3,sources:["D:/桌面/YMall-front/src/common/header.vue"],names:[],mappings:"AACA,+BACE,yDAA0D,AAClD,gDAAkD,CAC3D,AACD,kCACA,GACI,2BAA4B,AACpB,kBAAoB,CAC/B,AACD,IACI,4BAA8B,AACtB,mBAAsB,CACjC,AACD,IACI,6BAA8B,AACtB,oBAAsB,CACjC,AACD,IACI,4BAA8B,AACtB,mBAAsB,CACjC,AACD,GACI,2BAA4B,AACpB,kBAAoB,CAC/B,CACA,AACD,0BACA,GACI,2BAA4B,AACpB,kBAAoB,CAC/B,AACD,IACI,4BAA8B,AACtB,mBAAsB,CACjC,AACD,IACI,6BAA8B,AACtB,oBAAsB,CACjC,AACD,IACI,4BAA8B,AACtB,mBAAsB,CACjC,AACD,GACI,2BAA4B,AACpB,kBAAoB,CAC/B,CACA,AACD,6BACE,mBAAoB,AACpB,+CAAiD,AACjD,UAAY,CACb,AACD,wBACE,aAAc,AACd,WAAY,AACZ,iBAAmB,CACpB,AACD,wBAIE,yBAA0B,AACtB,sBAAuB,AACnB,6BAA+B,CAKxC,AACD,mDAXE,oBAAqB,AACrB,oBAAqB,AACrB,aAAc,AAId,yBAA0B,AACtB,sBAAuB,AACnB,mBAAoB,AAC5B,WAAa,CAUd,AACD,6BACM,oEAAqE,AACrE,sBAAuB,AACvB,cAAe,AACf,WAAY,AACZ,YAAa,AACb,oBAAqB,AACrB,uBAAyB,CAC9B,AACD,kCACI,oBAAqB,AACrB,oBAAqB,AACrB,aAAc,AACd,wBAAyB,AACrB,qBAAsB,AAClB,uBAAwB,AAChC,yBAA0B,AACtB,sBAAuB,AACnB,mBAAoB,AAC5B,iBAAmB,CACtB,AACD,mDACM,UAAY,CACjB,AACD,oCACM,YAAa,AACb,cAAe,AACf,cAAe,AACf,eAAgB,AAChB,cAAgB,CACrB,AACD,0CACQ,UAAY,CACnB,AACD,iDACM,iBAAmB,CACxB,AACD,mCACI,iBAAmB,CACtB,AACD,0CACM,gBAAiB,AACjB,8BAAqC,AACrC,YAAa,AACb,UAAW,AACX,YAAa,AACb,gBAAiB,AACjB,oBAAqB,AACrB,oBAAqB,AACrB,aAAc,AACd,yBAA0B,AACtB,sBAAuB,AACnB,mBAAoB,AAC5B,MAAQ,CACb,AACD,yCACM,YAAa,AACb,eAAgB,AAChB,SAAU,AACV,SAAU,AACV,kBAAmB,AACnB,aAAc,AACd,WAAY,AACZ,UAAW,AACX,wCAA2C,AAC3C,gCAAmC,AACnC,8DAAsE,AACtE,sDAA8D,AAC9D,wGAAyH,CAC9H,AACD,8DACQ,4BAA8B,CACrC,AACD,8DACQ,gCAAkC,CACzC,AAMD,sEAJI,oBAAqB,AACrB,oBAAqB,AACrB,YAAc,CASjB,AAPD,mCAII,yBAA0B,AACtB,sBAAuB,AACnB,kBAAoB,CAC/B,AACD,8BACI,iBAAkB,AAClB,UAAY,CACf,AACD,6CACM,0BAA4B,CACjC,AACD,sDACM,SAAU,AACV,mBAAoB,AACpB,UAAW,AACX,gCAAkC,CACvC,AACD,gCACM,kBAAmB,AACnB,WAAY,AACZ,YAAa,AACb,cAAe,AACf,mBAAqB,CAC1B,AACD,uCACQ,YAAa,AACb,kBAAmB,AACnB,SAAU,AACV,MAAO,AACP,WAAY,AACZ,YAAa,AACb,6FAA8F,AAC9F,4BAA6B,AAC7B,eAAiB,CACxB,AACD,oCACM,kBAAmB,AACnB,kBAAmB,AACnB,6BAA8B,AAC9B,iBAAkB,AAClB,YAAa,AACb,cAAe,AACf,cAAgB,CACrB,AACD,0CACQ,kBAAoB,CAC3B,AACD,sCACQ,cAAe,AACf,aAAe,CACtB,AACD,mDACM,kBAAmB,AACnB,kBAAmB,AACnB,WAAY,AACZ,YAAa,AACb,iBAAmB,CACxB,AACD,0DACQ,WAAY,AACZ,kBAAmB,AACnB,OAAQ,AACR,QAAS,AACT,MAAO,AACP,SAAU,AACV,kBAAmB,AACnB,0CAAgD,CACvD,AACD,2DACQ,kBAAmB,AACnB,cAAe,AACf,WAAY,AACZ,YAAa,AACb,4BAA6B,AAC7B,uBAAyB,CAChC,AACD,qDACM,mBAAoB,AACpB,eAAgB,AAChB,gBAAiB,AACjB,kBAAmB,AACnB,aAAe,CACpB,AACD,gDACM,YAAa,AACb,kCAAmC,AAC3B,0BAA2B,AACnC,QAAU,CACf,AACD,6CACM,WAAa,CAClB,AACD,oDACQ,QAAU,CACjB,AACD,8BACI,kBAAmB,AACnB,WAAY,AACZ,iBAAkB,AAClB,WAAY,AACZ,UAAY,CACf,AACD,6CACM,YAAa,AACb,2BAA6B,CAClC,AACD,uDACM,SAAU,AACV,mBAAoB,AACpB,UAAW,AACX,gCAAkC,CACvC,AACD,gCACM,kBAAmB,AACnB,OAAQ,AACR,MAAO,AACP,SAAU,AACV,cAAe,AACf,QAAS,AACT,SAAW,CAChB,AACD,uCACQ,cAAe,AACf,WAAY,AACZ,YAAa,AACb,YAAa,AACb,4FAA6F,AAC7F,4BAA6B,AAC7B,gCAAkC,CACzC,AACD,wCACM,kBAAmB,AACnB,cAAe,AACf,iBAAkB,AAClB,gBAAiB,AACjB,eAAgB,AAChB,cAAe,AACf,gBAAkB,CACvB,AACD,0CACQ,mBAAoB,AACpB,kDAAoD,AACpD,2EAAyF,AACzF,kBAAmB,AACnB,kBAAmB,AACnB,qBAAsB,AACtB,WAAY,AACZ,YAAa,AACb,iBAAkB,AAClB,mBAAoB,AACpB,WAAY,AACZ,cAAgB,CACvB,AACD,6CACU,mBAAoB,AACpB,kDAAoD,AACpD,kDAAqD,CAC9D,AACD,gDACM,QAAS,AACT,WAAa,CAClB,AACD,sEACQ,UAAY,CACnB,AACD,6CACM,UAAW,AACX,UAAY,CACjB,AACD,mDACQ,kBAAmB,AACnB,eAAiB,CACxB,AACD,6DACQ,iBAAkB,AAClB,kBAAmB,AACnB,eAAiB,CACxB,AACD,wDACQ,aAAc,AACd,WAAY,AACZ,gBAAiB,AACjB,4BAA8B,CACrC,AACD,8DACU,kBAAoB,CAC7B,AACD,mEACY,aAAe,CAC1B,AACD,mFACQ,gBAAiB,AACjB,0BAA2B,AAC3B,eAAiB,CACxB,AACD,8DACQ,aAAc,AACd,iBAAmB,CAC1B,AACD,yDACQ,kBAAmB,AACnB,WAAY,AACZ,WAAY,AACZ,YAAa,AACb,iBAAmB,CAC1B,AACD,gEACU,WAAY,AACZ,kBAAmB,AACnB,OAAQ,AACR,QAAS,AACT,MAAO,AACP,SAAU,AACV,UAAW,AACX,yBAA0B,AAC1B,2BAA4B,AAC5B,2CAAgD,AAChD,iBAAmB,CAC5B,AACD,6DACU,cAAe,AACf,WAAY,AACZ,YAAa,AACb,kBAAmB,AACnB,eAAiB,CAC1B,AACD,wDACQ,iBAAkB,AAClB,cAAe,AACf,YAAa,AACb,WAAa,CACpB,AACD,2DACU,WAAY,AACZ,YAAa,AACb,gBAAiB,AACjB,oBAAqB,AACrB,mBAAoB,AACpB,uBAAwB,AACxB,eAAgB,AAChB,iBAAkB,AAClB,kBAAoB,CAC7B,AACD,oEACU,kBAAmB,AACnB,qBAAsB,AACtB,kBAAmB,AACnB,eAAgB,AAChB,iBAAkB,AAClB,UAAY,CACrB,AACD,+EACU,cAAgB,CACzB,AACD,2DACU,cAAe,AACf,eAAgB,AAChB,iBAAkB,AAClB,eAAiB,CAC1B,AACD,gEACY,qBAAsB,AACtB,gBAAiB,AACjB,aAAe,CAC1B,AACD,6IACY,aAAe,CAC1B,AACD,sEACY,gBAAiB,AACjB,cAAgB,CAC3B,AACD,qEACY,gBAAkB,CAC7B,AACD,wDACQ,mBAAoB,AACpB,qBAAuB,CAC9B,AACD,kDACQ,aAAc,AACd,gBAAiB,AACjB,kBAAmB,AACnB,WAAY,AACZ,QAAS,AACT,mCAAoC,AAC5B,0BAA4B,CAC3C,AACD,8CACM,uBAAwB,AACxB,kBAAmB,AACnB,aAAc,AACd,YAAa,AACb,mBAAoB,AACpB,6BAA8B,AAC9B,0BAA2B,AAC3B,wEAAoF,AACpF,2CAA8C,CACnD,AACD,gDACQ,kBAAmB,AACnB,iBAAkB,AAClB,eAAgB,AAChB,aAAe,CACtB,AACD,iDACQ,iBAAkB,AAClB,eAAgB,AAChB,aAAe,CACtB,AACD,sDACU,eAAgB,AAChB,cAAe,AACf,qBAAsB,AACtB,eAAiB,CAC1B,AACD,kEACU,eAAgB,AAChB,gBAAkB,CAC3B,AACD,iDACQ,kBAAmB,AACnB,WAAY,AACZ,SAAU,AACV,WAAa,CACpB,AACD,0BACA,iCACI,0BAA6B,CAChC,CACA,AACD,0BACA,iCACI,0BAA6B,CAChC,CACA,AACD,2BACA,iCACI,0BAA6B,CAChC,CACA,AACD,mCACE,kBAAmB,AACnB,WAAY,AACZ,iBAAkB,AAClB,UAAW,AACX,kBAAmB,AACnB,WAAa,CACd,AACD,kDACI,kBAAmB,AACnB,iBAAkB,AAClB,gBAAiB,AACjB,yBAA0B,AAC1B,6BAAkC,AAClC,kBAAmB,AACnB,uCAA4C,AAC5C,UAAY,CACf,AACD,yDACM,kBAAmB,AACnB,YAAa,AACb,0GAA2G,AAC3G,4BAA6B,AAC7B,WAAY,AACZ,WAAY,AACZ,SAAU,AACV,iBAAmB,CACxB,AACD,0BACE,kBAAmB,AACnB,WAAY,AACZ,YAAa,AACb,mBAAoB,AACpB,oCAA0C,CAC3C,AACD,gCACI,eAAgB,AAChB,WAAY,AACZ,YAAa,AACb,MAAO,AACP,OAAQ,AACR,QAAS,AACT,gCAAiC,AACjC,8CAAiD,CACpD,AACD,2CACI,eAAgB,AAChB,YAAa,AACb,iBAAmB,CACtB,AACD,iDACM,UAAW,AACX,YAAa,AACb,oBAAqB,AACrB,oBAAqB,AACrB,aAAc,AACd,yBAA0B,AACtB,sBAAuB,AACnB,kBAAoB,CACjC,AACD,iDACM,YAAa,AACb,kBAAmB,AACnB,SAAU,AACV,SAAU,AACV,mBAAoB,AACpB,aAAc,AACd,gBAAiB,AACjB,WAAY,AACZ,aAAc,AACd,UAAW,AACX,8BAAgC,CACrC,AACD,6BACI,oBAAqB,AACrB,oBAAqB,AACrB,aAAc,AACd,yBAA0B,AACtB,sBAAuB,AACnB,6BAA+B,CAC1C,AACD,qCACI,YAAa,AACb,iBAAkB,AAClB,oBAAqB,AACrB,oBAAqB,AACrB,aAAc,AACd,yBAA0B,AACtB,sBAAuB,AACnB,mBAAoB,AAC5B,WAAa,CAChB,AACD,oDACM,cAAgB,CACrB,AACD,sDACQ,iBAAmB,CAC1B,AACD,wCACM,kBAAmB,AACnB,WAAY,AACZ,gBAAkB,CACvB,AACD,0CACQ,cAAe,AACf,eAAgB,AAChB,UAAY,CACnB,AACD,iDACU,eAAkB,CAC3B,AACD,gDACQ,aAAe,CACtB,AACD,+CACM,YAAa,AACb,kBAAmB,AACnB,OAAQ,AACR,SAAU,AACV,UAAW,AACX,WAAY,AACZ,kBAAoB,CACzB,AACD,uBACA,iDACI,aAAe,CAClB,CACA,AACD,2BAEE,kBAAmB,AACnB,iBAAmB,CACpB,AACD,6BACI,kBAAmB,AACnB,WAAe,AACf,cAAgB,CACnB,AACD,kCACE,kBAAmB,AACnB,YAAa,AACb,SAAU,AACV,uCAAyC,AACjC,+BAAiC,AACzC,QAAS,AACT,WAAY,AACZ,YAAa,AACb,8DAA+D,AAC/D,qBAAuB,CACxB",file:"header.vue",sourcesContent:['\n.move_in_cart[data-v-99a59cfe] {\n -webkit-animation: mymove-data-v-99a59cfe .5s ease-in-out;\n animation: mymove-data-v-99a59cfe .5s ease-in-out;\n}\n@keyframes mymove-data-v-99a59cfe {\n0% {\n -webkit-transform: scale(1);\n transform: scale(1);\n}\n25% {\n -webkit-transform: scale(0.8);\n transform: scale(0.8);\n}\n50% {\n -webkit-transform: scale(1.2);\n transform: scale(1.2);\n}\n75% {\n -webkit-transform: scale(0.9);\n transform: scale(0.9);\n}\n100% {\n -webkit-transform: scale(1);\n transform: scale(1);\n}\n}\n@-webkit-keyframes mymove {\n0% {\n -webkit-transform: scale(1);\n transform: scale(1);\n}\n25% {\n -webkit-transform: scale(0.8);\n transform: scale(0.8);\n}\n50% {\n -webkit-transform: scale(1.2);\n transform: scale(1.2);\n}\n75% {\n -webkit-transform: scale(0.9);\n transform: scale(0.9);\n}\n100% {\n -webkit-transform: scale(1);\n transform: scale(1);\n}\n}\n.header-box[data-v-99a59cfe] {\n background: #1a1a1a;\n background-image: linear-gradient(#000, #121212);\n width: 100%;\n}\nheader[data-v-99a59cfe] {\n height: 100px;\n z-index: 30;\n position: relative;\n}\n.w-box[data-v-99a59cfe] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n height: 100%;\n}\n.w-box h1[data-v-99a59cfe] {\n height: 100%;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n.w-box h1 > a[data-v-99a59cfe] {\n background: url(/static/images/global-logo-red@2x.png) no-repeat 50%;\n background-size: cover;\n display: block;\n width: 50px;\n height: 40px;\n text-indent: -9999px;\n background-position: 0 0;\n}\n.w-box .nav-list[data-v-99a59cfe] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n margin-right: 22px;\n}\n.w-box .nav-list .el-autocomplete[data-v-99a59cfe] {\n width: 20vw;\n}\n.w-box .nav-list a[data-v-99a59cfe] {\n width: 110px;\n color: #c8c8c8;\n display: block;\n font-size: 14px;\n padding: 0 25px;\n}\n.w-box .nav-list a[data-v-99a59cfe]:hover {\n color: #fff;\n}\n.w-box .nav-list a[data-v-99a59cfe]:nth-child(2) {\n margin-left: -10px;\n}\n.w-box .nav-aside[data-v-99a59cfe] {\n position: relative;\n}\n.w-box .nav-aside[data-v-99a59cfe]:before {\n background: #333;\n background: rgba(255, 255, 255, 0.2);\n content: " ";\n width: 1px;\n height: 13px;\n overflow: hidden;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n left: 0;\n}\n.w-box .nav-aside.fixed[data-v-99a59cfe] {\n width: 262px;\n position: fixed;\n left: 50%;\n top: 19px;\n margin-left: 451px;\n margin-top: 0;\n z-index: 32;\n top: -40px;\n -webkit-transform: translate3d(0, 59px, 0);\n transform: translate3d(0, 59px, 0);\n transition: -webkit-transform 0.3s cubic-bezier(0.165, 0.84, 0.44, 1);\n transition: transform 0.3s cubic-bezier(0.165, 0.84, 0.44, 1);\n transition: transform 0.3s cubic-bezier(0.165, 0.84, 0.44, 1), -webkit-transform 0.3s cubic-bezier(0.165, 0.84, 0.44, 1);\n}\n.w-box .nav-aside.fixed .user:hover a[data-v-99a59cfe]:before {\n background-position: -215px 0;\n}\n.w-box .nav-aside.fixed .shop:hover a[data-v-99a59cfe]:before {\n background-position: -210px -22px;\n}\n.w-box .right-box[data-v-99a59cfe] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n}\n.w-box .nav-aside[data-v-99a59cfe] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n.w-box .user[data-v-99a59cfe] {\n margin-left: 41px;\n width: 36px;\n}\n.w-box .user:hover a[data-v-99a59cfe]:before {\n background-position: -5px 0;\n}\n.w-box .user:hover .nav-user-wrapper[data-v-99a59cfe] {\n top: 18px;\n visibility: visible;\n opacity: 1;\n transition: opacity .15s ease-out;\n}\n.w-box .user > a[data-v-99a59cfe] {\n position: relative;\n width: 36px;\n height: 20px;\n display: block;\n text-indent: -9999px;\n}\n.w-box .user > a[data-v-99a59cfe]:before {\n content: " ";\n position: absolute;\n left: 8px;\n top: 0;\n width: 20px;\n height: 20px;\n background: url(/static/images/account-icon@2x.32d87deb02b3d1c3cc5bcff0c26314ac.png) -155px 0;\n background-size: 240px 107px;\n transition: none;\n}\n.w-box .user li + li[data-v-99a59cfe] {\n text-align: center;\n position: relative;\n border-top: 1px solid #f5f5f5;\n line-height: 44px;\n height: 44px;\n color: #616161;\n font-size: 12px;\n}\n.w-box .user li + li[data-v-99a59cfe]:hover {\n background: #fafafa;\n}\n.w-box .user li + li a[data-v-99a59cfe] {\n display: block;\n color: #616161;\n}\n.w-box .user .nav-user-avatar > div[data-v-99a59cfe] {\n position: relative;\n margin: 0 auto 8px;\n width: 46px;\n height: 46px;\n text-align: center;\n}\n.w-box .user .nav-user-avatar > div[data-v-99a59cfe]:before {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n border-radius: 50%;\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.06);\n}\n.w-box .user .nav-user-avatar > div .avatar[data-v-99a59cfe] {\n border-radius: 50%;\n display: block;\n width: 100%;\n height: 100%;\n background-repeat: no-repeat;\n background-size: contain;\n}\n.w-box .user .nav-user-avatar .name[data-v-99a59cfe] {\n margin-bottom: 16px;\n font-size: 12px;\n line-height: 1.5;\n text-align: center;\n color: #757575;\n}\n.w-box .user .nav-user-wrapper[data-v-99a59cfe] {\n width: 168px;\n -webkit-transform: translate(-50%);\n transform: translate(-50%);\n left: 50%;\n}\n.w-box .user .nav-user-list[data-v-99a59cfe] {\n width: 168px;\n}\n.w-box .user .nav-user-list[data-v-99a59cfe]:before {\n left: 50%;\n}\n.w-box .shop[data-v-99a59cfe] {\n position: relative;\n float: left;\n margin-left: 21px;\n width: 61px;\n z-index: 99;\n}\n.w-box .shop:hover a[data-v-99a59cfe]:before {\n content: " ";\n background-position: 0 -22px;\n}\n.w-box .shop .nav-user-wrapper.active[data-v-99a59cfe] {\n top: 18px;\n visibility: visible;\n opacity: 1;\n transition: opacity .15s ease-out;\n}\n.w-box .shop > a[data-v-99a59cfe] {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n display: block;\n right: 0;\n z-index: 1;\n}\n.w-box .shop > a[data-v-99a59cfe]:before {\n display: block;\n width: 30px;\n height: 100%;\n content: " ";\n background: url(/static/images/account-icon@2x.32d87deb02b3d1c3cc5bcff0c26314ac.png) 0 -22px;\n background-size: 240px 107px;\n background-position: -150px -22px;\n}\n.w-box .shop .cart-num[data-v-99a59cfe] {\n position: relative;\n display: block;\n margin-left: 31px;\n margin-top: -1px;\n min-width: 30px;\n text-indent: 0;\n line-height: 20px;\n}\n.w-box .shop .cart-num > i[data-v-99a59cfe] {\n background: #eb746b;\n background-image: linear-gradient(#eb746b, #e25147);\n box-shadow: inset 0 0 1px rgba(255, 255, 255, 0.15), 0 1px 2px rgba(255, 255, 255, 0.15);\n text-align: center;\n font-style: normal;\n display: inline-block;\n width: 20px;\n height: 20px;\n line-height: 20px;\n border-radius: 10px;\n color: #fff;\n font-size: 12px;\n}\n.w-box .shop .cart-num > i.no[data-v-99a59cfe] {\n background: #969696;\n background-image: linear-gradient(#A4A4A4, #909090);\n box-shadow: inset 0 0 1px #838383, 0 1px 2px #838383;\n}\n.w-box .shop .nav-user-wrapper[data-v-99a59cfe] {\n right: 0;\n width: 360px;\n}\n.w-box .shop .nav-user-wrapper .nav-user-list[data-v-99a59cfe]:before {\n right: 34px;\n}\n.w-box .shop .nav-user-list[data-v-99a59cfe] {\n padding: 0;\n width: 100%;\n}\n.w-box .shop .nav-user-list .full[data-v-99a59cfe] {\n border-radius: 8px;\n overflow: hidden;\n}\n.w-box .shop .nav-user-list .nav-cart-items[data-v-99a59cfe] {\n max-height: 363px;\n overflow-x: hidden;\n overflow-y: auto;\n}\n.w-box .shop .nav-user-list .cart-item[data-v-99a59cfe] {\n height: 120px;\n width: 100%;\n overflow: hidden;\n border-top: 1px solid #f0f0f0;\n}\n.w-box .shop .nav-user-list .cart-item[data-v-99a59cfe]:hover {\n background: #fcfcfc;\n}\n.w-box .shop .nav-user-list .cart-item:hover .del[data-v-99a59cfe] {\n display: block;\n}\n.w-box .shop .nav-user-list li:first-child .cart-item[data-v-99a59cfe]:first-child {\n border-top: none;\n border-radius: 8px 8px 0 0;\n overflow: hidden;\n}\n.w-box .shop .nav-user-list .cart-item-inner[data-v-99a59cfe] {\n padding: 20px;\n position: relative;\n}\n.w-box .shop .nav-user-list .item-thumb[data-v-99a59cfe] {\n position: relative;\n float: left;\n width: 80px;\n height: 80px;\n border-radius: 3px;\n}\n.w-box .shop .nav-user-list .item-thumb[data-v-99a59cfe]:before {\n content: "";\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: 2;\n border: 1px solid #f0f0f0;\n border: 0 solid transparent;\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.06);\n border-radius: 3px;\n}\n.w-box .shop .nav-user-list .item-thumb img[data-v-99a59cfe] {\n display: block;\n width: 80px;\n height: 80px;\n border-radius: 3px;\n overflow: hidden;\n}\n.w-box .shop .nav-user-list .item-desc[data-v-99a59cfe] {\n margin-left: 98px;\n display: table;\n width: 205px;\n height: 80px;\n}\n.w-box .shop .nav-user-list .item-desc h4[data-v-99a59cfe] {\n color: #000;\n width: 185px;\n overflow: hidden;\n word-break: keep-all;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n line-height: 16px;\n margin-bottom: 10px;\n}\n.w-box .shop .nav-user-list .item-desc .attrs span[data-v-99a59cfe] {\n position: relative;\n display: inline-block;\n margin-right: 20px;\n font-size: 14px;\n line-height: 14px;\n color: #999;\n}\n.w-box .shop .nav-user-list .item-desc .attrs span[data-v-99a59cfe]:last-child {\n margin-right: 0;\n}\n.w-box .shop .nav-user-list .item-desc h6[data-v-99a59cfe] {\n color: #cacaca;\n font-size: 12px;\n line-height: 14px;\n margin-top: 20px;\n}\n.w-box .shop .nav-user-list .item-desc h6 span[data-v-99a59cfe] {\n display: inline-block;\n font-weight: 700;\n color: #cacaca;\n}\n.w-box .shop .nav-user-list .item-desc h6 .price-icon[data-v-99a59cfe], .w-box .shop .nav-user-list .item-desc h6 .price-num[data-v-99a59cfe] {\n color: #d44d44;\n}\n.w-box .shop .nav-user-list .item-desc h6 .price-num[data-v-99a59cfe] {\n margin-left: 5px;\n font-size: 14px;\n}\n.w-box .shop .nav-user-list .item-desc h6 .item-num[data-v-99a59cfe] {\n margin-left: 10px;\n}\n.w-box .shop .nav-user-list .cart-cell[data-v-99a59cfe] {\n display: table-cell;\n vertical-align: middle;\n}\n.w-box .shop .nav-user-list .del[data-v-99a59cfe] {\n display: none;\n overflow: hidden;\n position: absolute;\n right: 20px;\n top: 50%;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n}\n.w-box .shop .nav-cart-total[data-v-99a59cfe] {\n box-sizing: content-box;\n position: relative;\n padding: 20px;\n height: 40px;\n background: #fafafa;\n border-top: 1px solid #f0f0f0;\n border-radius: 0 0 8px 8px;\n box-shadow: inset 0 -1px 0 rgba(255, 255, 255, 0.5), 0 -3px 8px rgba(0, 0, 0, 0.04);\n background: linear-gradient(#fafafa, #f5f5f5);\n}\n.w-box .shop .nav-cart-total p[data-v-99a59cfe] {\n margin-bottom: 4px;\n line-height: 16px;\n font-size: 12px;\n color: #c1c1c1;\n}\n.w-box .shop .nav-cart-total h5[data-v-99a59cfe] {\n line-height: 20px;\n font-size: 14px;\n color: #6f6f6f;\n}\n.w-box .shop .nav-cart-total h5 span[data-v-99a59cfe] {\n font-size: 18px;\n color: #de4037;\n display: inline-block;\n font-weight: 700;\n}\n.w-box .shop .nav-cart-total h5 span[data-v-99a59cfe]:first-child {\n font-size: 12px;\n margin-right: 5px;\n}\n.w-box .shop .nav-cart-total h6[data-v-99a59cfe] {\n position: absolute;\n right: 20px;\n top: 20px;\n width: 108px;\n}\n@media (max-height: 780px) {\n.nav-cart-items[data-v-99a59cfe] {\n max-height: 423px !important;\n}\n}\n@media (max-height: 900px) {\n.nav-cart-items[data-v-99a59cfe] {\n max-height: 544px !important;\n}\n}\n@media (max-height: 1080px) {\n.nav-cart-items[data-v-99a59cfe] {\n max-height: 620px !important;\n}\n}\n.nav-user-wrapper[data-v-99a59cfe] {\n position: absolute;\n z-index: 30;\n padding-top: 18px;\n opacity: 0;\n visibility: hidden;\n top: -3000px;\n}\n.nav-user-wrapper .nav-user-list[data-v-99a59cfe] {\n position: relative;\n padding-top: 20px;\n background: #fff;\n border: 1px solid #d6d6d6;\n border-color: rgba(0, 0, 0, 0.08);\n border-radius: 8px;\n box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);\n z-index: 10;\n}\n.nav-user-wrapper .nav-user-list[data-v-99a59cfe]:before {\n position: absolute;\n content: " ";\n background: url(/static/images/account-icon@2x.32d87deb02b3d1c3cc5bcff0c26314ac.png) no-repeat -49px -43px;\n background-size: 240px 107px;\n width: 20px;\n height: 8px;\n top: -8px;\n margin-left: -10px;\n}\n.nav-sub[data-v-99a59cfe] {\n position: relative;\n z-index: 20;\n height: 90px;\n background: #f7f7f7;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);\n}\n.nav-sub.fixed[data-v-99a59cfe] {\n position: fixed;\n z-index: 21;\n height: 60px;\n top: 0;\n left: 0;\n right: 0;\n border-bottom: 1px solid #dadada;\n background-image: linear-gradient(#fff, #f1f1f1);\n}\n.nav-sub .nav-sub-wrapper[data-v-99a59cfe] {\n padding: 31px 0;\n height: 90px;\n position: relative;\n}\n.nav-sub .nav-sub-wrapper.fixed[data-v-99a59cfe] {\n padding: 0;\n height: 100%;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n.nav-sub .nav-sub-wrapper[data-v-99a59cfe]:after {\n content: " ";\n position: absolute;\n top: 89px;\n left: 50%;\n margin-left: -610px;\n width: 1220px;\n background: #000;\n height: 1px;\n display: none;\n opacity: 0;\n transition: opacity .3s ease-in;\n}\n.nav-sub .w[data-v-99a59cfe] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n}\n.nav-sub .nav-list2[data-v-99a59cfe] {\n height: 28px;\n line-height: 28px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n height: 100%;\n}\n.nav-sub .nav-list2 li[data-v-99a59cfe]:first-child {\n padding-left: 0;\n}\n.nav-sub .nav-list2 li:first-child a[data-v-99a59cfe] {\n padding-left: 10px;\n}\n.nav-sub .nav-list2 li[data-v-99a59cfe] {\n position: relative;\n float: left;\n padding-left: 2px;\n}\n.nav-sub .nav-list2 li a[data-v-99a59cfe] {\n display: block;\n padding: 0 10px;\n color: #666;\n}\n.nav-sub .nav-list2 li a.active[data-v-99a59cfe] {\n font-weight: bold;\n}\n.nav-sub .nav-list2 li a[data-v-99a59cfe]:hover {\n color: #5683EA;\n}\n.nav-sub .nav-list2 li[data-v-99a59cfe]:before {\n content: \' \';\n position: absolute;\n left: 0;\n top: 13px;\n width: 2px;\n height: 2px;\n background: #bdbdbd;\n}\n@media (min-width: 1px) {\n.nav-sub .nav-sub-wrapper[data-v-99a59cfe]:after {\n display: block;\n}\n}\n.cart-con[data-v-99a59cfe] {\n /*display: flex;*/\n text-align: center;\n position: relative;\n}\n.cart-con p[data-v-99a59cfe] {\n padding-top: 185px;\n color: #333333;\n font-size: 16px;\n}\n.cart-con[data-v-99a59cfe]:before {\n position: absolute;\n content: \' \';\n left: 50%;\n -webkit-transform: translate(-50%, -70%);\n transform: translate(-50%, -70%);\n top: 50%;\n width: 76px;\n height: 62px;\n background: url("/static/images/cart-empty-new.png") no-repeat;\n background-size: cover;\n}\n'],sourceRoot:""}])},227:function(e,o,t){var A=t(225);"string"==typeof A&&(A=[[e.i,A,""]]),A.locals&&(e.exports=A.locals);t(164)("ed6c7b3e",A,!0)},228:function(e,o,t){var A=t(226);"string"==typeof A&&(A=[[e.i,A,""]]),A.locals&&(e.exports=A.locals);t(164)("47522583",A,!0)},229:function(e,o,t){function A(e){t(228)}var l=t(96)(t(211),t(230),A,"data-v-99a59cfe",null);e.exports=l.exports},230:function(e,o){e.exports={render:function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("div",{staticClass:"header-box"},[t("div",[t("header",{staticClass:"w"},[t("div",{staticClass:"w-box"},[t("div",{staticClass:"nav-logo"},[t("h1",{on:{click:function(o){e.changePage(1)}}},[t("router-link",{attrs:{to:"/",title:"YMall商城官网"}},[e._v("YMall商城")])],1)]),e._v(" "),t("div",{staticClass:"right-box"},[t("div",{staticClass:"nav-list"},[t("el-autocomplete",{attrs:{placeholder:"请输入商品信息",icon:"search",minlength:"1",maxlength:"100","fetch-suggestions":e.querySearchAsync,"on-icon-click":e.handleIconClick},on:{select:e.handleSelect},model:{value:e.input,callback:function(o){e.input=o},expression:"input"}}),e._v(" "),t("router-link",{attrs:{to:"/goods"}},[t("a",{on:{click:function(o){e.changePage(2)}}},[e._v("全部商品")])]),e._v(" "),t("router-link",{attrs:{to:"/thanks"}},[t("a",{on:{click:function(o){e.changePage(3)}}},[e._v("捐赠")])])],1),e._v(" "),t("div",{ref:"aside",staticClass:"nav-aside",class:{fixed:e.st}},[t("div",{staticClass:"user pr"},[t("router-link",{attrs:{to:"/user"}},[e._v("个人中心")]),e._v(" "),e.login?t("div",{staticClass:"nav-user-wrapper pa"},[t("div",{staticClass:"nav-user-list"},[t("ul",[t("li",{staticClass:"nav-user-avatar"},[t("div",[t("span",{staticClass:"avatar",style:{backgroundImage:"url("+e.userInfo.info.file+")"}})]),e._v(" "),t("p",{staticClass:"name"},[e._v(e._s(e.userInfo.info.username))])]),e._v(" "),t("li",[t("router-link",{attrs:{to:"/user/orderList"}},[e._v("我的订单")])],1),e._v(" "),t("li",[t("router-link",{attrs:{to:"/user/information"}},[e._v("账号资料")])],1),e._v(" "),t("li",[t("router-link",{attrs:{to:"/user/addressList"}},[e._v("收货地址")])],1),e._v(" "),t("li",[t("router-link",{attrs:{to:"/user/support"}},[e._v("售后服务")])],1),e._v(" "),t("li",[t("router-link",{attrs:{to:"/user/coupon"}},[e._v("我的优惠")])],1),e._v(" "),t("li",[t("a",{attrs:{href:"javascript:;"},on:{click:e._loginOut}},[e._v("退出")])])])])]):e._e()],1),e._v(" "),t("div",{ref:"positionMsg",staticClass:"shop pr",on:{mouseover:function(o){e.cartShowState(!0)},mouseout:function(o){e.cartShowState(!1)}}},[t("router-link",{attrs:{to:"/cart"}}),e._v(" "),t("span",{staticClass:"cart-num"},[t("i",{staticClass:"num",class:{no:e.totalNum<=0,move_in_cart:e.receiveInCart}},[e._v(e._s(e.totalNum))])]),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:e.showCart,expression:"showCart"}],staticClass:"nav-user-wrapper pa active"},[t("div",{staticClass:"nav-user-list"},[t("div",{directives:[{name:"show",rawName:"v-show",value:e.totalNum,expression:"totalNum"}],staticClass:"full"},[t("div",{staticClass:"nav-cart-items"},[t("ul",e._l(e.cartList,function(o,A){return t("li",{key:A,staticClass:"clearfix"},[t("div",{staticClass:"cart-item"},[t("div",{staticClass:"cart-item-inner"},[t("router-link",{attrs:{to:"goodsDetails?productId="+o.productId}},[t("div",{staticClass:"item-thumb"},[t("img",{attrs:{src:o.productImg}})]),e._v(" "),t("div",{staticClass:"item-desc"},[t("div",{staticClass:"cart-cell"},[t("h4",[t("a",{attrs:{href:""},domProps:{textContent:e._s(o.productName)}})]),e._v(" "),t("h6",[t("span",{staticClass:"price-icon"},[e._v("¥")]),t("span",{staticClass:"price-num"},[e._v(e._s(o.salePrice))]),t("span",{staticClass:"item-num"},[e._v("x "+e._s(o.productNum))])])])])]),e._v(" "),t("div",{staticClass:"del-btn del",on:{click:function(t){e.delGoods(o.productId)}}},[e._v("删除")])],1)])])}))]),e._v(" "),t("div",{staticClass:"nav-cart-total"},[t("p",[e._v("共 "),t("strong",[e._v(e._s(e.totalNum))]),e._v(" 件商品")]),e._v(" "),t("h5",[e._v("合计:"),t("span",{staticClass:"price-icon"},[e._v("¥")]),t("span",{staticClass:"price-num"},[e._v(e._s(e.totalPrice))])]),e._v(" "),t("h6",[t("y-button",{staticStyle:{height:"40px",width:"100%",margin:"0",color:"#fff","font-size":"14px","line-height":"38px"},attrs:{classStyle:"main-btn",text:"去购物车"},on:{btnClick:e.toCart}})],1)])]),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:!e.totalNum,expression:"!totalNum"}],staticClass:"cart-con",staticStyle:{height:"313px","text-align":"center"}},[t("p",[e._v("您的购物车竟然是空的!")])])])])],1)])])])]),e._v(" "),e._t("nav",[t("div",{staticClass:"nav-sub",class:{fixed:e.st}},[t("div",{staticClass:"nav-sub-bg"}),e._v(" "),t("div",{staticClass:"nav-sub-wrapper",class:{fixed:e.st}},[t("div",{staticClass:"w"},[t("ul",{staticClass:"nav-list2"},[t("li",[t("router-link",{attrs:{to:"/"}},[t("a",{class:{active:1===e.choosePage},on:{click:function(o){e.changePage(1)}}},[e._v("首页")])])],1),e._v(" "),t("li",[t("router-link",{attrs:{to:"/goods"}},[t("a",{class:{active:2===e.choosePage},on:{click:function(o){e.changePage(2)}}},[e._v("全部商品")])])],1),e._v(" "),t("li",[t("router-link",{attrs:{to:"/thanks"}},[t("a",{class:{active:3===e.choosePage},on:{click:function(o){e.changePage(3)}}},[e._v("捐赠名单")])])],1),e._v(" "),e._m(0),e._v(" "),e._m(1),e._v(" "),e._m(2)]),e._v(" "),t("div")])])])])],2)])},staticRenderFns:[function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("li",[t("a",{attrs:{href:"http://xmadmin.yuu.cn",target:"_blank"}},[e._v("后台管理系统")])])},function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("li",[t("a",{attrs:{href:"http://xpay.yuu.cn",target:"_blank"}},[e._v("XPay支付系统")])])},function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("li",[t("a",{attrs:{href:"https://github.com/yuu/YMall",target:"_blank"}},[e._v("Github")])])}]}},280:function(e,o,t){"use strict";Object.defineProperty(o,"__esModule",{value:!0});var A=t(99),l=t.n(A),i=t(229),r=t.n(i),a=t(209),n=t.n(a),s=t(100);t.n(s);o.default={data:function(){return{}},computed:l()({},t.i(s.mapState)(["cartPositionT","cartPositionL","showMoveImg","elLeft","elTop","moveImgUrl"])),methods:l()({},t.i(s.mapMutations)(["ADD_ANIMATION"]),{listenInCart:function(){this.ADD_ANIMATION({moveShow:!1,receiveInCart:!0})},beforeEnter:function(e){var o=e.style,t=e.children[0],A=t.style;o.transform="translate3d(0,"+(this.elTop-this.cartPositionT)+"px,0)",A.transform="translate3d("+-(this.cartPositionL-this.elLeft)+"px,0,0) scale(1.2)"},afterEnter:function(e){var o=this,t=e.style,A=e.children[0],l=A.style;t.transform="translate3d(0,0,0)",l.transform="translate3d(0,0,0) scale(.2)",t.transition="transform .55s cubic-bezier(.29,.55,.51,1.08)",l.transition="transform .55s linear",A.addEventListener("transitionend",function(){o.listenInCart()}),A.addEventListener("webkitAnimationEnd",function(){o.listenInCart()})}}),components:{YHeader:r.a,YFooter:n.a}}},309:function(e,o,t){o=e.exports=t(163)(!0),o.push([e.i,".main[data-v-90aa0c9c]{min-height:calc(100vh - 454px);background:#ededed;overflow:hidden;width:100%}.bn[data-v-90aa0c9c],.move_img div[data-v-90aa0c9c],.move_img img[data-v-90aa0c9c]{border-style:none;border-width:0;border:none}.move_img[data-v-90aa0c9c]{position:fixed;width:40px;height:40px;width:45px;z-index:29;height:45px}.move_img img[data-v-90aa0c9c]{border-radius:50%;width:100%;height:100%;display:block}","",{version:3,sources:["D:/桌面/YMall-front/src/page/index.vue"],names:[],mappings:"AACA,uBACE,+BAAgC,AAChC,mBAAoB,AACpB,gBAAiB,AACjB,UAAY,CACb,AACD,mFACE,kBAAmB,AACnB,eAAgB,AAChB,WAAa,CACd,AACD,2BACE,eAAgB,AAChB,WAAY,AACZ,YAAa,AACb,WAAY,AACZ,WAAY,AACZ,WAAa,CACd,AACD,+BACI,kBAAmB,AACnB,WAAY,AACZ,YAAa,AACb,aAAe,CAClB",file:"index.vue",sourcesContent:["\n.main[data-v-90aa0c9c] {\n min-height: calc(100vh - 454px);\n background: #ededed;\n overflow: hidden;\n width: 100%;\n}\n.bn[data-v-90aa0c9c], .move_img div[data-v-90aa0c9c], .move_img img[data-v-90aa0c9c] {\n border-style: none;\n border-width: 0;\n border: none;\n}\n.move_img[data-v-90aa0c9c] {\n position: fixed;\n width: 40px;\n height: 40px;\n width: 45px;\n z-index: 29;\n height: 45px;\n}\n.move_img img[data-v-90aa0c9c] {\n border-radius: 50%;\n width: 100%;\n height: 100%;\n display: block;\n}\n"],sourceRoot:""}])},334:function(e,o,t){var A=t(309);"string"==typeof A&&(A=[[e.i,A,""]]),A.locals&&(e.exports=A.locals);t(164)("4119ceae",A,!0)},362:function(e,o){e.exports={render:function(){var e=this,o=e.$createElement,t=e._self._c||o;return t("div",[t("y-header"),e._v(" "),t("router-view",{staticClass:"main"}),e._v(" "),t("y-footer"),e._v(" "),t("transition",{on:{"after-enter":e.afterEnter,"before-enter":e.beforeEnter}},[e.showMoveImg?t("div",{staticClass:"move_img",style:{left:e.cartPositionL-10+"px",top:e.cartPositionT-10+"px"}},[t("div",[t("img",{attrs:{src:e.moveImgUrl}})])]):e._e()])],1)},staticRenderFns:[]}}}); //# sourceMappingURL=3.c565d4ee71bdb3ac0105.js.map ================================================ FILE: ymall-web-ui/static/js/7.0814cc986a8375eb2381.js ================================================ webpackJsonp([7],{171:function(t,e,n){function i(t){n(325)}var A=n(96)(n(260),n(353),i,"data-v-50608b62",null);t.exports=A.exports},192:function(t,e,n){function i(t){n(195)}var A=n(96)(n(193),n(196),i,"data-v-b42a215c",null);t.exports=A.exports},193:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={props:{text:{type:[String,Number],default:"一颗小按钮"},inputType:{type:[String],default:"button"},classStyle:{type:String,default:"default-btn"}},methods:{btnClick:function(t){this.$emit("btnClick",t)}}}},194:function(t,e,n){e=t.exports=n(163)(!0),e.push([t.i,".default-btn[data-v-b42a215c],.disabled-btn[data-v-b42a215c],.main-btn[data-v-b42a215c]{width:100px;height:30px;line-height:28px;vertical-align:middle}input[data-v-b42a215c]{display:inline-block;cursor:pointer;text-align:center}.gray-btn[data-v-b42a215c]{border:1px solid #d5d5d5;color:#646464}.default-btn[data-v-b42a215c]{border:1px solid #e1e1e1;border-radius:4px;font-size:12px;color:#646464;background-color:#f9f9f9;background-image:linear-gradient(180deg,#fff,#f9f9f9)}.default-btn[data-v-b42a215c]:hover{background-color:#eee;background-image:linear-gradient(180deg,#f5f5f5,#eee)}.main-btn[data-v-b42a215c]{border:1px solid #5c81e3;border-radius:4px;font-size:12px;color:#fff;background-color:#678ee7;background-image:linear-gradient(180deg,#678ee7,#5078df)}.main-btn[data-v-b42a215c]:hover{background-color:#6c8cd4;background-image:linear-gradient(180deg,#6c8cd4,#4769c2)}.disabled-btn[data-v-b42a215c]{cursor:not-allowed;border:1px solid #afafaf;border-radius:4px;font-size:12px;color:#fff;background-color:#a9a9a9;background-image:linear-gradient(180deg,#b8b8b8,#a9a9a9)}","",{version:3,sources:["D:/桌面/YMall-front/src/components/YButton.vue"],names:[],mappings:"AAEA,wFACE,YAAa,AACb,YAAa,AACb,iBAAkB,AAClB,qBAAuB,CACxB,AACD,uBACE,qBAAsB,AACtB,eAAgB,AAChB,iBAAmB,CAOpB,AAGD,2BACE,yBAA0B,AAC1B,aAAe,CAChB,AACD,8BACE,yBAA0B,AAC1B,kBAAmB,AACnB,eAAgB,AAChB,cAAe,AACf,yBAA0B,AAC1B,qDAAyD,CAC1D,AACD,oCACI,sBAAuB,AACvB,qDAAyD,CAC5D,AACD,2BACE,yBAA0B,AAC1B,kBAAmB,AACnB,eAAgB,AAChB,WAAY,AACZ,yBAA0B,AAC1B,wDAA4D,CAC7D,AACD,iCACI,yBAA0B,AAC1B,wDAA4D,CAC/D,AACD,+BACE,mBAAoB,AACpB,yBAA0B,AAC1B,kBAAmB,AACnB,eAAgB,AAChB,WAAY,AACZ,yBAA0B,AAC1B,wDAA4D,CAC7D",file:"YButton.vue",sourcesContent:['\n@charset "UTF-8";\n.default-btn[data-v-b42a215c], .main-btn[data-v-b42a215c], .disabled-btn[data-v-b42a215c] {\n width: 100px;\n height: 30px;\n line-height: 28px;\n vertical-align: middle;\n}\ninput[data-v-b42a215c] {\n display: inline-block;\n cursor: pointer;\n text-align: center;\n /*> span {*/\n /*user-select: none;*/\n /*display: inline-block;*/\n /*width: 100%;*/\n /*height: 100%;*/\n /*}*/\n}\n\n/*灰色的按钮*/\n.gray-btn[data-v-b42a215c] {\n border: 1px solid #d5d5d5;\n color: #646464;\n}\n.default-btn[data-v-b42a215c] {\n border: 1px solid #e1e1e1;\n border-radius: 4px;\n font-size: 12px;\n color: #646464;\n background-color: #f9f9f9;\n background-image: linear-gradient(180deg, #fff, #f9f9f9);\n}\n.default-btn[data-v-b42a215c]:hover {\n background-color: #eee;\n background-image: linear-gradient(180deg, #f5f5f5, #eee);\n}\n.main-btn[data-v-b42a215c] {\n border: 1px solid #5c81e3;\n border-radius: 4px;\n font-size: 12px;\n color: #fff;\n background-color: #678ee7;\n background-image: linear-gradient(180deg, #678ee7, #5078df);\n}\n.main-btn[data-v-b42a215c]:hover {\n background-color: #6c8cd4;\n background-image: linear-gradient(180deg, #6c8cd4, #4769c2);\n}\n.disabled-btn[data-v-b42a215c] {\n cursor: not-allowed;\n border: 1px solid #afafaf;\n border-radius: 4px;\n font-size: 12px;\n color: #fff;\n background-color: #a9a9a9;\n background-image: linear-gradient(180deg, #b8b8b8, #a9a9a9);\n}\n'],sourceRoot:""}])},195:function(t,e,n){var i=n(194);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);n(164)("1a40afec",i,!0)},196:function(t,e){t.exports={render:function(){var t=this,e=t.$createElement;return(t._self._c||e)("input",{class:t.classStyle,attrs:{type:t.inputType,readonly:"",disabled:"disabled-btn"===t.classStyle},domProps:{value:t.text},on:{click:function(e){t.btnClick(e)}}})},staticRenderFns:[]}},197:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={props:["title"]}},198:function(t,e,n){e=t.exports=n(163)(!0),e.push([t.i,".gray-box[data-v-527a1e5e]{position:relative;margin-bottom:30px;overflow:hidden;background:#fff;border-radius:8px;border:1px solid #dcdcdc;border-color:rgba(0,0,0,.14);box-shadow:0 3px 8px -6px rgba(0,0,0,.1)}.gray-box .title[data-v-527a1e5e]{padding-left:30px;position:relative;z-index:10;height:60px;padding:0 10px 0 24px;border-bottom:1px solid #d4d4d4;border-radius:8px 8px 0 0;box-shadow:0 1px 7px rgba(0,0,0,.06);background:#f3f3f3;background:linear-gradient(#fbfbfb,#ececec);line-height:60px;font-size:18px;color:#333;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.gray-box .title h2[data-v-527a1e5e]{font-size:18px;font-weight:400;color:#626262;display:inline-block}","",{version:3,sources:["D:/桌面/YMall-front/src/components/shelf.vue"],names:[],mappings:"AACA,2BACE,kBAAmB,AACnB,mBAAoB,AACpB,gBAAiB,AACjB,gBAAiB,AACjB,kBAAmB,AACnB,yBAA0B,AAC1B,6BAAkC,AAClC,wCAA8C,CAC/C,AACD,kCACI,kBAAmB,AACnB,kBAAmB,AACnB,WAAY,AACZ,YAAa,AACb,sBAAuB,AACvB,gCAAiC,AACjC,0BAA2B,AAC3B,qCAA0C,AAC1C,mBAAoB,AACpB,4CAA8C,AAC9C,iBAAkB,AAClB,eAAgB,AAChB,WAAY,AACZ,oBAAqB,AACrB,oBAAqB,AACrB,aAAc,AACd,yBAA0B,AACtB,sBAAuB,AACnB,8BAA+B,AACvC,yBAA0B,AACtB,sBAAuB,AACnB,kBAAoB,CAC/B,AACD,qCACM,eAAgB,AAChB,gBAAiB,AACjB,cAAe,AACf,oBAAsB,CAC3B",file:"shelf.vue",sourcesContent:["\n.gray-box[data-v-527a1e5e] {\n position: relative;\n margin-bottom: 30px;\n overflow: hidden;\n background: #fff;\n border-radius: 8px;\n border: 1px solid #dcdcdc;\n border-color: rgba(0, 0, 0, 0.14);\n box-shadow: 0 3px 8px -6px rgba(0, 0, 0, 0.1);\n}\n.gray-box .title[data-v-527a1e5e] {\n padding-left: 30px;\n position: relative;\n z-index: 10;\n height: 60px;\n padding: 0 10px 0 24px;\n border-bottom: 1px solid #d4d4d4;\n border-radius: 8px 8px 0 0;\n box-shadow: rgba(0, 0, 0, 0.06) 0 1px 7px;\n background: #f3f3f3;\n background: linear-gradient(#fbfbfb, #ececec);\n line-height: 60px;\n font-size: 18px;\n color: #333;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n.gray-box .title h2[data-v-527a1e5e] {\n font-size: 18px;\n font-weight: 400;\n color: #626262;\n display: inline-block;\n}\n"],sourceRoot:""}])},199:function(t,e,n){var i=n(198);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);n(164)("4a53b068",i,!0)},200:function(t,e,n){function i(t){n(199)}var A=n(96)(n(197),n(201),i,"data-v-527a1e5e",null);t.exports=A.exports},201:function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"gray-box"},[n("div",{staticClass:"title"},[n("h2",[t._v(t._s(t.title))]),t._v(" "),n("div",[t._t("right")],2)]),t._v(" "),n("div",[t._t("content")],2)])},staticRenderFns:[]}},202:function(t,e,n){"use strict";n.d(e,"s",function(){return A}),n.d(e,"e",function(){return a}),n.d(e,"g",function(){return o}),n.d(e,"r",function(){return r}),n.d(e,"q",function(){return s}),n.d(e,"f",function(){return d}),n.d(e,"i",function(){return l}),n.d(e,"j",function(){return c}),n.d(e,"k",function(){return p}),n.d(e,"l",function(){return C}),n.d(e,"m",function(){return b}),n.d(e,"h",function(){return f}),n.d(e,"o",function(){return B}),n.d(e,"a",function(){return g}),n.d(e,"b",function(){return x}),n.d(e,"n",function(){return m}),n.d(e,"p",function(){return u}),n.d(e,"c",function(){return h}),n.d(e,"d",function(){return v});var i=n(98),A=function(t){return i.a.fetchGet("/goods/allGoods",t)},a=function(t){return i.a.fetchPost("/member/cartList",t)},o=function(t){return i.a.fetchPost("/member/addCart",t)},r=function(t){return i.a.fetchPost("/member/cartEdit",t)},s=function(t){return i.a.fetchPost("/member/editCheckAll",t)},d=function(t){return i.a.fetchPost("/member/cartDel",t)},l=function(t){return i.a.fetchPost("/member/addressList",t)},c=function(t){return i.a.fetchPost("/member/updateAddress",t)},p=function(t){return i.a.fetchPost("/member/addAddress",t)},C=function(t){return i.a.fetchPost("/member/delAddress",t)},b=function(t){return i.a.fetchPost("/member/addOrder",t)},f=function(t){return i.a.fetchPost("/member/payOrder",t)},B=function(t){return i.a.fetchGet("/member/orderList",t)},g=function(t){return i.a.fetchGet("/member/orderDetail",t)},x=function(t){return i.a.fetchPost("/member/cancelOrder",t)},m=function(t){return i.a.fetchGet("/goods/productDet",t)},u=function(t){return i.a.fetchGet("/member/delOrder",t)},h=function(t){return i.a.fetchGet("/goods/search",t)},v=function(t){return i.a.fetchQuickSearch("http://127.0.0.1:9200/item/itemList/_search?q=productName: "+t)}},231:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(99),A=n.n(i),a=n(192),o=n.n(a),r=n(202),s=n(100),d=(n.n(s),n(23));e.default={props:{msg:{}},data:function(){return{}},methods:A()({},n.i(s.mapMutations)(["ADD_CART","ADD_ANIMATION","SHOW_CART"]),{goodsDetails:function(t){this.$router.push({path:"goodsDetails/productId="+t})},addCart:function(t,e,i,A){var a=this;if(!this.showMoveImg){this.login?n.i(r.g)({userId:n.i(d.a)("userId"),productId:t,productNum:1}).then(function(n){a.ADD_CART({productId:t,salePrice:e,productName:i,productImg:A})}):this.ADD_CART({productId:t,salePrice:e,productName:i,productImg:A});var o=event.target,s=o.getBoundingClientRect().left+o.offsetWidth/2,l=o.getBoundingClientRect().top+o.offsetHeight/2;this.ADD_ANIMATION({moveShow:!0,elLeft:s,elTop:l,img:A}),this.showCart||this.SHOW_CART({showCart:!0})}}}),computed:A()({},n.i(s.mapState)(["login","showMoveImg","showCart"])),mounted:function(){},components:{YButton:o.a}}},232:function(t,e,n){e=t.exports=n(163)(!0),e.push([t.i,".good-item .ds[data-v-0a1044c9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.good-item[data-v-0a1044c9]{background:#fff;width:25%;transition:all .5s;height:430px}.good-item[data-v-0a1044c9]:hover{-webkit-transform:translateY(-3px);transform:translateY(-3px);box-shadow:1px 1px 20px #999}.good-item:hover .good-price p[data-v-0a1044c9]{display:none}.good-item:hover .ds[data-v-0a1044c9]{display:-webkit-box;display:-ms-flexbox;display:flex}.good-item .ds[data-v-0a1044c9]{width:100%;display:none}.good-item .good-img img[data-v-0a1044c9]{margin:50px auto 10px;width:206px;height:206px;display:block}.good-item .good-price[data-v-0a1044c9]{margin:15px 0;height:30px;text-align:center;line-height:30px;color:#e4393c;font-size:20px}.good-item .good-title[data-v-0a1044c9]{line-height:1.2;font-size:16px;color:#424242;margin:0 auto;padding:0 14px;text-align:center;overflow:hidden}.good-item h3[data-v-0a1044c9]{text-align:center;line-height:1.2;font-size:12px;color:#d0d0d0;padding:10px}","",{version:3,sources:["D:/桌面/YMall-front/src/components/mallGoods.vue"],names:[],mappings:"AACA,gCACE,oBAAqB,AACrB,oBAAqB,AACrB,aAAc,AACd,yBAA0B,AACtB,sBAAuB,AACnB,mBAAoB,AAC5B,wBAAyB,AACrB,qBAAsB,AAClB,sBAAwB,CACjC,AACD,4BACE,gBAAiB,AACjB,UAAW,AACX,mBAAoB,AACpB,YAAc,CACf,AACD,kCACI,mCAAoC,AAC5B,2BAA4B,AACpC,4BAA8B,CACjC,AACD,gDACM,YAAc,CACnB,AACD,sCACM,oBAAqB,AACrB,oBAAqB,AACrB,YAAc,CACnB,AACD,gCACI,WAAY,AACZ,YAAc,CACjB,AACD,0CACI,sBAAuB,AACvB,YAAa,AACb,aAAc,AACd,aAAe,CAClB,AACD,wCACI,cAAe,AACf,YAAa,AACb,kBAAmB,AACnB,iBAAkB,AAClB,cAAe,AACf,cAAgB,CACnB,AACD,wCACI,gBAAiB,AACjB,eAAgB,AAChB,cAAe,AACf,cAAe,AACf,eAAgB,AAChB,kBAAmB,AACnB,eAAiB,CACpB,AACD,+BACI,kBAAmB,AACnB,gBAAiB,AACjB,eAAgB,AAChB,cAAe,AACf,YAAc,CACjB",file:"mallGoods.vue",sourcesContent:["\n.good-item .ds[data-v-0a1044c9] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.good-item[data-v-0a1044c9] {\n background: #fff;\n width: 25%;\n transition: all .5s;\n height: 430px;\n}\n.good-item[data-v-0a1044c9]:hover {\n -webkit-transform: translateY(-3px);\n transform: translateY(-3px);\n box-shadow: 1px 1px 20px #999;\n}\n.good-item:hover .good-price p[data-v-0a1044c9] {\n display: none;\n}\n.good-item:hover .ds[data-v-0a1044c9] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n}\n.good-item .ds[data-v-0a1044c9] {\n width: 100%;\n display: none;\n}\n.good-item .good-img img[data-v-0a1044c9] {\n margin: 50px auto 10px;\n width: 206px;\n height: 206px;\n display: block;\n}\n.good-item .good-price[data-v-0a1044c9] {\n margin: 15px 0;\n height: 30px;\n text-align: center;\n line-height: 30px;\n color: #e4393c;\n font-size: 20px;\n}\n.good-item .good-title[data-v-0a1044c9] {\n line-height: 1.2;\n font-size: 16px;\n color: #424242;\n margin: 0 auto;\n padding: 0 14px;\n text-align: center;\n overflow: hidden;\n}\n.good-item h3[data-v-0a1044c9] {\n text-align: center;\n line-height: 1.2;\n font-size: 12px;\n color: #d0d0d0;\n padding: 10px;\n}\n"],sourceRoot:""}])},233:function(t,e,n){var i=n(232);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);n(164)("756f94eb",i,!0)},234:function(t,e,n){function i(t){n(233)}var A=n(96)(n(231),n(235),i,"data-v-0a1044c9",null);t.exports=A.exports},235:function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"good-item"},[n("div",{},[n("div",{staticClass:"good-img"},[n("router-link",{attrs:{to:"goodsDetails?productId="+t.msg.productId}},[n("img",{directives:[{name:"lazy",rawName:"v-lazy",value:t.msg.productImageBig,expression:"msg.productImageBig"}],attrs:{alt:t.msg.productName}})])],1),t._v(" "),n("h6",{staticClass:"good-title",domProps:{innerHTML:t._s(t.msg.productName)}},[t._v(t._s(t.msg.productName))]),t._v(" "),n("h3",{staticClass:"sub-title ellipsis"},[t._v(t._s(t.msg.sub_title))]),t._v(" "),n("div",{staticClass:"good-price pr"},[n("div",{staticClass:"ds pa"},[n("router-link",{attrs:{to:"goodsDetails?productId="+t.msg.productId}},[n("y-button",{staticStyle:{margin:"0 5px"},attrs:{text:"查看详情"}})],1),t._v(" "),n("y-button",{staticStyle:{margin:"0 5px"},attrs:{text:"加入购物车",classStyle:"main-btn"},on:{btnClick:function(e){t.addCart(t.msg.productId,t.msg.salePrice,t.msg.productName,t.msg.productImageBig)}}})],1),t._v(" "),n("p",[n("span",{staticStyle:{"font-size":"16px"}},[t._v("¥")]),t._v("\n "+t._s(t.msg.salePrice))])])])])},staticRenderFns:[]}},238:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={props:["product"]}},239:function(t,e,n){e=t.exports=n(163)(!0),e.push([t.i,".item .img-box[data-v-05612554]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.item[data-v-05612554]{position:relative;height:429px;text-align:center}.item img[data-v-05612554]{display:block;width:206px;height:206px}.item .info[data-v-05612554]{width:100%;padding:0 10px}.item .info h6[data-v-05612554]{font-size:16px;color:#424242}.item .info h6[data-v-05612554],.item .info p[data-v-05612554]{overflow:hidden;line-height:1.2;white-space:nowrap;text-overflow:ellipsis}.item .info p[data-v-05612554]{padding-top:7px;font-size:12px;color:#b2b2b2}","",{version:3,sources:["D:/桌面/YMall-front/src/components/product.vue"],names:[],mappings:"AACA,gCACE,oBAAqB,AACrB,oBAAqB,AACrB,aAAc,AACd,yBAA0B,AACtB,sBAAuB,AACnB,mBAAoB,AAC5B,wBAAyB,AACrB,qBAAsB,AAClB,sBAAwB,CACjC,AACD,uBACE,kBAAmB,AACnB,aAAc,AACd,iBAAmB,CACpB,AACD,2BACI,cAAe,AACf,YAAa,AACb,YAAc,CACjB,AACD,6BACI,WAAY,AACZ,cAAgB,CACnB,AACD,gCAEM,eAAgB,AAIhB,aAAe,CACpB,AACD,+DAPM,gBAAiB,AAEjB,gBAAiB,AACjB,mBAAoB,AACpB,sBAAwB,CAW7B,AARD,+BAEM,gBAAiB,AACjB,eAAgB,AAIhB,aAAe,CACpB",file:"product.vue",sourcesContent:["\n.item .img-box[data-v-05612554] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.item[data-v-05612554] {\n position: relative;\n height: 429px;\n text-align: center;\n}\n.item img[data-v-05612554] {\n display: block;\n width: 206px;\n height: 206px;\n}\n.item .info[data-v-05612554] {\n width: 100%;\n padding: 0 10px;\n}\n.item .info h6[data-v-05612554] {\n overflow: hidden;\n font-size: 16px;\n line-height: 1.2;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: #424242;\n}\n.item .info p[data-v-05612554] {\n overflow: hidden;\n padding-top: 7px;\n font-size: 12px;\n line-height: 1.2;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: #b2b2b2;\n}\n"],sourceRoot:""}])},242:function(t,e,n){var i=n(239);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);n(164)("3c58e94c",i,!0)},248:function(t,e,n){function i(t){n(242)}var A=n(96)(n(238),n(249),i,"data-v-05612554",null);t.exports=A.exports},249:function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"item",attrs:{id:"product.spu.id"}},[n("div",{staticClass:"img-box"},[n("img",{attrs:{src:t.product.spu.sku_info[0].ali_image,alt:""}})]),t._v(" "),n("div",{staticClass:"info"},[n("h6",{staticClass:"ellipsis"},[t._v(t._s(t.product.spu.sku_info[0].title))]),t._v(" "),n("p",[t._v(t._s(t.product.spu.sku_info[0].sub_title))])]),t._v(" "),n("p",{staticClass:"price"},[n("i",[t._v("¥")]),t._v(" "),n("span",[t._v(t._s(t.product.spu.price))])]),t._v(" "),t._m(0)])},staticRenderFns:[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ul",{staticClass:"dot-list"},[n("li")])}]}},260:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(42),A=n(200),a=n.n(A),o=n(248),r=n.n(o),s=n(234),d=n.n(s),l=n(23);e.default={data:function(){return{banner:{},bgOpt:{px:0,py:0,w:0,h:0},floors:[],hot:[],loading:!0,notify:"1",dialogVisible:!1}},methods:{bgOver:function(t){this.bgOpt.px=t.offsetLeft,this.bgOpt.py=t.offsetTop,this.bgOpt.w=t.offsetWidth,this.bgOpt.h=t.offsetHeight},bgMove:function(t,e){var n=this.bgOpt,i=void 0,A=void 0,a=e.pageX-n.px,o=e.pageY-n.py;i=(n.w,a-n.w/2),A=(n.h,n.h/2-o),t.style["-webkit-transform"]="rotateY("+i/50+"deg) rotateX("+A/50+"deg)",t.style.transform="rotateY("+i/50+"deg) rotateX("+A/50+"deg)"},bgOut:function(t){t.style["-webkit-transform"]="rotateY(0deg) rotateX(0deg)",t.style.transform="rotateY(0deg) rotateX(0deg)"},showNotify:function(){var t=n.i(l.a)("notify");this.notify!==t&&(this.dialogVisible=!0,n.i(l.b)("notify",this.notify))}},mounted:function(){var t=this;n.i(i.b)().then(function(e){var n=e.result;t.floors=n.home_floors,t.hot=n.home_hot,t.loading=!1}),this.showNotify()},components:{YShelf:a.a,product:r.a,mallGoods:d.a}}},300:function(t,e,n){e=t.exports=n(163)(!0),e.push([t.i,'.home[data-v-50608b62]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.banner[data-v-50608b62],.banner div[data-v-50608b62],.banner span[data-v-50608b62]{font-family:Microsoft YaHei;transition:all .3s;-webkit-transition:all .3s;transition-timing-function:linear;-webkit-transition-timing-function:linear}.banner[data-v-50608b62]{-webkit-perspective:3000px;perspective:3000px;position:relative;z-index:19}.bg[data-v-50608b62]{position:relative;width:1220px;height:500px;margin:20px auto;background:url("http://static.smartisanos.cn/index/img/store/home/banner-3d-item-1-box-1_61bdc2f4f9.png") 50% no-repeat;background-size:100% 100%;border-radius:10px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform-origin:50% 50%;-webkit-transform:rotateY(0deg) rotateX(0deg)}.img[data-v-50608b62]{display:block;position:absolute;width:100%;height:100%;bottom:5px;left:0;background:url("http://static.smartisanos.cn/index/img/store/home/banner-3d-item-1-box-3_8fa7866d59.png") 50% no-repeat;background-size:95% 100%}.text[data-v-50608b62]{top:20%;font-size:30px}.copyright[data-v-50608b62],.text[data-v-50608b62]{position:absolute;right:10%;color:#fff;text-align:right;font-weight:lighter}.copyright[data-v-50608b62]{bottom:10%;font-size:10px}.a[data-v-50608b62]{-webkit-transform:translateZ(40px)}.b[data-v-50608b62]{-webkit-transform:translateZ(20px)}.c[data-v-50608b62]{-webkit-transform:translateZ(0)}.sk_item[data-v-50608b62]{width:170px;height:225px;padding:0 14px 0 15px}.sk_item>div[data-v-50608b62]{width:100%}.sk_item a[data-v-50608b62]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;transition:all .3s}.sk_item a[data-v-50608b62]:hover{-webkit-transform:translateY(-5px);transform:translateY(-5px)}.sk_item img[data-v-50608b62]{width:130px;height:130px;margin:17px 0}.sk_item .sk_item_name[data-v-50608b62]{color:#999;display:block;max-width:100%;_width:100%;overflow:hidden;font-size:12px;text-align:left;height:32px;line-height:16px;word-wrap:break-word;word-break:break-all}.sk_item .sk_item_price[data-v-50608b62]{padding:3px 0;height:25px}.sk_item .price_new[data-v-50608b62]{font-size:18px;font-weight:700;margin-right:8px;color:#f10214}.sk_item .price_origin[data-v-50608b62]{color:#999;font-size:12px}.box[data-v-50608b62]{overflow:hidden;position:relative;z-index:0;margin-top:29px;box-sizing:border-box;border:1px solid rgba(0,0,0,.14);border-radius:8px;background:#fff;box-shadow:0 3px 8px -6px rgba(0,0,0,.1)}ul.box[data-v-50608b62]{display:-webkit-box;display:-ms-flexbox;display:flex}ul.box li[data-v-50608b62]{-webkit-box-flex:1;-ms-flex:1;flex:1}ul.box li img[data-v-50608b62]{display:block;width:305px;height:200px}.mt30[data-v-50608b62]{margin-top:30px}.hot[data-v-50608b62]{display:-webkit-box;display:-ms-flexbox;display:flex}.hot>div[data-v-50608b62]{-webkit-box-flex:1;-ms-flex:1;flex:1;width:25%}.floors[data-v-50608b62]{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.floors .imgbanner[data-v-50608b62]{width:50%;height:430px}.floors img[data-v-50608b62]{display:block;width:100%;height:100%}',"",{version:3,sources:["D:/桌面/YMall-front/src/page/Home/home.vue"],names:[],mappings:"AACA,uBACE,oBAAqB,AACrB,oBAAqB,AACrB,aAAc,AACd,4BAA6B,AAC7B,6BAA8B,AAC1B,0BAA2B,AACvB,qBAAuB,CAChC,AACD,oFACE,4BAA+B,AAC/B,mBAAoB,AACpB,2BAA4B,AAC5B,kCAAmC,AACnC,yCAA2C,CAC5C,AACD,yBACE,2BAA4B,AACpB,mBAAoB,AAC5B,kBAAmB,AACnB,UAAY,CACb,AACD,qBACE,kBAAmB,AACnB,aAAc,AACd,aAAc,AACd,iBAAkB,AAClB,wHAA4H,AAC5H,0BAA2B,AAC3B,mBAAoB,AACpB,oCAAqC,AAC7B,4BAA6B,AACrC,iCAAkC,AAClC,6CAA+C,CAChD,AACD,sBACE,cAAe,AACf,kBAAmB,AACnB,WAAY,AACZ,YAAa,AACb,WAAY,AACZ,OAAQ,AACR,wHAA4H,AAC5H,wBAA0B,CAC3B,AACD,uBAEE,QAAS,AAET,cAAgB,CAIjB,AACD,mDARE,kBAAmB,AAEnB,UAAW,AAEX,WAAY,AACZ,iBAAkB,AAClB,mBAAqB,CAUtB,AARD,4BAEE,WAAY,AAEZ,cAAgB,CAIjB,AACD,oBACE,kCAAoC,CACrC,AACD,oBACE,kCAAoC,CACrC,AACD,oBACE,+BAAmC,CACpC,AACD,0BACE,YAAa,AACb,aAAc,AACd,qBAAuB,CACxB,AACD,8BACI,UAAY,CACf,AACD,4BACI,oBAAqB,AACrB,oBAAqB,AACrB,aAAc,AACd,4BAA6B,AAC7B,6BAA8B,AAC1B,0BAA2B,AACvB,sBAAuB,AAC/B,wBAAyB,AACrB,qBAAsB,AAClB,uBAAwB,AAChC,yBAA0B,AACtB,sBAAuB,AACnB,mBAAoB,AAC5B,kBAAoB,CACvB,AACD,kCACM,mCAAoC,AAC5B,0BAA4B,CACzC,AACD,8BACI,YAAa,AACb,aAAc,AACd,aAAe,CAClB,AACD,wCACI,WAAY,AACZ,cAAe,AACf,eAAgB,CAChB,WAAa,AACb,gBAAiB,AACjB,eAAgB,AAChB,gBAAiB,AACjB,YAAa,AACb,iBAAkB,AAClB,qBAAsB,AACtB,oBAAsB,CACzB,AACD,yCACI,cAAe,AACf,WAAa,CAChB,AACD,qCACI,eAAgB,AAChB,gBAAiB,AACjB,iBAAkB,AAClB,aAAe,CAClB,AACD,wCACI,WAAY,AACZ,cAAgB,CACnB,AACD,sBACE,gBAAiB,AACjB,kBAAmB,AACnB,UAAW,AACX,gBAAiB,AACjB,sBAAuB,AACvB,iCAAsC,AACtC,kBAAmB,AACnB,gBAAiB,AACjB,wCAA8C,CAC/C,AACD,wBACE,oBAAqB,AACrB,oBAAqB,AACrB,YAAc,CACf,AACD,2BACI,mBAAoB,AAChB,WAAY,AACR,MAAQ,CACnB,AACD,+BACM,cAAe,AACf,YAAa,AACb,YAAc,CACnB,AACD,uBACE,eAAiB,CAClB,AACD,sBACE,oBAAqB,AACrB,oBAAqB,AACrB,YAAc,CACf,AACD,0BACI,mBAAoB,AAChB,WAAY,AACR,OAAQ,AAChB,SAAW,CACd,AACD,yBACE,WAAY,AACZ,oBAAqB,AACrB,oBAAqB,AACrB,aAAc,AACd,mBAAoB,AAChB,eAAgB,AACpB,yBAA0B,AACtB,sBAAuB,AACnB,kBAAoB,CAC7B,AACD,oCACI,UAAW,AACX,YAAc,CACjB,AACD,6BACI,cAAe,AACf,WAAY,AACZ,WAAa,CAChB",file:"home.vue",sourcesContent:['\n.home[data-v-50608b62] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n.banner[data-v-50608b62], .banner span[data-v-50608b62], .banner div[data-v-50608b62] {\n font-family: "Microsoft YaHei";\n transition: all .3s;\n -webkit-transition: all .3s;\n transition-timing-function: linear;\n -webkit-transition-timing-function: linear;\n}\n.banner[data-v-50608b62] {\n -webkit-perspective: 3000px;\n perspective: 3000px;\n position: relative;\n z-index: 19;\n}\n.bg[data-v-50608b62] {\n position: relative;\n width: 1220px;\n height: 500px;\n margin: 20px auto;\n background: url("http://static.smartisanos.cn/index/img/store/home/banner-3d-item-1-box-1_61bdc2f4f9.png") center no-repeat;\n background-size: 100% 100%;\n border-radius: 10px;\n -webkit-transform-style: preserve-3d;\n transform-style: preserve-3d;\n -webkit-transform-origin: 50% 50%;\n -webkit-transform: rotateY(0deg) rotateX(0deg);\n}\n.img[data-v-50608b62] {\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n bottom: 5px;\n left: 0;\n background: url("http://static.smartisanos.cn/index/img/store/home/banner-3d-item-1-box-3_8fa7866d59.png") center no-repeat;\n background-size: 95% 100%;\n}\n.text[data-v-50608b62] {\n position: absolute;\n top: 20%;\n right: 10%;\n font-size: 30px;\n color: #fff;\n text-align: right;\n font-weight: lighter;\n}\n.copyright[data-v-50608b62] {\n position: absolute;\n bottom: 10%;\n right: 10%;\n font-size: 10px;\n color: #fff;\n text-align: right;\n font-weight: lighter;\n}\n.a[data-v-50608b62] {\n -webkit-transform: translateZ(40px);\n}\n.b[data-v-50608b62] {\n -webkit-transform: translateZ(20px);\n}\n.c[data-v-50608b62] {\n -webkit-transform: translateZ(0px);\n}\n.sk_item[data-v-50608b62] {\n width: 170px;\n height: 225px;\n padding: 0 14px 0 15px;\n}\n.sk_item > div[data-v-50608b62] {\n width: 100%;\n}\n.sk_item a[data-v-50608b62] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n transition: all .3s;\n}\n.sk_item a[data-v-50608b62]:hover {\n -webkit-transform: translateY(-5px);\n transform: translateY(-5px);\n}\n.sk_item img[data-v-50608b62] {\n width: 130px;\n height: 130px;\n margin: 17px 0;\n}\n.sk_item .sk_item_name[data-v-50608b62] {\n color: #999;\n display: block;\n max-width: 100%;\n _width: 100%;\n overflow: hidden;\n font-size: 12px;\n text-align: left;\n height: 32px;\n line-height: 16px;\n word-wrap: break-word;\n word-break: break-all;\n}\n.sk_item .sk_item_price[data-v-50608b62] {\n padding: 3px 0;\n height: 25px;\n}\n.sk_item .price_new[data-v-50608b62] {\n font-size: 18px;\n font-weight: 700;\n margin-right: 8px;\n color: #f10214;\n}\n.sk_item .price_origin[data-v-50608b62] {\n color: #999;\n font-size: 12px;\n}\n.box[data-v-50608b62] {\n overflow: hidden;\n position: relative;\n z-index: 0;\n margin-top: 29px;\n box-sizing: border-box;\n border: 1px solid rgba(0, 0, 0, 0.14);\n border-radius: 8px;\n background: #fff;\n box-shadow: 0 3px 8px -6px rgba(0, 0, 0, 0.1);\n}\nul.box[data-v-50608b62] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n}\nul.box li[data-v-50608b62] {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n}\nul.box li img[data-v-50608b62] {\n display: block;\n width: 305px;\n height: 200px;\n}\n.mt30[data-v-50608b62] {\n margin-top: 30px;\n}\n.hot[data-v-50608b62] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n}\n.hot > div[data-v-50608b62] {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n width: 25%;\n}\n.floors[data-v-50608b62] {\n width: 100%;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n.floors .imgbanner[data-v-50608b62] {\n width: 50%;\n height: 430px;\n}\n.floors img[data-v-50608b62] {\n display: block;\n width: 100%;\n height: 100%;\n}\n'],sourceRoot:""}])},325:function(t,e,n){var i=n(300);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);n(164)("ce60f2c2",i,!0)},353:function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"home"},[n("div",{staticClass:"banner"},[n("a",{attrs:{href:"https://github.com/yuu/YMall"}},[n("div",{ref:"bg",staticClass:"bg",on:{mouseover:function(e){t.bgOver(t.$refs.bg)},mousemove:function(e){t.bgMove(t.$refs.bg,e)},mouseout:function(e){t.bgOut(t.$refs.bg)}}},[n("span",{staticClass:"img a"}),t._v(" "),t._m(0),t._v(" "),n("span",{staticClass:"copyright c"},[t._v("code by qingjin.me | picture from t.tt")])])])]),t._v(" "),n("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],attrs:{"element-loading-text":"加载中..."}},[n("section",{staticClass:"w mt30 clearfix"},[n("y-shelf",{attrs:{title:"热门商品"}},[n("div",{staticClass:"hot",slot:"content"},t._l(t.hot,function(t,e){return n("mall-goods",{key:e,attrs:{msg:t}})}))])],1),t._v(" "),t._l(t.floors,function(e,i){return n("section",{key:i,staticClass:"w mt30 clearfix"},[n("y-shelf",{attrs:{title:e.title}},[n("div",{staticClass:"floors",slot:"content"},[n("div",{staticClass:"imgbanner"},[n("a",{attrs:{href:t.floors[i].image.link}},[n("img",{directives:[{name:"lazy",rawName:"v-lazy",value:t.floors[i].image.image,expression:"floors[i].image.image"}],attrs:{alt:e.title}})])]),t._v(" "),t._l(e.tabs,function(t,e){return n("mall-goods",{key:e,attrs:{msg:t}})})],2)])],1)})],2),t._v(" "),n("el-dialog",{staticStyle:{width:"70%",margin:"0 auto"},attrs:{title:"通知",visible:t.dialogVisible,width:"30%"},on:{"update:visible":function(e){t.dialogVisible=e}}},[n("span",[t._v("XPay个人支付收款系统已上线,赶快去支付体验吧!")]),t._v(" "),n("span",{staticClass:"dialog-footer",slot:"footer"},[n("el-button",{attrs:{type:"primary"},on:{click:function(e){t.dialogVisible=!1}}},[t._v("知道了")])],1)])],1)},staticRenderFns:[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("span",{staticClass:"text b"},[t._v("以傲慢与偏执"),n("br"),t._v("回敬傲慢与偏见")])}]}}}); //# sourceMappingURL=7.0814cc986a8375eb2381.js.map ================================================ FILE: ymall-web-ui/static/js/app.e28b119acf7c187f0fbf.js ================================================ webpackJsonp([26],{0:function(n,t){n.exports=Vue},100:function(n,t){n.exports=Vuex},114:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=e(83),A=(e.n(o),e(68)),u=e.n(A),r=e(84),i=(e.n(r),e(69)),a=e.n(i),c=e(82),f=(e.n(c),e(67)),s=e.n(f),d=e(85),p=(e.n(d),e(39)),h=e.n(p),l=e(87),m=(e.n(l),e(40)),g=e.n(m),w=e(79),E=(e.n(w),e(65)),v=e.n(E),U=e(81),I=(e.n(U),e(22)),B=e.n(I),j=e(90),b=(e.n(j),e(73)),G=e.n(b),N=e(91),Q=(e.n(N),e(74)),M=e.n(Q),D=e(88),k=(e.n(D),e(71)),C=e.n(k),R=e(89),J=(e.n(R),e(72)),Y=e.n(J),O=e(75),P=(e.n(O),e(63)),F=e.n(P),T=e(80),x=(e.n(T),e(66)),y=e.n(x),S=e(78),V=(e.n(S),e(21)),H=e.n(V),L=e(86),Z=(e.n(L),e(70)),z=e.n(Z),K=e(77),q=(e.n(K),e(76)),W=(e.n(q),e(64)),X=e.n(W),_=e(0),$=e.n(_),nn=e(95),tn=e.n(nn),en=e(61),on=e(62),An=e(94),un=e.n(An),rn=e(93),an=e.n(rn),cn=e(92),fn=e.n(cn),sn=e(42),dn=e(23);$.a.use(X.a),$.a.use(z.a),$.a.use(H.a),$.a.use(y.a),$.a.use(F.a),$.a.use(Y.a),$.a.use(C.a),$.a.use(M.a),$.a.use(G.a),$.a.use(B.a),$.a.use(v.a),$.a.use(g.a),$.a.use(h.a),$.a.use(s.a.directive),$.a.prototype.$loading=s.a.service,$.a.prototype.$notify=a.a,$.a.prototype.$message=u.a,$.a.use(an.a),$.a.use(fn.a),$.a.use(un.a,{loading:"/static/images/load.gif"}),$.a.config.productionTip=!1;var pn=["/home","/goods","/login","/register","/goodsDetails","/thanks","/search","/refreshsearch"];en.a.beforeEach(function(n,t,o){var A={params:{token:e.i(dn.a)("token")}};e.i(sn.a)(A).then(function(t){1!==t.result.state?-1!==pn.indexOf(n.path)?o():o("/login"):(on.a.commit("RECORD_USERINFO",{info:t.result}),"/login"===n.path&&o({path:"/"}),o())})}),new $.a({el:"#app",store:on.a,router:en.a,render:function(n){return n(tn.a)}})},115:function(n,t,e){"use strict";t.a={}},116:function(n,t,e){"use strict";e.d(t,"a",function(){return o}),e.d(t,"b",function(){return A}),e.d(t,"h",function(){return u}),e.d(t,"g",function(){return r}),e.d(t,"c",function(){return i}),e.d(t,"d",function(){return a}),e.d(t,"e",function(){return c}),e.d(t,"f",function(){return f});var o="INIT_BUYCART",A="ADD_CART",u="GET_USERINFO",r="RECORD_USERINFO",i="ADD_ANIMATION",a="SHOW_CART",c="REDUCE_CART",f="EDIT_CART"},117:function(n,t,e){"use strict";var o,A=e(123),u=e.n(A),r=e(99),i=e.n(r),a=e(116),c=e(23);t.a=(o={},u()(o,a.a,function(n){var t=e.i(c.a)("buyCart");t&&(n.cartList=JSON.parse(t))}),u()(o,a.b,function(n,t){var o=t.productId,A=t.salePrice,u=t.productName,r=t.productImg,i=t.productNum,a=void 0===i?1:i,f=n.cartList,s=!0,d={productId:o,salePrice:A,productName:u,productImg:r};f.length&&f.forEach(function(n){n.productId===o&&n.productNum>=0&&(s=!1,n.productNum+=a)}),f.length&&!s||(d.productNum=a,d.checked="1",f.push(d)),n.cartList=f,e.i(c.b)("buyCart",f)}),u()(o,a.c,function(n,t){var e=t.moveShow,o=t.elLeft,A=t.elTop,u=t.img,r=t.cartPositionT,i=t.cartPositionL,a=t.receiveInCart;n.showMoveImg=e,o&&(n.elLeft=o,n.elTop=A),n.moveImgUrl=u,n.receiveInCart=a,r&&(n.cartPositionT=r,n.cartPositionL=i)}),u()(o,a.d,function(n,t){var e=t.showCart;n.showCart=e}),u()(o,a.e,function(n,t){var o=t.productId,A=n.cartList;A.forEach(function(n,t){n.productId===o&&(n.productNum>1?n.productNum--:A.splice(t,1))}),n.cartList=A,e.i(c.b)("buyCart",n.cartList)}),u()(o,a.f,function(n,t){var o=t.productId,A=t.productNum,u=t.checked,r=n.cartList;A?r.forEach(function(n,t){n.productId===o&&(n.productNum=A,n.checked=u)}):o?r.forEach(function(n,t){n.productId===o&&r.splice(t,1)}):r.forEach(function(n){n.checked=u?"1":"0"}),n.cartList=r,e.i(c.b)("buyCart",n.cartList)}),u()(o,a.g,function(n,t){n.userInfo=t,n.login=!0,e.i(c.b)("userInfo",t)}),u()(o,a.h,function(n,t){n.userInfo&&n.userInfo.username!==t.username||n.login&&(t.message?n.userInfo=null:n.userInfo=i()({},t))}),o)},118:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"app"}},157:function(n,t){},159:function(n,t){n.exports={render:function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{attrs:{id:"app"}},[e("router-view",{staticClass:"main"})],1)},staticRenderFns:[]}},161:function(n,t){n.exports=VueRouter},162:function(n,t){n.exports=axios},165:function(n,t,e){n.exports=e.p+"static/fonts/element-icons.b02bdc1.ttf"},166:function(n,t){n.exports="data:application/font-woff;base64,d09GRgABAAAAAB9EABAAAAAANAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABbAAAABoAAAAcdCWJ3kdERUYAAAGIAAAAHQAAACAAWAAET1MvMgAAAagAAABNAAAAYFdvXOBjbWFwAAAB+AAAAFAAAAFS5mHtc2N2dCAAAAJIAAAAGAAAACQNZf70ZnBnbQAAAmAAAAT8AAAJljD3npVnYXNwAAAHXAAAAAgAAAAIAAAAEGdseWYAAAdkAAAUPAAAIUw4RPqwaGVhZAAAG6AAAAAvAAAANgxJKwtoaGVhAAAb0AAAAB4AAAAkCQwFDGhtdHgAABvwAAAAVgAAAKyk5AaSbG9jYQAAHEgAAABYAAAAWJwQpAxtYXhwAAAcoAAAACAAAAAgAU4CJG5hbWUAABzAAAABNQAAAit/uX3PcG9zdAAAHfgAAACyAAABsMLAXoJwcmVwAAAerAAAAJUAAACVpbm+ZnicY2BgYGQAgjO2i86D6MufP7fDaABY8wj8AAB4nGNgZGBg4ANiCQYQYGJgBEItIGYB8xgABhgAXQAAAHicY2Bh4WX8wsDKwMA0k+kMAwNDP4RmfM1gzMgJFGVgY2aAAUYBBgQISHNNYTjAUPFMnbnhfwNDDHMDQwNIDUiOWQKsRIGBEQCQ/wz4AAAAeJxjYGBgZoBgGQZGBhDwAfIYwXwWBgMgzQGETEC64pnKM/X//8Eshmdq////75ZikWKG6gIDRjYGOJcRpIeJARUwMtAMMNPOaJIAAAr1C6J4nGNgQANGDEbMEv8fMjf8b4DRAEVmCF94nJ1VaXfTRhSVvGRP2pLEUETbMROnNBqZsAUDLgQpsgvp4kBoJegiJzFd+AN87Gf9mqfQntOP/LTeO14SWnpO2xxL776ZO2/TexNxjKjseSCuUUdKXveksv5UKvGzpK7rXp4o6fWSumynnpIWUStNlczF/SO5RHUuVrJJsEnG616inqs874PSSzKsKEsi2iLayrwsTVNPHD9NtTi9ZJCmgZSMgp1Ko48QqlEvkaoOZUqHXr2eipsFUjYa8aijonoQKu4czzmljTpgpHKVw1yxWW3ke0nW8/qP0kSn2Nt+nGDDY/QjV4FUjMzA9jQeh08k09FeIjORf+y4TpSFUhtcAK9qsMegSvGhuPFBthPI1HjN8XVRqTQyFee6z7LZLB2PlRDlwd/YoZQbur+Ds9OmqFZjcfvAMwY5KZQoekgWgA5Tmaf2CNo8tEBmjfqj4hzwdQgvshBlKs+ULOhQBzJndveTYtrdSddkcaBfBjJvdveS3cfDRa+O9WW7vmAKZzF6khSLixHchzLrp0y71AhHGRdzwMU8XuLWtELIyAKMSiPMUVv4ntmoa5wdY290Ho/VU2TSRfzdTH49OKlY4TjLekfcSJy7x67rwlUgiwinGu8njizqUGWw+vvSkussOGGYZ8VCxZcXvncR+S8xbj+Qd0zhUr5rihLle6YoU54xRYVyGYWlXDHFFOWqKaYpa6aYoTxrilnKc0am/X/p+334Pocz5+Gb0oNvygvwTfkBfFN+CN+UH8E3pYJvyjp8U16Eb0pt4G0pUxGqmLF0+O0lWrWhajkzuMA+D2TNiPZFbwTSMEp11Ukpdb+lVf4k+euix2Prk5K6NWlsiLu6abP4+HTGb25dMuqGnatPjCPloT109dg0oVP7zeHfzl3dKi65q4hqw6g2IpgEgDbotwLxTfNsOxDzll18/EMwAtTPqTVUU3Xt1JUaD/K8q7sYnuTA44hjoI3rrq7ASxNTVkPz4WcpMhX7g7yplWrnsHX5ZFs1hzakwtsi9pVknKbtveRVSZWV96q0Xj6fhiF6ehbXhLZs3cmkEqFRM87x8K4qRdmRlnLUP0Lnl6K+B5xxdkHrwzHuRN1BtTXsdPj5ZiNrCyaGprS9E6BkLF0VY1HlWZxjdA1rHW/cEp6upycW8Sk2mY/CSnV9lI9uI80rdllm0ahKdXSX9lnsqzb9MjtoWB1nP2mqNu7qYVuNKlI9Vb4GtAd2Vt34UA8rPuqgUVU12+jayGM0LmvGfwzIYlz560arJtPv4JZqp81izV1Bc9+YLPdOL2+9yX4r56aRpv9Woy0jl/0cjvltEeDfOSh2U9ZAvTVpiHEB2QsYLtVE5w7N3cYg4jr7H53T/W/NwiA5q22N2Tz14erpKJI7THmcZZtZ1vUozVG0k8Q+RWKrw4nBTY3hWG7KBgbk7j+s38M94K4siw+8bSSAuM/axKie6uDuHlcjNOwruQ8YmWPHuQ2wA+ASxObYtSsdALvSJecOwGfkEDwgh+AhOQS75NwE+Jwcgi/IIfiSHIKvyLkF0COHYI8cgkfkEDwmpw2wTw7BE3IIviaH4BtyWgAJOQQpOQRPySF4ZmRzUuZvqch1oO8sugH0ve0aKFtQfjByZcLOqFh23yKyDywi9dDI1Qn1iIqlDiwi9blFpP5o5NqE+hMVS/3ZIlJ/sYjUF8aXmYGU13oveUcHfwIrvqx+AAEAAf//AA94nKVaC3Bc1Xk+/zn3uXe1e3fva6V9aXe1u5JWXq32aUlIun7IGGTZlsAPGTABHEUOIQkUcAgMESUEKMnQItl0SId2mEwyzWNipqV5kpB0ChNDQzLBtBPaztQJM23iaWdo+gi1rvufu7ItOWCcZnX3nHPP8z/nf33/WRFKsoRAlX6RMCKTPrdACGGUsH2EAtApQinsErAEWwiRJVHAbiwihku1SCZSrEVyWdD/7ZVX6BdX9mbpPI4VycDZf2bfZjFikwoZIbPkIByZOm7s3u9eTYF0hDpIaJ6wEITYQQKKAtfroCoBST0YgaAkSMGDRBO0w2FQiBRUpP0kIItU0ALCXBRCoY4Z0tERCG2OTx13cMapS8yoqIH533LKGE654/KmFOYva05350XTwTzOFwLl0P9vwrm5Obf3mmtGR6tDjnPNwWsOXrd/dHZ0dmpLqzE0Uh1xKk5lJjIUi/RarmGXQCpBNkSTkGnUC416mZbAyoiWaZshmpMKJShmZOxRzJbpGDhZybRr1Wa94EhyiKVgVKo2i2UoForQqI/TUajaSYDOeNc10Xwiyv4QArFi6iHvavoMWOlcKJQOdW/wrhpIZs3Ozm5DORKMRoMd0einFUnUBCqEQ/ktM7vdHsdWRVUUJe9zYrjL+na6j6Yh2Fns2tGnJ4SO7nj0pkfqzshI3lEBFhfBiHeHvjAR6Yrgc1+XbfSE9A4l1tWRixgmHPm5FjOCycLPUIRR9h4QCF0kSdLvFgNAiQMCpS4AoWSBARXoggiCcCN2TJKk4ZiOFC3l7WYLmmWQZBXKIEuW6UClZjs2/zrwL9H+EDwfpYVG1Lvdu9WoG2YUvgf8QwMAn1KkDljSN3RT3TsGCxHQ9Zite7fzZhE4SQSLZxdRZzhdWTed7HSsAJGAgMvbyDTvMoPUw2SfRfUSFDg9KZ+eFNKTyxah0igUC/xbBOnSC8LCpen16SFnF+nZy6aniasWQmAjO0KAx1JtIT3NVpN/W/RtpMe7zacHPuj98So98PhvQQ9+F5Fvn2jzzUE+BZBj1EVeUYHzjdAF3nM936AgySCloNni54Tk1PGccnhG/FukMVzX2+Kvi8Qc9df1Js6vSz9+abp9uhg5yr5OnyQacVyT0wnT/IRmeNtkPYKH0xaeQi6TlRx4KrErAR9ppadXxOl069kExOH9jR07Gv6Za2c/wzrYZhIk0l8EREDVK9RxqG1FTKkIUIhj5+aOHU3vs5CP745fmAc+8i7jm7jhgoTj7RbQt+Jx7ym+GMy/43jcy7E1e7mI0f5eoFl1wJZwL4XWRXuh9+H0n21OTTX9ucbP/rtYZgdIlIw8p+J4cKeO96DljKDHoAt8RuQawaXQ/IXX190495xlWroQLYko14U6rqniwraJvMzRnt6Ed29yeCYBLj2U3D2cWNmX6Isk4CFe9l6ghxLDu5NYh/qMMixwnQqTAhl1N6aAMi7AAlkggigsSCAycQH9GFvw3dg0d2OzBL3YNl3XC3rBjHU6umyUCJpHM0Wr47ReBgZSdpAW6hNIUhr8BCmjH3ztW4/t3v3Yt9qZ7D2mGIr8Q1muyab8R1DFtKoobPF8D5553/Mek2Xlh4rf+AQMKUoVh+H5XaA9TUqk4VZjukIErn94QCKIBOaRYgGl/xD6UkGcJqIozPBdTVrRLrMrKpkllPeqY5th1EdJRprRTmSLnO4iWg9sinaPg16G7hDoNg2c0FKapp04oUEAS5inAxdeG2CffvTR094vMIWvnNC0QJq3pbRA4OWXA2sGrKiPnj7fd90+wqTG91Hrz8QEgfJ9UBBQjedxDwSfQ3ju63THTJgJR8d9COh40LNUU9QMAWvWB6GQDeMmMJHMNO4KE7s6gdvEhDdfxIsRWW7g8S8fxaQhSUePShJ/P7rM32X56Hqe0EnZUmqKsrSkYGbJy0uY1GV5eVnGzFKWuI6f503eza7lDNcYLsEwg9xBneGcQDFWkWIZ7aKKBCOVaIwwQdVUuX6iP6HEu8caNU2w4GEsWeYoFuBhrLIs7x4s+DU/Xy149/i9rd/ojOPJqq0kHIGRPvKkq+mAIutG0WZNTB3XUAPz6O+AyQzkeY7mJCbPKSARIk1jJpFZEYhEtiHQsbFz6kJnbPWb9hJZZjOEsYCMunt5syEg0XrMTE/ejJjdqlPK1MYRLhRylVwFs6xkVaxKDjPTdmqNXLbQVi4bkQltnpx/fHlBWfrxsrKw/Pj8mwfMoPZp2ZA/EwgaB9jy/OGjyuHl5cPK0cPzy+zLtv56IPC6bvuyB6t8SpJRMugOjLYatd5U25cFOcdom2PU5xjzOTa4oSfXZwl6ybiki81fsvU9/C8lv5t/pu/pLtfoXQLRdcXdMNyoDVWKyUSMb77jXTZfHshl/c2/iz+fgAq68/w7NJ739RX2tiKG3tlpUgnAI+/a/B57p8HL2Dkl7z/7EHsY940+jGsnAURVQHjM8QFCGfONPJdeyibrZj3CnQwq43n/vNa/fb1rexcM1OPbVj61LV6DDeteb4nFIFHZurVCvxqLeW8Obd06xGMiUkIcdxLXd0gc7cMzqyrnowW4XgOVKLKq7AuATFBp9hJUkRnUIEICEo8tqti5h3eGhffo65ba3fwKSSXS/rUDGJOnMJPZLB/K1c9JJGKxRDqRTiVj8Vg8Gsk3MhE9aJUQ9ucsrnsIEmqZarMRqSNwaOQAQzf+pT/wPvxkNVEsJFghUSjGa0+u/B19wXsZ4ULojjuKiTP/kygWE0xJFO8482E6tvLXMHbWt0ESWcSzwD/SidHjANlItpLd5Ab3ADdPQIS5sBhiWKAy0DkiBwNUUWVlrkOjqiSp0zxXpRkdJFWazOe6ugjZOb39ys2brhhtNiqDfb25gfxAV7Yrm07iAp1NoxaJlLhRwVhFSkLO5DC9vaN6YRDERr1Z82MTf48Z3C0gsvCxVbbQYO9Spr+fiT3S2fcKHcrF6B/EcqlQ2Lu3J5HM4R4XG1Mri1NwT9jWdTv8dNgOh89n9Pv3x/OFrvsB7P6uQqErlhEF6nbjxz3zwlQDLT5pTMHPtUhE874Y1PUg7H3nMpfpPXiOX8Jz7ECJGnabaNAFxDEMkS+j81wMBAbCHFd6X7y5A6VkEoFwPGYbOg4L1qUweqE1HM4Zpi/ljUiNV+DJWPAN709mR+j4yOzsSKY/6YVSfb9O9uPDFr0nVn49PDs7TH8xPHvmuWR/XwqW+1MA/cl1tkZA5Bl1w7KE9IhkDNtujEO41GJ5KLZkB11eIXvttVCDN089f8/P7ipf/+Bfeq/sgTffeP6eN+4qP3g9158LeCFGekjdHSIgcdyGIsIQ3zDcp0iID3j4PkUyGdGzmUTcMvVYJIZwTV8PGIAHrDxeNXw/E+EvjYsQgvdGur801l9KZqtZfC4CBCdLYyV8vNNOJuN4/xvr7o6twQB+PEIEypAZGLUTKrRJJWwaXSQnkZFJy8rlDdEoRcwUtFFXrh1HpwBJzJbBd4LnoNNjuuPod790550vnX7pTifjwOJjvJo34ptfe+dLd2Mn7uYvnFeaDJIJst2d1CSVoVIxtHdzAUFhvp33C2jpfasxWa1ku6M6JSOtykR1or/YPZgd7HL0dDQdkEmYhoOhEicxCaaNEX1zDO0ju+h9fXv9ovZ6AeZ/Nbhly+CvKpvplqELRfhvzDZXzlW0S3DdlsH/rGzFmqGtNH+hYeUNrOc931pf78vcSdx3iZikQj7qhnosXURbkrMpqgWGGnE0pLYPJrmDC2wigsBtIdMYN7P92Gr6ng+x59zaNrdzTTVjwvRqo8CN6F+VWrFYN/IRMnyvKaE6zlocxkAkJaBmjdMJiISEHMrfILDFFdK3Lzr69AP3D9z/wNOj0X19Zxap3JkoOYxYpaQjSeHaZ+77dF/fIw/fWyyw0khPNFxdvHn3rps/UQsbPSPe2ytvMdWOhkKGIctUD234vf3bJ2+6OZv1MR4MIZGvop9Lu4l1vtyP1hBjiESjGguVjAyGTr6y15u72M2Zcjlz5mlM4dXy5jI+xPdbBAI4338RZD/6roybEpk/3TTPoe14EJUb/MNReZTrFAqxcFE+efMkPvDquizQrl3ztNdc5WGYDJFR0N3gaJVSeah3lYdB5FKVyCIV5YOESiKVDhFJECWMeQQmCuyQbwOUNn8Z46EbaMD5y7lfa4+k87/dUC4aQ5ccykeJMhHn1g50m5c7Bq339OpIBtv4VZ0NZHhjo14u9eQSXZahSiQMIRUZt94p51iZoo6FgSHcLAzSMsUXGkG3luHuCri/8j3X0tjevWP0pzz9FEhxw0yJ4vGAo0UFdgMNJOMJWd7en6ZLqX7vKvc6Fx9W2ju28iN/WGVsr/dJqgQ1UfT+1QgI4m1Mi0ZVdR+8kiqVUt4+SG4Yn9g/Pj6wGmus2p+4j7ZEQsVp1EPGUS6qkCjSGayik0YuZ+S6eVSa8S1fpm2IIxkuNrlMxDfO8DVvKV0qpeG20hUluI0XvSVe/AEmv9HUxrnFs99nz7MRlNskKbo9NsqqgqEl5RdV/EIPyxjd0xsJScSxk2wI4VJPW1RtMQQFjL/Gqe3YURljZR4hU+HYsdeOHYMDU9/42tar6/WlF1+8+n2JK182jGjDfIk3vXZs4Iqe1uTVL/7Ncr1+9fu8//jICaOBarHqC7+M53Et+RC5m9zuqh+69YN1gV87tO+N7VWfgGKHfoJyZV2VO343Ygj81CjsOd+LW6Su1bv2OWzltxTnBlKYROEJ3n3XHbd/+LadO2KOiEa7DBgeF3n8xAMR/w0lhkf//N4Sg1AULcDISpZ4wYdIaYxgsMaxsR+/zvTfEOsjXEr7t2atcZiAcT5Vq8kLrTaiGoK2vKFtYWdYIqJPZDJhUdQ69AGjW5L0YjA4+FBFCxZ1c8BAEewIimI4k5nQIwnUb1SDRCTs+kOCHeEBsz1Eq2zeUtG0Xt0Y4GLboYmCnsm4up4QuB3yhGs/9rE/P3JkD7yoJwVmbNw4EdaLWkenFmZUUjuCAwPBDlWSY0FDEAKFSHhi43CUCUndrNo5SX7HMdqGDZo/RjMFphV0fWLjRuPCGO+tuz5/Fz4oTjXEYX+Lsn4L2exO1IbQ4+/fi6ETjYQpEZnLAQplPhADkcJvAJVbbtq+7YrR3kKiy0E4lufwhPqX6vUWvyzNc37wUJLzDdEqHnut6vPDyfO4kl/O88oqr7JMzsx236KIXUzkgyXJpixyBrWQeey2eJ/j9DXHm30OP7olzQ51hEJ6eti0YzHbHE6Hw1hha3CYB1Axy9o4fqEpyVu8J+Hc50OBWBBHh9J/qvU1J5r+zGlVZPicVHVRoqzTtFsZf3LGJFFXX2OiKIiqiFVWZ6eFk2Y2WmZMkAU98BNRFUQlEBDROgqvqyE0maytz/TsI8IonvEV5BDZ4rqpLgpCfxG9Kp6zWxMpwkoBhAVuPBfQQYnkMMF1fJMqziIXxG2Hbtm9a3Sk2UjGo3jMou1kJbmJwstFuoUSXhhc1RIeufpqgIIvj0PR1wQsO2iReOeqgy++KrVHczVoVtvqkjqnSBK/jmLD4QDTgAp1NZE+HkICmWL8sne7fgM6blnGQOwGfXvvLw0FgbsQejaVUGsCBKmqn8gdyD5wojkcqovR6LOD9vhpp6ze0Hll5w1q2Tk9bg8+G42K9dBw84Q1PKKCwtToqd49XU8FFRYCgdqs0XMyIqPTjJzsaTAbwWcYbfdTXXt6T0VVpoB6xLJqR7r7x045zfBTfZsli2atkyMjJ60staTNfU+Fm86psf7uI0FuLs+dfZHEXOviu2x0MRSl1r92e89DKdLd1rB1ORsLBIOXQd8qRln1NTpJkA1k0t1M0NNSUfJxt8hxt6Tg0UvCgTUAXOb32pOpJJC+Yk8uuSE1EHOiEVUhOujoZEUffa9GCzSaDQFi9Oo4B7DZwpgfIiZRD7mVowRx+Myj3/nRdx6dwUz86TdvvfWbPPF+aiYSvYk/w9RcRPy+0O7A+7En2l0w8Y4mjTeNZNJ4LlFMkvWxjkNypOT28l9GBY4SsBqty9yFa+m2vbcsw/HvRNfdSJNVO9zwI9aIjwEujnB+5Uc27eeiW+iVcnYolxv6p85crhOMzmy2k8fuebR1b5yPK0bJFvIBssO9ioSIqoTUfeEOlLMAlUCR5jhC5PAQTxrjeE2Tp4ksazNEk7XJ+UM3Hbxu7trZXTuuunKTa9SNBv/UdKeE0Sj/4dEnmP9q6LzHu8Fj9hRwmI0xPDo3tM2ixftEzoWyuTbHRgGtJB+S5oyD+4NqCaUsUFKDXwmqA2rQT77iV/hN+1aeCQQordJAwBuBcrcov472aCaobprYsPLDDRObeL8fDwYa8b+PNwKDP1aD8EtvkU8Ji7zpXcqeST+28kg4FgzG6D/slCiVbsEVVx5pzexs0XtxZTX40VguF/tocK0sxEmNuFy2y0kq8zBfAmmByIJ8GIVcgGmqoK8Bhn0PoG7yO38QJoEMVXpyGOxHwx0BBUUoDnGVh3B+XJlsR5uj6DRsHpv5P99CcdwHP1yQuENpthweJqP+luk4TaFeffyJZG/yCS7T7UIyCbec2lKc2Dnxuc9/7v5NmyZ2vfranlPh/pT3hU3Hjz9YLj/op/D2Eh+zlOhLnC+s/OPP9vzk1Z3upk2fwLE4Q++WU+FUP0QwAPnkV48/ODj44PGvXri33IXnYGFMsMvd0d1JBRlcSeUZnsc8IjpRBvEQYjmRymL71oP/AwKZVfhvuNscm5JSf082mbCHnCE9HNQUmVjUCqCuZ87rBwrTuVseQHDUvuyJ+N63sfrTjo3CJYTPDMXz+UaezeTrhbz37YSxG992G4l4Xv+uMWx8V88vFrrAxU5xfu3Fc++FrgL9kjXn3cdvfuCTc1Y+Hou+blmvR2Px/P8BEpxdcHicY2BkYGAA4iUXFTLj+W2+MsizMIDA5c+f2xH0/wZWPeYGIJeDgQkkCgBf1AyCAHicY2BkYGBu+N/AEMOawAAErHoMjAyoQBsAVCkDJAAAeJxjLGNQYgACxlAGBuaXDDosQDYLAyMjEDOA2YwMzEA2NxgD2awJDHYQNWiYkYERiEHsVCDWBuIGIA7FqhYTq0P1GrPYMTCBMUJOFUz7MzAAAGi0Bh0AAAAAACgAKAAoAWQBsAH4AkACjAKyAtIC8gMYA1oDuAQcBIYE1gVaBdgGVAaUBxoHvggOCDQIiAjMCUgJyAnwCioLDAtMC5QMgg00DfIOQg6qDvgPsBA0EKYAAQAAACsAdwAGAAAAAAACACYANABsAAAAigF3AAAAAHicdY9Na8JAEIbfaNQWivTY45BL9bBhE6L4cZX4D3oXSTSQGkjWj0v/QQs99dxjf2ZfN0uhBxNm55mZd2dnADzgCx6un4cBHh134CNw3CW9Ovap+XbcQ+pNHfcx8D6o9Px7Zob21pU7uMOT4y5WeHbsU/PpuId3/DjuY+i9IUMJhQJbVDgAWamKbUX4y7RhagNjfY0drwlihND0C9r/Nm1uysycFlMVMUJaHUxa1btM4lDLQtxjpKmaq1hH1Nya54WVGg0r7QORe3xJM/xzbHCkr7Cn5jqqYIQTNSGHSDBmrNhbMLNU85zYDgpru4x20cV2TyyfeQasBzbK7dlwmKxuCg4ecY2lGJNvjqbaFwcjo5MO58lYVCkzUbVMtKi1xJruIlEi6izBOhCVi2puLvsLTjBRRQAAAHicbc3LNsJxGEbh3/47JHKIQomcwlomfV8Uw5Cb6ApMzLoCF46lPfSu9a49fEpV/vb9VbL8t/vfU6oyp2KFVdZYp8YGdTbZosE2O+yyR5N9DmjR5pAjjunQ5YQep5zR55wLLrnimgE33HJXW3x+zMbDoQ2bdmQf7KMd24l9ss92al/sq32zM/u+bOiHfuiHfuiHfuiHfuiHfuiHfuiHfuiHfuqnfuqnfuqnbk5+APaSXBUAAEu4AMhSWLEBAY5ZuQgACABjILABI0QgsAMjcLAORSAgS7gADlFLsAZTWliwNBuwKFlgZiCKVViwAiVhsAFFYyNisAIjRLMKCQUEK7MKCwUEK7MODwUEK1myBCgJRVJEswoNBgQrsQYBRLEkAYhRWLBAiFixBgNEsSYBiFFYuAQAiFixBgFEWVlZWbgB/4WwBI2xBQBEAAAA"},23:function(n,t,e){"use strict";e.d(t,"b",function(){return u}),e.d(t,"a",function(){return r}),e.d(t,"c",function(){return i});var o=e(119),A=e.n(o),u=function(n,t){n&&("string"!=typeof t&&(t=A()(t)),window.localStorage.setItem(n,t))},r=function(n){if(n)return window.localStorage.getItem(n)},i=function(n){n&&window.localStorage.removeItem(n)}},42:function(n,t,e){"use strict";e.d(t,"h",function(){return A}),e.d(t,"c",function(){return u}),e.d(t,"a",function(){return r}),e.d(t,"f",function(){return i}),e.d(t,"e",function(){return a}),e.d(t,"d",function(){return c}),e.d(t,"b",function(){return f}),e.d(t,"g",function(){return s});var o=e(98),A=function(n){return o.a.fetchPost("/member/login",n)},u=function(n){return o.a.fetchGet("/member/loginOut",n)},r=function(n){return o.a.fetchGet("/member/checkLogin",n)},i=function(n){return o.a.fetchPost("/member/register",n)},a=function(n){return o.a.fetchPost("/member/imgaeUpload",n)},c=function(n){return o.a.fetchGet("/member/thanks",n)},f=function(n){return o.a.fetchGet("/goods/productHome",n)},s=function(n){return o.a.fetchGet("/member/geetestInit?t="+(new Date).getTime(),n)}},61:function(n,t,e){"use strict";var o=e(0),A=e.n(o),u=e(161),r=e.n(u),i=function(){return e.e(3).then(e.bind(null,191))},a=function(){return e.e(12).then(e.bind(null,172))},c=function(){return e.e(14).then(e.bind(null,173))},f=function(){return e.e(7).then(e.bind(null,171))},s=function(){return e.e(11).then(e.bind(null,169))},d=function(){return e.e(8).then(e.bind(null,170))},p=function(){return e.e(2).then(e.bind(null,167))},h=function(){return e.e(5).then(e.bind(null,175))},l=function(){return e.e(4).then(e.bind(null,190))},m=function(){return e.e(20).then(e.bind(null,187))},g=function(){return e.e(13).then(e.bind(null,186))},w=function(){return e.e(10).then(e.bind(null,183))},E=function(){return e.e(22).then(e.bind(null,185))},v=function(){return e.e(23).then(e.bind(null,184))},U=function(){return e.e(21).then(e.bind(null,189))},I=function(){return e.e(0).then(e.bind(null,168))},B=function(){return e.e(15).then(e.bind(null,176))},j=function(){return e.e(18).then(e.bind(null,177))},b=function(){return e.e(6).then(e.bind(null,182))},G=function(){return e.e(1).then(e.bind(null,181))},N=function(){return e.e(24).then(e.bind(null,180))},Q=function(){return e.e(9).then(e.bind(null,188))},M=function(){return e.e(19).then(e.bind(null,174))},D=function(){return e.e(16).then(e.bind(null,179))},k=function(){return e.e(17).then(e.bind(null,178))};A.a.use(r.a),t.a=new r.a({routes:[{path:"/",component:i,name:"index",redirect:"/home",children:[{path:"home",component:f},{path:"goods",component:s},{path:"goodsDetails",name:"goodsDetails",component:d},{path:"thanks",name:"thanks",component:b}]},{path:"/login",name:"login",component:a},{path:"/register",name:"register",component:c},{path:"/cart",name:"cart",component:p},{path:"/refreshsearch",name:"refreshsearch",component:N},{path:"/order",name:"order",component:h,children:[{path:"paysuccess",name:"paysuccess",component:j},{path:"payment",name:"payment",component:B},{path:"/search",name:"search",component:G},{path:"alipay",name:"alipay",component:M},{path:"wechat",name:"wechat",component:D},{path:"qqpay",name:"qqpay",component:k}]},{path:"/user",name:"user",component:l,redirect:"/user/orderList",children:[{path:"orderList",name:"订单列表",component:m},{path:"orderDetail",name:"订单详情",component:Q},{path:"information",name:"账户资料",component:g},{path:"addressList",name:"收货地址",component:w},{path:"coupon",name:"我的优惠",component:E},{path:"support",name:"售后服务",component:U},{path:"aihuishou",name:"以旧换新",component:v}]},{path:"/checkout",name:"checkout",component:I},{path:"*",redirect:"/home"}]})},62:function(n,t,e){"use strict";var o=e(0),A=e.n(o),u=e(100),r=e.n(u),i=e(117),a=e(115);A.a.use(r.a);var c={login:!1,userInfo:null,cartList:[],showMoveImg:!1,elLeft:0,elTop:0,moveImgUrl:null,cartPositionT:0,cartPositionL:0,receiveInCart:!1,showCart:!1};t.a=new r.a.Store({state:c,action:a.a,mutations:i.a})},75:function(n,t){},76:function(n,t){},77:function(n,t){},78:function(n,t){},79:function(n,t){},80:function(n,t){},81:function(n,t){},82:function(n,t){},83:function(n,t){},84:function(n,t){},85:function(n,t){},86:function(n,t){},87:function(n,t){},88:function(n,t){},89:function(n,t){},90:function(n,t){},91:function(n,t){},95:function(n,t,e){function o(n){e(157)}var A=e(96)(e(118),e(159),o,null,null);n.exports=A.exports},98:function(n,t,e){"use strict";var o=e(122),A=e.n(o),u=e(162),r=e.n(u);r.a.defaults.timeout=1e4,r.a.defaults.headers.post["Content-Type"]="application/x-www=form-urlencoded",t.a={fetchGet:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new A.a(function(e,o){r.a.get(n,t).then(function(n){e(n.data)}).catch(function(n){o(n)})})},fetchQuickSearch:function(n){return new A.a(function(t,e){r.a.get(n).then(function(n){t(n.data)}).catch(function(n){e(n)})})},fetchPost:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new A.a(function(e,o){r.a.post(n,t).then(function(n){e(n.data)}).catch(function(n){o(n)})})}}}},[114]); //# sourceMappingURL=app.e28b119acf7c187f0fbf.js.map