Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
V
VieoAITaskProducerService
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
VideoAIService
VieoAITaskProducerService
Commits
38d3544b
Commit
38d3544b
authored
Jul 20, 2021
by
yzm
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化后的发布版本2
parent
19a2655c
Changes
43
Show whitespace changes
Inline
Side-by-side
Showing
43 changed files
with
560 additions
and
12082 deletions
+560
-12082
src/main/java/com/cx/cn/cxquartz/controller/ExtController.java
...ain/java/com/cx/cn/cxquartz/controller/ExtController.java
+6
-18
src/main/java/com/cx/cn/cxquartz/controller/IndexController.java
...n/java/com/cx/cn/cxquartz/controller/IndexController.java
+220
-219
src/main/java/com/cx/cn/cxquartz/controller/QuartzController.java
.../java/com/cx/cn/cxquartz/controller/QuartzController.java
+185
-185
src/main/java/com/cx/cn/cxquartz/controller/SbtdspsrController.java
...ava/com/cx/cn/cxquartz/controller/SbtdspsrController.java
+13
-13
src/main/java/com/cx/cn/cxquartz/job/QuartzMainJobFactory.java
...ain/java/com/cx/cn/cxquartz/job/QuartzMainJobFactory.java
+11
-11
src/main/java/com/cx/cn/cxquartz/service/quartz/FtpService.java
...in/java/com/cx/cn/cxquartz/service/quartz/FtpService.java
+5
-5
src/main/java/com/cx/cn/cxquartz/service/quartz/impl/EventWriteService.java
...cx/cn/cxquartz/service/quartz/impl/EventWriteService.java
+1
-1
src/main/java/com/cx/cn/cxquartz/service/quartz/impl/QuartzServiceImpl.java
...cx/cn/cxquartz/service/quartz/impl/QuartzServiceImpl.java
+22
-20
src/main/resources/application-dev.yml
src/main/resources/application-dev.yml
+6
-33
src/main/resources/application-dev85.yml
src/main/resources/application-dev85.yml
+25
-0
src/main/resources/application-local.yml
src/main/resources/application-local.yml
+11
-17
src/main/resources/application-test.yml
src/main/resources/application-test.yml
+34
-0
src/main/resources/application.yml
src/main/resources/application.yml
+15
-4
src/main/resources/db/db.sql
src/main/resources/db/db.sql
+0
-46
src/main/resources/file.properties
src/main/resources/file.properties
+1
-5
src/main/resources/logback-spring.xml
src/main/resources/logback-spring.xml
+1
-1
src/main/resources/mapper/SbtdspsrMapper.xml
src/main/resources/mapper/SbtdspsrMapper.xml
+1
-1
src/main/resources/mapper/TraffPictureMapper.xml
src/main/resources/mapper/TraffPictureMapper.xml
+3
-0
src/main/resources/static/css/aero.css
src/main/resources/static/css/aero.css
+0
-53
src/main/resources/static/css/animate.min.css
src/main/resources/static/css/animate.min.css
+0
-6
src/main/resources/static/css/bootstrap.min.css
src/main/resources/static/css/bootstrap.min.css
+0
-5
src/main/resources/static/css/font-awesome.min.css
src/main/resources/static/css/font-awesome.min.css
+0
-4
src/main/resources/static/css/loginstyle.css
src/main/resources/static/css/loginstyle.css
+0
-180
src/main/resources/static/css/mediaelementplayer.css
src/main/resources/static/css/mediaelementplayer.css
+0
-980
src/main/resources/static/css/red.css
src/main/resources/static/css/red.css
+0
-53
src/main/resources/static/css/reset.css
src/main/resources/static/css/reset.css
+0
-44
src/main/resources/static/css/simple-line-icons.css
src/main/resources/static/css/simple-line-icons.css
+0
-758
src/main/resources/static/css/style.css
src/main/resources/static/css/style.css
+0
-6493
src/main/resources/static/css/supersized.css
src/main/resources/static/css/supersized.css
+0
-23
src/main/resources/static/js/canvasutil.js
src/main/resources/static/js/canvasutil.js
+0
-328
src/main/resources/static/js/jquery-1.8.2.min.js
src/main/resources/static/js/jquery-1.8.2.min.js
+0
-2
src/main/resources/static/js/jquery.min.js
src/main/resources/static/js/jquery.min.js
+0
-4
src/main/resources/static/js/supersized-init.js
src/main/resources/static/js/supersized-init.js
+0
-30
src/main/resources/static/js/supersized.3.2.7.min.js
src/main/resources/static/js/supersized.3.2.7.min.js
+0
-3
src/main/resources/static/snapshot/11111.jpg
src/main/resources/static/snapshot/11111.jpg
+0
-0
src/main/resources/templates/addtask.html
src/main/resources/templates/addtask.html
+0
-689
src/main/resources/templates/addtask2.html
src/main/resources/templates/addtask2.html
+0
-132
src/main/resources/templates/index.html
src/main/resources/templates/index.html
+0
-200
src/main/resources/templates/login.html
src/main/resources/templates/login.html
+0
-73
src/main/resources/templates/taskerrors.html
src/main/resources/templates/taskerrors.html
+0
-91
src/main/resources/templates/taskrecords.html
src/main/resources/templates/taskrecords.html
+0
-73
src/main/resources/templates/updatetask.html
src/main/resources/templates/updatetask.html
+0
-753
src/main/resources/templates/updatetask1.html
src/main/resources/templates/updatetask1.html
+0
-526
No files found.
src/main/java/com/cx/cn/cxquartz/controller/ExtController.java
View file @
38d3544b
...
@@ -8,7 +8,6 @@ import com.cx.cn.cxquartz.service.quartz.*;
...
@@ -8,7 +8,6 @@ import com.cx.cn.cxquartz.service.quartz.*;
import
com.cx.cn.cxquartz.service.quartz.impl.EventWriteService
;
import
com.cx.cn.cxquartz.service.quartz.impl.EventWriteService
;
import
com.cx.cn.cxquartz.util.*
;
import
com.cx.cn.cxquartz.util.*
;
import
com.cx.cn.cxquartz.vo.*
;
import
com.cx.cn.cxquartz.vo.*
;
import
com.cx.cn.cxquartz.vo.Point
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
...
@@ -18,12 +17,8 @@ import org.springframework.context.annotation.PropertySource;
...
@@ -18,12 +17,8 @@ import org.springframework.context.annotation.PropertySource;
import
org.springframework.http.*
;
import
org.springframework.http.*
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.client.RestTemplate
;
import
sun.misc.BASE64Encoder
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.imageio.ImageIO
;
import
java.awt.*
;
import
java.awt.image.BufferedImage
;
import
java.io.*
;
import
java.io.*
;
import
java.util.*
;
import
java.util.*
;
import
java.util.List
;
import
java.util.List
;
...
@@ -59,9 +54,6 @@ public class ExtController {
...
@@ -59,9 +54,6 @@ public class ExtController {
private
String
outpath
;
private
String
outpath
;
@Value
(
"${file.webrl}"
)
private
String
webrl
;
@Value
(
"${voice.unionId}"
)
@Value
(
"${voice.unionId}"
)
private
String
unionId
;
private
String
unionId
;
@Value
(
"${countryside.callbackurl}"
)
@Value
(
"${countryside.callbackurl}"
)
...
@@ -165,21 +157,16 @@ public class ExtController {
...
@@ -165,21 +157,16 @@ public class ExtController {
@RequestMapping
(
value
=
"/getDeviceSnapshotAndRecognize"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/getDeviceSnapshotAndRecognize"
,
method
=
RequestMethod
.
POST
)
public
String
getDeviceSnapshotAndRecognize
(
@RequestBody
String
devicecode
)
{
public
String
getDeviceSnapshotAndRecognize
(
@RequestBody
String
devicecode
)
{
// logger.info("getDeviceSnapshotAndRecognize is running :{}",devicecode);
//根据判断监控是否存在,该监控检测的事件是什么
//根据判断监控是否存在,该监控检测的事件是什么
List
<
QuartzTaskInformations
>
mapList
=
sbtdspsrService
.
selectRecogByRtsp
(
devicecode
);
List
<
QuartzTaskInformations
>
mapList
=
sbtdspsrService
.
selectRecogByRtsp
(
devicecode
);
String
model
=
"1"
;
String
model
=
"1"
;
//图片框选出来的范围
//图片框选出来的范围
Long
[]
roiarray
;
Long
[]
roiarray
;
String
videoid
,
tdmc
;
if
(
null
!=
mapList
&&
!
mapList
.
equals
(
""
)
&&
mapList
.
size
()
>
0
)
{
if
(
null
!=
mapList
&&
!
mapList
.
equals
(
""
)
&&
mapList
.
size
()
>
0
)
{
//查询该监控下面还没有经过分析的数据
//查询该监控下面还没有经过分析的数据
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"sbbh"
,
devicecode
);
map
.
put
(
"sbbh"
,
devicecode
);
//List<TraffAlarmRecord> traffalarmrecordlist = traffAlarmRecordService.getTraffAlarmRecordByProgress(map);
// if (traffalarmrecordlist.size() < 1) {
// return ResultUtil.success();
// }
HttpHeaders
headers
=
new
HttpHeaders
();
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON_UTF8
);
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON_UTF8
);
Map
<
String
,
Object
>
mapparam
=
new
HashMap
<>();
Map
<
String
,
Object
>
mapparam
=
new
HashMap
<>();
...
@@ -233,18 +220,17 @@ public class ExtController {
...
@@ -233,18 +220,17 @@ public class ExtController {
devicecode
;
devicecode
;
String
filename
=
devicecode
+
"_"
+
DateUtils
.
formatCurrDateNoSign
()+
"_result.jpg"
;
String
filename
=
devicecode
+
"_"
+
DateUtils
.
formatCurrDateNoSign
()+
"_result.jpg"
;
eventWriteService
.
uploadPicture
(
traffpictureParamresult
,
imageurl
,
points
,
basepath
,
filename
);
eventWriteService
.
uploadPicture
(
traffpictureParamresult
,
imageurl
,
points
,
basepath
,
filename
);
String
filenameurl
=
webrl
+
File
.
separator
+
outpath
+
File
.
separator
+
basepath
+
File
.
separator
+
filename
;
String
filenameurl
=
File
.
separator
+
outpath
+
File
.
separator
+
basepath
+
File
.
separator
+
filename
;
jobTjParam
.
setImageUrl
(
filenameurl
);
jobTjParam
.
setImageUrl
(
filenameurl
);
// logger.info("file path:{}",filenameurl);
// logger.info("file path:{}",filenameurl);
traffpictureParamresult
.
setImagedata
(
filenameurl
);
traffpictureParamresult
.
setImagedata
(
filenameurl
);
//traffpictureParamresult.setTargetnum( Integer.parseInt(taskinfo.getMetatype())
);
traffpictureParamresult
.
setProcessstatus
(
"-1"
);
traffPictureService
.
updateTraffpicture
(
traffpictureParamresult
);
traffPictureService
.
updateTraffpicture
(
traffpictureParamresult
);
//回调
//回调
// logger.info("send to dianxin data:{}",JSONObject.toJSONString(jobTjParam));
// logger.info("send to dianxin data:{}",JSONObject.toJSONString(jobTjParam));
eventWriteService
.
sendEventByCallUrl
(
traffpictureParamresult
,
jobTjParam
,
taskinfo
.
getUrl
().
equals
(
""
)?
callbackurl:
taskinfo
.
getUrl
());
eventWriteService
.
sendEventByCallUrl
(
traffpictureParamresult
,
jobTjParam
,
taskinfo
.
getUrl
().
equals
(
""
)?
callbackurl:
taskinfo
.
getUrl
());
//推送告警到前端
webSocket
.
GroupSending
(
new
ObjectMapper
().
writeValueAsString
(
traffpictureParamresult
));
if
(
unionId
.
contains
(
devicecode
))
{
if
(
unionId
.
contains
(
devicecode
))
{
VoiceData
voicedata
=
new
VoiceData
();
VoiceData
voicedata
=
new
VoiceData
();
voicedata
.
setAppKey
(
appKey
);
voicedata
.
setAppKey
(
appKey
);
...
@@ -256,6 +242,8 @@ public class ExtController {
...
@@ -256,6 +242,8 @@ public class ExtController {
// logger.info(" send to voice: {}", new ObjectMapper().writeValueAsString(voicedata));
// logger.info(" send to voice: {}", new ObjectMapper().writeValueAsString(voicedata));
eventWriteService
.
sendVoice
(
voicedata
);
eventWriteService
.
sendVoice
(
voicedata
);
}
}
//推送告警到前端
webSocket
.
GroupSending
(
new
ObjectMapper
().
writeValueAsString
(
traffpictureParamresult
));
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
}
}
...
...
src/main/java/com/cx/cn/cxquartz/controller/IndexController.java
View file @
38d3544b
...
@@ -43,55 +43,55 @@ public class IndexController {
...
@@ -43,55 +43,55 @@ public class IndexController {
@Autowired
@Autowired
TraffPictureService
traffPictureService
;
TraffPictureService
traffPictureService
;
//
// @RequestMapping(value = "/", method = RequestMethod.GET)
// public String listTasks(Model model, @RequestParam(value = "currentPage", required = false, defaultValue = "1") String currentPage,
// @RequestParam(value = "taskNo", required = false) String taskNo, HttpServletRequest request) {
// try {
//
// List<QuartzTaskInformations> taskList = quartzService.getTaskList(taskNo, currentPage);
// for(QuartzTaskInformations task:taskList)
// {
// task.setSchedulerrule(task.getSchedulerrule().replaceAll("\\?","").replaceAll("\\*","").replaceAll("\\/",""));
//
// }
// int current = Integer.parseInt(currentPage);
// Page<QuartzTaskInformations> page = new Page(taskList, taskList.size(), current);
// model.addAttribute("taskList", taskList);
// model.addAttribute("size", taskList.size());
// model.addAttribute("currentPage", page.getCurrentPage());
// model.addAttribute("totalPage", page.getTotalPage());
// model.addAttribute("taskNo", taskNo);
// } catch (Exception e) {
// logger.error("首页跳转发生异常exceptions-->" + e.toString());
// }
// return "index";
// }
//
// @GetMapping("/getrealcamerasnapshot")
// @ResponseBody
// public String index(@RequestParam("url") String url,
// @RequestParam("refresh") String refresh) {
// return "{\"ret\": 0," +
// "\"desc\": \"succ!\"," +
// "\"url\": \"http://localhost:8089/snapshot/11111.jpg\"" +
// "}";
// }
//
//
// @PostMapping("/images/recog")
// @ResponseBody
// public String images(@RequestBody GoalStructureParam param) {
// return "{\"ret\":\"200\",\"error_msg\":\"OK\",\"ObjectList\":[{\"ImageID\":\"1\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"Angle\":\"128\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"UpperBoundingBox\":{\"x\":34,\"y\":123,\"w\":232,\"h\":263},\"LowerBoundingBox\":{\"x\":74,\"y\":309,\"w\":176,\"h\":408},\"CoatLength\":\"2\",\"CoatTexture\":\"1\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"TrousersLength\":\"1\",\"TrousersTexture\":\"1\",\"TrousersColor\":[\"5\"],\"TrousersColorNums\":\"1\",\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasGlasses\":\"0\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"0\",\"HasUmbrella\":\"0\",\"HasTrolley\":\"-1\",\"HasLuggage\":\"-1\",\"LuggageColor\":[],\"LuggageColorNums\":\"0\",\"HasKnife\":\"-1\",\"ObjectBoundingBox\":{\"x\":26,\"y\":13,\"w\":256,\"h\":708},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"3\",\"ObjectID\":1,\"Metadata\":{\"Angle\":\"128\",\"VehicleClass\":\"1\",\"VehicleColor\":[\"9\"],\"VehicleColorNums\":\"1\",\"VehicleBrand\":\"\\u96ea\\u4f5b\\u5170-\\u79d1\\u9c81\\u5179-2009_2013\",\"VehicleMainBrandName\":\"\\u96ea\\u4f5b\\u5170\",\"VehicleSubBrandName\":\"\\u79d1\\u9c81\\u5179\",\"VehicleYearName\":\"2009_2013\",\"HasPlate\":\"1\",\"PlateClass\":\"1\",\"PlateColor\":\"2\",\"PlateNo\":\"\\u6d59AJ079B\",\"PlateNeatness\":\"2\",\"Sunvisor\":\"0\",\"Paper\":\"0\",\"Decoration\":\"0\",\"Drop\":\"1\",\"Tag\":\"1\",\"SafetyBelt\":{\"MainDriver\":\"-1\",\"CoDriver\":\"-1\"},\"HasCall\":\"-1\",\"HasSkylight\":\"0\",\"HasBaggage\":\"0\",\"HasAerial\":\"0\",\"HasCrash\":\"-1\",\"HasDanger\":\"0\",\"HighwayTollVehicles\":\"1\",\"ObjectBoundingBox\":{\"x\":41,\"y\":40,\"w\":894,\"h\":717},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"AAAAAAAAAAAAAAAPAAAAAAAKABQAAAAAAAAAAAAAAAAhAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAAAAAAEwELAAAAAAAAAAAAAAAAAAAAAAAFCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAABIAAAAAABMAAAEAAAAAAAAAAAAAAAAAABAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAHgAAAAAAAAAAAAAAAgAAAAAHAAATAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAAAAAAAAAcAAAAAB8AAAAAAAAAAAAAAAAAAAAAABoDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAMDgAAAAAAAB0AAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAA=\",\"BucketID\":76,\"BucketIDList\":[76,91,82,57,36,51,75,55,71,43,84,63,8,98,83,65,90,60,35,3,37,39,74,2,12,9,1,20,79,32,95,49,33,58,42,66,38,69,45,56,59,0,87,19,41,34,21,14,13,6,4,26,68,96,72,7,85,29,48,40,88,99,23,46,27,18,77,78,11,97,17,50,15,61,16,31,80,44,52,25,10,86,92,5,54,53,73,89,94,93,70,62,30,47,64,22,28,67,81,24],\"FaceFeature\":\"\",\"FaceBucketID\":-1,\"FaceBucketIDList\":[],\"FaceQuality\":\"0.000000\",\"FaceYaw\":\"0.000000\",\"FacePitch\":\"0.000000\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.000000\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"4\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"16\",\"Angle\":\"128\",\"BikeClass\":\"1\",\"SocialAttribute\":\"1\",\"Enterprise\":\"-1\",\"FaceBoundingBox\":{\"x\":145,\"y\":65,\"w\":54,\"h\":66},\"CoatLength\":\"2\",\"CoatTexture\":\"5\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"HelmetColor\":\"-1\",\"HasHelmet\":\"0\",\"HasGlasses\":\"1\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"-1\",\"HasUmbrella\":\"0\",\"HasPlate\":\"-1\",\"PlateNo\":\"-1\",\"HasPassenger\":\"1\",\"ObjectBoundingBox\":{\"x\":54,\"y\":16,\"w\":276,\"h\":635},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA/wACAf/3AfwEA/kC/AMAAwAEAQACAPv+AAAB/wMHAgEA/wAGAAj/+AD7APwCAwkD9wsAAP4CBvn7/wz5A/wBBP8D/QICCAUCBv/7AgABAv7+AAH9AAUC/AX/AvsC/P4CAv39BAMA/gAAAAIA/wT6/v77A/YEAPoB//sG//7+/wD+/QAA/AMAAAQCAvz8/P3/AAH9+gX8/wD8/fr7AQAD//oA+AECAAAFAAH+/QH7/gIHAgYA/vz+AwADAgQCAgAL+wD9BgMGBv8E+/oF/P4H/wMD/gQC/wQH/v/4Agn9BQAC/wAE/P37BP/7AgIA/gj8APv7CAL9/vkABgL7/fz9/AD1BwD7AwAAAwH7AAb7+v4AAwX6/PsDBwMA/wH9AQD8AQP8APz7/vb8APoDAAT8AP0FAwYG/P39/P4B/vkA/f8AAgQBB/0D+wAFBwX4Aff+Bvz2/wEEBAIABQQD/wABAAMA//0AAP/+/wAC9/4AAfz+AAEF/f/6CAD9Bfn/APn9CwP3BAABBAAIAfr8/wP/CQn9BgL+Bf38A/z89gf6AAf9//wABAP9AgT19/4DAQMCAQQDAAABBf76+gEC/Pv9//4E//76AAAACQAA//kE//sDCfsGA/z7AAD7BAMAAAIAAgMA/P0D/wIE/v36//wAAgX8/voCAAT8BAkCAgEBAfwG+gEA/vr++AYAAQL7AAcAAP8BAAH9Af8A+QD+Agj7+wID/AAB+QcD//4ACQMEAvv+AvwBB/r7/gL/+AL7A/78+/4AAP39/QEFAwEA/QECCfz6AfwE/QMAAwD/Av4HAPz/AP4F/ggD+gMH+/UH+wID/wQGBPr2BP8KBAP/+/7//AP2/QT6//4CBAAFBgAFBf4E//v9BgADAAH9/gb4BAQHAAEA/QIB/vsE+/8GAPb7Av79AAD4AP4B+wf+/P4ABf79/wD/+QQA+fkB/voAA/oDAQUDAP79BAkGAAn/AQMB//76APz8BQD9AgEB/Pf6/wcAAwcHAgEA/QH/AP/6A/75BP8E/QD+AgT+AwEF+PkC//37/f79/gAAAQUA+AEEAAX9/wL8AgAFAwAA+v8G+wQA/QEF/wD+BAAGAwABAf0JAgMD+wUGAf39APoA/gQHAAID/AAF//8GA//8/QUC/gEC/vwGAv0BAAD9/ggCAAYBAwL/AQD9/fYD/wIE/f/4BP4AAAD8+wH5Bwb7AAQF+v/0//j9+/v/AP4CAgAA/v4AAP7+Bfv/CwECAQD7CgH5AQEAAQQAAP76APkABQIBBv0JAwABBwD++wD+//35+QPy/v0FAAYC+QD9Avr5CgQIA/35/AADAQH6+AEIAwEEAAMA/AMD+wADAAP///kFBAEBAA==\",\"BucketID\":5,\"BucketIDList\":[5,3,83,30,43,82,55,80,46,51,61,79,97,67,21,91,88,90,99,12,23,0,1,36,47,54,37,27,14,50,16,8,53,25,52,29,18,60,38,98,62,4,15,2,20,22,17,96,65,44,75,59,93,66,31,10,45,48,13,7,57,76,72,77,56,94,81,87,95,6,92,69,74,39,35,26,34,71,41,85,64,49,24,42,73,78,58,63,89,11,86,68,32,28,19,9,40,33,70,84],\"FaceFeature\":\"BQD5+Af/BP4I/AD7AP/9AAcC/QT6/P4HAfr9B/sIBf8O/AD8BwYKCA0AAv77/gAE+gAL/wMA/QD9AAAG/vv8AAP7BvwBAAn4AAf/AQAOAP8A7wIBAv8EAwAFAf/5CPoABQEDBwEFBQb5/fb+AO4G+AAB/wML9PsAA/oHBwYF/Pz7/gUK9QUABgEE+wH8AgL6+gb3AwEAAxL7CwD/DPcFAf30AAPz/QAE/QAABvn9AwD2/wQCAwACAQAKBAUD/v0A/voE//0B+Ab//vkC+vj/AAH7+AL7A/sDAPj7Bvn+/QoGAwEA/v//AP4D+wQDAf8K/QP2BgD5/QD//gEKA/v+BwAAAf3xAf/+/gT9AwP8DADzBw4AAvn//wAE+QH5AQv3C+38/Pf9/QII8gID9wMFCggFAv/9AvsEBvkACP8G9/z9AP/7/fwE+v39DPgAAAAB/fr5A/n8/wIDAAQK/wH+AwAAAvwADQoKAgAFAfsF+vsE//35C/3zCAD9BPsB/wMGB/n5/Pv0+Pb+BPn5/wMKAQAB8fT9Awf++/YAAAICAwUG+wD0+fkBB/0AAAQIBfgEBPkG/wcJAgD7CAv1Avf9AQYAAAEDAPYC+foJ+/78APwD8f4A/gUBB/7///oLAwD/AAUD+/39+PsH+QIF9gMEA/oGAQsMBQkHA/wB+PwCAgA=\",\"FaceBucketID\":82,\"FaceBucketIDList\":[82,45,63,31,16,1,7,98,40,24,65,19,62,48,94,72,92,17,91,52,77,76,85,87,81,21,93,64,37,42,30,78,25,61,9,12,22,2,13,34,4,15,46,3,14,99,90,28,66,29,75,68,80,59,60,88,69,83,36,55,11,44,96,89,10,26,49,50,73,6,53,20,47,86,58,84,27,8,70,43,57,71,97,79,0,67,54,33,23,95,56,5,41,38,51,32,74,39,35,18],\"FaceQuality\":\"0.365118\",\"FaceYaw\":\"0.257412\",\"FacePitch\":\"0.390233\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.475882\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"2\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasMask\":\"1\",\"HasGlasses\":\"0\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1}]}";}
@RequestMapping
(
value
=
"/"
,
method
=
RequestMethod
.
GET
)
// @GetMapping("/images1/recog")
public
String
listTasks
(
Model
model
,
@RequestParam
(
value
=
"currentPage"
,
required
=
false
,
defaultValue
=
"1"
)
String
currentPage
,
// @ResponseBody
@RequestParam
(
value
=
"taskNo"
,
required
=
false
)
String
taskNo
,
HttpServletRequest
request
)
{
// //http://zlsh.ncpoi.cc:7080/getDeviceSnapshotAndRecognize?deviceCode=33050300001327599605&model=7&roi=[10,10,10,10]
try
{
// public String getimages(@RequestParam("deviceCode") String deviceCode,
// @RequestParam("model") String model,
List
<
QuartzTaskInformations
>
taskList
=
quartzService
.
getTaskList
(
taskNo
,
currentPage
);
// @RequestParam("roi") Long[] roi) {
for
(
QuartzTaskInformations
task:
taskList
)
// return "{\"ret\":\"200\",\"error_msg\":\"OK\",\"ObjectList\":[{\"ImageID\":\"1\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"Angle\":\"128\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"UpperBoundingBox\":{\"x\":34,\"y\":123,\"w\":232,\"h\":263},\"LowerBoundingBox\":{\"x\":74,\"y\":309,\"w\":176,\"h\":408},\"CoatLength\":\"2\",\"CoatTexture\":\"1\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"TrousersLength\":\"1\",\"TrousersTexture\":\"1\",\"TrousersColor\":[\"5\"],\"TrousersColorNums\":\"1\",\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasGlasses\":\"0\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"0\",\"HasUmbrella\":\"0\",\"HasTrolley\":\"-1\",\"HasLuggage\":\"-1\",\"LuggageColor\":[],\"LuggageColorNums\":\"0\",\"HasKnife\":\"-1\",\"ObjectBoundingBox\":{\"x\":26,\"y\":13,\"w\":256,\"h\":708},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"3\",\"ObjectID\":1,\"Metadata\":{\"Angle\":\"128\",\"VehicleClass\":\"1\",\"VehicleColor\":[\"9\"],\"VehicleColorNums\":\"1\",\"VehicleBrand\":\"\\u96ea\\u4f5b\\u5170-\\u79d1\\u9c81\\u5179-2009_2013\",\"VehicleMainBrandName\":\"\\u96ea\\u4f5b\\u5170\",\"VehicleSubBrandName\":\"\\u79d1\\u9c81\\u5179\",\"VehicleYearName\":\"2009_2013\",\"HasPlate\":\"1\",\"PlateClass\":\"1\",\"PlateColor\":\"2\",\"PlateNo\":\"\\u6d59AJ079B\",\"PlateNeatness\":\"2\",\"Sunvisor\":\"0\",\"Paper\":\"0\",\"Decoration\":\"0\",\"Drop\":\"1\",\"Tag\":\"1\",\"SafetyBelt\":{\"MainDriver\":\"-1\",\"CoDriver\":\"-1\"},\"HasCall\":\"-1\",\"HasSkylight\":\"0\",\"HasBaggage\":\"0\",\"HasAerial\":\"0\",\"HasCrash\":\"-1\",\"HasDanger\":\"0\",\"HighwayTollVehicles\":\"1\",\"ObjectBoundingBox\":{\"x\":41,\"y\":40,\"w\":894,\"h\":717},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"AAAAAAAAAAAAAAAPAAAAAAAKABQAAAAAAAAAAAAAAAAhAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAAAAAAEwELAAAAAAAAAAAAAAAAAAAAAAAFCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAABIAAAAAABMAAAEAAAAAAAAAAAAAAAAAABAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAHgAAAAAAAAAAAAAAAgAAAAAHAAATAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAAAAAAAAAcAAAAAB8AAAAAAAAAAAAAAAAAAAAAABoDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAMDgAAAAAAAB0AAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAA=\",\"BucketID\":76,\"BucketIDList\":[76,91,82,57,36,51,75,55,71,43,84,63,8,98,83,65,90,60,35,3,37,39,74,2,12,9,1,20,79,32,95,49,33,58,42,66,38,69,45,56,59,0,87,19,41,34,21,14,13,6,4,26,68,96,72,7,85,29,48,40,88,99,23,46,27,18,77,78,11,97,17,50,15,61,16,31,80,44,52,25,10,86,92,5,54,53,73,89,94,93,70,62,30,47,64,22,28,67,81,24],\"FaceFeature\":\"\",\"FaceBucketID\":-1,\"FaceBucketIDList\":[],\"FaceQuality\":\"0.000000\",\"FaceYaw\":\"0.000000\",\"FacePitch\":\"0.000000\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.000000\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"4\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"16\",\"Angle\":\"128\",\"BikeClass\":\"1\",\"SocialAttribute\":\"1\",\"Enterprise\":\"-1\",\"FaceBoundingBox\":{\"x\":145,\"y\":65,\"w\":54,\"h\":66},\"CoatLength\":\"2\",\"CoatTexture\":\"5\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"HelmetColor\":\"-1\",\"HasHelmet\":\"0\",\"HasGlasses\":\"1\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"-1\",\"HasUmbrella\":\"0\",\"HasPlate\":\"-1\",\"PlateNo\":\"-1\",\"HasPassenger\":\"1\",\"ObjectBoundingBox\":{\"x\":54,\"y\":16,\"w\":276,\"h\":635},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA/wACAf/3AfwEA/kC/AMAAwAEAQACAPv+AAAB/wMHAgEA/wAGAAj/+AD7APwCAwkD9wsAAP4CBvn7/wz5A/wBBP8D/QICCAUCBv/7AgABAv7+AAH9AAUC/AX/AvsC/P4CAv39BAMA/gAAAAIA/wT6/v77A/YEAPoB//sG//7+/wD+/QAA/AMAAAQCAvz8/P3/AAH9+gX8/wD8/fr7AQAD//oA+AECAAAFAAH+/QH7/gIHAgYA/vz+AwADAgQCAgAL+wD9BgMGBv8E+/oF/P4H/wMD/gQC/wQH/v/4Agn9BQAC/wAE/P37BP/7AgIA/gj8APv7CAL9/vkABgL7/fz9/AD1BwD7AwAAAwH7AAb7+v4AAwX6/PsDBwMA/wH9AQD8AQP8APz7/vb8APoDAAT8AP0FAwYG/P39/P4B/vkA/f8AAgQBB/0D+wAFBwX4Aff+Bvz2/wEEBAIABQQD/wABAAMA//0AAP/+/wAC9/4AAfz+AAEF/f/6CAD9Bfn/APn9CwP3BAABBAAIAfr8/wP/CQn9BgL+Bf38A/z89gf6AAf9//wABAP9AgT19/4DAQMCAQQDAAABBf76+gEC/Pv9//4E//76AAAACQAA//kE//sDCfsGA/z7AAD7BAMAAAIAAgMA/P0D/wIE/v36//wAAgX8/voCAAT8BAkCAgEBAfwG+gEA/vr++AYAAQL7AAcAAP8BAAH9Af8A+QD+Agj7+wID/AAB+QcD//4ACQMEAvv+AvwBB/r7/gL/+AL7A/78+/4AAP39/QEFAwEA/QECCfz6AfwE/QMAAwD/Av4HAPz/AP4F/ggD+gMH+/UH+wID/wQGBPr2BP8KBAP/+/7//AP2/QT6//4CBAAFBgAFBf4E//v9BgADAAH9/gb4BAQHAAEA/QIB/vsE+/8GAPb7Av79AAD4AP4B+wf+/P4ABf79/wD/+QQA+fkB/voAA/oDAQUDAP79BAkGAAn/AQMB//76APz8BQD9AgEB/Pf6/wcAAwcHAgEA/QH/AP/6A/75BP8E/QD+AgT+AwEF+PkC//37/f79/gAAAQUA+AEEAAX9/wL8AgAFAwAA+v8G+wQA/QEF/wD+BAAGAwABAf0JAgMD+wUGAf39APoA/gQHAAID/AAF//8GA//8/QUC/gEC/vwGAv0BAAD9/ggCAAYBAwL/AQD9/fYD/wIE/f/4BP4AAAD8+wH5Bwb7AAQF+v/0//j9+/v/AP4CAgAA/v4AAP7+Bfv/CwECAQD7CgH5AQEAAQQAAP76APkABQIBBv0JAwABBwD++wD+//35+QPy/v0FAAYC+QD9Avr5CgQIA/35/AADAQH6+AEIAwEEAAMA/AMD+wADAAP///kFBAEBAA==\",\"BucketID\":5,\"BucketIDList\":[5,3,83,30,43,82,55,80,46,51,61,79,97,67,21,91,88,90,99,12,23,0,1,36,47,54,37,27,14,50,16,8,53,25,52,29,18,60,38,98,62,4,15,2,20,22,17,96,65,44,75,59,93,66,31,10,45,48,13,7,57,76,72,77,56,94,81,87,95,6,92,69,74,39,35,26,34,71,41,85,64,49,24,42,73,78,58,63,89,11,86,68,32,28,19,9,40,33,70,84],\"FaceFeature\":\"BQD5+Af/BP4I/AD7AP/9AAcC/QT6/P4HAfr9B/sIBf8O/AD8BwYKCA0AAv77/gAE+gAL/wMA/QD9AAAG/vv8AAP7BvwBAAn4AAf/AQAOAP8A7wIBAv8EAwAFAf/5CPoABQEDBwEFBQb5/fb+AO4G+AAB/wML9PsAA/oHBwYF/Pz7/gUK9QUABgEE+wH8AgL6+gb3AwEAAxL7CwD/DPcFAf30AAPz/QAE/QAABvn9AwD2/wQCAwACAQAKBAUD/v0A/voE//0B+Ab//vkC+vj/AAH7+AL7A/sDAPj7Bvn+/QoGAwEA/v//AP4D+wQDAf8K/QP2BgD5/QD//gEKA/v+BwAAAf3xAf/+/gT9AwP8DADzBw4AAvn//wAE+QH5AQv3C+38/Pf9/QII8gID9wMFCggFAv/9AvsEBvkACP8G9/z9AP/7/fwE+v39DPgAAAAB/fr5A/n8/wIDAAQK/wH+AwAAAvwADQoKAgAFAfsF+vsE//35C/3zCAD9BPsB/wMGB/n5/Pv0+Pb+BPn5/wMKAQAB8fT9Awf++/YAAAICAwUG+wD0+fkBB/0AAAQIBfgEBPkG/wcJAgD7CAv1Avf9AQYAAAEDAPYC+foJ+/78APwD8f4A/gUBB/7///oLAwD/AAUD+/39+PsH+QIF9gMEA/oGAQsMBQkHA/wB+PwCAgA=\",\"FaceBucketID\":82,\"FaceBucketIDList\":[82,45,63,31,16,1,7,98,40,24,65,19,62,48,94,72,92,17,91,52,77,76,85,87,81,21,93,64,37,42,30,78,25,61,9,12,22,2,13,34,4,15,46,3,14,99,90,28,66,29,75,68,80,59,60,88,69,83,36,55,11,44,96,89,10,26,49,50,73,6,53,20,47,86,58,84,27,8,70,43,57,71,97,79,0,67,54,33,23,95,56,5,41,38,51,32,74,39,35,18],\"FaceQuality\":\"0.365118\",\"FaceYaw\":\"0.257412\",\"FacePitch\":\"0.390233\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.475882\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"2\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasMask\":\"1\",\"HasGlasses\":\"0\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1}]}";}
{
//
task
.
setSchedulerrule
(
task
.
getSchedulerrule
().
replaceAll
(
"\\?"
,
""
).
replaceAll
(
"\\*"
,
""
).
replaceAll
(
"\\/"
,
""
));
}
int
current
=
Integer
.
parseInt
(
currentPage
);
Page
<
QuartzTaskInformations
>
page
=
new
Page
(
taskList
,
taskList
.
size
(),
current
);
model
.
addAttribute
(
"taskList"
,
taskList
);
model
.
addAttribute
(
"size"
,
taskList
.
size
());
model
.
addAttribute
(
"currentPage"
,
page
.
getCurrentPage
());
model
.
addAttribute
(
"totalPage"
,
page
.
getTotalPage
());
model
.
addAttribute
(
"taskNo"
,
taskNo
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"首页跳转发生异常exceptions-->"
+
e
.
toString
());
}
return
"index"
;
}
@GetMapping
(
"/getrealcamerasnapshot"
)
@ResponseBody
public
String
index
(
@RequestParam
(
"url"
)
String
url
,
@RequestParam
(
"refresh"
)
String
refresh
)
{
return
"{\"ret\": 0,"
+
"\"desc\": \"succ!\","
+
"\"url\": \"http://localhost:8089/snapshot/11111.jpg\""
+
"}"
;
}
@PostMapping
(
"/images/recog"
)
@ResponseBody
public
String
images
(
@RequestBody
GoalStructureParam
param
)
{
return
"{\"ret\":\"200\",\"error_msg\":\"OK\",\"ObjectList\":[{\"ImageID\":\"1\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"Angle\":\"128\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"UpperBoundingBox\":{\"x\":34,\"y\":123,\"w\":232,\"h\":263},\"LowerBoundingBox\":{\"x\":74,\"y\":309,\"w\":176,\"h\":408},\"CoatLength\":\"2\",\"CoatTexture\":\"1\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"TrousersLength\":\"1\",\"TrousersTexture\":\"1\",\"TrousersColor\":[\"5\"],\"TrousersColorNums\":\"1\",\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasGlasses\":\"0\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"0\",\"HasUmbrella\":\"0\",\"HasTrolley\":\"-1\",\"HasLuggage\":\"-1\",\"LuggageColor\":[],\"LuggageColorNums\":\"0\",\"HasKnife\":\"-1\",\"ObjectBoundingBox\":{\"x\":26,\"y\":13,\"w\":256,\"h\":708},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"3\",\"ObjectID\":1,\"Metadata\":{\"Angle\":\"128\",\"VehicleClass\":\"1\",\"VehicleColor\":[\"9\"],\"VehicleColorNums\":\"1\",\"VehicleBrand\":\"\\u96ea\\u4f5b\\u5170-\\u79d1\\u9c81\\u5179-2009_2013\",\"VehicleMainBrandName\":\"\\u96ea\\u4f5b\\u5170\",\"VehicleSubBrandName\":\"\\u79d1\\u9c81\\u5179\",\"VehicleYearName\":\"2009_2013\",\"HasPlate\":\"1\",\"PlateClass\":\"1\",\"PlateColor\":\"2\",\"PlateNo\":\"\\u6d59AJ079B\",\"PlateNeatness\":\"2\",\"Sunvisor\":\"0\",\"Paper\":\"0\",\"Decoration\":\"0\",\"Drop\":\"1\",\"Tag\":\"1\",\"SafetyBelt\":{\"MainDriver\":\"-1\",\"CoDriver\":\"-1\"},\"HasCall\":\"-1\",\"HasSkylight\":\"0\",\"HasBaggage\":\"0\",\"HasAerial\":\"0\",\"HasCrash\":\"-1\",\"HasDanger\":\"0\",\"HighwayTollVehicles\":\"1\",\"ObjectBoundingBox\":{\"x\":41,\"y\":40,\"w\":894,\"h\":717},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"AAAAAAAAAAAAAAAPAAAAAAAKABQAAAAAAAAAAAAAAAAhAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAAAAAAEwELAAAAAAAAAAAAAAAAAAAAAAAFCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAABIAAAAAABMAAAEAAAAAAAAAAAAAAAAAABAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAHgAAAAAAAAAAAAAAAgAAAAAHAAATAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAAAAAAAAAcAAAAAB8AAAAAAAAAAAAAAAAAAAAAABoDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAMDgAAAAAAAB0AAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAA=\",\"BucketID\":76,\"BucketIDList\":[76,91,82,57,36,51,75,55,71,43,84,63,8,98,83,65,90,60,35,3,37,39,74,2,12,9,1,20,79,32,95,49,33,58,42,66,38,69,45,56,59,0,87,19,41,34,21,14,13,6,4,26,68,96,72,7,85,29,48,40,88,99,23,46,27,18,77,78,11,97,17,50,15,61,16,31,80,44,52,25,10,86,92,5,54,53,73,89,94,93,70,62,30,47,64,22,28,67,81,24],\"FaceFeature\":\"\",\"FaceBucketID\":-1,\"FaceBucketIDList\":[],\"FaceQuality\":\"0.000000\",\"FaceYaw\":\"0.000000\",\"FacePitch\":\"0.000000\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.000000\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"4\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"16\",\"Angle\":\"128\",\"BikeClass\":\"1\",\"SocialAttribute\":\"1\",\"Enterprise\":\"-1\",\"FaceBoundingBox\":{\"x\":145,\"y\":65,\"w\":54,\"h\":66},\"CoatLength\":\"2\",\"CoatTexture\":\"5\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"HelmetColor\":\"-1\",\"HasHelmet\":\"0\",\"HasGlasses\":\"1\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"-1\",\"HasUmbrella\":\"0\",\"HasPlate\":\"-1\",\"PlateNo\":\"-1\",\"HasPassenger\":\"1\",\"ObjectBoundingBox\":{\"x\":54,\"y\":16,\"w\":276,\"h\":635},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA/wACAf/3AfwEA/kC/AMAAwAEAQACAPv+AAAB/wMHAgEA/wAGAAj/+AD7APwCAwkD9wsAAP4CBvn7/wz5A/wBBP8D/QICCAUCBv/7AgABAv7+AAH9AAUC/AX/AvsC/P4CAv39BAMA/gAAAAIA/wT6/v77A/YEAPoB//sG//7+/wD+/QAA/AMAAAQCAvz8/P3/AAH9+gX8/wD8/fr7AQAD//oA+AECAAAFAAH+/QH7/gIHAgYA/vz+AwADAgQCAgAL+wD9BgMGBv8E+/oF/P4H/wMD/gQC/wQH/v/4Agn9BQAC/wAE/P37BP/7AgIA/gj8APv7CAL9/vkABgL7/fz9/AD1BwD7AwAAAwH7AAb7+v4AAwX6/PsDBwMA/wH9AQD8AQP8APz7/vb8APoDAAT8AP0FAwYG/P39/P4B/vkA/f8AAgQBB/0D+wAFBwX4Aff+Bvz2/wEEBAIABQQD/wABAAMA//0AAP/+/wAC9/4AAfz+AAEF/f/6CAD9Bfn/APn9CwP3BAABBAAIAfr8/wP/CQn9BgL+Bf38A/z89gf6AAf9//wABAP9AgT19/4DAQMCAQQDAAABBf76+gEC/Pv9//4E//76AAAACQAA//kE//sDCfsGA/z7AAD7BAMAAAIAAgMA/P0D/wIE/v36//wAAgX8/voCAAT8BAkCAgEBAfwG+gEA/vr++AYAAQL7AAcAAP8BAAH9Af8A+QD+Agj7+wID/AAB+QcD//4ACQMEAvv+AvwBB/r7/gL/+AL7A/78+/4AAP39/QEFAwEA/QECCfz6AfwE/QMAAwD/Av4HAPz/AP4F/ggD+gMH+/UH+wID/wQGBPr2BP8KBAP/+/7//AP2/QT6//4CBAAFBgAFBf4E//v9BgADAAH9/gb4BAQHAAEA/QIB/vsE+/8GAPb7Av79AAD4AP4B+wf+/P4ABf79/wD/+QQA+fkB/voAA/oDAQUDAP79BAkGAAn/AQMB//76APz8BQD9AgEB/Pf6/wcAAwcHAgEA/QH/AP/6A/75BP8E/QD+AgT+AwEF+PkC//37/f79/gAAAQUA+AEEAAX9/wL8AgAFAwAA+v8G+wQA/QEF/wD+BAAGAwABAf0JAgMD+wUGAf39APoA/gQHAAID/AAF//8GA//8/QUC/gEC/vwGAv0BAAD9/ggCAAYBAwL/AQD9/fYD/wIE/f/4BP4AAAD8+wH5Bwb7AAQF+v/0//j9+/v/AP4CAgAA/v4AAP7+Bfv/CwECAQD7CgH5AQEAAQQAAP76APkABQIBBv0JAwABBwD++wD+//35+QPy/v0FAAYC+QD9Avr5CgQIA/35/AADAQH6+AEIAwEEAAMA/AMD+wADAAP///kFBAEBAA==\",\"BucketID\":5,\"BucketIDList\":[5,3,83,30,43,82,55,80,46,51,61,79,97,67,21,91,88,90,99,12,23,0,1,36,47,54,37,27,14,50,16,8,53,25,52,29,18,60,38,98,62,4,15,2,20,22,17,96,65,44,75,59,93,66,31,10,45,48,13,7,57,76,72,77,56,94,81,87,95,6,92,69,74,39,35,26,34,71,41,85,64,49,24,42,73,78,58,63,89,11,86,68,32,28,19,9,40,33,70,84],\"FaceFeature\":\"BQD5+Af/BP4I/AD7AP/9AAcC/QT6/P4HAfr9B/sIBf8O/AD8BwYKCA0AAv77/gAE+gAL/wMA/QD9AAAG/vv8AAP7BvwBAAn4AAf/AQAOAP8A7wIBAv8EAwAFAf/5CPoABQEDBwEFBQb5/fb+AO4G+AAB/wML9PsAA/oHBwYF/Pz7/gUK9QUABgEE+wH8AgL6+gb3AwEAAxL7CwD/DPcFAf30AAPz/QAE/QAABvn9AwD2/wQCAwACAQAKBAUD/v0A/voE//0B+Ab//vkC+vj/AAH7+AL7A/sDAPj7Bvn+/QoGAwEA/v//AP4D+wQDAf8K/QP2BgD5/QD//gEKA/v+BwAAAf3xAf/+/gT9AwP8DADzBw4AAvn//wAE+QH5AQv3C+38/Pf9/QII8gID9wMFCggFAv/9AvsEBvkACP8G9/z9AP/7/fwE+v39DPgAAAAB/fr5A/n8/wIDAAQK/wH+AwAAAvwADQoKAgAFAfsF+vsE//35C/3zCAD9BPsB/wMGB/n5/Pv0+Pb+BPn5/wMKAQAB8fT9Awf++/YAAAICAwUG+wD0+fkBB/0AAAQIBfgEBPkG/wcJAgD7CAv1Avf9AQYAAAEDAPYC+foJ+/78APwD8f4A/gUBB/7///oLAwD/AAUD+/39+PsH+QIF9gMEA/oGAQsMBQkHA/wB+PwCAgA=\",\"FaceBucketID\":82,\"FaceBucketIDList\":[82,45,63,31,16,1,7,98,40,24,65,19,62,48,94,72,92,17,91,52,77,76,85,87,81,21,93,64,37,42,30,78,25,61,9,12,22,2,13,34,4,15,46,3,14,99,90,28,66,29,75,68,80,59,60,88,69,83,36,55,11,44,96,89,10,26,49,50,73,6,53,20,47,86,58,84,27,8,70,43,57,71,97,79,0,67,54,33,23,95,56,5,41,38,51,32,74,39,35,18],\"FaceQuality\":\"0.365118\",\"FaceYaw\":\"0.257412\",\"FacePitch\":\"0.390233\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.475882\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"2\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasMask\":\"1\",\"HasGlasses\":\"0\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1}]}"
;}
@GetMapping
(
"/images1/recog"
)
@ResponseBody
//http://zlsh.ncpoi.cc:7080/getDeviceSnapshotAndRecognize?deviceCode=33050300001327599605&model=7&roi=[10,10,10,10]
public
String
getimages
(
@RequestParam
(
"deviceCode"
)
String
deviceCode
,
@RequestParam
(
"model"
)
String
model
,
@RequestParam
(
"roi"
)
Long
[]
roi
)
{
return
"{\"ret\":\"200\",\"error_msg\":\"OK\",\"ObjectList\":[{\"ImageID\":\"1\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"Angle\":\"128\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"UpperBoundingBox\":{\"x\":34,\"y\":123,\"w\":232,\"h\":263},\"LowerBoundingBox\":{\"x\":74,\"y\":309,\"w\":176,\"h\":408},\"CoatLength\":\"2\",\"CoatTexture\":\"1\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"TrousersLength\":\"1\",\"TrousersTexture\":\"1\",\"TrousersColor\":[\"5\"],\"TrousersColorNums\":\"1\",\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasGlasses\":\"0\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"0\",\"HasUmbrella\":\"0\",\"HasTrolley\":\"-1\",\"HasLuggage\":\"-1\",\"LuggageColor\":[],\"LuggageColorNums\":\"0\",\"HasKnife\":\"-1\",\"ObjectBoundingBox\":{\"x\":26,\"y\":13,\"w\":256,\"h\":708},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"3\",\"ObjectID\":1,\"Metadata\":{\"Angle\":\"128\",\"VehicleClass\":\"1\",\"VehicleColor\":[\"9\"],\"VehicleColorNums\":\"1\",\"VehicleBrand\":\"\\u96ea\\u4f5b\\u5170-\\u79d1\\u9c81\\u5179-2009_2013\",\"VehicleMainBrandName\":\"\\u96ea\\u4f5b\\u5170\",\"VehicleSubBrandName\":\"\\u79d1\\u9c81\\u5179\",\"VehicleYearName\":\"2009_2013\",\"HasPlate\":\"1\",\"PlateClass\":\"1\",\"PlateColor\":\"2\",\"PlateNo\":\"\\u6d59AJ079B\",\"PlateNeatness\":\"2\",\"Sunvisor\":\"0\",\"Paper\":\"0\",\"Decoration\":\"0\",\"Drop\":\"1\",\"Tag\":\"1\",\"SafetyBelt\":{\"MainDriver\":\"-1\",\"CoDriver\":\"-1\"},\"HasCall\":\"-1\",\"HasSkylight\":\"0\",\"HasBaggage\":\"0\",\"HasAerial\":\"0\",\"HasCrash\":\"-1\",\"HasDanger\":\"0\",\"HighwayTollVehicles\":\"1\",\"ObjectBoundingBox\":{\"x\":41,\"y\":40,\"w\":894,\"h\":717},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"AAAAAAAAAAAAAAAPAAAAAAAKABQAAAAAAAAAAAAAAAAhAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAAAAAAEwELAAAAAAAAAAAAAAAAAAAAAAAFCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAABIAAAAAABMAAAEAAAAAAAAAAAAAAAAAABAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAHgAAAAAAAAAAAAAAAgAAAAAHAAATAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAAAAAAAAAcAAAAAB8AAAAAAAAAAAAAAAAAAAAAABoDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAMDgAAAAAAAB0AAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAA=\",\"BucketID\":76,\"BucketIDList\":[76,91,82,57,36,51,75,55,71,43,84,63,8,98,83,65,90,60,35,3,37,39,74,2,12,9,1,20,79,32,95,49,33,58,42,66,38,69,45,56,59,0,87,19,41,34,21,14,13,6,4,26,68,96,72,7,85,29,48,40,88,99,23,46,27,18,77,78,11,97,17,50,15,61,16,31,80,44,52,25,10,86,92,5,54,53,73,89,94,93,70,62,30,47,64,22,28,67,81,24],\"FaceFeature\":\"\",\"FaceBucketID\":-1,\"FaceBucketIDList\":[],\"FaceQuality\":\"0.000000\",\"FaceYaw\":\"0.000000\",\"FacePitch\":\"0.000000\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.000000\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"4\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"16\",\"Angle\":\"128\",\"BikeClass\":\"1\",\"SocialAttribute\":\"1\",\"Enterprise\":\"-1\",\"FaceBoundingBox\":{\"x\":145,\"y\":65,\"w\":54,\"h\":66},\"CoatLength\":\"2\",\"CoatTexture\":\"5\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"HelmetColor\":\"-1\",\"HasHelmet\":\"0\",\"HasGlasses\":\"1\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"-1\",\"HasUmbrella\":\"0\",\"HasPlate\":\"-1\",\"PlateNo\":\"-1\",\"HasPassenger\":\"1\",\"ObjectBoundingBox\":{\"x\":54,\"y\":16,\"w\":276,\"h\":635},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA/wACAf/3AfwEA/kC/AMAAwAEAQACAPv+AAAB/wMHAgEA/wAGAAj/+AD7APwCAwkD9wsAAP4CBvn7/wz5A/wBBP8D/QICCAUCBv/7AgABAv7+AAH9AAUC/AX/AvsC/P4CAv39BAMA/gAAAAIA/wT6/v77A/YEAPoB//sG//7+/wD+/QAA/AMAAAQCAvz8/P3/AAH9+gX8/wD8/fr7AQAD//oA+AECAAAFAAH+/QH7/gIHAgYA/vz+AwADAgQCAgAL+wD9BgMGBv8E+/oF/P4H/wMD/gQC/wQH/v/4Agn9BQAC/wAE/P37BP/7AgIA/gj8APv7CAL9/vkABgL7/fz9/AD1BwD7AwAAAwH7AAb7+v4AAwX6/PsDBwMA/wH9AQD8AQP8APz7/vb8APoDAAT8AP0FAwYG/P39/P4B/vkA/f8AAgQBB/0D+wAFBwX4Aff+Bvz2/wEEBAIABQQD/wABAAMA//0AAP/+/wAC9/4AAfz+AAEF/f/6CAD9Bfn/APn9CwP3BAABBAAIAfr8/wP/CQn9BgL+Bf38A/z89gf6AAf9//wABAP9AgT19/4DAQMCAQQDAAABBf76+gEC/Pv9//4E//76AAAACQAA//kE//sDCfsGA/z7AAD7BAMAAAIAAgMA/P0D/wIE/v36//wAAgX8/voCAAT8BAkCAgEBAfwG+gEA/vr++AYAAQL7AAcAAP8BAAH9Af8A+QD+Agj7+wID/AAB+QcD//4ACQMEAvv+AvwBB/r7/gL/+AL7A/78+/4AAP39/QEFAwEA/QECCfz6AfwE/QMAAwD/Av4HAPz/AP4F/ggD+gMH+/UH+wID/wQGBPr2BP8KBAP/+/7//AP2/QT6//4CBAAFBgAFBf4E//v9BgADAAH9/gb4BAQHAAEA/QIB/vsE+/8GAPb7Av79AAD4AP4B+wf+/P4ABf79/wD/+QQA+fkB/voAA/oDAQUDAP79BAkGAAn/AQMB//76APz8BQD9AgEB/Pf6/wcAAwcHAgEA/QH/AP/6A/75BP8E/QD+AgT+AwEF+PkC//37/f79/gAAAQUA+AEEAAX9/wL8AgAFAwAA+v8G+wQA/QEF/wD+BAAGAwABAf0JAgMD+wUGAf39APoA/gQHAAID/AAF//8GA//8/QUC/gEC/vwGAv0BAAD9/ggCAAYBAwL/AQD9/fYD/wIE/f/4BP4AAAD8+wH5Bwb7AAQF+v/0//j9+/v/AP4CAgAA/v4AAP7+Bfv/CwECAQD7CgH5AQEAAQQAAP76APkABQIBBv0JAwABBwD++wD+//35+QPy/v0FAAYC+QD9Avr5CgQIA/35/AADAQH6+AEIAwEEAAMA/AMD+wADAAP///kFBAEBAA==\",\"BucketID\":5,\"BucketIDList\":[5,3,83,30,43,82,55,80,46,51,61,79,97,67,21,91,88,90,99,12,23,0,1,36,47,54,37,27,14,50,16,8,53,25,52,29,18,60,38,98,62,4,15,2,20,22,17,96,65,44,75,59,93,66,31,10,45,48,13,7,57,76,72,77,56,94,81,87,95,6,92,69,74,39,35,26,34,71,41,85,64,49,24,42,73,78,58,63,89,11,86,68,32,28,19,9,40,33,70,84],\"FaceFeature\":\"BQD5+Af/BP4I/AD7AP/9AAcC/QT6/P4HAfr9B/sIBf8O/AD8BwYKCA0AAv77/gAE+gAL/wMA/QD9AAAG/vv8AAP7BvwBAAn4AAf/AQAOAP8A7wIBAv8EAwAFAf/5CPoABQEDBwEFBQb5/fb+AO4G+AAB/wML9PsAA/oHBwYF/Pz7/gUK9QUABgEE+wH8AgL6+gb3AwEAAxL7CwD/DPcFAf30AAPz/QAE/QAABvn9AwD2/wQCAwACAQAKBAUD/v0A/voE//0B+Ab//vkC+vj/AAH7+AL7A/sDAPj7Bvn+/QoGAwEA/v//AP4D+wQDAf8K/QP2BgD5/QD//gEKA/v+BwAAAf3xAf/+/gT9AwP8DADzBw4AAvn//wAE+QH5AQv3C+38/Pf9/QII8gID9wMFCggFAv/9AvsEBvkACP8G9/z9AP/7/fwE+v39DPgAAAAB/fr5A/n8/wIDAAQK/wH+AwAAAvwADQoKAgAFAfsF+vsE//35C/3zCAD9BPsB/wMGB/n5/Pv0+Pb+BPn5/wMKAQAB8fT9Awf++/YAAAICAwUG+wD0+fkBB/0AAAQIBfgEBPkG/wcJAgD7CAv1Avf9AQYAAAEDAPYC+foJ+/78APwD8f4A/gUBB/7///oLAwD/AAUD+/39+PsH+QIF9gMEA/oGAQsMBQkHA/wB+PwCAgA=\",\"FaceBucketID\":82,\"FaceBucketIDList\":[82,45,63,31,16,1,7,98,40,24,65,19,62,48,94,72,92,17,91,52,77,76,85,87,81,21,93,64,37,42,30,78,25,61,9,12,22,2,13,34,4,15,46,3,14,99,90,28,66,29,75,68,80,59,60,88,69,83,36,55,11,44,96,89,10,26,49,50,73,6,53,20,47,86,58,84,27,8,70,43,57,71,97,79,0,67,54,33,23,95,56,5,41,38,51,32,74,39,35,18],\"FaceQuality\":\"0.365118\",\"FaceYaw\":\"0.257412\",\"FacePitch\":\"0.390233\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.475882\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"2\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasMask\":\"1\",\"HasGlasses\":\"0\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1}]}"
;}
/***
/***
* 旧版本透露账号密码舍弃掉
* 旧版本透露账号密码舍弃掉
...
@@ -184,176 +184,177 @@ public class IndexController {
...
@@ -184,176 +184,177 @@ public class IndexController {
// }
// }
//
//
//
//
//
// @GetMapping("/fielagent")
// @ResponseBody
// protected void fielagent(@RequestParam("ftpPath") String ftpPath, HttpServletRequest request, HttpServletResponse response) {
//
// long startTime = System.currentTimeMillis();
// FileInputStream hFile = null;
// OutputStream toClient = null;
// InputStream inputStream = null;
// BufferedInputStream bis = null;
// try {
// response.reset();
// response.setHeader("Expires", "Sat, 10 May 2059 12:00:00 GMT");
// response.setHeader("Cache-Control", "max-age=315360000");
//
// if (StringUtils.isNotBlank(ftpPath)) {
// //根据ftp path 查询 该traffpicture 的imagedata 的值,然后处理返回
//
// ftpPath= traffPictureService.queryimgdataByid(ftpPath);
//
// if (ftpPath.endsWith(".jpg") || ftpPath.endsWith(".JPG") || ftpPath.endsWith(".png") || ftpPath.endsWith(".PNG") || ftpPath.endsWith(".gif") || ftpPath.endsWith(".GIF")) {
// response.setContentType("image/" + ftpPath.substring(ftpPath.lastIndexOf(".") + 1) + "; charset=utf-8");
// } else if (ftpPath.endsWith(".mp4") || ftpPath.endsWith(".MP4")) {
// response.setContentType("video/mpeg4; charset=utf-8");
// String mp4file = ftpPath.substring(ftpPath.lastIndexOf("/") + 1);
// response.setHeader("Content-Disposition", "attachment;fileName=" + mp4file);
// }
//
// String destUrl = ftpPath;
// destUrl = new String(destUrl.getBytes("ISO8859-1"), "GBK");
// String[] arr = destUrl.split(";");
// FtpURLConnection ftpUrl = null;
// HttpURLConnection httpUrl = null;
// for (int i = 0; i < arr.length; i++) {
// try {
// URL url = new URL(arr[i]);
// if (arr[i].toUpperCase().indexOf("FTP") != -1) { // ftp
// ftpUrl = (FtpURLConnection) url.openConnection();
// ftpUrl.setConnectTimeout(5000);
// ftpUrl.setReadTimeout(5000);
// bis = new BufferedInputStream(ftpUrl.getInputStream());
// response.setContentLength(ftpUrl.getContentLength());
// } else { // http
// httpUrl = (HttpURLConnection) url.openConnection();
// httpUrl.setConnectTimeout(5000);
// httpUrl.setReadTimeout(5000);
// bis = new BufferedInputStream(httpUrl.getInputStream());
// response.setContentLength(httpUrl.getContentLength());
// }
// toClient = response.getOutputStream();
// IOUtils.copy(bis, toClient);
// } catch (Exception e) {
// response.setContentType("text/html;charset=GBK");
// response.setCharacterEncoding("GBK");
// PrintWriter out = response.getWriter();
// out.write("无法打开图片!");
// out.flush();
// } finally {
// if (bis != null) {
// bis.close();
// }
// if (bis != null) {
// bis.close();
// }
// if (httpUrl != null) {
// httpUrl.disconnect();
// }
// if (ftpUrl != null) {
// ftpUrl.close();
// }
// if (toClient != null) {
// toClient.close();
// }
// }
// }
// return;
// }
//
// } catch (Exception e) {
// } finally {
// IOUtils.closeQuietly(bis);
// IOUtils.closeQuietly(toClient);
// IOUtils.closeQuietly(hFile);
// IOUtils.closeQuietly(inputStream);
// }
//
// }
//
// @GetMapping("/api/alg/files")
// protected void files(@RequestParam("location") String location, HttpServletRequest request, HttpServletResponse response) {
// long startTime = System.currentTimeMillis();
// //ftp://reader:reader@33.50.1.22:21/
// //ftp.host=33.65.250.179:21:hzjt:1qaz2wsx
// String ftpPath="ftp://"+ftppath+"/"+location;
// FileInputStream hFile = null;
// OutputStream toClient = null;
// InputStream inputStream = null;
// BufferedInputStream bis = null;
// try {
// response.reset();
// response.setHeader("Expires", "Sat, 10 May 2059 12:00:00 GMT");
// response.setHeader("Cache-Control", "max-age=315360000");
//
// if (StringUtils.isNotBlank(ftpPath)) {
// if (ftpPath.endsWith(".jpg") || ftpPath.endsWith(".JPG") || ftpPath.endsWith(".png") || ftpPath.endsWith(".PNG") || ftpPath.endsWith(".gif") || ftpPath.endsWith(".GIF")) {
// response.setContentType("image/" + ftpPath.substring(ftpPath.lastIndexOf(".") + 1) + "; charset=utf-8");
// } else if (ftpPath.endsWith(".mp4") || ftpPath.endsWith(".MP4")) {
// response.setContentType("video/mpeg4; charset=utf-8");
// String mp4file = ftpPath.substring(ftpPath.lastIndexOf("/") + 1);
// response.setHeader("Content-Disposition", "attachment;fileName=" + mp4file);
// }
//
// String destUrl = ftpPath;
// destUrl = new String(destUrl.getBytes("ISO8859-1"), "GBK");
// String[] arr = destUrl.split(";");
// FtpURLConnection ftpUrl = null;
// HttpURLConnection httpUrl = null;
// for (int i = 0; i < arr.length; i++) {
// try {
// URL url = new URL(arr[i]);
// if (arr[i].toUpperCase().indexOf("FTP") != -1) { // ftp
// ftpUrl = (FtpURLConnection) url.openConnection();
// ftpUrl.setConnectTimeout(30000);
// ftpUrl.setReadTimeout(30000);
// bis = new BufferedInputStream(ftpUrl.getInputStream());
// response.setContentLength(ftpUrl.getContentLength());
// } else { // http
// httpUrl = (HttpURLConnection) url.openConnection();
// httpUrl.setConnectTimeout(30000);
// httpUrl.setReadTimeout(30000);
// bis = new BufferedInputStream(httpUrl.getInputStream());
// response.setContentLength(httpUrl.getContentLength());
// }
// toClient = response.getOutputStream();
// IOUtils.copy(bis, toClient);
// } catch (Exception e) {
// response.setContentType("text/html;charset=GBK");
// response.setCharacterEncoding("GBK");
// PrintWriter out = response.getWriter();
// out.write("无法打开图片!");
// out.flush();
// logger.info("ftpagent error:{} ",ftpUrl+e.toString());
// } finally {
// if (bis != null) {
// bis.close();
// }
// if (bis != null) {
// bis.close();
// }
// if (httpUrl != null) {
// httpUrl.disconnect();
// }
// if (ftpUrl != null) {
// ftpUrl.close();
// }
// if (toClient != null) {
// toClient.close();
// }
// }
// }
// return;
// }
//
// } catch (Exception e) {
// } finally {
// IOUtils.closeQuietly(bis);
// IOUtils.closeQuietly(toClient);
// IOUtils.closeQuietly(hFile);
// IOUtils.closeQuietly(inputStream);
// }
//
// }
@GetMapping
(
"/fielagent"
)
@ResponseBody
protected
void
fielagent
(
@RequestParam
(
"ftpPath"
)
String
ftpPath
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
long
startTime
=
System
.
currentTimeMillis
();
FileInputStream
hFile
=
null
;
OutputStream
toClient
=
null
;
InputStream
inputStream
=
null
;
BufferedInputStream
bis
=
null
;
try
{
response
.
reset
();
response
.
setHeader
(
"Expires"
,
"Sat, 10 May 2059 12:00:00 GMT"
);
response
.
setHeader
(
"Cache-Control"
,
"max-age=315360000"
);
if
(
StringUtils
.
isNotBlank
(
ftpPath
))
{
//根据ftp path 查询 该traffpicture 的imagedata 的值,然后处理返回
ftpPath
=
traffPictureService
.
queryimgdataByid
(
ftpPath
);
if
(
ftpPath
.
endsWith
(
".jpg"
)
||
ftpPath
.
endsWith
(
".JPG"
)
||
ftpPath
.
endsWith
(
".png"
)
||
ftpPath
.
endsWith
(
".PNG"
)
||
ftpPath
.
endsWith
(
".gif"
)
||
ftpPath
.
endsWith
(
".GIF"
))
{
response
.
setContentType
(
"image/"
+
ftpPath
.
substring
(
ftpPath
.
lastIndexOf
(
"."
)
+
1
)
+
"; charset=utf-8"
);
}
else
if
(
ftpPath
.
endsWith
(
".mp4"
)
||
ftpPath
.
endsWith
(
".MP4"
))
{
response
.
setContentType
(
"video/mpeg4; charset=utf-8"
);
String
mp4file
=
ftpPath
.
substring
(
ftpPath
.
lastIndexOf
(
"/"
)
+
1
);
response
.
setHeader
(
"Content-Disposition"
,
"attachment;fileName="
+
mp4file
);
}
String
destUrl
=
ftpPath
;
destUrl
=
new
String
(
destUrl
.
getBytes
(
"ISO8859-1"
),
"GBK"
);
String
[]
arr
=
destUrl
.
split
(
";"
);
FtpURLConnection
ftpUrl
=
null
;
HttpURLConnection
httpUrl
=
null
;
for
(
int
i
=
0
;
i
<
arr
.
length
;
i
++)
{
try
{
URL
url
=
new
URL
(
arr
[
i
]);
if
(
arr
[
i
].
toUpperCase
().
indexOf
(
"FTP"
)
!=
-
1
)
{
// ftp
ftpUrl
=
(
FtpURLConnection
)
url
.
openConnection
();
ftpUrl
.
setConnectTimeout
(
5000
);
ftpUrl
.
setReadTimeout
(
5000
);
bis
=
new
BufferedInputStream
(
ftpUrl
.
getInputStream
());
response
.
setContentLength
(
ftpUrl
.
getContentLength
());
}
else
{
// http
httpUrl
=
(
HttpURLConnection
)
url
.
openConnection
();
httpUrl
.
setConnectTimeout
(
5000
);
httpUrl
.
setReadTimeout
(
5000
);
bis
=
new
BufferedInputStream
(
httpUrl
.
getInputStream
());
response
.
setContentLength
(
httpUrl
.
getContentLength
());
}
toClient
=
response
.
getOutputStream
();
IOUtils
.
copy
(
bis
,
toClient
);
}
catch
(
Exception
e
)
{
response
.
setContentType
(
"text/html;charset=GBK"
);
response
.
setCharacterEncoding
(
"GBK"
);
PrintWriter
out
=
response
.
getWriter
();
out
.
write
(
"无法打开图片!"
);
out
.
flush
();
}
finally
{
if
(
bis
!=
null
)
{
bis
.
close
();
}
if
(
bis
!=
null
)
{
bis
.
close
();
}
if
(
httpUrl
!=
null
)
{
httpUrl
.
disconnect
();
}
if
(
ftpUrl
!=
null
)
{
ftpUrl
.
close
();
}
if
(
toClient
!=
null
)
{
toClient
.
close
();
}
}
}
return
;
}
}
catch
(
Exception
e
)
{
}
finally
{
IOUtils
.
closeQuietly
(
bis
);
IOUtils
.
closeQuietly
(
toClient
);
IOUtils
.
closeQuietly
(
hFile
);
IOUtils
.
closeQuietly
(
inputStream
);
}
}
@GetMapping
(
"/api/alg/files"
)
protected
void
files
(
@RequestParam
(
"location"
)
String
location
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
long
startTime
=
System
.
currentTimeMillis
();
//ftp://reader:reader@33.50.1.22:21/
//ftp.host=33.65.250.179:21:hzjt:1qaz2wsx
String
ftpPath
=
"ftp://"
+
ftppath
+
"/"
+
location
;
FileInputStream
hFile
=
null
;
OutputStream
toClient
=
null
;
InputStream
inputStream
=
null
;
BufferedInputStream
bis
=
null
;
try
{
response
.
reset
();
response
.
setHeader
(
"Expires"
,
"Sat, 10 May 2059 12:00:00 GMT"
);
response
.
setHeader
(
"Cache-Control"
,
"max-age=315360000"
);
if
(
StringUtils
.
isNotBlank
(
ftpPath
))
{
if
(
ftpPath
.
endsWith
(
".jpg"
)
||
ftpPath
.
endsWith
(
".JPG"
)
||
ftpPath
.
endsWith
(
".png"
)
||
ftpPath
.
endsWith
(
".PNG"
)
||
ftpPath
.
endsWith
(
".gif"
)
||
ftpPath
.
endsWith
(
".GIF"
))
{
response
.
setContentType
(
"image/"
+
ftpPath
.
substring
(
ftpPath
.
lastIndexOf
(
"."
)
+
1
)
+
"; charset=utf-8"
);
}
else
if
(
ftpPath
.
endsWith
(
".mp4"
)
||
ftpPath
.
endsWith
(
".MP4"
))
{
response
.
setContentType
(
"video/mpeg4; charset=utf-8"
);
String
mp4file
=
ftpPath
.
substring
(
ftpPath
.
lastIndexOf
(
"/"
)
+
1
);
response
.
setHeader
(
"Content-Disposition"
,
"attachment;fileName="
+
mp4file
);
}
String
destUrl
=
ftpPath
;
destUrl
=
new
String
(
destUrl
.
getBytes
(
"ISO8859-1"
),
"GBK"
);
String
[]
arr
=
destUrl
.
split
(
";"
);
FtpURLConnection
ftpUrl
=
null
;
HttpURLConnection
httpUrl
=
null
;
for
(
int
i
=
0
;
i
<
arr
.
length
;
i
++)
{
try
{
URL
url
=
new
URL
(
arr
[
i
]);
if
(
arr
[
i
].
toUpperCase
().
indexOf
(
"FTP"
)
!=
-
1
)
{
// ftp
ftpUrl
=
(
FtpURLConnection
)
url
.
openConnection
();
ftpUrl
.
setConnectTimeout
(
30000
);
ftpUrl
.
setReadTimeout
(
30000
);
bis
=
new
BufferedInputStream
(
ftpUrl
.
getInputStream
());
response
.
setContentLength
(
ftpUrl
.
getContentLength
());
}
else
{
// http
httpUrl
=
(
HttpURLConnection
)
url
.
openConnection
();
httpUrl
.
setConnectTimeout
(
30000
);
httpUrl
.
setReadTimeout
(
30000
);
bis
=
new
BufferedInputStream
(
httpUrl
.
getInputStream
());
response
.
setContentLength
(
httpUrl
.
getContentLength
());
}
toClient
=
response
.
getOutputStream
();
IOUtils
.
copy
(
bis
,
toClient
);
}
catch
(
Exception
e
)
{
response
.
setContentType
(
"text/html;charset=GBK"
);
response
.
setCharacterEncoding
(
"GBK"
);
PrintWriter
out
=
response
.
getWriter
();
out
.
write
(
"无法打开图片!"
);
out
.
flush
();
logger
.
info
(
"ftpagent error:{} "
,
ftpUrl
+
e
.
toString
());
}
finally
{
if
(
bis
!=
null
)
{
bis
.
close
();
}
if
(
bis
!=
null
)
{
bis
.
close
();
}
if
(
httpUrl
!=
null
)
{
httpUrl
.
disconnect
();
}
if
(
ftpUrl
!=
null
)
{
ftpUrl
.
close
();
}
if
(
toClient
!=
null
)
{
toClient
.
close
();
}
}
}
return
;
}
}
catch
(
Exception
e
)
{
}
finally
{
IOUtils
.
closeQuietly
(
bis
);
IOUtils
.
closeQuietly
(
toClient
);
IOUtils
.
closeQuietly
(
hFile
);
IOUtils
.
closeQuietly
(
inputStream
);
}
}
}
}
\ No newline at end of file
src/main/java/com/cx/cn/cxquartz/controller/QuartzController.java
View file @
38d3544b
...
@@ -51,26 +51,26 @@ public class QuartzController {
...
@@ -51,26 +51,26 @@ public class QuartzController {
@Autowired
@Autowired
private
RestTemplate
restTemplate
;
private
RestTemplate
restTemplate
;
@Autowired
//
@Autowired
FtpService
ftpService
;
//
FtpService ftpService;
//
@RequestMapping
(
value
=
"/add/taskpage"
,
method
=
RequestMethod
.
GET
)
//
@RequestMapping(value = "/add/taskpage", method = RequestMethod.GET)
public
String
addTaskpage
()
{
//
public String addTaskpage() {
return
"addtask"
;
//
return "addtask";
}
//
}
//
@ResponseBody
//
@ResponseBody
@RequestMapping
(
value
=
"/add/task"
,
method
=
RequestMethod
.
POST
)
//
@RequestMapping(value = "/add/task", method = RequestMethod.POST)
public
String
addTask
(
QuartzTaskInformations
taskInformations
)
{
//
public String addTask(QuartzTaskInformations taskInformations) {
try
{
//
try {
taskInformations
.
setSchedulerrule
(
"*/"
+
taskInformations
.
getSchedulerrule
()
+
" * * * * ?"
);
//
taskInformations.setSchedulerrule("*/" + taskInformations.getSchedulerrule() + " * * * * ?");
String
result
=
quartzService
.
addTask
(
taskInformations
);
//
String result = quartzService.addTask(taskInformations);
return
result
;
//
return result;
}
catch
(
Exception
e
)
{
//
} catch (Exception e) {
logger
.
error
(
"/add/task exception={}"
,
e
);
//
logger.error("/add/task exception={}", e);
return
ResultUtil
.
fail
();
//
return ResultUtil.fail();
}
//
}
}
//
}
@PostMapping
(
"/task"
)
@PostMapping
(
"/task"
)
@ResponseBody
@ResponseBody
...
@@ -115,14 +115,14 @@ public class QuartzController {
...
@@ -115,14 +115,14 @@ public class QuartzController {
try
{
try
{
quartzService
.
startOrStopJob
(
taskno
,
"UNFROZEN"
);
quartzService
.
startOrStopJob
(
taskno
,
"UNFROZEN"
);
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
logger
.
error
(
ex
.
toString
());
}
}
}
else
if
(
"2"
.
equals
(
jobParam
.
getType
())
)
{
//停止
}
else
if
(
"2"
.
equals
(
jobParam
.
getType
())
)
{
//停止
//一抽帧多分析,停止不停抽帧服务
//一抽帧多分析,停止不停抽帧服务
try
{
try
{
quartzService
.
startOrStopJob
(
taskno
,
"FROZEN"
);
quartzService
.
startOrStopJob
(
taskno
,
"FROZEN"
);
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
logger
.
error
(
ex
.
toString
());
}
}
}
else
if
(
"3"
.
equals
(
jobParam
.
getType
()))
{
//删除
}
else
if
(
"3"
.
equals
(
jobParam
.
getType
()))
{
//删除
//一抽帧多分析,停止不停抽帧服务
//一抽帧多分析,停止不停抽帧服务
...
@@ -130,7 +130,7 @@ public class QuartzController {
...
@@ -130,7 +130,7 @@ public class QuartzController {
quartzService
.
startOrStopJob
(
taskno
,
"FROZEN"
);
quartzService
.
startOrStopJob
(
taskno
,
"FROZEN"
);
quartzService
.
deletetask
(
taskno
);
quartzService
.
deletetask
(
taskno
);
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
logger
.
error
(
ex
.
toString
());
}
}
//quartzService.("fx_" + jobParam.getDeviceId() + "_" + jobParam.getDetectType(), fxnum);
//quartzService.("fx_" + jobParam.getDeviceId() + "_" + jobParam.getDetectType(), fxnum);
}
}
...
@@ -156,166 +156,166 @@ public class QuartzController {
...
@@ -156,166 +156,166 @@ public class QuartzController {
return
map
;
return
map
;
}
}
//
@RequestMapping
(
value
=
"/edit/taskpage"
,
method
=
RequestMethod
.
GET
)
//
@RequestMapping(value = "/edit/taskpage", method = RequestMethod.GET)
public
String
editTaskpage
(
Model
model
,
String
id
)
{
//
public String editTaskpage(Model model, String id) {
QuartzTaskInformations
taskInformation
=
quartzService
.
getTaskById
(
id
);
//
QuartzTaskInformations taskInformation = quartzService.getTaskById(id);
taskInformation
.
setSchedulerrule
(
taskInformation
.
getSchedulerrule
().
replaceAll
(
"\\?"
,
""
).
replaceAll
(
"\\*"
,
""
).
replaceAll
(
"\\/"
,
""
));
//
taskInformation.setSchedulerrule(taskInformation.getSchedulerrule().replaceAll("\\?", "").replaceAll("\\*", "").replaceAll("\\/", ""));
model
.
addAttribute
(
"taskInformation"
,
taskInformation
);
//
model.addAttribute("taskInformation", taskInformation);
return
"updatetask"
;
//
return "updatetask";
}
//
}
//
@ResponseBody
//
@ResponseBody
@RequestMapping
(
value
=
"/edit/task"
,
method
=
RequestMethod
.
POST
)
//
@RequestMapping(value = "/edit/task", method = RequestMethod.POST)
public
String
editTask
(
QuartzTaskInformations
taskInformations
)
{
//
public String editTask(QuartzTaskInformations taskInformations) {
try
{
//
try {
taskInformations
.
setSchedulerrule
(
"*/"
+
taskInformations
.
getSchedulerrule
()
+
" * * * * ?"
);
//
taskInformations.setSchedulerrule("*/" + taskInformations.getSchedulerrule() + " * * * * ?");
String
result
=
quartzService
.
updateTask
(
taskInformations
);
//
String result = quartzService.updateTask(taskInformations);
if
(
null
!=
taskInformations
.
getExecuteparamter
()
&&
!
taskInformations
.
getExecuteparamter
().
contains
(
"rtsp:"
))
{
//
if (null != taskInformations.getExecuteparamter() && !taskInformations.getExecuteparamter().contains("rtsp:")) {
int
upresult
=
sbtdspsrService
.
updateRecogByRtsp
(
taskInformations
.
getRtsp
(),
taskInformations
.
getVideoid
());
//
int upresult = sbtdspsrService.updateRecogByRtsp(taskInformations.getRtsp(), taskInformations.getVideoid());
//
if
(
upresult
>
0
)
{
//
if (upresult > 0) {
logger
.
info
(
"更新sbtddspsr squrllj 的值为:"
+
taskInformations
.
getExecuteparamter
());
//
logger.info("更新sbtddspsr squrllj 的值为:" + taskInformations.getExecuteparamter());
}
//
}
}
//
}
return
result
;
//
return result;
}
catch
(
Exception
e
)
{
//
} catch (Exception e) {
logger
.
error
(
"/edit/task exception={}"
,
e
);
//
logger.error("/edit/task exception={}", e);
return
ResultUtil
.
fail
();
//
return ResultUtil.fail();
}
//
}
}
//
}
//
/**
//
/**
* 启动 或者 暂定定时任务
//
* 启动 或者 暂定定时任务
*
//
*
* @param taskNo
//
* @param taskNo
* @return
//
* @return
*/
//
*/
@ResponseBody
//
@ResponseBody
@RequestMapping
(
value
=
"/list/optionjob"
,
method
=
RequestMethod
.
GET
)
//
@RequestMapping(value = "/list/optionjob", method = RequestMethod.GET)
public
String
optionJob
(
String
taskNo
)
{
//
public String optionJob(String taskNo) {
logger
.
info
(
""
);
//
logger.info("");
if
(
StringUtils
.
isEmpty
(
taskNo
))
{
//
if (StringUtils.isEmpty(taskNo)) {
return
ResultUtil
.
success
(
ResultEnum
.
PARAM_EMPTY
.
getCode
(),
ResultEnum
.
PARAM_EMPTY
.
getMessage
());
//
return ResultUtil.success(ResultEnum.PARAM_EMPTY.getCode(), ResultEnum.PARAM_EMPTY.getMessage());
}
//
}
try
{
//
try {
return
quartzService
.
startJob
(
taskNo
,
null
);
//
return quartzService.startJob(taskNo,null);
}
catch
(
Exception
e
)
{
//
} catch (Exception e) {
logger
.
error
(
"/list/optionjob exception={}"
,
e
);
//
logger.error("/list/optionjob exception={}", e);
return
ResultUtil
.
fail
();
//
return ResultUtil.fail();
}
//
}
}
//
}
//
/**
//
/**
* 定时任务执行情况
//
* 定时任务执行情况
*
//
*
* @param taskNo
//
* @param taskNo
* @param model
//
* @param model
* @return
//
* @return
*/
//
*/
@RequestMapping
(
value
=
"/taskrecords"
,
method
=
RequestMethod
.
GET
)
//
@RequestMapping(value = "/taskrecords", method = RequestMethod.GET)
public
String
taskRecordsPage
(
@RequestParam
(
value
=
"taskno"
,
required
=
false
)
String
taskNo
,
Model
model
)
{
//
public String taskRecordsPage(@RequestParam(value = "taskno", required = false) String taskNo, Model model) {
logger
.
info
(
""
);
//
logger.info("");
try
{
//
try {
if
(
StringUtils
.
isEmpty
(
taskNo
))
{
//
if (StringUtils.isEmpty(taskNo)) {
return
"redirect:/"
;
//
return "redirect:/";
}
//
}
List
<
QuartzTaskRecordsVo
>
quartzTaskRecords
=
quartzService
.
taskRecords
(
taskNo
);
//
List<QuartzTaskRecordsVo> quartzTaskRecords = quartzService.taskRecords(taskNo);
model
.
addAttribute
(
"quartzTaskRecords"
,
quartzTaskRecords
);
//
model.addAttribute("quartzTaskRecords", quartzTaskRecords);
}
catch
(
Exception
e
)
{
//
} catch (Exception e) {
logger
.
error
(
""
);
//
logger.error("");
return
"redirect:/"
;
//
return "redirect:/";
}
//
}
return
"taskrecords"
;
//
return "taskrecords";
}
//
}
//
/**
//
/**
* 立即运行一次定时任务
//
* 立即运行一次定时任务
*
//
*
* @param taskNo
//
* @param taskNo
* @param model
//
* @param model
* @return
//
* @return
*/
//
*/
@ResponseBody
//
@ResponseBody
@RequestMapping
(
value
=
"/runtask/rightnow"
,
method
=
RequestMethod
.
GET
)
//
@RequestMapping(value = "/runtask/rightnow", method = RequestMethod.GET)
public
String
runTaskRightNow
(
@RequestParam
(
value
=
"taskno"
,
required
=
false
)
String
taskNo
,
Model
model
)
{
//
public String runTaskRightNow(@RequestParam(value = "taskno", required = false) String taskNo, Model model) {
logger
.
info
(
""
);
//
logger.info("");
try
{
//
try {
if
(
StringUtils
.
isEmpty
(
taskNo
))
{
//
if (StringUtils.isEmpty(taskNo)) {
return
ResultUtil
.
success
(
ResultEnum
.
PARAM_EMPTY
.
getCode
(),
ResultEnum
.
PARAM_EMPTY
.
getMessage
());
//
return ResultUtil.success(ResultEnum.PARAM_EMPTY.getCode(), ResultEnum.PARAM_EMPTY.getMessage());
}
//
}
return
quartzService
.
runTaskRightNow
(
taskNo
);
//
return quartzService.runTaskRightNow(taskNo);
}
catch
(
Exception
e
)
{
//
} catch (Exception e) {
logger
.
error
(
""
);
//
logger.error("");
return
ResultUtil
.
success
(
ResultEnum
.
FAIL
.
getCode
(),
ResultEnum
.
FAIL
.
getMessage
());
//
return ResultUtil.success(ResultEnum.FAIL.getCode(), ResultEnum.FAIL.getMessage());
}
//
}
}
//
}
//
/**
//
/**
* 定时任务失败详情
//
* 定时任务失败详情
*
//
*
* @param recordId
//
* @param recordId
* @param model
//
* @param model
* @return
//
* @return
*/
//
*/
@RequestMapping
(
value
=
"/task/errors"
,
method
=
RequestMethod
.
GET
)
//
@RequestMapping(value = "/task/errors", method = RequestMethod.GET)
public
String
detailTaskErrors
(
@RequestParam
(
value
=
"recordid"
,
required
=
false
)
String
recordId
,
Model
model
)
{
//
public String detailTaskErrors(@RequestParam(value = "recordid", required = false) String recordId, Model model) {
logger
.
info
(
""
);
//
logger.info("");
try
{
//
try {
if
(
StringUtils
.
isEmpty
(
recordId
))
{
//
if (StringUtils.isEmpty(recordId)) {
return
ResultUtil
.
success
(
ResultEnum
.
PARAM_EMPTY
.
getCode
(),
ResultEnum
.
PARAM_EMPTY
.
getMessage
());
//
return ResultUtil.success(ResultEnum.PARAM_EMPTY.getCode(), ResultEnum.PARAM_EMPTY.getMessage());
}
//
}
QuartzTaskErrors
taskErrors
=
quartzService
.
detailTaskErrors
(
recordId
);
//
QuartzTaskErrors taskErrors = quartzService.detailTaskErrors(recordId);
model
.
addAttribute
(
"taskErrors"
,
taskErrors
);
//
model.addAttribute("taskErrors", taskErrors);
return
"taskerrors"
;
//
return "taskerrors";
}
catch
(
Exception
e
)
{
//
} catch (Exception e) {
logger
.
error
(
""
);
//
logger.error("");
return
"redirect:/"
;
//
return "redirect:/";
}
//
}
}
//
}
@RequestMapping
(
value
=
"/getRtsp"
,
method
=
RequestMethod
.
POST
)
//
@RequestMapping(value = "/getRtsp", method = RequestMethod.POST)
@ResponseBody
//
@ResponseBody
public
String
getRTSP
(
@RequestBody
JSONObject
devicecode
)
{
//
public String getRTSP(@RequestBody JSONObject devicecode) {
//判断rtsp 是否过期http://212.129.142.17:8281/gh/device/test?deviceCode=3YSCA44445TFCPX
//
//判断rtsp 是否过期http://212.129.142.17:8281/gh/device/test?deviceCode=3YSCA44445TFCPX
//判断是否是rtsp 地址
//
//判断是否是rtsp 地址
String
rtspValue
=
devicecode
.
getString
(
"data"
);
//
String rtspValue = devicecode.getString("data");
if
(!
rtspValue
.
contains
(
"rtsp://"
))
{
//
if (!rtspValue.contains("rtsp://")) {
Map
<
String
,
String
>
map
=
new
HashMap
<>();
//
Map<String, String> map = new HashMap<>();
map
.
put
(
"deviceCode"
,
rtspValue
);
//
map.put("deviceCode", rtspValue);
ResponseEntity
<
String
>
responseEntity
=
restTemplate
.
getForEntity
(
getrtspbyurl
+
"?deviceCode={deviceCode}"
,
String
.
class
,
map
);
//
ResponseEntity<String> responseEntity = restTemplate.getForEntity(getrtspbyurl + "?deviceCode={deviceCode}", String.class, map);
JSONObject
json
=
JSONObject
.
parseObject
(
responseEntity
.
getBody
());
//
JSONObject json = JSONObject.parseObject(responseEntity.getBody());
if
(
null
!=
json
.
getString
(
"errorCode"
)
&&
json
.
getString
(
"errorCode"
).
equals
(
"0"
))
{
//
if (null != json.getString("errorCode") && json.getString("errorCode").equals("0")) {
//返回rtsp 地址,更新 sbtdspsr 地址
//
//返回rtsp 地址,更新 sbtdspsr 地址
json
=
JSONObject
.
parseObject
(
json
.
getString
(
"data"
));
//
json = JSONObject.parseObject(json.getString("data"));
rtspValue
=
String
.
valueOf
(
json
.
get
(
"rtspUri"
));
//
rtspValue = String.valueOf(json.get("rtspUri"));
}
//
}
}
//
}
//
//获得抽帧图片
//
//获得抽帧图片
Map
maps
=
new
HashMap
<>();
//
Map maps = new HashMap<>();
maps
.
put
(
"rtspvalue"
,
rtspValue
);
//
maps.put("rtspvalue", rtspValue);
maps
.
put
(
"refresh"
,
1
);
//
maps.put("refresh", 1);
try
{
//
try {
ResponseEntity
<
String
>
result
=
restTemplate
.
exchange
(
rtspurl
+
"?url={rtspvalue}&refresh={refresh}"
,
//
ResponseEntity<String> result = restTemplate.exchange(rtspurl + "?url={rtspvalue}&refresh={refresh}",
HttpMethod
.
GET
,
null
,
String
.
class
,
maps
);
//
HttpMethod.GET, null, String.class, maps);
JSONObject
jsonresult
=
JSONObject
.
parseObject
(
result
.
getBody
());
//
JSONObject jsonresult = JSONObject.parseObject(result.getBody());
logger
.
info
(
"getRtsp:{}"
,
jsonresult
);
//
logger.info("getRtsp:{}", jsonresult);
if
(
null
!=
jsonresult
.
getString
(
"ret"
)
&&
jsonresult
.
getString
(
"ret"
).
equals
(
"0"
)
&&
!
""
.
equals
(
jsonresult
.
getString
(
"url"
)))
{
//
if (null != jsonresult.getString("ret") && jsonresult.getString("ret").equals("0") && !"".equals(jsonresult.getString("url"))) {
//获得图片地址,存放到ftp上面
//
//获得图片地址,存放到ftp上面
//将图片存储到ftp 上去,jsonresult.getString("url")
//
//将图片存储到ftp 上去,jsonresult.getString("url")
Ftp
ftp
=
ftpService
.
reloadFtp
();
//
Ftp ftp = ftpService.reloadFtp();
String
ftpfilepath
=
FileTransferManager
.
urlTransToFtp
(
jsonresult
.
getString
(
"url"
),
ftp
,
"gstraff/picturedemo/"
);
//
String ftpfilepath = FileTransferManager.urlTransToFtp(jsonresult.getString("url"), ftp, "gstraff/picturedemo/");
logger
.
info
(
"ftppath"
+
ftpfilepath
);
//
logger.info("ftppath" + ftpfilepath);
ftpfilepath
=
ftpfilepath
.
replace
(
"ftp://"
+
ftppath
+
"/"
,
""
);
//
ftpfilepath = ftpfilepath.replace("ftp://" + ftppath + "/", "");
// return ResultUtil.success(ResultEnum.SUCCESS.getCode(), jsonresult.getString("url")+ "," + rtspValue);
//
// return ResultUtil.success(ResultEnum.SUCCESS.getCode(), jsonresult.getString("url")+ "," + rtspValue);
//
return
ResultUtil
.
success
(
ResultEnum
.
SUCCESS
.
getCode
(),
ftpfilepath
+
","
+
rtspValue
);
//
return ResultUtil.success(ResultEnum.SUCCESS.getCode(), ftpfilepath + "," + rtspValue);
}
//
}
return
ResultUtil
.
fail
();
//
return ResultUtil.fail();
}
catch
(
Exception
ex
)
{
//
} catch (Exception ex) {
logger
.
info
(
ex
.
toString
());
//
logger.info(ex.toString());
return
ResultUtil
.
fail
();
//
return ResultUtil.fail();
}
//
}
}
//
}
}
}
src/main/java/com/cx/cn/cxquartz/controller/SbtdspsrController.java
View file @
38d3544b
...
@@ -33,17 +33,17 @@ public class SbtdspsrController {
...
@@ -33,17 +33,17 @@ public class SbtdspsrController {
private
SbtdspsrService
sbtdspsrService
;
private
SbtdspsrService
sbtdspsrService
;
//
@RequestMapping
(
value
=
"/getSbtdspsrbyrtsp"
,
method
=
RequestMethod
.
GET
)
//
@RequestMapping(value = "/getSbtdspsrbyrtsp", method = RequestMethod.GET)
public
String
addTaskpage
()
{
//
public String addTaskpage() {
return
"addtask"
;
//
return "addtask";
}
//
}
@RequestMapping
(
value
=
"/list"
,
method
=
RequestMethod
.
GET
)
//
@RequestMapping(value = "/list", method = RequestMethod.GET)
@ResponseBody
//
@ResponseBody
public
List
<
Sbtdspsr
>
list
()
{
//
public List<Sbtdspsr> list() {
return
sbtdspsrService
.
list
();
//
return sbtdspsrService.list();
//
}
//
}
}
}
src/main/java/com/cx/cn/cxquartz/job/QuartzMainJobFactory.java
View file @
38d3544b
...
@@ -35,10 +35,9 @@ public class QuartzMainJobFactory implements Job {
...
@@ -35,10 +35,9 @@ public class QuartzMainJobFactory implements Job {
String
id
=
jobDataMap
.
getString
(
"id"
);
String
id
=
jobDataMap
.
getString
(
"id"
);
String
taskNo
=
jobDataMap
.
getString
(
"taskNo"
);
String
taskNo
=
jobDataMap
.
getString
(
"taskNo"
);
String
executorNo
=
jobDataMap
.
getString
(
"executorNo"
);
String
executorNo
=
jobDataMap
.
getString
(
"executorNo"
);
String
sendType
=
jobDataMap
.
getString
(
"sendType"
);
String
url
=
jobDataMap
.
getString
(
"url"
);
String
url
=
jobDataMap
.
getString
(
"url"
);
String
executeParameter
=
jobDataMap
.
getString
(
"executeParameter"
);
String
executeParameter
=
jobDataMap
.
getString
(
"executeParameter"
);
logger
.
info
(
"定时任务被执行:taskNo={},executorNo={},
sendType={},url={},executeParameter={}"
,
taskNo
,
executorNo
,
sendType
,
url
,
executeParameter
);
logger
.
info
(
"定时任务被执行:taskNo={},executorNo={},
url={},executeParameter={}"
,
taskNo
,
executorNo
,
url
,
executeParameter
);
QuartzService
quartzService
=
(
QuartzServiceImpl
)
ApplicationContextHolder
.
getBean
(
"quartzServiceImpl"
);
QuartzService
quartzService
=
(
QuartzServiceImpl
)
ApplicationContextHolder
.
getBean
(
"quartzServiceImpl"
);
QuartzTaskRecords
records
=
null
;
QuartzTaskRecords
records
=
null
;
try
{
try
{
...
@@ -51,8 +50,8 @@ public class QuartzMainJobFactory implements Job {
...
@@ -51,8 +50,8 @@ public class QuartzMainJobFactory implements Job {
//if (ResultEnum.HTTP.getMessage().equals(sendType)) {
//if (ResultEnum.HTTP.getMessage().equals(sendType)) {
try
{
try
{
String
result
=
HttpClientUtil
.
doPost
(
taskNo
.
contains
(
"cz_"
)
?
czurl
:
fxurl
,
"text/json"
,
executeParameter
);
String
result
=
HttpClientUtil
.
doPost
(
taskNo
.
contains
(
"cz_"
)
?
czurl
:
fxurl
,
"text/json"
,
taskNo
);
logger
.
info
(
"taskNo={},
sendtype={}执行结果result{}"
,
taskNo
,
sendType
,
result
);
logger
.
info
(
"taskNo={},
执行结果result{}"
,
taskNo
,
result
);
if
(
StringUtils
.
isEmpty
(
result
))
{
if
(
StringUtils
.
isEmpty
(
result
))
{
throw
new
RuntimeException
(
"taskNo="
+
taskNo
+
"http方式返回null"
);
throw
new
RuntimeException
(
"taskNo="
+
taskNo
+
"http方式返回null"
);
}
}
...
@@ -71,14 +70,15 @@ public class QuartzMainJobFactory implements Job {
...
@@ -71,14 +70,15 @@ public class QuartzMainJobFactory implements Job {
// }
// }
// }
// }
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
logger
.
error
(
""
);
String
exception
=
CommonUtil
.
getExceptionDetail
(
ex
);
logger
.
error
(
exception
);
atomicInteger
.
incrementAndGet
();
atomicInteger
.
incrementAndGet
();
quartzService
.
addTaskErrorRecord
(
records
.
getId
().
toString
(),
taskNo
+
":"
+
ex
.
getMessage
(),
CommonUtil
.
getExceptionDetail
(
ex
)
);
quartzService
.
addTaskErrorRecord
(
records
.
getId
().
toString
(),
taskNo
+
":"
+
ex
.
getMessage
(),
exception
);
}
}
quartzService
.
updateRecordById
(
atomicInteger
.
get
(),
records
.
getId
());
//
quartzService.updateRecordById(atomicInteger.get(), records.getId());
QuartzTaskInformations
quartzTaskInformation
=
new
QuartzTaskInformations
();
//
QuartzTaskInformations quartzTaskInformation = new QuartzTaskInformations();
quartzTaskInformation
.
setId
(
Long
.
parseLong
(
id
));
//
quartzTaskInformation.setId(Long.parseLong(id));
quartzTaskInformation
.
setLastmodifytime
(
System
.
currentTimeMillis
());
//
quartzTaskInformation.setLastmodifytime(System.currentTimeMillis());
quartzService
.
updateTask
(
quartzTaskInformation
);
//
quartzService.updateTask(quartzTaskInformation);
}
}
}
}
src/main/java/com/cx/cn/cxquartz/service/quartz/FtpService.java
View file @
38d3544b
...
@@ -25,11 +25,11 @@ public class FtpService {
...
@@ -25,11 +25,11 @@ public class FtpService {
CacheLoadService
cacheLoadService
;
CacheLoadService
cacheLoadService
;
@Autowired
@Autowired
public
FtpService
(
StringRedisTemplate
stringRedisTemplate
)
{
public
FtpService
(
StringRedisTemplate
stringRedisTemplate
)
{
try
{
//
try {
this
.
ftpList
=
getFtpList
(
stringRedisTemplate
.
opsForValue
().
get
(
RedisEnum
.
FTPLIST
.
getValue
()));
//
this.ftpList = getFtpList(stringRedisTemplate.opsForValue().get(RedisEnum.FTPLIST.getValue()));
}
catch
(
Exception
e
){
//
}catch (Exception e){
logger
.
error
(
"ftpList error:"
+
e
.
toString
());
//
logger.error("ftpList error:"+e.toString());
}
//
}
}
}
public
Ftp
reloadFtp
()
{
public
Ftp
reloadFtp
()
{
...
...
src/main/java/com/cx/cn/cxquartz/service/quartz/impl/EventWriteService.java
View file @
38d3544b
...
@@ -173,7 +173,7 @@ public class EventWriteService {
...
@@ -173,7 +173,7 @@ public class EventWriteService {
/* 其他失败 */
/* 其他失败 */
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
traffpictureParamresult
.
setPushdesc
(
"推送第三方
成功
失败"
);
traffpictureParamresult
.
setPushdesc
(
"推送第三方失败"
);
log
.
error
(
"eventwrite - sendEventByCallUrl 异常:"
+
e
.
toString
());
log
.
error
(
"eventwrite - sendEventByCallUrl 异常:"
+
e
.
toString
());
//return ResultObj.error(ResponseEnum.E_9999.getCode(), e.toString());
//return ResultObj.error(ResponseEnum.E_9999.getCode(), e.toString());
}
}
...
...
src/main/java/com/cx/cn/cxquartz/service/quartz/impl/QuartzServiceImpl.java
View file @
38d3544b
...
@@ -20,6 +20,7 @@ import org.springframework.beans.BeanUtils;
...
@@ -20,6 +20,7 @@ import org.springframework.beans.BeanUtils;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.kafka.core.KafkaTemplate
;
import
org.springframework.kafka.core.KafkaTemplate
;
import
org.springframework.scheduling.quartz.SchedulerFactoryBean
;
import
org.springframework.scheduling.quartz.SchedulerFactoryBean
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -31,6 +32,7 @@ import java.util.Map;
...
@@ -31,6 +32,7 @@ import java.util.Map;
import
java.util.concurrent.atomic.AtomicInteger
;
import
java.util.concurrent.atomic.AtomicInteger
;
@Service
@Service
@Configuration
public
class
QuartzServiceImpl
implements
QuartzService
,
InitializingBean
{
public
class
QuartzServiceImpl
implements
QuartzService
,
InitializingBean
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
QuartzServiceImpl
.
class
);
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
QuartzServiceImpl
.
class
);
...
@@ -136,9 +138,9 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
...
@@ -136,9 +138,9 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
task
.
setUnfrozentime
(
currentTimeMillis
);
task
.
setUnfrozentime
(
currentTimeMillis
);
task
.
setFrozenstatus
(
ResultEnum
.
UNFROZEN
.
name
());
task
.
setFrozenstatus
(
ResultEnum
.
UNFROZEN
.
name
());
}
}
task
.
setLastmodifytime
(
currentTimeMillis
);
//
task.setLastmodifytime(currentTimeMillis);
quartzTaskInformationsService
.
updateStatusById
(
task
);
//
quartzTaskInformationsService.updateStatusById(task);
logger
.
info
(
"taskNo={},taskName={},scheduleRule={},任务{}成功"
,
quartzTaskInformation
.
getTaskno
(),
quartzTaskInformation
.
getTaskname
(),
quartzTaskInformation
.
getSchedulerrule
(),
ResultEnum
.
FROZEN
.
name
().
equals
(
status
)
?
"启动"
:
"暂停"
);
//
logger.info("taskNo={},taskName={},scheduleRule={},任务{}成功", quartzTaskInformation.getTaskno(), quartzTaskInformation.getTaskname(), quartzTaskInformation.getSchedulerrule(), ResultEnum.FROZEN.name().equals(status) ? "启动" : "暂停");
return
ResultUtil
.
success
(
ResultEnum
.
SUCCESS
.
getCode
(),
ResultEnum
.
SUCCESS
.
getMessage
());
return
ResultUtil
.
success
(
ResultEnum
.
SUCCESS
.
getCode
(),
ResultEnum
.
SUCCESS
.
getMessage
());
}
}
...
@@ -212,11 +214,11 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
...
@@ -212,11 +214,11 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
return
null
;
return
null
;
}
}
long
currentTimeMillis
=
System
.
currentTimeMillis
();
long
currentTimeMillis
=
System
.
currentTimeMillis
();
QuartzTaskInformations
task
=
new
QuartzTaskInformations
();
//
QuartzTaskInformations task = new QuartzTaskInformations();
task
.
setId
(
quartzTaskInformation
.
getId
());
//
task.setId(quartzTaskInformation.getId());
task
.
setLastmodifytime
(
currentTimeMillis
);
//
task.setLastmodifytime(currentTimeMillis);
quartzTaskInformationsService
.
updateTask
(
task
);
//
quartzTaskInformationsService.updateTask(task);
logger
.
info
(
"taskNo={},taskName={}更新最后修改时间成功"
,
quartzTaskInformation
.
getTaskno
(),
quartzTaskInformation
.
getTaskname
());
//
logger.info("taskNo={},taskName={}更新最后修改时间成功", quartzTaskInformation.getTaskno(), quartzTaskInformation.getTaskname());
quartzTaskRecords
=
new
QuartzTaskRecords
();
quartzTaskRecords
=
new
QuartzTaskRecords
();
quartzTaskRecords
.
setTaskno
(
taskNo
);
quartzTaskRecords
.
setTaskno
(
taskNo
);
...
@@ -320,16 +322,16 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
...
@@ -320,16 +322,16 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
if
(
quartzTaskInformations
==
null
)
{
if
(
quartzTaskInformations
==
null
)
{
return
ResultUtil
.
success
(
ResultEnum
.
NO_DATA
.
getCode
(),
ResultEnum
.
NO_DATA
.
getMessage
());
return
ResultUtil
.
success
(
ResultEnum
.
NO_DATA
.
getCode
(),
ResultEnum
.
NO_DATA
.
getMessage
());
}
}
Long
id
=
quartzTaskInformations
.
getId
();
//
Long id = quartzTaskInformations.getId();
String
sendType
=
quartzTaskInformations
.
getSendtype
();
//
String sendType = quartzTaskInformations.getSendtype();
String
executorNo
=
quartzTaskInformations
.
getExecutorno
();
//
String executorNo = quartzTaskInformations.getExecutorno();
String
url
=
quartzTaskInformations
.
getUrl
();
//
String url = quartzTaskInformations.getUrl();
String
executeParameter
=
quartzTaskInformations
.
getExecuteparamter
();
String
executeParameter
=
quartzTaskInformations
.
getExecuteparamter
();
logger
.
info
(
"定时任务被执行:taskNo={},executorNo={},sendType={},url={},executeParameter={}"
,
taskNo
,
executorNo
,
sendType
,
url
,
executeParameter
);
//
logger.info("定时任务被执行:taskNo={},executorNo={},sendType={},url={},executeParameter={}", taskNo, executorNo, sendType, url, executeParameter);
QuartzTaskRecords
records
=
null
;
QuartzTaskRecords
records
=
null
;
try
{
try
{
//保存定时任务的执行记录
//保存定时任务的执行记录
records
=
this
.
addTaskRecords
(
taskNo
);
//
records = this.addTaskRecords(taskNo);
if
(
null
==
records
||
!
ResultEnum
.
INIT
.
name
().
equals
(
records
.
getTaskstatus
()))
{
if
(
null
==
records
||
!
ResultEnum
.
INIT
.
name
().
equals
(
records
.
getTaskstatus
()))
{
logger
.
info
(
"taskNo={}立即运行失--->>保存执行记录失败"
,
taskNo
);
logger
.
info
(
"taskNo={}立即运行失--->>保存执行记录失败"
,
taskNo
);
return
ResultUtil
.
success
(
ResultEnum
.
RUN_NOW_FAIL
.
getCode
(),
ResultEnum
.
RUN_NOW_FAIL
.
getMessage
());
return
ResultUtil
.
success
(
ResultEnum
.
RUN_NOW_FAIL
.
getCode
(),
ResultEnum
.
RUN_NOW_FAIL
.
getMessage
());
...
@@ -340,7 +342,7 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
...
@@ -340,7 +342,7 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
try
{
try
{
//将抽取的时间段获得,如果是没有规则,全抽所有。、
//将抽取的时间段获得,如果是没有规则,全抽所有。、
//如果是当天上午八点,就抽当天8点之前喝前一天的3点之后0 30 8 ? * *
//如果是当天上午八点,就抽当天8点之前喝前一天的3点之后0 30 8 ? * *
HttpClientUtil
.
doPost
(
taskNo
.
contains
(
"cz_"
)
?
czurl
:
fxurl
,
"text/json"
,
executeParameter
);
HttpClientUtil
.
doPost
(
taskNo
.
contains
(
"cz_"
)
?
czurl
:
fxurl
,
"text/json"
,
taskNo
);
logger
.
info
(
""
);
logger
.
info
(
""
);
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
logger
.
error
(
""
);
logger
.
error
(
""
);
...
@@ -363,13 +365,13 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
...
@@ -363,13 +365,13 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
this
.
addTaskErrorRecord
(
records
.
getId
().
toString
(),
taskNo
+
":"
+
ex
.
getMessage
(),
CommonUtil
.
getExceptionDetail
(
ex
));
this
.
addTaskErrorRecord
(
records
.
getId
().
toString
(),
taskNo
+
":"
+
ex
.
getMessage
(),
CommonUtil
.
getExceptionDetail
(
ex
));
}
}
//更改record表的执行状态、最后修改时间、失败个数
//更改record表的执行状态、最后修改时间、失败个数
this
.
updateRecordById
(
atomicInteger
.
get
(),
records
.
getId
());
//
this.updateRecordById(atomicInteger.get(), records.getId());
//更新taskinfo表的最后修改时间
//更新taskinfo表的最后修改时间
QuartzTaskInformations
quartzTaskInformation
=
new
QuartzTaskInformations
();
//
QuartzTaskInformations quartzTaskInformation = new QuartzTaskInformations();
quartzTaskInformation
.
setId
(
id
);
//
quartzTaskInformation.setId(id);
quartzTaskInformation
.
setLastmodifytime
(
System
.
currentTimeMillis
());
//
quartzTaskInformation.setLastmodifytime(System.currentTimeMillis());
this
.
updateTask
(
quartzTaskInformation
);
//
this.updateTask(quartzTaskInformation);
return
ResultUtil
.
success
(
ResultEnum
.
SUCCESS
.
getCode
(),
ResultEnum
.
SUCCESS
.
getMessage
());
return
ResultUtil
.
success
(
ResultEnum
.
SUCCESS
.
getCode
(),
ResultEnum
.
SUCCESS
.
getMessage
());
}
}
...
...
src/main/resources/application-dev.yml
View file @
38d3544b
server
:
port
:
4082
spring
:
spring
:
datasource
:
datasource
:
url
:
jdbc:mysql://172.16.24.29:3306/imagepro?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
url
:
jdbc:mysql://172.16.24.29:3306/imagepro?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
...
@@ -17,37 +19,8 @@ spring:
...
@@ -17,37 +19,8 @@ spring:
testOnReturn
:
false
testOnReturn
:
false
poolPreparedStatements
:
true
poolPreparedStatements
:
true
maxOpenPreparedStatements
:
20
maxOpenPreparedStatements
:
20
thymeleaf
:
prefix
:
classpath:/templates/
suffix
:
.html
cache
:
false
enabled
:
true
encoding
:
UTF-8
mode
:
HTML
redis
:
database
:
0
host
:
172.16.24.29
# host: 127.0.0.1
port
:
6379
logging
:
config
:
classpath
:
log/logback-spring.xml
path
:
/home/prod/deploy/nmys
#logging:
# level:
# root:
# info
local
:
czurl
:
http://localhost:8089/ext/getRTSP/1
fxurl
:
http://localhost:8089/ext/getDeviceSnapshotAndRecognize
file
:
rtspurl
:
http://172.16.24.29:7080/getDeviceSnapshot
recogurl
:
http://172.16.24.29:7080/getDeviceSnapshotAndRecognize
uploadurl
:
http://172.16.24.29:7080/uploadResultFile
countryside
:
callbackurl
:
http://kvideo.51iwifi.com/hesc-mq/hesc/mq/receive/aiCallback
#logging:
# level:
local
:
# com.cx.cn.cxquartz.dao:
czurl
:
http://localhost:4082/ext/getRTSP/1
# debug
fxurl
:
http://localhost:4082/ext/getDeviceSnapshotAndRecognize
\ No newline at end of file
src/main/resources/application-dev85.yml
0 → 100644
View file @
38d3544b
server
:
port
:
4085
spring
:
datasource
:
url
:
jdbc:mysql://172.16.24.29:3306/imagepro?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
username
:
root
password
:
123456
driver-class-name
:
com.mysql.jdbc.Driver
type
:
com.alibaba.druid.pool.DruidDataSource
filters
:
stat
maxActive
:
1000
initialSize
:
100
maxWait
:
60000
minIdle
:
500
timeBetweenEvictionRunsMillis
:
60000
minEvictableIdleTimeMillis
:
300000
testWhileIdle
:
true
testOnBorrow
:
false
testOnReturn
:
false
poolPreparedStatements
:
true
maxOpenPreparedStatements
:
20
local
:
czurl
:
http://localhost:4085/ext/getRTSP/1
fxurl
:
http://localhost:4085/ext/getDeviceSnapshotAndRecognize
\ No newline at end of file
src/main/resources/application-local.yml
View file @
38d3544b
server
:
port
:
8089
spring
:
spring
:
datasource
:
datasource
:
url
:
jdbc:mysql://192.168.168.110:3306/imagepro?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
url
:
jdbc:mysql://192.168.168.110:3306/imagepro?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
...
@@ -17,22 +19,12 @@ spring:
...
@@ -17,22 +19,12 @@ spring:
testOnReturn
:
false
testOnReturn
:
false
poolPreparedStatements
:
true
poolPreparedStatements
:
true
maxOpenPreparedStatements
:
20
maxOpenPreparedStatements
:
20
thymeleaf
:
prefix
:
classpath:/templates/
suffix
:
.html
cache
:
false
enabled
:
true
encoding
:
UTF-8
mode
:
HTML
redis
:
redis
:
database
:
0
database
:
0
# host: 172.16.24.29
host
:
127.0.0.1
host
:
127.0.0.1
port
:
6379
port
:
6379
logging
:
config
:
classpath
:
log/logback-spring.xml
path
:
/home/prod/deploy/nmys
#logging:
#logging:
# level:
# level:
# root:
# root:
...
@@ -45,9 +37,11 @@ file:
...
@@ -45,9 +37,11 @@ file:
rtspurl
:
http://zjh189.ncpoi.cc:7080/getDeviceSnapshot
rtspurl
:
http://zjh189.ncpoi.cc:7080/getDeviceSnapshot
recogurl
:
http://zjh189.ncpoi.cc:7080/getDeviceSnapshotAndRecognize
recogurl
:
http://zjh189.ncpoi.cc:7080/getDeviceSnapshotAndRecognize
uploadurl
:
http://home2.ncpoi.cc:7080/uploadResultFile
uploadurl
:
http://home2.ncpoi.cc:7080/uploadResultFile
countryside
:
countryside
:
callbackurl
:
http://kvideo.51iwifi.com/hesc-mq/hesc/mq/receive/aiCallback11
callbackurl
:
http://kvideo.51iwifi.com/hesc-mq/hesc/mq/receive
#logging:
# level:
logging
:
# com.cx.cn.cxquartz.dao:
level
:
# debug
com.cx.cn.cxquartz.dao
:
\ No newline at end of file
debug
\ No newline at end of file
src/main/resources/application-test.yml
0 → 100644
View file @
38d3544b
server
:
port
:
8089
spring
:
datasource
:
url
:
jdbc:mysql://172.16.24.29:3306/hzdxtest?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
username
:
hzdxtest
password
:
1qaz@wsx
driver-class-name
:
com.mysql.jdbc.Driver
type
:
com.alibaba.druid.pool.DruidDataSource
filters
:
stat
maxActive
:
1000
initialSize
:
100
maxWait
:
60000
minIdle
:
500
timeBetweenEvictionRunsMillis
:
60000
minEvictableIdleTimeMillis
:
300000
testWhileIdle
:
true
testOnBorrow
:
false
testOnReturn
:
false
poolPreparedStatements
:
true
maxOpenPreparedStatements
:
20
local
:
czurl
:
http://localhost:8089/ext/getRTSP/1
fxurl
:
http://localhost:8089/ext/getDeviceSnapshotAndRecognize
countryside
:
callbackurl
:
http://kvideo.51iwifi.com
file
:
rootpath
:
/home/ubuntu/pictures
logging
:
level
:
com.cx.cn.cxquartz.dao
:
debug
src/main/resources/application.yml
View file @
38d3544b
server
:
port
:
4085
spring
:
spring
:
profiles
:
profiles
:
active
:
local
active
:
test
mybatis
:
mybatis
:
type-aliases-package
:
com.cx.cn.cxquartz.bean
type-aliases-package
:
com.cx.cn.cxquartz.bean
...
@@ -12,3 +9,17 @@ mybatis:
...
@@ -12,3 +9,17 @@ mybatis:
default-fetch-size
:
100
default-fetch-size
:
100
default-statement-timeout
:
3000
default-statement-timeout
:
3000
mapper-locations
:
classpath:mapper/*.xml
mapper-locations
:
classpath:mapper/*.xml
file
:
rtspurl
:
http://172.16.24.29:7180/getDeviceSnapshot
recogurl
:
http://172.16.24.29:7180/getDeviceSnapshotAndRecognize
uploadurl
:
http://172.16.24.29:7180/uploadResultFile
rootpath
:
/home/prod/pictures
outpath
:
result
redis
:
database
:
0
host
:
172.16.24.29
port
:
6379
countryside
:
callbackurl
:
http://kvideo.51iwifi.com/hesc-mq/hesc/mq/receive/aiCallback
src/main/resources/db/db.sql
deleted
100644 → 0
View file @
19a2655c
DROP
TABLE
IF
EXISTS
`quartz_task_informations`
;
CREATE
TABLE
`quartz_task_informations`
(
`id`
bigint
(
20
)
NOT
NULL
AUTO_INCREMENT
,
`version`
int
(
11
)
NOT
NULL
COMMENT
'版本号:需要乐观锁控制'
,
`taskNo`
varchar
(
64
)
NOT
NULL
COMMENT
'任务编号'
,
`taskName`
varchar
(
64
)
NOT
NULL
COMMENT
'任务名称'
,
`schedulerRule`
varchar
(
64
)
NOT
NULL
COMMENT
'定时规则表达式'
,
`frozenStatus`
varchar
(
16
)
NOT
NULL
COMMENT
'冻结状态'
,
`executorNo`
varchar
(
128
)
NOT
NULL
COMMENT
'执行方'
,
`frozenTime`
bigint
(
13
)
DEFAULT
NULL
COMMENT
'冻结时间'
,
`unfrozenTime`
bigint
(
13
)
DEFAULT
NULL
COMMENT
'解冻时间'
,
`createTime`
bigint
(
13
)
NOT
NULL
COMMENT
'创建时间'
,
`lastModifyTime`
bigint
(
13
)
DEFAULT
NULL
COMMENT
'最近修改时间'
,
`sendType`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'发送方式'
,
`url`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'请求地址'
,
`executeParamter`
varchar
(
2000
)
DEFAULT
NULL
COMMENT
'执行参数'
,
`timeKey`
varchar
(
32
)
NOT
NULL
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
1
DEFAULT
CHARSET
=
utf8
COMMENT
=
'定时任务信息表'
;
DROP
TABLE
IF
EXISTS
`quartz_task_records`
;
CREATE
TABLE
`quartz_task_records`
(
`id`
bigint
(
20
)
NOT
NULL
AUTO_INCREMENT
,
`taskNo`
varchar
(
64
)
NOT
NULL
COMMENT
'任务编号'
,
`timeKeyValue`
varchar
(
32
)
DEFAULT
NULL
COMMENT
'执行时间格式值'
,
`executeTime`
bigint
(
13
)
NOT
NULL
COMMENT
'执行时间'
,
`taskStatus`
varchar
(
16
)
NOT
NULL
COMMENT
'任务状态'
,
`failcount`
int
(
10
)
DEFAULT
NULL
COMMENT
'失败统计数'
,
`failReason`
varchar
(
64
)
DEFAULT
NULL
COMMENT
'失败错误描述'
,
`createTime`
bigint
(
13
)
NOT
NULL
COMMENT
'创建时间'
,
`lastModifyTime`
bigint
(
13
)
DEFAULT
NULL
COMMENT
'最近修改时间'
,
PRIMARY
KEY
(
`id`
),
KEY
`idx_task_records_taskno`
(
`taskNo`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
1
DEFAULT
CHARSET
=
utf8
COMMENT
=
'定时任务执行情况记录表'
;
DROP
TABLE
IF
EXISTS
`quartz_task_errors`
;
CREATE
TABLE
`quartz_task_errors`
(
`id`
bigint
(
20
)
NOT
NULL
AUTO_INCREMENT
,
`taskExecuteRecordId`
varchar
(
64
)
NOT
NULL
COMMENT
'任务执行记录Id'
,
`errorKey`
varchar
(
1024
)
NOT
NULL
COMMENT
'信息关键字'
,
`errorValue`
text
COMMENT
'信息内容'
,
`createTime`
bigint
(
13
)
NOT
NULL
COMMENT
'创建时间'
,
`lastModifyTime`
bigint
(
13
)
DEFAULT
NULL
COMMENT
'最近修改时间'
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
1
DEFAULT
CHARSET
=
utf8
COMMENT
=
'定时任务出错现场信息表'
;
src/main/resources/file.properties
View file @
38d3544b
...
@@ -12,8 +12,6 @@ countryside.eventwrite.url=http://countryside.51iwifi.com/gw/hesc-mq/hesc/mq/rec
...
@@ -12,8 +12,6 @@ countryside.eventwrite.url=http://countryside.51iwifi.com/gw/hesc-mq/hesc/mq/rec
countryside.appid
=
05744e80b2c211ebe32a8e271066b19e
countryside.appid
=
05744e80b2c211ebe32a8e271066b19e
countryside.appsecret
=
a55a8870b2e911ebe32a8e271066b19e
countryside.appsecret
=
a55a8870b2e911ebe32a8e271066b19e
countryside.tokenurl
=
http://countryside.51iwifi.com/gw/getAccessToken
countryside.tokenurl
=
http://countryside.51iwifi.com/gw/getAccessToken
file.publicpictureurl
=
http://zjh189.ncpoi.cc:10001/api/alg/files
file.publicpictureurl
=
http://zjh189.ncpoi.cc:10001/api/alg/files
file.ftppath
=
jiuling:9ling.cn@172.16.24.29:21
file.ftppath
=
jiuling:9ling.cn@172.16.24.29:21
...
@@ -23,9 +21,7 @@ voice.appKey=9555a51a08a2e1b1c9f02a5b3e9bea11
...
@@ -23,9 +21,7 @@ voice.appKey=9555a51a08a2e1b1c9f02a5b3e9bea11
voice.corpId
=
587c9d56ee324c0186a86aea85fc7691
voice.corpId
=
587c9d56ee324c0186a86aea85fc7691
voice.eventId
=
5
voice.eventId
=
5
voice.unionId
=
3YSCA450426N3XP
voice.unionId
=
3YSCA450426N3XP
file.rootpath
=
/home/prod/pictures
file.outpath
=
result
file.webrl
=
http://zjh189.ncpoi.cc:7080
src/main/resources/logback-spring.xml
View file @
38d3544b
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<configuration
debug=
"false"
scan=
"false"
>
<configuration
debug=
"false"
scan=
"false"
>
<springProperty
scop=
"context"
name=
"spring.application.name"
source=
"spring.application.name"
defaultValue=
""
/>
<springProperty
scop=
"context"
name=
"spring.application.name"
source=
"spring.application.name"
defaultValue=
""
/>
<property
name=
"log.path"
value=
"logs/${spring.application.name}"
/>
<property
name=
"log.path"
value=
"
/home/ubuntu/tar/zjdxtest/
logs/${spring.application.name}"
/>
<!-- 彩色日志格式 -->
<!-- 彩色日志格式 -->
<property
name=
"CONSOLE_LOG_PATTERN"
<property
name=
"CONSOLE_LOG_PATTERN"
value=
"${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"
/>
value=
"${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"
/>
...
...
src/main/resources/mapper/SbtdspsrMapper.xml
View file @
38d3544b
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
select * from
select * from
quartz_task_informations b
quartz_task_informations b
WHERE
WHERE
(taskNo
like concat(concat('%fx_',#{rtsp}),'%')
)
(taskNo
= #{rtsp}
)
and frozenstatus='UNFROZEN'
and frozenstatus='UNFROZEN'
</select>
</select>
...
...
src/main/resources/mapper/TraffPictureMapper.xml
View file @
38d3544b
...
@@ -133,6 +133,9 @@
...
@@ -133,6 +133,9 @@
<if
test=
"objh != null and objh !=''"
>
<if
test=
"objh != null and objh !=''"
>
objh =#{objh},
objh =#{objh},
</if>
</if>
<if
test=
"processstatus != null and processstatus !=''"
>
processstatus =#{processstatus},
</if>
</trim>
</trim>
where id=#{id}
where id=#{id}
...
...
src/main/resources/static/css/aero.css
deleted
100644 → 0
View file @
19a2655c
/* iCheck plugin Flat skin, aero
----------------------------------- */
.icheckbox_flat-aero
,
.iradio_flat-aero
{
display
:
inline-block
;
*
display
:
inline
;
vertical-align
:
middle
;
margin
:
0
;
padding
:
0
;
width
:
20px
;
height
:
20px
;
background
:
url(aero.png)
no-repeat
;
border
:
none
;
cursor
:
pointer
;
}
.icheckbox_flat-aero
{
background-position
:
0
0
;
}
.icheckbox_flat-aero.checked
{
background-position
:
-22px
0
;
}
.icheckbox_flat-aero.disabled
{
background-position
:
-44px
0
;
cursor
:
default
;
}
.icheckbox_flat-aero.checked.disabled
{
background-position
:
-66px
0
;
}
.iradio_flat-aero
{
background-position
:
-88px
0
;
}
.iradio_flat-aero.checked
{
background-position
:
-110px
0
;
}
.iradio_flat-aero.disabled
{
background-position
:
-132px
0
;
cursor
:
default
;
}
.iradio_flat-aero.checked.disabled
{
background-position
:
-154px
0
;
}
/* HiDPI support */
@media
(
-o-min-device-pixel-ratio
:
5
/
4
),
(
-webkit-min-device-pixel-ratio
:
1.25
),
(
min-resolution
:
120dpi
),
(
min-resolution
:
1.25dppx
)
{
.icheckbox_flat-aero
,
.iradio_flat-aero
{
background-image
:
url(aero@2x.png)
;
-webkit-background-size
:
176px
22px
;
background-size
:
176px
22px
;
}
}
\ No newline at end of file
src/main/resources/static/css/animate.min.css
deleted
100644 → 0
View file @
19a2655c
@charset
"UTF-8"
;
/*!
Animate.css - http://daneden.me/animate
Licensed under the MIT license - http://opensource.org/licenses/MIT
Copyright (c) 2015 Daniel Eden
*/
.animated
{
-webkit-animation-duration
:
1s
;
animation-duration
:
1s
;
-webkit-animation-fill-mode
:
both
;
animation-fill-mode
:
both
}
.animated.infinite
{
-webkit-animation-iteration-count
:
infinite
;
animation-iteration-count
:
infinite
}
.animated.hinge
{
-webkit-animation-duration
:
2s
;
animation-duration
:
2s
}
.animated.bounceIn
,
.animated.bounceOut
,
.animated.flipOutX
,
.animated.flipOutY
{
-webkit-animation-duration
:
.75s
;
animation-duration
:
.75s
}
@-webkit-keyframes
bounce
{
20
%,
53
%,
80
%,
from
,
to
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
);
animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
);
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}
40
%,
43
%
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.755
,
.050
,
.855
,
.060
);
animation-timing-function
:
cubic-bezier
(
0.755
,
.050
,
.855
,
.060
);
-webkit-transform
:
translate3d
(
0
,
-30px
,
0
);
transform
:
translate3d
(
0
,
-30px
,
0
)}
70
%
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.755
,
.050
,
.855
,
.060
);
animation-timing-function
:
cubic-bezier
(
0.755
,
.050
,
.855
,
.060
);
-webkit-transform
:
translate3d
(
0
,
-15px
,
0
);
transform
:
translate3d
(
0
,
-15px
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
0
,
-4px
,
0
);
transform
:
translate3d
(
0
,
-4px
,
0
)}}
@keyframes
bounce
{
20
%,
53
%,
80
%,
from
,
to
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
);
animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
);
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}
40
%,
43
%
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.755
,
.050
,
.855
,
.060
);
animation-timing-function
:
cubic-bezier
(
0.755
,
.050
,
.855
,
.060
);
-webkit-transform
:
translate3d
(
0
,
-30px
,
0
);
transform
:
translate3d
(
0
,
-30px
,
0
)}
70
%
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.755
,
.050
,
.855
,
.060
);
animation-timing-function
:
cubic-bezier
(
0.755
,
.050
,
.855
,
.060
);
-webkit-transform
:
translate3d
(
0
,
-15px
,
0
);
transform
:
translate3d
(
0
,
-15px
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
0
,
-4px
,
0
);
transform
:
translate3d
(
0
,
-4px
,
0
)}}
.bounce
{
-webkit-animation-name
:
bounce
;
animation-name
:
bounce
;
-webkit-transform-origin
:
center
bottom
;
transform-origin
:
center
bottom
}
@-webkit-keyframes
flash
{
50
%,
from
,
to
{
opacity
:
1
}
25
%,
75
%
{
opacity
:
0
}}
@keyframes
flash
{
50
%,
from
,
to
{
opacity
:
1
}
25
%,
75
%
{
opacity
:
0
}}
.flash
{
-webkit-animation-name
:
flash
;
animation-name
:
flash
}
@-webkit-keyframes
pulse
{
from
{
-webkit-transform
:
scale3d
(
1
,
1
,
1
);
transform
:
scale3d
(
1
,
1
,
1
)}
50
%
{
-webkit-transform
:
scale3d
(
1.05
,
1.05
,
1.05
);
transform
:
scale3d
(
1.05
,
1.05
,
1.05
)}
to
{
-webkit-transform
:
scale3d
(
1
,
1
,
1
);
transform
:
scale3d
(
1
,
1
,
1
)}}
@keyframes
pulse
{
from
{
-webkit-transform
:
scale3d
(
1
,
1
,
1
);
transform
:
scale3d
(
1
,
1
,
1
)}
50
%
{
-webkit-transform
:
scale3d
(
1.05
,
1.05
,
1.05
);
transform
:
scale3d
(
1.05
,
1.05
,
1.05
)}
to
{
-webkit-transform
:
scale3d
(
1
,
1
,
1
);
transform
:
scale3d
(
1
,
1
,
1
)}}
.pulse
{
-webkit-animation-name
:
pulse
;
animation-name
:
pulse
}
@-webkit-keyframes
rubberBand
{
from
{
-webkit-transform
:
scale3d
(
1
,
1
,
1
);
transform
:
scale3d
(
1
,
1
,
1
)}
30
%
{
-webkit-transform
:
scale3d
(
1.25
,
.75
,
1
);
transform
:
scale3d
(
1.25
,
.75
,
1
)}
40
%
{
-webkit-transform
:
scale3d
(
0.75
,
1.25
,
1
);
transform
:
scale3d
(
0.75
,
1.25
,
1
)}
50
%
{
-webkit-transform
:
scale3d
(
1.15
,
.85
,
1
);
transform
:
scale3d
(
1.15
,
.85
,
1
)}
65
%
{
-webkit-transform
:
scale3d
(
.95
,
1.05
,
1
);
transform
:
scale3d
(
.95
,
1.05
,
1
)}
75
%
{
-webkit-transform
:
scale3d
(
1.05
,
.95
,
1
);
transform
:
scale3d
(
1.05
,
.95
,
1
)}
to
{
-webkit-transform
:
scale3d
(
1
,
1
,
1
);
transform
:
scale3d
(
1
,
1
,
1
)}}
@keyframes
rubberBand
{
from
{
-webkit-transform
:
scale3d
(
1
,
1
,
1
);
transform
:
scale3d
(
1
,
1
,
1
)}
30
%
{
-webkit-transform
:
scale3d
(
1.25
,
.75
,
1
);
transform
:
scale3d
(
1.25
,
.75
,
1
)}
40
%
{
-webkit-transform
:
scale3d
(
0.75
,
1.25
,
1
);
transform
:
scale3d
(
0.75
,
1.25
,
1
)}
50
%
{
-webkit-transform
:
scale3d
(
1.15
,
.85
,
1
);
transform
:
scale3d
(
1.15
,
.85
,
1
)}
65
%
{
-webkit-transform
:
scale3d
(
.95
,
1.05
,
1
);
transform
:
scale3d
(
.95
,
1.05
,
1
)}
75
%
{
-webkit-transform
:
scale3d
(
1.05
,
.95
,
1
);
transform
:
scale3d
(
1.05
,
.95
,
1
)}
to
{
-webkit-transform
:
scale3d
(
1
,
1
,
1
);
transform
:
scale3d
(
1
,
1
,
1
)}}
.rubberBand
{
-webkit-animation-name
:
rubberBand
;
animation-name
:
rubberBand
}
@-webkit-keyframes
shake
{
from
,
to
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}
10
%,
30
%,
50
%,
70
%,
90
%
{
-webkit-transform
:
translate3d
(
-10px
,
0
,
0
);
transform
:
translate3d
(
-10px
,
0
,
0
)}
20
%,
40
%,
60
%,
80
%
{
-webkit-transform
:
translate3d
(
10px
,
0
,
0
);
transform
:
translate3d
(
10px
,
0
,
0
)}}
@keyframes
shake
{
from
,
to
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}
10
%,
30
%,
50
%,
70
%,
90
%
{
-webkit-transform
:
translate3d
(
-10px
,
0
,
0
);
transform
:
translate3d
(
-10px
,
0
,
0
)}
20
%,
40
%,
60
%,
80
%
{
-webkit-transform
:
translate3d
(
10px
,
0
,
0
);
transform
:
translate3d
(
10px
,
0
,
0
)}}
.shake
{
-webkit-animation-name
:
shake
;
animation-name
:
shake
}
@-webkit-keyframes
swing
{
20
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
15deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
15deg
)}
40
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
-10deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
-10deg
)}
60
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
5deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
5deg
)}
80
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
-5deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
-5deg
)}
to
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
0deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
0deg
)}}
@keyframes
swing
{
20
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
15deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
15deg
)}
40
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
-10deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
-10deg
)}
60
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
5deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
5deg
)}
80
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
-5deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
-5deg
)}
to
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
0deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
0deg
)}}
.swing
{
-webkit-transform-origin
:
top
center
;
transform-origin
:
top
center
;
-webkit-animation-name
:
swing
;
animation-name
:
swing
}
@-webkit-keyframes
tada
{
from
{
-webkit-transform
:
scale3d
(
1
,
1
,
1
);
transform
:
scale3d
(
1
,
1
,
1
)}
10
%,
20
%
{
-webkit-transform
:
scale3d
(
.9
,
.9
,
.9
)
rotate3d
(
0
,
0
,
1
,
-3deg
);
transform
:
scale3d
(
.9
,
.9
,
.9
)
rotate3d
(
0
,
0
,
1
,
-3deg
)}
30
%,
50
%,
70
%,
90
%
{
-webkit-transform
:
scale3d
(
1.1
,
1.1
,
1.1
)
rotate3d
(
0
,
0
,
1
,
3deg
);
transform
:
scale3d
(
1.1
,
1.1
,
1.1
)
rotate3d
(
0
,
0
,
1
,
3deg
)}
40
%,
60
%,
80
%
{
-webkit-transform
:
scale3d
(
1.1
,
1.1
,
1.1
)
rotate3d
(
0
,
0
,
1
,
-3deg
);
transform
:
scale3d
(
1.1
,
1.1
,
1.1
)
rotate3d
(
0
,
0
,
1
,
-3deg
)}
to
{
-webkit-transform
:
scale3d
(
1
,
1
,
1
);
transform
:
scale3d
(
1
,
1
,
1
)}}
@keyframes
tada
{
from
{
-webkit-transform
:
scale3d
(
1
,
1
,
1
);
transform
:
scale3d
(
1
,
1
,
1
)}
10
%,
20
%
{
-webkit-transform
:
scale3d
(
.9
,
.9
,
.9
)
rotate3d
(
0
,
0
,
1
,
-3deg
);
transform
:
scale3d
(
.9
,
.9
,
.9
)
rotate3d
(
0
,
0
,
1
,
-3deg
)}
30
%,
50
%,
70
%,
90
%
{
-webkit-transform
:
scale3d
(
1.1
,
1.1
,
1.1
)
rotate3d
(
0
,
0
,
1
,
3deg
);
transform
:
scale3d
(
1.1
,
1.1
,
1.1
)
rotate3d
(
0
,
0
,
1
,
3deg
)}
40
%,
60
%,
80
%
{
-webkit-transform
:
scale3d
(
1.1
,
1.1
,
1.1
)
rotate3d
(
0
,
0
,
1
,
-3deg
);
transform
:
scale3d
(
1.1
,
1.1
,
1.1
)
rotate3d
(
0
,
0
,
1
,
-3deg
)}
to
{
-webkit-transform
:
scale3d
(
1
,
1
,
1
);
transform
:
scale3d
(
1
,
1
,
1
)}}
.tada
{
-webkit-animation-name
:
tada
;
animation-name
:
tada
}
@-webkit-keyframes
wobble
{
from
{
-webkit-transform
:
none
;
transform
:
none
}
15
%
{
-webkit-transform
:
translate3d
(
-25%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-5deg
);
transform
:
translate3d
(
-25%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-5deg
)}
30
%
{
-webkit-transform
:
translate3d
(
20%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
3deg
);
transform
:
translate3d
(
20%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
3deg
)}
45
%
{
-webkit-transform
:
translate3d
(
-15%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-3deg
);
transform
:
translate3d
(
-15%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-3deg
)}
60
%
{
-webkit-transform
:
translate3d
(
10%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
2deg
);
transform
:
translate3d
(
10%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
2deg
)}
75
%
{
-webkit-transform
:
translate3d
(
-5%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-1deg
);
transform
:
translate3d
(
-5%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-1deg
)}
to
{
-webkit-transform
:
none
;
transform
:
none
}}
@keyframes
wobble
{
from
{
-webkit-transform
:
none
;
transform
:
none
}
15
%
{
-webkit-transform
:
translate3d
(
-25%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-5deg
);
transform
:
translate3d
(
-25%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-5deg
)}
30
%
{
-webkit-transform
:
translate3d
(
20%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
3deg
);
transform
:
translate3d
(
20%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
3deg
)}
45
%
{
-webkit-transform
:
translate3d
(
-15%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-3deg
);
transform
:
translate3d
(
-15%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-3deg
)}
60
%
{
-webkit-transform
:
translate3d
(
10%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
2deg
);
transform
:
translate3d
(
10%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
2deg
)}
75
%
{
-webkit-transform
:
translate3d
(
-5%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-1deg
);
transform
:
translate3d
(
-5%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-1deg
)}
to
{
-webkit-transform
:
none
;
transform
:
none
}}
.wobble
{
-webkit-animation-name
:
wobble
;
animation-name
:
wobble
}
@-webkit-keyframes
jello
{
11
.1
%,
from
,
to
{
-webkit-transform
:
none
;
transform
:
none
}
22
.2
%
{
-webkit-transform
:
skewX
(
-12.5deg
)
skewY
(
-12.5deg
);
transform
:
skewX
(
-12.5deg
)
skewY
(
-12.5deg
)}
33
.3
%
{
-webkit-transform
:
skewX
(
6.25deg
)
skewY
(
6.25deg
);
transform
:
skewX
(
6.25deg
)
skewY
(
6.25deg
)}
44
.4
%
{
-webkit-transform
:
skewX
(
-3.125deg
)
skewY
(
-3.125deg
);
transform
:
skewX
(
-3.125deg
)
skewY
(
-3.125deg
)}
55
.5
%
{
-webkit-transform
:
skewX
(
1.5625deg
)
skewY
(
1.5625deg
);
transform
:
skewX
(
1.5625deg
)
skewY
(
1.5625deg
)}
66
.6
%
{
-webkit-transform
:
skewX
(
-.78125deg
)
skewY
(
-.78125deg
);
transform
:
skewX
(
-.78125deg
)
skewY
(
-.78125deg
)}
77
.7
%
{
-webkit-transform
:
skewX
(
0.390625deg
)
skewY
(
0.390625deg
);
transform
:
skewX
(
0.390625deg
)
skewY
(
0.390625deg
)}
88
.8
%
{
-webkit-transform
:
skewX
(
-.1953125deg
)
skewY
(
-.1953125deg
);
transform
:
skewX
(
-.1953125deg
)
skewY
(
-.1953125deg
)}}
@keyframes
jello
{
11
.1
%,
from
,
to
{
-webkit-transform
:
none
;
transform
:
none
}
22
.2
%
{
-webkit-transform
:
skewX
(
-12.5deg
)
skewY
(
-12.5deg
);
transform
:
skewX
(
-12.5deg
)
skewY
(
-12.5deg
)}
33
.3
%
{
-webkit-transform
:
skewX
(
6.25deg
)
skewY
(
6.25deg
);
transform
:
skewX
(
6.25deg
)
skewY
(
6.25deg
)}
44
.4
%
{
-webkit-transform
:
skewX
(
-3.125deg
)
skewY
(
-3.125deg
);
transform
:
skewX
(
-3.125deg
)
skewY
(
-3.125deg
)}
55
.5
%
{
-webkit-transform
:
skewX
(
1.5625deg
)
skewY
(
1.5625deg
);
transform
:
skewX
(
1.5625deg
)
skewY
(
1.5625deg
)}
66
.6
%
{
-webkit-transform
:
skewX
(
-.78125deg
)
skewY
(
-.78125deg
);
transform
:
skewX
(
-.78125deg
)
skewY
(
-.78125deg
)}
77
.7
%
{
-webkit-transform
:
skewX
(
0.390625deg
)
skewY
(
0.390625deg
);
transform
:
skewX
(
0.390625deg
)
skewY
(
0.390625deg
)}
88
.8
%
{
-webkit-transform
:
skewX
(
-.1953125deg
)
skewY
(
-.1953125deg
);
transform
:
skewX
(
-.1953125deg
)
skewY
(
-.1953125deg
)}}
.jello
{
-webkit-animation-name
:
jello
;
animation-name
:
jello
;
-webkit-transform-origin
:
center
;
transform-origin
:
center
}
@-webkit-keyframes
bounceIn
{
20
%,
40
%,
60
%,
80
%,
from
,
to
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
);
animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
)}
0
%
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.3
,
.3
,
.3
);
transform
:
scale3d
(
.3
,
.3
,
.3
)}
20
%
{
-webkit-transform
:
scale3d
(
1.1
,
1.1
,
1.1
);
transform
:
scale3d
(
1.1
,
1.1
,
1.1
)}
40
%
{
-webkit-transform
:
scale3d
(
.9
,
.9
,
.9
);
transform
:
scale3d
(
.9
,
.9
,
.9
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
1.03
,
1.03
,
1.03
);
transform
:
scale3d
(
1.03
,
1.03
,
1.03
)}
80
%
{
-webkit-transform
:
scale3d
(
.97
,
.97
,
.97
);
transform
:
scale3d
(
.97
,
.97
,
.97
)}
to
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
1
,
1
,
1
);
transform
:
scale3d
(
1
,
1
,
1
)}}
@keyframes
bounceIn
{
20
%,
40
%,
60
%,
80
%,
from
,
to
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
);
animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
)}
0
%
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.3
,
.3
,
.3
);
transform
:
scale3d
(
.3
,
.3
,
.3
)}
20
%
{
-webkit-transform
:
scale3d
(
1.1
,
1.1
,
1.1
);
transform
:
scale3d
(
1.1
,
1.1
,
1.1
)}
40
%
{
-webkit-transform
:
scale3d
(
.9
,
.9
,
.9
);
transform
:
scale3d
(
.9
,
.9
,
.9
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
1.03
,
1.03
,
1.03
);
transform
:
scale3d
(
1.03
,
1.03
,
1.03
)}
80
%
{
-webkit-transform
:
scale3d
(
.97
,
.97
,
.97
);
transform
:
scale3d
(
.97
,
.97
,
.97
)}
to
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
1
,
1
,
1
);
transform
:
scale3d
(
1
,
1
,
1
)}}
.bounceIn
{
-webkit-animation-name
:
bounceIn
;
animation-name
:
bounceIn
}
@-webkit-keyframes
bounceInDown
{
60
%,
75
%,
90
%,
from
,
to
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
);
animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
)}
0
%
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-3000px
,
0
);
transform
:
translate3d
(
0
,
-3000px
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
25px
,
0
);
transform
:
translate3d
(
0
,
25px
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
0
,
-10px
,
0
);
transform
:
translate3d
(
0
,
-10px
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
0
,
5px
,
0
);
transform
:
translate3d
(
0
,
5px
,
0
)}
to
{
-webkit-transform
:
none
;
transform
:
none
}}
@keyframes
bounceInDown
{
60
%,
75
%,
90
%,
from
,
to
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
);
animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
)}
0
%
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-3000px
,
0
);
transform
:
translate3d
(
0
,
-3000px
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
25px
,
0
);
transform
:
translate3d
(
0
,
25px
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
0
,
-10px
,
0
);
transform
:
translate3d
(
0
,
-10px
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
0
,
5px
,
0
);
transform
:
translate3d
(
0
,
5px
,
0
)}
to
{
-webkit-transform
:
none
;
transform
:
none
}}
.bounceInDown
{
-webkit-animation-name
:
bounceInDown
;
animation-name
:
bounceInDown
}
@-webkit-keyframes
bounceInLeft
{
60
%,
75
%,
90
%,
from
,
to
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
);
animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
)}
0
%
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-3000px
,
0
,
0
);
transform
:
translate3d
(
-3000px
,
0
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
25px
,
0
,
0
);
transform
:
translate3d
(
25px
,
0
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
-10px
,
0
,
0
);
transform
:
translate3d
(
-10px
,
0
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
5px
,
0
,
0
);
transform
:
translate3d
(
5px
,
0
,
0
)}
to
{
-webkit-transform
:
none
;
transform
:
none
}}
@keyframes
bounceInLeft
{
60
%,
75
%,
90
%,
from
,
to
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
);
animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
)}
0
%
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-3000px
,
0
,
0
);
transform
:
translate3d
(
-3000px
,
0
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
25px
,
0
,
0
);
transform
:
translate3d
(
25px
,
0
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
-10px
,
0
,
0
);
transform
:
translate3d
(
-10px
,
0
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
5px
,
0
,
0
);
transform
:
translate3d
(
5px
,
0
,
0
)}
to
{
-webkit-transform
:
none
;
transform
:
none
}}
.bounceInLeft
{
-webkit-animation-name
:
bounceInLeft
;
animation-name
:
bounceInLeft
}
@-webkit-keyframes
bounceInRight
{
60
%,
75
%,
90
%,
from
,
to
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
);
animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
)}
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
3000px
,
0
,
0
);
transform
:
translate3d
(
3000px
,
0
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
-25px
,
0
,
0
);
transform
:
translate3d
(
-25px
,
0
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
10px
,
0
,
0
);
transform
:
translate3d
(
10px
,
0
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
-5px
,
0
,
0
);
transform
:
translate3d
(
-5px
,
0
,
0
)}
to
{
-webkit-transform
:
none
;
transform
:
none
}}
@keyframes
bounceInRight
{
60
%,
75
%,
90
%,
from
,
to
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
);
animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
)}
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
3000px
,
0
,
0
);
transform
:
translate3d
(
3000px
,
0
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
-25px
,
0
,
0
);
transform
:
translate3d
(
-25px
,
0
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
10px
,
0
,
0
);
transform
:
translate3d
(
10px
,
0
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
-5px
,
0
,
0
);
transform
:
translate3d
(
-5px
,
0
,
0
)}
to
{
-webkit-transform
:
none
;
transform
:
none
}}
.bounceInRight
{
-webkit-animation-name
:
bounceInRight
;
animation-name
:
bounceInRight
}
@-webkit-keyframes
bounceInUp
{
60
%,
75
%,
90
%,
from
,
to
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
);
animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
)}
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
3000px
,
0
);
transform
:
translate3d
(
0
,
3000px
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
-20px
,
0
);
transform
:
translate3d
(
0
,
-20px
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
0
,
10px
,
0
);
transform
:
translate3d
(
0
,
10px
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
0
,
-5px
,
0
);
transform
:
translate3d
(
0
,
-5px
,
0
)}
to
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}}
@keyframes
bounceInUp
{
60
%,
75
%,
90
%,
from
,
to
{
-webkit-animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
);
animation-timing-function
:
cubic-bezier
(
0.215
,
.61
,
.355
,
1
)}
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
3000px
,
0
);
transform
:
translate3d
(
0
,
3000px
,
0
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
-20px
,
0
);
transform
:
translate3d
(
0
,
-20px
,
0
)}
75
%
{
-webkit-transform
:
translate3d
(
0
,
10px
,
0
);
transform
:
translate3d
(
0
,
10px
,
0
)}
90
%
{
-webkit-transform
:
translate3d
(
0
,
-5px
,
0
);
transform
:
translate3d
(
0
,
-5px
,
0
)}
to
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}}
.bounceInUp
{
-webkit-animation-name
:
bounceInUp
;
animation-name
:
bounceInUp
}
@-webkit-keyframes
bounceOut
{
20
%
{
-webkit-transform
:
scale3d
(
.9
,
.9
,
.9
);
transform
:
scale3d
(
.9
,
.9
,
.9
)}
50
%,
55
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
1.1
,
1.1
,
1.1
);
transform
:
scale3d
(
1.1
,
1.1
,
1.1
)}
to
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.3
,
.3
,
.3
);
transform
:
scale3d
(
.3
,
.3
,
.3
)}}
@keyframes
bounceOut
{
20
%
{
-webkit-transform
:
scale3d
(
.9
,
.9
,
.9
);
transform
:
scale3d
(
.9
,
.9
,
.9
)}
50
%,
55
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
1.1
,
1.1
,
1.1
);
transform
:
scale3d
(
1.1
,
1.1
,
1.1
)}
to
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.3
,
.3
,
.3
);
transform
:
scale3d
(
.3
,
.3
,
.3
)}}
.bounceOut
{
-webkit-animation-name
:
bounceOut
;
animation-name
:
bounceOut
}
@-webkit-keyframes
bounceOutDown
{
20
%
{
-webkit-transform
:
translate3d
(
0
,
10px
,
0
);
transform
:
translate3d
(
0
,
10px
,
0
)}
40
%,
45
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
-20px
,
0
);
transform
:
translate3d
(
0
,
-20px
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
2000px
,
0
);
transform
:
translate3d
(
0
,
2000px
,
0
)}}
@keyframes
bounceOutDown
{
20
%
{
-webkit-transform
:
translate3d
(
0
,
10px
,
0
);
transform
:
translate3d
(
0
,
10px
,
0
)}
40
%,
45
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
-20px
,
0
);
transform
:
translate3d
(
0
,
-20px
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
2000px
,
0
);
transform
:
translate3d
(
0
,
2000px
,
0
)}}
.bounceOutDown
{
-webkit-animation-name
:
bounceOutDown
;
animation-name
:
bounceOutDown
}
@-webkit-keyframes
bounceOutLeft
{
20
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
20px
,
0
,
0
);
transform
:
translate3d
(
20px
,
0
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-2000px
,
0
,
0
);
transform
:
translate3d
(
-2000px
,
0
,
0
)}}
@keyframes
bounceOutLeft
{
20
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
20px
,
0
,
0
);
transform
:
translate3d
(
20px
,
0
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-2000px
,
0
,
0
);
transform
:
translate3d
(
-2000px
,
0
,
0
)}}
.bounceOutLeft
{
-webkit-animation-name
:
bounceOutLeft
;
animation-name
:
bounceOutLeft
}
@-webkit-keyframes
bounceOutRight
{
20
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
-20px
,
0
,
0
);
transform
:
translate3d
(
-20px
,
0
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
2000px
,
0
,
0
);
transform
:
translate3d
(
2000px
,
0
,
0
)}}
@keyframes
bounceOutRight
{
20
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
-20px
,
0
,
0
);
transform
:
translate3d
(
-20px
,
0
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
2000px
,
0
,
0
);
transform
:
translate3d
(
2000px
,
0
,
0
)}}
.bounceOutRight
{
-webkit-animation-name
:
bounceOutRight
;
animation-name
:
bounceOutRight
}
@-webkit-keyframes
bounceOutUp
{
20
%
{
-webkit-transform
:
translate3d
(
0
,
-10px
,
0
);
transform
:
translate3d
(
0
,
-10px
,
0
)}
40
%,
45
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
20px
,
0
);
transform
:
translate3d
(
0
,
20px
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-2000px
,
0
);
transform
:
translate3d
(
0
,
-2000px
,
0
)}}
@keyframes
bounceOutUp
{
20
%
{
-webkit-transform
:
translate3d
(
0
,
-10px
,
0
);
transform
:
translate3d
(
0
,
-10px
,
0
)}
40
%,
45
%
{
opacity
:
1
;
-webkit-transform
:
translate3d
(
0
,
20px
,
0
);
transform
:
translate3d
(
0
,
20px
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-2000px
,
0
);
transform
:
translate3d
(
0
,
-2000px
,
0
)}}
.bounceOutUp
{
-webkit-animation-name
:
bounceOutUp
;
animation-name
:
bounceOutUp
}
@-webkit-keyframes
fadeIn
{
from
{
opacity
:
0
}
to
{
opacity
:
1
}}
@keyframes
fadeIn
{
from
{
opacity
:
0
}
to
{
opacity
:
1
}}
.fadeIn
{
-webkit-animation-name
:
fadeIn
;
animation-name
:
fadeIn
}
@-webkit-keyframes
fadeInDown
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-100%
,
0
);
transform
:
translate3d
(
0
,
-100%
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
@keyframes
fadeInDown
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-100%
,
0
);
transform
:
translate3d
(
0
,
-100%
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.fadeInDown
{
-webkit-animation-name
:
fadeInDown
;
animation-name
:
fadeInDown
}
@-webkit-keyframes
fadeInDownBig
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-2000px
,
0
);
transform
:
translate3d
(
0
,
-2000px
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
@keyframes
fadeInDownBig
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-2000px
,
0
);
transform
:
translate3d
(
0
,
-2000px
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.fadeInDownBig
{
-webkit-animation-name
:
fadeInDownBig
;
animation-name
:
fadeInDownBig
}
@-webkit-keyframes
fadeInLeft
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-100%
,
0
,
0
);
transform
:
translate3d
(
-100%
,
0
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
@keyframes
fadeInLeft
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-100%
,
0
,
0
);
transform
:
translate3d
(
-100%
,
0
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.fadeInLeft
{
-webkit-animation-name
:
fadeInLeft
;
animation-name
:
fadeInLeft
}
@-webkit-keyframes
fadeInLeftBig
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-2000px
,
0
,
0
);
transform
:
translate3d
(
-2000px
,
0
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
@keyframes
fadeInLeftBig
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-2000px
,
0
,
0
);
transform
:
translate3d
(
-2000px
,
0
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.fadeInLeftBig
{
-webkit-animation-name
:
fadeInLeftBig
;
animation-name
:
fadeInLeftBig
}
@-webkit-keyframes
fadeInRight
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
100%
,
0
,
0
);
transform
:
translate3d
(
100%
,
0
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
@keyframes
fadeInRight
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
100%
,
0
,
0
);
transform
:
translate3d
(
100%
,
0
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.fadeInRight
{
-webkit-animation-name
:
fadeInRight
;
animation-name
:
fadeInRight
}
@-webkit-keyframes
fadeInRightBig
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
2000px
,
0
,
0
);
transform
:
translate3d
(
2000px
,
0
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
@keyframes
fadeInRightBig
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
2000px
,
0
,
0
);
transform
:
translate3d
(
2000px
,
0
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.fadeInRightBig
{
-webkit-animation-name
:
fadeInRightBig
;
animation-name
:
fadeInRightBig
}
@-webkit-keyframes
fadeInUp
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
100%
,
0
);
transform
:
translate3d
(
0
,
100%
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
@keyframes
fadeInUp
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
100%
,
0
);
transform
:
translate3d
(
0
,
100%
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.fadeInUp
{
-webkit-animation-name
:
fadeInUp
;
animation-name
:
fadeInUp
}
@-webkit-keyframes
fadeInUpBig
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
2000px
,
0
);
transform
:
translate3d
(
0
,
2000px
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
@keyframes
fadeInUpBig
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
2000px
,
0
);
transform
:
translate3d
(
0
,
2000px
,
0
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.fadeInUpBig
{
-webkit-animation-name
:
fadeInUpBig
;
animation-name
:
fadeInUpBig
}
@-webkit-keyframes
fadeOut
{
from
{
opacity
:
1
}
to
{
opacity
:
0
}}
@keyframes
fadeOut
{
from
{
opacity
:
1
}
to
{
opacity
:
0
}}
.fadeOut
{
-webkit-animation-name
:
fadeOut
;
animation-name
:
fadeOut
}
@-webkit-keyframes
fadeOutDown
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
100%
,
0
);
transform
:
translate3d
(
0
,
100%
,
0
)}}
@keyframes
fadeOutDown
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
100%
,
0
);
transform
:
translate3d
(
0
,
100%
,
0
)}}
.fadeOutDown
{
-webkit-animation-name
:
fadeOutDown
;
animation-name
:
fadeOutDown
}
@-webkit-keyframes
fadeOutDownBig
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
2000px
,
0
);
transform
:
translate3d
(
0
,
2000px
,
0
)}}
@keyframes
fadeOutDownBig
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
2000px
,
0
);
transform
:
translate3d
(
0
,
2000px
,
0
)}}
.fadeOutDownBig
{
-webkit-animation-name
:
fadeOutDownBig
;
animation-name
:
fadeOutDownBig
}
@-webkit-keyframes
fadeOutLeft
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-100%
,
0
,
0
);
transform
:
translate3d
(
-100%
,
0
,
0
)}}
@keyframes
fadeOutLeft
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-100%
,
0
,
0
);
transform
:
translate3d
(
-100%
,
0
,
0
)}}
.fadeOutLeft
{
-webkit-animation-name
:
fadeOutLeft
;
animation-name
:
fadeOutLeft
}
@-webkit-keyframes
fadeOutLeftBig
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-2000px
,
0
,
0
);
transform
:
translate3d
(
-2000px
,
0
,
0
)}}
@keyframes
fadeOutLeftBig
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-2000px
,
0
,
0
);
transform
:
translate3d
(
-2000px
,
0
,
0
)}}
.fadeOutLeftBig
{
-webkit-animation-name
:
fadeOutLeftBig
;
animation-name
:
fadeOutLeftBig
}
@-webkit-keyframes
fadeOutRight
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
100%
,
0
,
0
);
transform
:
translate3d
(
100%
,
0
,
0
)}}
@keyframes
fadeOutRight
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
100%
,
0
,
0
);
transform
:
translate3d
(
100%
,
0
,
0
)}}
.fadeOutRight
{
-webkit-animation-name
:
fadeOutRight
;
animation-name
:
fadeOutRight
}
@-webkit-keyframes
fadeOutRightBig
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
2000px
,
0
,
0
);
transform
:
translate3d
(
2000px
,
0
,
0
)}}
@keyframes
fadeOutRightBig
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
2000px
,
0
,
0
);
transform
:
translate3d
(
2000px
,
0
,
0
)}}
.fadeOutRightBig
{
-webkit-animation-name
:
fadeOutRightBig
;
animation-name
:
fadeOutRightBig
}
@-webkit-keyframes
fadeOutUp
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-100%
,
0
);
transform
:
translate3d
(
0
,
-100%
,
0
)}}
@keyframes
fadeOutUp
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-100%
,
0
);
transform
:
translate3d
(
0
,
-100%
,
0
)}}
.fadeOutUp
{
-webkit-animation-name
:
fadeOutUp
;
animation-name
:
fadeOutUp
}
@-webkit-keyframes
fadeOutUpBig
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-2000px
,
0
);
transform
:
translate3d
(
0
,
-2000px
,
0
)}}
@keyframes
fadeOutUpBig
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
0
,
-2000px
,
0
);
transform
:
translate3d
(
0
,
-2000px
,
0
)}}
.fadeOutUpBig
{
-webkit-animation-name
:
fadeOutUpBig
;
animation-name
:
fadeOutUpBig
}
@-webkit-keyframes
flip
{
from
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-360deg
);
transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-360deg
);
-webkit-animation-timing-function
:
ease-out
;
animation-timing-function
:
ease-out
}
40
%
{
-webkit-transform
:
perspective
(
400px
)
translate3d
(
0
,
0
,
150px
)
rotate3d
(
0
,
1
,
0
,
-190deg
);
transform
:
perspective
(
400px
)
translate3d
(
0
,
0
,
150px
)
rotate3d
(
0
,
1
,
0
,
-190deg
);
-webkit-animation-timing-function
:
ease-out
;
animation-timing-function
:
ease-out
}
50
%
{
-webkit-transform
:
perspective
(
400px
)
translate3d
(
0
,
0
,
150px
)
rotate3d
(
0
,
1
,
0
,
-170deg
);
transform
:
perspective
(
400px
)
translate3d
(
0
,
0
,
150px
)
rotate3d
(
0
,
1
,
0
,
-170deg
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}
80
%
{
-webkit-transform
:
perspective
(
400px
)
scale3d
(
.95
,
.95
,
.95
);
transform
:
perspective
(
400px
)
scale3d
(
.95
,
.95
,
.95
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}
to
{
-webkit-transform
:
perspective
(
400px
);
transform
:
perspective
(
400px
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}}
@keyframes
flip
{
from
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-360deg
);
transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-360deg
);
-webkit-animation-timing-function
:
ease-out
;
animation-timing-function
:
ease-out
}
40
%
{
-webkit-transform
:
perspective
(
400px
)
translate3d
(
0
,
0
,
150px
)
rotate3d
(
0
,
1
,
0
,
-190deg
);
transform
:
perspective
(
400px
)
translate3d
(
0
,
0
,
150px
)
rotate3d
(
0
,
1
,
0
,
-190deg
);
-webkit-animation-timing-function
:
ease-out
;
animation-timing-function
:
ease-out
}
50
%
{
-webkit-transform
:
perspective
(
400px
)
translate3d
(
0
,
0
,
150px
)
rotate3d
(
0
,
1
,
0
,
-170deg
);
transform
:
perspective
(
400px
)
translate3d
(
0
,
0
,
150px
)
rotate3d
(
0
,
1
,
0
,
-170deg
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}
80
%
{
-webkit-transform
:
perspective
(
400px
)
scale3d
(
.95
,
.95
,
.95
);
transform
:
perspective
(
400px
)
scale3d
(
.95
,
.95
,
.95
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}
to
{
-webkit-transform
:
perspective
(
400px
);
transform
:
perspective
(
400px
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}}
.animated.flip
{
-webkit-backface-visibility
:
visible
;
backface-visibility
:
visible
;
-webkit-animation-name
:
flip
;
animation-name
:
flip
}
@-webkit-keyframes
flipInX
{
from
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
90deg
);
transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
90deg
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
;
opacity
:
0
}
40
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
-20deg
);
transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
-20deg
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}
60
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
10deg
);
transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
10deg
);
opacity
:
1
}
80
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
-5deg
);
transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
-5deg
)}
to
{
-webkit-transform
:
perspective
(
400px
);
transform
:
perspective
(
400px
)}}
@keyframes
flipInX
{
from
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
90deg
);
transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
90deg
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
;
opacity
:
0
}
40
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
-20deg
);
transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
-20deg
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}
60
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
10deg
);
transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
10deg
);
opacity
:
1
}
80
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
-5deg
);
transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
-5deg
)}
to
{
-webkit-transform
:
perspective
(
400px
);
transform
:
perspective
(
400px
)}}
.flipInX
{
-webkit-backface-visibility
:
visible
!important
;
backface-visibility
:
visible
!important
;
-webkit-animation-name
:
flipInX
;
animation-name
:
flipInX
}
@-webkit-keyframes
flipInY
{
from
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
90deg
);
transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
90deg
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
;
opacity
:
0
}
40
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-20deg
);
transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-20deg
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}
60
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
10deg
);
transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
10deg
);
opacity
:
1
}
80
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-5deg
);
transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-5deg
)}
to
{
-webkit-transform
:
perspective
(
400px
);
transform
:
perspective
(
400px
)}}
@keyframes
flipInY
{
from
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
90deg
);
transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
90deg
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
;
opacity
:
0
}
40
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-20deg
);
transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-20deg
);
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}
60
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
10deg
);
transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
10deg
);
opacity
:
1
}
80
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-5deg
);
transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-5deg
)}
to
{
-webkit-transform
:
perspective
(
400px
);
transform
:
perspective
(
400px
)}}
.flipInY
{
-webkit-backface-visibility
:
visible
!important
;
backface-visibility
:
visible
!important
;
-webkit-animation-name
:
flipInY
;
animation-name
:
flipInY
}
@-webkit-keyframes
flipOutX
{
from
{
-webkit-transform
:
perspective
(
400px
);
transform
:
perspective
(
400px
)}
30
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
-20deg
);
transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
-20deg
);
opacity
:
1
}
to
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
90deg
);
transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
90deg
);
opacity
:
0
}}
@keyframes
flipOutX
{
from
{
-webkit-transform
:
perspective
(
400px
);
transform
:
perspective
(
400px
)}
30
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
-20deg
);
transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
-20deg
);
opacity
:
1
}
to
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
90deg
);
transform
:
perspective
(
400px
)
rotate3d
(
1
,
0
,
0
,
90deg
);
opacity
:
0
}}
.flipOutX
{
-webkit-animation-name
:
flipOutX
;
animation-name
:
flipOutX
;
-webkit-backface-visibility
:
visible
!important
;
backface-visibility
:
visible
!important
}
@-webkit-keyframes
flipOutY
{
from
{
-webkit-transform
:
perspective
(
400px
);
transform
:
perspective
(
400px
)}
30
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-15deg
);
transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-15deg
);
opacity
:
1
}
to
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
90deg
);
transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
90deg
);
opacity
:
0
}}
@keyframes
flipOutY
{
from
{
-webkit-transform
:
perspective
(
400px
);
transform
:
perspective
(
400px
)}
30
%
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-15deg
);
transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
-15deg
);
opacity
:
1
}
to
{
-webkit-transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
90deg
);
transform
:
perspective
(
400px
)
rotate3d
(
0
,
1
,
0
,
90deg
);
opacity
:
0
}}
.flipOutY
{
-webkit-backface-visibility
:
visible
!important
;
backface-visibility
:
visible
!important
;
-webkit-animation-name
:
flipOutY
;
animation-name
:
flipOutY
}
@-webkit-keyframes
lightSpeedIn
{
from
{
-webkit-transform
:
translate3d
(
100%
,
0
,
0
)
skewX
(
-30deg
);
transform
:
translate3d
(
100%
,
0
,
0
)
skewX
(
-30deg
);
opacity
:
0
}
60
%
{
-webkit-transform
:
skewX
(
20deg
);
transform
:
skewX
(
20deg
);
opacity
:
1
}
80
%
{
-webkit-transform
:
skewX
(
-5deg
);
transform
:
skewX
(
-5deg
);
opacity
:
1
}
to
{
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
@keyframes
lightSpeedIn
{
from
{
-webkit-transform
:
translate3d
(
100%
,
0
,
0
)
skewX
(
-30deg
);
transform
:
translate3d
(
100%
,
0
,
0
)
skewX
(
-30deg
);
opacity
:
0
}
60
%
{
-webkit-transform
:
skewX
(
20deg
);
transform
:
skewX
(
20deg
);
opacity
:
1
}
80
%
{
-webkit-transform
:
skewX
(
-5deg
);
transform
:
skewX
(
-5deg
);
opacity
:
1
}
to
{
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
.lightSpeedIn
{
-webkit-animation-name
:
lightSpeedIn
;
animation-name
:
lightSpeedIn
;
-webkit-animation-timing-function
:
ease-out
;
animation-timing-function
:
ease-out
}
@-webkit-keyframes
lightSpeedOut
{
from
{
opacity
:
1
}
to
{
-webkit-transform
:
translate3d
(
100%
,
0
,
0
)
skewX
(
30deg
);
transform
:
translate3d
(
100%
,
0
,
0
)
skewX
(
30deg
);
opacity
:
0
}}
@keyframes
lightSpeedOut
{
from
{
opacity
:
1
}
to
{
-webkit-transform
:
translate3d
(
100%
,
0
,
0
)
skewX
(
30deg
);
transform
:
translate3d
(
100%
,
0
,
0
)
skewX
(
30deg
);
opacity
:
0
}}
.lightSpeedOut
{
-webkit-animation-name
:
lightSpeedOut
;
animation-name
:
lightSpeedOut
;
-webkit-animation-timing-function
:
ease-in
;
animation-timing-function
:
ease-in
}
@-webkit-keyframes
rotateIn
{
from
{
-webkit-transform-origin
:
center
;
transform-origin
:
center
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
-200deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
-200deg
);
opacity
:
0
}
to
{
-webkit-transform-origin
:
center
;
transform-origin
:
center
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
@keyframes
rotateIn
{
from
{
-webkit-transform-origin
:
center
;
transform-origin
:
center
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
-200deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
-200deg
);
opacity
:
0
}
to
{
-webkit-transform-origin
:
center
;
transform-origin
:
center
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
.rotateIn
{
-webkit-animation-name
:
rotateIn
;
animation-name
:
rotateIn
}
@-webkit-keyframes
rotateInDownLeft
{
from
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
-45deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
-45deg
);
opacity
:
0
}
to
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
@keyframes
rotateInDownLeft
{
from
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
-45deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
-45deg
);
opacity
:
0
}
to
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
.rotateInDownLeft
{
-webkit-animation-name
:
rotateInDownLeft
;
animation-name
:
rotateInDownLeft
}
@-webkit-keyframes
rotateInDownRight
{
from
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
45deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
45deg
);
opacity
:
0
}
to
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
@keyframes
rotateInDownRight
{
from
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
45deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
45deg
);
opacity
:
0
}
to
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
.rotateInDownRight
{
-webkit-animation-name
:
rotateInDownRight
;
animation-name
:
rotateInDownRight
}
@-webkit-keyframes
rotateInUpLeft
{
from
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
45deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
45deg
);
opacity
:
0
}
to
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
@keyframes
rotateInUpLeft
{
from
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
45deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
45deg
);
opacity
:
0
}
to
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
.rotateInUpLeft
{
-webkit-animation-name
:
rotateInUpLeft
;
animation-name
:
rotateInUpLeft
}
@-webkit-keyframes
rotateInUpRight
{
from
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
-90deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
-90deg
);
opacity
:
0
}
to
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
@keyframes
rotateInUpRight
{
from
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
-90deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
-90deg
);
opacity
:
0
}
to
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
-webkit-transform
:
none
;
transform
:
none
;
opacity
:
1
}}
.rotateInUpRight
{
-webkit-animation-name
:
rotateInUpRight
;
animation-name
:
rotateInUpRight
}
@-webkit-keyframes
rotateOut
{
from
{
-webkit-transform-origin
:
center
;
transform-origin
:
center
;
opacity
:
1
}
to
{
-webkit-transform-origin
:
center
;
transform-origin
:
center
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
200deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
200deg
);
opacity
:
0
}}
@keyframes
rotateOut
{
from
{
-webkit-transform-origin
:
center
;
transform-origin
:
center
;
opacity
:
1
}
to
{
-webkit-transform-origin
:
center
;
transform-origin
:
center
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
200deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
200deg
);
opacity
:
0
}}
.rotateOut
{
-webkit-animation-name
:
rotateOut
;
animation-name
:
rotateOut
}
@-webkit-keyframes
rotateOutDownLeft
{
from
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
opacity
:
1
}
to
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
45deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
45deg
);
opacity
:
0
}}
@keyframes
rotateOutDownLeft
{
from
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
opacity
:
1
}
to
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
45deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
45deg
);
opacity
:
0
}}
.rotateOutDownLeft
{
-webkit-animation-name
:
rotateOutDownLeft
;
animation-name
:
rotateOutDownLeft
}
@-webkit-keyframes
rotateOutDownRight
{
from
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
opacity
:
1
}
to
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
-45deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
-45deg
);
opacity
:
0
}}
@keyframes
rotateOutDownRight
{
from
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
opacity
:
1
}
to
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
-45deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
-45deg
);
opacity
:
0
}}
.rotateOutDownRight
{
-webkit-animation-name
:
rotateOutDownRight
;
animation-name
:
rotateOutDownRight
}
@-webkit-keyframes
rotateOutUpLeft
{
from
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
opacity
:
1
}
to
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
-45deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
-45deg
);
opacity
:
0
}}
@keyframes
rotateOutUpLeft
{
from
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
opacity
:
1
}
to
{
-webkit-transform-origin
:
left
bottom
;
transform-origin
:
left
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
-45deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
-45deg
);
opacity
:
0
}}
.rotateOutUpLeft
{
-webkit-animation-name
:
rotateOutUpLeft
;
animation-name
:
rotateOutUpLeft
}
@-webkit-keyframes
rotateOutUpRight
{
from
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
opacity
:
1
}
to
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
90deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
90deg
);
opacity
:
0
}}
@keyframes
rotateOutUpRight
{
from
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
opacity
:
1
}
to
{
-webkit-transform-origin
:
right
bottom
;
transform-origin
:
right
bottom
;
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
90deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
90deg
);
opacity
:
0
}}
.rotateOutUpRight
{
-webkit-animation-name
:
rotateOutUpRight
;
animation-name
:
rotateOutUpRight
}
@-webkit-keyframes
hinge
{
0
%
{
-webkit-transform-origin
:
top
left
;
transform-origin
:
top
left
;
-webkit-animation-timing-function
:
ease-in-out
;
animation-timing-function
:
ease-in-out
}
20
%,
60
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
80deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
80deg
);
-webkit-transform-origin
:
top
left
;
transform-origin
:
top
left
;
-webkit-animation-timing-function
:
ease-in-out
;
animation-timing-function
:
ease-in-out
}
40
%,
80
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
60deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
60deg
);
-webkit-transform-origin
:
top
left
;
transform-origin
:
top
left
;
-webkit-animation-timing-function
:
ease-in-out
;
animation-timing-function
:
ease-in-out
;
opacity
:
1
}
to
{
-webkit-transform
:
translate3d
(
0
,
700px
,
0
);
transform
:
translate3d
(
0
,
700px
,
0
);
opacity
:
0
}}
@keyframes
hinge
{
0
%
{
-webkit-transform-origin
:
top
left
;
transform-origin
:
top
left
;
-webkit-animation-timing-function
:
ease-in-out
;
animation-timing-function
:
ease-in-out
}
20
%,
60
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
80deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
80deg
);
-webkit-transform-origin
:
top
left
;
transform-origin
:
top
left
;
-webkit-animation-timing-function
:
ease-in-out
;
animation-timing-function
:
ease-in-out
}
40
%,
80
%
{
-webkit-transform
:
rotate3d
(
0
,
0
,
1
,
60deg
);
transform
:
rotate3d
(
0
,
0
,
1
,
60deg
);
-webkit-transform-origin
:
top
left
;
transform-origin
:
top
left
;
-webkit-animation-timing-function
:
ease-in-out
;
animation-timing-function
:
ease-in-out
;
opacity
:
1
}
to
{
-webkit-transform
:
translate3d
(
0
,
700px
,
0
);
transform
:
translate3d
(
0
,
700px
,
0
);
opacity
:
0
}}
.hinge
{
-webkit-animation-name
:
hinge
;
animation-name
:
hinge
}
@-webkit-keyframes
rollIn
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-100%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-120deg
);
transform
:
translate3d
(
-100%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-120deg
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
@keyframes
rollIn
{
from
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
-100%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-120deg
);
transform
:
translate3d
(
-100%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
-120deg
)}
to
{
opacity
:
1
;
-webkit-transform
:
none
;
transform
:
none
}}
.rollIn
{
-webkit-animation-name
:
rollIn
;
animation-name
:
rollIn
}
@-webkit-keyframes
rollOut
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
100%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
120deg
);
transform
:
translate3d
(
100%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
120deg
)}}
@keyframes
rollOut
{
from
{
opacity
:
1
}
to
{
opacity
:
0
;
-webkit-transform
:
translate3d
(
100%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
120deg
);
transform
:
translate3d
(
100%
,
0
,
0
)
rotate3d
(
0
,
0
,
1
,
120deg
)}}
.rollOut
{
-webkit-animation-name
:
rollOut
;
animation-name
:
rollOut
}
@-webkit-keyframes
zoomIn
{
from
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.3
,
.3
,
.3
);
transform
:
scale3d
(
.3
,
.3
,
.3
)}
50
%
{
opacity
:
1
}}
@keyframes
zoomIn
{
from
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.3
,
.3
,
.3
);
transform
:
scale3d
(
.3
,
.3
,
.3
)}
50
%
{
opacity
:
1
}}
.zoomIn
{
-webkit-animation-name
:
zoomIn
;
animation-name
:
zoomIn
}
@-webkit-keyframes
zoomInDown
{
from
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
-1000px
,
0
);
transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
-1000px
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
);
animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
60px
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
60px
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
);
animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
)}}
@keyframes
zoomInDown
{
from
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
-1000px
,
0
);
transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
-1000px
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
);
animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
60px
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
60px
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
);
animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
)}}
.zoomInDown
{
-webkit-animation-name
:
zoomInDown
;
animation-name
:
zoomInDown
}
@-webkit-keyframes
zoomInLeft
{
from
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
-1000px
,
0
,
0
);
transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
-1000px
,
0
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
);
animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
10px
,
0
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
10px
,
0
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
);
animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
)}}
@keyframes
zoomInLeft
{
from
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
-1000px
,
0
,
0
);
transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
-1000px
,
0
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
);
animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
10px
,
0
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
10px
,
0
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
);
animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
)}}
.zoomInLeft
{
-webkit-animation-name
:
zoomInLeft
;
animation-name
:
zoomInLeft
}
@-webkit-keyframes
zoomInRight
{
from
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
1000px
,
0
,
0
);
transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
1000px
,
0
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
);
animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
-10px
,
0
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
-10px
,
0
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
);
animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
)}}
@keyframes
zoomInRight
{
from
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
1000px
,
0
,
0
);
transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
1000px
,
0
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
);
animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
-10px
,
0
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
-10px
,
0
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
);
animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
)}}
.zoomInRight
{
-webkit-animation-name
:
zoomInRight
;
animation-name
:
zoomInRight
}
@-webkit-keyframes
zoomInUp
{
from
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
1000px
,
0
);
transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
1000px
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
);
animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
-60px
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
-60px
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
);
animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
)}}
@keyframes
zoomInUp
{
from
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
1000px
,
0
);
transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
1000px
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
);
animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
)}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
-60px
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
-60px
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
);
animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
)}}
.zoomInUp
{
-webkit-animation-name
:
zoomInUp
;
animation-name
:
zoomInUp
}
@-webkit-keyframes
zoomOut
{
from
{
opacity
:
1
}
50
%
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.3
,
.3
,
.3
);
transform
:
scale3d
(
.3
,
.3
,
.3
)}
to
{
opacity
:
0
}}
@keyframes
zoomOut
{
from
{
opacity
:
1
}
50
%
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.3
,
.3
,
.3
);
transform
:
scale3d
(
.3
,
.3
,
.3
)}
to
{
opacity
:
0
}}
.zoomOut
{
-webkit-animation-name
:
zoomOut
;
animation-name
:
zoomOut
}
@-webkit-keyframes
zoomOutDown
{
40
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
-60px
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
-60px
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
);
animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
)}
to
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
2000px
,
0
);
transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
2000px
,
0
);
-webkit-transform-origin
:
center
bottom
;
transform-origin
:
center
bottom
;
-webkit-animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
);
animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
)}}
@keyframes
zoomOutDown
{
40
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
-60px
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
-60px
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
);
animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
)}
to
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
2000px
,
0
);
transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
2000px
,
0
);
-webkit-transform-origin
:
center
bottom
;
transform-origin
:
center
bottom
;
-webkit-animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
);
animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
)}}
.zoomOutDown
{
-webkit-animation-name
:
zoomOutDown
;
animation-name
:
zoomOutDown
}
@-webkit-keyframes
zoomOutLeft
{
40
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
42px
,
0
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
42px
,
0
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
scale
(
.1
)
translate3d
(
-2000px
,
0
,
0
);
transform
:
scale
(
.1
)
translate3d
(
-2000px
,
0
,
0
);
-webkit-transform-origin
:
left
center
;
transform-origin
:
left
center
}}
@keyframes
zoomOutLeft
{
40
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
42px
,
0
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
42px
,
0
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
scale
(
.1
)
translate3d
(
-2000px
,
0
,
0
);
transform
:
scale
(
.1
)
translate3d
(
-2000px
,
0
,
0
);
-webkit-transform-origin
:
left
center
;
transform-origin
:
left
center
}}
.zoomOutLeft
{
-webkit-animation-name
:
zoomOutLeft
;
animation-name
:
zoomOutLeft
}
@-webkit-keyframes
zoomOutRight
{
40
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
-42px
,
0
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
-42px
,
0
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
scale
(
.1
)
translate3d
(
2000px
,
0
,
0
);
transform
:
scale
(
.1
)
translate3d
(
2000px
,
0
,
0
);
-webkit-transform-origin
:
right
center
;
transform-origin
:
right
center
}}
@keyframes
zoomOutRight
{
40
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
-42px
,
0
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
-42px
,
0
,
0
)}
to
{
opacity
:
0
;
-webkit-transform
:
scale
(
.1
)
translate3d
(
2000px
,
0
,
0
);
transform
:
scale
(
.1
)
translate3d
(
2000px
,
0
,
0
);
-webkit-transform-origin
:
right
center
;
transform-origin
:
right
center
}}
.zoomOutRight
{
-webkit-animation-name
:
zoomOutRight
;
animation-name
:
zoomOutRight
}
@-webkit-keyframes
zoomOutUp
{
40
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
60px
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
60px
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
);
animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
)}
to
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
-2000px
,
0
);
transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
-2000px
,
0
);
-webkit-transform-origin
:
center
bottom
;
transform-origin
:
center
bottom
;
-webkit-animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
);
animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
)}}
@keyframes
zoomOutUp
{
40
%
{
opacity
:
1
;
-webkit-transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
60px
,
0
);
transform
:
scale3d
(
.475
,
.475
,
.475
)
translate3d
(
0
,
60px
,
0
);
-webkit-animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
);
animation-timing-function
:
cubic-bezier
(
0.55
,
.055
,
.675
,
.19
)}
to
{
opacity
:
0
;
-webkit-transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
-2000px
,
0
);
transform
:
scale3d
(
.1
,
.1
,
.1
)
translate3d
(
0
,
-2000px
,
0
);
-webkit-transform-origin
:
center
bottom
;
transform-origin
:
center
bottom
;
-webkit-animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
);
animation-timing-function
:
cubic-bezier
(
0.175
,
.885
,
.32
,
1
)}}
.zoomOutUp
{
-webkit-animation-name
:
zoomOutUp
;
animation-name
:
zoomOutUp
}
@-webkit-keyframes
slideInDown
{
from
{
-webkit-transform
:
translate3d
(
0
,
-100%
,
0
);
transform
:
translate3d
(
0
,
-100%
,
0
);
visibility
:
visible
}
to
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}}
@keyframes
slideInDown
{
from
{
-webkit-transform
:
translate3d
(
0
,
-100%
,
0
);
transform
:
translate3d
(
0
,
-100%
,
0
);
visibility
:
visible
}
to
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}}
.slideInDown
{
-webkit-animation-name
:
slideInDown
;
animation-name
:
slideInDown
}
@-webkit-keyframes
slideInLeft
{
from
{
-webkit-transform
:
translate3d
(
-100%
,
0
,
0
);
transform
:
translate3d
(
-100%
,
0
,
0
);
visibility
:
visible
}
to
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}}
@keyframes
slideInLeft
{
from
{
-webkit-transform
:
translate3d
(
-100%
,
0
,
0
);
transform
:
translate3d
(
-100%
,
0
,
0
);
visibility
:
visible
}
to
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}}
.slideInLeft
{
-webkit-animation-name
:
slideInLeft
;
animation-name
:
slideInLeft
}
@-webkit-keyframes
slideInRight
{
from
{
-webkit-transform
:
translate3d
(
100%
,
0
,
0
);
transform
:
translate3d
(
100%
,
0
,
0
);
visibility
:
visible
}
to
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}}
@keyframes
slideInRight
{
from
{
-webkit-transform
:
translate3d
(
100%
,
0
,
0
);
transform
:
translate3d
(
100%
,
0
,
0
);
visibility
:
visible
}
to
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}}
.slideInRight
{
-webkit-animation-name
:
slideInRight
;
animation-name
:
slideInRight
}
@-webkit-keyframes
slideInUp
{
from
{
-webkit-transform
:
translate3d
(
0
,
100%
,
0
);
transform
:
translate3d
(
0
,
100%
,
0
);
visibility
:
visible
}
to
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}}
@keyframes
slideInUp
{
from
{
-webkit-transform
:
translate3d
(
0
,
100%
,
0
);
transform
:
translate3d
(
0
,
100%
,
0
);
visibility
:
visible
}
to
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}}
.slideInUp
{
-webkit-animation-name
:
slideInUp
;
animation-name
:
slideInUp
}
@-webkit-keyframes
slideOutDown
{
from
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}
to
{
visibility
:
hidden
;
-webkit-transform
:
translate3d
(
0
,
100%
,
0
);
transform
:
translate3d
(
0
,
100%
,
0
)}}
@keyframes
slideOutDown
{
from
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}
to
{
visibility
:
hidden
;
-webkit-transform
:
translate3d
(
0
,
100%
,
0
);
transform
:
translate3d
(
0
,
100%
,
0
)}}
.slideOutDown
{
-webkit-animation-name
:
slideOutDown
;
animation-name
:
slideOutDown
}
@-webkit-keyframes
slideOutLeft
{
from
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}
to
{
visibility
:
hidden
;
-webkit-transform
:
translate3d
(
-100%
,
0
,
0
);
transform
:
translate3d
(
-100%
,
0
,
0
)}}
@keyframes
slideOutLeft
{
from
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}
to
{
visibility
:
hidden
;
-webkit-transform
:
translate3d
(
-100%
,
0
,
0
);
transform
:
translate3d
(
-100%
,
0
,
0
)}}
.slideOutLeft
{
-webkit-animation-name
:
slideOutLeft
;
animation-name
:
slideOutLeft
}
@-webkit-keyframes
slideOutRight
{
from
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}
to
{
visibility
:
hidden
;
-webkit-transform
:
translate3d
(
100%
,
0
,
0
);
transform
:
translate3d
(
100%
,
0
,
0
)}}
@keyframes
slideOutRight
{
from
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}
to
{
visibility
:
hidden
;
-webkit-transform
:
translate3d
(
100%
,
0
,
0
);
transform
:
translate3d
(
100%
,
0
,
0
)}}
.slideOutRight
{
-webkit-animation-name
:
slideOutRight
;
animation-name
:
slideOutRight
}
@-webkit-keyframes
slideOutUp
{
from
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}
to
{
visibility
:
hidden
;
-webkit-transform
:
translate3d
(
0
,
-100%
,
0
);
transform
:
translate3d
(
0
,
-100%
,
0
)}}
@keyframes
slideOutUp
{
from
{
-webkit-transform
:
translate3d
(
0
,
0
,
0
);
transform
:
translate3d
(
0
,
0
,
0
)}
to
{
visibility
:
hidden
;
-webkit-transform
:
translate3d
(
0
,
-100%
,
0
);
transform
:
translate3d
(
0
,
-100%
,
0
)}}
.slideOutUp
{
-webkit-animation-name
:
slideOutUp
;
animation-name
:
slideOutUp
}
\ No newline at end of file
src/main/resources/static/css/bootstrap.min.css
deleted
100644 → 0
View file @
19a2655c
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/main/resources/static/css/font-awesome.min.css
deleted
100644 → 0
View file @
19a2655c
/*!
* Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/
@font-face
{
font-family
:
'FontAwesome'
;
src
:
url('../../fonts/fontawesome-webfont.eot?v=4.4.0')
;
src
:
url('../../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0')
format
(
'embedded-opentype'
),
url('../../fonts/fontawesome-webfont.woff2?v=4.4.0')
format
(
'woff2'
),
url('../../fonts/fontawesome-webfont.woff?v=4.4.0')
format
(
'woff'
),
url('../../fonts/fontawesome-webfont.ttf?v=4.4.0')
format
(
'truetype'
),
url('../../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular')
format
(
'svg'
);
font-weight
:
normal
;
font-style
:
normal
}
.fa
{
display
:
inline-block
;
font
:
normal
normal
normal
14px
/
1
FontAwesome
;
font-size
:
inherit
;
text-rendering
:
auto
;
-webkit-font-smoothing
:
antialiased
;
-moz-osx-font-smoothing
:
grayscale
}
.fa-lg
{
font-size
:
1.33333333em
;
line-height
:
.75em
;
vertical-align
:
-15%
}
.fa-2x
{
font-size
:
2em
}
.fa-3x
{
font-size
:
3em
}
.fa-4x
{
font-size
:
4em
}
.fa-5x
{
font-size
:
5em
}
.fa-fw
{
width
:
1.28571429em
;
text-align
:
center
}
.fa-ul
{
padding-left
:
0
;
margin-left
:
2.14285714em
;
list-style-type
:
none
}
.fa-ul
>
li
{
position
:
relative
}
.fa-li
{
position
:
absolute
;
left
:
-2.14285714em
;
width
:
2.14285714em
;
top
:
.14285714em
;
text-align
:
center
}
.fa-li.fa-lg
{
left
:
-1.85714286em
}
.fa-border
{
padding
:
.2em
.25em
.15em
;
border
:
solid
.08em
#eee
;
border-radius
:
.1em
}
.fa-pull-left
{
float
:
left
}
.fa-pull-right
{
float
:
right
}
.fa.fa-pull-left
{
margin-right
:
.3em
}
.fa.fa-pull-right
{
margin-left
:
.3em
}
.pull-right
{
float
:
right
}
.pull-left
{
float
:
left
}
.fa.pull-left
{
margin-right
:
.3em
}
.fa.pull-right
{
margin-left
:
.3em
}
.fa-spin
{
-webkit-animation
:
fa-spin
2s
infinite
linear
;
animation
:
fa-spin
2s
infinite
linear
}
.fa-pulse
{
-webkit-animation
:
fa-spin
1s
infinite
steps
(
8
);
animation
:
fa-spin
1s
infinite
steps
(
8
)}
@-webkit-keyframes
fa-spin
{
0
%
{
-webkit-transform
:
rotate
(
0deg
);
transform
:
rotate
(
0deg
)}
100
%
{
-webkit-transform
:
rotate
(
359deg
);
transform
:
rotate
(
359deg
)}}
@keyframes
fa-spin
{
0
%
{
-webkit-transform
:
rotate
(
0deg
);
transform
:
rotate
(
0deg
)}
100
%
{
-webkit-transform
:
rotate
(
359deg
);
transform
:
rotate
(
359deg
)}}
.fa-rotate-90
{
filter
:
progid
:
DXImageTransform
.
Microsoft
.
BasicImage
(
rotation
=
1
);
-webkit-transform
:
rotate
(
90deg
);
-ms-transform
:
rotate
(
90deg
);
transform
:
rotate
(
90deg
)}
.fa-rotate-180
{
filter
:
progid
:
DXImageTransform
.
Microsoft
.
BasicImage
(
rotation
=
2
);
-webkit-transform
:
rotate
(
180deg
);
-ms-transform
:
rotate
(
180deg
);
transform
:
rotate
(
180deg
)}
.fa-rotate-270
{
filter
:
progid
:
DXImageTransform
.
Microsoft
.
BasicImage
(
rotation
=
3
);
-webkit-transform
:
rotate
(
270deg
);
-ms-transform
:
rotate
(
270deg
);
transform
:
rotate
(
270deg
)}
.fa-flip-horizontal
{
filter
:
progid
:
DXImageTransform
.
Microsoft
.
BasicImage
(
rotation
=
0
,
mirror
=
1
);
-webkit-transform
:
scale
(
-1
,
1
);
-ms-transform
:
scale
(
-1
,
1
);
transform
:
scale
(
-1
,
1
)}
.fa-flip-vertical
{
filter
:
progid
:
DXImageTransform
.
Microsoft
.
BasicImage
(
rotation
=
2
,
mirror
=
1
);
-webkit-transform
:
scale
(
1
,
-1
);
-ms-transform
:
scale
(
1
,
-1
);
transform
:
scale
(
1
,
-1
)}
:root
.fa-rotate-90
,
:root
.fa-rotate-180
,
:root
.fa-rotate-270
,
:root
.fa-flip-horizontal
,
:root
.fa-flip-vertical
{
filter
:
none
}
.fa-stack
{
position
:
relative
;
display
:
inline-block
;
width
:
2em
;
height
:
2em
;
line-height
:
2em
;
vertical-align
:
middle
}
.fa-stack-1x
,
.fa-stack-2x
{
position
:
absolute
;
left
:
0
;
width
:
100%
;
text-align
:
center
}
.fa-stack-1x
{
line-height
:
inherit
}
.fa-stack-2x
{
font-size
:
2em
}
.fa-inverse
{
color
:
#fff
}
.fa-glass
:before
{
content
:
"\f000"
}
.fa-music
:before
{
content
:
"\f001"
}
.fa-search
:before
{
content
:
"\f002"
}
.fa-envelope-o
:before
{
content
:
"\f003"
}
.fa-heart
:before
{
content
:
"\f004"
}
.fa-star
:before
{
content
:
"\f005"
}
.fa-star-o
:before
{
content
:
"\f006"
}
.fa-user
:before
{
content
:
"\f007"
}
.fa-film
:before
{
content
:
"\f008"
}
.fa-th-large
:before
{
content
:
"\f009"
}
.fa-th
:before
{
content
:
"\f00a"
}
.fa-th-list
:before
{
content
:
"\f00b"
}
.fa-check
:before
{
content
:
"\f00c"
}
.fa-remove
:before
,
.fa-close
:before
,
.fa-times
:before
{
content
:
"\f00d"
}
.fa-search-plus
:before
{
content
:
"\f00e"
}
.fa-search-minus
:before
{
content
:
"\f010"
}
.fa-power-off
:before
{
content
:
"\f011"
}
.fa-signal
:before
{
content
:
"\f012"
}
.fa-gear
:before
,
.fa-cog
:before
{
content
:
"\f013"
}
.fa-trash-o
:before
{
content
:
"\f014"
}
.fa-home
:before
{
content
:
"\f015"
}
.fa-file-o
:before
{
content
:
"\f016"
}
.fa-clock-o
:before
{
content
:
"\f017"
}
.fa-road
:before
{
content
:
"\f018"
}
.fa-download
:before
{
content
:
"\f019"
}
.fa-arrow-circle-o-down
:before
{
content
:
"\f01a"
}
.fa-arrow-circle-o-up
:before
{
content
:
"\f01b"
}
.fa-inbox
:before
{
content
:
"\f01c"
}
.fa-play-circle-o
:before
{
content
:
"\f01d"
}
.fa-rotate-right
:before
,
.fa-repeat
:before
{
content
:
"\f01e"
}
.fa-refresh
:before
{
content
:
"\f021"
}
.fa-list-alt
:before
{
content
:
"\f022"
}
.fa-lock
:before
{
content
:
"\f023"
}
.fa-flag
:before
{
content
:
"\f024"
}
.fa-headphones
:before
{
content
:
"\f025"
}
.fa-volume-off
:before
{
content
:
"\f026"
}
.fa-volume-down
:before
{
content
:
"\f027"
}
.fa-volume-up
:before
{
content
:
"\f028"
}
.fa-qrcode
:before
{
content
:
"\f029"
}
.fa-barcode
:before
{
content
:
"\f02a"
}
.fa-tag
:before
{
content
:
"\f02b"
}
.fa-tags
:before
{
content
:
"\f02c"
}
.fa-book
:before
{
content
:
"\f02d"
}
.fa-bookmark
:before
{
content
:
"\f02e"
}
.fa-print
:before
{
content
:
"\f02f"
}
.fa-camera
:before
{
content
:
"\f030"
}
.fa-font
:before
{
content
:
"\f031"
}
.fa-bold
:before
{
content
:
"\f032"
}
.fa-italic
:before
{
content
:
"\f033"
}
.fa-text-height
:before
{
content
:
"\f034"
}
.fa-text-width
:before
{
content
:
"\f035"
}
.fa-align-left
:before
{
content
:
"\f036"
}
.fa-align-center
:before
{
content
:
"\f037"
}
.fa-align-right
:before
{
content
:
"\f038"
}
.fa-align-justify
:before
{
content
:
"\f039"
}
.fa-list
:before
{
content
:
"\f03a"
}
.fa-dedent
:before
,
.fa-outdent
:before
{
content
:
"\f03b"
}
.fa-indent
:before
{
content
:
"\f03c"
}
.fa-video-camera
:before
{
content
:
"\f03d"
}
.fa-photo
:before
,
.fa-image
:before
,
.fa-picture-o
:before
{
content
:
"\f03e"
}
.fa-pencil
:before
{
content
:
"\f040"
}
.fa-map-marker
:before
{
content
:
"\f041"
}
.fa-adjust
:before
{
content
:
"\f042"
}
.fa-tint
:before
{
content
:
"\f043"
}
.fa-edit
:before
,
.fa-pencil-square-o
:before
{
content
:
"\f044"
}
.fa-share-square-o
:before
{
content
:
"\f045"
}
.fa-check-square-o
:before
{
content
:
"\f046"
}
.fa-arrows
:before
{
content
:
"\f047"
}
.fa-step-backward
:before
{
content
:
"\f048"
}
.fa-fast-backward
:before
{
content
:
"\f049"
}
.fa-backward
:before
{
content
:
"\f04a"
}
.fa-play
:before
{
content
:
"\f04b"
}
.fa-pause
:before
{
content
:
"\f04c"
}
.fa-stop
:before
{
content
:
"\f04d"
}
.fa-forward
:before
{
content
:
"\f04e"
}
.fa-fast-forward
:before
{
content
:
"\f050"
}
.fa-step-forward
:before
{
content
:
"\f051"
}
.fa-eject
:before
{
content
:
"\f052"
}
.fa-chevron-left
:before
{
content
:
"\f053"
}
.fa-chevron-right
:before
{
content
:
"\f054"
}
.fa-plus-circle
:before
{
content
:
"\f055"
}
.fa-minus-circle
:before
{
content
:
"\f056"
}
.fa-times-circle
:before
{
content
:
"\f057"
}
.fa-check-circle
:before
{
content
:
"\f058"
}
.fa-question-circle
:before
{
content
:
"\f059"
}
.fa-info-circle
:before
{
content
:
"\f05a"
}
.fa-crosshairs
:before
{
content
:
"\f05b"
}
.fa-times-circle-o
:before
{
content
:
"\f05c"
}
.fa-check-circle-o
:before
{
content
:
"\f05d"
}
.fa-ban
:before
{
content
:
"\f05e"
}
.fa-arrow-left
:before
{
content
:
"\f060"
}
.fa-arrow-right
:before
{
content
:
"\f061"
}
.fa-arrow-up
:before
{
content
:
"\f062"
}
.fa-arrow-down
:before
{
content
:
"\f063"
}
.fa-mail-forward
:before
,
.fa-share
:before
{
content
:
"\f064"
}
.fa-expand
:before
{
content
:
"\f065"
}
.fa-compress
:before
{
content
:
"\f066"
}
.fa-plus
:before
{
content
:
"\f067"
}
.fa-minus
:before
{
content
:
"\f068"
}
.fa-asterisk
:before
{
content
:
"\f069"
}
.fa-exclamation-circle
:before
{
content
:
"\f06a"
}
.fa-gift
:before
{
content
:
"\f06b"
}
.fa-leaf
:before
{
content
:
"\f06c"
}
.fa-fire
:before
{
content
:
"\f06d"
}
.fa-eye
:before
{
content
:
"\f06e"
}
.fa-eye-slash
:before
{
content
:
"\f070"
}
.fa-warning
:before
,
.fa-exclamation-triangle
:before
{
content
:
"\f071"
}
.fa-plane
:before
{
content
:
"\f072"
}
.fa-calendar
:before
{
content
:
"\f073"
}
.fa-random
:before
{
content
:
"\f074"
}
.fa-comment
:before
{
content
:
"\f075"
}
.fa-magnet
:before
{
content
:
"\f076"
}
.fa-chevron-up
:before
{
content
:
"\f077"
}
.fa-chevron-down
:before
{
content
:
"\f078"
}
.fa-retweet
:before
{
content
:
"\f079"
}
.fa-shopping-cart
:before
{
content
:
"\f07a"
}
.fa-folder
:before
{
content
:
"\f07b"
}
.fa-folder-open
:before
{
content
:
"\f07c"
}
.fa-arrows-v
:before
{
content
:
"\f07d"
}
.fa-arrows-h
:before
{
content
:
"\f07e"
}
.fa-bar-chart-o
:before
,
.fa-bar-chart
:before
{
content
:
"\f080"
}
.fa-twitter-square
:before
{
content
:
"\f081"
}
.fa-facebook-square
:before
{
content
:
"\f082"
}
.fa-camera-retro
:before
{
content
:
"\f083"
}
.fa-key
:before
{
content
:
"\f084"
}
.fa-gears
:before
,
.fa-cogs
:before
{
content
:
"\f085"
}
.fa-comments
:before
{
content
:
"\f086"
}
.fa-thumbs-o-up
:before
{
content
:
"\f087"
}
.fa-thumbs-o-down
:before
{
content
:
"\f088"
}
.fa-star-half
:before
{
content
:
"\f089"
}
.fa-heart-o
:before
{
content
:
"\f08a"
}
.fa-sign-out
:before
{
content
:
"\f08b"
}
.fa-linkedin-square
:before
{
content
:
"\f08c"
}
.fa-thumb-tack
:before
{
content
:
"\f08d"
}
.fa-external-link
:before
{
content
:
"\f08e"
}
.fa-sign-in
:before
{
content
:
"\f090"
}
.fa-trophy
:before
{
content
:
"\f091"
}
.fa-github-square
:before
{
content
:
"\f092"
}
.fa-upload
:before
{
content
:
"\f093"
}
.fa-lemon-o
:before
{
content
:
"\f094"
}
.fa-phone
:before
{
content
:
"\f095"
}
.fa-square-o
:before
{
content
:
"\f096"
}
.fa-bookmark-o
:before
{
content
:
"\f097"
}
.fa-phone-square
:before
{
content
:
"\f098"
}
.fa-twitter
:before
{
content
:
"\f099"
}
.fa-facebook-f
:before
,
.fa-facebook
:before
{
content
:
"\f09a"
}
.fa-github
:before
{
content
:
"\f09b"
}
.fa-unlock
:before
{
content
:
"\f09c"
}
.fa-credit-card
:before
{
content
:
"\f09d"
}
.fa-feed
:before
,
.fa-rss
:before
{
content
:
"\f09e"
}
.fa-hdd-o
:before
{
content
:
"\f0a0"
}
.fa-bullhorn
:before
{
content
:
"\f0a1"
}
.fa-bell
:before
{
content
:
"\f0f3"
}
.fa-certificate
:before
{
content
:
"\f0a3"
}
.fa-hand-o-right
:before
{
content
:
"\f0a4"
}
.fa-hand-o-left
:before
{
content
:
"\f0a5"
}
.fa-hand-o-up
:before
{
content
:
"\f0a6"
}
.fa-hand-o-down
:before
{
content
:
"\f0a7"
}
.fa-arrow-circle-left
:before
{
content
:
"\f0a8"
}
.fa-arrow-circle-right
:before
{
content
:
"\f0a9"
}
.fa-arrow-circle-up
:before
{
content
:
"\f0aa"
}
.fa-arrow-circle-down
:before
{
content
:
"\f0ab"
}
.fa-globe
:before
{
content
:
"\f0ac"
}
.fa-wrench
:before
{
content
:
"\f0ad"
}
.fa-tasks
:before
{
content
:
"\f0ae"
}
.fa-filter
:before
{
content
:
"\f0b0"
}
.fa-briefcase
:before
{
content
:
"\f0b1"
}
.fa-arrows-alt
:before
{
content
:
"\f0b2"
}
.fa-group
:before
,
.fa-users
:before
{
content
:
"\f0c0"
}
.fa-chain
:before
,
.fa-link
:before
{
content
:
"\f0c1"
}
.fa-cloud
:before
{
content
:
"\f0c2"
}
.fa-flask
:before
{
content
:
"\f0c3"
}
.fa-cut
:before
,
.fa-scissors
:before
{
content
:
"\f0c4"
}
.fa-copy
:before
,
.fa-files-o
:before
{
content
:
"\f0c5"
}
.fa-paperclip
:before
{
content
:
"\f0c6"
}
.fa-save
:before
,
.fa-floppy-o
:before
{
content
:
"\f0c7"
}
.fa-square
:before
{
content
:
"\f0c8"
}
.fa-navicon
:before
,
.fa-reorder
:before
,
.fa-bars
:before
{
content
:
"\f0c9"
}
.fa-list-ul
:before
{
content
:
"\f0ca"
}
.fa-list-ol
:before
{
content
:
"\f0cb"
}
.fa-strikethrough
:before
{
content
:
"\f0cc"
}
.fa-underline
:before
{
content
:
"\f0cd"
}
.fa-table
:before
{
content
:
"\f0ce"
}
.fa-magic
:before
{
content
:
"\f0d0"
}
.fa-truck
:before
{
content
:
"\f0d1"
}
.fa-pinterest
:before
{
content
:
"\f0d2"
}
.fa-pinterest-square
:before
{
content
:
"\f0d3"
}
.fa-google-plus-square
:before
{
content
:
"\f0d4"
}
.fa-google-plus
:before
{
content
:
"\f0d5"
}
.fa-money
:before
{
content
:
"\f0d6"
}
.fa-caret-down
:before
{
content
:
"\f0d7"
}
.fa-caret-up
:before
{
content
:
"\f0d8"
}
.fa-caret-left
:before
{
content
:
"\f0d9"
}
.fa-caret-right
:before
{
content
:
"\f0da"
}
.fa-columns
:before
{
content
:
"\f0db"
}
.fa-unsorted
:before
,
.fa-sort
:before
{
content
:
"\f0dc"
}
.fa-sort-down
:before
,
.fa-sort-desc
:before
{
content
:
"\f0dd"
}
.fa-sort-up
:before
,
.fa-sort-asc
:before
{
content
:
"\f0de"
}
.fa-envelope
:before
{
content
:
"\f0e0"
}
.fa-linkedin
:before
{
content
:
"\f0e1"
}
.fa-rotate-left
:before
,
.fa-undo
:before
{
content
:
"\f0e2"
}
.fa-legal
:before
,
.fa-gavel
:before
{
content
:
"\f0e3"
}
.fa-dashboard
:before
,
.fa-tachometer
:before
{
content
:
"\f0e4"
}
.fa-comment-o
:before
{
content
:
"\f0e5"
}
.fa-comments-o
:before
{
content
:
"\f0e6"
}
.fa-flash
:before
,
.fa-bolt
:before
{
content
:
"\f0e7"
}
.fa-sitemap
:before
{
content
:
"\f0e8"
}
.fa-umbrella
:before
{
content
:
"\f0e9"
}
.fa-paste
:before
,
.fa-clipboard
:before
{
content
:
"\f0ea"
}
.fa-lightbulb-o
:before
{
content
:
"\f0eb"
}
.fa-exchange
:before
{
content
:
"\f0ec"
}
.fa-cloud-download
:before
{
content
:
"\f0ed"
}
.fa-cloud-upload
:before
{
content
:
"\f0ee"
}
.fa-user-md
:before
{
content
:
"\f0f0"
}
.fa-stethoscope
:before
{
content
:
"\f0f1"
}
.fa-suitcase
:before
{
content
:
"\f0f2"
}
.fa-bell-o
:before
{
content
:
"\f0a2"
}
.fa-coffee
:before
{
content
:
"\f0f4"
}
.fa-cutlery
:before
{
content
:
"\f0f5"
}
.fa-file-text-o
:before
{
content
:
"\f0f6"
}
.fa-building-o
:before
{
content
:
"\f0f7"
}
.fa-hospital-o
:before
{
content
:
"\f0f8"
}
.fa-ambulance
:before
{
content
:
"\f0f9"
}
.fa-medkit
:before
{
content
:
"\f0fa"
}
.fa-fighter-jet
:before
{
content
:
"\f0fb"
}
.fa-beer
:before
{
content
:
"\f0fc"
}
.fa-h-square
:before
{
content
:
"\f0fd"
}
.fa-plus-square
:before
{
content
:
"\f0fe"
}
.fa-angle-double-left
:before
{
content
:
"\f100"
}
.fa-angle-double-right
:before
{
content
:
"\f101"
}
.fa-angle-double-up
:before
{
content
:
"\f102"
}
.fa-angle-double-down
:before
{
content
:
"\f103"
}
.fa-angle-left
:before
{
content
:
"\f104"
}
.fa-angle-right
:before
{
content
:
"\f105"
}
.fa-angle-up
:before
{
content
:
"\f106"
}
.fa-angle-down
:before
{
content
:
"\f107"
}
.fa-desktop
:before
{
content
:
"\f108"
}
.fa-laptop
:before
{
content
:
"\f109"
}
.fa-tablet
:before
{
content
:
"\f10a"
}
.fa-mobile-phone
:before
,
.fa-mobile
:before
{
content
:
"\f10b"
}
.fa-circle-o
:before
{
content
:
"\f10c"
}
.fa-quote-left
:before
{
content
:
"\f10d"
}
.fa-quote-right
:before
{
content
:
"\f10e"
}
.fa-spinner
:before
{
content
:
"\f110"
}
.fa-circle
:before
{
content
:
"\f111"
}
.fa-mail-reply
:before
,
.fa-reply
:before
{
content
:
"\f112"
}
.fa-github-alt
:before
{
content
:
"\f113"
}
.fa-folder-o
:before
{
content
:
"\f114"
}
.fa-folder-open-o
:before
{
content
:
"\f115"
}
.fa-smile-o
:before
{
content
:
"\f118"
}
.fa-frown-o
:before
{
content
:
"\f119"
}
.fa-meh-o
:before
{
content
:
"\f11a"
}
.fa-gamepad
:before
{
content
:
"\f11b"
}
.fa-keyboard-o
:before
{
content
:
"\f11c"
}
.fa-flag-o
:before
{
content
:
"\f11d"
}
.fa-flag-checkered
:before
{
content
:
"\f11e"
}
.fa-terminal
:before
{
content
:
"\f120"
}
.fa-code
:before
{
content
:
"\f121"
}
.fa-mail-reply-all
:before
,
.fa-reply-all
:before
{
content
:
"\f122"
}
.fa-star-half-empty
:before
,
.fa-star-half-full
:before
,
.fa-star-half-o
:before
{
content
:
"\f123"
}
.fa-location-arrow
:before
{
content
:
"\f124"
}
.fa-crop
:before
{
content
:
"\f125"
}
.fa-code-fork
:before
{
content
:
"\f126"
}
.fa-unlink
:before
,
.fa-chain-broken
:before
{
content
:
"\f127"
}
.fa-question
:before
{
content
:
"\f128"
}
.fa-info
:before
{
content
:
"\f129"
}
.fa-exclamation
:before
{
content
:
"\f12a"
}
.fa-superscript
:before
{
content
:
"\f12b"
}
.fa-subscript
:before
{
content
:
"\f12c"
}
.fa-eraser
:before
{
content
:
"\f12d"
}
.fa-puzzle-piece
:before
{
content
:
"\f12e"
}
.fa-microphone
:before
{
content
:
"\f130"
}
.fa-microphone-slash
:before
{
content
:
"\f131"
}
.fa-shield
:before
{
content
:
"\f132"
}
.fa-calendar-o
:before
{
content
:
"\f133"
}
.fa-fire-extinguisher
:before
{
content
:
"\f134"
}
.fa-rocket
:before
{
content
:
"\f135"
}
.fa-maxcdn
:before
{
content
:
"\f136"
}
.fa-chevron-circle-left
:before
{
content
:
"\f137"
}
.fa-chevron-circle-right
:before
{
content
:
"\f138"
}
.fa-chevron-circle-up
:before
{
content
:
"\f139"
}
.fa-chevron-circle-down
:before
{
content
:
"\f13a"
}
.fa-html5
:before
{
content
:
"\f13b"
}
.fa-css3
:before
{
content
:
"\f13c"
}
.fa-anchor
:before
{
content
:
"\f13d"
}
.fa-unlock-alt
:before
{
content
:
"\f13e"
}
.fa-bullseye
:before
{
content
:
"\f140"
}
.fa-ellipsis-h
:before
{
content
:
"\f141"
}
.fa-ellipsis-v
:before
{
content
:
"\f142"
}
.fa-rss-square
:before
{
content
:
"\f143"
}
.fa-play-circle
:before
{
content
:
"\f144"
}
.fa-ticket
:before
{
content
:
"\f145"
}
.fa-minus-square
:before
{
content
:
"\f146"
}
.fa-minus-square-o
:before
{
content
:
"\f147"
}
.fa-level-up
:before
{
content
:
"\f148"
}
.fa-level-down
:before
{
content
:
"\f149"
}
.fa-check-square
:before
{
content
:
"\f14a"
}
.fa-pencil-square
:before
{
content
:
"\f14b"
}
.fa-external-link-square
:before
{
content
:
"\f14c"
}
.fa-share-square
:before
{
content
:
"\f14d"
}
.fa-compass
:before
{
content
:
"\f14e"
}
.fa-toggle-down
:before
,
.fa-caret-square-o-down
:before
{
content
:
"\f150"
}
.fa-toggle-up
:before
,
.fa-caret-square-o-up
:before
{
content
:
"\f151"
}
.fa-toggle-right
:before
,
.fa-caret-square-o-right
:before
{
content
:
"\f152"
}
.fa-euro
:before
,
.fa-eur
:before
{
content
:
"\f153"
}
.fa-gbp
:before
{
content
:
"\f154"
}
.fa-dollar
:before
,
.fa-usd
:before
{
content
:
"\f155"
}
.fa-rupee
:before
,
.fa-inr
:before
{
content
:
"\f156"
}
.fa-cny
:before
,
.fa-rmb
:before
,
.fa-yen
:before
,
.fa-jpy
:before
{
content
:
"\f157"
}
.fa-ruble
:before
,
.fa-rouble
:before
,
.fa-rub
:before
{
content
:
"\f158"
}
.fa-won
:before
,
.fa-krw
:before
{
content
:
"\f159"
}
.fa-bitcoin
:before
,
.fa-btc
:before
{
content
:
"\f15a"
}
.fa-file
:before
{
content
:
"\f15b"
}
.fa-file-text
:before
{
content
:
"\f15c"
}
.fa-sort-alpha-asc
:before
{
content
:
"\f15d"
}
.fa-sort-alpha-desc
:before
{
content
:
"\f15e"
}
.fa-sort-amount-asc
:before
{
content
:
"\f160"
}
.fa-sort-amount-desc
:before
{
content
:
"\f161"
}
.fa-sort-numeric-asc
:before
{
content
:
"\f162"
}
.fa-sort-numeric-desc
:before
{
content
:
"\f163"
}
.fa-thumbs-up
:before
{
content
:
"\f164"
}
.fa-thumbs-down
:before
{
content
:
"\f165"
}
.fa-youtube-square
:before
{
content
:
"\f166"
}
.fa-youtube
:before
{
content
:
"\f167"
}
.fa-xing
:before
{
content
:
"\f168"
}
.fa-xing-square
:before
{
content
:
"\f169"
}
.fa-youtube-play
:before
{
content
:
"\f16a"
}
.fa-dropbox
:before
{
content
:
"\f16b"
}
.fa-stack-overflow
:before
{
content
:
"\f16c"
}
.fa-instagram
:before
{
content
:
"\f16d"
}
.fa-flickr
:before
{
content
:
"\f16e"
}
.fa-adn
:before
{
content
:
"\f170"
}
.fa-bitbucket
:before
{
content
:
"\f171"
}
.fa-bitbucket-square
:before
{
content
:
"\f172"
}
.fa-tumblr
:before
{
content
:
"\f173"
}
.fa-tumblr-square
:before
{
content
:
"\f174"
}
.fa-long-arrow-down
:before
{
content
:
"\f175"
}
.fa-long-arrow-up
:before
{
content
:
"\f176"
}
.fa-long-arrow-left
:before
{
content
:
"\f177"
}
.fa-long-arrow-right
:before
{
content
:
"\f178"
}
.fa-apple
:before
{
content
:
"\f179"
}
.fa-windows
:before
{
content
:
"\f17a"
}
.fa-android
:before
{
content
:
"\f17b"
}
.fa-linux
:before
{
content
:
"\f17c"
}
.fa-dribbble
:before
{
content
:
"\f17d"
}
.fa-skype
:before
{
content
:
"\f17e"
}
.fa-foursquare
:before
{
content
:
"\f180"
}
.fa-trello
:before
{
content
:
"\f181"
}
.fa-female
:before
{
content
:
"\f182"
}
.fa-male
:before
{
content
:
"\f183"
}
.fa-gittip
:before
,
.fa-gratipay
:before
{
content
:
"\f184"
}
.fa-sun-o
:before
{
content
:
"\f185"
}
.fa-moon-o
:before
{
content
:
"\f186"
}
.fa-archive
:before
{
content
:
"\f187"
}
.fa-bug
:before
{
content
:
"\f188"
}
.fa-vk
:before
{
content
:
"\f189"
}
.fa-weibo
:before
{
content
:
"\f18a"
}
.fa-renren
:before
{
content
:
"\f18b"
}
.fa-pagelines
:before
{
content
:
"\f18c"
}
.fa-stack-exchange
:before
{
content
:
"\f18d"
}
.fa-arrow-circle-o-right
:before
{
content
:
"\f18e"
}
.fa-arrow-circle-o-left
:before
{
content
:
"\f190"
}
.fa-toggle-left
:before
,
.fa-caret-square-o-left
:before
{
content
:
"\f191"
}
.fa-dot-circle-o
:before
{
content
:
"\f192"
}
.fa-wheelchair
:before
{
content
:
"\f193"
}
.fa-vimeo-square
:before
{
content
:
"\f194"
}
.fa-turkish-lira
:before
,
.fa-try
:before
{
content
:
"\f195"
}
.fa-plus-square-o
:before
{
content
:
"\f196"
}
.fa-space-shuttle
:before
{
content
:
"\f197"
}
.fa-slack
:before
{
content
:
"\f198"
}
.fa-envelope-square
:before
{
content
:
"\f199"
}
.fa-wordpress
:before
{
content
:
"\f19a"
}
.fa-openid
:before
{
content
:
"\f19b"
}
.fa-institution
:before
,
.fa-bank
:before
,
.fa-university
:before
{
content
:
"\f19c"
}
.fa-mortar-board
:before
,
.fa-graduation-cap
:before
{
content
:
"\f19d"
}
.fa-yahoo
:before
{
content
:
"\f19e"
}
.fa-google
:before
{
content
:
"\f1a0"
}
.fa-reddit
:before
{
content
:
"\f1a1"
}
.fa-reddit-square
:before
{
content
:
"\f1a2"
}
.fa-stumbleupon-circle
:before
{
content
:
"\f1a3"
}
.fa-stumbleupon
:before
{
content
:
"\f1a4"
}
.fa-delicious
:before
{
content
:
"\f1a5"
}
.fa-digg
:before
{
content
:
"\f1a6"
}
.fa-pied-piper
:before
{
content
:
"\f1a7"
}
.fa-pied-piper-alt
:before
{
content
:
"\f1a8"
}
.fa-drupal
:before
{
content
:
"\f1a9"
}
.fa-joomla
:before
{
content
:
"\f1aa"
}
.fa-language
:before
{
content
:
"\f1ab"
}
.fa-fax
:before
{
content
:
"\f1ac"
}
.fa-building
:before
{
content
:
"\f1ad"
}
.fa-child
:before
{
content
:
"\f1ae"
}
.fa-paw
:before
{
content
:
"\f1b0"
}
.fa-spoon
:before
{
content
:
"\f1b1"
}
.fa-cube
:before
{
content
:
"\f1b2"
}
.fa-cubes
:before
{
content
:
"\f1b3"
}
.fa-behance
:before
{
content
:
"\f1b4"
}
.fa-behance-square
:before
{
content
:
"\f1b5"
}
.fa-steam
:before
{
content
:
"\f1b6"
}
.fa-steam-square
:before
{
content
:
"\f1b7"
}
.fa-recycle
:before
{
content
:
"\f1b8"
}
.fa-automobile
:before
,
.fa-car
:before
{
content
:
"\f1b9"
}
.fa-cab
:before
,
.fa-taxi
:before
{
content
:
"\f1ba"
}
.fa-tree
:before
{
content
:
"\f1bb"
}
.fa-spotify
:before
{
content
:
"\f1bc"
}
.fa-deviantart
:before
{
content
:
"\f1bd"
}
.fa-soundcloud
:before
{
content
:
"\f1be"
}
.fa-database
:before
{
content
:
"\f1c0"
}
.fa-file-pdf-o
:before
{
content
:
"\f1c1"
}
.fa-file-word-o
:before
{
content
:
"\f1c2"
}
.fa-file-excel-o
:before
{
content
:
"\f1c3"
}
.fa-file-powerpoint-o
:before
{
content
:
"\f1c4"
}
.fa-file-photo-o
:before
,
.fa-file-picture-o
:before
,
.fa-file-image-o
:before
{
content
:
"\f1c5"
}
.fa-file-zip-o
:before
,
.fa-file-archive-o
:before
{
content
:
"\f1c6"
}
.fa-file-sound-o
:before
,
.fa-file-audio-o
:before
{
content
:
"\f1c7"
}
.fa-file-movie-o
:before
,
.fa-file-video-o
:before
{
content
:
"\f1c8"
}
.fa-file-code-o
:before
{
content
:
"\f1c9"
}
.fa-vine
:before
{
content
:
"\f1ca"
}
.fa-codepen
:before
{
content
:
"\f1cb"
}
.fa-jsfiddle
:before
{
content
:
"\f1cc"
}
.fa-life-bouy
:before
,
.fa-life-buoy
:before
,
.fa-life-saver
:before
,
.fa-support
:before
,
.fa-life-ring
:before
{
content
:
"\f1cd"
}
.fa-circle-o-notch
:before
{
content
:
"\f1ce"
}
.fa-ra
:before
,
.fa-rebel
:before
{
content
:
"\f1d0"
}
.fa-ge
:before
,
.fa-empire
:before
{
content
:
"\f1d1"
}
.fa-git-square
:before
{
content
:
"\f1d2"
}
.fa-git
:before
{
content
:
"\f1d3"
}
.fa-y-combinator-square
:before
,
.fa-yc-square
:before
,
.fa-hacker-news
:before
{
content
:
"\f1d4"
}
.fa-tencent-weibo
:before
{
content
:
"\f1d5"
}
.fa-qq
:before
{
content
:
"\f1d6"
}
.fa-wechat
:before
,
.fa-weixin
:before
{
content
:
"\f1d7"
}
.fa-send
:before
,
.fa-paper-plane
:before
{
content
:
"\f1d8"
}
.fa-send-o
:before
,
.fa-paper-plane-o
:before
{
content
:
"\f1d9"
}
.fa-history
:before
{
content
:
"\f1da"
}
.fa-circle-thin
:before
{
content
:
"\f1db"
}
.fa-header
:before
{
content
:
"\f1dc"
}
.fa-paragraph
:before
{
content
:
"\f1dd"
}
.fa-sliders
:before
{
content
:
"\f1de"
}
.fa-share-alt
:before
{
content
:
"\f1e0"
}
.fa-share-alt-square
:before
{
content
:
"\f1e1"
}
.fa-bomb
:before
{
content
:
"\f1e2"
}
.fa-soccer-ball-o
:before
,
.fa-futbol-o
:before
{
content
:
"\f1e3"
}
.fa-tty
:before
{
content
:
"\f1e4"
}
.fa-binoculars
:before
{
content
:
"\f1e5"
}
.fa-plug
:before
{
content
:
"\f1e6"
}
.fa-slideshare
:before
{
content
:
"\f1e7"
}
.fa-twitch
:before
{
content
:
"\f1e8"
}
.fa-yelp
:before
{
content
:
"\f1e9"
}
.fa-newspaper-o
:before
{
content
:
"\f1ea"
}
.fa-wifi
:before
{
content
:
"\f1eb"
}
.fa-calculator
:before
{
content
:
"\f1ec"
}
.fa-paypal
:before
{
content
:
"\f1ed"
}
.fa-google-wallet
:before
{
content
:
"\f1ee"
}
.fa-cc-visa
:before
{
content
:
"\f1f0"
}
.fa-cc-mastercard
:before
{
content
:
"\f1f1"
}
.fa-cc-discover
:before
{
content
:
"\f1f2"
}
.fa-cc-amex
:before
{
content
:
"\f1f3"
}
.fa-cc-paypal
:before
{
content
:
"\f1f4"
}
.fa-cc-stripe
:before
{
content
:
"\f1f5"
}
.fa-bell-slash
:before
{
content
:
"\f1f6"
}
.fa-bell-slash-o
:before
{
content
:
"\f1f7"
}
.fa-trash
:before
{
content
:
"\f1f8"
}
.fa-copyright
:before
{
content
:
"\f1f9"
}
.fa-at
:before
{
content
:
"\f1fa"
}
.fa-eyedropper
:before
{
content
:
"\f1fb"
}
.fa-paint-brush
:before
{
content
:
"\f1fc"
}
.fa-birthday-cake
:before
{
content
:
"\f1fd"
}
.fa-area-chart
:before
{
content
:
"\f1fe"
}
.fa-pie-chart
:before
{
content
:
"\f200"
}
.fa-line-chart
:before
{
content
:
"\f201"
}
.fa-lastfm
:before
{
content
:
"\f202"
}
.fa-lastfm-square
:before
{
content
:
"\f203"
}
.fa-toggle-off
:before
{
content
:
"\f204"
}
.fa-toggle-on
:before
{
content
:
"\f205"
}
.fa-bicycle
:before
{
content
:
"\f206"
}
.fa-bus
:before
{
content
:
"\f207"
}
.fa-ioxhost
:before
{
content
:
"\f208"
}
.fa-angellist
:before
{
content
:
"\f209"
}
.fa-cc
:before
{
content
:
"\f20a"
}
.fa-shekel
:before
,
.fa-sheqel
:before
,
.fa-ils
:before
{
content
:
"\f20b"
}
.fa-meanpath
:before
{
content
:
"\f20c"
}
.fa-buysellads
:before
{
content
:
"\f20d"
}
.fa-connectdevelop
:before
{
content
:
"\f20e"
}
.fa-dashcube
:before
{
content
:
"\f210"
}
.fa-forumbee
:before
{
content
:
"\f211"
}
.fa-leanpub
:before
{
content
:
"\f212"
}
.fa-sellsy
:before
{
content
:
"\f213"
}
.fa-shirtsinbulk
:before
{
content
:
"\f214"
}
.fa-simplybuilt
:before
{
content
:
"\f215"
}
.fa-skyatlas
:before
{
content
:
"\f216"
}
.fa-cart-plus
:before
{
content
:
"\f217"
}
.fa-cart-arrow-down
:before
{
content
:
"\f218"
}
.fa-diamond
:before
{
content
:
"\f219"
}
.fa-ship
:before
{
content
:
"\f21a"
}
.fa-user-secret
:before
{
content
:
"\f21b"
}
.fa-motorcycle
:before
{
content
:
"\f21c"
}
.fa-street-view
:before
{
content
:
"\f21d"
}
.fa-heartbeat
:before
{
content
:
"\f21e"
}
.fa-venus
:before
{
content
:
"\f221"
}
.fa-mars
:before
{
content
:
"\f222"
}
.fa-mercury
:before
{
content
:
"\f223"
}
.fa-intersex
:before
,
.fa-transgender
:before
{
content
:
"\f224"
}
.fa-transgender-alt
:before
{
content
:
"\f225"
}
.fa-venus-double
:before
{
content
:
"\f226"
}
.fa-mars-double
:before
{
content
:
"\f227"
}
.fa-venus-mars
:before
{
content
:
"\f228"
}
.fa-mars-stroke
:before
{
content
:
"\f229"
}
.fa-mars-stroke-v
:before
{
content
:
"\f22a"
}
.fa-mars-stroke-h
:before
{
content
:
"\f22b"
}
.fa-neuter
:before
{
content
:
"\f22c"
}
.fa-genderless
:before
{
content
:
"\f22d"
}
.fa-facebook-official
:before
{
content
:
"\f230"
}
.fa-pinterest-p
:before
{
content
:
"\f231"
}
.fa-whatsapp
:before
{
content
:
"\f232"
}
.fa-server
:before
{
content
:
"\f233"
}
.fa-user-plus
:before
{
content
:
"\f234"
}
.fa-user-times
:before
{
content
:
"\f235"
}
.fa-hotel
:before
,
.fa-bed
:before
{
content
:
"\f236"
}
.fa-viacoin
:before
{
content
:
"\f237"
}
.fa-train
:before
{
content
:
"\f238"
}
.fa-subway
:before
{
content
:
"\f239"
}
.fa-medium
:before
{
content
:
"\f23a"
}
.fa-yc
:before
,
.fa-y-combinator
:before
{
content
:
"\f23b"
}
.fa-optin-monster
:before
{
content
:
"\f23c"
}
.fa-opencart
:before
{
content
:
"\f23d"
}
.fa-expeditedssl
:before
{
content
:
"\f23e"
}
.fa-battery-4
:before
,
.fa-battery-full
:before
{
content
:
"\f240"
}
.fa-battery-3
:before
,
.fa-battery-three-quarters
:before
{
content
:
"\f241"
}
.fa-battery-2
:before
,
.fa-battery-half
:before
{
content
:
"\f242"
}
.fa-battery-1
:before
,
.fa-battery-quarter
:before
{
content
:
"\f243"
}
.fa-battery-0
:before
,
.fa-battery-empty
:before
{
content
:
"\f244"
}
.fa-mouse-pointer
:before
{
content
:
"\f245"
}
.fa-i-cursor
:before
{
content
:
"\f246"
}
.fa-object-group
:before
{
content
:
"\f247"
}
.fa-object-ungroup
:before
{
content
:
"\f248"
}
.fa-sticky-note
:before
{
content
:
"\f249"
}
.fa-sticky-note-o
:before
{
content
:
"\f24a"
}
.fa-cc-jcb
:before
{
content
:
"\f24b"
}
.fa-cc-diners-club
:before
{
content
:
"\f24c"
}
.fa-clone
:before
{
content
:
"\f24d"
}
.fa-balance-scale
:before
{
content
:
"\f24e"
}
.fa-hourglass-o
:before
{
content
:
"\f250"
}
.fa-hourglass-1
:before
,
.fa-hourglass-start
:before
{
content
:
"\f251"
}
.fa-hourglass-2
:before
,
.fa-hourglass-half
:before
{
content
:
"\f252"
}
.fa-hourglass-3
:before
,
.fa-hourglass-end
:before
{
content
:
"\f253"
}
.fa-hourglass
:before
{
content
:
"\f254"
}
.fa-hand-grab-o
:before
,
.fa-hand-rock-o
:before
{
content
:
"\f255"
}
.fa-hand-stop-o
:before
,
.fa-hand-paper-o
:before
{
content
:
"\f256"
}
.fa-hand-scissors-o
:before
{
content
:
"\f257"
}
.fa-hand-lizard-o
:before
{
content
:
"\f258"
}
.fa-hand-spock-o
:before
{
content
:
"\f259"
}
.fa-hand-pointer-o
:before
{
content
:
"\f25a"
}
.fa-hand-peace-o
:before
{
content
:
"\f25b"
}
.fa-trademark
:before
{
content
:
"\f25c"
}
.fa-registered
:before
{
content
:
"\f25d"
}
.fa-creative-commons
:before
{
content
:
"\f25e"
}
.fa-gg
:before
{
content
:
"\f260"
}
.fa-gg-circle
:before
{
content
:
"\f261"
}
.fa-tripadvisor
:before
{
content
:
"\f262"
}
.fa-odnoklassniki
:before
{
content
:
"\f263"
}
.fa-odnoklassniki-square
:before
{
content
:
"\f264"
}
.fa-get-pocket
:before
{
content
:
"\f265"
}
.fa-wikipedia-w
:before
{
content
:
"\f266"
}
.fa-safari
:before
{
content
:
"\f267"
}
.fa-chrome
:before
{
content
:
"\f268"
}
.fa-firefox
:before
{
content
:
"\f269"
}
.fa-opera
:before
{
content
:
"\f26a"
}
.fa-internet-explorer
:before
{
content
:
"\f26b"
}
.fa-tv
:before
,
.fa-television
:before
{
content
:
"\f26c"
}
.fa-contao
:before
{
content
:
"\f26d"
}
.fa-500px
:before
{
content
:
"\f26e"
}
.fa-amazon
:before
{
content
:
"\f270"
}
.fa-calendar-plus-o
:before
{
content
:
"\f271"
}
.fa-calendar-minus-o
:before
{
content
:
"\f272"
}
.fa-calendar-times-o
:before
{
content
:
"\f273"
}
.fa-calendar-check-o
:before
{
content
:
"\f274"
}
.fa-industry
:before
{
content
:
"\f275"
}
.fa-map-pin
:before
{
content
:
"\f276"
}
.fa-map-signs
:before
{
content
:
"\f277"
}
.fa-map-o
:before
{
content
:
"\f278"
}
.fa-map
:before
{
content
:
"\f279"
}
.fa-commenting
:before
{
content
:
"\f27a"
}
.fa-commenting-o
:before
{
content
:
"\f27b"
}
.fa-houzz
:before
{
content
:
"\f27c"
}
.fa-vimeo
:before
{
content
:
"\f27d"
}
.fa-black-tie
:before
{
content
:
"\f27e"
}
.fa-fonticons
:before
{
content
:
"\f280"
}
src/main/resources/static/css/loginstyle.css
deleted
100644 → 0
View file @
19a2655c
body
{
background
:
#f8f8f8
;
font-family
:
'PT Sans'
,
Helvetica
,
Arial
,
sans-serif
;
text-align
:
center
;
color
:
#fff
;
}
.page-container
{
margin
:
120px
auto
0
auto
;
}
h1
{
font-size
:
30px
;
font-weight
:
700
;
text-shadow
:
0
1px
4px
rgba
(
0
,
0
,
0
,
.2
);
}
form
{
position
:
relative
;
width
:
305px
;
margin
:
15px
auto
0
auto
;
text-align
:
center
;
}
input
{
width
:
270px
;
height
:
42px
;
margin-top
:
25px
;
padding
:
0
15px
;
background
:
#2d2d2d
;
/* browsers that don't support rgba */
background
:
rgba
(
45
,
45
,
45
,
.15
);
-moz-border-radius
:
6px
;
-webkit-border-radius
:
6px
;
border-radius
:
6px
;
border
:
1px
solid
#3d3d3d
;
/* browsers that don't support rgba */
border
:
1px
solid
rgba
(
255
,
255
,
255
,
.15
);
-moz-box-shadow
:
0
2px
3px
0
rgba
(
0
,
0
,
0
,
.1
)
inset
;
-webkit-box-shadow
:
0
2px
3px
0
rgba
(
0
,
0
,
0
,
.1
)
inset
;
box-shadow
:
0
2px
3px
0
rgba
(
0
,
0
,
0
,
.1
)
inset
;
font-family
:
'PT Sans'
,
Helvetica
,
Arial
,
sans-serif
;
font-size
:
14px
;
color
:
#fff
;
text-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
.1
);
-o-transition
:
all
.2s
;
-moz-transition
:
all
.2s
;
-webkit-transition
:
all
.2s
;
-ms-transition
:
all
.2s
;
}
input
:-moz-placeholder
{
color
:
#fff
;
}
input
:-ms-input-placeholder
{
color
:
#fff
;
}
input
::-webkit-input-placeholder
{
color
:
#fff
;
}
input
:focus
{
outline
:
none
;
-moz-box-shadow
:
0
2px
3px
0
rgba
(
0
,
0
,
0
,
.1
)
inset
,
0
2px
7px
0
rgba
(
0
,
0
,
0
,
.2
);
-webkit-box-shadow
:
0
2px
3px
0
rgba
(
0
,
0
,
0
,
.1
)
inset
,
0
2px
7px
0
rgba
(
0
,
0
,
0
,
.2
);
box-shadow
:
0
2px
3px
0
rgba
(
0
,
0
,
0
,
.1
)
inset
,
0
2px
7px
0
rgba
(
0
,
0
,
0
,
.2
);
}
button
{
cursor
:
pointer
;
width
:
300px
;
height
:
44px
;
margin-top
:
25px
;
padding
:
0
;
background
:
#ef4300
;
-moz-border-radius
:
6px
;
-webkit-border-radius
:
6px
;
border-radius
:
6px
;
border
:
1px
solid
#ff730e
;
-moz-box-shadow
:
0
15px
30px
0
rgba
(
255
,
255
,
255
,
.25
)
inset
,
0
2px
7px
0
rgba
(
0
,
0
,
0
,
.2
);
-webkit-box-shadow
:
0
15px
30px
0
rgba
(
255
,
255
,
255
,
.25
)
inset
,
0
2px
7px
0
rgba
(
0
,
0
,
0
,
.2
);
box-shadow
:
0
15px
30px
0
rgba
(
255
,
255
,
255
,
.25
)
inset
,
0
2px
7px
0
rgba
(
0
,
0
,
0
,
.2
);
font-family
:
'PT Sans'
,
Helvetica
,
Arial
,
sans-serif
;
font-size
:
14px
;
font-weight
:
700
;
color
:
#fff
;
text-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
.1
);
-o-transition
:
all
.2s
;
-moz-transition
:
all
.2s
;
-webkit-transition
:
all
.2s
;
-ms-transition
:
all
.2s
;
}
button
:hover
{
-moz-box-shadow
:
0
15px
30px
0
rgba
(
255
,
255
,
255
,
.15
)
inset
,
0
2px
7px
0
rgba
(
0
,
0
,
0
,
.2
);
-webkit-box-shadow
:
0
15px
30px
0
rgba
(
255
,
255
,
255
,
.15
)
inset
,
0
2px
7px
0
rgba
(
0
,
0
,
0
,
.2
);
box-shadow
:
0
15px
30px
0
rgba
(
255
,
255
,
255
,
.15
)
inset
,
0
2px
7px
0
rgba
(
0
,
0
,
0
,
.2
);
}
button
:active
{
-moz-box-shadow
:
0
15px
30px
0
rgba
(
255
,
255
,
255
,
.15
)
inset
,
0
2px
7px
0
rgba
(
0
,
0
,
0
,
.2
);
-webkit-box-shadow
:
0
15px
30px
0
rgba
(
255
,
255
,
255
,
.15
)
inset
,
0
2px
7px
0
rgba
(
0
,
0
,
0
,
.2
);
box-shadow
:
0
5px
8px
0
rgba
(
0
,
0
,
0
,
.1
)
inset
,
0
1px
4px
0
rgba
(
0
,
0
,
0
,
.1
);
border
:
0px
solid
#ef4300
;
}
.error
{
display
:
none
;
position
:
absolute
;
top
:
27px
;
right
:
-55px
;
width
:
40px
;
height
:
40px
;
background
:
#2d2d2d
;
/* browsers that don't support rgba */
background
:
rgba
(
45
,
45
,
45
,
.25
);
-moz-border-radius
:
8px
;
-webkit-border-radius
:
8px
;
border-radius
:
8px
;
}
.error
span
{
display
:
inline-block
;
margin-left
:
2px
;
font-size
:
40px
;
font-weight
:
700
;
line-height
:
40px
;
text-shadow
:
0
1px
2px
rgba
(
0
,
0
,
0
,
.1
);
-o-transform
:
rotate
(
45deg
);
-moz-transform
:
rotate
(
45deg
);
-webkit-transform
:
rotate
(
45deg
);
-ms-transform
:
rotate
(
45deg
);
}
.connect
{
width
:
305px
;
margin
:
35px
auto
0
auto
;
font-size
:
18px
;
font-weight
:
700
;
text-shadow
:
0
1px
3px
rgba
(
0
,
0
,
0
,
.2
);
}
.connect
a
{
display
:
inline-block
;
width
:
32px
;
height
:
35px
;
margin-top
:
15px
;
-o-transition
:
all
.2s
;
-moz-transition
:
all
.2s
;
-webkit-transition
:
all
.2s
;
-ms-transition
:
all
.2s
;
}
.connect
a
.facebook
{
background
:
url(../img/facebook.png)
center
center
no-repeat
;
}
.connect
a
.twitter
{
background
:
url(../img/twitter.png)
center
center
no-repeat
;
}
.connect
a
:hover
{
background-position
:
center
bottom
;
}
src/main/resources/static/css/mediaelementplayer.css
deleted
100644 → 0
View file @
19a2655c
.mejs-offscreen
{
/* Accessibility: hide screen reader texts (and prefer "top" for RTL languages). */
position
:
absolute
!important
;
top
:
-10000px
;
left
:
-10000px
;
overflow
:
hidden
;
width
:
1px
;
height
:
1px
;
}
.mejs-container
{
position
:
relative
;
background
:
#000
;
font-family
:
Helvetica
,
Arial
;
text-align
:
left
;
vertical-align
:
top
;
text-indent
:
0
;
}
.mejs-container
:focus
{
outline
:
none
;
}
.me-plugin
{
position
:
absolute
;
}
.mejs-embed
,
.mejs-embed
body
{
width
:
100%
;
height
:
100%
;
margin
:
0
;
padding
:
0
;
background
:
#000
;
overflow
:
hidden
;
}
.mejs-fullscreen
{
/* set it to not show scroll bars so 100% will work */
overflow
:
hidden
!important
;
}
.mejs-container-fullscreen
{
position
:
fixed
;
left
:
0
;
top
:
0
;
right
:
0
;
bottom
:
0
;
overflow
:
hidden
;
z-index
:
1000
;
}
.mejs-container-fullscreen
.mejs-mediaelement
,
.mejs-container-fullscreen
video
{
width
:
100%
;
height
:
100%
;
}
.mejs-clear
{
clear
:
both
;
}
/* Start: LAYERS */
.mejs-background
{
position
:
absolute
;
top
:
0
;
left
:
0
;
}
.mejs-mediaelement
{
/*position: absolute;*/
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
;
}
.mejs-poster
{
position
:
absolute
;
top
:
0
;
left
:
0
;
background-size
:
contain
;
background-position
:
50%
50%
;
background-repeat
:
no-repeat
;
}
:root
.mejs-poster
img
{
display
:
none
;
}
.mejs-poster
img
{
border
:
0
;
padding
:
0
;
border
:
0
;
}
.mejs-overlay
{
position
:
absolute
;
top
:
0
;
left
:
0
;
}
.mejs-overlay-play
{
cursor
:
pointer
;
}
.mejs-overlay-button
{
position
:
absolute
;
top
:
50%
;
left
:
50%
;
width
:
100px
;
height
:
100px
;
margin
:
-50px
0
0
-50px
;
background
:
url(../../img/bigplay.svg)
no-repeat
;
}
.no-svg
.mejs-overlay-button
{
background-image
:
url(../../img/bigplay.png)
;
}
.mejs-overlay
:hover
.mejs-overlay-button
{
background-position
:
0
-100px
;
}
.mejs-overlay-loading
{
position
:
absolute
;
top
:
50%
;
left
:
50%
;
width
:
80px
;
height
:
80px
;
margin
:
-40px
0
0
-40px
;
background
:
#333
;
background
:
url(background.png)
;
background
:
rgba
(
0
,
0
,
0
,
0.9
);
background
:
-webkit-gradient
(
linear
,
0%
0%
,
0%
100%
,
from
(
rgba
(
50
,
50
,
50
,
0.9
)),
to
(
rgba
(
0
,
0
,
0
,
0.9
)));
background
:
-webkit-linear-gradient
(
top
,
rgba
(
50
,
50
,
50
,
0.9
),
rgba
(
0
,
0
,
0
,
0.9
));
background
:
-moz-linear-gradient
(
top
,
rgba
(
50
,
50
,
50
,
0.9
),
rgba
(
0
,
0
,
0
,
0.9
));
background
:
-o-linear-gradient
(
top
,
rgba
(
50
,
50
,
50
,
0.9
),
rgba
(
0
,
0
,
0
,
0.9
));
background
:
-ms-linear-gradient
(
top
,
rgba
(
50
,
50
,
50
,
0.9
),
rgba
(
0
,
0
,
0
,
0.9
));
background
:
linear-gradient
(
rgba
(
50
,
50
,
50
,
0.9
),
rgba
(
0
,
0
,
0
,
0.9
));
}
.mejs-overlay-loading
span
{
display
:
block
;
width
:
80px
;
height
:
80px
;
background
:
transparent
url(loading.gif)
50%
50%
no-repeat
;
}
/* End: LAYERS */
/* Start: CONTROL BAR */
.mejs-container
.mejs-controls
{
position
:
absolute
;
list-style-type
:
none
;
margin
:
0
;
padding
:
0
;
bottom
:
0
;
left
:
0
;
background
:
#434444
;
height
:
30px
;
width
:
100%
;
}
.mejs-container
.mejs-controls
div
{
list-style-type
:
none
;
background-image
:
none
;
display
:
block
;
float
:
left
;
margin
:
0
;
padding
:
0
;
width
:
26px
;
height
:
26px
;
font-size
:
11px
;
line-height
:
11px
;
font-family
:
Helvetica
,
Arial
;
border
:
0
;
}
.mejs-controls
.mejs-button
button
{
cursor
:
pointer
;
display
:
block
;
font-size
:
0
;
line-height
:
0
;
text-decoration
:
none
;
margin
:
7px
5px
;
padding
:
0
;
position
:
absolute
;
height
:
16px
;
width
:
16px
;
border
:
0
;
background
:
transparent
url(../../img/controls.svg)
no-repeat
;
}
.no-svg
.mejs-controls
.mejs-button
button
{
background-image
:
url((../../img/controls.png)
;
}
/* :focus for accessibility */
.mejs-controls
.mejs-button
button
:focus
{
outline
:
dotted
1px
#999
;
}
/* End: CONTROL BAR */
/* Start: Time (Current / Duration) */
.mejs-container
.mejs-controls
.mejs-time
{
color
:
#fff
;
display
:
block
;
height
:
17px
;
width
:
auto
;
padding
:
10px
3px
0
3px
;
overflow
:
hidden
;
text-align
:
center
;
-moz-box-sizing
:
content-box
;
-webkit-box-sizing
:
content-box
;
box-sizing
:
content-box
;
}
.mejs-container
.mejs-controls
.mejs-time
a
{
color
:
#fff
;
font-size
:
11px
;
line-height
:
12px
;
display
:
block
;
float
:
left
;
margin
:
1px
2px
0
0
;
width
:
auto
;
}
/* End: Time (Current / Duration) */
/* Start: Play/Pause/Stop */
.mejs-controls
.mejs-play
button
{
background-position
:
0
0
;
}
.mejs-controls
.mejs-pause
button
{
background-position
:
0
-16px
;
}
.mejs-controls
.mejs-stop
button
{
background-position
:
-112px
0
;
}
/* Start: Play/Pause/Stop */
/* Start: Progress Bar */
.mejs-controls
div
.mejs-time-rail
{
direction
:
ltr
;
width
:
200px
;
padding-top
:
5px
;
}
.mejs-controls
.mejs-time-rail
span
,
.mejs-controls
.mejs-time-rail
a
{
display
:
block
;
position
:
absolute
;
width
:
180px
;
height
:
10px
;
-webkit-border-radius
:
2px
;
-moz-border-radius
:
2px
;
border-radius
:
2px
;
cursor
:
pointer
;
}
.mejs-controls
.mejs-time-rail
.mejs-time-total
{
margin
:
5px
;
background
:
#FF6656
;
}
.mejs-controls
.mejs-time-rail
.mejs-time-buffering
{
width
:
100%
;
background-image
:
-o-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
:
-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
:
-ms-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
);
-webkit-background-size
:
15px
15px
;
-moz-background-size
:
15px
15px
;
-o-background-size
:
15px
15px
;
background-size
:
15px
15px
;
-webkit-animation
:
buffering-stripes
2s
linear
infinite
;
-moz-animation
:
buffering-stripes
2s
linear
infinite
;
-ms-animation
:
buffering-stripes
2s
linear
infinite
;
-o-animation
:
buffering-stripes
2s
linear
infinite
;
animation
:
buffering-stripes
2s
linear
infinite
;
}
@-webkit-keyframes
buffering-stripes
{
from
{
background-position
:
0
0
;}
to
{
background-position
:
30px
0
;}
}
@-moz-keyframes
buffering-stripes
{
from
{
background-position
:
0
0
;}
to
{
background-position
:
30px
0
;}
}
@-ms-keyframes
buffering-stripes
{
from
{
background-position
:
0
0
;}
to
{
background-position
:
30px
0
;}
}
@-o-keyframes
buffering-stripes
{
from
{
background-position
:
0
0
;}
to
{
background-position
:
30px
0
;}
}
@keyframes
buffering-stripes
{
from
{
background-position
:
0
0
;}
to
{
background-position
:
30px
0
;}
}
.mejs-controls
.mejs-time-rail
.mejs-time-loaded
{
background
:
#FF6656
;
width
:
0
;
}
.mejs-controls
.mejs-time-rail
.mejs-time-current
{
background
:
#fff
;
background
:
rgba
(
255
,
255
,
255
,
0.8
);
background
:
-webkit-gradient
(
linear
,
0%
0%
,
0%
100%
,
from
(
rgba
(
255
,
255
,
255
,
0.9
)),
to
(
rgba
(
200
,
200
,
200
,
0.8
)));
background
:
-webkit-linear-gradient
(
top
,
rgba
(
255
,
255
,
255
,
0.9
),
rgba
(
200
,
200
,
200
,
0.8
));
background
:
-moz-linear-gradient
(
top
,
rgba
(
255
,
255
,
255
,
0.9
),
rgba
(
200
,
200
,
200
,
0.8
));
background
:
-o-linear-gradient
(
top
,
rgba
(
255
,
255
,
255
,
0.9
),
rgba
(
200
,
200
,
200
,
0.8
));
background
:
-ms-linear-gradient
(
top
,
rgba
(
255
,
255
,
255
,
0.9
),
rgba
(
200
,
200
,
200
,
0.8
));
background
:
linear-gradient
(
rgba
(
255
,
255
,
255
,
0.9
),
rgba
(
200
,
200
,
200
,
0.8
));
width
:
0
;
}
.mejs-controls
.mejs-time-rail
.mejs-time-handle
{
display
:
none
;
position
:
absolute
;
margin
:
0
;
width
:
10px
;
background
:
#fff
;
-webkit-border-radius
:
5px
;
-moz-border-radius
:
5px
;
border-radius
:
5px
;
cursor
:
pointer
;
border
:
solid
2px
#333
;
top
:
-2px
;
text-align
:
center
;
}
.mejs-controls
.mejs-time-rail
.mejs-time-float
{
position
:
absolute
;
display
:
none
;
background
:
#eee
;
width
:
36px
;
height
:
17px
;
border
:
solid
1px
#333
;
top
:
-26px
;
margin-left
:
-18px
;
text-align
:
center
;
color
:
#111
;
}
.mejs-controls
.mejs-time-rail
.mejs-time-float-current
{
margin
:
2px
;
width
:
30px
;
display
:
block
;
text-align
:
center
;
left
:
0
;
}
.mejs-controls
.mejs-time-rail
.mejs-time-float-corner
{
position
:
absolute
;
display
:
block
;
width
:
0
;
height
:
0
;
line-height
:
0
;
border
:
solid
5px
#eee
;
border-color
:
#eee
transparent
transparent
transparent
;
-webkit-border-radius
:
0
;
-moz-border-radius
:
0
;
border-radius
:
0
;
top
:
15px
;
left
:
13px
;
}
.mejs-long-video
.mejs-controls
.mejs-time-rail
.mejs-time-float
{
width
:
48px
;
}
.mejs-long-video
.mejs-controls
.mejs-time-rail
.mejs-time-float-current
{
width
:
44px
;
}
.mejs-long-video
.mejs-controls
.mejs-time-rail
.mejs-time-float-corner
{
left
:
18px
;
}
/*
.mejs-controls .mejs-time-rail:hover .mejs-time-handle {
visibility:visible;
}
*/
/* End: Progress Bar */
/* Start: Fullscreen */
.mejs-controls
.mejs-fullscreen-button
button
{
background-position
:
-32px
0
;
}
.mejs-controls
.mejs-unfullscreen
button
{
background-position
:
-32px
-16px
;
}
/* End: Fullscreen */
/* Start: Mute/Volume */
.mejs-controls
.mejs-volume-button
{
}
.mejs-controls
.mejs-mute
button
{
background-position
:
-16px
-16px
;
}
.mejs-controls
.mejs-unmute
button
{
background-position
:
-16px
0
;
}
.mejs-controls
.mejs-volume-button
{
position
:
relative
;
}
.mejs-controls
.mejs-volume-button
.mejs-volume-slider
{
display
:
none
;
height
:
115px
;
width
:
25px
;
background
:
url(background.png)
;
background
:
rgba
(
50
,
50
,
50
,
0.7
);
-webkit-border-radius
:
0
;
-moz-border-radius
:
0
;
border-radius
:
0
;
top
:
-115px
;
left
:
0
;
z-index
:
1
;
position
:
absolute
;
margin
:
0
;
}
.mejs-controls
.mejs-volume-button
:hover
{
-webkit-border-radius
:
0
0
4px
4px
;
-moz-border-radius
:
0
0
4px
4px
;
border-radius
:
0
0
4px
4px
;
}
/*
.mejs-controls .mejs-volume-button:hover .mejs-volume-slider {
display: block;
}
*/
.mejs-controls
.mejs-volume-button
.mejs-volume-slider
.mejs-volume-total
{
position
:
absolute
;
left
:
11px
;
top
:
8px
;
width
:
2px
;
height
:
100px
;
background
:
#ddd
;
background
:
rgba
(
255
,
255
,
255
,
0.5
);
margin
:
0
;
}
.mejs-controls
.mejs-volume-button
.mejs-volume-slider
.mejs-volume-current
{
position
:
absolute
;
left
:
11px
;
top
:
8px
;
width
:
2px
;
height
:
100px
;
background
:
#ddd
;
background
:
rgba
(
255
,
255
,
255
,
0.9
);
margin
:
0
;
}
.mejs-controls
.mejs-volume-button
.mejs-volume-slider
.mejs-volume-handle
{
position
:
absolute
;
left
:
4px
;
top
:
-3px
;
width
:
16px
;
height
:
6px
;
background
:
#ddd
;
background
:
rgba
(
255
,
255
,
255
,
0.9
);
cursor
:
N-resize
;
-webkit-border-radius
:
1px
;
-moz-border-radius
:
1px
;
border-radius
:
1px
;
margin
:
0
;
}
/* horizontal version */
.mejs-controls
a
.mejs-horizontal-volume-slider
{
height
:
26px
;
width
:
56px
;
position
:
relative
;
display
:
block
;
float
:
left
;
vertical-align
:
middle
;
}
.mejs-controls
.mejs-horizontal-volume-slider
.mejs-horizontal-volume-total
{
position
:
absolute
;
left
:
0
;
top
:
11px
;
width
:
50px
;
height
:
8px
;
margin
:
0
;
padding
:
0
;
font-size
:
1px
;
-webkit-border-radius
:
2px
;
-moz-border-radius
:
2px
;
border-radius
:
2px
;
background
:
#333
;
background
:
rgba
(
50
,
50
,
50
,
0.8
);
background
:
-webkit-gradient
(
linear
,
0%
0%
,
0%
100%
,
from
(
rgba
(
30
,
30
,
30
,
0.8
)),
to
(
rgba
(
60
,
60
,
60
,
0.8
)));
background
:
-webkit-linear-gradient
(
top
,
rgba
(
30
,
30
,
30
,
0.8
),
rgba
(
60
,
60
,
60
,
0.8
));
background
:
-moz-linear-gradient
(
top
,
rgba
(
30
,
30
,
30
,
0.8
),
rgba
(
60
,
60
,
60
,
0.8
));
background
:
-o-linear-gradient
(
top
,
rgba
(
30
,
30
,
30
,
0.8
),
rgba
(
60
,
60
,
60
,
0.8
));
background
:
-ms-linear-gradient
(
top
,
rgba
(
30
,
30
,
30
,
0.8
),
rgba
(
60
,
60
,
60
,
0.8
));
background
:
linear-gradient
(
rgba
(
30
,
30
,
30
,
0.8
),
rgba
(
60
,
60
,
60
,
0.8
));
}
.mejs-controls
.mejs-horizontal-volume-slider
.mejs-horizontal-volume-current
{
position
:
absolute
;
left
:
0
;
top
:
11px
;
width
:
50px
;
height
:
8px
;
margin
:
0
;
padding
:
0
;
font-size
:
1px
;
-webkit-border-radius
:
2px
;
-moz-border-radius
:
2px
;
border-radius
:
2px
;
background
:
#fff
;
background
:
rgba
(
255
,
255
,
255
,
0.8
);
background
:
-webkit-gradient
(
linear
,
0%
0%
,
0%
100%
,
from
(
rgba
(
255
,
255
,
255
,
0.9
)),
to
(
rgba
(
200
,
200
,
200
,
0.8
)));
background
:
-webkit-linear-gradient
(
top
,
rgba
(
255
,
255
,
255
,
0.9
),
rgba
(
200
,
200
,
200
,
0.8
));
background
:
-moz-linear-gradient
(
top
,
rgba
(
255
,
255
,
255
,
0.9
),
rgba
(
200
,
200
,
200
,
0.8
));
background
:
-o-linear-gradient
(
top
,
rgba
(
255
,
255
,
255
,
0.9
),
rgba
(
200
,
200
,
200
,
0.8
));
background
:
-ms-linear-gradient
(
top
,
rgba
(
255
,
255
,
255
,
0.9
),
rgba
(
200
,
200
,
200
,
0.8
));
background
:
linear-gradient
(
rgba
(
255
,
255
,
255
,
0.9
),
rgba
(
200
,
200
,
200
,
0.8
));
}
.mejs-controls
.mejs-horizontal-volume-slider
.mejs-horizontal-volume-handle
{
display
:
none
;
}
/* End: Mute/Volume */
/* Start: Track (Captions and Chapters) */
.mejs-controls
.mejs-captions-button
{
position
:
relative
;
}
.mejs-controls
.mejs-captions-button
button
{
background-position
:
-48px
0
;
}
.mejs-controls
.mejs-captions-button
.mejs-captions-selector
{
visibility
:
hidden
;
position
:
absolute
;
bottom
:
26px
;
right
:
-51px
;
width
:
85px
;
height
:
100px
;
background
:
url(background.png)
;
background
:
rgba
(
50
,
50
,
50
,
0.7
);
border
:
solid
1px
transparent
;
padding
:
10px
10px
0
10px
;
overflow
:
hidden
;
-webkit-border-radius
:
0
;
-moz-border-radius
:
0
;
border-radius
:
0
;
}
/*
.mejs-controls .mejs-captions-button:hover .mejs-captions-selector {
visibility: visible;
}
*/
.mejs-controls
.mejs-captions-button
.mejs-captions-selector
ul
{
margin
:
0
;
padding
:
0
;
display
:
block
;
list-style-type
:
none
!important
;
overflow
:
hidden
;
}
.mejs-controls
.mejs-captions-button
.mejs-captions-selector
ul
li
{
margin
:
0
0
6px
0
;
padding
:
0
;
list-style-type
:
none
!important
;
display
:
block
;
color
:
#fff
;
overflow
:
hidden
;
}
.mejs-controls
.mejs-captions-button
.mejs-captions-selector
ul
li
input
{
clear
:
both
;
float
:
left
;
margin
:
3px
3px
0
5px
;
}
.mejs-controls
.mejs-captions-button
.mejs-captions-selector
ul
li
label
{
width
:
55px
;
float
:
left
;
padding
:
4px
0
0
0
;
line-height
:
15px
;
font-family
:
helvetica
,
arial
;
font-size
:
10px
;
}
.mejs-controls
.mejs-captions-button
.mejs-captions-translations
{
font-size
:
10px
;
margin
:
0
0
5px
0
;
}
.mejs-chapters
{
position
:
absolute
;
top
:
0
;
left
:
0
;
-xborder-right
:
solid
1px
#fff
;
width
:
10000px
;
z-index
:
1
;
}
.mejs-chapters
.mejs-chapter
{
position
:
absolute
;
float
:
left
;
background
:
#222
;
background
:
rgba
(
0
,
0
,
0
,
0.7
);
background
:
-webkit-gradient
(
linear
,
0%
0%
,
0%
100%
,
from
(
rgba
(
50
,
50
,
50
,
0.7
)),
to
(
rgba
(
0
,
0
,
0
,
0.7
)));
background
:
-webkit-linear-gradient
(
top
,
rgba
(
50
,
50
,
50
,
0.7
),
rgba
(
0
,
0
,
0
,
0.7
));
background
:
-moz-linear-gradient
(
top
,
rgba
(
50
,
50
,
50
,
0.7
),
rgba
(
0
,
0
,
0
,
0.7
));
background
:
-o-linear-gradient
(
top
,
rgba
(
50
,
50
,
50
,
0.7
),
rgba
(
0
,
0
,
0
,
0.7
));
background
:
-ms-linear-gradient
(
top
,
rgba
(
50
,
50
,
50
,
0.7
),
rgba
(
0
,
0
,
0
,
0.7
));
background
:
linear-gradient
(
rgba
(
50
,
50
,
50
,
0.7
),
rgba
(
0
,
0
,
0
,
0.7
));
filter
:
progid
:
DXImageTransform
.
Microsoft
.
Gradient
(
GradientType
=
0
,
startColorstr
=
#323232
,
endColorstr
=
#000000
);
overflow
:
hidden
;
border
:
0
;
}
.mejs-chapters
.mejs-chapter
.mejs-chapter-block
{
font-size
:
11px
;
color
:
#fff
;
padding
:
5px
;
display
:
block
;
border-right
:
solid
1px
#333
;
border-bottom
:
solid
1px
#333
;
cursor
:
pointer
;
}
.mejs-chapters
.mejs-chapter
.mejs-chapter-block-last
{
border-right
:
none
;
}
.mejs-chapters
.mejs-chapter
.mejs-chapter-block
:hover
{
background
:
#666
;
background
:
rgba
(
102
,
102
,
102
,
0.7
);
background
:
-webkit-gradient
(
linear
,
0%
0%
,
0%
100%
,
from
(
rgba
(
102
,
102
,
102
,
0.7
)),
to
(
rgba
(
50
,
50
,
50
,
0.6
)));
background
:
-webkit-linear-gradient
(
top
,
rgba
(
102
,
102
,
102
,
0.7
),
rgba
(
50
,
50
,
50
,
0.6
));
background
:
-moz-linear-gradient
(
top
,
rgba
(
102
,
102
,
102
,
0.7
),
rgba
(
50
,
50
,
50
,
0.6
));
background
:
-o-linear-gradient
(
top
,
rgba
(
102
,
102
,
102
,
0.7
),
rgba
(
50
,
50
,
50
,
0.6
));
background
:
-ms-linear-gradient
(
top
,
rgba
(
102
,
102
,
102
,
0.7
),
rgba
(
50
,
50
,
50
,
0.6
));
background
:
linear-gradient
(
rgba
(
102
,
102
,
102
,
0.7
),
rgba
(
50
,
50
,
50
,
0.6
));
filter
:
progid
:
DXImageTransform
.
Microsoft
.
Gradient
(
GradientType
=
0
,
startColorstr
=
#666666
,
endColorstr
=
#323232
);
}
.mejs-chapters
.mejs-chapter
.mejs-chapter-block
.ch-title
{
font-size
:
12px
;
font-weight
:
bold
;
display
:
block
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
margin
:
0
0
3px
0
;
line-height
:
12px
;
}
.mejs-chapters
.mejs-chapter
.mejs-chapter-block
.ch-timespan
{
font-size
:
12px
;
line-height
:
12px
;
margin
:
3px
0
4px
0
;
display
:
block
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
}
.mejs-captions-layer
{
position
:
absolute
;
bottom
:
0
;
left
:
0
;
text-align
:
center
;
line-height
:
20px
;
font-size
:
16px
;
color
:
#fff
;
}
.mejs-captions-layer
a
{
color
:
#fff
;
text-decoration
:
underline
;
}
.mejs-captions-layer
[
lang
=
ar
]
{
font-size
:
20px
;
font-weight
:
normal
;
}
.mejs-captions-position
{
position
:
absolute
;
width
:
100%
;
bottom
:
15px
;
left
:
0
;
}
.mejs-captions-position-hover
{
bottom
:
35px
;
}
.mejs-captions-text
{
padding
:
3px
5px
;
background
:
url(background.png)
;
background
:
rgba
(
20
,
20
,
20
,
0.5
);
white-space
:
pre-wrap
;
}
/* End: Track (Captions and Chapters) */
/* Start: Error */
.me-cannotplay
{
}
.me-cannotplay
a
{
color
:
#fff
;
font-weight
:
bold
;
}
.me-cannotplay
span
{
padding
:
15px
;
display
:
block
;
}
/* End: Error */
/* Start: Loop */
.mejs-controls
.mejs-loop-off
button
{
background-position
:
-64px
-16px
;
}
.mejs-controls
.mejs-loop-on
button
{
background-position
:
-64px
0
;
}
/* End: Loop */
/* Start: backlight */
.mejs-controls
.mejs-backlight-off
button
{
background-position
:
-80px
-16px
;
}
.mejs-controls
.mejs-backlight-on
button
{
background-position
:
-80px
0
;
}
/* End: backlight */
/* Start: Picture Controls */
.mejs-controls
.mejs-picturecontrols-button
{
background-position
:
-96px
0
;
}
/* End: Picture Controls */
/* context menu */
.mejs-contextmenu
{
position
:
absolute
;
width
:
150px
;
padding
:
10px
;
border-radius
:
4px
;
top
:
0
;
left
:
0
;
background
:
#fff
;
border
:
solid
1px
#999
;
z-index
:
1001
;
/* make sure it shows on fullscreen */
}
.mejs-contextmenu
.mejs-contextmenu-separator
{
height
:
1px
;
font-size
:
0
;
margin
:
5px
6px
;
background
:
#333
;
}
.mejs-contextmenu
.mejs-contextmenu-item
{
font-family
:
Helvetica
,
Arial
;
font-size
:
12px
;
padding
:
4px
6px
;
cursor
:
pointer
;
color
:
#333
;
}
.mejs-contextmenu
.mejs-contextmenu-item
:hover
{
background
:
#2C7C91
;
color
:
#fff
;
}
/* Start: Source Chooser */
.mejs-controls
.mejs-sourcechooser-button
{
position
:
relative
;
}
.mejs-controls
.mejs-sourcechooser-button
button
{
background-position
:
-128px
0
;
}
.mejs-controls
.mejs-sourcechooser-button
.mejs-sourcechooser-selector
{
visibility
:
hidden
;
position
:
absolute
;
bottom
:
26px
;
right
:
-10px
;
width
:
130px
;
height
:
100px
;
background
:
url(background.png)
;
background
:
rgba
(
50
,
50
,
50
,
0.7
);
border
:
solid
1px
transparent
;
padding
:
10px
;
overflow
:
hidden
;
-webkit-border-radius
:
0
;
-moz-border-radius
:
0
;
border-radius
:
0
;
}
.mejs-controls
.mejs-sourcechooser-button
.mejs-sourcechooser-selector
ul
{
margin
:
0
;
padding
:
0
;
display
:
block
;
list-style-type
:
none
!important
;
overflow
:
hidden
;
}
.mejs-controls
.mejs-sourcechooser-button
.mejs-sourcechooser-selector
ul
li
{
margin
:
0
0
6px
0
;
padding
:
0
;
list-style-type
:
none
!important
;
display
:
block
;
color
:
#fff
;
overflow
:
hidden
;
}
.mejs-controls
.mejs-sourcechooser-button
.mejs-sourcechooser-selector
ul
li
input
{
clear
:
both
;
float
:
left
;
margin
:
3px
3px
0
5px
;
}
.mejs-controls
.mejs-sourcechooser-button
.mejs-sourcechooser-selector
ul
li
label
{
width
:
100px
;
float
:
left
;
padding
:
4px
0
0
0
;
line-height
:
15px
;
font-family
:
helvetica
,
arial
;
font-size
:
10px
;
}
/* End: Source Chooser */
/* Start: Postroll */
.mejs-postroll-layer
{
position
:
absolute
;
bottom
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
;
background
:
url(background.png)
;
background
:
rgba
(
50
,
50
,
50
,
0.7
);
z-index
:
1000
;
overflow
:
hidden
;
}
.mejs-postroll-layer-content
{
width
:
100%
;
height
:
100%
;
}
.mejs-postroll-close
{
position
:
absolute
;
right
:
0
;
top
:
0
;
background
:
url(background.png)
;
background
:
rgba
(
50
,
50
,
50
,
0.7
);
color
:
#fff
;
padding
:
4px
;
z-index
:
100
;
cursor
:
pointer
;
}
/* End: Postroll */
/* Start: Speed */
div
.mejs-speed-button
{
width
:
46px
!important
;
position
:
relative
;
}
.mejs-controls
.mejs-button.mejs-speed-button
button
{
background
:
transparent
;
width
:
36px
;
font-size
:
11px
;
line-height
:
normal
;
color
:
#ffffff
;
}
.mejs-controls
.mejs-speed-button
.mejs-speed-selector
{
display
:
none
;
position
:
absolute
;
top
:
-100px
;
left
:
-10px
;
width
:
60px
;
height
:
100px
;
background
:
url(background.png)
;
background
:
rgba
(
50
,
50
,
50
,
0.7
);
border
:
solid
1px
transparent
;
padding
:
0
;
overflow
:
hidden
;
-webkit-border-radius
:
0
;
-moz-border-radius
:
0
;
border-radius
:
0
;
}
.mejs-controls
.mejs-speed-button
:hover
>
.mejs-speed-selector
{
display
:
block
;
}
.mejs-controls
.mejs-speed-button
.mejs-speed-selector
ul
li
label
.mejs-speed-selected
{
color
:
rgba
(
33
,
248
,
248
,
1
);
}
.mejs-controls
.mejs-speed-button
.mejs-speed-selector
ul
{
margin
:
0
;
padding
:
0
;
display
:
block
;
list-style-type
:
none
!important
;
overflow
:
hidden
;
}
.mejs-controls
.mejs-speed-button
.mejs-speed-selector
ul
li
{
margin
:
0
0
6px
0
;
padding
:
0
10px
;
list-style-type
:
none
!important
;
display
:
block
;
color
:
#fff
;
overflow
:
hidden
;
}
.mejs-controls
.mejs-speed-button
.mejs-speed-selector
ul
li
input
{
clear
:
both
;
float
:
left
;
margin
:
3px
3px
0
5px
;
display
:
none
;
}
.mejs-controls
.mejs-speed-button
.mejs-speed-selector
ul
li
label
{
width
:
60px
;
float
:
left
;
padding
:
4px
0
0
0
;
line-height
:
15px
;
font-family
:
helvetica
,
arial
;
font-size
:
11.5px
;
color
:
white
;
margin-left
:
5px
;
cursor
:
pointer
;
}
.mejs-controls
.mejs-speed-button
.mejs-speed-selector
ul
li
:hover
{
background-color
:
rgb
(
200
,
200
,
200
)
!important
;
background-color
:
rgba
(
255
,
255
,
255
,
.4
)
!important
;
}
/* End: Speed */
/* Start: Jump Forward */
.mejs-controls
.mejs-button.mejs-jump-forward-button
{
background
:
transparent
url(jumpforward.png)
no-repeat
;
background-position
:
3px
3px
;
}
.mejs-controls
.mejs-button.mejs-jump-forward-button
button
{
background
:
transparent
;
font-size
:
9px
;
line-height
:
normal
;
color
:
#ffffff
;
}
/* End: Jump Forward */
/* Start: Skip Back */
.mejs-controls
.mejs-button.mejs-skip-back-button
{
background
:
transparent
url(skipback.png)
no-repeat
;
background-position
:
3px
3px
;
}
.mejs-controls
.mejs-button.mejs-skip-back-button
button
{
background
:
transparent
;
font-size
:
9px
;
line-height
:
normal
;
color
:
#ffffff
;
}
/* End: Skip Back */
src/main/resources/static/css/red.css
deleted
100644 → 0
View file @
19a2655c
/* iCheck plugin Flat skin, red
----------------------------------- */
.icheckbox_flat-red
,
.iradio_flat-red
{
display
:
inline-block
;
*
display
:
inline
;
vertical-align
:
middle
;
margin
:
0
;
padding
:
0
;
width
:
20px
;
height
:
20px
;
background
:
url(red.png)
no-repeat
;
border
:
none
;
cursor
:
pointer
;
}
.icheckbox_flat-red
{
background-position
:
0
0
;
}
.icheckbox_flat-red.checked
{
background-position
:
-22px
0
;
}
.icheckbox_flat-red.disabled
{
background-position
:
-44px
0
;
cursor
:
default
;
}
.icheckbox_flat-red.checked.disabled
{
background-position
:
-66px
0
;
}
.iradio_flat-red
{
background-position
:
-88px
0
;
}
.iradio_flat-red.checked
{
background-position
:
-110px
0
;
}
.iradio_flat-red.disabled
{
background-position
:
-132px
0
;
cursor
:
default
;
}
.iradio_flat-red.checked.disabled
{
background-position
:
-154px
0
;
}
/* HiDPI support */
@media
(
-o-min-device-pixel-ratio
:
5
/
4
),
(
-webkit-min-device-pixel-ratio
:
1.25
),
(
min-resolution
:
120dpi
),
(
min-resolution
:
1.25dppx
)
{
.icheckbox_flat-red
,
.iradio_flat-red
{
background-image
:
url(red@2x.png)
;
-webkit-background-size
:
176px
22px
;
background-size
:
176px
22px
;
}
}
\ No newline at end of file
src/main/resources/static/css/reset.css
deleted
100644 → 0
View file @
19a2655c
/* ------- This is the CSS Reset ------- */
html
,
body
,
div
,
span
,
applet
,
object
,
iframe
,
h1
,
h2
,
h3
,
h4
,
h5
,
h6
,
p
,
blockquote
,
pre
,
a
,
abbr
,
acronym
,
address
,
big
,
cite
,
code
,
del
,
dfn
,
em
,
img
,
ins
,
kbd
,
q
,
s
,
samp
,
small
,
strike
,
strong
,
sub
,
sup
,
tt
,
var
,
u
,
i
,
center
,
dl
,
dt
,
dd
,
ol
,
ul
,
li
,
fieldset
,
form
,
label
,
legend
,
table
,
caption
,
tbody
,
tfoot
,
thead
,
tr
,
th
,
td
,
article
,
aside
,
canvas
,
details
,
embed
,
figure
,
figcaption
,
footer
,
header
,
hgroup
,
menu
,
nav
,
output
,
ruby
,
section
,
summary
,
time
,
mark
,
audio
,
video
{
margin
:
0
;
padding
:
0
;
border
:
0
;
font-size
:
100%
;
font
:
inherit
;
vertical-align
:
baseline
;
}
/* ------- HTML5 display-role reset for older browsers ------- */
article
,
aside
,
details
,
figcaption
,
figure
,
footer
,
header
,
hgroup
,
menu
,
nav
,
section
{
display
:
block
;
}
body
{
line-height
:
1
;
}
ol
,
ul
{
list-style
:
none
;
}
blockquote
,
q
{
quotes
:
none
;
}
blockquote
:before
,
blockquote
:after
,
q
:before
,
q
:after
{
content
:
''
;
content
:
none
;
}
table
{
border-collapse
:
collapse
;
border-spacing
:
0
;
}
src/main/resources/static/css/simple-line-icons.css
deleted
100644 → 0
View file @
19a2655c
@font-face
{
font-family
:
'simple-line-icons'
;
src
:
url('../../fonts/Simple-Line-Icons.eot?v=2.2.2')
;
src
:
url('../../fonts/Simple-Line-Icons.eot?#iefix&v=2.2.2')
format
(
'embedded-opentype'
),
url('../../fonts/Simple-Line-Icons.ttf?v=2.2.2')
format
(
'truetype'
),
url('../../fonts/Simple-Line-Icons.woff2?v=2.2.2')
format
(
'woff2'
),
url('../../fonts/Simple-Line-Icons.woff?v=2.2.2')
format
(
'woff'
),
url('../../fonts/Simple-Line-Icons.svg?v=2.2.2#simple-line-icons')
format
(
'svg'
);
font-weight
:
normal
;
font-style
:
normal
;
}
/*
Use the following CSS code if you want to have a class per icon.
Instead of a list of all class selectors, you can use the generic [class*="icon-"] selector, but it's slower:
*/
.icon-user
,
.icon-people
,
.icon-user-female
,
.icon-user-follow
,
.icon-user-following
,
.icon-user-unfollow
,
.icon-login
,
.icon-logout
,
.icon-emotsmile
,
.icon-phone
,
.icon-call-end
,
.icon-call-in
,
.icon-call-out
,
.icon-map
,
.icon-location-pin
,
.icon-direction
,
.icon-directions
,
.icon-compass
,
.icon-layers
,
.icon-menu
,
.icon-list
,
.icon-options-vertical
,
.icon-options
,
.icon-arrow-down
,
.icon-arrow-left
,
.icon-arrow-right
,
.icon-arrow-up
,
.icon-arrow-up-circle
,
.icon-arrow-left-circle
,
.icon-arrow-right-circle
,
.icon-arrow-down-circle
,
.icon-check
,
.icon-clock
,
.icon-plus
,
.icon-close
,
.icon-trophy
,
.icon-screen-smartphone
,
.icon-screen-desktop
,
.icon-plane
,
.icon-notebook
,
.icon-mustache
,
.icon-mouse
,
.icon-magnet
,
.icon-energy
,
.icon-disc
,
.icon-cursor
,
.icon-cursor-move
,
.icon-crop
,
.icon-chemistry
,
.icon-speedometer
,
.icon-shield
,
.icon-screen-tablet
,
.icon-magic-wand
,
.icon-hourglass
,
.icon-graduation
,
.icon-ghost
,
.icon-game-controller
,
.icon-fire
,
.icon-eyeglass
,
.icon-envelope-open
,
.icon-envelope-letter
,
.icon-bell
,
.icon-badge
,
.icon-anchor
,
.icon-wallet
,
.icon-vector
,
.icon-speech
,
.icon-puzzle
,
.icon-printer
,
.icon-present
,
.icon-playlist
,
.icon-pin
,
.icon-picture
,
.icon-handbag
,
.icon-globe-alt
,
.icon-globe
,
.icon-folder-alt
,
.icon-folder
,
.icon-film
,
.icon-feed
,
.icon-drop
,
.icon-drawar
,
.icon-docs
,
.icon-doc
,
.icon-diamond
,
.icon-cup
,
.icon-calculator
,
.icon-bubbles
,
.icon-briefcase
,
.icon-book-open
,
.icon-basket-loaded
,
.icon-basket
,
.icon-bag
,
.icon-action-undo
,
.icon-action-redo
,
.icon-wrench
,
.icon-umbrella
,
.icon-trash
,
.icon-tag
,
.icon-support
,
.icon-frame
,
.icon-size-fullscreen
,
.icon-size-actual
,
.icon-shuffle
,
.icon-share-alt
,
.icon-share
,
.icon-rocket
,
.icon-question
,
.icon-pie-chart
,
.icon-pencil
,
.icon-note
,
.icon-loop
,
.icon-home
,
.icon-grid
,
.icon-graph
,
.icon-microphone
,
.icon-music-tone-alt
,
.icon-music-tone
,
.icon-earphones-alt
,
.icon-earphones
,
.icon-equalizer
,
.icon-like
,
.icon-dislike
,
.icon-control-start
,
.icon-control-rewind
,
.icon-control-play
,
.icon-control-pause
,
.icon-control-forward
,
.icon-control-end
,
.icon-volume-1
,
.icon-volume-2
,
.icon-volume-off
,
.icon-calendar
,
.icon-bulb
,
.icon-chart
,
.icon-ban
,
.icon-bubble
,
.icon-camrecorder
,
.icon-camera
,
.icon-cloud-download
,
.icon-cloud-upload
,
.icon-envelope
,
.icon-eye
,
.icon-flag
,
.icon-heart
,
.icon-info
,
.icon-key
,
.icon-link
,
.icon-lock
,
.icon-lock-open
,
.icon-magnifier
,
.icon-magnifier-add
,
.icon-magnifier-remove
,
.icon-paper-clip
,
.icon-paper-plane
,
.icon-power
,
.icon-refresh
,
.icon-reload
,
.icon-settings
,
.icon-star
,
.icon-symble-female
,
.icon-symbol-male
,
.icon-target
,
.icon-credit-card
,
.icon-paypal
,
.icon-social-tumblr
,
.icon-social-twitter
,
.icon-social-facebook
,
.icon-social-instagram
,
.icon-social-linkedin
,
.icon-social-pinterest
,
.icon-social-github
,
.icon-social-gplus
,
.icon-social-reddit
,
.icon-social-skype
,
.icon-social-dribbble
,
.icon-social-behance
,
.icon-social-foursqare
,
.icon-social-soundcloud
,
.icon-social-spotify
,
.icon-social-stumbleupon
,
.icon-social-youtube
,
.icon-social-dropbox
{
font-family
:
'simple-line-icons'
;
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
;
}
.icon-user
:before
{
content
:
"\e005"
;
}
.icon-people
:before
{
content
:
"\e001"
;
}
.icon-user-female
:before
{
content
:
"\e000"
;
}
.icon-user-follow
:before
{
content
:
"\e002"
;
}
.icon-user-following
:before
{
content
:
"\e003"
;
}
.icon-user-unfollow
:before
{
content
:
"\e004"
;
}
.icon-login
:before
{
content
:
"\e066"
;
}
.icon-logout
:before
{
content
:
"\e065"
;
}
.icon-emotsmile
:before
{
content
:
"\e021"
;
}
.icon-phone
:before
{
content
:
"\e600"
;
}
.icon-call-end
:before
{
content
:
"\e048"
;
}
.icon-call-in
:before
{
content
:
"\e047"
;
}
.icon-call-out
:before
{
content
:
"\e046"
;
}
.icon-map
:before
{
content
:
"\e033"
;
}
.icon-location-pin
:before
{
content
:
"\e096"
;
}
.icon-direction
:before
{
content
:
"\e042"
;
}
.icon-directions
:before
{
content
:
"\e041"
;
}
.icon-compass
:before
{
content
:
"\e045"
;
}
.icon-layers
:before
{
content
:
"\e034"
;
}
.icon-menu
:before
{
content
:
"\e601"
;
}
.icon-list
:before
{
content
:
"\e067"
;
}
.icon-options-vertical
:before
{
content
:
"\e602"
;
}
.icon-options
:before
{
content
:
"\e603"
;
}
.icon-arrow-down
:before
{
content
:
"\e604"
;
}
.icon-arrow-left
:before
{
content
:
"\e605"
;
}
.icon-arrow-right
:before
{
content
:
"\e606"
;
}
.icon-arrow-up
:before
{
content
:
"\e607"
;
}
.icon-arrow-up-circle
:before
{
content
:
"\e078"
;
}
.icon-arrow-left-circle
:before
{
content
:
"\e07a"
;
}
.icon-arrow-right-circle
:before
{
content
:
"\e079"
;
}
.icon-arrow-down-circle
:before
{
content
:
"\e07b"
;
}
.icon-check
:before
{
content
:
"\e080"
;
}
.icon-clock
:before
{
content
:
"\e081"
;
}
.icon-plus
:before
{
content
:
"\e095"
;
}
.icon-close
:before
{
content
:
"\e082"
;
}
.icon-trophy
:before
{
content
:
"\e006"
;
}
.icon-screen-smartphone
:before
{
content
:
"\e010"
;
}
.icon-screen-desktop
:before
{
content
:
"\e011"
;
}
.icon-plane
:before
{
content
:
"\e012"
;
}
.icon-notebook
:before
{
content
:
"\e013"
;
}
.icon-mustache
:before
{
content
:
"\e014"
;
}
.icon-mouse
:before
{
content
:
"\e015"
;
}
.icon-magnet
:before
{
content
:
"\e016"
;
}
.icon-energy
:before
{
content
:
"\e020"
;
}
.icon-disc
:before
{
content
:
"\e022"
;
}
.icon-cursor
:before
{
content
:
"\e06e"
;
}
.icon-cursor-move
:before
{
content
:
"\e023"
;
}
.icon-crop
:before
{
content
:
"\e024"
;
}
.icon-chemistry
:before
{
content
:
"\e026"
;
}
.icon-speedometer
:before
{
content
:
"\e007"
;
}
.icon-shield
:before
{
content
:
"\e00e"
;
}
.icon-screen-tablet
:before
{
content
:
"\e00f"
;
}
.icon-magic-wand
:before
{
content
:
"\e017"
;
}
.icon-hourglass
:before
{
content
:
"\e018"
;
}
.icon-graduation
:before
{
content
:
"\e019"
;
}
.icon-ghost
:before
{
content
:
"\e01a"
;
}
.icon-game-controller
:before
{
content
:
"\e01b"
;
}
.icon-fire
:before
{
content
:
"\e01c"
;
}
.icon-eyeglass
:before
{
content
:
"\e01d"
;
}
.icon-envelope-open
:before
{
content
:
"\e01e"
;
}
.icon-envelope-letter
:before
{
content
:
"\e01f"
;
}
.icon-bell
:before
{
content
:
"\e027"
;
}
.icon-badge
:before
{
content
:
"\e028"
;
}
.icon-anchor
:before
{
content
:
"\e029"
;
}
.icon-wallet
:before
{
content
:
"\e02a"
;
}
.icon-vector
:before
{
content
:
"\e02b"
;
}
.icon-speech
:before
{
content
:
"\e02c"
;
}
.icon-puzzle
:before
{
content
:
"\e02d"
;
}
.icon-printer
:before
{
content
:
"\e02e"
;
}
.icon-present
:before
{
content
:
"\e02f"
;
}
.icon-playlist
:before
{
content
:
"\e030"
;
}
.icon-pin
:before
{
content
:
"\e031"
;
}
.icon-picture
:before
{
content
:
"\e032"
;
}
.icon-handbag
:before
{
content
:
"\e035"
;
}
.icon-globe-alt
:before
{
content
:
"\e036"
;
}
.icon-globe
:before
{
content
:
"\e037"
;
}
.icon-folder-alt
:before
{
content
:
"\e039"
;
}
.icon-folder
:before
{
content
:
"\e089"
;
}
.icon-film
:before
{
content
:
"\e03a"
;
}
.icon-feed
:before
{
content
:
"\e03b"
;
}
.icon-drop
:before
{
content
:
"\e03e"
;
}
.icon-drawar
:before
{
content
:
"\e03f"
;
}
.icon-docs
:before
{
content
:
"\e040"
;
}
.icon-doc
:before
{
content
:
"\e085"
;
}
.icon-diamond
:before
{
content
:
"\e043"
;
}
.icon-cup
:before
{
content
:
"\e044"
;
}
.icon-calculator
:before
{
content
:
"\e049"
;
}
.icon-bubbles
:before
{
content
:
"\e04a"
;
}
.icon-briefcase
:before
{
content
:
"\e04b"
;
}
.icon-book-open
:before
{
content
:
"\e04c"
;
}
.icon-basket-loaded
:before
{
content
:
"\e04d"
;
}
.icon-basket
:before
{
content
:
"\e04e"
;
}
.icon-bag
:before
{
content
:
"\e04f"
;
}
.icon-action-undo
:before
{
content
:
"\e050"
;
}
.icon-action-redo
:before
{
content
:
"\e051"
;
}
.icon-wrench
:before
{
content
:
"\e052"
;
}
.icon-umbrella
:before
{
content
:
"\e053"
;
}
.icon-trash
:before
{
content
:
"\e054"
;
}
.icon-tag
:before
{
content
:
"\e055"
;
}
.icon-support
:before
{
content
:
"\e056"
;
}
.icon-frame
:before
{
content
:
"\e038"
;
}
.icon-size-fullscreen
:before
{
content
:
"\e057"
;
}
.icon-size-actual
:before
{
content
:
"\e058"
;
}
.icon-shuffle
:before
{
content
:
"\e059"
;
}
.icon-share-alt
:before
{
content
:
"\e05a"
;
}
.icon-share
:before
{
content
:
"\e05b"
;
}
.icon-rocket
:before
{
content
:
"\e05c"
;
}
.icon-question
:before
{
content
:
"\e05d"
;
}
.icon-pie-chart
:before
{
content
:
"\e05e"
;
}
.icon-pencil
:before
{
content
:
"\e05f"
;
}
.icon-note
:before
{
content
:
"\e060"
;
}
.icon-loop
:before
{
content
:
"\e064"
;
}
.icon-home
:before
{
content
:
"\e069"
;
}
.icon-grid
:before
{
content
:
"\e06a"
;
}
.icon-graph
:before
{
content
:
"\e06b"
;
}
.icon-microphone
:before
{
content
:
"\e063"
;
}
.icon-music-tone-alt
:before
{
content
:
"\e061"
;
}
.icon-music-tone
:before
{
content
:
"\e062"
;
}
.icon-earphones-alt
:before
{
content
:
"\e03c"
;
}
.icon-earphones
:before
{
content
:
"\e03d"
;
}
.icon-equalizer
:before
{
content
:
"\e06c"
;
}
.icon-like
:before
{
content
:
"\e068"
;
}
.icon-dislike
:before
{
content
:
"\e06d"
;
}
.icon-control-start
:before
{
content
:
"\e06f"
;
}
.icon-control-rewind
:before
{
content
:
"\e070"
;
}
.icon-control-play
:before
{
content
:
"\e071"
;
}
.icon-control-pause
:before
{
content
:
"\e072"
;
}
.icon-control-forward
:before
{
content
:
"\e073"
;
}
.icon-control-end
:before
{
content
:
"\e074"
;
}
.icon-volume-1
:before
{
content
:
"\e09f"
;
}
.icon-volume-2
:before
{
content
:
"\e0a0"
;
}
.icon-volume-off
:before
{
content
:
"\e0a1"
;
}
.icon-calendar
:before
{
content
:
"\e075"
;
}
.icon-bulb
:before
{
content
:
"\e076"
;
}
.icon-chart
:before
{
content
:
"\e077"
;
}
.icon-ban
:before
{
content
:
"\e07c"
;
}
.icon-bubble
:before
{
content
:
"\e07d"
;
}
.icon-camrecorder
:before
{
content
:
"\e07e"
;
}
.icon-camera
:before
{
content
:
"\e07f"
;
}
.icon-cloud-download
:before
{
content
:
"\e083"
;
}
.icon-cloud-upload
:before
{
content
:
"\e084"
;
}
.icon-envelope
:before
{
content
:
"\e086"
;
}
.icon-eye
:before
{
content
:
"\e087"
;
}
.icon-flag
:before
{
content
:
"\e088"
;
}
.icon-heart
:before
{
content
:
"\e08a"
;
}
.icon-info
:before
{
content
:
"\e08b"
;
}
.icon-key
:before
{
content
:
"\e08c"
;
}
.icon-link
:before
{
content
:
"\e08d"
;
}
.icon-lock
:before
{
content
:
"\e08e"
;
}
.icon-lock-open
:before
{
content
:
"\e08f"
;
}
.icon-magnifier
:before
{
content
:
"\e090"
;
}
.icon-magnifier-add
:before
{
content
:
"\e091"
;
}
.icon-magnifier-remove
:before
{
content
:
"\e092"
;
}
.icon-paper-clip
:before
{
content
:
"\e093"
;
}
.icon-paper-plane
:before
{
content
:
"\e094"
;
}
.icon-power
:before
{
content
:
"\e097"
;
}
.icon-refresh
:before
{
content
:
"\e098"
;
}
.icon-reload
:before
{
content
:
"\e099"
;
}
.icon-settings
:before
{
content
:
"\e09a"
;
}
.icon-star
:before
{
content
:
"\e09b"
;
}
.icon-symble-female
:before
{
content
:
"\e09c"
;
}
.icon-symbol-male
:before
{
content
:
"\e09d"
;
}
.icon-target
:before
{
content
:
"\e09e"
;
}
.icon-credit-card
:before
{
content
:
"\e025"
;
}
.icon-paypal
:before
{
content
:
"\e608"
;
}
.icon-social-tumblr
:before
{
content
:
"\e00a"
;
}
.icon-social-twitter
:before
{
content
:
"\e009"
;
}
.icon-social-facebook
:before
{
content
:
"\e00b"
;
}
.icon-social-instagram
:before
{
content
:
"\e609"
;
}
.icon-social-linkedin
:before
{
content
:
"\e60a"
;
}
.icon-social-pinterest
:before
{
content
:
"\e60b"
;
}
.icon-social-github
:before
{
content
:
"\e60c"
;
}
.icon-social-gplus
:before
{
content
:
"\e60d"
;
}
.icon-social-reddit
:before
{
content
:
"\e60e"
;
}
.icon-social-skype
:before
{
content
:
"\e60f"
;
}
.icon-social-dribbble
:before
{
content
:
"\e00d"
;
}
.icon-social-behance
:before
{
content
:
"\e610"
;
}
.icon-social-foursqare
:before
{
content
:
"\e611"
;
}
.icon-social-soundcloud
:before
{
content
:
"\e612"
;
}
.icon-social-spotify
:before
{
content
:
"\e613"
;
}
.icon-social-stumbleupon
:before
{
content
:
"\e614"
;
}
.icon-social-youtube
:before
{
content
:
"\e008"
;
}
.icon-social-dropbox
:before
{
content
:
"\e00c"
;
}
src/main/resources/static/css/style.css
deleted
100644 → 0
View file @
19a2655c
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/main/resources/static/css/supersized.css
deleted
100644 → 0
View file @
19a2655c
*
{
margin
:
0
;
padding
:
0
;
}
body
{
background
:
#111
;
height
:
100%
;
}
img
{
border
:
none
;
}
#supersized-loader
{
position
:
absolute
;
top
:
50%
;
left
:
50%
;
z-index
:
0
;
width
:
60px
;
height
:
60px
;
margin
:
-30px
0
0
-30px
;
text-indent
:
-999em
;
background
:
url(/img/backgrounds/progress.gif)
no-repeat
center
center
;}
#supersized
{
display
:
block
;
position
:
fixed
;
left
:
0
;
top
:
0
;
overflow
:
hidden
;
z-index
:
-999
;
height
:
100%
;
width
:
100%
;
}
#supersized
img
{
width
:
auto
;
height
:
auto
;
position
:
relative
;
display
:
none
;
outline
:
none
;
border
:
none
;
}
#supersized
.speed
img
{
-ms-interpolation-mode
:
nearest-neighbor
;
image-rendering
:
-moz-crisp-edges
;
}
/*Speed*/
#supersized
.quality
img
{
-ms-interpolation-mode
:
bicubic
;
image-rendering
:
optimizeQuality
;
}
/*Quality*/
#supersized
li
{
display
:
block
;
list-style
:
none
;
z-index
:
-30
;
position
:
fixed
;
overflow
:
hidden
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
;
background
:
#111
;
}
#supersized
a
{
width
:
100%
;
height
:
100%
;
display
:
block
;
}
#supersized
li
.prevslide
{
z-index
:
-20
;
}
#supersized
li
.activeslide
{
z-index
:
-10
;
}
#supersized
li
.image-loading
{
background
:
#111
url(/img/backgrounds/progress.gif)
no-repeat
center
center
;
width
:
100%
;
height
:
100%
;
}
#supersized
li
.image-loading
img
{
visibility
:
hidden
;
}
#supersized
li
.prevslide
img
,
#supersized
li
.activeslide
img
{
display
:
inline
;
}
#supersized
img
{
max-width
:
none
!important
}
src/main/resources/static/js/canvasutil.js
deleted
100644 → 0
View file @
19a2655c
class
DrawRectangle
{
constructor
(
id
,
options
){
this
.
canvas
=
document
.
getElementById
(
id
);
//canvas标签
this
.
ctx
=
this
.
canvas
.
getContext
(
'
2d
'
);
this
.
currentR
=
null
;
//单前点击的矩形框
this
.
startX
=
0
;
//开始X坐标
this
.
startY
=
0
;
//开始Y坐标
this
.
endX
=
0
;
// 结束X坐标
this
.
endY
=
0
;
// 结束Y坐标
this
.
layers
=
options
&&
options
.
layers
||
[];
//图层
this
.
optype
=
0
;
//op操作类型 0 无操作 1 画矩形框 2 拖动矩形框
this
.
scale
=
1
;
//放大倍数
this
.
scaleStep
=
1.05
;
//
this
.
flag
=
false
;
//是否点击鼠标的标志
this
.
type
=
0
;
//鼠标移动类型
this
.
topDistance
=
0
;
//
this
.
leftDistance
=
0
;
//
this
.
ratew
=
1
;
this
.
rateh
=
1
;
this
.
config
=
{
width
:
600
,
height
:
400
,
dashedColor
:
'
red
'
,
//虚线颜色
solidColor
:
'
red
'
,
//实线颜色
src
:
null
,
//图片的路径
}
if
(
options
)
{
for
(
const
key
in
options
)
{
this
.
config
[
key
]
=
options
[
key
]
}
}
this
.
setImageBackground
(
this
.
config
.
src
);
this
.
canvas
.
onmouseleave
=
()
=>
{
this
.
canvas
.
onmousedown
=
null
;
this
.
canvas
.
onmousemove
=
null
;
this
.
canvas
.
onmouseup
=
null
;
}
this
.
canvas
.
onmouseenter
=
()
=>
{
this
.
canvas
.
onmousedown
=
this
.
mousedown
.
bind
(
this
);
this
.
canvas
.
onmousemove
=
this
.
mousemove
.
bind
(
this
);
document
.
onmouseup
=
this
.
mouseup
.
bind
(
this
);
}
}
init
(
cvw
,
cvh
,
imgw
,
imgh
){
var
item
=
this
.
layers
[
1
];
this
.
ratew
=
cvw
/
imgw
;
this
.
rateh
=
cvh
/
imgh
;
this
.
ctx
.
beginPath
();
this
.
startX
=
(
item
.
x1
)
*
this
.
ratew
;
this
.
startY
=
(
item
.
y1
)
*
this
.
rateh
;
this
.
endX
=
(
item
.
x1
)
*
this
.
ratew
+
(
item
.
width
)
*
this
.
ratew
;
this
.
endY
=
(
item
.
y1
)
*
this
.
ratew
+
(
item
.
height
)
*
this
.
rateh
;
this
.
ctx
.
rect
(
this
.
startX
,
this
.
startY
,
(
item
.
width
)
*
this
.
ratew
,
(
item
.
height
)
*
this
.
rateh
);
// this.ctx.rect(item.x1, item.y1, item.width, item.height);
this
.
ctx
.
strokeStyle
=
item
.
strokeStyle
;
this
.
layers
.
splice
(
0
,
1
,
this
.
fixPosition
({
x1
:
Math
.
ceil
(
this
.
startX
),
y1
:
Math
.
ceil
(
this
.
startY
),
x2
:
Math
.
ceil
(
this
.
endX
),
y2
:
Math
.
ceil
(
this
.
endY
),
strokeStyle
:
this
.
config
.
solidColor
,
type
:
this
.
type
}));
console
.
log
(
`item`
,
item
)
this
.
ctx
.
stroke
();
console
.
log
(
`init:`
,
this
.
layers
);
}
//设置图片为canvas的背景
setImageBackground
(
src
){
const
img
=
new
Image
();
img
.
src
=
src
;
img
.
onload
=
()
=>
{
let
actImgW
=
img
.
width
,
actImgH
=
img
.
height
,
imgW
=
actImgW
,
imgH
=
actImgH
,
rate
=
1
,
left
=
0
,
top
=
0
,
canvasW
=
600
,
canvasH
=
400
;
//因为canvas画布的宽高固定,所以通过判断图片的宽高来进行缩放处理
if
(
actImgW
>
canvasW
||
actImgH
>
canvasH
)
{
if
(
actImgW
/
actImgH
>=
canvasW
/
canvasH
)
{
imgW
=
canvasW
;
rate
=
actImgW
/
canvasW
;
imgH
=
actImgH
/
rate
;
top
=
(
canvasH
-
imgH
)
/
2
;
}
else
{
imgH
=
canvasH
;
rate
=
actImgH
/
canvasH
;
imgW
=
actImgW
/
rate
;
left
=
(
canvasW
-
imgW
)
/
2
;
}
}
else
{
left
=
(
canvasW
-
imgW
)
/
2
;
top
=
(
canvasH
-
imgH
)
/
2
;
}
//this.ctx.drawImage(img, left, top, imgW, imgH);
//if (img.labelVos)
//drawRect(this.ctx, img, left, top, rate);
const
_this
=
this
;
//img.onload = ()=> {
_this
.
canvas
.
width
=
imgW
;
_this
.
canvas
.
height
=
imgH
;
_this
.
config
.
width
=
actImgW
;
_this
.
config
.
height
=
actImgH
;
_this
.
canvas
.
style
.
backgroundImage
=
"
url(
"
+
img
.
src
+
"
)
"
;
_this
.
canvas
.
style
.
backgroundSize
=
`
${
imgW
}
px
${
imgH
}
px`
;
_this
.
init
(
imgW
,
imgH
,
actImgW
,
actImgH
);
// }
}
}
//左侧拉伸展
resizeLeft
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
w-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
3
;
}
if
(
this
.
flag
&&
this
.
optype
==
3
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x1
=
this
.
endX
;
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
}
}
//上边框拉伸
resizeTop
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
s-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
4
;
}
if
(
this
.
flag
&&
this
.
optype
==
4
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
y1
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
;
}
}
resizeWidth
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
w-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
5
;
}
if
(
this
.
flag
&&
this
.
optype
==
5
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x2
=
this
.
endX
;
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
}
}
resizeHeight
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
s-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
6
;
}
if
(
this
.
flag
&&
this
.
optype
==
6
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
y2
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
;
}
}
resizeLT
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
se-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
7
;
}
if
(
this
.
flag
&&
this
.
optype
==
7
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x1
=
this
.
endX
;
this
.
currentR
.
y1
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
;
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
;
}
}
resizeWH
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
se-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
8
;
}
if
(
this
.
flag
&&
this
.
optype
==
8
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x2
=
this
.
endX
;
this
.
currentR
.
y2
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
;
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
;
}
}
resizeLH
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
ne-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
9
;
}
if
(
this
.
flag
&&
this
.
optype
==
9
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x1
=
this
.
endX
;
this
.
currentR
.
y2
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
;
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
;
}
}
resizeWT
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
ne-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
10
;
}
if
(
this
.
flag
&&
this
.
optype
==
10
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x2
=
this
.
endX
;
this
.
currentR
.
y1
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
}
}
reshow
(
x
,
y
,
changesmall
)
{
let
allNotIn
=
1
;
let
item
=
this
.
layers
[
0
];
this
.
ctx
.
beginPath
();
console
.
log
(
item
.
x1
);
this
.
ctx
.
rect
(
item
.
x1
,
item
.
y1
,
item
.
width
,
item
.
height
);
this
.
ctx
.
strokeStyle
=
item
.
strokeStyle
;
if
(
this
.
ctx
.
isPointInPath
(
x
*
this
.
scale
,
y
*
this
.
scale
))
{
this
.
render
(
item
);
allNotIn
=
0
;
}
this
.
ctx
.
stroke
();
if
(
this
.
flag
&&
allNotIn
&&
this
.
optype
<
3
)
{
this
.
optype
=
1
;
}
}
render
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
move
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
2
;
}
if
(
this
.
flag
&&
this
.
optype
==
2
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x2
+=
this
.
endX
-
this
.
leftDistance
-
this
.
currentR
.
x1
;
this
.
currentR
.
x1
+=
this
.
endX
-
this
.
leftDistance
-
this
.
currentR
.
x1
;
this
.
currentR
.
y2
+=
this
.
endY
-
this
.
topDistance
-
this
.
currentR
.
y1
;
this
.
currentR
.
y1
+=
this
.
endY
-
this
.
topDistance
-
this
.
currentR
.
y1
;
}
}
isPointInRetc
(
x
,
y
)
{
let
len
=
this
.
layers
.
length
;
for
(
let
i
=
0
;
i
<
len
;
i
++
)
{
if
(
this
.
layers
[
i
].
x1
<
x
&&
x
<
this
.
layers
[
i
].
x2
&&
this
.
layers
[
i
].
y1
<
y
&&
y
<
this
.
layers
[
i
].
y2
)
{
return
this
.
layers
[
i
];
}
}
}
fixPosition
(
position
)
{
if
(
position
.
x1
>
position
.
x2
)
{
let
x
=
position
.
x1
;
position
.
x1
=
position
.
x2
;
position
.
x2
=
x
;
}
if
(
position
.
y1
>
position
.
y2
)
{
let
y
=
position
.
y1
;
position
.
y1
=
position
.
y2
;
position
.
y2
=
y
;
}
position
.
width
=
position
.
x2
-
position
.
x1
position
.
height
=
position
.
y2
-
position
.
y1
return
position
}
mousedown
(
e
){
if
(
$
(
"
#changewidthnot
"
).
val
()
==
"
1
"
)
{
this
.
startX
=
(
e
.
pageX
-
this
.
canvas
.
offsetLeft
)
/
this
.
scale
;
this
.
startY
=
(
e
.
pageY
-
this
.
canvas
.
offsetTop
)
/
this
.
scale
;
this
.
currentR
=
this
.
isPointInRetc
(
this
.
startX
,
this
.
startY
);
if
(
this
.
currentR
)
{
this
.
leftDistance
=
this
.
startX
-
this
.
currentR
.
x1
;
this
.
topDistance
=
this
.
startY
-
this
.
currentR
.
y1
;
}
this
.
ctx
.
strokeRect
(
this
.
endX
,
this
.
endY
,
0
,
0
);
this
.
ctx
.
strokeStyle
=
this
.
config
.
dashedColor
;
this
.
flag
=
1
;
}
}
mousemove
(
e
){
if
(
$
(
"
#changewidthnot
"
).
val
()
==
"
1
"
)
{
this
.
endX
=
(
e
.
pageX
-
this
.
canvas
.
offsetLeft
)
/
this
.
scale
;
this
.
endY
=
(
e
.
pageY
-
this
.
canvas
.
offsetTop
)
/
this
.
scale
;
// console.log(`mousemove`, this.endX, this.endY);
this
.
ctx
.
save
();
this
.
ctx
.
setLineDash
([
5
])
this
.
canvas
.
style
.
cursor
=
"
crosshair
"
;
this
.
ctx
.
clearRect
(
0
,
0
,
this
.
config
.
width
,
this
.
config
.
height
);
if
(
this
.
flag
&&
this
.
optype
==
1
)
{
this
.
ctx
.
strokeRect
(
this
.
startX
,
this
.
startY
,
this
.
endX
-
this
.
startX
,
this
.
endY
-
this
.
startY
);
}
this
.
ctx
.
restore
();
this
.
reshow
(
this
.
endX
,
this
.
endY
,
"
1
"
);
}
}
mouseup
(
e
)
{
if
(
$
(
"
#changewidthnot
"
).
val
()
==
"
1
"
)
{
if
(
this
.
optype
==
1
)
{
this
.
layers
.
splice
(
0
,
1
,
this
.
fixPosition
({
x1
:
this
.
startX
,
y1
:
this
.
startY
,
x2
:
this
.
endX
,
y2
:
this
.
endY
,
strokeStyle
:
this
.
config
.
solidColor
,
type
:
this
.
type
}))
var
ratew
=
this
.
config
.
width
/
this
.
canvas
.
width
;
var
rateh
=
this
.
config
.
height
/
this
.
canvas
.
height
;
this
.
layers
.
splice
(
1
,
1
,
this
.
fixPosition
({
x1
:
Math
.
ceil
(
this
.
startX
*
ratew
),
y1
:
Math
.
ceil
(
this
.
startY
*
rateh
),
x2
:
Math
.
ceil
(
this
.
endX
*
ratew
),
y2
:
Math
.
ceil
(
this
.
endY
*
rateh
),
strokeStyle
:
this
.
config
.
solidColor
,
type
:
this
.
type
}));
}
else
if
(
this
.
optype
>=
3
)
{
this
.
fixPosition
(
this
.
currentR
);
}
this
.
currentR
=
null
;
this
.
flag
=
0
;
this
.
reshow
(
this
.
endX
,
this
.
endY
);
this
.
optype
=
0
;
}
}
}
\ No newline at end of file
src/main/resources/static/js/jquery-1.8.2.min.js
deleted
100644 → 0
View file @
19a2655c
/*! jQuery v1.8.2 jquery.com | jquery.org/license */
(
function
(
a
,
b
){
function
G
(
a
){
var
b
=
F
[
a
]
=
{};
return
p
.
each
(
a
.
split
(
s
),
function
(
a
,
c
){
b
[
c
]
=!
0
}),
b
}
function
J
(
a
,
c
,
d
){
if
(
d
===
b
&&
a
.
nodeType
===
1
){
var
e
=
"
data-
"
+
c
.
replace
(
I
,
"
-$1
"
).
toLowerCase
();
d
=
a
.
getAttribute
(
e
);
if
(
typeof
d
==
"
string
"
){
try
{
d
=
d
===
"
true
"
?
!
0
:
d
===
"
false
"
?
!
1
:
d
===
"
null
"
?
null
:
+
d
+
""
===
d
?
+
d
:
H
.
test
(
d
)?
p
.
parseJSON
(
d
):
d
}
catch
(
f
){}
p
.
data
(
a
,
c
,
d
)}
else
d
=
b
}
return
d
}
function
K
(
a
){
var
b
;
for
(
b
in
a
){
if
(
b
===
"
data
"
&&
p
.
isEmptyObject
(
a
[
b
]))
continue
;
if
(
b
!==
"
toJSON
"
)
return
!
1
}
return
!
0
}
function
ba
(){
return
!
1
}
function
bb
(){
return
!
0
}
function
bh
(
a
){
return
!
a
||!
a
.
parentNode
||
a
.
parentNode
.
nodeType
===
11
}
function
bi
(
a
,
b
){
do
a
=
a
[
b
];
while
(
a
&&
a
.
nodeType
!==
1
);
return
a
}
function
bj
(
a
,
b
,
c
){
b
=
b
||
0
;
if
(
p
.
isFunction
(
b
))
return
p
.
grep
(
a
,
function
(
a
,
d
){
var
e
=!!
b
.
call
(
a
,
d
,
a
);
return
e
===
c
});
if
(
b
.
nodeType
)
return
p
.
grep
(
a
,
function
(
a
,
d
){
return
a
===
b
===
c
});
if
(
typeof
b
==
"
string
"
){
var
d
=
p
.
grep
(
a
,
function
(
a
){
return
a
.
nodeType
===
1
});
if
(
be
.
test
(
b
))
return
p
.
filter
(
b
,
d
,
!
c
);
b
=
p
.
filter
(
b
,
d
)}
return
p
.
grep
(
a
,
function
(
a
,
d
){
return
p
.
inArray
(
a
,
b
)
>=
0
===
c
})}
function
bk
(
a
){
var
b
=
bl
.
split
(
"
|
"
),
c
=
a
.
createDocumentFragment
();
if
(
c
.
createElement
)
while
(
b
.
length
)
c
.
createElement
(
b
.
pop
());
return
c
}
function
bC
(
a
,
b
){
return
a
.
getElementsByTagName
(
b
)[
0
]
||
a
.
appendChild
(
a
.
ownerDocument
.
createElement
(
b
))}
function
bD
(
a
,
b
){
if
(
b
.
nodeType
!==
1
||!
p
.
hasData
(
a
))
return
;
var
c
,
d
,
e
,
f
=
p
.
_data
(
a
),
g
=
p
.
_data
(
b
,
f
),
h
=
f
.
events
;
if
(
h
){
delete
g
.
handle
,
g
.
events
=
{};
for
(
c
in
h
)
for
(
d
=
0
,
e
=
h
[
c
].
length
;
d
<
e
;
d
++
)
p
.
event
.
add
(
b
,
c
,
h
[
c
][
d
])}
g
.
data
&&
(
g
.
data
=
p
.
extend
({},
g
.
data
))}
function
bE
(
a
,
b
){
var
c
;
if
(
b
.
nodeType
!==
1
)
return
;
b
.
clearAttributes
&&
b
.
clearAttributes
(),
b
.
mergeAttributes
&&
b
.
mergeAttributes
(
a
),
c
=
b
.
nodeName
.
toLowerCase
(),
c
===
"
object
"
?(
b
.
parentNode
&&
(
b
.
outerHTML
=
a
.
outerHTML
),
p
.
support
.
html5Clone
&&
a
.
innerHTML
&&!
p
.
trim
(
b
.
innerHTML
)
&&
(
b
.
innerHTML
=
a
.
innerHTML
)):
c
===
"
input
"
&&
bv
.
test
(
a
.
type
)?(
b
.
defaultChecked
=
b
.
checked
=
a
.
checked
,
b
.
value
!==
a
.
value
&&
(
b
.
value
=
a
.
value
)):
c
===
"
option
"
?
b
.
selected
=
a
.
defaultSelected
:
c
===
"
input
"
||
c
===
"
textarea
"
?
b
.
defaultValue
=
a
.
defaultValue
:
c
===
"
script
"
&&
b
.
text
!==
a
.
text
&&
(
b
.
text
=
a
.
text
),
b
.
removeAttribute
(
p
.
expando
)}
function
bF
(
a
){
return
typeof
a
.
getElementsByTagName
!=
"
undefined
"
?
a
.
getElementsByTagName
(
"
*
"
):
typeof
a
.
querySelectorAll
!=
"
undefined
"
?
a
.
querySelectorAll
(
"
*
"
):[]}
function
bG
(
a
){
bv
.
test
(
a
.
type
)
&&
(
a
.
defaultChecked
=
a
.
checked
)}
function
bY
(
a
,
b
){
if
(
b
in
a
)
return
b
;
var
c
=
b
.
charAt
(
0
).
toUpperCase
()
+
b
.
slice
(
1
),
d
=
b
,
e
=
bW
.
length
;
while
(
e
--
){
b
=
bW
[
e
]
+
c
;
if
(
b
in
a
)
return
b
}
return
d
}
function
bZ
(
a
,
b
){
return
a
=
b
||
a
,
p
.
css
(
a
,
"
display
"
)
===
"
none
"
||!
p
.
contains
(
a
.
ownerDocument
,
a
)}
function
b$
(
a
,
b
){
var
c
,
d
,
e
=
[],
f
=
0
,
g
=
a
.
length
;
for
(;
f
<
g
;
f
++
){
c
=
a
[
f
];
if
(
!
c
.
style
)
continue
;
e
[
f
]
=
p
.
_data
(
c
,
"
olddisplay
"
),
b
?(
!
e
[
f
]
&&
c
.
style
.
display
===
"
none
"
&&
(
c
.
style
.
display
=
""
),
c
.
style
.
display
===
""
&&
bZ
(
c
)
&&
(
e
[
f
]
=
p
.
_data
(
c
,
"
olddisplay
"
,
cc
(
c
.
nodeName
)))):(
d
=
bH
(
c
,
"
display
"
),
!
e
[
f
]
&&
d
!==
"
none
"
&&
p
.
_data
(
c
,
"
olddisplay
"
,
d
))}
for
(
f
=
0
;
f
<
g
;
f
++
){
c
=
a
[
f
];
if
(
!
c
.
style
)
continue
;
if
(
!
b
||
c
.
style
.
display
===
"
none
"
||
c
.
style
.
display
===
""
)
c
.
style
.
display
=
b
?
e
[
f
]
||
""
:
"
none
"
}
return
a
}
function
b_
(
a
,
b
,
c
){
var
d
=
bP
.
exec
(
b
);
return
d
?
Math
.
max
(
0
,
d
[
1
]
-
(
c
||
0
))
+
(
d
[
2
]
||
"
px
"
):
b
}
function
ca
(
a
,
b
,
c
,
d
){
var
e
=
c
===
(
d
?
"
border
"
:
"
content
"
)?
4
:
b
===
"
width
"
?
1
:
0
,
f
=
0
;
for
(;
e
<
4
;
e
+=
2
)
c
===
"
margin
"
&&
(
f
+=
p
.
css
(
a
,
c
+
bV
[
e
],
!
0
)),
d
?(
c
===
"
content
"
&&
(
f
-=
parseFloat
(
bH
(
a
,
"
padding
"
+
bV
[
e
]))
||
0
),
c
!==
"
margin
"
&&
(
f
-=
parseFloat
(
bH
(
a
,
"
border
"
+
bV
[
e
]
+
"
Width
"
))
||
0
)):(
f
+=
parseFloat
(
bH
(
a
,
"
padding
"
+
bV
[
e
]))
||
0
,
c
!==
"
padding
"
&&
(
f
+=
parseFloat
(
bH
(
a
,
"
border
"
+
bV
[
e
]
+
"
Width
"
))
||
0
));
return
f
}
function
cb
(
a
,
b
,
c
){
var
d
=
b
===
"
width
"
?
a
.
offsetWidth
:
a
.
offsetHeight
,
e
=!
0
,
f
=
p
.
support
.
boxSizing
&&
p
.
css
(
a
,
"
boxSizing
"
)
===
"
border-box
"
;
if
(
d
<=
0
||
d
==
null
){
d
=
bH
(
a
,
b
);
if
(
d
<
0
||
d
==
null
)
d
=
a
.
style
[
b
];
if
(
bQ
.
test
(
d
))
return
d
;
e
=
f
&&
(
p
.
support
.
boxSizingReliable
||
d
===
a
.
style
[
b
]),
d
=
parseFloat
(
d
)
||
0
}
return
d
+
ca
(
a
,
b
,
c
||
(
f
?
"
border
"
:
"
content
"
),
e
)
+
"
px
"
}
function
cc
(
a
){
if
(
bS
[
a
])
return
bS
[
a
];
var
b
=
p
(
"
<
"
+
a
+
"
>
"
).
appendTo
(
e
.
body
),
c
=
b
.
css
(
"
display
"
);
b
.
remove
();
if
(
c
===
"
none
"
||
c
===
""
){
bI
=
e
.
body
.
appendChild
(
bI
||
p
.
extend
(
e
.
createElement
(
"
iframe
"
),{
frameBorder
:
0
,
width
:
0
,
height
:
0
}));
if
(
!
bJ
||!
bI
.
createElement
)
bJ
=
(
bI
.
contentWindow
||
bI
.
contentDocument
).
document
,
bJ
.
write
(
"
<!doctype html><html><body>
"
),
bJ
.
close
();
b
=
bJ
.
body
.
appendChild
(
bJ
.
createElement
(
a
)),
c
=
bH
(
b
,
"
display
"
),
e
.
body
.
removeChild
(
bI
)}
return
bS
[
a
]
=
c
,
c
}
function
ci
(
a
,
b
,
c
,
d
){
var
e
;
if
(
p
.
isArray
(
b
))
p
.
each
(
b
,
function
(
b
,
e
){
c
||
ce
.
test
(
a
)?
d
(
a
,
e
):
ci
(
a
+
"
[
"
+
(
typeof
e
==
"
object
"
?
b
:
""
)
+
"
]
"
,
e
,
c
,
d
)});
else
if
(
!
c
&&
p
.
type
(
b
)
===
"
object
"
)
for
(
e
in
b
)
ci
(
a
+
"
[
"
+
e
+
"
]
"
,
b
[
e
],
c
,
d
);
else
d
(
a
,
b
)}
function
cz
(
a
){
return
function
(
b
,
c
){
typeof
b
!=
"
string
"
&&
(
c
=
b
,
b
=
"
*
"
);
var
d
,
e
,
f
,
g
=
b
.
toLowerCase
().
split
(
s
),
h
=
0
,
i
=
g
.
length
;
if
(
p
.
isFunction
(
c
))
for
(;
h
<
i
;
h
++
)
d
=
g
[
h
],
f
=
/^
\+
/
.
test
(
d
),
f
&&
(
d
=
d
.
substr
(
1
)
||
"
*
"
),
e
=
a
[
d
]
=
a
[
d
]
||
[],
e
[
f
?
"
unshift
"
:
"
push
"
](
c
)}}
function
cA
(
a
,
c
,
d
,
e
,
f
,
g
){
f
=
f
||
c
.
dataTypes
[
0
],
g
=
g
||
{},
g
[
f
]
=!
0
;
var
h
,
i
=
a
[
f
],
j
=
0
,
k
=
i
?
i
.
length
:
0
,
l
=
a
===
cv
;
for
(;
j
<
k
&&
(
l
||!
h
);
j
++
)
h
=
i
[
j
](
c
,
d
,
e
),
typeof
h
==
"
string
"
&&
(
!
l
||
g
[
h
]?
h
=
b
:(
c
.
dataTypes
.
unshift
(
h
),
h
=
cA
(
a
,
c
,
d
,
e
,
h
,
g
)));
return
(
l
||!
h
)
&&!
g
[
"
*
"
]
&&
(
h
=
cA
(
a
,
c
,
d
,
e
,
"
*
"
,
g
)),
h
}
function
cB
(
a
,
c
){
var
d
,
e
,
f
=
p
.
ajaxSettings
.
flatOptions
||
{};
for
(
d
in
c
)
c
[
d
]
!==
b
&&
((
f
[
d
]?
a
:
e
||
(
e
=
{}))[
d
]
=
c
[
d
]);
e
&&
p
.
extend
(
!
0
,
a
,
e
)}
function
cC
(
a
,
c
,
d
){
var
e
,
f
,
g
,
h
,
i
=
a
.
contents
,
j
=
a
.
dataTypes
,
k
=
a
.
responseFields
;
for
(
f
in
k
)
f
in
d
&&
(
c
[
k
[
f
]]
=
d
[
f
]);
while
(
j
[
0
]
===
"
*
"
)
j
.
shift
(),
e
===
b
&&
(
e
=
a
.
mimeType
||
c
.
getResponseHeader
(
"
content-type
"
));
if
(
e
)
for
(
f
in
i
)
if
(
i
[
f
]
&&
i
[
f
].
test
(
e
)){
j
.
unshift
(
f
);
break
}
if
(
j
[
0
]
in
d
)
g
=
j
[
0
];
else
{
for
(
f
in
d
){
if
(
!
j
[
0
]
||
a
.
converters
[
f
+
"
"
+
j
[
0
]]){
g
=
f
;
break
}
h
||
(
h
=
f
)}
g
=
g
||
h
}
if
(
g
)
return
g
!==
j
[
0
]
&&
j
.
unshift
(
g
),
d
[
g
]}
function
cD
(
a
,
b
){
var
c
,
d
,
e
,
f
,
g
=
a
.
dataTypes
.
slice
(),
h
=
g
[
0
],
i
=
{},
j
=
0
;
a
.
dataFilter
&&
(
b
=
a
.
dataFilter
(
b
,
a
.
dataType
));
if
(
g
[
1
])
for
(
c
in
a
.
converters
)
i
[
c
.
toLowerCase
()]
=
a
.
converters
[
c
];
for
(;
e
=
g
[
++
j
];)
if
(
e
!==
"
*
"
){
if
(
h
!==
"
*
"
&&
h
!==
e
){
c
=
i
[
h
+
"
"
+
e
]
||
i
[
"
*
"
+
e
];
if
(
!
c
)
for
(
d
in
i
){
f
=
d
.
split
(
"
"
);
if
(
f
[
1
]
===
e
){
c
=
i
[
h
+
"
"
+
f
[
0
]]
||
i
[
"
*
"
+
f
[
0
]];
if
(
c
){
c
===!
0
?
c
=
i
[
d
]:
i
[
d
]
!==!
0
&&
(
e
=
f
[
0
],
g
.
splice
(
j
--
,
0
,
e
));
break
}}}
if
(
c
!==!
0
)
if
(
c
&&
a
[
"
throws
"
])
b
=
c
(
b
);
else
try
{
b
=
c
(
b
)}
catch
(
k
){
return
{
state
:
"
parsererror
"
,
error
:
c
?
k
:
"
No conversion from
"
+
h
+
"
to
"
+
e
}}}
h
=
e
}
return
{
state
:
"
success
"
,
data
:
b
}}
function
cL
(){
try
{
return
new
a
.
XMLHttpRequest
}
catch
(
b
){}}
function
cM
(){
try
{
return
new
a
.
ActiveXObject
(
"
Microsoft.XMLHTTP
"
)}
catch
(
b
){}}
function
cU
(){
return
setTimeout
(
function
(){
cN
=
b
},
0
),
cN
=
p
.
now
()}
function
cV
(
a
,
b
){
p
.
each
(
b
,
function
(
b
,
c
){
var
d
=
(
cT
[
b
]
||
[]).
concat
(
cT
[
"
*
"
]),
e
=
0
,
f
=
d
.
length
;
for
(;
e
<
f
;
e
++
)
if
(
d
[
e
].
call
(
a
,
b
,
c
))
return
})}
function
cW
(
a
,
b
,
c
){
var
d
,
e
=
0
,
f
=
0
,
g
=
cS
.
length
,
h
=
p
.
Deferred
().
always
(
function
(){
delete
i
.
elem
}),
i
=
function
(){
var
b
=
cN
||
cU
(),
c
=
Math
.
max
(
0
,
j
.
startTime
+
j
.
duration
-
b
),
d
=
1
-
(
c
/
j
.
duration
||
0
),
e
=
0
,
f
=
j
.
tweens
.
length
;
for
(;
e
<
f
;
e
++
)
j
.
tweens
[
e
].
run
(
d
);
return
h
.
notifyWith
(
a
,[
j
,
d
,
c
]),
d
<
1
&&
f
?
c
:(
h
.
resolveWith
(
a
,[
j
]),
!
1
)},
j
=
h
.
promise
({
elem
:
a
,
props
:
p
.
extend
({},
b
),
opts
:
p
.
extend
(
!
0
,{
specialEasing
:{}},
c
),
originalProperties
:
b
,
originalOptions
:
c
,
startTime
:
cN
||
cU
(),
duration
:
c
.
duration
,
tweens
:[],
createTween
:
function
(
b
,
c
,
d
){
var
e
=
p
.
Tween
(
a
,
j
.
opts
,
b
,
c
,
j
.
opts
.
specialEasing
[
b
]
||
j
.
opts
.
easing
);
return
j
.
tweens
.
push
(
e
),
e
},
stop
:
function
(
b
){
var
c
=
0
,
d
=
b
?
j
.
tweens
.
length
:
0
;
for
(;
c
<
d
;
c
++
)
j
.
tweens
[
c
].
run
(
1
);
return
b
?
h
.
resolveWith
(
a
,[
j
,
b
]):
h
.
rejectWith
(
a
,[
j
,
b
]),
this
}}),
k
=
j
.
props
;
cX
(
k
,
j
.
opts
.
specialEasing
);
for
(;
e
<
g
;
e
++
){
d
=
cS
[
e
].
call
(
j
,
a
,
k
,
j
.
opts
);
if
(
d
)
return
d
}
return
cV
(
j
,
k
),
p
.
isFunction
(
j
.
opts
.
start
)
&&
j
.
opts
.
start
.
call
(
a
,
j
),
p
.
fx
.
timer
(
p
.
extend
(
i
,{
anim
:
j
,
queue
:
j
.
opts
.
queue
,
elem
:
a
})),
j
.
progress
(
j
.
opts
.
progress
).
done
(
j
.
opts
.
done
,
j
.
opts
.
complete
).
fail
(
j
.
opts
.
fail
).
always
(
j
.
opts
.
always
)}
function
cX
(
a
,
b
){
var
c
,
d
,
e
,
f
,
g
;
for
(
c
in
a
){
d
=
p
.
camelCase
(
c
),
e
=
b
[
d
],
f
=
a
[
c
],
p
.
isArray
(
f
)
&&
(
e
=
f
[
1
],
f
=
a
[
c
]
=
f
[
0
]),
c
!==
d
&&
(
a
[
d
]
=
f
,
delete
a
[
c
]),
g
=
p
.
cssHooks
[
d
];
if
(
g
&&
"
expand
"
in
g
){
f
=
g
.
expand
(
f
),
delete
a
[
d
];
for
(
c
in
f
)
c
in
a
||
(
a
[
c
]
=
f
[
c
],
b
[
c
]
=
e
)}
else
b
[
d
]
=
e
}}
function
cY
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
,
l
=
this
,
m
=
a
.
style
,
n
=
{},
o
=
[],
q
=
a
.
nodeType
&&
bZ
(
a
);
c
.
queue
||
(
j
=
p
.
_queueHooks
(
a
,
"
fx
"
),
j
.
unqueued
==
null
&&
(
j
.
unqueued
=
0
,
k
=
j
.
empty
.
fire
,
j
.
empty
.
fire
=
function
(){
j
.
unqueued
||
k
()}),
j
.
unqueued
++
,
l
.
always
(
function
(){
l
.
always
(
function
(){
j
.
unqueued
--
,
p
.
queue
(
a
,
"
fx
"
).
length
||
j
.
empty
.
fire
()})})),
a
.
nodeType
===
1
&&
(
"
height
"
in
b
||
"
width
"
in
b
)
&&
(
c
.
overflow
=
[
m
.
overflow
,
m
.
overflowX
,
m
.
overflowY
],
p
.
css
(
a
,
"
display
"
)
===
"
inline
"
&&
p
.
css
(
a
,
"
float
"
)
===
"
none
"
&&
(
!
p
.
support
.
inlineBlockNeedsLayout
||
cc
(
a
.
nodeName
)
===
"
inline
"
?
m
.
display
=
"
inline-block
"
:
m
.
zoom
=
1
)),
c
.
overflow
&&
(
m
.
overflow
=
"
hidden
"
,
p
.
support
.
shrinkWrapBlocks
||
l
.
done
(
function
(){
m
.
overflow
=
c
.
overflow
[
0
],
m
.
overflowX
=
c
.
overflow
[
1
],
m
.
overflowY
=
c
.
overflow
[
2
]}));
for
(
d
in
b
){
f
=
b
[
d
];
if
(
cP
.
exec
(
f
)){
delete
b
[
d
];
if
(
f
===
(
q
?
"
hide
"
:
"
show
"
))
continue
;
o
.
push
(
d
)}}
g
=
o
.
length
;
if
(
g
){
h
=
p
.
_data
(
a
,
"
fxshow
"
)
||
p
.
_data
(
a
,
"
fxshow
"
,{}),
q
?
p
(
a
).
show
():
l
.
done
(
function
(){
p
(
a
).
hide
()}),
l
.
done
(
function
(){
var
b
;
p
.
removeData
(
a
,
"
fxshow
"
,
!
0
);
for
(
b
in
n
)
p
.
style
(
a
,
b
,
n
[
b
])});
for
(
d
=
0
;
d
<
g
;
d
++
)
e
=
o
[
d
],
i
=
l
.
createTween
(
e
,
q
?
h
[
e
]:
0
),
n
[
e
]
=
h
[
e
]
||
p
.
style
(
a
,
e
),
e
in
h
||
(
h
[
e
]
=
i
.
start
,
q
&&
(
i
.
end
=
i
.
start
,
i
.
start
=
e
===
"
width
"
||
e
===
"
height
"
?
1
:
0
))}}
function
cZ
(
a
,
b
,
c
,
d
,
e
){
return
new
cZ
.
prototype
.
init
(
a
,
b
,
c
,
d
,
e
)}
function
c$
(
a
,
b
){
var
c
,
d
=
{
height
:
a
},
e
=
0
;
b
=
b
?
1
:
0
;
for
(;
e
<
4
;
e
+=
2
-
b
)
c
=
bV
[
e
],
d
[
"
margin
"
+
c
]
=
d
[
"
padding
"
+
c
]
=
a
;
return
b
&&
(
d
.
opacity
=
d
.
width
=
a
),
d
}
function
da
(
a
){
return
p
.
isWindow
(
a
)?
a
:
a
.
nodeType
===
9
?
a
.
defaultView
||
a
.
parentWindow
:
!
1
}
var
c
,
d
,
e
=
a
.
document
,
f
=
a
.
location
,
g
=
a
.
navigator
,
h
=
a
.
jQuery
,
i
=
a
.
$
,
j
=
Array
.
prototype
.
push
,
k
=
Array
.
prototype
.
slice
,
l
=
Array
.
prototype
.
indexOf
,
m
=
Object
.
prototype
.
toString
,
n
=
Object
.
prototype
.
hasOwnProperty
,
o
=
String
.
prototype
.
trim
,
p
=
function
(
a
,
b
){
return
new
p
.
fn
.
init
(
a
,
b
,
c
)},
q
=
/
[\-
+
]?(?:\d
*
\.
|
)\d
+
(?:[
eE
][\-
+
]?\d
+|
)
/
.
source
,
r
=
/
\S
/
,
s
=
/
\s
+/
,
t
=
/^
[\s\u
FEFF
\x
A0
]
+|
[\s\u
FEFF
\x
A0
]
+$/g
,
u
=
/^
(?:[^
#<
]
*
(
<
[\w\W]
+>
)[^
>
]
*$|#
([\w\-]
*
)
$
)
/
,
v
=
/^<
(\w
+
)\s
*
\/?
>
(?:
<
\/\1
>|
)
$/
,
w
=
/^
[\]
,:{}
\s]
*$/
,
x
=
/
(?:
^|:|,
)(?:\s
*
\[)
+/g
,
y
=
/
\\(?:[
"
\\\/
bfnrt
]
|u
[\d
a-fA-F
]{4})
/g
,
z
=
/"
[^
"
\\\r\n]
*"|true|false|null|-
?(?:\d\d
*
\.
|
)\d
+
(?:[
eE
][\-
+
]?\d
+|
)
/g
,
A
=
/^-ms-/
,
B
=
/-
([\d
a-z
])
/gi
,
C
=
function
(
a
,
b
){
return
(
b
+
""
).
toUpperCase
()},
D
=
function
(){
e
.
addEventListener
?(
e
.
removeEventListener
(
"
DOMContentLoaded
"
,
D
,
!
1
),
p
.
ready
()):
e
.
readyState
===
"
complete
"
&&
(
e
.
detachEvent
(
"
onreadystatechange
"
,
D
),
p
.
ready
())},
E
=
{};
p
.
fn
=
p
.
prototype
=
{
constructor
:
p
,
init
:
function
(
a
,
c
,
d
){
var
f
,
g
,
h
,
i
;
if
(
!
a
)
return
this
;
if
(
a
.
nodeType
)
return
this
.
context
=
this
[
0
]
=
a
,
this
.
length
=
1
,
this
;
if
(
typeof
a
==
"
string
"
){
a
.
charAt
(
0
)
===
"
<
"
&&
a
.
charAt
(
a
.
length
-
1
)
===
"
>
"
&&
a
.
length
>=
3
?
f
=
[
null
,
a
,
null
]:
f
=
u
.
exec
(
a
);
if
(
f
&&
(
f
[
1
]
||!
c
)){
if
(
f
[
1
])
return
c
=
c
instanceof
p
?
c
[
0
]:
c
,
i
=
c
&&
c
.
nodeType
?
c
.
ownerDocument
||
c
:
e
,
a
=
p
.
parseHTML
(
f
[
1
],
i
,
!
0
),
v
.
test
(
f
[
1
])
&&
p
.
isPlainObject
(
c
)
&&
this
.
attr
.
call
(
a
,
c
,
!
0
),
p
.
merge
(
this
,
a
);
g
=
e
.
getElementById
(
f
[
2
]);
if
(
g
&&
g
.
parentNode
){
if
(
g
.
id
!==
f
[
2
])
return
d
.
find
(
a
);
this
.
length
=
1
,
this
[
0
]
=
g
}
return
this
.
context
=
e
,
this
.
selector
=
a
,
this
}
return
!
c
||
c
.
jquery
?(
c
||
d
).
find
(
a
):
this
.
constructor
(
c
).
find
(
a
)}
return
p
.
isFunction
(
a
)?
d
.
ready
(
a
):(
a
.
selector
!==
b
&&
(
this
.
selector
=
a
.
selector
,
this
.
context
=
a
.
context
),
p
.
makeArray
(
a
,
this
))},
selector
:
""
,
jquery
:
"
1.8.2
"
,
length
:
0
,
size
:
function
(){
return
this
.
length
},
toArray
:
function
(){
return
k
.
call
(
this
)},
get
:
function
(
a
){
return
a
==
null
?
this
.
toArray
():
a
<
0
?
this
[
this
.
length
+
a
]:
this
[
a
]},
pushStack
:
function
(
a
,
b
,
c
){
var
d
=
p
.
merge
(
this
.
constructor
(),
a
);
return
d
.
prevObject
=
this
,
d
.
context
=
this
.
context
,
b
===
"
find
"
?
d
.
selector
=
this
.
selector
+
(
this
.
selector
?
"
"
:
""
)
+
c
:
b
&&
(
d
.
selector
=
this
.
selector
+
"
.
"
+
b
+
"
(
"
+
c
+
"
)
"
),
d
},
each
:
function
(
a
,
b
){
return
p
.
each
(
this
,
a
,
b
)},
ready
:
function
(
a
){
return
p
.
ready
.
promise
().
done
(
a
),
this
},
eq
:
function
(
a
){
return
a
=+
a
,
a
===-
1
?
this
.
slice
(
a
):
this
.
slice
(
a
,
a
+
1
)},
first
:
function
(){
return
this
.
eq
(
0
)},
last
:
function
(){
return
this
.
eq
(
-
1
)},
slice
:
function
(){
return
this
.
pushStack
(
k
.
apply
(
this
,
arguments
),
"
slice
"
,
k
.
call
(
arguments
).
join
(
"
,
"
))},
map
:
function
(
a
){
return
this
.
pushStack
(
p
.
map
(
this
,
function
(
b
,
c
){
return
a
.
call
(
b
,
c
,
b
)}))},
end
:
function
(){
return
this
.
prevObject
||
this
.
constructor
(
null
)},
push
:
j
,
sort
:[].
sort
,
splice
:[].
splice
},
p
.
fn
.
init
.
prototype
=
p
.
fn
,
p
.
extend
=
p
.
fn
.
extend
=
function
(){
var
a
,
c
,
d
,
e
,
f
,
g
,
h
=
arguments
[
0
]
||
{},
i
=
1
,
j
=
arguments
.
length
,
k
=!
1
;
typeof
h
==
"
boolean
"
&&
(
k
=
h
,
h
=
arguments
[
1
]
||
{},
i
=
2
),
typeof
h
!=
"
object
"
&&!
p
.
isFunction
(
h
)
&&
(
h
=
{}),
j
===
i
&&
(
h
=
this
,
--
i
);
for
(;
i
<
j
;
i
++
)
if
((
a
=
arguments
[
i
])
!=
null
)
for
(
c
in
a
){
d
=
h
[
c
],
e
=
a
[
c
];
if
(
h
===
e
)
continue
;
k
&&
e
&&
(
p
.
isPlainObject
(
e
)
||
(
f
=
p
.
isArray
(
e
)))?(
f
?(
f
=!
1
,
g
=
d
&&
p
.
isArray
(
d
)?
d
:[]):
g
=
d
&&
p
.
isPlainObject
(
d
)?
d
:{},
h
[
c
]
=
p
.
extend
(
k
,
g
,
e
)):
e
!==
b
&&
(
h
[
c
]
=
e
)}
return
h
},
p
.
extend
({
noConflict
:
function
(
b
){
return
a
.
$
===
p
&&
(
a
.
$
=
i
),
b
&&
a
.
jQuery
===
p
&&
(
a
.
jQuery
=
h
),
p
},
isReady
:
!
1
,
readyWait
:
1
,
holdReady
:
function
(
a
){
a
?
p
.
readyWait
++
:
p
.
ready
(
!
0
)},
ready
:
function
(
a
){
if
(
a
===!
0
?
--
p
.
readyWait
:
p
.
isReady
)
return
;
if
(
!
e
.
body
)
return
setTimeout
(
p
.
ready
,
1
);
p
.
isReady
=!
0
;
if
(
a
!==!
0
&&--
p
.
readyWait
>
0
)
return
;
d
.
resolveWith
(
e
,[
p
]),
p
.
fn
.
trigger
&&
p
(
e
).
trigger
(
"
ready
"
).
off
(
"
ready
"
)},
isFunction
:
function
(
a
){
return
p
.
type
(
a
)
===
"
function
"
},
isArray
:
Array
.
isArray
||
function
(
a
){
return
p
.
type
(
a
)
===
"
array
"
},
isWindow
:
function
(
a
){
return
a
!=
null
&&
a
==
a
.
window
},
isNumeric
:
function
(
a
){
return
!
isNaN
(
parseFloat
(
a
))
&&
isFinite
(
a
)},
type
:
function
(
a
){
return
a
==
null
?
String
(
a
):
E
[
m
.
call
(
a
)]
||
"
object
"
},
isPlainObject
:
function
(
a
){
if
(
!
a
||
p
.
type
(
a
)
!==
"
object
"
||
a
.
nodeType
||
p
.
isWindow
(
a
))
return
!
1
;
try
{
if
(
a
.
constructor
&&!
n
.
call
(
a
,
"
constructor
"
)
&&!
n
.
call
(
a
.
constructor
.
prototype
,
"
isPrototypeOf
"
))
return
!
1
}
catch
(
c
){
return
!
1
}
var
d
;
for
(
d
in
a
);
return
d
===
b
||
n
.
call
(
a
,
d
)},
isEmptyObject
:
function
(
a
){
var
b
;
for
(
b
in
a
)
return
!
1
;
return
!
0
},
error
:
function
(
a
){
throw
new
Error
(
a
)},
parseHTML
:
function
(
a
,
b
,
c
){
var
d
;
return
!
a
||
typeof
a
!=
"
string
"
?
null
:(
typeof
b
==
"
boolean
"
&&
(
c
=
b
,
b
=
0
),
b
=
b
||
e
,(
d
=
v
.
exec
(
a
))?[
b
.
createElement
(
d
[
1
])]:(
d
=
p
.
buildFragment
([
a
],
b
,
c
?
null
:[]),
p
.
merge
([],(
d
.
cacheable
?
p
.
clone
(
d
.
fragment
):
d
.
fragment
).
childNodes
)))},
parseJSON
:
function
(
b
){
if
(
!
b
||
typeof
b
!=
"
string
"
)
return
null
;
b
=
p
.
trim
(
b
);
if
(
a
.
JSON
&&
a
.
JSON
.
parse
)
return
a
.
JSON
.
parse
(
b
);
if
(
w
.
test
(
b
.
replace
(
y
,
"
@
"
).
replace
(
z
,
"
]
"
).
replace
(
x
,
""
)))
return
(
new
Function
(
"
return
"
+
b
))();
p
.
error
(
"
Invalid JSON:
"
+
b
)},
parseXML
:
function
(
c
){
var
d
,
e
;
if
(
!
c
||
typeof
c
!=
"
string
"
)
return
null
;
try
{
a
.
DOMParser
?(
e
=
new
DOMParser
,
d
=
e
.
parseFromString
(
c
,
"
text/xml
"
)):(
d
=
new
ActiveXObject
(
"
Microsoft.XMLDOM
"
),
d
.
async
=
"
false
"
,
d
.
loadXML
(
c
))}
catch
(
f
){
d
=
b
}
return
(
!
d
||!
d
.
documentElement
||
d
.
getElementsByTagName
(
"
parsererror
"
).
length
)
&&
p
.
error
(
"
Invalid XML:
"
+
c
),
d
},
noop
:
function
(){},
globalEval
:
function
(
b
){
b
&&
r
.
test
(
b
)
&&
(
a
.
execScript
||
function
(
b
){
a
.
eval
.
call
(
a
,
b
)})(
b
)},
camelCase
:
function
(
a
){
return
a
.
replace
(
A
,
"
ms-
"
).
replace
(
B
,
C
)},
nodeName
:
function
(
a
,
b
){
return
a
.
nodeName
&&
a
.
nodeName
.
toLowerCase
()
===
b
.
toLowerCase
()},
each
:
function
(
a
,
c
,
d
){
var
e
,
f
=
0
,
g
=
a
.
length
,
h
=
g
===
b
||
p
.
isFunction
(
a
);
if
(
d
){
if
(
h
){
for
(
e
in
a
)
if
(
c
.
apply
(
a
[
e
],
d
)
===!
1
)
break
}
else
for
(;
f
<
g
;)
if
(
c
.
apply
(
a
[
f
++
],
d
)
===!
1
)
break
}
else
if
(
h
){
for
(
e
in
a
)
if
(
c
.
call
(
a
[
e
],
e
,
a
[
e
])
===!
1
)
break
}
else
for
(;
f
<
g
;)
if
(
c
.
call
(
a
[
f
],
f
,
a
[
f
++
])
===!
1
)
break
;
return
a
},
trim
:
o
&&!
o
.
call
(
"
"
)?
function
(
a
){
return
a
==
null
?
""
:
o
.
call
(
a
)}:
function
(
a
){
return
a
==
null
?
""
:(
a
+
""
).
replace
(
t
,
""
)},
makeArray
:
function
(
a
,
b
){
var
c
,
d
=
b
||
[];
return
a
!=
null
&&
(
c
=
p
.
type
(
a
),
a
.
length
==
null
||
c
===
"
string
"
||
c
===
"
function
"
||
c
===
"
regexp
"
||
p
.
isWindow
(
a
)?
j
.
call
(
d
,
a
):
p
.
merge
(
d
,
a
)),
d
},
inArray
:
function
(
a
,
b
,
c
){
var
d
;
if
(
b
){
if
(
l
)
return
l
.
call
(
b
,
a
,
c
);
d
=
b
.
length
,
c
=
c
?
c
<
0
?
Math
.
max
(
0
,
d
+
c
):
c
:
0
;
for
(;
c
<
d
;
c
++
)
if
(
c
in
b
&&
b
[
c
]
===
a
)
return
c
}
return
-
1
},
merge
:
function
(
a
,
c
){
var
d
=
c
.
length
,
e
=
a
.
length
,
f
=
0
;
if
(
typeof
d
==
"
number
"
)
for
(;
f
<
d
;
f
++
)
a
[
e
++
]
=
c
[
f
];
else
while
(
c
[
f
]
!==
b
)
a
[
e
++
]
=
c
[
f
++
];
return
a
.
length
=
e
,
a
},
grep
:
function
(
a
,
b
,
c
){
var
d
,
e
=
[],
f
=
0
,
g
=
a
.
length
;
c
=!!
c
;
for
(;
f
<
g
;
f
++
)
d
=!!
b
(
a
[
f
],
f
),
c
!==
d
&&
e
.
push
(
a
[
f
]);
return
e
},
map
:
function
(
a
,
c
,
d
){
var
e
,
f
,
g
=
[],
h
=
0
,
i
=
a
.
length
,
j
=
a
instanceof
p
||
i
!==
b
&&
typeof
i
==
"
number
"
&&
(
i
>
0
&&
a
[
0
]
&&
a
[
i
-
1
]
||
i
===
0
||
p
.
isArray
(
a
));
if
(
j
)
for
(;
h
<
i
;
h
++
)
e
=
c
(
a
[
h
],
h
,
d
),
e
!=
null
&&
(
g
[
g
.
length
]
=
e
);
else
for
(
f
in
a
)
e
=
c
(
a
[
f
],
f
,
d
),
e
!=
null
&&
(
g
[
g
.
length
]
=
e
);
return
g
.
concat
.
apply
([],
g
)},
guid
:
1
,
proxy
:
function
(
a
,
c
){
var
d
,
e
,
f
;
return
typeof
c
==
"
string
"
&&
(
d
=
a
[
c
],
c
=
a
,
a
=
d
),
p
.
isFunction
(
a
)?(
e
=
k
.
call
(
arguments
,
2
),
f
=
function
(){
return
a
.
apply
(
c
,
e
.
concat
(
k
.
call
(
arguments
)))},
f
.
guid
=
a
.
guid
=
a
.
guid
||
p
.
guid
++
,
f
):
b
},
access
:
function
(
a
,
c
,
d
,
e
,
f
,
g
,
h
){
var
i
,
j
=
d
==
null
,
k
=
0
,
l
=
a
.
length
;
if
(
d
&&
typeof
d
==
"
object
"
){
for
(
k
in
d
)
p
.
access
(
a
,
c
,
k
,
d
[
k
],
1
,
g
,
e
);
f
=
1
}
else
if
(
e
!==
b
){
i
=
h
===
b
&&
p
.
isFunction
(
e
),
j
&&
(
i
?(
i
=
c
,
c
=
function
(
a
,
b
,
c
){
return
i
.
call
(
p
(
a
),
c
)}):(
c
.
call
(
a
,
e
),
c
=
null
));
if
(
c
)
for
(;
k
<
l
;
k
++
)
c
(
a
[
k
],
d
,
i
?
e
.
call
(
a
[
k
],
k
,
c
(
a
[
k
],
d
)):
e
,
h
);
f
=
1
}
return
f
?
a
:
j
?
c
.
call
(
a
):
l
?
c
(
a
[
0
],
d
):
g
},
now
:
function
(){
return
(
new
Date
).
getTime
()}}),
p
.
ready
.
promise
=
function
(
b
){
if
(
!
d
){
d
=
p
.
Deferred
();
if
(
e
.
readyState
===
"
complete
"
)
setTimeout
(
p
.
ready
,
1
);
else
if
(
e
.
addEventListener
)
e
.
addEventListener
(
"
DOMContentLoaded
"
,
D
,
!
1
),
a
.
addEventListener
(
"
load
"
,
p
.
ready
,
!
1
);
else
{
e
.
attachEvent
(
"
onreadystatechange
"
,
D
),
a
.
attachEvent
(
"
onload
"
,
p
.
ready
);
var
c
=!
1
;
try
{
c
=
a
.
frameElement
==
null
&&
e
.
documentElement
}
catch
(
f
){}
c
&&
c
.
doScroll
&&
function
g
(){
if
(
!
p
.
isReady
){
try
{
c
.
doScroll
(
"
left
"
)}
catch
(
a
){
return
setTimeout
(
g
,
50
)}
p
.
ready
()}}()}}
return
d
.
promise
(
b
)},
p
.
each
(
"
Boolean Number String Function Array Date RegExp Object
"
.
split
(
"
"
),
function
(
a
,
b
){
E
[
"
[object
"
+
b
+
"
]
"
]
=
b
.
toLowerCase
()}),
c
=
p
(
e
);
var
F
=
{};
p
.
Callbacks
=
function
(
a
){
a
=
typeof
a
==
"
string
"
?
F
[
a
]
||
G
(
a
):
p
.
extend
({},
a
);
var
c
,
d
,
e
,
f
,
g
,
h
,
i
=
[],
j
=!
a
.
once
&&
[],
k
=
function
(
b
){
c
=
a
.
memory
&&
b
,
d
=!
0
,
h
=
f
||
0
,
f
=
0
,
g
=
i
.
length
,
e
=!
0
;
for
(;
i
&&
h
<
g
;
h
++
)
if
(
i
[
h
].
apply
(
b
[
0
],
b
[
1
])
===!
1
&&
a
.
stopOnFalse
){
c
=!
1
;
break
}
e
=!
1
,
i
&&
(
j
?
j
.
length
&&
k
(
j
.
shift
()):
c
?
i
=
[]:
l
.
disable
())},
l
=
{
add
:
function
(){
if
(
i
){
var
b
=
i
.
length
;(
function
d
(
b
){
p
.
each
(
b
,
function
(
b
,
c
){
var
e
=
p
.
type
(
c
);
e
===
"
function
"
&&
(
!
a
.
unique
||!
l
.
has
(
c
))?
i
.
push
(
c
):
c
&&
c
.
length
&&
e
!==
"
string
"
&&
d
(
c
)})})(
arguments
),
e
?
g
=
i
.
length
:
c
&&
(
f
=
b
,
k
(
c
))}
return
this
},
remove
:
function
(){
return
i
&&
p
.
each
(
arguments
,
function
(
a
,
b
){
var
c
;
while
((
c
=
p
.
inArray
(
b
,
i
,
c
))
>-
1
)
i
.
splice
(
c
,
1
),
e
&&
(
c
<=
g
&&
g
--
,
c
<=
h
&&
h
--
)}),
this
},
has
:
function
(
a
){
return
p
.
inArray
(
a
,
i
)
>-
1
},
empty
:
function
(){
return
i
=
[],
this
},
disable
:
function
(){
return
i
=
j
=
c
=
b
,
this
},
disabled
:
function
(){
return
!
i
},
lock
:
function
(){
return
j
=
b
,
c
||
l
.
disable
(),
this
},
locked
:
function
(){
return
!
j
},
fireWith
:
function
(
a
,
b
){
return
b
=
b
||
[],
b
=
[
a
,
b
.
slice
?
b
.
slice
():
b
],
i
&&
(
!
d
||
j
)
&&
(
e
?
j
.
push
(
b
):
k
(
b
)),
this
},
fire
:
function
(){
return
l
.
fireWith
(
this
,
arguments
),
this
},
fired
:
function
(){
return
!!
d
}};
return
l
},
p
.
extend
({
Deferred
:
function
(
a
){
var
b
=
[[
"
resolve
"
,
"
done
"
,
p
.
Callbacks
(
"
once memory
"
),
"
resolved
"
],[
"
reject
"
,
"
fail
"
,
p
.
Callbacks
(
"
once memory
"
),
"
rejected
"
],[
"
notify
"
,
"
progress
"
,
p
.
Callbacks
(
"
memory
"
)]],
c
=
"
pending
"
,
d
=
{
state
:
function
(){
return
c
},
always
:
function
(){
return
e
.
done
(
arguments
).
fail
(
arguments
),
this
},
then
:
function
(){
var
a
=
arguments
;
return
p
.
Deferred
(
function
(
c
){
p
.
each
(
b
,
function
(
b
,
d
){
var
f
=
d
[
0
],
g
=
a
[
b
];
e
[
d
[
1
]](
p
.
isFunction
(
g
)?
function
(){
var
a
=
g
.
apply
(
this
,
arguments
);
a
&&
p
.
isFunction
(
a
.
promise
)?
a
.
promise
().
done
(
c
.
resolve
).
fail
(
c
.
reject
).
progress
(
c
.
notify
):
c
[
f
+
"
With
"
](
this
===
e
?
c
:
this
,[
a
])}:
c
[
f
])}),
a
=
null
}).
promise
()},
promise
:
function
(
a
){
return
a
!=
null
?
p
.
extend
(
a
,
d
):
d
}},
e
=
{};
return
d
.
pipe
=
d
.
then
,
p
.
each
(
b
,
function
(
a
,
f
){
var
g
=
f
[
2
],
h
=
f
[
3
];
d
[
f
[
1
]]
=
g
.
add
,
h
&&
g
.
add
(
function
(){
c
=
h
},
b
[
a
^
1
][
2
].
disable
,
b
[
2
][
2
].
lock
),
e
[
f
[
0
]]
=
g
.
fire
,
e
[
f
[
0
]
+
"
With
"
]
=
g
.
fireWith
}),
d
.
promise
(
e
),
a
&&
a
.
call
(
e
,
e
),
e
},
when
:
function
(
a
){
var
b
=
0
,
c
=
k
.
call
(
arguments
),
d
=
c
.
length
,
e
=
d
!==
1
||
a
&&
p
.
isFunction
(
a
.
promise
)?
d
:
0
,
f
=
e
===
1
?
a
:
p
.
Deferred
(),
g
=
function
(
a
,
b
,
c
){
return
function
(
d
){
b
[
a
]
=
this
,
c
[
a
]
=
arguments
.
length
>
1
?
k
.
call
(
arguments
):
d
,
c
===
h
?
f
.
notifyWith
(
b
,
c
):
--
e
||
f
.
resolveWith
(
b
,
c
)}},
h
,
i
,
j
;
if
(
d
>
1
){
h
=
new
Array
(
d
),
i
=
new
Array
(
d
),
j
=
new
Array
(
d
);
for
(;
b
<
d
;
b
++
)
c
[
b
]
&&
p
.
isFunction
(
c
[
b
].
promise
)?
c
[
b
].
promise
().
done
(
g
(
b
,
j
,
c
)).
fail
(
f
.
reject
).
progress
(
g
(
b
,
i
,
h
)):
--
e
}
return
e
||
f
.
resolveWith
(
j
,
c
),
f
.
promise
()}}),
p
.
support
=
function
(){
var
b
,
c
,
d
,
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
=
e
.
createElement
(
"
div
"
);
n
.
setAttribute
(
"
className
"
,
"
t
"
),
n
.
innerHTML
=
"
<link/><table></table><a href='/a'>a</a><input type='checkbox'/>
"
,
c
=
n
.
getElementsByTagName
(
"
*
"
),
d
=
n
.
getElementsByTagName
(
"
a
"
)[
0
],
d
.
style
.
cssText
=
"
top:1px;float:left;opacity:.5
"
;
if
(
!
c
||!
c
.
length
)
return
{};
f
=
e
.
createElement
(
"
select
"
),
g
=
f
.
appendChild
(
e
.
createElement
(
"
option
"
)),
h
=
n
.
getElementsByTagName
(
"
input
"
)[
0
],
b
=
{
leadingWhitespace
:
n
.
firstChild
.
nodeType
===
3
,
tbody
:
!
n
.
getElementsByTagName
(
"
tbody
"
).
length
,
htmlSerialize
:
!!
n
.
getElementsByTagName
(
"
link
"
).
length
,
style
:
/top/
.
test
(
d
.
getAttribute
(
"
style
"
)),
hrefNormalized
:
d
.
getAttribute
(
"
href
"
)
===
"
/a
"
,
opacity
:
/^0.5/
.
test
(
d
.
style
.
opacity
),
cssFloat
:
!!
d
.
style
.
cssFloat
,
checkOn
:
h
.
value
===
"
on
"
,
optSelected
:
g
.
selected
,
getSetAttribute
:
n
.
className
!==
"
t
"
,
enctype
:
!!
e
.
createElement
(
"
form
"
).
enctype
,
html5Clone
:
e
.
createElement
(
"
nav
"
).
cloneNode
(
!
0
).
outerHTML
!==
"
<:nav></:nav>
"
,
boxModel
:
e
.
compatMode
===
"
CSS1Compat
"
,
submitBubbles
:
!
0
,
changeBubbles
:
!
0
,
focusinBubbles
:
!
1
,
deleteExpando
:
!
0
,
noCloneEvent
:
!
0
,
inlineBlockNeedsLayout
:
!
1
,
shrinkWrapBlocks
:
!
1
,
reliableMarginRight
:
!
0
,
boxSizingReliable
:
!
0
,
pixelPosition
:
!
1
},
h
.
checked
=!
0
,
b
.
noCloneChecked
=
h
.
cloneNode
(
!
0
).
checked
,
f
.
disabled
=!
0
,
b
.
optDisabled
=!
g
.
disabled
;
try
{
delete
n
.
test
}
catch
(
o
){
b
.
deleteExpando
=!
1
}
!
n
.
addEventListener
&&
n
.
attachEvent
&&
n
.
fireEvent
&&
(
n
.
attachEvent
(
"
onclick
"
,
m
=
function
(){
b
.
noCloneEvent
=!
1
}),
n
.
cloneNode
(
!
0
).
fireEvent
(
"
onclick
"
),
n
.
detachEvent
(
"
onclick
"
,
m
)),
h
=
e
.
createElement
(
"
input
"
),
h
.
value
=
"
t
"
,
h
.
setAttribute
(
"
type
"
,
"
radio
"
),
b
.
radioValue
=
h
.
value
===
"
t
"
,
h
.
setAttribute
(
"
checked
"
,
"
checked
"
),
h
.
setAttribute
(
"
name
"
,
"
t
"
),
n
.
appendChild
(
h
),
i
=
e
.
createDocumentFragment
(),
i
.
appendChild
(
n
.
lastChild
),
b
.
checkClone
=
i
.
cloneNode
(
!
0
).
cloneNode
(
!
0
).
lastChild
.
checked
,
b
.
appendChecked
=
h
.
checked
,
i
.
removeChild
(
h
),
i
.
appendChild
(
n
);
if
(
n
.
attachEvent
)
for
(
k
in
{
submit
:
!
0
,
change
:
!
0
,
focusin
:
!
0
})
j
=
"
on
"
+
k
,
l
=
j
in
n
,
l
||
(
n
.
setAttribute
(
j
,
"
return;
"
),
l
=
typeof
n
[
j
]
==
"
function
"
),
b
[
k
+
"
Bubbles
"
]
=
l
;
return
p
(
function
(){
var
c
,
d
,
f
,
g
,
h
=
"
padding:0;margin:0;border:0;display:block;overflow:hidden;
"
,
i
=
e
.
getElementsByTagName
(
"
body
"
)[
0
];
if
(
!
i
)
return
;
c
=
e
.
createElement
(
"
div
"
),
c
.
style
.
cssText
=
"
visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px
"
,
i
.
insertBefore
(
c
,
i
.
firstChild
),
d
=
e
.
createElement
(
"
div
"
),
c
.
appendChild
(
d
),
d
.
innerHTML
=
"
<table><tr><td></td><td>t</td></tr></table>
"
,
f
=
d
.
getElementsByTagName
(
"
td
"
),
f
[
0
].
style
.
cssText
=
"
padding:0;margin:0;border:0;display:none
"
,
l
=
f
[
0
].
offsetHeight
===
0
,
f
[
0
].
style
.
display
=
""
,
f
[
1
].
style
.
display
=
"
none
"
,
b
.
reliableHiddenOffsets
=
l
&&
f
[
0
].
offsetHeight
===
0
,
d
.
innerHTML
=
""
,
d
.
style
.
cssText
=
"
box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;
"
,
b
.
boxSizing
=
d
.
offsetWidth
===
4
,
b
.
doesNotIncludeMarginInBodyOffset
=
i
.
offsetTop
!==
1
,
a
.
getComputedStyle
&&
(
b
.
pixelPosition
=
(
a
.
getComputedStyle
(
d
,
null
)
||
{}).
top
!==
"
1%
"
,
b
.
boxSizingReliable
=
(
a
.
getComputedStyle
(
d
,
null
)
||
{
width
:
"
4px
"
}).
width
===
"
4px
"
,
g
=
e
.
createElement
(
"
div
"
),
g
.
style
.
cssText
=
d
.
style
.
cssText
=
h
,
g
.
style
.
marginRight
=
g
.
style
.
width
=
"
0
"
,
d
.
style
.
width
=
"
1px
"
,
d
.
appendChild
(
g
),
b
.
reliableMarginRight
=!
parseFloat
((
a
.
getComputedStyle
(
g
,
null
)
||
{}).
marginRight
)),
typeof
d
.
style
.
zoom
!=
"
undefined
"
&&
(
d
.
innerHTML
=
""
,
d
.
style
.
cssText
=
h
+
"
width:1px;padding:1px;display:inline;zoom:1
"
,
b
.
inlineBlockNeedsLayout
=
d
.
offsetWidth
===
3
,
d
.
style
.
display
=
"
block
"
,
d
.
style
.
overflow
=
"
visible
"
,
d
.
innerHTML
=
"
<div></div>
"
,
d
.
firstChild
.
style
.
width
=
"
5px
"
,
b
.
shrinkWrapBlocks
=
d
.
offsetWidth
!==
3
,
c
.
style
.
zoom
=
1
),
i
.
removeChild
(
c
),
c
=
d
=
f
=
g
=
null
}),
i
.
removeChild
(
n
),
c
=
d
=
f
=
g
=
h
=
i
=
n
=
null
,
b
}();
var
H
=
/
(?:\{[\s\S]
*
\}
|
\[[\s\S]
*
\])
$/
,
I
=
/
([
A-Z
])
/g
;
p
.
extend
({
cache
:{},
deletedIds
:[],
uuid
:
0
,
expando
:
"
jQuery
"
+
(
p
.
fn
.
jquery
+
Math
.
random
()).
replace
(
/
\D
/g
,
""
),
noData
:{
embed
:
!
0
,
object
:
"
clsid:D27CDB6E-AE6D-11cf-96B8-444553540000
"
,
applet
:
!
0
},
hasData
:
function
(
a
){
return
a
=
a
.
nodeType
?
p
.
cache
[
a
[
p
.
expando
]]:
a
[
p
.
expando
],
!!
a
&&!
K
(
a
)},
data
:
function
(
a
,
c
,
d
,
e
){
if
(
!
p
.
acceptData
(
a
))
return
;
var
f
,
g
,
h
=
p
.
expando
,
i
=
typeof
c
==
"
string
"
,
j
=
a
.
nodeType
,
k
=
j
?
p
.
cache
:
a
,
l
=
j
?
a
[
h
]:
a
[
h
]
&&
h
;
if
((
!
l
||!
k
[
l
]
||!
e
&&!
k
[
l
].
data
)
&&
i
&&
d
===
b
)
return
;
l
||
(
j
?
a
[
h
]
=
l
=
p
.
deletedIds
.
pop
()
||
p
.
guid
++
:
l
=
h
),
k
[
l
]
||
(
k
[
l
]
=
{},
j
||
(
k
[
l
].
toJSON
=
p
.
noop
));
if
(
typeof
c
==
"
object
"
||
typeof
c
==
"
function
"
)
e
?
k
[
l
]
=
p
.
extend
(
k
[
l
],
c
):
k
[
l
].
data
=
p
.
extend
(
k
[
l
].
data
,
c
);
return
f
=
k
[
l
],
e
||
(
f
.
data
||
(
f
.
data
=
{}),
f
=
f
.
data
),
d
!==
b
&&
(
f
[
p
.
camelCase
(
c
)]
=
d
),
i
?(
g
=
f
[
c
],
g
==
null
&&
(
g
=
f
[
p
.
camelCase
(
c
)])):
g
=
f
,
g
},
removeData
:
function
(
a
,
b
,
c
){
if
(
!
p
.
acceptData
(
a
))
return
;
var
d
,
e
,
f
,
g
=
a
.
nodeType
,
h
=
g
?
p
.
cache
:
a
,
i
=
g
?
a
[
p
.
expando
]:
p
.
expando
;
if
(
!
h
[
i
])
return
;
if
(
b
){
d
=
c
?
h
[
i
]:
h
[
i
].
data
;
if
(
d
){
p
.
isArray
(
b
)
||
(
b
in
d
?
b
=
[
b
]:(
b
=
p
.
camelCase
(
b
),
b
in
d
?
b
=
[
b
]:
b
=
b
.
split
(
"
"
)));
for
(
e
=
0
,
f
=
b
.
length
;
e
<
f
;
e
++
)
delete
d
[
b
[
e
]];
if
(
!
(
c
?
K
:
p
.
isEmptyObject
)(
d
))
return
}}
if
(
!
c
){
delete
h
[
i
].
data
;
if
(
!
K
(
h
[
i
]))
return
}
g
?
p
.
cleanData
([
a
],
!
0
):
p
.
support
.
deleteExpando
||
h
!=
h
.
window
?
delete
h
[
i
]:
h
[
i
]
=
null
},
_data
:
function
(
a
,
b
,
c
){
return
p
.
data
(
a
,
b
,
c
,
!
0
)},
acceptData
:
function
(
a
){
var
b
=
a
.
nodeName
&&
p
.
noData
[
a
.
nodeName
.
toLowerCase
()];
return
!
b
||
b
!==!
0
&&
a
.
getAttribute
(
"
classid
"
)
===
b
}}),
p
.
fn
.
extend
({
data
:
function
(
a
,
c
){
var
d
,
e
,
f
,
g
,
h
,
i
=
this
[
0
],
j
=
0
,
k
=
null
;
if
(
a
===
b
){
if
(
this
.
length
){
k
=
p
.
data
(
i
);
if
(
i
.
nodeType
===
1
&&!
p
.
_data
(
i
,
"
parsedAttrs
"
)){
f
=
i
.
attributes
;
for
(
h
=
f
.
length
;
j
<
h
;
j
++
)
g
=
f
[
j
].
name
,
g
.
indexOf
(
"
data-
"
)
||
(
g
=
p
.
camelCase
(
g
.
substring
(
5
)),
J
(
i
,
g
,
k
[
g
]));
p
.
_data
(
i
,
"
parsedAttrs
"
,
!
0
)}}
return
k
}
return
typeof
a
==
"
object
"
?
this
.
each
(
function
(){
p
.
data
(
this
,
a
)}):(
d
=
a
.
split
(
"
.
"
,
2
),
d
[
1
]
=
d
[
1
]?
"
.
"
+
d
[
1
]:
""
,
e
=
d
[
1
]
+
"
!
"
,
p
.
access
(
this
,
function
(
c
){
if
(
c
===
b
)
return
k
=
this
.
triggerHandler
(
"
getData
"
+
e
,[
d
[
0
]]),
k
===
b
&&
i
&&
(
k
=
p
.
data
(
i
,
a
),
k
=
J
(
i
,
a
,
k
)),
k
===
b
&&
d
[
1
]?
this
.
data
(
d
[
0
]):
k
;
d
[
1
]
=
c
,
this
.
each
(
function
(){
var
b
=
p
(
this
);
b
.
triggerHandler
(
"
setData
"
+
e
,
d
),
p
.
data
(
this
,
a
,
c
),
b
.
triggerHandler
(
"
changeData
"
+
e
,
d
)})},
null
,
c
,
arguments
.
length
>
1
,
null
,
!
1
))},
removeData
:
function
(
a
){
return
this
.
each
(
function
(){
p
.
removeData
(
this
,
a
)})}}),
p
.
extend
({
queue
:
function
(
a
,
b
,
c
){
var
d
;
if
(
a
)
return
b
=
(
b
||
"
fx
"
)
+
"
queue
"
,
d
=
p
.
_data
(
a
,
b
),
c
&&
(
!
d
||
p
.
isArray
(
c
)?
d
=
p
.
_data
(
a
,
b
,
p
.
makeArray
(
c
)):
d
.
push
(
c
)),
d
||
[]},
dequeue
:
function
(
a
,
b
){
b
=
b
||
"
fx
"
;
var
c
=
p
.
queue
(
a
,
b
),
d
=
c
.
length
,
e
=
c
.
shift
(),
f
=
p
.
_queueHooks
(
a
,
b
),
g
=
function
(){
p
.
dequeue
(
a
,
b
)};
e
===
"
inprogress
"
&&
(
e
=
c
.
shift
(),
d
--
),
e
&&
(
b
===
"
fx
"
&&
c
.
unshift
(
"
inprogress
"
),
delete
f
.
stop
,
e
.
call
(
a
,
g
,
f
)),
!
d
&&
f
&&
f
.
empty
.
fire
()},
_queueHooks
:
function
(
a
,
b
){
var
c
=
b
+
"
queueHooks
"
;
return
p
.
_data
(
a
,
c
)
||
p
.
_data
(
a
,
c
,{
empty
:
p
.
Callbacks
(
"
once memory
"
).
add
(
function
(){
p
.
removeData
(
a
,
b
+
"
queue
"
,
!
0
),
p
.
removeData
(
a
,
c
,
!
0
)})})}}),
p
.
fn
.
extend
({
queue
:
function
(
a
,
c
){
var
d
=
2
;
return
typeof
a
!=
"
string
"
&&
(
c
=
a
,
a
=
"
fx
"
,
d
--
),
arguments
.
length
<
d
?
p
.
queue
(
this
[
0
],
a
):
c
===
b
?
this
:
this
.
each
(
function
(){
var
b
=
p
.
queue
(
this
,
a
,
c
);
p
.
_queueHooks
(
this
,
a
),
a
===
"
fx
"
&&
b
[
0
]
!==
"
inprogress
"
&&
p
.
dequeue
(
this
,
a
)})},
dequeue
:
function
(
a
){
return
this
.
each
(
function
(){
p
.
dequeue
(
this
,
a
)})},
delay
:
function
(
a
,
b
){
return
a
=
p
.
fx
?
p
.
fx
.
speeds
[
a
]
||
a
:
a
,
b
=
b
||
"
fx
"
,
this
.
queue
(
b
,
function
(
b
,
c
){
var
d
=
setTimeout
(
b
,
a
);
c
.
stop
=
function
(){
clearTimeout
(
d
)}})},
clearQueue
:
function
(
a
){
return
this
.
queue
(
a
||
"
fx
"
,[])},
promise
:
function
(
a
,
c
){
var
d
,
e
=
1
,
f
=
p
.
Deferred
(),
g
=
this
,
h
=
this
.
length
,
i
=
function
(){
--
e
||
f
.
resolveWith
(
g
,[
g
])};
typeof
a
!=
"
string
"
&&
(
c
=
a
,
a
=
b
),
a
=
a
||
"
fx
"
;
while
(
h
--
)
d
=
p
.
_data
(
g
[
h
],
a
+
"
queueHooks
"
),
d
&&
d
.
empty
&&
(
e
++
,
d
.
empty
.
add
(
i
));
return
i
(),
f
.
promise
(
c
)}});
var
L
,
M
,
N
,
O
=
/
[\t\r\n]
/g
,
P
=
/
\r
/g
,
Q
=
/^
(?:
button|input
)
$/i
,
R
=
/^
(?:
button|input|object|select|textarea
)
$/i
,
S
=
/^a
(?:
rea|
)
$/i
,
T
=
/^
(?:
autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected
)
$/i
,
U
=
p
.
support
.
getSetAttribute
;
p
.
fn
.
extend
({
attr
:
function
(
a
,
b
){
return
p
.
access
(
this
,
p
.
attr
,
a
,
b
,
arguments
.
length
>
1
)},
removeAttr
:
function
(
a
){
return
this
.
each
(
function
(){
p
.
removeAttr
(
this
,
a
)})},
prop
:
function
(
a
,
b
){
return
p
.
access
(
this
,
p
.
prop
,
a
,
b
,
arguments
.
length
>
1
)},
removeProp
:
function
(
a
){
return
a
=
p
.
propFix
[
a
]
||
a
,
this
.
each
(
function
(){
try
{
this
[
a
]
=
b
,
delete
this
[
a
]}
catch
(
c
){}})},
addClass
:
function
(
a
){
var
b
,
c
,
d
,
e
,
f
,
g
,
h
;
if
(
p
.
isFunction
(
a
))
return
this
.
each
(
function
(
b
){
p
(
this
).
addClass
(
a
.
call
(
this
,
b
,
this
.
className
))});
if
(
a
&&
typeof
a
==
"
string
"
){
b
=
a
.
split
(
s
);
for
(
c
=
0
,
d
=
this
.
length
;
c
<
d
;
c
++
){
e
=
this
[
c
];
if
(
e
.
nodeType
===
1
)
if
(
!
e
.
className
&&
b
.
length
===
1
)
e
.
className
=
a
;
else
{
f
=
"
"
+
e
.
className
+
"
"
;
for
(
g
=
0
,
h
=
b
.
length
;
g
<
h
;
g
++
)
f
.
indexOf
(
"
"
+
b
[
g
]
+
"
"
)
<
0
&&
(
f
+=
b
[
g
]
+
"
"
);
e
.
className
=
p
.
trim
(
f
)}}}
return
this
},
removeClass
:
function
(
a
){
var
c
,
d
,
e
,
f
,
g
,
h
,
i
;
if
(
p
.
isFunction
(
a
))
return
this
.
each
(
function
(
b
){
p
(
this
).
removeClass
(
a
.
call
(
this
,
b
,
this
.
className
))});
if
(
a
&&
typeof
a
==
"
string
"
||
a
===
b
){
c
=
(
a
||
""
).
split
(
s
);
for
(
h
=
0
,
i
=
this
.
length
;
h
<
i
;
h
++
){
e
=
this
[
h
];
if
(
e
.
nodeType
===
1
&&
e
.
className
){
d
=
(
"
"
+
e
.
className
+
"
"
).
replace
(
O
,
"
"
);
for
(
f
=
0
,
g
=
c
.
length
;
f
<
g
;
f
++
)
while
(
d
.
indexOf
(
"
"
+
c
[
f
]
+
"
"
)
>=
0
)
d
=
d
.
replace
(
"
"
+
c
[
f
]
+
"
"
,
"
"
);
e
.
className
=
a
?
p
.
trim
(
d
):
""
}}}
return
this
},
toggleClass
:
function
(
a
,
b
){
var
c
=
typeof
a
,
d
=
typeof
b
==
"
boolean
"
;
return
p
.
isFunction
(
a
)?
this
.
each
(
function
(
c
){
p
(
this
).
toggleClass
(
a
.
call
(
this
,
c
,
this
.
className
,
b
),
b
)}):
this
.
each
(
function
(){
if
(
c
===
"
string
"
){
var
e
,
f
=
0
,
g
=
p
(
this
),
h
=
b
,
i
=
a
.
split
(
s
);
while
(
e
=
i
[
f
++
])
h
=
d
?
h
:
!
g
.
hasClass
(
e
),
g
[
h
?
"
addClass
"
:
"
removeClass
"
](
e
)}
else
if
(
c
===
"
undefined
"
||
c
===
"
boolean
"
)
this
.
className
&&
p
.
_data
(
this
,
"
__className__
"
,
this
.
className
),
this
.
className
=
this
.
className
||
a
===!
1
?
""
:
p
.
_data
(
this
,
"
__className__
"
)
||
""
})},
hasClass
:
function
(
a
){
var
b
=
"
"
+
a
+
"
"
,
c
=
0
,
d
=
this
.
length
;
for
(;
c
<
d
;
c
++
)
if
(
this
[
c
].
nodeType
===
1
&&
(
"
"
+
this
[
c
].
className
+
"
"
).
replace
(
O
,
"
"
).
indexOf
(
b
)
>=
0
)
return
!
0
;
return
!
1
},
val
:
function
(
a
){
var
c
,
d
,
e
,
f
=
this
[
0
];
if
(
!
arguments
.
length
){
if
(
f
)
return
c
=
p
.
valHooks
[
f
.
type
]
||
p
.
valHooks
[
f
.
nodeName
.
toLowerCase
()],
c
&&
"
get
"
in
c
&&
(
d
=
c
.
get
(
f
,
"
value
"
))
!==
b
?
d
:(
d
=
f
.
value
,
typeof
d
==
"
string
"
?
d
.
replace
(
P
,
""
):
d
==
null
?
""
:
d
);
return
}
return
e
=
p
.
isFunction
(
a
),
this
.
each
(
function
(
d
){
var
f
,
g
=
p
(
this
);
if
(
this
.
nodeType
!==
1
)
return
;
e
?
f
=
a
.
call
(
this
,
d
,
g
.
val
()):
f
=
a
,
f
==
null
?
f
=
""
:
typeof
f
==
"
number
"
?
f
+=
""
:
p
.
isArray
(
f
)
&&
(
f
=
p
.
map
(
f
,
function
(
a
){
return
a
==
null
?
""
:
a
+
""
})),
c
=
p
.
valHooks
[
this
.
type
]
||
p
.
valHooks
[
this
.
nodeName
.
toLowerCase
()];
if
(
!
c
||!
(
"
set
"
in
c
)
||
c
.
set
(
this
,
f
,
"
value
"
)
===
b
)
this
.
value
=
f
})}}),
p
.
extend
({
valHooks
:{
option
:{
get
:
function
(
a
){
var
b
=
a
.
attributes
.
value
;
return
!
b
||
b
.
specified
?
a
.
value
:
a
.
text
}},
select
:{
get
:
function
(
a
){
var
b
,
c
,
d
,
e
,
f
=
a
.
selectedIndex
,
g
=
[],
h
=
a
.
options
,
i
=
a
.
type
===
"
select-one
"
;
if
(
f
<
0
)
return
null
;
c
=
i
?
f
:
0
,
d
=
i
?
f
+
1
:
h
.
length
;
for
(;
c
<
d
;
c
++
){
e
=
h
[
c
];
if
(
e
.
selected
&&
(
p
.
support
.
optDisabled
?
!
e
.
disabled
:
e
.
getAttribute
(
"
disabled
"
)
===
null
)
&&
(
!
e
.
parentNode
.
disabled
||!
p
.
nodeName
(
e
.
parentNode
,
"
optgroup
"
))){
b
=
p
(
e
).
val
();
if
(
i
)
return
b
;
g
.
push
(
b
)}}
return
i
&&!
g
.
length
&&
h
.
length
?
p
(
h
[
f
]).
val
():
g
},
set
:
function
(
a
,
b
){
var
c
=
p
.
makeArray
(
b
);
return
p
(
a
).
find
(
"
option
"
).
each
(
function
(){
this
.
selected
=
p
.
inArray
(
p
(
this
).
val
(),
c
)
>=
0
}),
c
.
length
||
(
a
.
selectedIndex
=-
1
),
c
}}},
attrFn
:{},
attr
:
function
(
a
,
c
,
d
,
e
){
var
f
,
g
,
h
,
i
=
a
.
nodeType
;
if
(
!
a
||
i
===
3
||
i
===
8
||
i
===
2
)
return
;
if
(
e
&&
p
.
isFunction
(
p
.
fn
[
c
]))
return
p
(
a
)[
c
](
d
);
if
(
typeof
a
.
getAttribute
==
"
undefined
"
)
return
p
.
prop
(
a
,
c
,
d
);
h
=
i
!==
1
||!
p
.
isXMLDoc
(
a
),
h
&&
(
c
=
c
.
toLowerCase
(),
g
=
p
.
attrHooks
[
c
]
||
(
T
.
test
(
c
)?
M
:
L
));
if
(
d
!==
b
){
if
(
d
===
null
){
p
.
removeAttr
(
a
,
c
);
return
}
return
g
&&
"
set
"
in
g
&&
h
&&
(
f
=
g
.
set
(
a
,
d
,
c
))
!==
b
?
f
:(
a
.
setAttribute
(
c
,
d
+
""
),
d
)}
return
g
&&
"
get
"
in
g
&&
h
&&
(
f
=
g
.
get
(
a
,
c
))
!==
null
?
f
:(
f
=
a
.
getAttribute
(
c
),
f
===
null
?
b
:
f
)},
removeAttr
:
function
(
a
,
b
){
var
c
,
d
,
e
,
f
,
g
=
0
;
if
(
b
&&
a
.
nodeType
===
1
){
d
=
b
.
split
(
s
);
for
(;
g
<
d
.
length
;
g
++
)
e
=
d
[
g
],
e
&&
(
c
=
p
.
propFix
[
e
]
||
e
,
f
=
T
.
test
(
e
),
f
||
p
.
attr
(
a
,
e
,
""
),
a
.
removeAttribute
(
U
?
e
:
c
),
f
&&
c
in
a
&&
(
a
[
c
]
=!
1
))}},
attrHooks
:{
type
:{
set
:
function
(
a
,
b
){
if
(
Q
.
test
(
a
.
nodeName
)
&&
a
.
parentNode
)
p
.
error
(
"
type property can't be changed
"
);
else
if
(
!
p
.
support
.
radioValue
&&
b
===
"
radio
"
&&
p
.
nodeName
(
a
,
"
input
"
)){
var
c
=
a
.
value
;
return
a
.
setAttribute
(
"
type
"
,
b
),
c
&&
(
a
.
value
=
c
),
b
}}},
value
:{
get
:
function
(
a
,
b
){
return
L
&&
p
.
nodeName
(
a
,
"
button
"
)?
L
.
get
(
a
,
b
):
b
in
a
?
a
.
value
:
null
},
set
:
function
(
a
,
b
,
c
){
if
(
L
&&
p
.
nodeName
(
a
,
"
button
"
))
return
L
.
set
(
a
,
b
,
c
);
a
.
value
=
b
}}},
propFix
:{
tabindex
:
"
tabIndex
"
,
readonly
:
"
readOnly
"
,
"
for
"
:
"
htmlFor
"
,
"
class
"
:
"
className
"
,
maxlength
:
"
maxLength
"
,
cellspacing
:
"
cellSpacing
"
,
cellpadding
:
"
cellPadding
"
,
rowspan
:
"
rowSpan
"
,
colspan
:
"
colSpan
"
,
usemap
:
"
useMap
"
,
frameborder
:
"
frameBorder
"
,
contenteditable
:
"
contentEditable
"
},
prop
:
function
(
a
,
c
,
d
){
var
e
,
f
,
g
,
h
=
a
.
nodeType
;
if
(
!
a
||
h
===
3
||
h
===
8
||
h
===
2
)
return
;
return
g
=
h
!==
1
||!
p
.
isXMLDoc
(
a
),
g
&&
(
c
=
p
.
propFix
[
c
]
||
c
,
f
=
p
.
propHooks
[
c
]),
d
!==
b
?
f
&&
"
set
"
in
f
&&
(
e
=
f
.
set
(
a
,
d
,
c
))
!==
b
?
e
:
a
[
c
]
=
d
:
f
&&
"
get
"
in
f
&&
(
e
=
f
.
get
(
a
,
c
))
!==
null
?
e
:
a
[
c
]},
propHooks
:{
tabIndex
:{
get
:
function
(
a
){
var
c
=
a
.
getAttributeNode
(
"
tabindex
"
);
return
c
&&
c
.
specified
?
parseInt
(
c
.
value
,
10
):
R
.
test
(
a
.
nodeName
)
||
S
.
test
(
a
.
nodeName
)
&&
a
.
href
?
0
:
b
}}}}),
M
=
{
get
:
function
(
a
,
c
){
var
d
,
e
=
p
.
prop
(
a
,
c
);
return
e
===!
0
||
typeof
e
!=
"
boolean
"
&&
(
d
=
a
.
getAttributeNode
(
c
))
&&
d
.
nodeValue
!==!
1
?
c
.
toLowerCase
():
b
},
set
:
function
(
a
,
b
,
c
){
var
d
;
return
b
===!
1
?
p
.
removeAttr
(
a
,
c
):(
d
=
p
.
propFix
[
c
]
||
c
,
d
in
a
&&
(
a
[
d
]
=!
0
),
a
.
setAttribute
(
c
,
c
.
toLowerCase
())),
c
}},
U
||
(
N
=
{
name
:
!
0
,
id
:
!
0
,
coords
:
!
0
},
L
=
p
.
valHooks
.
button
=
{
get
:
function
(
a
,
c
){
var
d
;
return
d
=
a
.
getAttributeNode
(
c
),
d
&&
(
N
[
c
]?
d
.
value
!==
""
:
d
.
specified
)?
d
.
value
:
b
},
set
:
function
(
a
,
b
,
c
){
var
d
=
a
.
getAttributeNode
(
c
);
return
d
||
(
d
=
e
.
createAttribute
(
c
),
a
.
setAttributeNode
(
d
)),
d
.
value
=
b
+
""
}},
p
.
each
([
"
width
"
,
"
height
"
],
function
(
a
,
b
){
p
.
attrHooks
[
b
]
=
p
.
extend
(
p
.
attrHooks
[
b
],{
set
:
function
(
a
,
c
){
if
(
c
===
""
)
return
a
.
setAttribute
(
b
,
"
auto
"
),
c
}})}),
p
.
attrHooks
.
contenteditable
=
{
get
:
L
.
get
,
set
:
function
(
a
,
b
,
c
){
b
===
""
&&
(
b
=
"
false
"
),
L
.
set
(
a
,
b
,
c
)}}),
p
.
support
.
hrefNormalized
||
p
.
each
([
"
href
"
,
"
src
"
,
"
width
"
,
"
height
"
],
function
(
a
,
c
){
p
.
attrHooks
[
c
]
=
p
.
extend
(
p
.
attrHooks
[
c
],{
get
:
function
(
a
){
var
d
=
a
.
getAttribute
(
c
,
2
);
return
d
===
null
?
b
:
d
}})}),
p
.
support
.
style
||
(
p
.
attrHooks
.
style
=
{
get
:
function
(
a
){
return
a
.
style
.
cssText
.
toLowerCase
()
||
b
},
set
:
function
(
a
,
b
){
return
a
.
style
.
cssText
=
b
+
""
}}),
p
.
support
.
optSelected
||
(
p
.
propHooks
.
selected
=
p
.
extend
(
p
.
propHooks
.
selected
,{
get
:
function
(
a
){
var
b
=
a
.
parentNode
;
return
b
&&
(
b
.
selectedIndex
,
b
.
parentNode
&&
b
.
parentNode
.
selectedIndex
),
null
}})),
p
.
support
.
enctype
||
(
p
.
propFix
.
enctype
=
"
encoding
"
),
p
.
support
.
checkOn
||
p
.
each
([
"
radio
"
,
"
checkbox
"
],
function
(){
p
.
valHooks
[
this
]
=
{
get
:
function
(
a
){
return
a
.
getAttribute
(
"
value
"
)
===
null
?
"
on
"
:
a
.
value
}}}),
p
.
each
([
"
radio
"
,
"
checkbox
"
],
function
(){
p
.
valHooks
[
this
]
=
p
.
extend
(
p
.
valHooks
[
this
],{
set
:
function
(
a
,
b
){
if
(
p
.
isArray
(
b
))
return
a
.
checked
=
p
.
inArray
(
p
(
a
).
val
(),
b
)
>=
0
}})});
var
V
=
/^
(?:
textarea|input|select
)
$/i
,
W
=
/^
([^\.]
*|
)(?:\.(
.+
)
|
)
$/
,
X
=
/
(?:
^|
\s)
hover
(\.\S
+|
)\b
/
,
Y
=
/^key/
,
Z
=
/^
(?:
mouse|contextmenu
)
|click/
,
$
=
/^
(?:
focusinfocus|focusoutblur
)
$/
,
_
=
function
(
a
){
return
p
.
event
.
special
.
hover
?
a
:
a
.
replace
(
X
,
"
mouseenter$1 mouseleave$1
"
)};
p
.
event
=
{
add
:
function
(
a
,
c
,
d
,
e
,
f
){
var
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
,
q
,
r
;
if
(
a
.
nodeType
===
3
||
a
.
nodeType
===
8
||!
c
||!
d
||!
(
g
=
p
.
_data
(
a
)))
return
;
d
.
handler
&&
(
o
=
d
,
d
=
o
.
handler
,
f
=
o
.
selector
),
d
.
guid
||
(
d
.
guid
=
p
.
guid
++
),
i
=
g
.
events
,
i
||
(
g
.
events
=
i
=
{}),
h
=
g
.
handle
,
h
||
(
g
.
handle
=
h
=
function
(
a
){
return
typeof
p
!=
"
undefined
"
&&
(
!
a
||
p
.
event
.
triggered
!==
a
.
type
)?
p
.
event
.
dispatch
.
apply
(
h
.
elem
,
arguments
):
b
},
h
.
elem
=
a
),
c
=
p
.
trim
(
_
(
c
)).
split
(
"
"
);
for
(
j
=
0
;
j
<
c
.
length
;
j
++
){
k
=
W
.
exec
(
c
[
j
])
||
[],
l
=
k
[
1
],
m
=
(
k
[
2
]
||
""
).
split
(
"
.
"
).
sort
(),
r
=
p
.
event
.
special
[
l
]
||
{},
l
=
(
f
?
r
.
delegateType
:
r
.
bindType
)
||
l
,
r
=
p
.
event
.
special
[
l
]
||
{},
n
=
p
.
extend
({
type
:
l
,
origType
:
k
[
1
],
data
:
e
,
handler
:
d
,
guid
:
d
.
guid
,
selector
:
f
,
needsContext
:
f
&&
p
.
expr
.
match
.
needsContext
.
test
(
f
),
namespace
:
m
.
join
(
"
.
"
)},
o
),
q
=
i
[
l
];
if
(
!
q
){
q
=
i
[
l
]
=
[],
q
.
delegateCount
=
0
;
if
(
!
r
.
setup
||
r
.
setup
.
call
(
a
,
e
,
m
,
h
)
===!
1
)
a
.
addEventListener
?
a
.
addEventListener
(
l
,
h
,
!
1
):
a
.
attachEvent
&&
a
.
attachEvent
(
"
on
"
+
l
,
h
)}
r
.
add
&&
(
r
.
add
.
call
(
a
,
n
),
n
.
handler
.
guid
||
(
n
.
handler
.
guid
=
d
.
guid
)),
f
?
q
.
splice
(
q
.
delegateCount
++
,
0
,
n
):
q
.
push
(
n
),
p
.
event
.
global
[
l
]
=!
0
}
a
=
null
},
global
:{},
remove
:
function
(
a
,
b
,
c
,
d
,
e
){
var
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
,
q
,
r
=
p
.
hasData
(
a
)
&&
p
.
_data
(
a
);
if
(
!
r
||!
(
m
=
r
.
events
))
return
;
b
=
p
.
trim
(
_
(
b
||
""
)).
split
(
"
"
);
for
(
f
=
0
;
f
<
b
.
length
;
f
++
){
g
=
W
.
exec
(
b
[
f
])
||
[],
h
=
i
=
g
[
1
],
j
=
g
[
2
];
if
(
!
h
){
for
(
h
in
m
)
p
.
event
.
remove
(
a
,
h
+
b
[
f
],
c
,
d
,
!
0
);
continue
}
n
=
p
.
event
.
special
[
h
]
||
{},
h
=
(
d
?
n
.
delegateType
:
n
.
bindType
)
||
h
,
o
=
m
[
h
]
||
[],
k
=
o
.
length
,
j
=
j
?
new
RegExp
(
"
(^|
\\
.)
"
+
j
.
split
(
"
.
"
).
sort
().
join
(
"
\\
.(?:.*
\\
.|)
"
)
+
"
(
\\
.|$)
"
):
null
;
for
(
l
=
0
;
l
<
o
.
length
;
l
++
)
q
=
o
[
l
],(
e
||
i
===
q
.
origType
)
&&
(
!
c
||
c
.
guid
===
q
.
guid
)
&&
(
!
j
||
j
.
test
(
q
.
namespace
))
&&
(
!
d
||
d
===
q
.
selector
||
d
===
"
**
"
&&
q
.
selector
)
&&
(
o
.
splice
(
l
--
,
1
),
q
.
selector
&&
o
.
delegateCount
--
,
n
.
remove
&&
n
.
remove
.
call
(
a
,
q
));
o
.
length
===
0
&&
k
!==
o
.
length
&&
((
!
n
.
teardown
||
n
.
teardown
.
call
(
a
,
j
,
r
.
handle
)
===!
1
)
&&
p
.
removeEvent
(
a
,
h
,
r
.
handle
),
delete
m
[
h
])}
p
.
isEmptyObject
(
m
)
&&
(
delete
r
.
handle
,
p
.
removeData
(
a
,
"
events
"
,
!
0
))},
customEvent
:{
getData
:
!
0
,
setData
:
!
0
,
changeData
:
!
0
},
trigger
:
function
(
c
,
d
,
f
,
g
){
if
(
!
f
||
f
.
nodeType
!==
3
&&
f
.
nodeType
!==
8
){
var
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
,
q
,
r
,
s
=
c
.
type
||
c
,
t
=
[];
if
(
$
.
test
(
s
+
p
.
event
.
triggered
))
return
;
s
.
indexOf
(
"
!
"
)
>=
0
&&
(
s
=
s
.
slice
(
0
,
-
1
),
i
=!
0
),
s
.
indexOf
(
"
.
"
)
>=
0
&&
(
t
=
s
.
split
(
"
.
"
),
s
=
t
.
shift
(),
t
.
sort
());
if
((
!
f
||
p
.
event
.
customEvent
[
s
])
&&!
p
.
event
.
global
[
s
])
return
;
c
=
typeof
c
==
"
object
"
?
c
[
p
.
expando
]?
c
:
new
p
.
Event
(
s
,
c
):
new
p
.
Event
(
s
),
c
.
type
=
s
,
c
.
isTrigger
=!
0
,
c
.
exclusive
=
i
,
c
.
namespace
=
t
.
join
(
"
.
"
),
c
.
namespace_re
=
c
.
namespace
?
new
RegExp
(
"
(^|
\\
.)
"
+
t
.
join
(
"
\\
.(?:.*
\\
.|)
"
)
+
"
(
\\
.|$)
"
):
null
,
m
=
s
.
indexOf
(
"
:
"
)
<
0
?
"
on
"
+
s
:
""
;
if
(
!
f
){
h
=
p
.
cache
;
for
(
j
in
h
)
h
[
j
].
events
&&
h
[
j
].
events
[
s
]
&&
p
.
event
.
trigger
(
c
,
d
,
h
[
j
].
handle
.
elem
,
!
0
);
return
}
c
.
result
=
b
,
c
.
target
||
(
c
.
target
=
f
),
d
=
d
!=
null
?
p
.
makeArray
(
d
):[],
d
.
unshift
(
c
),
n
=
p
.
event
.
special
[
s
]
||
{};
if
(
n
.
trigger
&&
n
.
trigger
.
apply
(
f
,
d
)
===!
1
)
return
;
q
=
[[
f
,
n
.
bindType
||
s
]];
if
(
!
g
&&!
n
.
noBubble
&&!
p
.
isWindow
(
f
)){
r
=
n
.
delegateType
||
s
,
k
=
$
.
test
(
r
+
s
)?
f
:
f
.
parentNode
;
for
(
l
=
f
;
k
;
k
=
k
.
parentNode
)
q
.
push
([
k
,
r
]),
l
=
k
;
l
===
(
f
.
ownerDocument
||
e
)
&&
q
.
push
([
l
.
defaultView
||
l
.
parentWindow
||
a
,
r
])}
for
(
j
=
0
;
j
<
q
.
length
&&!
c
.
isPropagationStopped
();
j
++
)
k
=
q
[
j
][
0
],
c
.
type
=
q
[
j
][
1
],
o
=
(
p
.
_data
(
k
,
"
events
"
)
||
{})[
c
.
type
]
&&
p
.
_data
(
k
,
"
handle
"
),
o
&&
o
.
apply
(
k
,
d
),
o
=
m
&&
k
[
m
],
o
&&
p
.
acceptData
(
k
)
&&
o
.
apply
&&
o
.
apply
(
k
,
d
)
===!
1
&&
c
.
preventDefault
();
return
c
.
type
=
s
,
!
g
&&!
c
.
isDefaultPrevented
()
&&
(
!
n
.
_default
||
n
.
_default
.
apply
(
f
.
ownerDocument
,
d
)
===!
1
)
&&
(
s
!==
"
click
"
||!
p
.
nodeName
(
f
,
"
a
"
))
&&
p
.
acceptData
(
f
)
&&
m
&&
f
[
s
]
&&
(
s
!==
"
focus
"
&&
s
!==
"
blur
"
||
c
.
target
.
offsetWidth
!==
0
)
&&!
p
.
isWindow
(
f
)
&&
(
l
=
f
[
m
],
l
&&
(
f
[
m
]
=
null
),
p
.
event
.
triggered
=
s
,
f
[
s
](),
p
.
event
.
triggered
=
b
,
l
&&
(
f
[
m
]
=
l
)),
c
.
result
}
return
},
dispatch
:
function
(
c
){
c
=
p
.
event
.
fix
(
c
||
a
.
event
);
var
d
,
e
,
f
,
g
,
h
,
i
,
j
,
l
,
m
,
n
,
o
=
(
p
.
_data
(
this
,
"
events
"
)
||
{})[
c
.
type
]
||
[],
q
=
o
.
delegateCount
,
r
=
k
.
call
(
arguments
),
s
=!
c
.
exclusive
&&!
c
.
namespace
,
t
=
p
.
event
.
special
[
c
.
type
]
||
{},
u
=
[];
r
[
0
]
=
c
,
c
.
delegateTarget
=
this
;
if
(
t
.
preDispatch
&&
t
.
preDispatch
.
call
(
this
,
c
)
===!
1
)
return
;
if
(
q
&&
(
!
c
.
button
||
c
.
type
!==
"
click
"
))
for
(
f
=
c
.
target
;
f
!=
this
;
f
=
f
.
parentNode
||
this
)
if
(
f
.
disabled
!==!
0
||
c
.
type
!==
"
click
"
){
h
=
{},
j
=
[];
for
(
d
=
0
;
d
<
q
;
d
++
)
l
=
o
[
d
],
m
=
l
.
selector
,
h
[
m
]
===
b
&&
(
h
[
m
]
=
l
.
needsContext
?
p
(
m
,
this
).
index
(
f
)
>=
0
:
p
.
find
(
m
,
this
,
null
,[
f
]).
length
),
h
[
m
]
&&
j
.
push
(
l
);
j
.
length
&&
u
.
push
({
elem
:
f
,
matches
:
j
})}
o
.
length
>
q
&&
u
.
push
({
elem
:
this
,
matches
:
o
.
slice
(
q
)});
for
(
d
=
0
;
d
<
u
.
length
&&!
c
.
isPropagationStopped
();
d
++
){
i
=
u
[
d
],
c
.
currentTarget
=
i
.
elem
;
for
(
e
=
0
;
e
<
i
.
matches
.
length
&&!
c
.
isImmediatePropagationStopped
();
e
++
){
l
=
i
.
matches
[
e
];
if
(
s
||!
c
.
namespace
&&!
l
.
namespace
||
c
.
namespace_re
&&
c
.
namespace_re
.
test
(
l
.
namespace
))
c
.
data
=
l
.
data
,
c
.
handleObj
=
l
,
g
=
((
p
.
event
.
special
[
l
.
origType
]
||
{}).
handle
||
l
.
handler
).
apply
(
i
.
elem
,
r
),
g
!==
b
&&
(
c
.
result
=
g
,
g
===!
1
&&
(
c
.
preventDefault
(),
c
.
stopPropagation
()))}}
return
t
.
postDispatch
&&
t
.
postDispatch
.
call
(
this
,
c
),
c
.
result
},
props
:
"
attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which
"
.
split
(
"
"
),
fixHooks
:{},
keyHooks
:{
props
:
"
char charCode key keyCode
"
.
split
(
"
"
),
filter
:
function
(
a
,
b
){
return
a
.
which
==
null
&&
(
a
.
which
=
b
.
charCode
!=
null
?
b
.
charCode
:
b
.
keyCode
),
a
}},
mouseHooks
:{
props
:
"
button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement
"
.
split
(
"
"
),
filter
:
function
(
a
,
c
){
var
d
,
f
,
g
,
h
=
c
.
button
,
i
=
c
.
fromElement
;
return
a
.
pageX
==
null
&&
c
.
clientX
!=
null
&&
(
d
=
a
.
target
.
ownerDocument
||
e
,
f
=
d
.
documentElement
,
g
=
d
.
body
,
a
.
pageX
=
c
.
clientX
+
(
f
&&
f
.
scrollLeft
||
g
&&
g
.
scrollLeft
||
0
)
-
(
f
&&
f
.
clientLeft
||
g
&&
g
.
clientLeft
||
0
),
a
.
pageY
=
c
.
clientY
+
(
f
&&
f
.
scrollTop
||
g
&&
g
.
scrollTop
||
0
)
-
(
f
&&
f
.
clientTop
||
g
&&
g
.
clientTop
||
0
)),
!
a
.
relatedTarget
&&
i
&&
(
a
.
relatedTarget
=
i
===
a
.
target
?
c
.
toElement
:
i
),
!
a
.
which
&&
h
!==
b
&&
(
a
.
which
=
h
&
1
?
1
:
h
&
2
?
3
:
h
&
4
?
2
:
0
),
a
}},
fix
:
function
(
a
){
if
(
a
[
p
.
expando
])
return
a
;
var
b
,
c
,
d
=
a
,
f
=
p
.
event
.
fixHooks
[
a
.
type
]
||
{},
g
=
f
.
props
?
this
.
props
.
concat
(
f
.
props
):
this
.
props
;
a
=
p
.
Event
(
d
);
for
(
b
=
g
.
length
;
b
;)
c
=
g
[
--
b
],
a
[
c
]
=
d
[
c
];
return
a
.
target
||
(
a
.
target
=
d
.
srcElement
||
e
),
a
.
target
.
nodeType
===
3
&&
(
a
.
target
=
a
.
target
.
parentNode
),
a
.
metaKey
=!!
a
.
metaKey
,
f
.
filter
?
f
.
filter
(
a
,
d
):
a
},
special
:{
load
:{
noBubble
:
!
0
},
focus
:{
delegateType
:
"
focusin
"
},
blur
:{
delegateType
:
"
focusout
"
},
beforeunload
:{
setup
:
function
(
a
,
b
,
c
){
p
.
isWindow
(
this
)
&&
(
this
.
onbeforeunload
=
c
)},
teardown
:
function
(
a
,
b
){
this
.
onbeforeunload
===
b
&&
(
this
.
onbeforeunload
=
null
)}}},
simulate
:
function
(
a
,
b
,
c
,
d
){
var
e
=
p
.
extend
(
new
p
.
Event
,
c
,{
type
:
a
,
isSimulated
:
!
0
,
originalEvent
:{}});
d
?
p
.
event
.
trigger
(
e
,
null
,
b
):
p
.
event
.
dispatch
.
call
(
b
,
e
),
e
.
isDefaultPrevented
()
&&
c
.
preventDefault
()}},
p
.
event
.
handle
=
p
.
event
.
dispatch
,
p
.
removeEvent
=
e
.
removeEventListener
?
function
(
a
,
b
,
c
){
a
.
removeEventListener
&&
a
.
removeEventListener
(
b
,
c
,
!
1
)}:
function
(
a
,
b
,
c
){
var
d
=
"
on
"
+
b
;
a
.
detachEvent
&&
(
typeof
a
[
d
]
==
"
undefined
"
&&
(
a
[
d
]
=
null
),
a
.
detachEvent
(
d
,
c
))},
p
.
Event
=
function
(
a
,
b
){
if
(
this
instanceof
p
.
Event
)
a
&&
a
.
type
?(
this
.
originalEvent
=
a
,
this
.
type
=
a
.
type
,
this
.
isDefaultPrevented
=
a
.
defaultPrevented
||
a
.
returnValue
===!
1
||
a
.
getPreventDefault
&&
a
.
getPreventDefault
()?
bb
:
ba
):
this
.
type
=
a
,
b
&&
p
.
extend
(
this
,
b
),
this
.
timeStamp
=
a
&&
a
.
timeStamp
||
p
.
now
(),
this
[
p
.
expando
]
=!
0
;
else
return
new
p
.
Event
(
a
,
b
)},
p
.
Event
.
prototype
=
{
preventDefault
:
function
(){
this
.
isDefaultPrevented
=
bb
;
var
a
=
this
.
originalEvent
;
if
(
!
a
)
return
;
a
.
preventDefault
?
a
.
preventDefault
():
a
.
returnValue
=!
1
},
stopPropagation
:
function
(){
this
.
isPropagationStopped
=
bb
;
var
a
=
this
.
originalEvent
;
if
(
!
a
)
return
;
a
.
stopPropagation
&&
a
.
stopPropagation
(),
a
.
cancelBubble
=!
0
},
stopImmediatePropagation
:
function
(){
this
.
isImmediatePropagationStopped
=
bb
,
this
.
stopPropagation
()},
isDefaultPrevented
:
ba
,
isPropagationStopped
:
ba
,
isImmediatePropagationStopped
:
ba
},
p
.
each
({
mouseenter
:
"
mouseover
"
,
mouseleave
:
"
mouseout
"
},
function
(
a
,
b
){
p
.
event
.
special
[
a
]
=
{
delegateType
:
b
,
bindType
:
b
,
handle
:
function
(
a
){
var
c
,
d
=
this
,
e
=
a
.
relatedTarget
,
f
=
a
.
handleObj
,
g
=
f
.
selector
;
if
(
!
e
||
e
!==
d
&&!
p
.
contains
(
d
,
e
))
a
.
type
=
f
.
origType
,
c
=
f
.
handler
.
apply
(
this
,
arguments
),
a
.
type
=
b
;
return
c
}}}),
p
.
support
.
submitBubbles
||
(
p
.
event
.
special
.
submit
=
{
setup
:
function
(){
if
(
p
.
nodeName
(
this
,
"
form
"
))
return
!
1
;
p
.
event
.
add
(
this
,
"
click._submit keypress._submit
"
,
function
(
a
){
var
c
=
a
.
target
,
d
=
p
.
nodeName
(
c
,
"
input
"
)
||
p
.
nodeName
(
c
,
"
button
"
)?
c
.
form
:
b
;
d
&&!
p
.
_data
(
d
,
"
_submit_attached
"
)
&&
(
p
.
event
.
add
(
d
,
"
submit._submit
"
,
function
(
a
){
a
.
_submit_bubble
=!
0
}),
p
.
_data
(
d
,
"
_submit_attached
"
,
!
0
))})},
postDispatch
:
function
(
a
){
a
.
_submit_bubble
&&
(
delete
a
.
_submit_bubble
,
this
.
parentNode
&&!
a
.
isTrigger
&&
p
.
event
.
simulate
(
"
submit
"
,
this
.
parentNode
,
a
,
!
0
))},
teardown
:
function
(){
if
(
p
.
nodeName
(
this
,
"
form
"
))
return
!
1
;
p
.
event
.
remove
(
this
,
"
._submit
"
)}}),
p
.
support
.
changeBubbles
||
(
p
.
event
.
special
.
change
=
{
setup
:
function
(){
if
(
V
.
test
(
this
.
nodeName
)){
if
(
this
.
type
===
"
checkbox
"
||
this
.
type
===
"
radio
"
)
p
.
event
.
add
(
this
,
"
propertychange._change
"
,
function
(
a
){
a
.
originalEvent
.
propertyName
===
"
checked
"
&&
(
this
.
_just_changed
=!
0
)}),
p
.
event
.
add
(
this
,
"
click._change
"
,
function
(
a
){
this
.
_just_changed
&&!
a
.
isTrigger
&&
(
this
.
_just_changed
=!
1
),
p
.
event
.
simulate
(
"
change
"
,
this
,
a
,
!
0
)});
return
!
1
}
p
.
event
.
add
(
this
,
"
beforeactivate._change
"
,
function
(
a
){
var
b
=
a
.
target
;
V
.
test
(
b
.
nodeName
)
&&!
p
.
_data
(
b
,
"
_change_attached
"
)
&&
(
p
.
event
.
add
(
b
,
"
change._change
"
,
function
(
a
){
this
.
parentNode
&&!
a
.
isSimulated
&&!
a
.
isTrigger
&&
p
.
event
.
simulate
(
"
change
"
,
this
.
parentNode
,
a
,
!
0
)}),
p
.
_data
(
b
,
"
_change_attached
"
,
!
0
))})},
handle
:
function
(
a
){
var
b
=
a
.
target
;
if
(
this
!==
b
||
a
.
isSimulated
||
a
.
isTrigger
||
b
.
type
!==
"
radio
"
&&
b
.
type
!==
"
checkbox
"
)
return
a
.
handleObj
.
handler
.
apply
(
this
,
arguments
)},
teardown
:
function
(){
return
p
.
event
.
remove
(
this
,
"
._change
"
),
!
V
.
test
(
this
.
nodeName
)}}),
p
.
support
.
focusinBubbles
||
p
.
each
({
focus
:
"
focusin
"
,
blur
:
"
focusout
"
},
function
(
a
,
b
){
var
c
=
0
,
d
=
function
(
a
){
p
.
event
.
simulate
(
b
,
a
.
target
,
p
.
event
.
fix
(
a
),
!
0
)};
p
.
event
.
special
[
b
]
=
{
setup
:
function
(){
c
++===
0
&&
e
.
addEventListener
(
a
,
d
,
!
0
)},
teardown
:
function
(){
--
c
===
0
&&
e
.
removeEventListener
(
a
,
d
,
!
0
)}}}),
p
.
fn
.
extend
({
on
:
function
(
a
,
c
,
d
,
e
,
f
){
var
g
,
h
;
if
(
typeof
a
==
"
object
"
){
typeof
c
!=
"
string
"
&&
(
d
=
d
||
c
,
c
=
b
);
for
(
h
in
a
)
this
.
on
(
h
,
c
,
d
,
a
[
h
],
f
);
return
this
}
d
==
null
&&
e
==
null
?(
e
=
c
,
d
=
c
=
b
):
e
==
null
&&
(
typeof
c
==
"
string
"
?(
e
=
d
,
d
=
b
):(
e
=
d
,
d
=
c
,
c
=
b
));
if
(
e
===!
1
)
e
=
ba
;
else
if
(
!
e
)
return
this
;
return
f
===
1
&&
(
g
=
e
,
e
=
function
(
a
){
return
p
().
off
(
a
),
g
.
apply
(
this
,
arguments
)},
e
.
guid
=
g
.
guid
||
(
g
.
guid
=
p
.
guid
++
)),
this
.
each
(
function
(){
p
.
event
.
add
(
this
,
a
,
e
,
d
,
c
)})},
one
:
function
(
a
,
b
,
c
,
d
){
return
this
.
on
(
a
,
b
,
c
,
d
,
1
)},
off
:
function
(
a
,
c
,
d
){
var
e
,
f
;
if
(
a
&&
a
.
preventDefault
&&
a
.
handleObj
)
return
e
=
a
.
handleObj
,
p
(
a
.
delegateTarget
).
off
(
e
.
namespace
?
e
.
origType
+
"
.
"
+
e
.
namespace
:
e
.
origType
,
e
.
selector
,
e
.
handler
),
this
;
if
(
typeof
a
==
"
object
"
){
for
(
f
in
a
)
this
.
off
(
f
,
c
,
a
[
f
]);
return
this
}
if
(
c
===!
1
||
typeof
c
==
"
function
"
)
d
=
c
,
c
=
b
;
return
d
===!
1
&&
(
d
=
ba
),
this
.
each
(
function
(){
p
.
event
.
remove
(
this
,
a
,
d
,
c
)})},
bind
:
function
(
a
,
b
,
c
){
return
this
.
on
(
a
,
null
,
b
,
c
)},
unbind
:
function
(
a
,
b
){
return
this
.
off
(
a
,
null
,
b
)},
live
:
function
(
a
,
b
,
c
){
return
p
(
this
.
context
).
on
(
a
,
this
.
selector
,
b
,
c
),
this
},
die
:
function
(
a
,
b
){
return
p
(
this
.
context
).
off
(
a
,
this
.
selector
||
"
**
"
,
b
),
this
},
delegate
:
function
(
a
,
b
,
c
,
d
){
return
this
.
on
(
b
,
a
,
c
,
d
)},
undelegate
:
function
(
a
,
b
,
c
){
return
arguments
.
length
===
1
?
this
.
off
(
a
,
"
**
"
):
this
.
off
(
b
,
a
||
"
**
"
,
c
)},
trigger
:
function
(
a
,
b
){
return
this
.
each
(
function
(){
p
.
event
.
trigger
(
a
,
b
,
this
)})},
triggerHandler
:
function
(
a
,
b
){
if
(
this
[
0
])
return
p
.
event
.
trigger
(
a
,
b
,
this
[
0
],
!
0
)},
toggle
:
function
(
a
){
var
b
=
arguments
,
c
=
a
.
guid
||
p
.
guid
++
,
d
=
0
,
e
=
function
(
c
){
var
e
=
(
p
.
_data
(
this
,
"
lastToggle
"
+
a
.
guid
)
||
0
)
%
d
;
return
p
.
_data
(
this
,
"
lastToggle
"
+
a
.
guid
,
e
+
1
),
c
.
preventDefault
(),
b
[
e
].
apply
(
this
,
arguments
)
||!
1
};
e
.
guid
=
c
;
while
(
d
<
b
.
length
)
b
[
d
++
].
guid
=
c
;
return
this
.
click
(
e
)},
hover
:
function
(
a
,
b
){
return
this
.
mouseenter
(
a
).
mouseleave
(
b
||
a
)}}),
p
.
each
(
"
blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu
"
.
split
(
"
"
),
function
(
a
,
b
){
p
.
fn
[
b
]
=
function
(
a
,
c
){
return
c
==
null
&&
(
c
=
a
,
a
=
null
),
arguments
.
length
>
0
?
this
.
on
(
b
,
null
,
a
,
c
):
this
.
trigger
(
b
)},
Y
.
test
(
b
)
&&
(
p
.
event
.
fixHooks
[
b
]
=
p
.
event
.
keyHooks
),
Z
.
test
(
b
)
&&
(
p
.
event
.
fixHooks
[
b
]
=
p
.
event
.
mouseHooks
)}),
function
(
a
,
b
){
function
bc
(
a
,
b
,
c
,
d
){
c
=
c
||
[],
b
=
b
||
r
;
var
e
,
f
,
i
,
j
,
k
=
b
.
nodeType
;
if
(
!
a
||
typeof
a
!=
"
string
"
)
return
c
;
if
(
k
!==
1
&&
k
!==
9
)
return
[];
i
=
g
(
b
);
if
(
!
i
&&!
d
)
if
(
e
=
P
.
exec
(
a
))
if
(
j
=
e
[
1
]){
if
(
k
===
9
){
f
=
b
.
getElementById
(
j
);
if
(
!
f
||!
f
.
parentNode
)
return
c
;
if
(
f
.
id
===
j
)
return
c
.
push
(
f
),
c
}
else
if
(
b
.
ownerDocument
&&
(
f
=
b
.
ownerDocument
.
getElementById
(
j
))
&&
h
(
b
,
f
)
&&
f
.
id
===
j
)
return
c
.
push
(
f
),
c
}
else
{
if
(
e
[
2
])
return
w
.
apply
(
c
,
x
.
call
(
b
.
getElementsByTagName
(
a
),
0
)),
c
;
if
((
j
=
e
[
3
])
&&
_
&&
b
.
getElementsByClassName
)
return
w
.
apply
(
c
,
x
.
call
(
b
.
getElementsByClassName
(
j
),
0
)),
c
}
return
bp
(
a
.
replace
(
L
,
"
$1
"
),
b
,
c
,
d
,
i
)}
function
bd
(
a
){
return
function
(
b
){
var
c
=
b
.
nodeName
.
toLowerCase
();
return
c
===
"
input
"
&&
b
.
type
===
a
}}
function
be
(
a
){
return
function
(
b
){
var
c
=
b
.
nodeName
.
toLowerCase
();
return
(
c
===
"
input
"
||
c
===
"
button
"
)
&&
b
.
type
===
a
}}
function
bf
(
a
){
return
z
(
function
(
b
){
return
b
=+
b
,
z
(
function
(
c
,
d
){
var
e
,
f
=
a
([],
c
.
length
,
b
),
g
=
f
.
length
;
while
(
g
--
)
c
[
e
=
f
[
g
]]
&&
(
c
[
e
]
=!
(
d
[
e
]
=
c
[
e
]))})})}
function
bg
(
a
,
b
,
c
){
if
(
a
===
b
)
return
c
;
var
d
=
a
.
nextSibling
;
while
(
d
){
if
(
d
===
b
)
return
-
1
;
d
=
d
.
nextSibling
}
return
1
}
function
bh
(
a
,
b
){
var
c
,
d
,
f
,
g
,
h
,
i
,
j
,
k
=
C
[
o
][
a
];
if
(
k
)
return
b
?
0
:
k
.
slice
(
0
);
h
=
a
,
i
=
[],
j
=
e
.
preFilter
;
while
(
h
){
if
(
!
c
||
(
d
=
M
.
exec
(
h
)))
d
&&
(
h
=
h
.
slice
(
d
[
0
].
length
)),
i
.
push
(
f
=
[]);
c
=!
1
;
if
(
d
=
N
.
exec
(
h
))
f
.
push
(
c
=
new
q
(
d
.
shift
())),
h
=
h
.
slice
(
c
.
length
),
c
.
type
=
d
[
0
].
replace
(
L
,
"
"
);
for
(
g
in
e
.
filter
)(
d
=
W
[
g
].
exec
(
h
))
&&
(
!
j
[
g
]
||
(
d
=
j
[
g
](
d
,
r
,
!
0
)))
&&
(
f
.
push
(
c
=
new
q
(
d
.
shift
())),
h
=
h
.
slice
(
c
.
length
),
c
.
type
=
g
,
c
.
matches
=
d
);
if
(
!
c
)
break
}
return
b
?
h
.
length
:
h
?
bc
.
error
(
a
):
C
(
a
,
i
).
slice
(
0
)}
function
bi
(
a
,
b
,
d
){
var
e
=
b
.
dir
,
f
=
d
&&
b
.
dir
===
"
parentNode
"
,
g
=
u
++
;
return
b
.
first
?
function
(
b
,
c
,
d
){
while
(
b
=
b
[
e
])
if
(
f
||
b
.
nodeType
===
1
)
return
a
(
b
,
c
,
d
)}:
function
(
b
,
d
,
h
){
if
(
!
h
){
var
i
,
j
=
t
+
"
"
+
g
+
"
"
,
k
=
j
+
c
;
while
(
b
=
b
[
e
])
if
(
f
||
b
.
nodeType
===
1
){
if
((
i
=
b
[
o
])
===
k
)
return
b
.
sizset
;
if
(
typeof
i
==
"
string
"
&&
i
.
indexOf
(
j
)
===
0
){
if
(
b
.
sizset
)
return
b
}
else
{
b
[
o
]
=
k
;
if
(
a
(
b
,
d
,
h
))
return
b
.
sizset
=!
0
,
b
;
b
.
sizset
=!
1
}}}
else
while
(
b
=
b
[
e
])
if
(
f
||
b
.
nodeType
===
1
)
if
(
a
(
b
,
d
,
h
))
return
b
}}
function
bj
(
a
){
return
a
.
length
>
1
?
function
(
b
,
c
,
d
){
var
e
=
a
.
length
;
while
(
e
--
)
if
(
!
a
[
e
](
b
,
c
,
d
))
return
!
1
;
return
!
0
}:
a
[
0
]}
function
bk
(
a
,
b
,
c
,
d
,
e
){
var
f
,
g
=
[],
h
=
0
,
i
=
a
.
length
,
j
=
b
!=
null
;
for
(;
h
<
i
;
h
++
)
if
(
f
=
a
[
h
])
if
(
!
c
||
c
(
f
,
d
,
e
))
g
.
push
(
f
),
j
&&
b
.
push
(
h
);
return
g
}
function
bl
(
a
,
b
,
c
,
d
,
e
,
f
){
return
d
&&!
d
[
o
]
&&
(
d
=
bl
(
d
)),
e
&&!
e
[
o
]
&&
(
e
=
bl
(
e
,
f
)),
z
(
function
(
f
,
g
,
h
,
i
){
if
(
f
&&
e
)
return
;
var
j
,
k
,
l
,
m
=
[],
n
=
[],
o
=
g
.
length
,
p
=
f
||
bo
(
b
||
"
*
"
,
h
.
nodeType
?[
h
]:
h
,[],
f
),
q
=
a
&&
(
f
||!
b
)?
bk
(
p
,
m
,
a
,
h
,
i
):
p
,
r
=
c
?
e
||
(
f
?
a
:
o
||
d
)?[]:
g
:
q
;
c
&&
c
(
q
,
r
,
h
,
i
);
if
(
d
){
l
=
bk
(
r
,
n
),
d
(
l
,[],
h
,
i
),
j
=
l
.
length
;
while
(
j
--
)
if
(
k
=
l
[
j
])
r
[
n
[
j
]]
=!
(
q
[
n
[
j
]]
=
k
)}
if
(
f
){
j
=
a
&&
r
.
length
;
while
(
j
--
)
if
(
k
=
r
[
j
])
f
[
m
[
j
]]
=!
(
g
[
m
[
j
]]
=
k
)}
else
r
=
bk
(
r
===
g
?
r
.
splice
(
o
,
r
.
length
):
r
),
e
?
e
(
null
,
g
,
r
,
i
):
w
.
apply
(
g
,
r
)})}
function
bm
(
a
){
var
b
,
c
,
d
,
f
=
a
.
length
,
g
=
e
.
relative
[
a
[
0
].
type
],
h
=
g
||
e
.
relative
[
"
"
],
i
=
g
?
1
:
0
,
j
=
bi
(
function
(
a
){
return
a
===
b
},
h
,
!
0
),
k
=
bi
(
function
(
a
){
return
y
.
call
(
b
,
a
)
>-
1
},
h
,
!
0
),
m
=
[
function
(
a
,
c
,
d
){
return
!
g
&&
(
d
||
c
!==
l
)
||
((
b
=
c
).
nodeType
?
j
(
a
,
c
,
d
):
k
(
a
,
c
,
d
))}];
for
(;
i
<
f
;
i
++
)
if
(
c
=
e
.
relative
[
a
[
i
].
type
])
m
=
[
bi
(
bj
(
m
),
c
)];
else
{
c
=
e
.
filter
[
a
[
i
].
type
].
apply
(
null
,
a
[
i
].
matches
);
if
(
c
[
o
]){
d
=++
i
;
for
(;
d
<
f
;
d
++
)
if
(
e
.
relative
[
a
[
d
].
type
])
break
;
return
bl
(
i
>
1
&&
bj
(
m
),
i
>
1
&&
a
.
slice
(
0
,
i
-
1
).
join
(
""
).
replace
(
L
,
"
$1
"
),
c
,
i
<
d
&&
bm
(
a
.
slice
(
i
,
d
)),
d
<
f
&&
bm
(
a
=
a
.
slice
(
d
)),
d
<
f
&&
a
.
join
(
""
))}
m
.
push
(
c
)}
return
bj
(
m
)}
function
bn
(
a
,
b
){
var
d
=
b
.
length
>
0
,
f
=
a
.
length
>
0
,
g
=
function
(
h
,
i
,
j
,
k
,
m
){
var
n
,
o
,
p
,
q
=
[],
s
=
0
,
u
=
"
0
"
,
x
=
h
&&
[],
y
=
m
!=
null
,
z
=
l
,
A
=
h
||
f
&&
e
.
find
.
TAG
(
"
*
"
,
m
&&
i
.
parentNode
||
i
),
B
=
t
+=
z
==
null
?
1
:
Math
.
E
;
y
&&
(
l
=
i
!==
r
&&
i
,
c
=
g
.
el
);
for
(;(
n
=
A
[
u
])
!=
null
;
u
++
){
if
(
f
&&
n
){
for
(
o
=
0
;
p
=
a
[
o
];
o
++
)
if
(
p
(
n
,
i
,
j
)){
k
.
push
(
n
);
break
}
y
&&
(
t
=
B
,
c
=++
g
.
el
)}
d
&&
((
n
=!
p
&&
n
)
&&
s
--
,
h
&&
x
.
push
(
n
))}
s
+=
u
;
if
(
d
&&
u
!==
s
){
for
(
o
=
0
;
p
=
b
[
o
];
o
++
)
p
(
x
,
q
,
i
,
j
);
if
(
h
){
if
(
s
>
0
)
while
(
u
--
)
!
x
[
u
]
&&!
q
[
u
]
&&
(
q
[
u
]
=
v
.
call
(
k
));
q
=
bk
(
q
)}
w
.
apply
(
k
,
q
),
y
&&!
h
&&
q
.
length
>
0
&&
s
+
b
.
length
>
1
&&
bc
.
uniqueSort
(
k
)}
return
y
&&
(
t
=
B
,
l
=
z
),
x
};
return
g
.
el
=
0
,
d
?
z
(
g
):
g
}
function
bo
(
a
,
b
,
c
,
d
){
var
e
=
0
,
f
=
b
.
length
;
for
(;
e
<
f
;
e
++
)
bc
(
a
,
b
[
e
],
c
,
d
);
return
c
}
function
bp
(
a
,
b
,
c
,
d
,
f
){
var
g
,
h
,
j
,
k
,
l
,
m
=
bh
(
a
),
n
=
m
.
length
;
if
(
!
d
&&
m
.
length
===
1
){
h
=
m
[
0
]
=
m
[
0
].
slice
(
0
);
if
(
h
.
length
>
2
&&
(
j
=
h
[
0
]).
type
===
"
ID
"
&&
b
.
nodeType
===
9
&&!
f
&&
e
.
relative
[
h
[
1
].
type
]){
b
=
e
.
find
.
ID
(
j
.
matches
[
0
].
replace
(
V
,
""
),
b
,
f
)[
0
];
if
(
!
b
)
return
c
;
a
=
a
.
slice
(
h
.
shift
().
length
)}
for
(
g
=
W
.
POS
.
test
(
a
)?
-
1
:
h
.
length
-
1
;
g
>=
0
;
g
--
){
j
=
h
[
g
];
if
(
e
.
relative
[
k
=
j
.
type
])
break
;
if
(
l
=
e
.
find
[
k
])
if
(
d
=
l
(
j
.
matches
[
0
].
replace
(
V
,
""
),
R
.
test
(
h
[
0
].
type
)
&&
b
.
parentNode
||
b
,
f
)){
h
.
splice
(
g
,
1
),
a
=
d
.
length
&&
h
.
join
(
""
);
if
(
!
a
)
return
w
.
apply
(
c
,
x
.
call
(
d
,
0
)),
c
;
break
}}}
return
i
(
a
,
m
)(
d
,
b
,
f
,
c
,
R
.
test
(
a
)),
c
}
function
bq
(){}
var
c
,
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
=!
0
,
n
=
"
undefined
"
,
o
=
(
"
sizcache
"
+
Math
.
random
()).
replace
(
"
.
"
,
""
),
q
=
String
,
r
=
a
.
document
,
s
=
r
.
documentElement
,
t
=
0
,
u
=
0
,
v
=
[].
pop
,
w
=
[].
push
,
x
=
[].
slice
,
y
=
[].
indexOf
||
function
(
a
){
var
b
=
0
,
c
=
this
.
length
;
for
(;
b
<
c
;
b
++
)
if
(
this
[
b
]
===
a
)
return
b
;
return
-
1
},
z
=
function
(
a
,
b
){
return
a
[
o
]
=
b
==
null
||
b
,
a
},
A
=
function
(){
var
a
=
{},
b
=
[];
return
z
(
function
(
c
,
d
){
return
b
.
push
(
c
)
>
e
.
cacheLength
&&
delete
a
[
b
.
shift
()],
a
[
c
]
=
d
},
a
)},
B
=
A
(),
C
=
A
(),
D
=
A
(),
E
=
"
[
\\
x20
\\
t
\\
r
\\
n
\\
f]
"
,
F
=
"
(?:
\\\\
.|[-
\\
w]|[^
\\
x00-
\\
xa0])+
"
,
G
=
F
.
replace
(
"
w
"
,
"
w#
"
),
H
=
"
([*^$|!~]?=)
"
,
I
=
"
\\
[
"
+
E
+
"
*(
"
+
F
+
"
)
"
+
E
+
"
*(?:
"
+
H
+
E
+
"
*(?:(['
\"
])((?:
\\\\
.|[^
\\\\
])*?)
\\
3|(
"
+
G
+
"
)|)|)
"
+
E
+
"
*
\\
]
"
,
J
=
"
:(
"
+
F
+
"
)(?:
\\
((?:(['
\"
])((?:
\\\\
.|[^
\\\\
])*?)
\\
2|([^()[
\\
]]*|(?:(?:
"
+
I
+
"
)|[^:]|
\\\\
.)*|.*))
\\
)|)
"
,
K
=
"
:(even|odd|eq|gt|lt|nth|first|last)(?:
\\
(
"
+
E
+
"
*((?:-
\\
d)?
\\
d*)
"
+
E
+
"
*
\\
)|)(?=[^-]|$)
"
,
L
=
new
RegExp
(
"
^
"
+
E
+
"
+|((?:^|[^
\\\\
])(?:
\\\\
.)*)
"
+
E
+
"
+$
"
,
"
g
"
),
M
=
new
RegExp
(
"
^
"
+
E
+
"
*,
"
+
E
+
"
*
"
),
N
=
new
RegExp
(
"
^
"
+
E
+
"
*([
\\
x20
\\
t
\\
r
\\
n
\\
f>+~])
"
+
E
+
"
*
"
),
O
=
new
RegExp
(
J
),
P
=
/^
(?:
#
([\w\-]
+
)
|
(\w
+
)
|
\.([\w\-]
+
))
$/
,
Q
=
/^:not/
,
R
=
/
[\x
20
\t\r\n\f]
*
[
+~
]
/
,
S
=
/:not
\(
$/
,
T
=
/h
\d
/i
,
U
=
/input|select|textarea|button/i
,
V
=
/
\\(?!\\)
/g
,
W
=
{
ID
:
new
RegExp
(
"
^#(
"
+
F
+
"
)
"
),
CLASS
:
new
RegExp
(
"
^
\\
.(
"
+
F
+
"
)
"
),
NAME
:
new
RegExp
(
"
^
\\
[name=['
\"
]?(
"
+
F
+
"
)['
\"
]?
\\
]
"
),
TAG
:
new
RegExp
(
"
^(
"
+
F
.
replace
(
"
w
"
,
"
w*
"
)
+
"
)
"
),
ATTR
:
new
RegExp
(
"
^
"
+
I
),
PSEUDO
:
new
RegExp
(
"
^
"
+
J
),
POS
:
new
RegExp
(
K
,
"
i
"
),
CHILD
:
new
RegExp
(
"
^:(only|nth|first|last)-child(?:
\\
(
"
+
E
+
"
*(even|odd|(([+-]|)(
\\
d*)n|)
"
+
E
+
"
*(?:([+-]|)
"
+
E
+
"
*(
\\
d+)|))
"
+
E
+
"
*
\\
)|)
"
,
"
i
"
),
needsContext
:
new
RegExp
(
"
^
"
+
E
+
"
*[>+~]|
"
+
K
,
"
i
"
)},
X
=
function
(
a
){
var
b
=
r
.
createElement
(
"
div
"
);
try
{
return
a
(
b
)}
catch
(
c
){
return
!
1
}
finally
{
b
=
null
}},
Y
=
X
(
function
(
a
){
return
a
.
appendChild
(
r
.
createComment
(
""
)),
!
a
.
getElementsByTagName
(
"
*
"
).
length
}),
Z
=
X
(
function
(
a
){
return
a
.
innerHTML
=
"
<a href='#'></a>
"
,
a
.
firstChild
&&
typeof
a
.
firstChild
.
getAttribute
!==
n
&&
a
.
firstChild
.
getAttribute
(
"
href
"
)
===
"
#
"
}),
$
=
X
(
function
(
a
){
a
.
innerHTML
=
"
<select></select>
"
;
var
b
=
typeof
a
.
lastChild
.
getAttribute
(
"
multiple
"
);
return
b
!==
"
boolean
"
&&
b
!==
"
string
"
}),
_
=
X
(
function
(
a
){
return
a
.
innerHTML
=
"
<div class='hidden e'></div><div class='hidden'></div>
"
,
!
a
.
getElementsByClassName
||!
a
.
getElementsByClassName
(
"
e
"
).
length
?
!
1
:(
a
.
lastChild
.
className
=
"
e
"
,
a
.
getElementsByClassName
(
"
e
"
).
length
===
2
)}),
ba
=
X
(
function
(
a
){
a
.
id
=
o
+
0
,
a
.
innerHTML
=
"
<a name='
"
+
o
+
"
'></a><div name='
"
+
o
+
"
'></div>
"
,
s
.
insertBefore
(
a
,
s
.
firstChild
);
var
b
=
r
.
getElementsByName
&&
r
.
getElementsByName
(
o
).
length
===
2
+
r
.
getElementsByName
(
o
+
0
).
length
;
return
d
=!
r
.
getElementById
(
o
),
s
.
removeChild
(
a
),
b
});
try
{
x
.
call
(
s
.
childNodes
,
0
)[
0
].
nodeType
}
catch
(
bb
){
x
=
function
(
a
){
var
b
,
c
=
[];
for
(;
b
=
this
[
a
];
a
++
)
c
.
push
(
b
);
return
c
}}
bc
.
matches
=
function
(
a
,
b
){
return
bc
(
a
,
null
,
null
,
b
)},
bc
.
matchesSelector
=
function
(
a
,
b
){
return
bc
(
b
,
null
,
null
,[
a
]).
length
>
0
},
f
=
bc
.
getText
=
function
(
a
){
var
b
,
c
=
""
,
d
=
0
,
e
=
a
.
nodeType
;
if
(
e
){
if
(
e
===
1
||
e
===
9
||
e
===
11
){
if
(
typeof
a
.
textContent
==
"
string
"
)
return
a
.
textContent
;
for
(
a
=
a
.
firstChild
;
a
;
a
=
a
.
nextSibling
)
c
+=
f
(
a
)}
else
if
(
e
===
3
||
e
===
4
)
return
a
.
nodeValue
}
else
for
(;
b
=
a
[
d
];
d
++
)
c
+=
f
(
b
);
return
c
},
g
=
bc
.
isXML
=
function
(
a
){
var
b
=
a
&&
(
a
.
ownerDocument
||
a
).
documentElement
;
return
b
?
b
.
nodeName
!==
"
HTML
"
:
!
1
},
h
=
bc
.
contains
=
s
.
contains
?
function
(
a
,
b
){
var
c
=
a
.
nodeType
===
9
?
a
.
documentElement
:
a
,
d
=
b
&&
b
.
parentNode
;
return
a
===
d
||!!
(
d
&&
d
.
nodeType
===
1
&&
c
.
contains
&&
c
.
contains
(
d
))}:
s
.
compareDocumentPosition
?
function
(
a
,
b
){
return
b
&&!!
(
a
.
compareDocumentPosition
(
b
)
&
16
)}:
function
(
a
,
b
){
while
(
b
=
b
.
parentNode
)
if
(
b
===
a
)
return
!
0
;
return
!
1
},
bc
.
attr
=
function
(
a
,
b
){
var
c
,
d
=
g
(
a
);
return
d
||
(
b
=
b
.
toLowerCase
()),(
c
=
e
.
attrHandle
[
b
])?
c
(
a
):
d
||
$
?
a
.
getAttribute
(
b
):(
c
=
a
.
getAttributeNode
(
b
),
c
?
typeof
a
[
b
]
==
"
boolean
"
?
a
[
b
]?
b
:
null
:
c
.
specified
?
c
.
value
:
null
:
null
)},
e
=
bc
.
selectors
=
{
cacheLength
:
50
,
createPseudo
:
z
,
match
:
W
,
attrHandle
:
Z
?{}:{
href
:
function
(
a
){
return
a
.
getAttribute
(
"
href
"
,
2
)},
type
:
function
(
a
){
return
a
.
getAttribute
(
"
type
"
)}},
find
:{
ID
:
d
?
function
(
a
,
b
,
c
){
if
(
typeof
b
.
getElementById
!==
n
&&!
c
){
var
d
=
b
.
getElementById
(
a
);
return
d
&&
d
.
parentNode
?[
d
]:[]}}:
function
(
a
,
c
,
d
){
if
(
typeof
c
.
getElementById
!==
n
&&!
d
){
var
e
=
c
.
getElementById
(
a
);
return
e
?
e
.
id
===
a
||
typeof
e
.
getAttributeNode
!==
n
&&
e
.
getAttributeNode
(
"
id
"
).
value
===
a
?[
e
]:
b
:[]}},
TAG
:
Y
?
function
(
a
,
b
){
if
(
typeof
b
.
getElementsByTagName
!==
n
)
return
b
.
getElementsByTagName
(
a
)}:
function
(
a
,
b
){
var
c
=
b
.
getElementsByTagName
(
a
);
if
(
a
===
"
*
"
){
var
d
,
e
=
[],
f
=
0
;
for
(;
d
=
c
[
f
];
f
++
)
d
.
nodeType
===
1
&&
e
.
push
(
d
);
return
e
}
return
c
},
NAME
:
ba
&&
function
(
a
,
b
){
if
(
typeof
b
.
getElementsByName
!==
n
)
return
b
.
getElementsByName
(
name
)},
CLASS
:
_
&&
function
(
a
,
b
,
c
){
if
(
typeof
b
.
getElementsByClassName
!==
n
&&!
c
)
return
b
.
getElementsByClassName
(
a
)}},
relative
:{
"
>
"
:{
dir
:
"
parentNode
"
,
first
:
!
0
},
"
"
:{
dir
:
"
parentNode
"
},
"
+
"
:{
dir
:
"
previousSibling
"
,
first
:
!
0
},
"
~
"
:{
dir
:
"
previousSibling
"
}},
preFilter
:{
ATTR
:
function
(
a
){
return
a
[
1
]
=
a
[
1
].
replace
(
V
,
""
),
a
[
3
]
=
(
a
[
4
]
||
a
[
5
]
||
""
).
replace
(
V
,
""
),
a
[
2
]
===
"
~=
"
&&
(
a
[
3
]
=
"
"
+
a
[
3
]
+
"
"
),
a
.
slice
(
0
,
4
)},
CHILD
:
function
(
a
){
return
a
[
1
]
=
a
[
1
].
toLowerCase
(),
a
[
1
]
===
"
nth
"
?(
a
[
2
]
||
bc
.
error
(
a
[
0
]),
a
[
3
]
=+
(
a
[
3
]?
a
[
4
]
+
(
a
[
5
]
||
1
):
2
*
(
a
[
2
]
===
"
even
"
||
a
[
2
]
===
"
odd
"
)),
a
[
4
]
=+
(
a
[
6
]
+
a
[
7
]
||
a
[
2
]
===
"
odd
"
)):
a
[
2
]
&&
bc
.
error
(
a
[
0
]),
a
},
PSEUDO
:
function
(
a
){
var
b
,
c
;
if
(
W
.
CHILD
.
test
(
a
[
0
]))
return
null
;
if
(
a
[
3
])
a
[
2
]
=
a
[
3
];
else
if
(
b
=
a
[
4
])
O
.
test
(
b
)
&&
(
c
=
bh
(
b
,
!
0
))
&&
(
c
=
b
.
indexOf
(
"
)
"
,
b
.
length
-
c
)
-
b
.
length
)
&&
(
b
=
b
.
slice
(
0
,
c
),
a
[
0
]
=
a
[
0
].
slice
(
0
,
c
)),
a
[
2
]
=
b
;
return
a
.
slice
(
0
,
3
)}},
filter
:{
ID
:
d
?
function
(
a
){
return
a
=
a
.
replace
(
V
,
""
),
function
(
b
){
return
b
.
getAttribute
(
"
id
"
)
===
a
}}:
function
(
a
){
return
a
=
a
.
replace
(
V
,
""
),
function
(
b
){
var
c
=
typeof
b
.
getAttributeNode
!==
n
&&
b
.
getAttributeNode
(
"
id
"
);
return
c
&&
c
.
value
===
a
}},
TAG
:
function
(
a
){
return
a
===
"
*
"
?
function
(){
return
!
0
}:(
a
=
a
.
replace
(
V
,
""
).
toLowerCase
(),
function
(
b
){
return
b
.
nodeName
&&
b
.
nodeName
.
toLowerCase
()
===
a
})},
CLASS
:
function
(
a
){
var
b
=
B
[
o
][
a
];
return
b
||
(
b
=
B
(
a
,
new
RegExp
(
"
(^|
"
+
E
+
"
)
"
+
a
+
"
(
"
+
E
+
"
|$)
"
))),
function
(
a
){
return
b
.
test
(
a
.
className
||
typeof
a
.
getAttribute
!==
n
&&
a
.
getAttribute
(
"
class
"
)
||
""
)}},
ATTR
:
function
(
a
,
b
,
c
){
return
function
(
d
,
e
){
var
f
=
bc
.
attr
(
d
,
a
);
return
f
==
null
?
b
===
"
!=
"
:
b
?(
f
+=
""
,
b
===
"
=
"
?
f
===
c
:
b
===
"
!=
"
?
f
!==
c
:
b
===
"
^=
"
?
c
&&
f
.
indexOf
(
c
)
===
0
:
b
===
"
*=
"
?
c
&&
f
.
indexOf
(
c
)
>-
1
:
b
===
"
$=
"
?
c
&&
f
.
substr
(
f
.
length
-
c
.
length
)
===
c
:
b
===
"
~=
"
?(
"
"
+
f
+
"
"
).
indexOf
(
c
)
>-
1
:
b
===
"
|=
"
?
f
===
c
||
f
.
substr
(
0
,
c
.
length
+
1
)
===
c
+
"
-
"
:
!
1
):
!
0
}},
CHILD
:
function
(
a
,
b
,
c
,
d
){
return
a
===
"
nth
"
?
function
(
a
){
var
b
,
e
,
f
=
a
.
parentNode
;
if
(
c
===
1
&&
d
===
0
)
return
!
0
;
if
(
f
){
e
=
0
;
for
(
b
=
f
.
firstChild
;
b
;
b
=
b
.
nextSibling
)
if
(
b
.
nodeType
===
1
){
e
++
;
if
(
a
===
b
)
break
}}
return
e
-=
d
,
e
===
c
||
e
%
c
===
0
&&
e
/
c
>=
0
}:
function
(
b
){
var
c
=
b
;
switch
(
a
){
case
"
only
"
:
case
"
first
"
:
while
(
c
=
c
.
previousSibling
)
if
(
c
.
nodeType
===
1
)
return
!
1
;
if
(
a
===
"
first
"
)
return
!
0
;
c
=
b
;
case
"
last
"
:
while
(
c
=
c
.
nextSibling
)
if
(
c
.
nodeType
===
1
)
return
!
1
;
return
!
0
}}},
PSEUDO
:
function
(
a
,
b
){
var
c
,
d
=
e
.
pseudos
[
a
]
||
e
.
setFilters
[
a
.
toLowerCase
()]
||
bc
.
error
(
"
unsupported pseudo:
"
+
a
);
return
d
[
o
]?
d
(
b
):
d
.
length
>
1
?(
c
=
[
a
,
a
,
""
,
b
],
e
.
setFilters
.
hasOwnProperty
(
a
.
toLowerCase
())?
z
(
function
(
a
,
c
){
var
e
,
f
=
d
(
a
,
b
),
g
=
f
.
length
;
while
(
g
--
)
e
=
y
.
call
(
a
,
f
[
g
]),
a
[
e
]
=!
(
c
[
e
]
=
f
[
g
])}):
function
(
a
){
return
d
(
a
,
0
,
c
)}):
d
}},
pseudos
:{
not
:
z
(
function
(
a
){
var
b
=
[],
c
=
[],
d
=
i
(
a
.
replace
(
L
,
"
$1
"
));
return
d
[
o
]?
z
(
function
(
a
,
b
,
c
,
e
){
var
f
,
g
=
d
(
a
,
null
,
e
,[]),
h
=
a
.
length
;
while
(
h
--
)
if
(
f
=
g
[
h
])
a
[
h
]
=!
(
b
[
h
]
=
f
)}):
function
(
a
,
e
,
f
){
return
b
[
0
]
=
a
,
d
(
b
,
null
,
f
,
c
),
!
c
.
pop
()}}),
has
:
z
(
function
(
a
){
return
function
(
b
){
return
bc
(
a
,
b
).
length
>
0
}}),
contains
:
z
(
function
(
a
){
return
function
(
b
){
return
(
b
.
textContent
||
b
.
innerText
||
f
(
b
)).
indexOf
(
a
)
>-
1
}}),
enabled
:
function
(
a
){
return
a
.
disabled
===!
1
},
disabled
:
function
(
a
){
return
a
.
disabled
===!
0
},
checked
:
function
(
a
){
var
b
=
a
.
nodeName
.
toLowerCase
();
return
b
===
"
input
"
&&!!
a
.
checked
||
b
===
"
option
"
&&!!
a
.
selected
},
selected
:
function
(
a
){
return
a
.
parentNode
&&
a
.
parentNode
.
selectedIndex
,
a
.
selected
===!
0
},
parent
:
function
(
a
){
return
!
e
.
pseudos
.
empty
(
a
)},
empty
:
function
(
a
){
var
b
;
a
=
a
.
firstChild
;
while
(
a
){
if
(
a
.
nodeName
>
"
@
"
||
(
b
=
a
.
nodeType
)
===
3
||
b
===
4
)
return
!
1
;
a
=
a
.
nextSibling
}
return
!
0
},
header
:
function
(
a
){
return
T
.
test
(
a
.
nodeName
)},
text
:
function
(
a
){
var
b
,
c
;
return
a
.
nodeName
.
toLowerCase
()
===
"
input
"
&&
(
b
=
a
.
type
)
===
"
text
"
&&
((
c
=
a
.
getAttribute
(
"
type
"
))
==
null
||
c
.
toLowerCase
()
===
b
)},
radio
:
bd
(
"
radio
"
),
checkbox
:
bd
(
"
checkbox
"
),
file
:
bd
(
"
file
"
),
password
:
bd
(
"
password
"
),
image
:
bd
(
"
image
"
),
submit
:
be
(
"
submit
"
),
reset
:
be
(
"
reset
"
),
button
:
function
(
a
){
var
b
=
a
.
nodeName
.
toLowerCase
();
return
b
===
"
input
"
&&
a
.
type
===
"
button
"
||
b
===
"
button
"
},
input
:
function
(
a
){
return
U
.
test
(
a
.
nodeName
)},
focus
:
function
(
a
){
var
b
=
a
.
ownerDocument
;
return
a
===
b
.
activeElement
&&
(
!
b
.
hasFocus
||
b
.
hasFocus
())
&&
(
!!
a
.
type
||!!
a
.
href
)},
active
:
function
(
a
){
return
a
===
a
.
ownerDocument
.
activeElement
},
first
:
bf
(
function
(
a
,
b
,
c
){
return
[
0
]}),
last
:
bf
(
function
(
a
,
b
,
c
){
return
[
b
-
1
]}),
eq
:
bf
(
function
(
a
,
b
,
c
){
return
[
c
<
0
?
c
+
b
:
c
]}),
even
:
bf
(
function
(
a
,
b
,
c
){
for
(
var
d
=
0
;
d
<
b
;
d
+=
2
)
a
.
push
(
d
);
return
a
}),
odd
:
bf
(
function
(
a
,
b
,
c
){
for
(
var
d
=
1
;
d
<
b
;
d
+=
2
)
a
.
push
(
d
);
return
a
}),
lt
:
bf
(
function
(
a
,
b
,
c
){
for
(
var
d
=
c
<
0
?
c
+
b
:
c
;
--
d
>=
0
;)
a
.
push
(
d
);
return
a
}),
gt
:
bf
(
function
(
a
,
b
,
c
){
for
(
var
d
=
c
<
0
?
c
+
b
:
c
;
++
d
<
b
;)
a
.
push
(
d
);
return
a
})}},
j
=
s
.
compareDocumentPosition
?
function
(
a
,
b
){
return
a
===
b
?(
k
=!
0
,
0
):(
!
a
.
compareDocumentPosition
||!
b
.
compareDocumentPosition
?
a
.
compareDocumentPosition
:
a
.
compareDocumentPosition
(
b
)
&
4
)?
-
1
:
1
}:
function
(
a
,
b
){
if
(
a
===
b
)
return
k
=!
0
,
0
;
if
(
a
.
sourceIndex
&&
b
.
sourceIndex
)
return
a
.
sourceIndex
-
b
.
sourceIndex
;
var
c
,
d
,
e
=
[],
f
=
[],
g
=
a
.
parentNode
,
h
=
b
.
parentNode
,
i
=
g
;
if
(
g
===
h
)
return
bg
(
a
,
b
);
if
(
!
g
)
return
-
1
;
if
(
!
h
)
return
1
;
while
(
i
)
e
.
unshift
(
i
),
i
=
i
.
parentNode
;
i
=
h
;
while
(
i
)
f
.
unshift
(
i
),
i
=
i
.
parentNode
;
c
=
e
.
length
,
d
=
f
.
length
;
for
(
var
j
=
0
;
j
<
c
&&
j
<
d
;
j
++
)
if
(
e
[
j
]
!==
f
[
j
])
return
bg
(
e
[
j
],
f
[
j
]);
return
j
===
c
?
bg
(
a
,
f
[
j
],
-
1
):
bg
(
e
[
j
],
b
,
1
)},[
0
,
0
].
sort
(
j
),
m
=!
k
,
bc
.
uniqueSort
=
function
(
a
){
var
b
,
c
=
1
;
k
=
m
,
a
.
sort
(
j
);
if
(
k
)
for
(;
b
=
a
[
c
];
c
++
)
b
===
a
[
c
-
1
]
&&
a
.
splice
(
c
--
,
1
);
return
a
},
bc
.
error
=
function
(
a
){
throw
new
Error
(
"
Syntax error, unrecognized expression:
"
+
a
)},
i
=
bc
.
compile
=
function
(
a
,
b
){
var
c
,
d
=
[],
e
=
[],
f
=
D
[
o
][
a
];
if
(
!
f
){
b
||
(
b
=
bh
(
a
)),
c
=
b
.
length
;
while
(
c
--
)
f
=
bm
(
b
[
c
]),
f
[
o
]?
d
.
push
(
f
):
e
.
push
(
f
);
f
=
D
(
a
,
bn
(
e
,
d
))}
return
f
},
r
.
querySelectorAll
&&
function
(){
var
a
,
b
=
bp
,
c
=
/'|
\\
/g
,
d
=
/
\=[\x
20
\t\r\n\f]
*
([^
'"
\]]
*
)[\x
20
\t\r\n\f]
*
\]
/g
,
e
=
[
"
:focus
"
],
f
=
[
"
:active
"
,
"
:focus
"
],
h
=
s
.
matchesSelector
||
s
.
mozMatchesSelector
||
s
.
webkitMatchesSelector
||
s
.
oMatchesSelector
||
s
.
msMatchesSelector
;
X
(
function
(
a
){
a
.
innerHTML
=
"
<select><option selected=''></option></select>
"
,
a
.
querySelectorAll
(
"
[selected]
"
).
length
||
e
.
push
(
"
\\
[
"
+
E
+
"
*(?:checked|disabled|ismap|multiple|readonly|selected|value)
"
),
a
.
querySelectorAll
(
"
:checked
"
).
length
||
e
.
push
(
"
:checked
"
)}),
X
(
function
(
a
){
a
.
innerHTML
=
"
<p test=''></p>
"
,
a
.
querySelectorAll
(
"
[test^='']
"
).
length
&&
e
.
push
(
"
[*^$]=
"
+
E
+
"
*(?:
\"\"
|'')
"
),
a
.
innerHTML
=
"
<input type='hidden'/>
"
,
a
.
querySelectorAll
(
"
:enabled
"
).
length
||
e
.
push
(
"
:enabled
"
,
"
:disabled
"
)}),
e
=
new
RegExp
(
e
.
join
(
"
|
"
)),
bp
=
function
(
a
,
d
,
f
,
g
,
h
){
if
(
!
g
&&!
h
&&
(
!
e
||!
e
.
test
(
a
))){
var
i
,
j
,
k
=!
0
,
l
=
o
,
m
=
d
,
n
=
d
.
nodeType
===
9
&&
a
;
if
(
d
.
nodeType
===
1
&&
d
.
nodeName
.
toLowerCase
()
!==
"
object
"
){
i
=
bh
(
a
),(
k
=
d
.
getAttribute
(
"
id
"
))?
l
=
k
.
replace
(
c
,
"
\\
$&
"
):
d
.
setAttribute
(
"
id
"
,
l
),
l
=
"
[id='
"
+
l
+
"
']
"
,
j
=
i
.
length
;
while
(
j
--
)
i
[
j
]
=
l
+
i
[
j
].
join
(
""
);
m
=
R
.
test
(
a
)
&&
d
.
parentNode
||
d
,
n
=
i
.
join
(
"
,
"
)}
if
(
n
)
try
{
return
w
.
apply
(
f
,
x
.
call
(
m
.
querySelectorAll
(
n
),
0
)),
f
}
catch
(
p
){}
finally
{
k
||
d
.
removeAttribute
(
"
id
"
)}}
return
b
(
a
,
d
,
f
,
g
,
h
)},
h
&&
(
X
(
function
(
b
){
a
=
h
.
call
(
b
,
"
div
"
);
try
{
h
.
call
(
b
,
"
[test!='']:sizzle
"
),
f
.
push
(
"
!=
"
,
J
)}
catch
(
c
){}}),
f
=
new
RegExp
(
f
.
join
(
"
|
"
)),
bc
.
matchesSelector
=
function
(
b
,
c
){
c
=
c
.
replace
(
d
,
"
='$1']
"
);
if
(
!
g
(
b
)
&&!
f
.
test
(
c
)
&&
(
!
e
||!
e
.
test
(
c
)))
try
{
var
i
=
h
.
call
(
b
,
c
);
if
(
i
||
a
||
b
.
document
&&
b
.
document
.
nodeType
!==
11
)
return
i
}
catch
(
j
){}
return
bc
(
c
,
null
,
null
,[
b
]).
length
>
0
})}(),
e
.
pseudos
.
nth
=
e
.
pseudos
.
eq
,
e
.
filters
=
bq
.
prototype
=
e
.
pseudos
,
e
.
setFilters
=
new
bq
,
bc
.
attr
=
p
.
attr
,
p
.
find
=
bc
,
p
.
expr
=
bc
.
selectors
,
p
.
expr
[
"
:
"
]
=
p
.
expr
.
pseudos
,
p
.
unique
=
bc
.
uniqueSort
,
p
.
text
=
bc
.
getText
,
p
.
isXMLDoc
=
bc
.
isXML
,
p
.
contains
=
bc
.
contains
}(
a
);
var
bc
=
/Until$/
,
bd
=
/^
(?:
parents|prev
(?:
Until|All
))
/
,
be
=
/^.
[^
:#
\[\.
,
]
*$/
,
bf
=
p
.
expr
.
match
.
needsContext
,
bg
=
{
children
:
!
0
,
contents
:
!
0
,
next
:
!
0
,
prev
:
!
0
};
p
.
fn
.
extend
({
find
:
function
(
a
){
var
b
,
c
,
d
,
e
,
f
,
g
,
h
=
this
;
if
(
typeof
a
!=
"
string
"
)
return
p
(
a
).
filter
(
function
(){
for
(
b
=
0
,
c
=
h
.
length
;
b
<
c
;
b
++
)
if
(
p
.
contains
(
h
[
b
],
this
))
return
!
0
});
g
=
this
.
pushStack
(
""
,
"
find
"
,
a
);
for
(
b
=
0
,
c
=
this
.
length
;
b
<
c
;
b
++
){
d
=
g
.
length
,
p
.
find
(
a
,
this
[
b
],
g
);
if
(
b
>
0
)
for
(
e
=
d
;
e
<
g
.
length
;
e
++
)
for
(
f
=
0
;
f
<
d
;
f
++
)
if
(
g
[
f
]
===
g
[
e
]){
g
.
splice
(
e
--
,
1
);
break
}}
return
g
},
has
:
function
(
a
){
var
b
,
c
=
p
(
a
,
this
),
d
=
c
.
length
;
return
this
.
filter
(
function
(){
for
(
b
=
0
;
b
<
d
;
b
++
)
if
(
p
.
contains
(
this
,
c
[
b
]))
return
!
0
})},
not
:
function
(
a
){
return
this
.
pushStack
(
bj
(
this
,
a
,
!
1
),
"
not
"
,
a
)},
filter
:
function
(
a
){
return
this
.
pushStack
(
bj
(
this
,
a
,
!
0
),
"
filter
"
,
a
)},
is
:
function
(
a
){
return
!!
a
&&
(
typeof
a
==
"
string
"
?
bf
.
test
(
a
)?
p
(
a
,
this
.
context
).
index
(
this
[
0
])
>=
0
:
p
.
filter
(
a
,
this
).
length
>
0
:
this
.
filter
(
a
).
length
>
0
)},
closest
:
function
(
a
,
b
){
var
c
,
d
=
0
,
e
=
this
.
length
,
f
=
[],
g
=
bf
.
test
(
a
)
||
typeof
a
!=
"
string
"
?
p
(
a
,
b
||
this
.
context
):
0
;
for
(;
d
<
e
;
d
++
){
c
=
this
[
d
];
while
(
c
&&
c
.
ownerDocument
&&
c
!==
b
&&
c
.
nodeType
!==
11
){
if
(
g
?
g
.
index
(
c
)
>-
1
:
p
.
find
.
matchesSelector
(
c
,
a
)){
f
.
push
(
c
);
break
}
c
=
c
.
parentNode
}}
return
f
=
f
.
length
>
1
?
p
.
unique
(
f
):
f
,
this
.
pushStack
(
f
,
"
closest
"
,
a
)},
index
:
function
(
a
){
return
a
?
typeof
a
==
"
string
"
?
p
.
inArray
(
this
[
0
],
p
(
a
)):
p
.
inArray
(
a
.
jquery
?
a
[
0
]:
a
,
this
):
this
[
0
]
&&
this
[
0
].
parentNode
?
this
.
prevAll
().
length
:
-
1
},
add
:
function
(
a
,
b
){
var
c
=
typeof
a
==
"
string
"
?
p
(
a
,
b
):
p
.
makeArray
(
a
&&
a
.
nodeType
?[
a
]:
a
),
d
=
p
.
merge
(
this
.
get
(),
c
);
return
this
.
pushStack
(
bh
(
c
[
0
])
||
bh
(
d
[
0
])?
d
:
p
.
unique
(
d
))},
addBack
:
function
(
a
){
return
this
.
add
(
a
==
null
?
this
.
prevObject
:
this
.
prevObject
.
filter
(
a
))}}),
p
.
fn
.
andSelf
=
p
.
fn
.
addBack
,
p
.
each
({
parent
:
function
(
a
){
var
b
=
a
.
parentNode
;
return
b
&&
b
.
nodeType
!==
11
?
b
:
null
},
parents
:
function
(
a
){
return
p
.
dir
(
a
,
"
parentNode
"
)},
parentsUntil
:
function
(
a
,
b
,
c
){
return
p
.
dir
(
a
,
"
parentNode
"
,
c
)},
next
:
function
(
a
){
return
bi
(
a
,
"
nextSibling
"
)},
prev
:
function
(
a
){
return
bi
(
a
,
"
previousSibling
"
)},
nextAll
:
function
(
a
){
return
p
.
dir
(
a
,
"
nextSibling
"
)},
prevAll
:
function
(
a
){
return
p
.
dir
(
a
,
"
previousSibling
"
)},
nextUntil
:
function
(
a
,
b
,
c
){
return
p
.
dir
(
a
,
"
nextSibling
"
,
c
)},
prevUntil
:
function
(
a
,
b
,
c
){
return
p
.
dir
(
a
,
"
previousSibling
"
,
c
)},
siblings
:
function
(
a
){
return
p
.
sibling
((
a
.
parentNode
||
{}).
firstChild
,
a
)},
children
:
function
(
a
){
return
p
.
sibling
(
a
.
firstChild
)},
contents
:
function
(
a
){
return
p
.
nodeName
(
a
,
"
iframe
"
)?
a
.
contentDocument
||
a
.
contentWindow
.
document
:
p
.
merge
([],
a
.
childNodes
)}},
function
(
a
,
b
){
p
.
fn
[
a
]
=
function
(
c
,
d
){
var
e
=
p
.
map
(
this
,
b
,
c
);
return
bc
.
test
(
a
)
||
(
d
=
c
),
d
&&
typeof
d
==
"
string
"
&&
(
e
=
p
.
filter
(
d
,
e
)),
e
=
this
.
length
>
1
&&!
bg
[
a
]?
p
.
unique
(
e
):
e
,
this
.
length
>
1
&&
bd
.
test
(
a
)
&&
(
e
=
e
.
reverse
()),
this
.
pushStack
(
e
,
a
,
k
.
call
(
arguments
).
join
(
"
,
"
))}}),
p
.
extend
({
filter
:
function
(
a
,
b
,
c
){
return
c
&&
(
a
=
"
:not(
"
+
a
+
"
)
"
),
b
.
length
===
1
?
p
.
find
.
matchesSelector
(
b
[
0
],
a
)?[
b
[
0
]]:[]:
p
.
find
.
matches
(
a
,
b
)},
dir
:
function
(
a
,
c
,
d
){
var
e
=
[],
f
=
a
[
c
];
while
(
f
&&
f
.
nodeType
!==
9
&&
(
d
===
b
||
f
.
nodeType
!==
1
||!
p
(
f
).
is
(
d
)))
f
.
nodeType
===
1
&&
e
.
push
(
f
),
f
=
f
[
c
];
return
e
},
sibling
:
function
(
a
,
b
){
var
c
=
[];
for
(;
a
;
a
=
a
.
nextSibling
)
a
.
nodeType
===
1
&&
a
!==
b
&&
c
.
push
(
a
);
return
c
}});
var
bl
=
"
abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video
"
,
bm
=
/ jQuery
\d
+="
(?:
null|
\d
+
)
"/g
,
bn
=
/^
\s
+/
,
bo
=
/<
(?!
area|br|col|embed|hr|img|input|link|meta|param
)(([\w
:
]
+
)[^
>
]
*
)\/
>/gi
,
bp
=
/<
([\w
:
]
+
)
/
,
bq
=
/<tbody/i
,
br
=
/<|&#
?\w
+;/
,
bs
=
/<
(?:
script|style|link
)
/i
,
bt
=
/<
(?:
script|object|embed|option|style
)
/i
,
bu
=
new
RegExp
(
"
<(?:
"
+
bl
+
"
)[
\\
s/>]
"
,
"
i
"
),
bv
=
/^
(?:
checkbox|radio
)
$/
,
bw
=
/checked
\s
*
(?:[^
=
]
|=
\s
*.checked.
)
/i
,
bx
=
/
\/(
java|ecma
)
script/i
,
by
=
/^
\s
*<!
(?:\[
CDATA
\[
|
\-\-)
|
[\]\-]{2}
>
\s
*$/g
,
bz
=
{
option
:[
1
,
"
<select multiple='multiple'>
"
,
"
</select>
"
],
legend
:[
1
,
"
<fieldset>
"
,
"
</fieldset>
"
],
thead
:[
1
,
"
<table>
"
,
"
</table>
"
],
tr
:[
2
,
"
<table><tbody>
"
,
"
</tbody></table>
"
],
td
:[
3
,
"
<table><tbody><tr>
"
,
"
</tr></tbody></table>
"
],
col
:[
2
,
"
<table><tbody></tbody><colgroup>
"
,
"
</colgroup></table>
"
],
area
:[
1
,
"
<map>
"
,
"
</map>
"
],
_default
:[
0
,
""
,
""
]},
bA
=
bk
(
e
),
bB
=
bA
.
appendChild
(
e
.
createElement
(
"
div
"
));
bz
.
optgroup
=
bz
.
option
,
bz
.
tbody
=
bz
.
tfoot
=
bz
.
colgroup
=
bz
.
caption
=
bz
.
thead
,
bz
.
th
=
bz
.
td
,
p
.
support
.
htmlSerialize
||
(
bz
.
_default
=
[
1
,
"
X<div>
"
,
"
</div>
"
]),
p
.
fn
.
extend
({
text
:
function
(
a
){
return
p
.
access
(
this
,
function
(
a
){
return
a
===
b
?
p
.
text
(
this
):
this
.
empty
().
append
((
this
[
0
]
&&
this
[
0
].
ownerDocument
||
e
).
createTextNode
(
a
))},
null
,
a
,
arguments
.
length
)},
wrapAll
:
function
(
a
){
if
(
p
.
isFunction
(
a
))
return
this
.
each
(
function
(
b
){
p
(
this
).
wrapAll
(
a
.
call
(
this
,
b
))});
if
(
this
[
0
]){
var
b
=
p
(
a
,
this
[
0
].
ownerDocument
).
eq
(
0
).
clone
(
!
0
);
this
[
0
].
parentNode
&&
b
.
insertBefore
(
this
[
0
]),
b
.
map
(
function
(){
var
a
=
this
;
while
(
a
.
firstChild
&&
a
.
firstChild
.
nodeType
===
1
)
a
=
a
.
firstChild
;
return
a
}).
append
(
this
)}
return
this
},
wrapInner
:
function
(
a
){
return
p
.
isFunction
(
a
)?
this
.
each
(
function
(
b
){
p
(
this
).
wrapInner
(
a
.
call
(
this
,
b
))}):
this
.
each
(
function
(){
var
b
=
p
(
this
),
c
=
b
.
contents
();
c
.
length
?
c
.
wrapAll
(
a
):
b
.
append
(
a
)})},
wrap
:
function
(
a
){
var
b
=
p
.
isFunction
(
a
);
return
this
.
each
(
function
(
c
){
p
(
this
).
wrapAll
(
b
?
a
.
call
(
this
,
c
):
a
)})},
unwrap
:
function
(){
return
this
.
parent
().
each
(
function
(){
p
.
nodeName
(
this
,
"
body
"
)
||
p
(
this
).
replaceWith
(
this
.
childNodes
)}).
end
()},
append
:
function
(){
return
this
.
domManip
(
arguments
,
!
0
,
function
(
a
){(
this
.
nodeType
===
1
||
this
.
nodeType
===
11
)
&&
this
.
appendChild
(
a
)})},
prepend
:
function
(){
return
this
.
domManip
(
arguments
,
!
0
,
function
(
a
){(
this
.
nodeType
===
1
||
this
.
nodeType
===
11
)
&&
this
.
insertBefore
(
a
,
this
.
firstChild
)})},
before
:
function
(){
if
(
!
bh
(
this
[
0
]))
return
this
.
domManip
(
arguments
,
!
1
,
function
(
a
){
this
.
parentNode
.
insertBefore
(
a
,
this
)});
if
(
arguments
.
length
){
var
a
=
p
.
clean
(
arguments
);
return
this
.
pushStack
(
p
.
merge
(
a
,
this
),
"
before
"
,
this
.
selector
)}},
after
:
function
(){
if
(
!
bh
(
this
[
0
]))
return
this
.
domManip
(
arguments
,
!
1
,
function
(
a
){
this
.
parentNode
.
insertBefore
(
a
,
this
.
nextSibling
)});
if
(
arguments
.
length
){
var
a
=
p
.
clean
(
arguments
);
return
this
.
pushStack
(
p
.
merge
(
this
,
a
),
"
after
"
,
this
.
selector
)}},
remove
:
function
(
a
,
b
){
var
c
,
d
=
0
;
for
(;(
c
=
this
[
d
])
!=
null
;
d
++
)
if
(
!
a
||
p
.
filter
(
a
,[
c
]).
length
)
!
b
&&
c
.
nodeType
===
1
&&
(
p
.
cleanData
(
c
.
getElementsByTagName
(
"
*
"
)),
p
.
cleanData
([
c
])),
c
.
parentNode
&&
c
.
parentNode
.
removeChild
(
c
);
return
this
},
empty
:
function
(){
var
a
,
b
=
0
;
for
(;(
a
=
this
[
b
])
!=
null
;
b
++
){
a
.
nodeType
===
1
&&
p
.
cleanData
(
a
.
getElementsByTagName
(
"
*
"
));
while
(
a
.
firstChild
)
a
.
removeChild
(
a
.
firstChild
)}
return
this
},
clone
:
function
(
a
,
b
){
return
a
=
a
==
null
?
!
1
:
a
,
b
=
b
==
null
?
a
:
b
,
this
.
map
(
function
(){
return
p
.
clone
(
this
,
a
,
b
)})},
html
:
function
(
a
){
return
p
.
access
(
this
,
function
(
a
){
var
c
=
this
[
0
]
||
{},
d
=
0
,
e
=
this
.
length
;
if
(
a
===
b
)
return
c
.
nodeType
===
1
?
c
.
innerHTML
.
replace
(
bm
,
""
):
b
;
if
(
typeof
a
==
"
string
"
&&!
bs
.
test
(
a
)
&&
(
p
.
support
.
htmlSerialize
||!
bu
.
test
(
a
))
&&
(
p
.
support
.
leadingWhitespace
||!
bn
.
test
(
a
))
&&!
bz
[(
bp
.
exec
(
a
)
||
[
""
,
""
])[
1
].
toLowerCase
()]){
a
=
a
.
replace
(
bo
,
"
<$1></$2>
"
);
try
{
for
(;
d
<
e
;
d
++
)
c
=
this
[
d
]
||
{},
c
.
nodeType
===
1
&&
(
p
.
cleanData
(
c
.
getElementsByTagName
(
"
*
"
)),
c
.
innerHTML
=
a
);
c
=
0
}
catch
(
f
){}}
c
&&
this
.
empty
().
append
(
a
)},
null
,
a
,
arguments
.
length
)},
replaceWith
:
function
(
a
){
return
bh
(
this
[
0
])?
this
.
length
?
this
.
pushStack
(
p
(
p
.
isFunction
(
a
)?
a
():
a
),
"
replaceWith
"
,
a
):
this
:
p
.
isFunction
(
a
)?
this
.
each
(
function
(
b
){
var
c
=
p
(
this
),
d
=
c
.
html
();
c
.
replaceWith
(
a
.
call
(
this
,
b
,
d
))}):(
typeof
a
!=
"
string
"
&&
(
a
=
p
(
a
).
detach
()),
this
.
each
(
function
(){
var
b
=
this
.
nextSibling
,
c
=
this
.
parentNode
;
p
(
this
).
remove
(),
b
?
p
(
b
).
before
(
a
):
p
(
c
).
append
(
a
)}))},
detach
:
function
(
a
){
return
this
.
remove
(
a
,
!
0
)},
domManip
:
function
(
a
,
c
,
d
){
a
=
[].
concat
.
apply
([],
a
);
var
e
,
f
,
g
,
h
,
i
=
0
,
j
=
a
[
0
],
k
=
[],
l
=
this
.
length
;
if
(
!
p
.
support
.
checkClone
&&
l
>
1
&&
typeof
j
==
"
string
"
&&
bw
.
test
(
j
))
return
this
.
each
(
function
(){
p
(
this
).
domManip
(
a
,
c
,
d
)});
if
(
p
.
isFunction
(
j
))
return
this
.
each
(
function
(
e
){
var
f
=
p
(
this
);
a
[
0
]
=
j
.
call
(
this
,
e
,
c
?
f
.
html
():
b
),
f
.
domManip
(
a
,
c
,
d
)});
if
(
this
[
0
]){
e
=
p
.
buildFragment
(
a
,
this
,
k
),
g
=
e
.
fragment
,
f
=
g
.
firstChild
,
g
.
childNodes
.
length
===
1
&&
(
g
=
f
);
if
(
f
){
c
=
c
&&
p
.
nodeName
(
f
,
"
tr
"
);
for
(
h
=
e
.
cacheable
||
l
-
1
;
i
<
l
;
i
++
)
d
.
call
(
c
&&
p
.
nodeName
(
this
[
i
],
"
table
"
)?
bC
(
this
[
i
],
"
tbody
"
):
this
[
i
],
i
===
h
?
g
:
p
.
clone
(
g
,
!
0
,
!
0
))}
g
=
f
=
null
,
k
.
length
&&
p
.
each
(
k
,
function
(
a
,
b
){
b
.
src
?
p
.
ajax
?
p
.
ajax
({
url
:
b
.
src
,
type
:
"
GET
"
,
dataType
:
"
script
"
,
async
:
!
1
,
global
:
!
1
,
"
throws
"
:
!
0
}):
p
.
error
(
"
no ajax
"
):
p
.
globalEval
((
b
.
text
||
b
.
textContent
||
b
.
innerHTML
||
""
).
replace
(
by
,
""
)),
b
.
parentNode
&&
b
.
parentNode
.
removeChild
(
b
)})}
return
this
}}),
p
.
buildFragment
=
function
(
a
,
c
,
d
){
var
f
,
g
,
h
,
i
=
a
[
0
];
return
c
=
c
||
e
,
c
=!
c
.
nodeType
&&
c
[
0
]
||
c
,
c
=
c
.
ownerDocument
||
c
,
a
.
length
===
1
&&
typeof
i
==
"
string
"
&&
i
.
length
<
512
&&
c
===
e
&&
i
.
charAt
(
0
)
===
"
<
"
&&!
bt
.
test
(
i
)
&&
(
p
.
support
.
checkClone
||!
bw
.
test
(
i
))
&&
(
p
.
support
.
html5Clone
||!
bu
.
test
(
i
))
&&
(
g
=!
0
,
f
=
p
.
fragments
[
i
],
h
=
f
!==
b
),
f
||
(
f
=
c
.
createDocumentFragment
(),
p
.
clean
(
a
,
c
,
f
,
d
),
g
&&
(
p
.
fragments
[
i
]
=
h
&&
f
)),{
fragment
:
f
,
cacheable
:
g
}},
p
.
fragments
=
{},
p
.
each
({
appendTo
:
"
append
"
,
prependTo
:
"
prepend
"
,
insertBefore
:
"
before
"
,
insertAfter
:
"
after
"
,
replaceAll
:
"
replaceWith
"
},
function
(
a
,
b
){
p
.
fn
[
a
]
=
function
(
c
){
var
d
,
e
=
0
,
f
=
[],
g
=
p
(
c
),
h
=
g
.
length
,
i
=
this
.
length
===
1
&&
this
[
0
].
parentNode
;
if
((
i
==
null
||
i
&&
i
.
nodeType
===
11
&&
i
.
childNodes
.
length
===
1
)
&&
h
===
1
)
return
g
[
b
](
this
[
0
]),
this
;
for
(;
e
<
h
;
e
++
)
d
=
(
e
>
0
?
this
.
clone
(
!
0
):
this
).
get
(),
p
(
g
[
e
])[
b
](
d
),
f
=
f
.
concat
(
d
);
return
this
.
pushStack
(
f
,
a
,
g
.
selector
)}}),
p
.
extend
({
clone
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
;
p
.
support
.
html5Clone
||
p
.
isXMLDoc
(
a
)
||!
bu
.
test
(
"
<
"
+
a
.
nodeName
+
"
>
"
)?
g
=
a
.
cloneNode
(
!
0
):(
bB
.
innerHTML
=
a
.
outerHTML
,
bB
.
removeChild
(
g
=
bB
.
firstChild
));
if
((
!
p
.
support
.
noCloneEvent
||!
p
.
support
.
noCloneChecked
)
&&
(
a
.
nodeType
===
1
||
a
.
nodeType
===
11
)
&&!
p
.
isXMLDoc
(
a
)){
bE
(
a
,
g
),
d
=
bF
(
a
),
e
=
bF
(
g
);
for
(
f
=
0
;
d
[
f
];
++
f
)
e
[
f
]
&&
bE
(
d
[
f
],
e
[
f
])}
if
(
b
){
bD
(
a
,
g
);
if
(
c
){
d
=
bF
(
a
),
e
=
bF
(
g
);
for
(
f
=
0
;
d
[
f
];
++
f
)
bD
(
d
[
f
],
e
[
f
])}}
return
d
=
e
=
null
,
g
},
clean
:
function
(
a
,
b
,
c
,
d
){
var
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
,
q
,
r
,
s
=
b
===
e
&&
bA
,
t
=
[];
if
(
!
b
||
typeof
b
.
createDocumentFragment
==
"
undefined
"
)
b
=
e
;
for
(
f
=
0
;(
h
=
a
[
f
])
!=
null
;
f
++
){
typeof
h
==
"
number
"
&&
(
h
+=
""
);
if
(
!
h
)
continue
;
if
(
typeof
h
==
"
string
"
)
if
(
!
br
.
test
(
h
))
h
=
b
.
createTextNode
(
h
);
else
{
s
=
s
||
bk
(
b
),
l
=
b
.
createElement
(
"
div
"
),
s
.
appendChild
(
l
),
h
=
h
.
replace
(
bo
,
"
<$1></$2>
"
),
i
=
(
bp
.
exec
(
h
)
||
[
""
,
""
])[
1
].
toLowerCase
(),
j
=
bz
[
i
]
||
bz
.
_default
,
k
=
j
[
0
],
l
.
innerHTML
=
j
[
1
]
+
h
+
j
[
2
];
while
(
k
--
)
l
=
l
.
lastChild
;
if
(
!
p
.
support
.
tbody
){
m
=
bq
.
test
(
h
),
n
=
i
===
"
table
"
&&!
m
?
l
.
firstChild
&&
l
.
firstChild
.
childNodes
:
j
[
1
]
===
"
<table>
"
&&!
m
?
l
.
childNodes
:[];
for
(
g
=
n
.
length
-
1
;
g
>=
0
;
--
g
)
p
.
nodeName
(
n
[
g
],
"
tbody
"
)
&&!
n
[
g
].
childNodes
.
length
&&
n
[
g
].
parentNode
.
removeChild
(
n
[
g
])}
!
p
.
support
.
leadingWhitespace
&&
bn
.
test
(
h
)
&&
l
.
insertBefore
(
b
.
createTextNode
(
bn
.
exec
(
h
)[
0
]),
l
.
firstChild
),
h
=
l
.
childNodes
,
l
.
parentNode
.
removeChild
(
l
)}
h
.
nodeType
?
t
.
push
(
h
):
p
.
merge
(
t
,
h
)}
l
&&
(
h
=
l
=
s
=
null
);
if
(
!
p
.
support
.
appendChecked
)
for
(
f
=
0
;(
h
=
t
[
f
])
!=
null
;
f
++
)
p
.
nodeName
(
h
,
"
input
"
)?
bG
(
h
):
typeof
h
.
getElementsByTagName
!=
"
undefined
"
&&
p
.
grep
(
h
.
getElementsByTagName
(
"
input
"
),
bG
);
if
(
c
){
q
=
function
(
a
){
if
(
!
a
.
type
||
bx
.
test
(
a
.
type
))
return
d
?
d
.
push
(
a
.
parentNode
?
a
.
parentNode
.
removeChild
(
a
):
a
):
c
.
appendChild
(
a
)};
for
(
f
=
0
;(
h
=
t
[
f
])
!=
null
;
f
++
)
if
(
!
p
.
nodeName
(
h
,
"
script
"
)
||!
q
(
h
))
c
.
appendChild
(
h
),
typeof
h
.
getElementsByTagName
!=
"
undefined
"
&&
(
r
=
p
.
grep
(
p
.
merge
([],
h
.
getElementsByTagName
(
"
script
"
)),
q
),
t
.
splice
.
apply
(
t
,[
f
+
1
,
0
].
concat
(
r
)),
f
+=
r
.
length
)}
return
t
},
cleanData
:
function
(
a
,
b
){
var
c
,
d
,
e
,
f
,
g
=
0
,
h
=
p
.
expando
,
i
=
p
.
cache
,
j
=
p
.
support
.
deleteExpando
,
k
=
p
.
event
.
special
;
for
(;(
e
=
a
[
g
])
!=
null
;
g
++
)
if
(
b
||
p
.
acceptData
(
e
)){
d
=
e
[
h
],
c
=
d
&&
i
[
d
];
if
(
c
){
if
(
c
.
events
)
for
(
f
in
c
.
events
)
k
[
f
]?
p
.
event
.
remove
(
e
,
f
):
p
.
removeEvent
(
e
,
f
,
c
.
handle
);
i
[
d
]
&&
(
delete
i
[
d
],
j
?
delete
e
[
h
]:
e
.
removeAttribute
?
e
.
removeAttribute
(
h
):
e
[
h
]
=
null
,
p
.
deletedIds
.
push
(
d
))}}}}),
function
(){
var
a
,
b
;
p
.
uaMatch
=
function
(
a
){
a
=
a
.
toLowerCase
();
var
b
=
/
(
chrome
)[
\/]([\w
.
]
+
)
/
.
exec
(
a
)
||
/
(
webkit
)[
\/]([\w
.
]
+
)
/
.
exec
(
a
)
||
/
(
opera
)(?:
.*version|
)[
\/]([\w
.
]
+
)
/
.
exec
(
a
)
||
/
(
msie
)
([\w
.
]
+
)
/
.
exec
(
a
)
||
a
.
indexOf
(
"
compatible
"
)
<
0
&&
/
(
mozilla
)(?:
.*
?
rv:
([\w
.
]
+
)
|
)
/
.
exec
(
a
)
||
[];
return
{
browser
:
b
[
1
]
||
""
,
version
:
b
[
2
]
||
"
0
"
}},
a
=
p
.
uaMatch
(
g
.
userAgent
),
b
=
{},
a
.
browser
&&
(
b
[
a
.
browser
]
=!
0
,
b
.
version
=
a
.
version
),
b
.
chrome
?
b
.
webkit
=!
0
:
b
.
webkit
&&
(
b
.
safari
=!
0
),
p
.
browser
=
b
,
p
.
sub
=
function
(){
function
a
(
b
,
c
){
return
new
a
.
fn
.
init
(
b
,
c
)}
p
.
extend
(
!
0
,
a
,
this
),
a
.
superclass
=
this
,
a
.
fn
=
a
.
prototype
=
this
(),
a
.
fn
.
constructor
=
a
,
a
.
sub
=
this
.
sub
,
a
.
fn
.
init
=
function
c
(
c
,
d
){
return
d
&&
d
instanceof
p
&&!
(
d
instanceof
a
)
&&
(
d
=
a
(
d
)),
p
.
fn
.
init
.
call
(
this
,
c
,
d
,
b
)},
a
.
fn
.
init
.
prototype
=
a
.
fn
;
var
b
=
a
(
e
);
return
a
}}();
var
bH
,
bI
,
bJ
,
bK
=
/alpha
\([^
)
]
*
\)
/i
,
bL
=
/opacity=
([^
)
]
*
)
/
,
bM
=
/^
(
top|right|bottom|left
)
$/
,
bN
=
/^
(
none|table
(?!
-c
[
ea
])
.+
)
/
,
bO
=
/^margin/
,
bP
=
new
RegExp
(
"
^(
"
+
q
+
"
)(.*)$
"
,
"
i
"
),
bQ
=
new
RegExp
(
"
^(
"
+
q
+
"
)(?!px)[a-z%]+$
"
,
"
i
"
),
bR
=
new
RegExp
(
"
^([-+])=(
"
+
q
+
"
)
"
,
"
i
"
),
bS
=
{},
bT
=
{
position
:
"
absolute
"
,
visibility
:
"
hidden
"
,
display
:
"
block
"
},
bU
=
{
letterSpacing
:
0
,
fontWeight
:
400
},
bV
=
[
"
Top
"
,
"
Right
"
,
"
Bottom
"
,
"
Left
"
],
bW
=
[
"
Webkit
"
,
"
O
"
,
"
Moz
"
,
"
ms
"
],
bX
=
p
.
fn
.
toggle
;
p
.
fn
.
extend
({
css
:
function
(
a
,
c
){
return
p
.
access
(
this
,
function
(
a
,
c
,
d
){
return
d
!==
b
?
p
.
style
(
a
,
c
,
d
):
p
.
css
(
a
,
c
)},
a
,
c
,
arguments
.
length
>
1
)},
show
:
function
(){
return
b$
(
this
,
!
0
)},
hide
:
function
(){
return
b$
(
this
)},
toggle
:
function
(
a
,
b
){
var
c
=
typeof
a
==
"
boolean
"
;
return
p
.
isFunction
(
a
)
&&
p
.
isFunction
(
b
)?
bX
.
apply
(
this
,
arguments
):
this
.
each
(
function
(){(
c
?
a
:
bZ
(
this
))?
p
(
this
).
show
():
p
(
this
).
hide
()})}}),
p
.
extend
({
cssHooks
:{
opacity
:{
get
:
function
(
a
,
b
){
if
(
b
){
var
c
=
bH
(
a
,
"
opacity
"
);
return
c
===
""
?
"
1
"
:
c
}}}},
cssNumber
:{
fillOpacity
:
!
0
,
fontWeight
:
!
0
,
lineHeight
:
!
0
,
opacity
:
!
0
,
orphans
:
!
0
,
widows
:
!
0
,
zIndex
:
!
0
,
zoom
:
!
0
},
cssProps
:{
"
float
"
:
p
.
support
.
cssFloat
?
"
cssFloat
"
:
"
styleFloat
"
},
style
:
function
(
a
,
c
,
d
,
e
){
if
(
!
a
||
a
.
nodeType
===
3
||
a
.
nodeType
===
8
||!
a
.
style
)
return
;
var
f
,
g
,
h
,
i
=
p
.
camelCase
(
c
),
j
=
a
.
style
;
c
=
p
.
cssProps
[
i
]
||
(
p
.
cssProps
[
i
]
=
bY
(
j
,
i
)),
h
=
p
.
cssHooks
[
c
]
||
p
.
cssHooks
[
i
];
if
(
d
===
b
)
return
h
&&
"
get
"
in
h
&&
(
f
=
h
.
get
(
a
,
!
1
,
e
))
!==
b
?
f
:
j
[
c
];
g
=
typeof
d
,
g
===
"
string
"
&&
(
f
=
bR
.
exec
(
d
))
&&
(
d
=
(
f
[
1
]
+
1
)
*
f
[
2
]
+
parseFloat
(
p
.
css
(
a
,
c
)),
g
=
"
number
"
);
if
(
d
==
null
||
g
===
"
number
"
&&
isNaN
(
d
))
return
;
g
===
"
number
"
&&!
p
.
cssNumber
[
i
]
&&
(
d
+=
"
px
"
);
if
(
!
h
||!
(
"
set
"
in
h
)
||
(
d
=
h
.
set
(
a
,
d
,
e
))
!==
b
)
try
{
j
[
c
]
=
d
}
catch
(
k
){}},
css
:
function
(
a
,
c
,
d
,
e
){
var
f
,
g
,
h
,
i
=
p
.
camelCase
(
c
);
return
c
=
p
.
cssProps
[
i
]
||
(
p
.
cssProps
[
i
]
=
bY
(
a
.
style
,
i
)),
h
=
p
.
cssHooks
[
c
]
||
p
.
cssHooks
[
i
],
h
&&
"
get
"
in
h
&&
(
f
=
h
.
get
(
a
,
!
0
,
e
)),
f
===
b
&&
(
f
=
bH
(
a
,
c
)),
f
===
"
normal
"
&&
c
in
bU
&&
(
f
=
bU
[
c
]),
d
||
e
!==
b
?(
g
=
parseFloat
(
f
),
d
||
p
.
isNumeric
(
g
)?
g
||
0
:
f
):
f
},
swap
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
=
{};
for
(
e
in
b
)
f
[
e
]
=
a
.
style
[
e
],
a
.
style
[
e
]
=
b
[
e
];
d
=
c
.
call
(
a
);
for
(
e
in
b
)
a
.
style
[
e
]
=
f
[
e
];
return
d
}}),
a
.
getComputedStyle
?
bH
=
function
(
b
,
c
){
var
d
,
e
,
f
,
g
,
h
=
a
.
getComputedStyle
(
b
,
null
),
i
=
b
.
style
;
return
h
&&
(
d
=
h
[
c
],
d
===
""
&&!
p
.
contains
(
b
.
ownerDocument
,
b
)
&&
(
d
=
p
.
style
(
b
,
c
)),
bQ
.
test
(
d
)
&&
bO
.
test
(
c
)
&&
(
e
=
i
.
width
,
f
=
i
.
minWidth
,
g
=
i
.
maxWidth
,
i
.
minWidth
=
i
.
maxWidth
=
i
.
width
=
d
,
d
=
h
.
width
,
i
.
width
=
e
,
i
.
minWidth
=
f
,
i
.
maxWidth
=
g
)),
d
}:
e
.
documentElement
.
currentStyle
&&
(
bH
=
function
(
a
,
b
){
var
c
,
d
,
e
=
a
.
currentStyle
&&
a
.
currentStyle
[
b
],
f
=
a
.
style
;
return
e
==
null
&&
f
&&
f
[
b
]
&&
(
e
=
f
[
b
]),
bQ
.
test
(
e
)
&&!
bM
.
test
(
b
)
&&
(
c
=
f
.
left
,
d
=
a
.
runtimeStyle
&&
a
.
runtimeStyle
.
left
,
d
&&
(
a
.
runtimeStyle
.
left
=
a
.
currentStyle
.
left
),
f
.
left
=
b
===
"
fontSize
"
?
"
1em
"
:
e
,
e
=
f
.
pixelLeft
+
"
px
"
,
f
.
left
=
c
,
d
&&
(
a
.
runtimeStyle
.
left
=
d
)),
e
===
""
?
"
auto
"
:
e
}),
p
.
each
([
"
height
"
,
"
width
"
],
function
(
a
,
b
){
p
.
cssHooks
[
b
]
=
{
get
:
function
(
a
,
c
,
d
){
if
(
c
)
return
a
.
offsetWidth
===
0
&&
bN
.
test
(
bH
(
a
,
"
display
"
))?
p
.
swap
(
a
,
bT
,
function
(){
return
cb
(
a
,
b
,
d
)}):
cb
(
a
,
b
,
d
)},
set
:
function
(
a
,
c
,
d
){
return
b_
(
a
,
c
,
d
?
ca
(
a
,
b
,
d
,
p
.
support
.
boxSizing
&&
p
.
css
(
a
,
"
boxSizing
"
)
===
"
border-box
"
):
0
)}}}),
p
.
support
.
opacity
||
(
p
.
cssHooks
.
opacity
=
{
get
:
function
(
a
,
b
){
return
bL
.
test
((
b
&&
a
.
currentStyle
?
a
.
currentStyle
.
filter
:
a
.
style
.
filter
)
||
""
)?.
01
*
parseFloat
(
RegExp
.
$1
)
+
""
:
b
?
"
1
"
:
""
},
set
:
function
(
a
,
b
){
var
c
=
a
.
style
,
d
=
a
.
currentStyle
,
e
=
p
.
isNumeric
(
b
)?
"
alpha(opacity=
"
+
b
*
100
+
"
)
"
:
""
,
f
=
d
&&
d
.
filter
||
c
.
filter
||
""
;
c
.
zoom
=
1
;
if
(
b
>=
1
&&
p
.
trim
(
f
.
replace
(
bK
,
""
))
===
""
&&
c
.
removeAttribute
){
c
.
removeAttribute
(
"
filter
"
);
if
(
d
&&!
d
.
filter
)
return
}
c
.
filter
=
bK
.
test
(
f
)?
f
.
replace
(
bK
,
e
):
f
+
"
"
+
e
}}),
p
(
function
(){
p
.
support
.
reliableMarginRight
||
(
p
.
cssHooks
.
marginRight
=
{
get
:
function
(
a
,
b
){
return
p
.
swap
(
a
,{
display
:
"
inline-block
"
},
function
(){
if
(
b
)
return
bH
(
a
,
"
marginRight
"
)})}}),
!
p
.
support
.
pixelPosition
&&
p
.
fn
.
position
&&
p
.
each
([
"
top
"
,
"
left
"
],
function
(
a
,
b
){
p
.
cssHooks
[
b
]
=
{
get
:
function
(
a
,
c
){
if
(
c
){
var
d
=
bH
(
a
,
b
);
return
bQ
.
test
(
d
)?
p
(
a
).
position
()[
b
]
+
"
px
"
:
d
}}}})}),
p
.
expr
&&
p
.
expr
.
filters
&&
(
p
.
expr
.
filters
.
hidden
=
function
(
a
){
return
a
.
offsetWidth
===
0
&&
a
.
offsetHeight
===
0
||!
p
.
support
.
reliableHiddenOffsets
&&
(
a
.
style
&&
a
.
style
.
display
||
bH
(
a
,
"
display
"
))
===
"
none
"
},
p
.
expr
.
filters
.
visible
=
function
(
a
){
return
!
p
.
expr
.
filters
.
hidden
(
a
)}),
p
.
each
({
margin
:
""
,
padding
:
""
,
border
:
"
Width
"
},
function
(
a
,
b
){
p
.
cssHooks
[
a
+
b
]
=
{
expand
:
function
(
c
){
var
d
,
e
=
typeof
c
==
"
string
"
?
c
.
split
(
"
"
):[
c
],
f
=
{};
for
(
d
=
0
;
d
<
4
;
d
++
)
f
[
a
+
bV
[
d
]
+
b
]
=
e
[
d
]
||
e
[
d
-
2
]
||
e
[
0
];
return
f
}},
bO
.
test
(
a
)
||
(
p
.
cssHooks
[
a
+
b
].
set
=
b_
)});
var
cd
=
/%20/g
,
ce
=
/
\[\]
$/
,
cf
=
/
\r?\n
/g
,
cg
=
/^
(?:
color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week
)
$/i
,
ch
=
/^
(?:
select|textarea
)
/i
;
p
.
fn
.
extend
({
serialize
:
function
(){
return
p
.
param
(
this
.
serializeArray
())},
serializeArray
:
function
(){
return
this
.
map
(
function
(){
return
this
.
elements
?
p
.
makeArray
(
this
.
elements
):
this
}).
filter
(
function
(){
return
this
.
name
&&!
this
.
disabled
&&
(
this
.
checked
||
ch
.
test
(
this
.
nodeName
)
||
cg
.
test
(
this
.
type
))}).
map
(
function
(
a
,
b
){
var
c
=
p
(
this
).
val
();
return
c
==
null
?
null
:
p
.
isArray
(
c
)?
p
.
map
(
c
,
function
(
a
,
c
){
return
{
name
:
b
.
name
,
value
:
a
.
replace
(
cf
,
"
\r\n
"
)}}):{
name
:
b
.
name
,
value
:
c
.
replace
(
cf
,
"
\r\n
"
)}}).
get
()}}),
p
.
param
=
function
(
a
,
c
){
var
d
,
e
=
[],
f
=
function
(
a
,
b
){
b
=
p
.
isFunction
(
b
)?
b
():
b
==
null
?
""
:
b
,
e
[
e
.
length
]
=
encodeURIComponent
(
a
)
+
"
=
"
+
encodeURIComponent
(
b
)};
c
===
b
&&
(
c
=
p
.
ajaxSettings
&&
p
.
ajaxSettings
.
traditional
);
if
(
p
.
isArray
(
a
)
||
a
.
jquery
&&!
p
.
isPlainObject
(
a
))
p
.
each
(
a
,
function
(){
f
(
this
.
name
,
this
.
value
)});
else
for
(
d
in
a
)
ci
(
d
,
a
[
d
],
c
,
f
);
return
e
.
join
(
"
&
"
).
replace
(
cd
,
"
+
"
)};
var
cj
,
ck
,
cl
=
/#.*$/
,
cm
=
/^
(
.*
?)
:
[
\t]
*
([^\r\n]
*
)\r?
$/mg
,
cn
=
/^
(?:
about|app|app
\-
storage|.+
\-
extension|file|res|widget
)
:$/
,
co
=
/^
(?:
GET|HEAD
)
$/
,
cp
=
/^
\/\/
/
,
cq
=
/
\?
/
,
cr
=
/<script
\b[^
<
]
*
(?:(?!
<
\/
script>
)
<
[^
<
]
*
)
*<
\/
script>/gi
,
cs
=
/
([
?&
])
_=
[^
&
]
*/
,
ct
=
/^
([\w\+\.\-]
+:
)(?:\/\/([^\/
?#:
]
*
)(?:
:
(\d
+
)
|
)
|
)
/
,
cu
=
p
.
fn
.
load
,
cv
=
{},
cw
=
{},
cx
=
[
"
*/
"
]
+
[
"
*
"
];
try
{
ck
=
f
.
href
}
catch
(
cy
){
ck
=
e
.
createElement
(
"
a
"
),
ck
.
href
=
""
,
ck
=
ck
.
href
}
cj
=
ct
.
exec
(
ck
.
toLowerCase
())
||
[],
p
.
fn
.
load
=
function
(
a
,
c
,
d
){
if
(
typeof
a
!=
"
string
"
&&
cu
)
return
cu
.
apply
(
this
,
arguments
);
if
(
!
this
.
length
)
return
this
;
var
e
,
f
,
g
,
h
=
this
,
i
=
a
.
indexOf
(
"
"
);
return
i
>=
0
&&
(
e
=
a
.
slice
(
i
,
a
.
length
),
a
=
a
.
slice
(
0
,
i
)),
p
.
isFunction
(
c
)?(
d
=
c
,
c
=
b
):
c
&&
typeof
c
==
"
object
"
&&
(
f
=
"
POST
"
),
p
.
ajax
({
url
:
a
,
type
:
f
,
dataType
:
"
html
"
,
data
:
c
,
complete
:
function
(
a
,
b
){
d
&&
h
.
each
(
d
,
g
||
[
a
.
responseText
,
b
,
a
])}}).
done
(
function
(
a
){
g
=
arguments
,
h
.
html
(
e
?
p
(
"
<div>
"
).
append
(
a
.
replace
(
cr
,
""
)).
find
(
e
):
a
)}),
this
},
p
.
each
(
"
ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend
"
.
split
(
"
"
),
function
(
a
,
b
){
p
.
fn
[
b
]
=
function
(
a
){
return
this
.
on
(
b
,
a
)}}),
p
.
each
([
"
get
"
,
"
post
"
],
function
(
a
,
c
){
p
[
c
]
=
function
(
a
,
d
,
e
,
f
){
return
p
.
isFunction
(
d
)
&&
(
f
=
f
||
e
,
e
=
d
,
d
=
b
),
p
.
ajax
({
type
:
c
,
url
:
a
,
data
:
d
,
success
:
e
,
dataType
:
f
})}}),
p
.
extend
({
getScript
:
function
(
a
,
c
){
return
p
.
get
(
a
,
b
,
c
,
"
script
"
)},
getJSON
:
function
(
a
,
b
,
c
){
return
p
.
get
(
a
,
b
,
c
,
"
json
"
)},
ajaxSetup
:
function
(
a
,
b
){
return
b
?
cB
(
a
,
p
.
ajaxSettings
):(
b
=
a
,
a
=
p
.
ajaxSettings
),
cB
(
a
,
b
),
a
},
ajaxSettings
:{
url
:
ck
,
isLocal
:
cn
.
test
(
cj
[
1
]),
global
:
!
0
,
type
:
"
GET
"
,
contentType
:
"
application/x-www-form-urlencoded; charset=UTF-8
"
,
processData
:
!
0
,
async
:
!
0
,
accepts
:{
xml
:
"
application/xml, text/xml
"
,
html
:
"
text/html
"
,
text
:
"
text/plain
"
,
json
:
"
application/json, text/javascript
"
,
"
*
"
:
cx
},
contents
:{
xml
:
/xml/
,
html
:
/html/
,
json
:
/json/
},
responseFields
:{
xml
:
"
responseXML
"
,
text
:
"
responseText
"
},
converters
:{
"
* text
"
:
a
.
String
,
"
text html
"
:
!
0
,
"
text json
"
:
p
.
parseJSON
,
"
text xml
"
:
p
.
parseXML
},
flatOptions
:{
context
:
!
0
,
url
:
!
0
}},
ajaxPrefilter
:
cz
(
cv
),
ajaxTransport
:
cz
(
cw
),
ajax
:
function
(
a
,
c
){
function
y
(
a
,
c
,
f
,
i
){
var
k
,
s
,
t
,
u
,
w
,
y
=
c
;
if
(
v
===
2
)
return
;
v
=
2
,
h
&&
clearTimeout
(
h
),
g
=
b
,
e
=
i
||
""
,
x
.
readyState
=
a
>
0
?
4
:
0
,
f
&&
(
u
=
cC
(
l
,
x
,
f
));
if
(
a
>=
200
&&
a
<
300
||
a
===
304
)
l
.
ifModified
&&
(
w
=
x
.
getResponseHeader
(
"
Last-Modified
"
),
w
&&
(
p
.
lastModified
[
d
]
=
w
),
w
=
x
.
getResponseHeader
(
"
Etag
"
),
w
&&
(
p
.
etag
[
d
]
=
w
)),
a
===
304
?(
y
=
"
notmodified
"
,
k
=!
0
):(
k
=
cD
(
l
,
u
),
y
=
k
.
state
,
s
=
k
.
data
,
t
=
k
.
error
,
k
=!
t
);
else
{
t
=
y
;
if
(
!
y
||
a
)
y
=
"
error
"
,
a
<
0
&&
(
a
=
0
)}
x
.
status
=
a
,
x
.
statusText
=
(
c
||
y
)
+
""
,
k
?
o
.
resolveWith
(
m
,[
s
,
y
,
x
]):
o
.
rejectWith
(
m
,[
x
,
y
,
t
]),
x
.
statusCode
(
r
),
r
=
b
,
j
&&
n
.
trigger
(
"
ajax
"
+
(
k
?
"
Success
"
:
"
Error
"
),[
x
,
l
,
k
?
s
:
t
]),
q
.
fireWith
(
m
,[
x
,
y
]),
j
&&
(
n
.
trigger
(
"
ajaxComplete
"
,[
x
,
l
]),
--
p
.
active
||
p
.
event
.
trigger
(
"
ajaxStop
"
))}
typeof
a
==
"
object
"
&&
(
c
=
a
,
a
=
b
),
c
=
c
||
{};
var
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
,
l
=
p
.
ajaxSetup
({},
c
),
m
=
l
.
context
||
l
,
n
=
m
!==
l
&&
(
m
.
nodeType
||
m
instanceof
p
)?
p
(
m
):
p
.
event
,
o
=
p
.
Deferred
(),
q
=
p
.
Callbacks
(
"
once memory
"
),
r
=
l
.
statusCode
||
{},
t
=
{},
u
=
{},
v
=
0
,
w
=
"
canceled
"
,
x
=
{
readyState
:
0
,
setRequestHeader
:
function
(
a
,
b
){
if
(
!
v
){
var
c
=
a
.
toLowerCase
();
a
=
u
[
c
]
=
u
[
c
]
||
a
,
t
[
a
]
=
b
}
return
this
},
getAllResponseHeaders
:
function
(){
return
v
===
2
?
e
:
null
},
getResponseHeader
:
function
(
a
){
var
c
;
if
(
v
===
2
){
if
(
!
f
){
f
=
{};
while
(
c
=
cm
.
exec
(
e
))
f
[
c
[
1
].
toLowerCase
()]
=
c
[
2
]}
c
=
f
[
a
.
toLowerCase
()]}
return
c
===
b
?
null
:
c
},
overrideMimeType
:
function
(
a
){
return
v
||
(
l
.
mimeType
=
a
),
this
},
abort
:
function
(
a
){
return
a
=
a
||
w
,
g
&&
g
.
abort
(
a
),
y
(
0
,
a
),
this
}};
o
.
promise
(
x
),
x
.
success
=
x
.
done
,
x
.
error
=
x
.
fail
,
x
.
complete
=
q
.
add
,
x
.
statusCode
=
function
(
a
){
if
(
a
){
var
b
;
if
(
v
<
2
)
for
(
b
in
a
)
r
[
b
]
=
[
r
[
b
],
a
[
b
]];
else
b
=
a
[
x
.
status
],
x
.
always
(
b
)}
return
this
},
l
.
url
=
((
a
||
l
.
url
)
+
""
).
replace
(
cl
,
""
).
replace
(
cp
,
cj
[
1
]
+
"
//
"
),
l
.
dataTypes
=
p
.
trim
(
l
.
dataType
||
"
*
"
).
toLowerCase
().
split
(
s
),
l
.
crossDomain
==
null
&&
(
i
=
ct
.
exec
(
l
.
url
.
toLowerCase
())
||!
1
,
l
.
crossDomain
=
i
&&
i
.
join
(
"
:
"
)
+
(
i
[
3
]?
""
:
i
[
1
]
===
"
http:
"
?
80
:
443
)
!==
cj
.
join
(
"
:
"
)
+
(
cj
[
3
]?
""
:
cj
[
1
]
===
"
http:
"
?
80
:
443
)),
l
.
data
&&
l
.
processData
&&
typeof
l
.
data
!=
"
string
"
&&
(
l
.
data
=
p
.
param
(
l
.
data
,
l
.
traditional
)),
cA
(
cv
,
l
,
c
,
x
);
if
(
v
===
2
)
return
x
;
j
=
l
.
global
,
l
.
type
=
l
.
type
.
toUpperCase
(),
l
.
hasContent
=!
co
.
test
(
l
.
type
),
j
&&
p
.
active
++===
0
&&
p
.
event
.
trigger
(
"
ajaxStart
"
);
if
(
!
l
.
hasContent
){
l
.
data
&&
(
l
.
url
+=
(
cq
.
test
(
l
.
url
)?
"
&
"
:
"
?
"
)
+
l
.
data
,
delete
l
.
data
),
d
=
l
.
url
;
if
(
l
.
cache
===!
1
){
var
z
=
p
.
now
(),
A
=
l
.
url
.
replace
(
cs
,
"
$1_=
"
+
z
);
l
.
url
=
A
+
(
A
===
l
.
url
?(
cq
.
test
(
l
.
url
)?
"
&
"
:
"
?
"
)
+
"
_=
"
+
z
:
""
)}}(
l
.
data
&&
l
.
hasContent
&&
l
.
contentType
!==!
1
||
c
.
contentType
)
&&
x
.
setRequestHeader
(
"
Content-Type
"
,
l
.
contentType
),
l
.
ifModified
&&
(
d
=
d
||
l
.
url
,
p
.
lastModified
[
d
]
&&
x
.
setRequestHeader
(
"
If-Modified-Since
"
,
p
.
lastModified
[
d
]),
p
.
etag
[
d
]
&&
x
.
setRequestHeader
(
"
If-None-Match
"
,
p
.
etag
[
d
])),
x
.
setRequestHeader
(
"
Accept
"
,
l
.
dataTypes
[
0
]
&&
l
.
accepts
[
l
.
dataTypes
[
0
]]?
l
.
accepts
[
l
.
dataTypes
[
0
]]
+
(
l
.
dataTypes
[
0
]
!==
"
*
"
?
"
,
"
+
cx
+
"
; q=0.01
"
:
""
):
l
.
accepts
[
"
*
"
]);
for
(
k
in
l
.
headers
)
x
.
setRequestHeader
(
k
,
l
.
headers
[
k
]);
if
(
!
l
.
beforeSend
||
l
.
beforeSend
.
call
(
m
,
x
,
l
)
!==!
1
&&
v
!==
2
){
w
=
"
abort
"
;
for
(
k
in
{
success
:
1
,
error
:
1
,
complete
:
1
})
x
[
k
](
l
[
k
]);
g
=
cA
(
cw
,
l
,
c
,
x
);
if
(
!
g
)
y
(
-
1
,
"
No Transport
"
);
else
{
x
.
readyState
=
1
,
j
&&
n
.
trigger
(
"
ajaxSend
"
,[
x
,
l
]),
l
.
async
&&
l
.
timeout
>
0
&&
(
h
=
setTimeout
(
function
(){
x
.
abort
(
"
timeout
"
)},
l
.
timeout
));
try
{
v
=
1
,
g
.
send
(
t
,
y
)}
catch
(
B
){
if
(
v
<
2
)
y
(
-
1
,
B
);
else
throw
B
}}
return
x
}
return
x
.
abort
()},
active
:
0
,
lastModified
:{},
etag
:{}});
var
cE
=
[],
cF
=
/
\?
/
,
cG
=
/
(
=
)\?(?=
&|$
)
|
\?\?
/
,
cH
=
p
.
now
();
p
.
ajaxSetup
({
jsonp
:
"
callback
"
,
jsonpCallback
:
function
(){
var
a
=
cE
.
pop
()
||
p
.
expando
+
"
_
"
+
cH
++
;
return
this
[
a
]
=!
0
,
a
}}),
p
.
ajaxPrefilter
(
"
json jsonp
"
,
function
(
c
,
d
,
e
){
var
f
,
g
,
h
,
i
=
c
.
data
,
j
=
c
.
url
,
k
=
c
.
jsonp
!==!
1
,
l
=
k
&&
cG
.
test
(
j
),
m
=
k
&&!
l
&&
typeof
i
==
"
string
"
&&!
(
c
.
contentType
||
""
).
indexOf
(
"
application/x-www-form-urlencoded
"
)
&&
cG
.
test
(
i
);
if
(
c
.
dataTypes
[
0
]
===
"
jsonp
"
||
l
||
m
)
return
f
=
c
.
jsonpCallback
=
p
.
isFunction
(
c
.
jsonpCallback
)?
c
.
jsonpCallback
():
c
.
jsonpCallback
,
g
=
a
[
f
],
l
?
c
.
url
=
j
.
replace
(
cG
,
"
$1
"
+
f
):
m
?
c
.
data
=
i
.
replace
(
cG
,
"
$1
"
+
f
):
k
&&
(
c
.
url
+=
(
cF
.
test
(
j
)?
"
&
"
:
"
?
"
)
+
c
.
jsonp
+
"
=
"
+
f
),
c
.
converters
[
"
script json
"
]
=
function
(){
return
h
||
p
.
error
(
f
+
"
was not called
"
),
h
[
0
]},
c
.
dataTypes
[
0
]
=
"
json
"
,
a
[
f
]
=
function
(){
h
=
arguments
},
e
.
always
(
function
(){
a
[
f
]
=
g
,
c
[
f
]
&&
(
c
.
jsonpCallback
=
d
.
jsonpCallback
,
cE
.
push
(
f
)),
h
&&
p
.
isFunction
(
g
)
&&
g
(
h
[
0
]),
h
=
g
=
b
}),
"
script
"
}),
p
.
ajaxSetup
({
accepts
:{
script
:
"
text/javascript, application/javascript, application/ecmascript, application/x-ecmascript
"
},
contents
:{
script
:
/javascript|ecmascript/
},
converters
:{
"
text script
"
:
function
(
a
){
return
p
.
globalEval
(
a
),
a
}}}),
p
.
ajaxPrefilter
(
"
script
"
,
function
(
a
){
a
.
cache
===
b
&&
(
a
.
cache
=!
1
),
a
.
crossDomain
&&
(
a
.
type
=
"
GET
"
,
a
.
global
=!
1
)}),
p
.
ajaxTransport
(
"
script
"
,
function
(
a
){
if
(
a
.
crossDomain
){
var
c
,
d
=
e
.
head
||
e
.
getElementsByTagName
(
"
head
"
)[
0
]
||
e
.
documentElement
;
return
{
send
:
function
(
f
,
g
){
c
=
e
.
createElement
(
"
script
"
),
c
.
async
=
"
async
"
,
a
.
scriptCharset
&&
(
c
.
charset
=
a
.
scriptCharset
),
c
.
src
=
a
.
url
,
c
.
onload
=
c
.
onreadystatechange
=
function
(
a
,
e
){
if
(
e
||!
c
.
readyState
||
/loaded|complete/
.
test
(
c
.
readyState
))
c
.
onload
=
c
.
onreadystatechange
=
null
,
d
&&
c
.
parentNode
&&
d
.
removeChild
(
c
),
c
=
b
,
e
||
g
(
200
,
"
success
"
)},
d
.
insertBefore
(
c
,
d
.
firstChild
)},
abort
:
function
(){
c
&&
c
.
onload
(
0
,
1
)}}}});
var
cI
,
cJ
=
a
.
ActiveXObject
?
function
(){
for
(
var
a
in
cI
)
cI
[
a
](
0
,
1
)}:
!
1
,
cK
=
0
;
p
.
ajaxSettings
.
xhr
=
a
.
ActiveXObject
?
function
(){
return
!
this
.
isLocal
&&
cL
()
||
cM
()}:
cL
,
function
(
a
){
p
.
extend
(
p
.
support
,{
ajax
:
!!
a
,
cors
:
!!
a
&&
"
withCredentials
"
in
a
})}(
p
.
ajaxSettings
.
xhr
()),
p
.
support
.
ajax
&&
p
.
ajaxTransport
(
function
(
c
){
if
(
!
c
.
crossDomain
||
p
.
support
.
cors
){
var
d
;
return
{
send
:
function
(
e
,
f
){
var
g
,
h
,
i
=
c
.
xhr
();
c
.
username
?
i
.
open
(
c
.
type
,
c
.
url
,
c
.
async
,
c
.
username
,
c
.
password
):
i
.
open
(
c
.
type
,
c
.
url
,
c
.
async
);
if
(
c
.
xhrFields
)
for
(
h
in
c
.
xhrFields
)
i
[
h
]
=
c
.
xhrFields
[
h
];
c
.
mimeType
&&
i
.
overrideMimeType
&&
i
.
overrideMimeType
(
c
.
mimeType
),
!
c
.
crossDomain
&&!
e
[
"
X-Requested-With
"
]
&&
(
e
[
"
X-Requested-With
"
]
=
"
XMLHttpRequest
"
);
try
{
for
(
h
in
e
)
i
.
setRequestHeader
(
h
,
e
[
h
])}
catch
(
j
){}
i
.
send
(
c
.
hasContent
&&
c
.
data
||
null
),
d
=
function
(
a
,
e
){
var
h
,
j
,
k
,
l
,
m
;
try
{
if
(
d
&&
(
e
||
i
.
readyState
===
4
)){
d
=
b
,
g
&&
(
i
.
onreadystatechange
=
p
.
noop
,
cJ
&&
delete
cI
[
g
]);
if
(
e
)
i
.
readyState
!==
4
&&
i
.
abort
();
else
{
h
=
i
.
status
,
k
=
i
.
getAllResponseHeaders
(),
l
=
{},
m
=
i
.
responseXML
,
m
&&
m
.
documentElement
&&
(
l
.
xml
=
m
);
try
{
l
.
text
=
i
.
responseText
}
catch
(
a
){}
try
{
j
=
i
.
statusText
}
catch
(
n
){
j
=
""
}
!
h
&&
c
.
isLocal
&&!
c
.
crossDomain
?
h
=
l
.
text
?
200
:
404
:
h
===
1223
&&
(
h
=
204
)}}}
catch
(
o
){
e
||
f
(
-
1
,
o
)}
l
&&
f
(
h
,
j
,
l
,
k
)},
c
.
async
?
i
.
readyState
===
4
?
setTimeout
(
d
,
0
):(
g
=++
cK
,
cJ
&&
(
cI
||
(
cI
=
{},
p
(
a
).
unload
(
cJ
)),
cI
[
g
]
=
d
),
i
.
onreadystatechange
=
d
):
d
()},
abort
:
function
(){
d
&&
d
(
0
,
1
)}}}});
var
cN
,
cO
,
cP
=
/^
(?:
toggle|show|hide
)
$/
,
cQ
=
new
RegExp
(
"
^(?:([-+])=|)(
"
+
q
+
"
)([a-z%]*)$
"
,
"
i
"
),
cR
=
/queueHooks$/
,
cS
=
[
cY
],
cT
=
{
"
*
"
:[
function
(
a
,
b
){
var
c
,
d
,
e
=
this
.
createTween
(
a
,
b
),
f
=
cQ
.
exec
(
b
),
g
=
e
.
cur
(),
h
=+
g
||
0
,
i
=
1
,
j
=
20
;
if
(
f
){
c
=+
f
[
2
],
d
=
f
[
3
]
||
(
p
.
cssNumber
[
a
]?
""
:
"
px
"
);
if
(
d
!==
"
px
"
&&
h
){
h
=
p
.
css
(
e
.
elem
,
a
,
!
0
)
||
c
||
1
;
do
i
=
i
||
"
.5
"
,
h
=
h
/
i
,
p
.
style
(
e
.
elem
,
a
,
h
+
d
);
while
(
i
!==
(
i
=
e
.
cur
()
/
g
)
&&
i
!==
1
&&--
j
)}
e
.
unit
=
d
,
e
.
start
=
h
,
e
.
end
=
f
[
1
]?
h
+
(
f
[
1
]
+
1
)
*
c
:
c
}
return
e
}]};
p
.
Animation
=
p
.
extend
(
cW
,{
tweener
:
function
(
a
,
b
){
p
.
isFunction
(
a
)?(
b
=
a
,
a
=
[
"
*
"
]):
a
=
a
.
split
(
"
"
);
var
c
,
d
=
0
,
e
=
a
.
length
;
for
(;
d
<
e
;
d
++
)
c
=
a
[
d
],
cT
[
c
]
=
cT
[
c
]
||
[],
cT
[
c
].
unshift
(
b
)},
prefilter
:
function
(
a
,
b
){
b
?
cS
.
unshift
(
a
):
cS
.
push
(
a
)}}),
p
.
Tween
=
cZ
,
cZ
.
prototype
=
{
constructor
:
cZ
,
init
:
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
elem
=
a
,
this
.
prop
=
c
,
this
.
easing
=
e
||
"
swing
"
,
this
.
options
=
b
,
this
.
start
=
this
.
now
=
this
.
cur
(),
this
.
end
=
d
,
this
.
unit
=
f
||
(
p
.
cssNumber
[
c
]?
""
:
"
px
"
)},
cur
:
function
(){
var
a
=
cZ
.
propHooks
[
this
.
prop
];
return
a
&&
a
.
get
?
a
.
get
(
this
):
cZ
.
propHooks
.
_default
.
get
(
this
)},
run
:
function
(
a
){
var
b
,
c
=
cZ
.
propHooks
[
this
.
prop
];
return
this
.
options
.
duration
?
this
.
pos
=
b
=
p
.
easing
[
this
.
easing
](
a
,
this
.
options
.
duration
*
a
,
0
,
1
,
this
.
options
.
duration
):
this
.
pos
=
b
=
a
,
this
.
now
=
(
this
.
end
-
this
.
start
)
*
b
+
this
.
start
,
this
.
options
.
step
&&
this
.
options
.
step
.
call
(
this
.
elem
,
this
.
now
,
this
),
c
&&
c
.
set
?
c
.
set
(
this
):
cZ
.
propHooks
.
_default
.
set
(
this
),
this
}},
cZ
.
prototype
.
init
.
prototype
=
cZ
.
prototype
,
cZ
.
propHooks
=
{
_default
:{
get
:
function
(
a
){
var
b
;
return
a
.
elem
[
a
.
prop
]
==
null
||!!
a
.
elem
.
style
&&
a
.
elem
.
style
[
a
.
prop
]
!=
null
?(
b
=
p
.
css
(
a
.
elem
,
a
.
prop
,
!
1
,
""
),
!
b
||
b
===
"
auto
"
?
0
:
b
):
a
.
elem
[
a
.
prop
]},
set
:
function
(
a
){
p
.
fx
.
step
[
a
.
prop
]?
p
.
fx
.
step
[
a
.
prop
](
a
):
a
.
elem
.
style
&&
(
a
.
elem
.
style
[
p
.
cssProps
[
a
.
prop
]]
!=
null
||
p
.
cssHooks
[
a
.
prop
])?
p
.
style
(
a
.
elem
,
a
.
prop
,
a
.
now
+
a
.
unit
):
a
.
elem
[
a
.
prop
]
=
a
.
now
}}},
cZ
.
propHooks
.
scrollTop
=
cZ
.
propHooks
.
scrollLeft
=
{
set
:
function
(
a
){
a
.
elem
.
nodeType
&&
a
.
elem
.
parentNode
&&
(
a
.
elem
[
a
.
prop
]
=
a
.
now
)}},
p
.
each
([
"
toggle
"
,
"
show
"
,
"
hide
"
],
function
(
a
,
b
){
var
c
=
p
.
fn
[
b
];
p
.
fn
[
b
]
=
function
(
d
,
e
,
f
){
return
d
==
null
||
typeof
d
==
"
boolean
"
||!
a
&&
p
.
isFunction
(
d
)
&&
p
.
isFunction
(
e
)?
c
.
apply
(
this
,
arguments
):
this
.
animate
(
c$
(
b
,
!
0
),
d
,
e
,
f
)}}),
p
.
fn
.
extend
({
fadeTo
:
function
(
a
,
b
,
c
,
d
){
return
this
.
filter
(
bZ
).
css
(
"
opacity
"
,
0
).
show
().
end
().
animate
({
opacity
:
b
},
a
,
c
,
d
)},
animate
:
function
(
a
,
b
,
c
,
d
){
var
e
=
p
.
isEmptyObject
(
a
),
f
=
p
.
speed
(
b
,
c
,
d
),
g
=
function
(){
var
b
=
cW
(
this
,
p
.
extend
({},
a
),
f
);
e
&&
b
.
stop
(
!
0
)};
return
e
||
f
.
queue
===!
1
?
this
.
each
(
g
):
this
.
queue
(
f
.
queue
,
g
)},
stop
:
function
(
a
,
c
,
d
){
var
e
=
function
(
a
){
var
b
=
a
.
stop
;
delete
a
.
stop
,
b
(
d
)};
return
typeof
a
!=
"
string
"
&&
(
d
=
c
,
c
=
a
,
a
=
b
),
c
&&
a
!==!
1
&&
this
.
queue
(
a
||
"
fx
"
,[]),
this
.
each
(
function
(){
var
b
=!
0
,
c
=
a
!=
null
&&
a
+
"
queueHooks
"
,
f
=
p
.
timers
,
g
=
p
.
_data
(
this
);
if
(
c
)
g
[
c
]
&&
g
[
c
].
stop
&&
e
(
g
[
c
]);
else
for
(
c
in
g
)
g
[
c
]
&&
g
[
c
].
stop
&&
cR
.
test
(
c
)
&&
e
(
g
[
c
]);
for
(
c
=
f
.
length
;
c
--
;)
f
[
c
].
elem
===
this
&&
(
a
==
null
||
f
[
c
].
queue
===
a
)
&&
(
f
[
c
].
anim
.
stop
(
d
),
b
=!
1
,
f
.
splice
(
c
,
1
));(
b
||!
d
)
&&
p
.
dequeue
(
this
,
a
)})}}),
p
.
each
({
slideDown
:
c$
(
"
show
"
),
slideUp
:
c$
(
"
hide
"
),
slideToggle
:
c$
(
"
toggle
"
),
fadeIn
:{
opacity
:
"
show
"
},
fadeOut
:{
opacity
:
"
hide
"
},
fadeToggle
:{
opacity
:
"
toggle
"
}},
function
(
a
,
b
){
p
.
fn
[
a
]
=
function
(
a
,
c
,
d
){
return
this
.
animate
(
b
,
a
,
c
,
d
)}}),
p
.
speed
=
function
(
a
,
b
,
c
){
var
d
=
a
&&
typeof
a
==
"
object
"
?
p
.
extend
({},
a
):{
complete
:
c
||!
c
&&
b
||
p
.
isFunction
(
a
)
&&
a
,
duration
:
a
,
easing
:
c
&&
b
||
b
&&!
p
.
isFunction
(
b
)
&&
b
};
d
.
duration
=
p
.
fx
.
off
?
0
:
typeof
d
.
duration
==
"
number
"
?
d
.
duration
:
d
.
duration
in
p
.
fx
.
speeds
?
p
.
fx
.
speeds
[
d
.
duration
]:
p
.
fx
.
speeds
.
_default
;
if
(
d
.
queue
==
null
||
d
.
queue
===!
0
)
d
.
queue
=
"
fx
"
;
return
d
.
old
=
d
.
complete
,
d
.
complete
=
function
(){
p
.
isFunction
(
d
.
old
)
&&
d
.
old
.
call
(
this
),
d
.
queue
&&
p
.
dequeue
(
this
,
d
.
queue
)},
d
},
p
.
easing
=
{
linear
:
function
(
a
){
return
a
},
swing
:
function
(
a
){
return
.
5
-
Math
.
cos
(
a
*
Math
.
PI
)
/
2
}},
p
.
timers
=
[],
p
.
fx
=
cZ
.
prototype
.
init
,
p
.
fx
.
tick
=
function
(){
var
a
,
b
=
p
.
timers
,
c
=
0
;
for
(;
c
<
b
.
length
;
c
++
)
a
=
b
[
c
],
!
a
()
&&
b
[
c
]
===
a
&&
b
.
splice
(
c
--
,
1
);
b
.
length
||
p
.
fx
.
stop
()},
p
.
fx
.
timer
=
function
(
a
){
a
()
&&
p
.
timers
.
push
(
a
)
&&!
cO
&&
(
cO
=
setInterval
(
p
.
fx
.
tick
,
p
.
fx
.
interval
))},
p
.
fx
.
interval
=
13
,
p
.
fx
.
stop
=
function
(){
clearInterval
(
cO
),
cO
=
null
},
p
.
fx
.
speeds
=
{
slow
:
600
,
fast
:
200
,
_default
:
400
},
p
.
fx
.
step
=
{},
p
.
expr
&&
p
.
expr
.
filters
&&
(
p
.
expr
.
filters
.
animated
=
function
(
a
){
return
p
.
grep
(
p
.
timers
,
function
(
b
){
return
a
===
b
.
elem
}).
length
});
var
c_
=
/^
(?:
body|html
)
$/i
;
p
.
fn
.
offset
=
function
(
a
){
if
(
arguments
.
length
)
return
a
===
b
?
this
:
this
.
each
(
function
(
b
){
p
.
offset
.
setOffset
(
this
,
a
,
b
)});
var
c
,
d
,
e
,
f
,
g
,
h
,
i
,
j
=
{
top
:
0
,
left
:
0
},
k
=
this
[
0
],
l
=
k
&&
k
.
ownerDocument
;
if
(
!
l
)
return
;
return
(
d
=
l
.
body
)
===
k
?
p
.
offset
.
bodyOffset
(
k
):(
c
=
l
.
documentElement
,
p
.
contains
(
c
,
k
)?(
typeof
k
.
getBoundingClientRect
!=
"
undefined
"
&&
(
j
=
k
.
getBoundingClientRect
()),
e
=
da
(
l
),
f
=
c
.
clientTop
||
d
.
clientTop
||
0
,
g
=
c
.
clientLeft
||
d
.
clientLeft
||
0
,
h
=
e
.
pageYOffset
||
c
.
scrollTop
,
i
=
e
.
pageXOffset
||
c
.
scrollLeft
,{
top
:
j
.
top
+
h
-
f
,
left
:
j
.
left
+
i
-
g
}):
j
)},
p
.
offset
=
{
bodyOffset
:
function
(
a
){
var
b
=
a
.
offsetTop
,
c
=
a
.
offsetLeft
;
return
p
.
support
.
doesNotIncludeMarginInBodyOffset
&&
(
b
+=
parseFloat
(
p
.
css
(
a
,
"
marginTop
"
))
||
0
,
c
+=
parseFloat
(
p
.
css
(
a
,
"
marginLeft
"
))
||
0
),{
top
:
b
,
left
:
c
}},
setOffset
:
function
(
a
,
b
,
c
){
var
d
=
p
.
css
(
a
,
"
position
"
);
d
===
"
static
"
&&
(
a
.
style
.
position
=
"
relative
"
);
var
e
=
p
(
a
),
f
=
e
.
offset
(),
g
=
p
.
css
(
a
,
"
top
"
),
h
=
p
.
css
(
a
,
"
left
"
),
i
=
(
d
===
"
absolute
"
||
d
===
"
fixed
"
)
&&
p
.
inArray
(
"
auto
"
,[
g
,
h
])
>-
1
,
j
=
{},
k
=
{},
l
,
m
;
i
?(
k
=
e
.
position
(),
l
=
k
.
top
,
m
=
k
.
left
):(
l
=
parseFloat
(
g
)
||
0
,
m
=
parseFloat
(
h
)
||
0
),
p
.
isFunction
(
b
)
&&
(
b
=
b
.
call
(
a
,
c
,
f
)),
b
.
top
!=
null
&&
(
j
.
top
=
b
.
top
-
f
.
top
+
l
),
b
.
left
!=
null
&&
(
j
.
left
=
b
.
left
-
f
.
left
+
m
),
"
using
"
in
b
?
b
.
using
.
call
(
a
,
j
):
e
.
css
(
j
)}},
p
.
fn
.
extend
({
position
:
function
(){
if
(
!
this
[
0
])
return
;
var
a
=
this
[
0
],
b
=
this
.
offsetParent
(),
c
=
this
.
offset
(),
d
=
c_
.
test
(
b
[
0
].
nodeName
)?{
top
:
0
,
left
:
0
}:
b
.
offset
();
return
c
.
top
-=
parseFloat
(
p
.
css
(
a
,
"
marginTop
"
))
||
0
,
c
.
left
-=
parseFloat
(
p
.
css
(
a
,
"
marginLeft
"
))
||
0
,
d
.
top
+=
parseFloat
(
p
.
css
(
b
[
0
],
"
borderTopWidth
"
))
||
0
,
d
.
left
+=
parseFloat
(
p
.
css
(
b
[
0
],
"
borderLeftWidth
"
))
||
0
,{
top
:
c
.
top
-
d
.
top
,
left
:
c
.
left
-
d
.
left
}},
offsetParent
:
function
(){
return
this
.
map
(
function
(){
var
a
=
this
.
offsetParent
||
e
.
body
;
while
(
a
&&!
c_
.
test
(
a
.
nodeName
)
&&
p
.
css
(
a
,
"
position
"
)
===
"
static
"
)
a
=
a
.
offsetParent
;
return
a
||
e
.
body
})}}),
p
.
each
({
scrollLeft
:
"
pageXOffset
"
,
scrollTop
:
"
pageYOffset
"
},
function
(
a
,
c
){
var
d
=
/Y/
.
test
(
c
);
p
.
fn
[
a
]
=
function
(
e
){
return
p
.
access
(
this
,
function
(
a
,
e
,
f
){
var
g
=
da
(
a
);
if
(
f
===
b
)
return
g
?
c
in
g
?
g
[
c
]:
g
.
document
.
documentElement
[
e
]:
a
[
e
];
g
?
g
.
scrollTo
(
d
?
p
(
g
).
scrollLeft
():
f
,
d
?
f
:
p
(
g
).
scrollTop
()):
a
[
e
]
=
f
},
a
,
e
,
arguments
.
length
,
null
)}}),
p
.
each
({
Height
:
"
height
"
,
Width
:
"
width
"
},
function
(
a
,
c
){
p
.
each
({
padding
:
"
inner
"
+
a
,
content
:
c
,
""
:
"
outer
"
+
a
},
function
(
d
,
e
){
p
.
fn
[
e
]
=
function
(
e
,
f
){
var
g
=
arguments
.
length
&&
(
d
||
typeof
e
!=
"
boolean
"
),
h
=
d
||
(
e
===!
0
||
f
===!
0
?
"
margin
"
:
"
border
"
);
return
p
.
access
(
this
,
function
(
c
,
d
,
e
){
var
f
;
return
p
.
isWindow
(
c
)?
c
.
document
.
documentElement
[
"
client
"
+
a
]:
c
.
nodeType
===
9
?(
f
=
c
.
documentElement
,
Math
.
max
(
c
.
body
[
"
scroll
"
+
a
],
f
[
"
scroll
"
+
a
],
c
.
body
[
"
offset
"
+
a
],
f
[
"
offset
"
+
a
],
f
[
"
client
"
+
a
])):
e
===
b
?
p
.
css
(
c
,
d
,
e
,
h
):
p
.
style
(
c
,
d
,
e
,
h
)},
c
,
g
?
e
:
b
,
g
,
null
)}})}),
a
.
jQuery
=
a
.
$
=
p
,
typeof
define
==
"
function
"
&&
define
.
amd
&&
define
.
amd
.
jQuery
&&
define
(
"
jquery
"
,[],
function
(){
return
p
})})(
window
);
\ No newline at end of file
src/main/resources/static/js/jquery.min.js
deleted
100644 → 0
View file @
19a2655c
/*! jQuery v1.7.2 jquery.com | jquery.org/license */
(
function
(
a
,
b
){
function
cy
(
a
){
return
f
.
isWindow
(
a
)?
a
:
a
.
nodeType
===
9
?
a
.
defaultView
||
a
.
parentWindow
:
!
1
}
function
cu
(
a
){
if
(
!
cj
[
a
]){
var
b
=
c
.
body
,
d
=
f
(
"
<
"
+
a
+
"
>
"
).
appendTo
(
b
),
e
=
d
.
css
(
"
display
"
);
d
.
remove
();
if
(
e
===
"
none
"
||
e
===
""
){
ck
||
(
ck
=
c
.
createElement
(
"
iframe
"
),
ck
.
frameBorder
=
ck
.
width
=
ck
.
height
=
0
),
b
.
appendChild
(
ck
);
if
(
!
cl
||!
ck
.
createElement
)
cl
=
(
ck
.
contentWindow
||
ck
.
contentDocument
).
document
,
cl
.
write
((
f
.
support
.
boxModel
?
"
<!doctype html>
"
:
""
)
+
"
<html><body>
"
),
cl
.
close
();
d
=
cl
.
createElement
(
a
),
cl
.
body
.
appendChild
(
d
),
e
=
f
.
css
(
d
,
"
display
"
),
b
.
removeChild
(
ck
)}
cj
[
a
]
=
e
}
return
cj
[
a
]}
function
ct
(
a
,
b
){
var
c
=
{};
f
.
each
(
cp
.
concat
.
apply
([],
cp
.
slice
(
0
,
b
)),
function
(){
c
[
this
]
=
a
});
return
c
}
function
cs
(){
cq
=
b
}
function
cr
(){
setTimeout
(
cs
,
0
);
return
cq
=
f
.
now
()}
function
ci
(){
try
{
return
new
a
.
ActiveXObject
(
"
Microsoft.XMLHTTP
"
)}
catch
(
b
){}}
function
ch
(){
try
{
return
new
a
.
XMLHttpRequest
}
catch
(
b
){}}
function
cb
(
a
,
c
){
a
.
dataFilter
&&
(
c
=
a
.
dataFilter
(
c
,
a
.
dataType
));
var
d
=
a
.
dataTypes
,
e
=
{},
g
,
h
,
i
=
d
.
length
,
j
,
k
=
d
[
0
],
l
,
m
,
n
,
o
,
p
;
for
(
g
=
1
;
g
<
i
;
g
++
){
if
(
g
===
1
)
for
(
h
in
a
.
converters
)
typeof
h
==
"
string
"
&&
(
e
[
h
.
toLowerCase
()]
=
a
.
converters
[
h
]);
l
=
k
,
k
=
d
[
g
];
if
(
k
===
"
*
"
)
k
=
l
;
else
if
(
l
!==
"
*
"
&&
l
!==
k
){
m
=
l
+
"
"
+
k
,
n
=
e
[
m
]
||
e
[
"
*
"
+
k
];
if
(
!
n
){
p
=
b
;
for
(
o
in
e
){
j
=
o
.
split
(
"
"
);
if
(
j
[
0
]
===
l
||
j
[
0
]
===
"
*
"
){
p
=
e
[
j
[
1
]
+
"
"
+
k
];
if
(
p
){
o
=
e
[
o
],
o
===!
0
?
n
=
p
:
p
===!
0
&&
(
n
=
o
);
break
}}}}
!
n
&&!
p
&&
f
.
error
(
"
No conversion from
"
+
m
.
replace
(
"
"
,
"
to
"
)),
n
!==!
0
&&
(
c
=
n
?
n
(
c
):
p
(
o
(
c
)))}}
return
c
}
function
ca
(
a
,
c
,
d
){
var
e
=
a
.
contents
,
f
=
a
.
dataTypes
,
g
=
a
.
responseFields
,
h
,
i
,
j
,
k
;
for
(
i
in
g
)
i
in
d
&&
(
c
[
g
[
i
]]
=
d
[
i
]);
while
(
f
[
0
]
===
"
*
"
)
f
.
shift
(),
h
===
b
&&
(
h
=
a
.
mimeType
||
c
.
getResponseHeader
(
"
content-type
"
));
if
(
h
)
for
(
i
in
e
)
if
(
e
[
i
]
&&
e
[
i
].
test
(
h
)){
f
.
unshift
(
i
);
break
}
if
(
f
[
0
]
in
d
)
j
=
f
[
0
];
else
{
for
(
i
in
d
){
if
(
!
f
[
0
]
||
a
.
converters
[
i
+
"
"
+
f
[
0
]]){
j
=
i
;
break
}
k
||
(
k
=
i
)}
j
=
j
||
k
}
if
(
j
){
j
!==
f
[
0
]
&&
f
.
unshift
(
j
);
return
d
[
j
]}}
function
b_
(
a
,
b
,
c
,
d
){
if
(
f
.
isArray
(
b
))
f
.
each
(
b
,
function
(
b
,
e
){
c
||
bD
.
test
(
a
)?
d
(
a
,
e
):
b_
(
a
+
"
[
"
+
(
typeof
e
==
"
object
"
?
b
:
""
)
+
"
]
"
,
e
,
c
,
d
)});
else
if
(
!
c
&&
f
.
type
(
b
)
===
"
object
"
)
for
(
var
e
in
b
)
b_
(
a
+
"
[
"
+
e
+
"
]
"
,
b
[
e
],
c
,
d
);
else
d
(
a
,
b
)}
function
b$
(
a
,
c
){
var
d
,
e
,
g
=
f
.
ajaxSettings
.
flatOptions
||
{};
for
(
d
in
c
)
c
[
d
]
!==
b
&&
((
g
[
d
]?
a
:
e
||
(
e
=
{}))[
d
]
=
c
[
d
]);
e
&&
f
.
extend
(
!
0
,
a
,
e
)}
function
bZ
(
a
,
c
,
d
,
e
,
f
,
g
){
f
=
f
||
c
.
dataTypes
[
0
],
g
=
g
||
{},
g
[
f
]
=!
0
;
var
h
=
a
[
f
],
i
=
0
,
j
=
h
?
h
.
length
:
0
,
k
=
a
===
bS
,
l
;
for
(;
i
<
j
&&
(
k
||!
l
);
i
++
)
l
=
h
[
i
](
c
,
d
,
e
),
typeof
l
==
"
string
"
&&
(
!
k
||
g
[
l
]?
l
=
b
:(
c
.
dataTypes
.
unshift
(
l
),
l
=
bZ
(
a
,
c
,
d
,
e
,
l
,
g
)));(
k
||!
l
)
&&!
g
[
"
*
"
]
&&
(
l
=
bZ
(
a
,
c
,
d
,
e
,
"
*
"
,
g
));
return
l
}
function
bY
(
a
){
return
function
(
b
,
c
){
typeof
b
!=
"
string
"
&&
(
c
=
b
,
b
=
"
*
"
);
if
(
f
.
isFunction
(
c
)){
var
d
=
b
.
toLowerCase
().
split
(
bO
),
e
=
0
,
g
=
d
.
length
,
h
,
i
,
j
;
for
(;
e
<
g
;
e
++
)
h
=
d
[
e
],
j
=
/^
\+
/
.
test
(
h
),
j
&&
(
h
=
h
.
substr
(
1
)
||
"
*
"
),
i
=
a
[
h
]
=
a
[
h
]
||
[],
i
[
j
?
"
unshift
"
:
"
push
"
](
c
)}}}
function
bB
(
a
,
b
,
c
){
var
d
=
b
===
"
width
"
?
a
.
offsetWidth
:
a
.
offsetHeight
,
e
=
b
===
"
width
"
?
1
:
0
,
g
=
4
;
if
(
d
>
0
){
if
(
c
!==
"
border
"
)
for
(;
e
<
g
;
e
+=
2
)
c
||
(
d
-=
parseFloat
(
f
.
css
(
a
,
"
padding
"
+
bx
[
e
]))
||
0
),
c
===
"
margin
"
?
d
+=
parseFloat
(
f
.
css
(
a
,
c
+
bx
[
e
]))
||
0
:
d
-=
parseFloat
(
f
.
css
(
a
,
"
border
"
+
bx
[
e
]
+
"
Width
"
))
||
0
;
return
d
+
"
px
"
}
d
=
by
(
a
,
b
);
if
(
d
<
0
||
d
==
null
)
d
=
a
.
style
[
b
];
if
(
bt
.
test
(
d
))
return
d
;
d
=
parseFloat
(
d
)
||
0
;
if
(
c
)
for
(;
e
<
g
;
e
+=
2
)
d
+=
parseFloat
(
f
.
css
(
a
,
"
padding
"
+
bx
[
e
]))
||
0
,
c
!==
"
padding
"
&&
(
d
+=
parseFloat
(
f
.
css
(
a
,
"
border
"
+
bx
[
e
]
+
"
Width
"
))
||
0
),
c
===
"
margin
"
&&
(
d
+=
parseFloat
(
f
.
css
(
a
,
c
+
bx
[
e
]))
||
0
);
return
d
+
"
px
"
}
function
bo
(
a
){
var
b
=
c
.
createElement
(
"
div
"
);
bh
.
appendChild
(
b
),
b
.
innerHTML
=
a
.
outerHTML
;
return
b
.
firstChild
}
function
bn
(
a
){
var
b
=
(
a
.
nodeName
||
""
).
toLowerCase
();
b
===
"
input
"
?
bm
(
a
):
b
!==
"
script
"
&&
typeof
a
.
getElementsByTagName
!=
"
undefined
"
&&
f
.
grep
(
a
.
getElementsByTagName
(
"
input
"
),
bm
)}
function
bm
(
a
){
if
(
a
.
type
===
"
checkbox
"
||
a
.
type
===
"
radio
"
)
a
.
defaultChecked
=
a
.
checked
}
function
bl
(
a
){
return
typeof
a
.
getElementsByTagName
!=
"
undefined
"
?
a
.
getElementsByTagName
(
"
*
"
):
typeof
a
.
querySelectorAll
!=
"
undefined
"
?
a
.
querySelectorAll
(
"
*
"
):[]}
function
bk
(
a
,
b
){
var
c
;
b
.
nodeType
===
1
&&
(
b
.
clearAttributes
&&
b
.
clearAttributes
(),
b
.
mergeAttributes
&&
b
.
mergeAttributes
(
a
),
c
=
b
.
nodeName
.
toLowerCase
(),
c
===
"
object
"
?
b
.
outerHTML
=
a
.
outerHTML
:
c
!==
"
input
"
||
a
.
type
!==
"
checkbox
"
&&
a
.
type
!==
"
radio
"
?
c
===
"
option
"
?
b
.
selected
=
a
.
defaultSelected
:
c
===
"
input
"
||
c
===
"
textarea
"
?
b
.
defaultValue
=
a
.
defaultValue
:
c
===
"
script
"
&&
b
.
text
!==
a
.
text
&&
(
b
.
text
=
a
.
text
):(
a
.
checked
&&
(
b
.
defaultChecked
=
b
.
checked
=
a
.
checked
),
b
.
value
!==
a
.
value
&&
(
b
.
value
=
a
.
value
)),
b
.
removeAttribute
(
f
.
expando
),
b
.
removeAttribute
(
"
_submit_attached
"
),
b
.
removeAttribute
(
"
_change_attached
"
))}
function
bj
(
a
,
b
){
if
(
b
.
nodeType
===
1
&&!!
f
.
hasData
(
a
)){
var
c
,
d
,
e
,
g
=
f
.
_data
(
a
),
h
=
f
.
_data
(
b
,
g
),
i
=
g
.
events
;
if
(
i
){
delete
h
.
handle
,
h
.
events
=
{};
for
(
c
in
i
)
for
(
d
=
0
,
e
=
i
[
c
].
length
;
d
<
e
;
d
++
)
f
.
event
.
add
(
b
,
c
,
i
[
c
][
d
])}
h
.
data
&&
(
h
.
data
=
f
.
extend
({},
h
.
data
))}}
function
bi
(
a
,
b
){
return
f
.
nodeName
(
a
,
"
table
"
)?
a
.
getElementsByTagName
(
"
tbody
"
)[
0
]
||
a
.
appendChild
(
a
.
ownerDocument
.
createElement
(
"
tbody
"
)):
a
}
function
U
(
a
){
var
b
=
V
.
split
(
"
|
"
),
c
=
a
.
createDocumentFragment
();
if
(
c
.
createElement
)
while
(
b
.
length
)
c
.
createElement
(
b
.
pop
());
return
c
}
function
T
(
a
,
b
,
c
){
b
=
b
||
0
;
if
(
f
.
isFunction
(
b
))
return
f
.
grep
(
a
,
function
(
a
,
d
){
var
e
=!!
b
.
call
(
a
,
d
,
a
);
return
e
===
c
});
if
(
b
.
nodeType
)
return
f
.
grep
(
a
,
function
(
a
,
d
){
return
a
===
b
===
c
});
if
(
typeof
b
==
"
string
"
){
var
d
=
f
.
grep
(
a
,
function
(
a
){
return
a
.
nodeType
===
1
});
if
(
O
.
test
(
b
))
return
f
.
filter
(
b
,
d
,
!
c
);
b
=
f
.
filter
(
b
,
d
)}
return
f
.
grep
(
a
,
function
(
a
,
d
){
return
f
.
inArray
(
a
,
b
)
>=
0
===
c
})}
function
S
(
a
){
return
!
a
||!
a
.
parentNode
||
a
.
parentNode
.
nodeType
===
11
}
function
K
(){
return
!
0
}
function
J
(){
return
!
1
}
function
n
(
a
,
b
,
c
){
var
d
=
b
+
"
defer
"
,
e
=
b
+
"
queue
"
,
g
=
b
+
"
mark
"
,
h
=
f
.
_data
(
a
,
d
);
h
&&
(
c
===
"
queue
"
||!
f
.
_data
(
a
,
e
))
&&
(
c
===
"
mark
"
||!
f
.
_data
(
a
,
g
))
&&
setTimeout
(
function
(){
!
f
.
_data
(
a
,
e
)
&&!
f
.
_data
(
a
,
g
)
&&
(
f
.
removeData
(
a
,
d
,
!
0
),
h
.
fire
())},
0
)}
function
m
(
a
){
for
(
var
b
in
a
){
if
(
b
===
"
data
"
&&
f
.
isEmptyObject
(
a
[
b
]))
continue
;
if
(
b
!==
"
toJSON
"
)
return
!
1
}
return
!
0
}
function
l
(
a
,
c
,
d
){
if
(
d
===
b
&&
a
.
nodeType
===
1
){
var
e
=
"
data-
"
+
c
.
replace
(
k
,
"
-$1
"
).
toLowerCase
();
d
=
a
.
getAttribute
(
e
);
if
(
typeof
d
==
"
string
"
){
try
{
d
=
d
===
"
true
"
?
!
0
:
d
===
"
false
"
?
!
1
:
d
===
"
null
"
?
null
:
f
.
isNumeric
(
d
)?
+
d
:
j
.
test
(
d
)?
f
.
parseJSON
(
d
):
d
}
catch
(
g
){}
f
.
data
(
a
,
c
,
d
)}
else
d
=
b
}
return
d
}
function
h
(
a
){
var
b
=
g
[
a
]
=
{},
c
,
d
;
a
=
a
.
split
(
/
\s
+/
);
for
(
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
)
b
[
a
[
c
]]
=!
0
;
return
b
}
var
c
=
a
.
document
,
d
=
a
.
navigator
,
e
=
a
.
location
,
f
=
function
(){
function
J
(){
if
(
!
e
.
isReady
){
try
{
c
.
documentElement
.
doScroll
(
"
left
"
)}
catch
(
a
){
setTimeout
(
J
,
1
);
return
}
e
.
ready
()}}
var
e
=
function
(
a
,
b
){
return
new
e
.
fn
.
init
(
a
,
b
,
h
)},
f
=
a
.
jQuery
,
g
=
a
.
$
,
h
,
i
=
/^
(?:[^
#<
]
*
(
<
[\w\W]
+>
)[^
>
]
*$|#
([\w\-]
*
)
$
)
/
,
j
=
/
\S
/
,
k
=
/^
\s
+/
,
l
=
/
\s
+$/
,
m
=
/^<
(\w
+
)\s
*
\/?
>
(?:
<
\/\1
>
)?
$/
,
n
=
/^
[\]
,:{}
\s]
*$/
,
o
=
/
\\(?:[
"
\\\/
bfnrt
]
|u
[
0-9a-fA-F
]{4})
/g
,
p
=
/"
[^
"
\\\n\r]
*"|true|false|null|-
?\d
+
(?:\.\d
*
)?(?:[
eE
][
+
\-]?\d
+
)?
/g
,
q
=
/
(?:
^|:|,
)(?:\s
*
\[)
+/g
,
r
=
/
(
webkit
)[
\/]([\w
.
]
+
)
/
,
s
=
/
(
opera
)(?:
.*version
)?[
\/]([\w
.
]
+
)
/
,
t
=
/
(
msie
)
([\w
.
]
+
)
/
,
u
=
/
(
mozilla
)(?:
.*
?
rv:
([\w
.
]
+
))?
/
,
v
=
/-
([
a-z
]
|
[
0-9
])
/ig
,
w
=
/^-ms-/
,
x
=
function
(
a
,
b
){
return
(
b
+
""
).
toUpperCase
()},
y
=
d
.
userAgent
,
z
,
A
,
B
,
C
=
Object
.
prototype
.
toString
,
D
=
Object
.
prototype
.
hasOwnProperty
,
E
=
Array
.
prototype
.
push
,
F
=
Array
.
prototype
.
slice
,
G
=
String
.
prototype
.
trim
,
H
=
Array
.
prototype
.
indexOf
,
I
=
{};
e
.
fn
=
e
.
prototype
=
{
constructor
:
e
,
init
:
function
(
a
,
d
,
f
){
var
g
,
h
,
j
,
k
;
if
(
!
a
)
return
this
;
if
(
a
.
nodeType
){
this
.
context
=
this
[
0
]
=
a
,
this
.
length
=
1
;
return
this
}
if
(
a
===
"
body
"
&&!
d
&&
c
.
body
){
this
.
context
=
c
,
this
[
0
]
=
c
.
body
,
this
.
selector
=
a
,
this
.
length
=
1
;
return
this
}
if
(
typeof
a
==
"
string
"
){
a
.
charAt
(
0
)
!==
"
<
"
||
a
.
charAt
(
a
.
length
-
1
)
!==
"
>
"
||
a
.
length
<
3
?
g
=
i
.
exec
(
a
):
g
=
[
null
,
a
,
null
];
if
(
g
&&
(
g
[
1
]
||!
d
)){
if
(
g
[
1
]){
d
=
d
instanceof
e
?
d
[
0
]:
d
,
k
=
d
?
d
.
ownerDocument
||
d
:
c
,
j
=
m
.
exec
(
a
),
j
?
e
.
isPlainObject
(
d
)?(
a
=
[
c
.
createElement
(
j
[
1
])],
e
.
fn
.
attr
.
call
(
a
,
d
,
!
0
)):
a
=
[
k
.
createElement
(
j
[
1
])]:(
j
=
e
.
buildFragment
([
g
[
1
]],[
k
]),
a
=
(
j
.
cacheable
?
e
.
clone
(
j
.
fragment
):
j
.
fragment
).
childNodes
);
return
e
.
merge
(
this
,
a
)}
h
=
c
.
getElementById
(
g
[
2
]);
if
(
h
&&
h
.
parentNode
){
if
(
h
.
id
!==
g
[
2
])
return
f
.
find
(
a
);
this
.
length
=
1
,
this
[
0
]
=
h
}
this
.
context
=
c
,
this
.
selector
=
a
;
return
this
}
return
!
d
||
d
.
jquery
?(
d
||
f
).
find
(
a
):
this
.
constructor
(
d
).
find
(
a
)}
if
(
e
.
isFunction
(
a
))
return
f
.
ready
(
a
);
a
.
selector
!==
b
&&
(
this
.
selector
=
a
.
selector
,
this
.
context
=
a
.
context
);
return
e
.
makeArray
(
a
,
this
)},
selector
:
""
,
jquery
:
"
1.7.2
"
,
length
:
0
,
size
:
function
(){
return
this
.
length
},
toArray
:
function
(){
return
F
.
call
(
this
,
0
)},
get
:
function
(
a
){
return
a
==
null
?
this
.
toArray
():
a
<
0
?
this
[
this
.
length
+
a
]:
this
[
a
]},
pushStack
:
function
(
a
,
b
,
c
){
var
d
=
this
.
constructor
();
e
.
isArray
(
a
)?
E
.
apply
(
d
,
a
):
e
.
merge
(
d
,
a
),
d
.
prevObject
=
this
,
d
.
context
=
this
.
context
,
b
===
"
find
"
?
d
.
selector
=
this
.
selector
+
(
this
.
selector
?
"
"
:
""
)
+
c
:
b
&&
(
d
.
selector
=
this
.
selector
+
"
.
"
+
b
+
"
(
"
+
c
+
"
)
"
);
return
d
},
each
:
function
(
a
,
b
){
return
e
.
each
(
this
,
a
,
b
)},
ready
:
function
(
a
){
e
.
bindReady
(),
A
.
add
(
a
);
return
this
},
eq
:
function
(
a
){
a
=+
a
;
return
a
===-
1
?
this
.
slice
(
a
):
this
.
slice
(
a
,
a
+
1
)},
first
:
function
(){
return
this
.
eq
(
0
)},
last
:
function
(){
return
this
.
eq
(
-
1
)},
slice
:
function
(){
return
this
.
pushStack
(
F
.
apply
(
this
,
arguments
),
"
slice
"
,
F
.
call
(
arguments
).
join
(
"
,
"
))},
map
:
function
(
a
){
return
this
.
pushStack
(
e
.
map
(
this
,
function
(
b
,
c
){
return
a
.
call
(
b
,
c
,
b
)}))},
end
:
function
(){
return
this
.
prevObject
||
this
.
constructor
(
null
)},
push
:
E
,
sort
:[].
sort
,
splice
:[].
splice
},
e
.
fn
.
init
.
prototype
=
e
.
fn
,
e
.
extend
=
e
.
fn
.
extend
=
function
(){
var
a
,
c
,
d
,
f
,
g
,
h
,
i
=
arguments
[
0
]
||
{},
j
=
1
,
k
=
arguments
.
length
,
l
=!
1
;
typeof
i
==
"
boolean
"
&&
(
l
=
i
,
i
=
arguments
[
1
]
||
{},
j
=
2
),
typeof
i
!=
"
object
"
&&!
e
.
isFunction
(
i
)
&&
(
i
=
{}),
k
===
j
&&
(
i
=
this
,
--
j
);
for
(;
j
<
k
;
j
++
)
if
((
a
=
arguments
[
j
])
!=
null
)
for
(
c
in
a
){
d
=
i
[
c
],
f
=
a
[
c
];
if
(
i
===
f
)
continue
;
l
&&
f
&&
(
e
.
isPlainObject
(
f
)
||
(
g
=
e
.
isArray
(
f
)))?(
g
?(
g
=!
1
,
h
=
d
&&
e
.
isArray
(
d
)?
d
:[]):
h
=
d
&&
e
.
isPlainObject
(
d
)?
d
:{},
i
[
c
]
=
e
.
extend
(
l
,
h
,
f
)):
f
!==
b
&&
(
i
[
c
]
=
f
)}
return
i
},
e
.
extend
({
noConflict
:
function
(
b
){
a
.
$
===
e
&&
(
a
.
$
=
g
),
b
&&
a
.
jQuery
===
e
&&
(
a
.
jQuery
=
f
);
return
e
},
isReady
:
!
1
,
readyWait
:
1
,
holdReady
:
function
(
a
){
a
?
e
.
readyWait
++
:
e
.
ready
(
!
0
)},
ready
:
function
(
a
){
if
(
a
===!
0
&&!--
e
.
readyWait
||
a
!==!
0
&&!
e
.
isReady
){
if
(
!
c
.
body
)
return
setTimeout
(
e
.
ready
,
1
);
e
.
isReady
=!
0
;
if
(
a
!==!
0
&&--
e
.
readyWait
>
0
)
return
;
A
.
fireWith
(
c
,[
e
]),
e
.
fn
.
trigger
&&
e
(
c
).
trigger
(
"
ready
"
).
off
(
"
ready
"
)}},
bindReady
:
function
(){
if
(
!
A
){
A
=
e
.
Callbacks
(
"
once memory
"
);
if
(
c
.
readyState
===
"
complete
"
)
return
setTimeout
(
e
.
ready
,
1
);
if
(
c
.
addEventListener
)
c
.
addEventListener
(
"
DOMContentLoaded
"
,
B
,
!
1
),
a
.
addEventListener
(
"
load
"
,
e
.
ready
,
!
1
);
else
if
(
c
.
attachEvent
){
c
.
attachEvent
(
"
onreadystatechange
"
,
B
),
a
.
attachEvent
(
"
onload
"
,
e
.
ready
);
var
b
=!
1
;
try
{
b
=
a
.
frameElement
==
null
}
catch
(
d
){}
c
.
documentElement
.
doScroll
&&
b
&&
J
()}}},
isFunction
:
function
(
a
){
return
e
.
type
(
a
)
===
"
function
"
},
isArray
:
Array
.
isArray
||
function
(
a
){
return
e
.
type
(
a
)
===
"
array
"
},
isWindow
:
function
(
a
){
return
a
!=
null
&&
a
==
a
.
window
},
isNumeric
:
function
(
a
){
return
!
isNaN
(
parseFloat
(
a
))
&&
isFinite
(
a
)},
type
:
function
(
a
){
return
a
==
null
?
String
(
a
):
I
[
C
.
call
(
a
)]
||
"
object
"
},
isPlainObject
:
function
(
a
){
if
(
!
a
||
e
.
type
(
a
)
!==
"
object
"
||
a
.
nodeType
||
e
.
isWindow
(
a
))
return
!
1
;
try
{
if
(
a
.
constructor
&&!
D
.
call
(
a
,
"
constructor
"
)
&&!
D
.
call
(
a
.
constructor
.
prototype
,
"
isPrototypeOf
"
))
return
!
1
}
catch
(
c
){
return
!
1
}
var
d
;
for
(
d
in
a
);
return
d
===
b
||
D
.
call
(
a
,
d
)},
isEmptyObject
:
function
(
a
){
for
(
var
b
in
a
)
return
!
1
;
return
!
0
},
error
:
function
(
a
){
throw
new
Error
(
a
)},
parseJSON
:
function
(
b
){
if
(
typeof
b
!=
"
string
"
||!
b
)
return
null
;
b
=
e
.
trim
(
b
);
if
(
a
.
JSON
&&
a
.
JSON
.
parse
)
return
a
.
JSON
.
parse
(
b
);
if
(
n
.
test
(
b
.
replace
(
o
,
"
@
"
).
replace
(
p
,
"
]
"
).
replace
(
q
,
""
)))
return
(
new
Function
(
"
return
"
+
b
))();
e
.
error
(
"
Invalid JSON:
"
+
b
)},
parseXML
:
function
(
c
){
if
(
typeof
c
!=
"
string
"
||!
c
)
return
null
;
var
d
,
f
;
try
{
a
.
DOMParser
?(
f
=
new
DOMParser
,
d
=
f
.
parseFromString
(
c
,
"
text/xml
"
)):(
d
=
new
ActiveXObject
(
"
Microsoft.XMLDOM
"
),
d
.
async
=
"
false
"
,
d
.
loadXML
(
c
))}
catch
(
g
){
d
=
b
}(
!
d
||!
d
.
documentElement
||
d
.
getElementsByTagName
(
"
parsererror
"
).
length
)
&&
e
.
error
(
"
Invalid XML:
"
+
c
);
return
d
},
noop
:
function
(){},
globalEval
:
function
(
b
){
b
&&
j
.
test
(
b
)
&&
(
a
.
execScript
||
function
(
b
){
a
.
eval
.
call
(
a
,
b
)})(
b
)},
camelCase
:
function
(
a
){
return
a
.
replace
(
w
,
"
ms-
"
).
replace
(
v
,
x
)},
nodeName
:
function
(
a
,
b
){
return
a
.
nodeName
&&
a
.
nodeName
.
toUpperCase
()
===
b
.
toUpperCase
()},
each
:
function
(
a
,
c
,
d
){
var
f
,
g
=
0
,
h
=
a
.
length
,
i
=
h
===
b
||
e
.
isFunction
(
a
);
if
(
d
){
if
(
i
){
for
(
f
in
a
)
if
(
c
.
apply
(
a
[
f
],
d
)
===!
1
)
break
}
else
for
(;
g
<
h
;)
if
(
c
.
apply
(
a
[
g
++
],
d
)
===!
1
)
break
}
else
if
(
i
){
for
(
f
in
a
)
if
(
c
.
call
(
a
[
f
],
f
,
a
[
f
])
===!
1
)
break
}
else
for
(;
g
<
h
;)
if
(
c
.
call
(
a
[
g
],
g
,
a
[
g
++
])
===!
1
)
break
;
return
a
},
trim
:
G
?
function
(
a
){
return
a
==
null
?
""
:
G
.
call
(
a
)}:
function
(
a
){
return
a
==
null
?
""
:(
a
+
""
).
replace
(
k
,
""
).
replace
(
l
,
""
)},
makeArray
:
function
(
a
,
b
){
var
c
=
b
||
[];
if
(
a
!=
null
){
var
d
=
e
.
type
(
a
);
a
.
length
==
null
||
d
===
"
string
"
||
d
===
"
function
"
||
d
===
"
regexp
"
||
e
.
isWindow
(
a
)?
E
.
call
(
c
,
a
):
e
.
merge
(
c
,
a
)}
return
c
},
inArray
:
function
(
a
,
b
,
c
){
var
d
;
if
(
b
){
if
(
H
)
return
H
.
call
(
b
,
a
,
c
);
d
=
b
.
length
,
c
=
c
?
c
<
0
?
Math
.
max
(
0
,
d
+
c
):
c
:
0
;
for
(;
c
<
d
;
c
++
)
if
(
c
in
b
&&
b
[
c
]
===
a
)
return
c
}
return
-
1
},
merge
:
function
(
a
,
c
){
var
d
=
a
.
length
,
e
=
0
;
if
(
typeof
c
.
length
==
"
number
"
)
for
(
var
f
=
c
.
length
;
e
<
f
;
e
++
)
a
[
d
++
]
=
c
[
e
];
else
while
(
c
[
e
]
!==
b
)
a
[
d
++
]
=
c
[
e
++
];
a
.
length
=
d
;
return
a
},
grep
:
function
(
a
,
b
,
c
){
var
d
=
[],
e
;
c
=!!
c
;
for
(
var
f
=
0
,
g
=
a
.
length
;
f
<
g
;
f
++
)
e
=!!
b
(
a
[
f
],
f
),
c
!==
e
&&
d
.
push
(
a
[
f
]);
return
d
},
map
:
function
(
a
,
c
,
d
){
var
f
,
g
,
h
=
[],
i
=
0
,
j
=
a
.
length
,
k
=
a
instanceof
e
||
j
!==
b
&&
typeof
j
==
"
number
"
&&
(
j
>
0
&&
a
[
0
]
&&
a
[
j
-
1
]
||
j
===
0
||
e
.
isArray
(
a
));
if
(
k
)
for
(;
i
<
j
;
i
++
)
f
=
c
(
a
[
i
],
i
,
d
),
f
!=
null
&&
(
h
[
h
.
length
]
=
f
);
else
for
(
g
in
a
)
f
=
c
(
a
[
g
],
g
,
d
),
f
!=
null
&&
(
h
[
h
.
length
]
=
f
);
return
h
.
concat
.
apply
([],
h
)},
guid
:
1
,
proxy
:
function
(
a
,
c
){
if
(
typeof
c
==
"
string
"
){
var
d
=
a
[
c
];
c
=
a
,
a
=
d
}
if
(
!
e
.
isFunction
(
a
))
return
b
;
var
f
=
F
.
call
(
arguments
,
2
),
g
=
function
(){
return
a
.
apply
(
c
,
f
.
concat
(
F
.
call
(
arguments
)))};
g
.
guid
=
a
.
guid
=
a
.
guid
||
g
.
guid
||
e
.
guid
++
;
return
g
},
access
:
function
(
a
,
c
,
d
,
f
,
g
,
h
,
i
){
var
j
,
k
=
d
==
null
,
l
=
0
,
m
=
a
.
length
;
if
(
d
&&
typeof
d
==
"
object
"
){
for
(
l
in
d
)
e
.
access
(
a
,
c
,
l
,
d
[
l
],
1
,
h
,
f
);
g
=
1
}
else
if
(
f
!==
b
){
j
=
i
===
b
&&
e
.
isFunction
(
f
),
k
&&
(
j
?(
j
=
c
,
c
=
function
(
a
,
b
,
c
){
return
j
.
call
(
e
(
a
),
c
)}):(
c
.
call
(
a
,
f
),
c
=
null
));
if
(
c
)
for
(;
l
<
m
;
l
++
)
c
(
a
[
l
],
d
,
j
?
f
.
call
(
a
[
l
],
l
,
c
(
a
[
l
],
d
)):
f
,
i
);
g
=
1
}
return
g
?
a
:
k
?
c
.
call
(
a
):
m
?
c
(
a
[
0
],
d
):
h
},
now
:
function
(){
return
(
new
Date
).
getTime
()},
uaMatch
:
function
(
a
){
a
=
a
.
toLowerCase
();
var
b
=
r
.
exec
(
a
)
||
s
.
exec
(
a
)
||
t
.
exec
(
a
)
||
a
.
indexOf
(
"
compatible
"
)
<
0
&&
u
.
exec
(
a
)
||
[];
return
{
browser
:
b
[
1
]
||
""
,
version
:
b
[
2
]
||
"
0
"
}},
sub
:
function
(){
function
a
(
b
,
c
){
return
new
a
.
fn
.
init
(
b
,
c
)}
e
.
extend
(
!
0
,
a
,
this
),
a
.
superclass
=
this
,
a
.
fn
=
a
.
prototype
=
this
(),
a
.
fn
.
constructor
=
a
,
a
.
sub
=
this
.
sub
,
a
.
fn
.
init
=
function
(
d
,
f
){
f
&&
f
instanceof
e
&&!
(
f
instanceof
a
)
&&
(
f
=
a
(
f
));
return
e
.
fn
.
init
.
call
(
this
,
d
,
f
,
b
)},
a
.
fn
.
init
.
prototype
=
a
.
fn
;
var
b
=
a
(
c
);
return
a
},
browser
:{}}),
e
.
each
(
"
Boolean Number String Function Array Date RegExp Object
"
.
split
(
"
"
),
function
(
a
,
b
){
I
[
"
[object
"
+
b
+
"
]
"
]
=
b
.
toLowerCase
()}),
z
=
e
.
uaMatch
(
y
),
z
.
browser
&&
(
e
.
browser
[
z
.
browser
]
=!
0
,
e
.
browser
.
version
=
z
.
version
),
e
.
browser
.
webkit
&&
(
e
.
browser
.
safari
=!
0
),
j
.
test
(
"
"
)
&&
(
k
=
/^
[\s\x
A0
]
+/
,
l
=
/
[\s\x
A0
]
+$/
),
h
=
e
(
c
),
c
.
addEventListener
?
B
=
function
(){
c
.
removeEventListener
(
"
DOMContentLoaded
"
,
B
,
!
1
),
e
.
ready
()}:
c
.
attachEvent
&&
(
B
=
function
(){
c
.
readyState
===
"
complete
"
&&
(
c
.
detachEvent
(
"
onreadystatechange
"
,
B
),
e
.
ready
())});
return
e
}(),
g
=
{};
f
.
Callbacks
=
function
(
a
){
a
=
a
?
g
[
a
]
||
h
(
a
):{};
var
c
=
[],
d
=
[],
e
,
i
,
j
,
k
,
l
,
m
,
n
=
function
(
b
){
var
d
,
e
,
g
,
h
,
i
;
for
(
d
=
0
,
e
=
b
.
length
;
d
<
e
;
d
++
)
g
=
b
[
d
],
h
=
f
.
type
(
g
),
h
===
"
array
"
?
n
(
g
):
h
===
"
function
"
&&
(
!
a
.
unique
||!
p
.
has
(
g
))
&&
c
.
push
(
g
)},
o
=
function
(
b
,
f
){
f
=
f
||
[],
e
=!
a
.
memory
||
[
b
,
f
],
i
=!
0
,
j
=!
0
,
m
=
k
||
0
,
k
=
0
,
l
=
c
.
length
;
for
(;
c
&&
m
<
l
;
m
++
)
if
(
c
[
m
].
apply
(
b
,
f
)
===!
1
&&
a
.
stopOnFalse
){
e
=!
0
;
break
}
j
=!
1
,
c
&&
(
a
.
once
?
e
===!
0
?
p
.
disable
():
c
=
[]:
d
&&
d
.
length
&&
(
e
=
d
.
shift
(),
p
.
fireWith
(
e
[
0
],
e
[
1
])))},
p
=
{
add
:
function
(){
if
(
c
){
var
a
=
c
.
length
;
n
(
arguments
),
j
?
l
=
c
.
length
:
e
&&
e
!==!
0
&&
(
k
=
a
,
o
(
e
[
0
],
e
[
1
]))}
return
this
},
remove
:
function
(){
if
(
c
){
var
b
=
arguments
,
d
=
0
,
e
=
b
.
length
;
for
(;
d
<
e
;
d
++
)
for
(
var
f
=
0
;
f
<
c
.
length
;
f
++
)
if
(
b
[
d
]
===
c
[
f
]){
j
&&
f
<=
l
&&
(
l
--
,
f
<=
m
&&
m
--
),
c
.
splice
(
f
--
,
1
);
if
(
a
.
unique
)
break
}}
return
this
},
has
:
function
(
a
){
if
(
c
){
var
b
=
0
,
d
=
c
.
length
;
for
(;
b
<
d
;
b
++
)
if
(
a
===
c
[
b
])
return
!
0
}
return
!
1
},
empty
:
function
(){
c
=
[];
return
this
},
disable
:
function
(){
c
=
d
=
e
=
b
;
return
this
},
disabled
:
function
(){
return
!
c
},
lock
:
function
(){
d
=
b
,(
!
e
||
e
===!
0
)
&&
p
.
disable
();
return
this
},
locked
:
function
(){
return
!
d
},
fireWith
:
function
(
b
,
c
){
d
&&
(
j
?
a
.
once
||
d
.
push
([
b
,
c
]):(
!
a
.
once
||!
e
)
&&
o
(
b
,
c
));
return
this
},
fire
:
function
(){
p
.
fireWith
(
this
,
arguments
);
return
this
},
fired
:
function
(){
return
!!
i
}};
return
p
};
var
i
=
[].
slice
;
f
.
extend
({
Deferred
:
function
(
a
){
var
b
=
f
.
Callbacks
(
"
once memory
"
),
c
=
f
.
Callbacks
(
"
once memory
"
),
d
=
f
.
Callbacks
(
"
memory
"
),
e
=
"
pending
"
,
g
=
{
resolve
:
b
,
reject
:
c
,
notify
:
d
},
h
=
{
done
:
b
.
add
,
fail
:
c
.
add
,
progress
:
d
.
add
,
state
:
function
(){
return
e
},
isResolved
:
b
.
fired
,
isRejected
:
c
.
fired
,
then
:
function
(
a
,
b
,
c
){
i
.
done
(
a
).
fail
(
b
).
progress
(
c
);
return
this
},
always
:
function
(){
i
.
done
.
apply
(
i
,
arguments
).
fail
.
apply
(
i
,
arguments
);
return
this
},
pipe
:
function
(
a
,
b
,
c
){
return
f
.
Deferred
(
function
(
d
){
f
.
each
({
done
:[
a
,
"
resolve
"
],
fail
:[
b
,
"
reject
"
],
progress
:[
c
,
"
notify
"
]},
function
(
a
,
b
){
var
c
=
b
[
0
],
e
=
b
[
1
],
g
;
f
.
isFunction
(
c
)?
i
[
a
](
function
(){
g
=
c
.
apply
(
this
,
arguments
),
g
&&
f
.
isFunction
(
g
.
promise
)?
g
.
promise
().
then
(
d
.
resolve
,
d
.
reject
,
d
.
notify
):
d
[
e
+
"
With
"
](
this
===
i
?
d
:
this
,[
g
])}):
i
[
a
](
d
[
e
])})}).
promise
()},
promise
:
function
(
a
){
if
(
a
==
null
)
a
=
h
;
else
for
(
var
b
in
h
)
a
[
b
]
=
h
[
b
];
return
a
}},
i
=
h
.
promise
({}),
j
;
for
(
j
in
g
)
i
[
j
]
=
g
[
j
].
fire
,
i
[
j
+
"
With
"
]
=
g
[
j
].
fireWith
;
i
.
done
(
function
(){
e
=
"
resolved
"
},
c
.
disable
,
d
.
lock
).
fail
(
function
(){
e
=
"
rejected
"
},
b
.
disable
,
d
.
lock
),
a
&&
a
.
call
(
i
,
i
);
return
i
},
when
:
function
(
a
){
function
m
(
a
){
return
function
(
b
){
e
[
a
]
=
arguments
.
length
>
1
?
i
.
call
(
arguments
,
0
):
b
,
j
.
notifyWith
(
k
,
e
)}}
function
l
(
a
){
return
function
(
c
){
b
[
a
]
=
arguments
.
length
>
1
?
i
.
call
(
arguments
,
0
):
c
,
--
g
||
j
.
resolveWith
(
j
,
b
)}}
var
b
=
i
.
call
(
arguments
,
0
),
c
=
0
,
d
=
b
.
length
,
e
=
Array
(
d
),
g
=
d
,
h
=
d
,
j
=
d
<=
1
&&
a
&&
f
.
isFunction
(
a
.
promise
)?
a
:
f
.
Deferred
(),
k
=
j
.
promise
();
if
(
d
>
1
){
for
(;
c
<
d
;
c
++
)
b
[
c
]
&&
b
[
c
].
promise
&&
f
.
isFunction
(
b
[
c
].
promise
)?
b
[
c
].
promise
().
then
(
l
(
c
),
j
.
reject
,
m
(
c
)):
--
g
;
g
||
j
.
resolveWith
(
j
,
b
)}
else
j
!==
a
&&
j
.
resolveWith
(
j
,
d
?[
a
]:[]);
return
k
}}),
f
.
support
=
function
(){
var
b
,
d
,
e
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
,
p
=
c
.
createElement
(
"
div
"
),
q
=
c
.
documentElement
;
p
.
setAttribute
(
"
className
"
,
"
t
"
),
p
.
innerHTML
=
"
<link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>
"
,
d
=
p
.
getElementsByTagName
(
"
*
"
),
e
=
p
.
getElementsByTagName
(
"
a
"
)[
0
];
if
(
!
d
||!
d
.
length
||!
e
)
return
{};
g
=
c
.
createElement
(
"
select
"
),
h
=
g
.
appendChild
(
c
.
createElement
(
"
option
"
)),
i
=
p
.
getElementsByTagName
(
"
input
"
)[
0
],
b
=
{
leadingWhitespace
:
p
.
firstChild
.
nodeType
===
3
,
tbody
:
!
p
.
getElementsByTagName
(
"
tbody
"
).
length
,
htmlSerialize
:
!!
p
.
getElementsByTagName
(
"
link
"
).
length
,
style
:
/top/
.
test
(
e
.
getAttribute
(
"
style
"
)),
hrefNormalized
:
e
.
getAttribute
(
"
href
"
)
===
"
/a
"
,
opacity
:
/^0.55/
.
test
(
e
.
style
.
opacity
),
cssFloat
:
!!
e
.
style
.
cssFloat
,
checkOn
:
i
.
value
===
"
on
"
,
optSelected
:
h
.
selected
,
getSetAttribute
:
p
.
className
!==
"
t
"
,
enctype
:
!!
c
.
createElement
(
"
form
"
).
enctype
,
html5Clone
:
c
.
createElement
(
"
nav
"
).
cloneNode
(
!
0
).
outerHTML
!==
"
<:nav></:nav>
"
,
submitBubbles
:
!
0
,
changeBubbles
:
!
0
,
focusinBubbles
:
!
1
,
deleteExpando
:
!
0
,
noCloneEvent
:
!
0
,
inlineBlockNeedsLayout
:
!
1
,
shrinkWrapBlocks
:
!
1
,
reliableMarginRight
:
!
0
,
pixelMargin
:
!
0
},
f
.
boxModel
=
b
.
boxModel
=
c
.
compatMode
===
"
CSS1Compat
"
,
i
.
checked
=!
0
,
b
.
noCloneChecked
=
i
.
cloneNode
(
!
0
).
checked
,
g
.
disabled
=!
0
,
b
.
optDisabled
=!
h
.
disabled
;
try
{
delete
p
.
test
}
catch
(
r
){
b
.
deleteExpando
=!
1
}
!
p
.
addEventListener
&&
p
.
attachEvent
&&
p
.
fireEvent
&&
(
p
.
attachEvent
(
"
onclick
"
,
function
(){
b
.
noCloneEvent
=!
1
}),
p
.
cloneNode
(
!
0
).
fireEvent
(
"
onclick
"
)),
i
=
c
.
createElement
(
"
input
"
),
i
.
value
=
"
t
"
,
i
.
setAttribute
(
"
type
"
,
"
radio
"
),
b
.
radioValue
=
i
.
value
===
"
t
"
,
i
.
setAttribute
(
"
checked
"
,
"
checked
"
),
i
.
setAttribute
(
"
name
"
,
"
t
"
),
p
.
appendChild
(
i
),
j
=
c
.
createDocumentFragment
(),
j
.
appendChild
(
p
.
lastChild
),
b
.
checkClone
=
j
.
cloneNode
(
!
0
).
cloneNode
(
!
0
).
lastChild
.
checked
,
b
.
appendChecked
=
i
.
checked
,
j
.
removeChild
(
i
),
j
.
appendChild
(
p
);
if
(
p
.
attachEvent
)
for
(
n
in
{
submit
:
1
,
change
:
1
,
focusin
:
1
})
m
=
"
on
"
+
n
,
o
=
m
in
p
,
o
||
(
p
.
setAttribute
(
m
,
"
return;
"
),
o
=
typeof
p
[
m
]
==
"
function
"
),
b
[
n
+
"
Bubbles
"
]
=
o
;
j
.
removeChild
(
p
),
j
=
g
=
h
=
p
=
i
=
null
,
f
(
function
(){
var
d
,
e
,
g
,
h
,
i
,
j
,
l
,
m
,
n
,
q
,
r
,
s
,
t
,
u
=
c
.
getElementsByTagName
(
"
body
"
)[
0
];
!
u
||
(
m
=
1
,
t
=
"
padding:0;margin:0;border:
"
,
r
=
"
position:absolute;top:0;left:0;width:1px;height:1px;
"
,
s
=
t
+
"
0;visibility:hidden;
"
,
n
=
"
style='
"
+
r
+
t
+
"
5px solid #000;
"
,
q
=
"
<div
"
+
n
+
"
display:block;'><div style='
"
+
t
+
"
0;display:block;overflow:hidden;'></div></div>
"
+
"
<table
"
+
n
+
"
' cellpadding='0' cellspacing='0'>
"
+
"
<tr><td></td></tr></table>
"
,
d
=
c
.
createElement
(
"
div
"
),
d
.
style
.
cssText
=
s
+
"
width:0;height:0;position:static;top:0;margin-top:
"
+
m
+
"
px
"
,
u
.
insertBefore
(
d
,
u
.
firstChild
),
p
=
c
.
createElement
(
"
div
"
),
d
.
appendChild
(
p
),
p
.
innerHTML
=
"
<table><tr><td style='
"
+
t
+
"
0;display:none'></td><td>t</td></tr></table>
"
,
k
=
p
.
getElementsByTagName
(
"
td
"
),
o
=
k
[
0
].
offsetHeight
===
0
,
k
[
0
].
style
.
display
=
""
,
k
[
1
].
style
.
display
=
"
none
"
,
b
.
reliableHiddenOffsets
=
o
&&
k
[
0
].
offsetHeight
===
0
,
a
.
getComputedStyle
&&
(
p
.
innerHTML
=
""
,
l
=
c
.
createElement
(
"
div
"
),
l
.
style
.
width
=
"
0
"
,
l
.
style
.
marginRight
=
"
0
"
,
p
.
style
.
width
=
"
2px
"
,
p
.
appendChild
(
l
),
b
.
reliableMarginRight
=
(
parseInt
((
a
.
getComputedStyle
(
l
,
null
)
||
{
marginRight
:
0
}).
marginRight
,
10
)
||
0
)
===
0
),
typeof
p
.
style
.
zoom
!=
"
undefined
"
&&
(
p
.
innerHTML
=
""
,
p
.
style
.
width
=
p
.
style
.
padding
=
"
1px
"
,
p
.
style
.
border
=
0
,
p
.
style
.
overflow
=
"
hidden
"
,
p
.
style
.
display
=
"
inline
"
,
p
.
style
.
zoom
=
1
,
b
.
inlineBlockNeedsLayout
=
p
.
offsetWidth
===
3
,
p
.
style
.
display
=
"
block
"
,
p
.
style
.
overflow
=
"
visible
"
,
p
.
innerHTML
=
"
<div style='width:5px;'></div>
"
,
b
.
shrinkWrapBlocks
=
p
.
offsetWidth
!==
3
),
p
.
style
.
cssText
=
r
+
s
,
p
.
innerHTML
=
q
,
e
=
p
.
firstChild
,
g
=
e
.
firstChild
,
i
=
e
.
nextSibling
.
firstChild
.
firstChild
,
j
=
{
doesNotAddBorder
:
g
.
offsetTop
!==
5
,
doesAddBorderForTableAndCells
:
i
.
offsetTop
===
5
},
g
.
style
.
position
=
"
fixed
"
,
g
.
style
.
top
=
"
20px
"
,
j
.
fixedPosition
=
g
.
offsetTop
===
20
||
g
.
offsetTop
===
15
,
g
.
style
.
position
=
g
.
style
.
top
=
""
,
e
.
style
.
overflow
=
"
hidden
"
,
e
.
style
.
position
=
"
relative
"
,
j
.
subtractsBorderForOverflowNotVisible
=
g
.
offsetTop
===-
5
,
j
.
doesNotIncludeMarginInBodyOffset
=
u
.
offsetTop
!==
m
,
a
.
getComputedStyle
&&
(
p
.
style
.
marginTop
=
"
1%
"
,
b
.
pixelMargin
=
(
a
.
getComputedStyle
(
p
,
null
)
||
{
marginTop
:
0
}).
marginTop
!==
"
1%
"
),
typeof
d
.
style
.
zoom
!=
"
undefined
"
&&
(
d
.
style
.
zoom
=
1
),
u
.
removeChild
(
d
),
l
=
p
=
d
=
null
,
f
.
extend
(
b
,
j
))});
return
b
}();
var
j
=
/^
(?:\{
.*
\}
|
\[
.*
\])
$/
,
k
=
/
([
A-Z
])
/g
;
f
.
extend
({
cache
:{},
uuid
:
0
,
expando
:
"
jQuery
"
+
(
f
.
fn
.
jquery
+
Math
.
random
()).
replace
(
/
\D
/g
,
""
),
noData
:{
embed
:
!
0
,
object
:
"
clsid:D27CDB6E-AE6D-11cf-96B8-444553540000
"
,
applet
:
!
0
},
hasData
:
function
(
a
){
a
=
a
.
nodeType
?
f
.
cache
[
a
[
f
.
expando
]]:
a
[
f
.
expando
];
return
!!
a
&&!
m
(
a
)},
data
:
function
(
a
,
c
,
d
,
e
){
if
(
!!
f
.
acceptData
(
a
)){
var
g
,
h
,
i
,
j
=
f
.
expando
,
k
=
typeof
c
==
"
string
"
,
l
=
a
.
nodeType
,
m
=
l
?
f
.
cache
:
a
,
n
=
l
?
a
[
j
]:
a
[
j
]
&&
j
,
o
=
c
===
"
events
"
;
if
((
!
n
||!
m
[
n
]
||!
o
&&!
e
&&!
m
[
n
].
data
)
&&
k
&&
d
===
b
)
return
;
n
||
(
l
?
a
[
j
]
=
n
=++
f
.
uuid
:
n
=
j
),
m
[
n
]
||
(
m
[
n
]
=
{},
l
||
(
m
[
n
].
toJSON
=
f
.
noop
));
if
(
typeof
c
==
"
object
"
||
typeof
c
==
"
function
"
)
e
?
m
[
n
]
=
f
.
extend
(
m
[
n
],
c
):
m
[
n
].
data
=
f
.
extend
(
m
[
n
].
data
,
c
);
g
=
h
=
m
[
n
],
e
||
(
h
.
data
||
(
h
.
data
=
{}),
h
=
h
.
data
),
d
!==
b
&&
(
h
[
f
.
camelCase
(
c
)]
=
d
);
if
(
o
&&!
h
[
c
])
return
g
.
events
;
k
?(
i
=
h
[
c
],
i
==
null
&&
(
i
=
h
[
f
.
camelCase
(
c
)])):
i
=
h
;
return
i
}},
removeData
:
function
(
a
,
b
,
c
){
if
(
!!
f
.
acceptData
(
a
)){
var
d
,
e
,
g
,
h
=
f
.
expando
,
i
=
a
.
nodeType
,
j
=
i
?
f
.
cache
:
a
,
k
=
i
?
a
[
h
]:
h
;
if
(
!
j
[
k
])
return
;
if
(
b
){
d
=
c
?
j
[
k
]:
j
[
k
].
data
;
if
(
d
){
f
.
isArray
(
b
)
||
(
b
in
d
?
b
=
[
b
]:(
b
=
f
.
camelCase
(
b
),
b
in
d
?
b
=
[
b
]:
b
=
b
.
split
(
"
"
)));
for
(
e
=
0
,
g
=
b
.
length
;
e
<
g
;
e
++
)
delete
d
[
b
[
e
]];
if
(
!
(
c
?
m
:
f
.
isEmptyObject
)(
d
))
return
}}
if
(
!
c
){
delete
j
[
k
].
data
;
if
(
!
m
(
j
[
k
]))
return
}
f
.
support
.
deleteExpando
||!
j
.
setInterval
?
delete
j
[
k
]:
j
[
k
]
=
null
,
i
&&
(
f
.
support
.
deleteExpando
?
delete
a
[
h
]:
a
.
removeAttribute
?
a
.
removeAttribute
(
h
):
a
[
h
]
=
null
)}},
_data
:
function
(
a
,
b
,
c
){
return
f
.
data
(
a
,
b
,
c
,
!
0
)},
acceptData
:
function
(
a
){
if
(
a
.
nodeName
){
var
b
=
f
.
noData
[
a
.
nodeName
.
toLowerCase
()];
if
(
b
)
return
b
!==!
0
&&
a
.
getAttribute
(
"
classid
"
)
===
b
}
return
!
0
}}),
f
.
fn
.
extend
({
data
:
function
(
a
,
c
){
var
d
,
e
,
g
,
h
,
i
,
j
=
this
[
0
],
k
=
0
,
m
=
null
;
if
(
a
===
b
){
if
(
this
.
length
){
m
=
f
.
data
(
j
);
if
(
j
.
nodeType
===
1
&&!
f
.
_data
(
j
,
"
parsedAttrs
"
)){
g
=
j
.
attributes
;
for
(
i
=
g
.
length
;
k
<
i
;
k
++
)
h
=
g
[
k
].
name
,
h
.
indexOf
(
"
data-
"
)
===
0
&&
(
h
=
f
.
camelCase
(
h
.
substring
(
5
)),
l
(
j
,
h
,
m
[
h
]));
f
.
_data
(
j
,
"
parsedAttrs
"
,
!
0
)}}
return
m
}
if
(
typeof
a
==
"
object
"
)
return
this
.
each
(
function
(){
f
.
data
(
this
,
a
)});
d
=
a
.
split
(
"
.
"
,
2
),
d
[
1
]
=
d
[
1
]?
"
.
"
+
d
[
1
]:
""
,
e
=
d
[
1
]
+
"
!
"
;
return
f
.
access
(
this
,
function
(
c
){
if
(
c
===
b
){
m
=
this
.
triggerHandler
(
"
getData
"
+
e
,[
d
[
0
]]),
m
===
b
&&
j
&&
(
m
=
f
.
data
(
j
,
a
),
m
=
l
(
j
,
a
,
m
));
return
m
===
b
&&
d
[
1
]?
this
.
data
(
d
[
0
]):
m
}
d
[
1
]
=
c
,
this
.
each
(
function
(){
var
b
=
f
(
this
);
b
.
triggerHandler
(
"
setData
"
+
e
,
d
),
f
.
data
(
this
,
a
,
c
),
b
.
triggerHandler
(
"
changeData
"
+
e
,
d
)})},
null
,
c
,
arguments
.
length
>
1
,
null
,
!
1
)},
removeData
:
function
(
a
){
return
this
.
each
(
function
(){
f
.
removeData
(
this
,
a
)})}}),
f
.
extend
({
_mark
:
function
(
a
,
b
){
a
&&
(
b
=
(
b
||
"
fx
"
)
+
"
mark
"
,
f
.
_data
(
a
,
b
,(
f
.
_data
(
a
,
b
)
||
0
)
+
1
))},
_unmark
:
function
(
a
,
b
,
c
){
a
!==!
0
&&
(
c
=
b
,
b
=
a
,
a
=!
1
);
if
(
b
){
c
=
c
||
"
fx
"
;
var
d
=
c
+
"
mark
"
,
e
=
a
?
0
:(
f
.
_data
(
b
,
d
)
||
1
)
-
1
;
e
?
f
.
_data
(
b
,
d
,
e
):(
f
.
removeData
(
b
,
d
,
!
0
),
n
(
b
,
c
,
"
mark
"
))}},
queue
:
function
(
a
,
b
,
c
){
var
d
;
if
(
a
){
b
=
(
b
||
"
fx
"
)
+
"
queue
"
,
d
=
f
.
_data
(
a
,
b
),
c
&&
(
!
d
||
f
.
isArray
(
c
)?
d
=
f
.
_data
(
a
,
b
,
f
.
makeArray
(
c
)):
d
.
push
(
c
));
return
d
||
[]}},
dequeue
:
function
(
a
,
b
){
b
=
b
||
"
fx
"
;
var
c
=
f
.
queue
(
a
,
b
),
d
=
c
.
shift
(),
e
=
{};
d
===
"
inprogress
"
&&
(
d
=
c
.
shift
()),
d
&&
(
b
===
"
fx
"
&&
c
.
unshift
(
"
inprogress
"
),
f
.
_data
(
a
,
b
+
"
.run
"
,
e
),
d
.
call
(
a
,
function
(){
f
.
dequeue
(
a
,
b
)},
e
)),
c
.
length
||
(
f
.
removeData
(
a
,
b
+
"
queue
"
+
b
+
"
.run
"
,
!
0
),
n
(
a
,
b
,
"
queue
"
))}}),
f
.
fn
.
extend
({
queue
:
function
(
a
,
c
){
var
d
=
2
;
typeof
a
!=
"
string
"
&&
(
c
=
a
,
a
=
"
fx
"
,
d
--
);
if
(
arguments
.
length
<
d
)
return
f
.
queue
(
this
[
0
],
a
);
return
c
===
b
?
this
:
this
.
each
(
function
(){
var
b
=
f
.
queue
(
this
,
a
,
c
);
a
===
"
fx
"
&&
b
[
0
]
!==
"
inprogress
"
&&
f
.
dequeue
(
this
,
a
)})},
dequeue
:
function
(
a
){
return
this
.
each
(
function
(){
f
.
dequeue
(
this
,
a
)})},
delay
:
function
(
a
,
b
){
a
=
f
.
fx
?
f
.
fx
.
speeds
[
a
]
||
a
:
a
,
b
=
b
||
"
fx
"
;
return
this
.
queue
(
b
,
function
(
b
,
c
){
var
d
=
setTimeout
(
b
,
a
);
c
.
stop
=
function
(){
clearTimeout
(
d
)}})},
clearQueue
:
function
(
a
){
return
this
.
queue
(
a
||
"
fx
"
,[])},
promise
:
function
(
a
,
c
){
function
m
(){
--
h
||
d
.
resolveWith
(
e
,[
e
])}
typeof
a
!=
"
string
"
&&
(
c
=
a
,
a
=
b
),
a
=
a
||
"
fx
"
;
var
d
=
f
.
Deferred
(),
e
=
this
,
g
=
e
.
length
,
h
=
1
,
i
=
a
+
"
defer
"
,
j
=
a
+
"
queue
"
,
k
=
a
+
"
mark
"
,
l
;
while
(
g
--
)
if
(
l
=
f
.
data
(
e
[
g
],
i
,
b
,
!
0
)
||
(
f
.
data
(
e
[
g
],
j
,
b
,
!
0
)
||
f
.
data
(
e
[
g
],
k
,
b
,
!
0
))
&&
f
.
data
(
e
[
g
],
i
,
f
.
Callbacks
(
"
once memory
"
),
!
0
))
h
++
,
l
.
add
(
m
);
m
();
return
d
.
promise
(
c
)}});
var
o
=
/
[\n\t\r]
/g
,
p
=
/
\s
+/
,
q
=
/
\r
/g
,
r
=
/^
(?:
button|input
)
$/i
,
s
=
/^
(?:
button|input|object|select|textarea
)
$/i
,
t
=
/^a
(?:
rea
)?
$/i
,
u
=
/^
(?:
autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected
)
$/i
,
v
=
f
.
support
.
getSetAttribute
,
w
,
x
,
y
;
f
.
fn
.
extend
({
attr
:
function
(
a
,
b
){
return
f
.
access
(
this
,
f
.
attr
,
a
,
b
,
arguments
.
length
>
1
)},
removeAttr
:
function
(
a
){
return
this
.
each
(
function
(){
f
.
removeAttr
(
this
,
a
)})},
prop
:
function
(
a
,
b
){
return
f
.
access
(
this
,
f
.
prop
,
a
,
b
,
arguments
.
length
>
1
)},
removeProp
:
function
(
a
){
a
=
f
.
propFix
[
a
]
||
a
;
return
this
.
each
(
function
(){
try
{
this
[
a
]
=
b
,
delete
this
[
a
]}
catch
(
c
){}})},
addClass
:
function
(
a
){
var
b
,
c
,
d
,
e
,
g
,
h
,
i
;
if
(
f
.
isFunction
(
a
))
return
this
.
each
(
function
(
b
){
f
(
this
).
addClass
(
a
.
call
(
this
,
b
,
this
.
className
))});
if
(
a
&&
typeof
a
==
"
string
"
){
b
=
a
.
split
(
p
);
for
(
c
=
0
,
d
=
this
.
length
;
c
<
d
;
c
++
){
e
=
this
[
c
];
if
(
e
.
nodeType
===
1
)
if
(
!
e
.
className
&&
b
.
length
===
1
)
e
.
className
=
a
;
else
{
g
=
"
"
+
e
.
className
+
"
"
;
for
(
h
=
0
,
i
=
b
.
length
;
h
<
i
;
h
++
)
~
g
.
indexOf
(
"
"
+
b
[
h
]
+
"
"
)
||
(
g
+=
b
[
h
]
+
"
"
);
e
.
className
=
f
.
trim
(
g
)}}}
return
this
},
removeClass
:
function
(
a
){
var
c
,
d
,
e
,
g
,
h
,
i
,
j
;
if
(
f
.
isFunction
(
a
))
return
this
.
each
(
function
(
b
){
f
(
this
).
removeClass
(
a
.
call
(
this
,
b
,
this
.
className
))});
if
(
a
&&
typeof
a
==
"
string
"
||
a
===
b
){
c
=
(
a
||
""
).
split
(
p
);
for
(
d
=
0
,
e
=
this
.
length
;
d
<
e
;
d
++
){
g
=
this
[
d
];
if
(
g
.
nodeType
===
1
&&
g
.
className
)
if
(
a
){
h
=
(
"
"
+
g
.
className
+
"
"
).
replace
(
o
,
"
"
);
for
(
i
=
0
,
j
=
c
.
length
;
i
<
j
;
i
++
)
h
=
h
.
replace
(
"
"
+
c
[
i
]
+
"
"
,
"
"
);
g
.
className
=
f
.
trim
(
h
)}
else
g
.
className
=
""
}}
return
this
},
toggleClass
:
function
(
a
,
b
){
var
c
=
typeof
a
,
d
=
typeof
b
==
"
boolean
"
;
if
(
f
.
isFunction
(
a
))
return
this
.
each
(
function
(
c
){
f
(
this
).
toggleClass
(
a
.
call
(
this
,
c
,
this
.
className
,
b
),
b
)});
return
this
.
each
(
function
(){
if
(
c
===
"
string
"
){
var
e
,
g
=
0
,
h
=
f
(
this
),
i
=
b
,
j
=
a
.
split
(
p
);
while
(
e
=
j
[
g
++
])
i
=
d
?
i
:
!
h
.
hasClass
(
e
),
h
[
i
?
"
addClass
"
:
"
removeClass
"
](
e
)}
else
if
(
c
===
"
undefined
"
||
c
===
"
boolean
"
)
this
.
className
&&
f
.
_data
(
this
,
"
__className__
"
,
this
.
className
),
this
.
className
=
this
.
className
||
a
===!
1
?
""
:
f
.
_data
(
this
,
"
__className__
"
)
||
""
})},
hasClass
:
function
(
a
){
var
b
=
"
"
+
a
+
"
"
,
c
=
0
,
d
=
this
.
length
;
for
(;
c
<
d
;
c
++
)
if
(
this
[
c
].
nodeType
===
1
&&
(
"
"
+
this
[
c
].
className
+
"
"
).
replace
(
o
,
"
"
).
indexOf
(
b
)
>-
1
)
return
!
0
;
return
!
1
},
val
:
function
(
a
){
var
c
,
d
,
e
,
g
=
this
[
0
];{
if
(
!!
arguments
.
length
){
e
=
f
.
isFunction
(
a
);
return
this
.
each
(
function
(
d
){
var
g
=
f
(
this
),
h
;
if
(
this
.
nodeType
===
1
){
e
?
h
=
a
.
call
(
this
,
d
,
g
.
val
()):
h
=
a
,
h
==
null
?
h
=
""
:
typeof
h
==
"
number
"
?
h
+=
""
:
f
.
isArray
(
h
)
&&
(
h
=
f
.
map
(
h
,
function
(
a
){
return
a
==
null
?
""
:
a
+
""
})),
c
=
f
.
valHooks
[
this
.
type
]
||
f
.
valHooks
[
this
.
nodeName
.
toLowerCase
()];
if
(
!
c
||!
(
"
set
"
in
c
)
||
c
.
set
(
this
,
h
,
"
value
"
)
===
b
)
this
.
value
=
h
}})}
if
(
g
){
c
=
f
.
valHooks
[
g
.
type
]
||
f
.
valHooks
[
g
.
nodeName
.
toLowerCase
()];
if
(
c
&&
"
get
"
in
c
&&
(
d
=
c
.
get
(
g
,
"
value
"
))
!==
b
)
return
d
;
d
=
g
.
value
;
return
typeof
d
==
"
string
"
?
d
.
replace
(
q
,
""
):
d
==
null
?
""
:
d
}}}}),
f
.
extend
({
valHooks
:{
option
:{
get
:
function
(
a
){
var
b
=
a
.
attributes
.
value
;
return
!
b
||
b
.
specified
?
a
.
value
:
a
.
text
}},
select
:{
get
:
function
(
a
){
var
b
,
c
,
d
,
e
,
g
=
a
.
selectedIndex
,
h
=
[],
i
=
a
.
options
,
j
=
a
.
type
===
"
select-one
"
;
if
(
g
<
0
)
return
null
;
c
=
j
?
g
:
0
,
d
=
j
?
g
+
1
:
i
.
length
;
for
(;
c
<
d
;
c
++
){
e
=
i
[
c
];
if
(
e
.
selected
&&
(
f
.
support
.
optDisabled
?
!
e
.
disabled
:
e
.
getAttribute
(
"
disabled
"
)
===
null
)
&&
(
!
e
.
parentNode
.
disabled
||!
f
.
nodeName
(
e
.
parentNode
,
"
optgroup
"
))){
b
=
f
(
e
).
val
();
if
(
j
)
return
b
;
h
.
push
(
b
)}}
if
(
j
&&!
h
.
length
&&
i
.
length
)
return
f
(
i
[
g
]).
val
();
return
h
},
set
:
function
(
a
,
b
){
var
c
=
f
.
makeArray
(
b
);
f
(
a
).
find
(
"
option
"
).
each
(
function
(){
this
.
selected
=
f
.
inArray
(
f
(
this
).
val
(),
c
)
>=
0
}),
c
.
length
||
(
a
.
selectedIndex
=-
1
);
return
c
}}},
attrFn
:{
val
:
!
0
,
css
:
!
0
,
html
:
!
0
,
text
:
!
0
,
data
:
!
0
,
width
:
!
0
,
height
:
!
0
,
offset
:
!
0
},
attr
:
function
(
a
,
c
,
d
,
e
){
var
g
,
h
,
i
,
j
=
a
.
nodeType
;
if
(
!!
a
&&
j
!==
3
&&
j
!==
8
&&
j
!==
2
){
if
(
e
&&
c
in
f
.
attrFn
)
return
f
(
a
)[
c
](
d
);
if
(
typeof
a
.
getAttribute
==
"
undefined
"
)
return
f
.
prop
(
a
,
c
,
d
);
i
=
j
!==
1
||!
f
.
isXMLDoc
(
a
),
i
&&
(
c
=
c
.
toLowerCase
(),
h
=
f
.
attrHooks
[
c
]
||
(
u
.
test
(
c
)?
x
:
w
));
if
(
d
!==
b
){
if
(
d
===
null
){
f
.
removeAttr
(
a
,
c
);
return
}
if
(
h
&&
"
set
"
in
h
&&
i
&&
(
g
=
h
.
set
(
a
,
d
,
c
))
!==
b
)
return
g
;
a
.
setAttribute
(
c
,
""
+
d
);
return
d
}
if
(
h
&&
"
get
"
in
h
&&
i
&&
(
g
=
h
.
get
(
a
,
c
))
!==
null
)
return
g
;
g
=
a
.
getAttribute
(
c
);
return
g
===
null
?
b
:
g
}},
removeAttr
:
function
(
a
,
b
){
var
c
,
d
,
e
,
g
,
h
,
i
=
0
;
if
(
b
&&
a
.
nodeType
===
1
){
d
=
b
.
toLowerCase
().
split
(
p
),
g
=
d
.
length
;
for
(;
i
<
g
;
i
++
)
e
=
d
[
i
],
e
&&
(
c
=
f
.
propFix
[
e
]
||
e
,
h
=
u
.
test
(
e
),
h
||
f
.
attr
(
a
,
e
,
""
),
a
.
removeAttribute
(
v
?
e
:
c
),
h
&&
c
in
a
&&
(
a
[
c
]
=!
1
))}},
attrHooks
:{
type
:{
set
:
function
(
a
,
b
){
if
(
r
.
test
(
a
.
nodeName
)
&&
a
.
parentNode
)
f
.
error
(
"
type property can't be changed
"
);
else
if
(
!
f
.
support
.
radioValue
&&
b
===
"
radio
"
&&
f
.
nodeName
(
a
,
"
input
"
)){
var
c
=
a
.
value
;
a
.
setAttribute
(
"
type
"
,
b
),
c
&&
(
a
.
value
=
c
);
return
b
}}},
value
:{
get
:
function
(
a
,
b
){
if
(
w
&&
f
.
nodeName
(
a
,
"
button
"
))
return
w
.
get
(
a
,
b
);
return
b
in
a
?
a
.
value
:
null
},
set
:
function
(
a
,
b
,
c
){
if
(
w
&&
f
.
nodeName
(
a
,
"
button
"
))
return
w
.
set
(
a
,
b
,
c
);
a
.
value
=
b
}}},
propFix
:{
tabindex
:
"
tabIndex
"
,
readonly
:
"
readOnly
"
,
"
for
"
:
"
htmlFor
"
,
"
class
"
:
"
className
"
,
maxlength
:
"
maxLength
"
,
cellspacing
:
"
cellSpacing
"
,
cellpadding
:
"
cellPadding
"
,
rowspan
:
"
rowSpan
"
,
colspan
:
"
colSpan
"
,
usemap
:
"
useMap
"
,
frameborder
:
"
frameBorder
"
,
contenteditable
:
"
contentEditable
"
},
prop
:
function
(
a
,
c
,
d
){
var
e
,
g
,
h
,
i
=
a
.
nodeType
;
if
(
!!
a
&&
i
!==
3
&&
i
!==
8
&&
i
!==
2
){
h
=
i
!==
1
||!
f
.
isXMLDoc
(
a
),
h
&&
(
c
=
f
.
propFix
[
c
]
||
c
,
g
=
f
.
propHooks
[
c
]);
return
d
!==
b
?
g
&&
"
set
"
in
g
&&
(
e
=
g
.
set
(
a
,
d
,
c
))
!==
b
?
e
:
a
[
c
]
=
d
:
g
&&
"
get
"
in
g
&&
(
e
=
g
.
get
(
a
,
c
))
!==
null
?
e
:
a
[
c
]}},
propHooks
:{
tabIndex
:{
get
:
function
(
a
){
var
c
=
a
.
getAttributeNode
(
"
tabindex
"
);
return
c
&&
c
.
specified
?
parseInt
(
c
.
value
,
10
):
s
.
test
(
a
.
nodeName
)
||
t
.
test
(
a
.
nodeName
)
&&
a
.
href
?
0
:
b
}}}}),
f
.
attrHooks
.
tabindex
=
f
.
propHooks
.
tabIndex
,
x
=
{
get
:
function
(
a
,
c
){
var
d
,
e
=
f
.
prop
(
a
,
c
);
return
e
===!
0
||
typeof
e
!=
"
boolean
"
&&
(
d
=
a
.
getAttributeNode
(
c
))
&&
d
.
nodeValue
!==!
1
?
c
.
toLowerCase
():
b
},
set
:
function
(
a
,
b
,
c
){
var
d
;
b
===!
1
?
f
.
removeAttr
(
a
,
c
):(
d
=
f
.
propFix
[
c
]
||
c
,
d
in
a
&&
(
a
[
d
]
=!
0
),
a
.
setAttribute
(
c
,
c
.
toLowerCase
()));
return
c
}},
v
||
(
y
=
{
name
:
!
0
,
id
:
!
0
,
coords
:
!
0
},
w
=
f
.
valHooks
.
button
=
{
get
:
function
(
a
,
c
){
var
d
;
d
=
a
.
getAttributeNode
(
c
);
return
d
&&
(
y
[
c
]?
d
.
nodeValue
!==
""
:
d
.
specified
)?
d
.
nodeValue
:
b
},
set
:
function
(
a
,
b
,
d
){
var
e
=
a
.
getAttributeNode
(
d
);
e
||
(
e
=
c
.
createAttribute
(
d
),
a
.
setAttributeNode
(
e
));
return
e
.
nodeValue
=
b
+
""
}},
f
.
attrHooks
.
tabindex
.
set
=
w
.
set
,
f
.
each
([
"
width
"
,
"
height
"
],
function
(
a
,
b
){
f
.
attrHooks
[
b
]
=
f
.
extend
(
f
.
attrHooks
[
b
],{
set
:
function
(
a
,
c
){
if
(
c
===
""
){
a
.
setAttribute
(
b
,
"
auto
"
);
return
c
}}})}),
f
.
attrHooks
.
contenteditable
=
{
get
:
w
.
get
,
set
:
function
(
a
,
b
,
c
){
b
===
""
&&
(
b
=
"
false
"
),
w
.
set
(
a
,
b
,
c
)}}),
f
.
support
.
hrefNormalized
||
f
.
each
([
"
href
"
,
"
src
"
,
"
width
"
,
"
height
"
],
function
(
a
,
c
){
f
.
attrHooks
[
c
]
=
f
.
extend
(
f
.
attrHooks
[
c
],{
get
:
function
(
a
){
var
d
=
a
.
getAttribute
(
c
,
2
);
return
d
===
null
?
b
:
d
}})}),
f
.
support
.
style
||
(
f
.
attrHooks
.
style
=
{
get
:
function
(
a
){
return
a
.
style
.
cssText
.
toLowerCase
()
||
b
},
set
:
function
(
a
,
b
){
return
a
.
style
.
cssText
=
""
+
b
}}),
f
.
support
.
optSelected
||
(
f
.
propHooks
.
selected
=
f
.
extend
(
f
.
propHooks
.
selected
,{
get
:
function
(
a
){
var
b
=
a
.
parentNode
;
b
&&
(
b
.
selectedIndex
,
b
.
parentNode
&&
b
.
parentNode
.
selectedIndex
);
return
null
}})),
f
.
support
.
enctype
||
(
f
.
propFix
.
enctype
=
"
encoding
"
),
f
.
support
.
checkOn
||
f
.
each
([
"
radio
"
,
"
checkbox
"
],
function
(){
f
.
valHooks
[
this
]
=
{
get
:
function
(
a
){
return
a
.
getAttribute
(
"
value
"
)
===
null
?
"
on
"
:
a
.
value
}}}),
f
.
each
([
"
radio
"
,
"
checkbox
"
],
function
(){
f
.
valHooks
[
this
]
=
f
.
extend
(
f
.
valHooks
[
this
],{
set
:
function
(
a
,
b
){
if
(
f
.
isArray
(
b
))
return
a
.
checked
=
f
.
inArray
(
f
(
a
).
val
(),
b
)
>=
0
}})});
var
z
=
/^
(?:
textarea|input|select
)
$/i
,
A
=
/^
([^\.]
*
)?(?:\.(
.+
))?
$/
,
B
=
/
(?:
^|
\s)
hover
(\.\S
+
)?\b
/
,
C
=
/^key/
,
D
=
/^
(?:
mouse|contextmenu
)
|click/
,
E
=
/^
(?:
focusinfocus|focusoutblur
)
$/
,
F
=
/^
(\w
*
)(?:
#
([\w\-]
+
))?(?:\.([\w\-]
+
))?
$/
,
G
=
function
(
a
){
var
b
=
F
.
exec
(
a
);
b
&&
(
b
[
1
]
=
(
b
[
1
]
||
""
).
toLowerCase
(),
b
[
3
]
=
b
[
3
]
&&
new
RegExp
(
"
(?:^|
\\
s)
"
+
b
[
3
]
+
"
(?:
\\
s|$)
"
));
return
b
},
H
=
function
(
a
,
b
){
var
c
=
a
.
attributes
||
{};
return
(
!
b
[
1
]
||
a
.
nodeName
.
toLowerCase
()
===
b
[
1
])
&&
(
!
b
[
2
]
||
(
c
.
id
||
{}).
value
===
b
[
2
])
&&
(
!
b
[
3
]
||
b
[
3
].
test
((
c
[
"
class
"
]
||
{}).
value
))},
I
=
function
(
a
){
return
f
.
event
.
special
.
hover
?
a
:
a
.
replace
(
B
,
"
mouseenter$1 mouseleave$1
"
)};
f
.
event
=
{
add
:
function
(
a
,
c
,
d
,
e
,
g
){
var
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
,
p
,
q
,
r
,
s
;
if
(
!
(
a
.
nodeType
===
3
||
a
.
nodeType
===
8
||!
c
||!
d
||!
(
h
=
f
.
_data
(
a
)))){
d
.
handler
&&
(
p
=
d
,
d
=
p
.
handler
,
g
=
p
.
selector
),
d
.
guid
||
(
d
.
guid
=
f
.
guid
++
),
j
=
h
.
events
,
j
||
(
h
.
events
=
j
=
{}),
i
=
h
.
handle
,
i
||
(
h
.
handle
=
i
=
function
(
a
){
return
typeof
f
!=
"
undefined
"
&&
(
!
a
||
f
.
event
.
triggered
!==
a
.
type
)?
f
.
event
.
dispatch
.
apply
(
i
.
elem
,
arguments
):
b
},
i
.
elem
=
a
),
c
=
f
.
trim
(
I
(
c
)).
split
(
"
"
);
for
(
k
=
0
;
k
<
c
.
length
;
k
++
){
l
=
A
.
exec
(
c
[
k
])
||
[],
m
=
l
[
1
],
n
=
(
l
[
2
]
||
""
).
split
(
"
.
"
).
sort
(),
s
=
f
.
event
.
special
[
m
]
||
{},
m
=
(
g
?
s
.
delegateType
:
s
.
bindType
)
||
m
,
s
=
f
.
event
.
special
[
m
]
||
{},
o
=
f
.
extend
({
type
:
m
,
origType
:
l
[
1
],
data
:
e
,
handler
:
d
,
guid
:
d
.
guid
,
selector
:
g
,
quick
:
g
&&
G
(
g
),
namespace
:
n
.
join
(
"
.
"
)},
p
),
r
=
j
[
m
];
if
(
!
r
){
r
=
j
[
m
]
=
[],
r
.
delegateCount
=
0
;
if
(
!
s
.
setup
||
s
.
setup
.
call
(
a
,
e
,
n
,
i
)
===!
1
)
a
.
addEventListener
?
a
.
addEventListener
(
m
,
i
,
!
1
):
a
.
attachEvent
&&
a
.
attachEvent
(
"
on
"
+
m
,
i
)}
s
.
add
&&
(
s
.
add
.
call
(
a
,
o
),
o
.
handler
.
guid
||
(
o
.
handler
.
guid
=
d
.
guid
)),
g
?
r
.
splice
(
r
.
delegateCount
++
,
0
,
o
):
r
.
push
(
o
),
f
.
event
.
global
[
m
]
=!
0
}
a
=
null
}},
global
:{},
remove
:
function
(
a
,
b
,
c
,
d
,
e
){
var
g
=
f
.
hasData
(
a
)
&&
f
.
_data
(
a
),
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
,
p
,
q
,
r
,
s
;
if
(
!!
g
&&!!
(
o
=
g
.
events
)){
b
=
f
.
trim
(
I
(
b
||
""
)).
split
(
"
"
);
for
(
h
=
0
;
h
<
b
.
length
;
h
++
){
i
=
A
.
exec
(
b
[
h
])
||
[],
j
=
k
=
i
[
1
],
l
=
i
[
2
];
if
(
!
j
){
for
(
j
in
o
)
f
.
event
.
remove
(
a
,
j
+
b
[
h
],
c
,
d
,
!
0
);
continue
}
p
=
f
.
event
.
special
[
j
]
||
{},
j
=
(
d
?
p
.
delegateType
:
p
.
bindType
)
||
j
,
r
=
o
[
j
]
||
[],
m
=
r
.
length
,
l
=
l
?
new
RegExp
(
"
(^|
\\
.)
"
+
l
.
split
(
"
.
"
).
sort
().
join
(
"
\\
.(?:.*
\\
.)?
"
)
+
"
(
\\
.|$)
"
):
null
;
for
(
n
=
0
;
n
<
r
.
length
;
n
++
)
s
=
r
[
n
],(
e
||
k
===
s
.
origType
)
&&
(
!
c
||
c
.
guid
===
s
.
guid
)
&&
(
!
l
||
l
.
test
(
s
.
namespace
))
&&
(
!
d
||
d
===
s
.
selector
||
d
===
"
**
"
&&
s
.
selector
)
&&
(
r
.
splice
(
n
--
,
1
),
s
.
selector
&&
r
.
delegateCount
--
,
p
.
remove
&&
p
.
remove
.
call
(
a
,
s
));
r
.
length
===
0
&&
m
!==
r
.
length
&&
((
!
p
.
teardown
||
p
.
teardown
.
call
(
a
,
l
)
===!
1
)
&&
f
.
removeEvent
(
a
,
j
,
g
.
handle
),
delete
o
[
j
])}
f
.
isEmptyObject
(
o
)
&&
(
q
=
g
.
handle
,
q
&&
(
q
.
elem
=
null
),
f
.
removeData
(
a
,[
"
events
"
,
"
handle
"
],
!
0
))}},
customEvent
:{
getData
:
!
0
,
setData
:
!
0
,
changeData
:
!
0
},
trigger
:
function
(
c
,
d
,
e
,
g
){
if
(
!
e
||
e
.
nodeType
!==
3
&&
e
.
nodeType
!==
8
){
var
h
=
c
.
type
||
c
,
i
=
[],
j
,
k
,
l
,
m
,
n
,
o
,
p
,
q
,
r
,
s
;
if
(
E
.
test
(
h
+
f
.
event
.
triggered
))
return
;
h
.
indexOf
(
"
!
"
)
>=
0
&&
(
h
=
h
.
slice
(
0
,
-
1
),
k
=!
0
),
h
.
indexOf
(
"
.
"
)
>=
0
&&
(
i
=
h
.
split
(
"
.
"
),
h
=
i
.
shift
(),
i
.
sort
());
if
((
!
e
||
f
.
event
.
customEvent
[
h
])
&&!
f
.
event
.
global
[
h
])
return
;
c
=
typeof
c
==
"
object
"
?
c
[
f
.
expando
]?
c
:
new
f
.
Event
(
h
,
c
):
new
f
.
Event
(
h
),
c
.
type
=
h
,
c
.
isTrigger
=!
0
,
c
.
exclusive
=
k
,
c
.
namespace
=
i
.
join
(
"
.
"
),
c
.
namespace_re
=
c
.
namespace
?
new
RegExp
(
"
(^|
\\
.)
"
+
i
.
join
(
"
\\
.(?:.*
\\
.)?
"
)
+
"
(
\\
.|$)
"
):
null
,
o
=
h
.
indexOf
(
"
:
"
)
<
0
?
"
on
"
+
h
:
""
;
if
(
!
e
){
j
=
f
.
cache
;
for
(
l
in
j
)
j
[
l
].
events
&&
j
[
l
].
events
[
h
]
&&
f
.
event
.
trigger
(
c
,
d
,
j
[
l
].
handle
.
elem
,
!
0
);
return
}
c
.
result
=
b
,
c
.
target
||
(
c
.
target
=
e
),
d
=
d
!=
null
?
f
.
makeArray
(
d
):[],
d
.
unshift
(
c
),
p
=
f
.
event
.
special
[
h
]
||
{};
if
(
p
.
trigger
&&
p
.
trigger
.
apply
(
e
,
d
)
===!
1
)
return
;
r
=
[[
e
,
p
.
bindType
||
h
]];
if
(
!
g
&&!
p
.
noBubble
&&!
f
.
isWindow
(
e
)){
s
=
p
.
delegateType
||
h
,
m
=
E
.
test
(
s
+
h
)?
e
:
e
.
parentNode
,
n
=
null
;
for
(;
m
;
m
=
m
.
parentNode
)
r
.
push
([
m
,
s
]),
n
=
m
;
n
&&
n
===
e
.
ownerDocument
&&
r
.
push
([
n
.
defaultView
||
n
.
parentWindow
||
a
,
s
])}
for
(
l
=
0
;
l
<
r
.
length
&&!
c
.
isPropagationStopped
();
l
++
)
m
=
r
[
l
][
0
],
c
.
type
=
r
[
l
][
1
],
q
=
(
f
.
_data
(
m
,
"
events
"
)
||
{})[
c
.
type
]
&&
f
.
_data
(
m
,
"
handle
"
),
q
&&
q
.
apply
(
m
,
d
),
q
=
o
&&
m
[
o
],
q
&&
f
.
acceptData
(
m
)
&&
q
.
apply
(
m
,
d
)
===!
1
&&
c
.
preventDefault
();
c
.
type
=
h
,
!
g
&&!
c
.
isDefaultPrevented
()
&&
(
!
p
.
_default
||
p
.
_default
.
apply
(
e
.
ownerDocument
,
d
)
===!
1
)
&&
(
h
!==
"
click
"
||!
f
.
nodeName
(
e
,
"
a
"
))
&&
f
.
acceptData
(
e
)
&&
o
&&
e
[
h
]
&&
(
h
!==
"
focus
"
&&
h
!==
"
blur
"
||
c
.
target
.
offsetWidth
!==
0
)
&&!
f
.
isWindow
(
e
)
&&
(
n
=
e
[
o
],
n
&&
(
e
[
o
]
=
null
),
f
.
event
.
triggered
=
h
,
e
[
h
](),
f
.
event
.
triggered
=
b
,
n
&&
(
e
[
o
]
=
n
));
return
c
.
result
}},
dispatch
:
function
(
c
){
c
=
f
.
event
.
fix
(
c
||
a
.
event
);
var
d
=
(
f
.
_data
(
this
,
"
events
"
)
||
{})[
c
.
type
]
||
[],
e
=
d
.
delegateCount
,
g
=
[].
slice
.
call
(
arguments
,
0
),
h
=!
c
.
exclusive
&&!
c
.
namespace
,
i
=
f
.
event
.
special
[
c
.
type
]
||
{},
j
=
[],
k
,
l
,
m
,
n
,
o
,
p
,
q
,
r
,
s
,
t
,
u
;
g
[
0
]
=
c
,
c
.
delegateTarget
=
this
;
if
(
!
i
.
preDispatch
||
i
.
preDispatch
.
call
(
this
,
c
)
!==!
1
){
if
(
e
&&
(
!
c
.
button
||
c
.
type
!==
"
click
"
)){
n
=
f
(
this
),
n
.
context
=
this
.
ownerDocument
||
this
;
for
(
m
=
c
.
target
;
m
!=
this
;
m
=
m
.
parentNode
||
this
)
if
(
m
.
disabled
!==!
0
){
p
=
{},
r
=
[],
n
[
0
]
=
m
;
for
(
k
=
0
;
k
<
e
;
k
++
)
s
=
d
[
k
],
t
=
s
.
selector
,
p
[
t
]
===
b
&&
(
p
[
t
]
=
s
.
quick
?
H
(
m
,
s
.
quick
):
n
.
is
(
t
)),
p
[
t
]
&&
r
.
push
(
s
);
r
.
length
&&
j
.
push
({
elem
:
m
,
matches
:
r
})}}
d
.
length
>
e
&&
j
.
push
({
elem
:
this
,
matches
:
d
.
slice
(
e
)});
for
(
k
=
0
;
k
<
j
.
length
&&!
c
.
isPropagationStopped
();
k
++
){
q
=
j
[
k
],
c
.
currentTarget
=
q
.
elem
;
for
(
l
=
0
;
l
<
q
.
matches
.
length
&&!
c
.
isImmediatePropagationStopped
();
l
++
){
s
=
q
.
matches
[
l
];
if
(
h
||!
c
.
namespace
&&!
s
.
namespace
||
c
.
namespace_re
&&
c
.
namespace_re
.
test
(
s
.
namespace
))
c
.
data
=
s
.
data
,
c
.
handleObj
=
s
,
o
=
((
f
.
event
.
special
[
s
.
origType
]
||
{}).
handle
||
s
.
handler
).
apply
(
q
.
elem
,
g
),
o
!==
b
&&
(
c
.
result
=
o
,
o
===!
1
&&
(
c
.
preventDefault
(),
c
.
stopPropagation
()))}}
i
.
postDispatch
&&
i
.
postDispatch
.
call
(
this
,
c
);
return
c
.
result
}},
props
:
"
attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which
"
.
split
(
"
"
),
fixHooks
:{},
keyHooks
:{
props
:
"
char charCode key keyCode
"
.
split
(
"
"
),
filter
:
function
(
a
,
b
){
a
.
which
==
null
&&
(
a
.
which
=
b
.
charCode
!=
null
?
b
.
charCode
:
b
.
keyCode
);
return
a
}},
mouseHooks
:{
props
:
"
button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement
"
.
split
(
"
"
),
filter
:
function
(
a
,
d
){
var
e
,
f
,
g
,
h
=
d
.
button
,
i
=
d
.
fromElement
;
a
.
pageX
==
null
&&
d
.
clientX
!=
null
&&
(
e
=
a
.
target
.
ownerDocument
||
c
,
f
=
e
.
documentElement
,
g
=
e
.
body
,
a
.
pageX
=
d
.
clientX
+
(
f
&&
f
.
scrollLeft
||
g
&&
g
.
scrollLeft
||
0
)
-
(
f
&&
f
.
clientLeft
||
g
&&
g
.
clientLeft
||
0
),
a
.
pageY
=
d
.
clientY
+
(
f
&&
f
.
scrollTop
||
g
&&
g
.
scrollTop
||
0
)
-
(
f
&&
f
.
clientTop
||
g
&&
g
.
clientTop
||
0
)),
!
a
.
relatedTarget
&&
i
&&
(
a
.
relatedTarget
=
i
===
a
.
target
?
d
.
toElement
:
i
),
!
a
.
which
&&
h
!==
b
&&
(
a
.
which
=
h
&
1
?
1
:
h
&
2
?
3
:
h
&
4
?
2
:
0
);
return
a
}},
fix
:
function
(
a
){
if
(
a
[
f
.
expando
])
return
a
;
var
d
,
e
,
g
=
a
,
h
=
f
.
event
.
fixHooks
[
a
.
type
]
||
{},
i
=
h
.
props
?
this
.
props
.
concat
(
h
.
props
):
this
.
props
;
a
=
f
.
Event
(
g
);
for
(
d
=
i
.
length
;
d
;)
e
=
i
[
--
d
],
a
[
e
]
=
g
[
e
];
a
.
target
||
(
a
.
target
=
g
.
srcElement
||
c
),
a
.
target
.
nodeType
===
3
&&
(
a
.
target
=
a
.
target
.
parentNode
),
a
.
metaKey
===
b
&&
(
a
.
metaKey
=
a
.
ctrlKey
);
return
h
.
filter
?
h
.
filter
(
a
,
g
):
a
},
special
:{
ready
:{
setup
:
f
.
bindReady
},
load
:{
noBubble
:
!
0
},
focus
:{
delegateType
:
"
focusin
"
},
blur
:{
delegateType
:
"
focusout
"
},
beforeunload
:{
setup
:
function
(
a
,
b
,
c
){
f
.
isWindow
(
this
)
&&
(
this
.
onbeforeunload
=
c
)},
teardown
:
function
(
a
,
b
){
this
.
onbeforeunload
===
b
&&
(
this
.
onbeforeunload
=
null
)}}},
simulate
:
function
(
a
,
b
,
c
,
d
){
var
e
=
f
.
extend
(
new
f
.
Event
,
c
,{
type
:
a
,
isSimulated
:
!
0
,
originalEvent
:{}});
d
?
f
.
event
.
trigger
(
e
,
null
,
b
):
f
.
event
.
dispatch
.
call
(
b
,
e
),
e
.
isDefaultPrevented
()
&&
c
.
preventDefault
()}},
f
.
event
.
handle
=
f
.
event
.
dispatch
,
f
.
removeEvent
=
c
.
removeEventListener
?
function
(
a
,
b
,
c
){
a
.
removeEventListener
&&
a
.
removeEventListener
(
b
,
c
,
!
1
)}:
function
(
a
,
b
,
c
){
a
.
detachEvent
&&
a
.
detachEvent
(
"
on
"
+
b
,
c
)},
f
.
Event
=
function
(
a
,
b
){
if
(
!
(
this
instanceof
f
.
Event
))
return
new
f
.
Event
(
a
,
b
);
a
&&
a
.
type
?(
this
.
originalEvent
=
a
,
this
.
type
=
a
.
type
,
this
.
isDefaultPrevented
=
a
.
defaultPrevented
||
a
.
returnValue
===!
1
||
a
.
getPreventDefault
&&
a
.
getPreventDefault
()?
K
:
J
):
this
.
type
=
a
,
b
&&
f
.
extend
(
this
,
b
),
this
.
timeStamp
=
a
&&
a
.
timeStamp
||
f
.
now
(),
this
[
f
.
expando
]
=!
0
},
f
.
Event
.
prototype
=
{
preventDefault
:
function
(){
this
.
isDefaultPrevented
=
K
;
var
a
=
this
.
originalEvent
;
!
a
||
(
a
.
preventDefault
?
a
.
preventDefault
():
a
.
returnValue
=!
1
)},
stopPropagation
:
function
(){
this
.
isPropagationStopped
=
K
;
var
a
=
this
.
originalEvent
;
!
a
||
(
a
.
stopPropagation
&&
a
.
stopPropagation
(),
a
.
cancelBubble
=!
0
)},
stopImmediatePropagation
:
function
(){
this
.
isImmediatePropagationStopped
=
K
,
this
.
stopPropagation
()},
isDefaultPrevented
:
J
,
isPropagationStopped
:
J
,
isImmediatePropagationStopped
:
J
},
f
.
each
({
mouseenter
:
"
mouseover
"
,
mouseleave
:
"
mouseout
"
},
function
(
a
,
b
){
f
.
event
.
special
[
a
]
=
{
delegateType
:
b
,
bindType
:
b
,
handle
:
function
(
a
){
var
c
=
this
,
d
=
a
.
relatedTarget
,
e
=
a
.
handleObj
,
g
=
e
.
selector
,
h
;
if
(
!
d
||
d
!==
c
&&!
f
.
contains
(
c
,
d
))
a
.
type
=
e
.
origType
,
h
=
e
.
handler
.
apply
(
this
,
arguments
),
a
.
type
=
b
;
return
h
}}}),
f
.
support
.
submitBubbles
||
(
f
.
event
.
special
.
submit
=
{
setup
:
function
(){
if
(
f
.
nodeName
(
this
,
"
form
"
))
return
!
1
;
f
.
event
.
add
(
this
,
"
click._submit keypress._submit
"
,
function
(
a
){
var
c
=
a
.
target
,
d
=
f
.
nodeName
(
c
,
"
input
"
)
||
f
.
nodeName
(
c
,
"
button
"
)?
c
.
form
:
b
;
d
&&!
d
.
_submit_attached
&&
(
f
.
event
.
add
(
d
,
"
submit._submit
"
,
function
(
a
){
a
.
_submit_bubble
=!
0
}),
d
.
_submit_attached
=!
0
)})},
postDispatch
:
function
(
a
){
a
.
_submit_bubble
&&
(
delete
a
.
_submit_bubble
,
this
.
parentNode
&&!
a
.
isTrigger
&&
f
.
event
.
simulate
(
"
submit
"
,
this
.
parentNode
,
a
,
!
0
))},
teardown
:
function
(){
if
(
f
.
nodeName
(
this
,
"
form
"
))
return
!
1
;
f
.
event
.
remove
(
this
,
"
._submit
"
)}}),
f
.
support
.
changeBubbles
||
(
f
.
event
.
special
.
change
=
{
setup
:
function
(){
if
(
z
.
test
(
this
.
nodeName
)){
if
(
this
.
type
===
"
checkbox
"
||
this
.
type
===
"
radio
"
)
f
.
event
.
add
(
this
,
"
propertychange._change
"
,
function
(
a
){
a
.
originalEvent
.
propertyName
===
"
checked
"
&&
(
this
.
_just_changed
=!
0
)}),
f
.
event
.
add
(
this
,
"
click._change
"
,
function
(
a
){
this
.
_just_changed
&&!
a
.
isTrigger
&&
(
this
.
_just_changed
=!
1
,
f
.
event
.
simulate
(
"
change
"
,
this
,
a
,
!
0
))});
return
!
1
}
f
.
event
.
add
(
this
,
"
beforeactivate._change
"
,
function
(
a
){
var
b
=
a
.
target
;
z
.
test
(
b
.
nodeName
)
&&!
b
.
_change_attached
&&
(
f
.
event
.
add
(
b
,
"
change._change
"
,
function
(
a
){
this
.
parentNode
&&!
a
.
isSimulated
&&!
a
.
isTrigger
&&
f
.
event
.
simulate
(
"
change
"
,
this
.
parentNode
,
a
,
!
0
)}),
b
.
_change_attached
=!
0
)})},
handle
:
function
(
a
){
var
b
=
a
.
target
;
if
(
this
!==
b
||
a
.
isSimulated
||
a
.
isTrigger
||
b
.
type
!==
"
radio
"
&&
b
.
type
!==
"
checkbox
"
)
return
a
.
handleObj
.
handler
.
apply
(
this
,
arguments
)},
teardown
:
function
(){
f
.
event
.
remove
(
this
,
"
._change
"
);
return
z
.
test
(
this
.
nodeName
)}}),
f
.
support
.
focusinBubbles
||
f
.
each
({
focus
:
"
focusin
"
,
blur
:
"
focusout
"
},
function
(
a
,
b
){
var
d
=
0
,
e
=
function
(
a
){
f
.
event
.
simulate
(
b
,
a
.
target
,
f
.
event
.
fix
(
a
),
!
0
)};
f
.
event
.
special
[
b
]
=
{
setup
:
function
(){
d
++===
0
&&
c
.
addEventListener
(
a
,
e
,
!
0
)},
teardown
:
function
(){
--
d
===
0
&&
c
.
removeEventListener
(
a
,
e
,
!
0
)}}}),
f
.
fn
.
extend
({
on
:
function
(
a
,
c
,
d
,
e
,
g
){
var
h
,
i
;
if
(
typeof
a
==
"
object
"
){
typeof
c
!=
"
string
"
&&
(
d
=
d
||
c
,
c
=
b
);
for
(
i
in
a
)
this
.
on
(
i
,
c
,
d
,
a
[
i
],
g
);
return
this
}
d
==
null
&&
e
==
null
?(
e
=
c
,
d
=
c
=
b
):
e
==
null
&&
(
typeof
c
==
"
string
"
?(
e
=
d
,
d
=
b
):(
e
=
d
,
d
=
c
,
c
=
b
));
if
(
e
===!
1
)
e
=
J
;
else
if
(
!
e
)
return
this
;
g
===
1
&&
(
h
=
e
,
e
=
function
(
a
){
f
().
off
(
a
);
return
h
.
apply
(
this
,
arguments
)},
e
.
guid
=
h
.
guid
||
(
h
.
guid
=
f
.
guid
++
));
return
this
.
each
(
function
(){
f
.
event
.
add
(
this
,
a
,
e
,
d
,
c
)})},
one
:
function
(
a
,
b
,
c
,
d
){
return
this
.
on
(
a
,
b
,
c
,
d
,
1
)},
off
:
function
(
a
,
c
,
d
){
if
(
a
&&
a
.
preventDefault
&&
a
.
handleObj
){
var
e
=
a
.
handleObj
;
f
(
a
.
delegateTarget
).
off
(
e
.
namespace
?
e
.
origType
+
"
.
"
+
e
.
namespace
:
e
.
origType
,
e
.
selector
,
e
.
handler
);
return
this
}
if
(
typeof
a
==
"
object
"
){
for
(
var
g
in
a
)
this
.
off
(
g
,
c
,
a
[
g
]);
return
this
}
if
(
c
===!
1
||
typeof
c
==
"
function
"
)
d
=
c
,
c
=
b
;
d
===!
1
&&
(
d
=
J
);
return
this
.
each
(
function
(){
f
.
event
.
remove
(
this
,
a
,
d
,
c
)})},
bind
:
function
(
a
,
b
,
c
){
return
this
.
on
(
a
,
null
,
b
,
c
)},
unbind
:
function
(
a
,
b
){
return
this
.
off
(
a
,
null
,
b
)},
live
:
function
(
a
,
b
,
c
){
f
(
this
.
context
).
on
(
a
,
this
.
selector
,
b
,
c
);
return
this
},
die
:
function
(
a
,
b
){
f
(
this
.
context
).
off
(
a
,
this
.
selector
||
"
**
"
,
b
);
return
this
},
delegate
:
function
(
a
,
b
,
c
,
d
){
return
this
.
on
(
b
,
a
,
c
,
d
)},
undelegate
:
function
(
a
,
b
,
c
){
return
arguments
.
length
==
1
?
this
.
off
(
a
,
"
**
"
):
this
.
off
(
b
,
a
,
c
)},
trigger
:
function
(
a
,
b
){
return
this
.
each
(
function
(){
f
.
event
.
trigger
(
a
,
b
,
this
)})},
triggerHandler
:
function
(
a
,
b
){
if
(
this
[
0
])
return
f
.
event
.
trigger
(
a
,
b
,
this
[
0
],
!
0
)},
toggle
:
function
(
a
){
var
b
=
arguments
,
c
=
a
.
guid
||
f
.
guid
++
,
d
=
0
,
e
=
function
(
c
){
var
e
=
(
f
.
_data
(
this
,
"
lastToggle
"
+
a
.
guid
)
||
0
)
%
d
;
f
.
_data
(
this
,
"
lastToggle
"
+
a
.
guid
,
e
+
1
),
c
.
preventDefault
();
return
b
[
e
].
apply
(
this
,
arguments
)
||!
1
};
e
.
guid
=
c
;
while
(
d
<
b
.
length
)
b
[
d
++
].
guid
=
c
;
return
this
.
click
(
e
)},
hover
:
function
(
a
,
b
){
return
this
.
mouseenter
(
a
).
mouseleave
(
b
||
a
)}}),
f
.
each
(
"
blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu
"
.
split
(
"
"
),
function
(
a
,
b
){
f
.
fn
[
b
]
=
function
(
a
,
c
){
c
==
null
&&
(
c
=
a
,
a
=
null
);
return
arguments
.
length
>
0
?
this
.
on
(
b
,
null
,
a
,
c
):
this
.
trigger
(
b
)},
f
.
attrFn
&&
(
f
.
attrFn
[
b
]
=!
0
),
C
.
test
(
b
)
&&
(
f
.
event
.
fixHooks
[
b
]
=
f
.
event
.
keyHooks
),
D
.
test
(
b
)
&&
(
f
.
event
.
fixHooks
[
b
]
=
f
.
event
.
mouseHooks
)}),
function
(){
function
x
(
a
,
b
,
c
,
e
,
f
,
g
){
for
(
var
h
=
0
,
i
=
e
.
length
;
h
<
i
;
h
++
){
var
j
=
e
[
h
];
if
(
j
){
var
k
=!
1
;
j
=
j
[
a
];
while
(
j
){
if
(
j
[
d
]
===
c
){
k
=
e
[
j
.
sizset
];
break
}
if
(
j
.
nodeType
===
1
){
g
||
(
j
[
d
]
=
c
,
j
.
sizset
=
h
);
if
(
typeof
b
!=
"
string
"
){
if
(
j
===
b
){
k
=!
0
;
break
}}
else
if
(
m
.
filter
(
b
,[
j
]).
length
>
0
){
k
=
j
;
break
}}
j
=
j
[
a
]}
e
[
h
]
=
k
}}}
function
w
(
a
,
b
,
c
,
e
,
f
,
g
){
for
(
var
h
=
0
,
i
=
e
.
length
;
h
<
i
;
h
++
){
var
j
=
e
[
h
];
if
(
j
){
var
k
=!
1
;
j
=
j
[
a
];
while
(
j
){
if
(
j
[
d
]
===
c
){
k
=
e
[
j
.
sizset
];
break
}
j
.
nodeType
===
1
&&!
g
&&
(
j
[
d
]
=
c
,
j
.
sizset
=
h
);
if
(
j
.
nodeName
.
toLowerCase
()
===
b
){
k
=
j
;
break
}
j
=
j
[
a
]}
e
[
h
]
=
k
}}}
var
a
=
/
((?:\((?:\([^
()
]
+
\)
|
[^
()
]
+
)
+
\)
|
\[(?:\[[^\[\]]
*
\]
|
[
'"
][^
'"
]
*
[
'"
]
|
[^\[\]
'"
]
+
)
+
\]
|
\\
.|
[^
>+~,(
\[\\]
+
)
+|
[
>+~
])(\s
*,
\s
*
)?((?:
.|
\r
|
\n)
*
)
/g
,
d
=
"
sizcache
"
+
(
Math
.
random
()
+
""
).
replace
(
"
.
"
,
""
),
e
=
0
,
g
=
Object
.
prototype
.
toString
,
h
=!
1
,
i
=!
0
,
j
=
/
\\
/g
,
k
=
/
\r\n
/g
,
l
=
/
\W
/
;[
0
,
0
].
sort
(
function
(){
i
=!
1
;
return
0
});
var
m
=
function
(
b
,
d
,
e
,
f
){
e
=
e
||
[],
d
=
d
||
c
;
var
h
=
d
;
if
(
d
.
nodeType
!==
1
&&
d
.
nodeType
!==
9
)
return
[];
if
(
!
b
||
typeof
b
!=
"
string
"
)
return
e
;
var
i
,
j
,
k
,
l
,
n
,
q
,
r
,
t
,
u
=!
0
,
v
=
m
.
isXML
(
d
),
w
=
[],
x
=
b
;
do
{
a
.
exec
(
""
),
i
=
a
.
exec
(
x
);
if
(
i
){
x
=
i
[
3
],
w
.
push
(
i
[
1
]);
if
(
i
[
2
]){
l
=
i
[
3
];
break
}}}
while
(
i
);
if
(
w
.
length
>
1
&&
p
.
exec
(
b
))
if
(
w
.
length
===
2
&&
o
.
relative
[
w
[
0
]])
j
=
y
(
w
[
0
]
+
w
[
1
],
d
,
f
);
else
{
j
=
o
.
relative
[
w
[
0
]]?[
d
]:
m
(
w
.
shift
(),
d
);
while
(
w
.
length
)
b
=
w
.
shift
(),
o
.
relative
[
b
]
&&
(
b
+=
w
.
shift
()),
j
=
y
(
b
,
j
,
f
)}
else
{
!
f
&&
w
.
length
>
1
&&
d
.
nodeType
===
9
&&!
v
&&
o
.
match
.
ID
.
test
(
w
[
0
])
&&!
o
.
match
.
ID
.
test
(
w
[
w
.
length
-
1
])
&&
(
n
=
m
.
find
(
w
.
shift
(),
d
,
v
),
d
=
n
.
expr
?
m
.
filter
(
n
.
expr
,
n
.
set
)[
0
]:
n
.
set
[
0
]);
if
(
d
){
n
=
f
?{
expr
:
w
.
pop
(),
set
:
s
(
f
)}:
m
.
find
(
w
.
pop
(),
w
.
length
===
1
&&
(
w
[
0
]
===
"
~
"
||
w
[
0
]
===
"
+
"
)
&&
d
.
parentNode
?
d
.
parentNode
:
d
,
v
),
j
=
n
.
expr
?
m
.
filter
(
n
.
expr
,
n
.
set
):
n
.
set
,
w
.
length
>
0
?
k
=
s
(
j
):
u
=!
1
;
while
(
w
.
length
)
q
=
w
.
pop
(),
r
=
q
,
o
.
relative
[
q
]?
r
=
w
.
pop
():
q
=
""
,
r
==
null
&&
(
r
=
d
),
o
.
relative
[
q
](
k
,
r
,
v
)}
else
k
=
w
=
[]}
k
||
(
k
=
j
),
k
||
m
.
error
(
q
||
b
);
if
(
g
.
call
(
k
)
===
"
[object Array]
"
)
if
(
!
u
)
e
.
push
.
apply
(
e
,
k
);
else
if
(
d
&&
d
.
nodeType
===
1
)
for
(
t
=
0
;
k
[
t
]
!=
null
;
t
++
)
k
[
t
]
&&
(
k
[
t
]
===!
0
||
k
[
t
].
nodeType
===
1
&&
m
.
contains
(
d
,
k
[
t
]))
&&
e
.
push
(
j
[
t
]);
else
for
(
t
=
0
;
k
[
t
]
!=
null
;
t
++
)
k
[
t
]
&&
k
[
t
].
nodeType
===
1
&&
e
.
push
(
j
[
t
]);
else
s
(
k
,
e
);
l
&&
(
m
(
l
,
h
,
e
,
f
),
m
.
uniqueSort
(
e
));
return
e
};
m
.
uniqueSort
=
function
(
a
){
if
(
u
){
h
=
i
,
a
.
sort
(
u
);
if
(
h
)
for
(
var
b
=
1
;
b
<
a
.
length
;
b
++
)
a
[
b
]
===
a
[
b
-
1
]
&&
a
.
splice
(
b
--
,
1
)}
return
a
},
m
.
matches
=
function
(
a
,
b
){
return
m
(
a
,
null
,
null
,
b
)},
m
.
matchesSelector
=
function
(
a
,
b
){
return
m
(
b
,
null
,
null
,[
a
]).
length
>
0
},
m
.
find
=
function
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
,
i
;
if
(
!
a
)
return
[];
for
(
e
=
0
,
f
=
o
.
order
.
length
;
e
<
f
;
e
++
){
h
=
o
.
order
[
e
];
if
(
g
=
o
.
leftMatch
[
h
].
exec
(
a
)){
i
=
g
[
1
],
g
.
splice
(
1
,
1
);
if
(
i
.
substr
(
i
.
length
-
1
)
!==
"
\\
"
){
g
[
1
]
=
(
g
[
1
]
||
""
).
replace
(
j
,
""
),
d
=
o
.
find
[
h
](
g
,
b
,
c
);
if
(
d
!=
null
){
a
=
a
.
replace
(
o
.
match
[
h
],
""
);
break
}}}}
d
||
(
d
=
typeof
b
.
getElementsByTagName
!=
"
undefined
"
?
b
.
getElementsByTagName
(
"
*
"
):[]);
return
{
set
:
d
,
expr
:
a
}},
m
.
filter
=
function
(
a
,
c
,
d
,
e
){
var
f
,
g
,
h
,
i
,
j
,
k
,
l
,
n
,
p
,
q
=
a
,
r
=
[],
s
=
c
,
t
=
c
&&
c
[
0
]
&&
m
.
isXML
(
c
[
0
]);
while
(
a
&&
c
.
length
){
for
(
h
in
o
.
filter
)
if
((
f
=
o
.
leftMatch
[
h
].
exec
(
a
))
!=
null
&&
f
[
2
]){
k
=
o
.
filter
[
h
],
l
=
f
[
1
],
g
=!
1
,
f
.
splice
(
1
,
1
);
if
(
l
.
substr
(
l
.
length
-
1
)
===
"
\\
"
)
continue
;
s
===
r
&&
(
r
=
[]);
if
(
o
.
preFilter
[
h
]){
f
=
o
.
preFilter
[
h
](
f
,
s
,
d
,
r
,
e
,
t
);
if
(
!
f
)
g
=
i
=!
0
;
else
if
(
f
===!
0
)
continue
}
if
(
f
)
for
(
n
=
0
;(
j
=
s
[
n
])
!=
null
;
n
++
)
j
&&
(
i
=
k
(
j
,
f
,
n
,
s
),
p
=
e
^
i
,
d
&&
i
!=
null
?
p
?
g
=!
0
:
s
[
n
]
=!
1
:
p
&&
(
r
.
push
(
j
),
g
=!
0
));
if
(
i
!==
b
){
d
||
(
s
=
r
),
a
=
a
.
replace
(
o
.
match
[
h
],
""
);
if
(
!
g
)
return
[];
break
}}
if
(
a
===
q
)
if
(
g
==
null
)
m
.
error
(
a
);
else
break
;
q
=
a
}
return
s
},
m
.
error
=
function
(
a
){
throw
new
Error
(
"
Syntax error, unrecognized expression:
"
+
a
)};
var
n
=
m
.
getText
=
function
(
a
){
var
b
,
c
,
d
=
a
.
nodeType
,
e
=
""
;
if
(
d
){
if
(
d
===
1
||
d
===
9
||
d
===
11
){
if
(
typeof
a
.
textContent
==
"
string
"
)
return
a
.
textContent
;
if
(
typeof
a
.
innerText
==
"
string
"
)
return
a
.
innerText
.
replace
(
k
,
""
);
for
(
a
=
a
.
firstChild
;
a
;
a
=
a
.
nextSibling
)
e
+=
n
(
a
)}
else
if
(
d
===
3
||
d
===
4
)
return
a
.
nodeValue
}
else
for
(
b
=
0
;
c
=
a
[
b
];
b
++
)
c
.
nodeType
!==
8
&&
(
e
+=
n
(
c
));
return
e
},
o
=
m
.
selectors
=
{
order
:[
"
ID
"
,
"
NAME
"
,
"
TAG
"
],
match
:{
ID
:
/#
((?:[\w\u
00c0-
\u
FFFF
\-]
|
\\
.
)
+
)
/
,
CLASS
:
/
\.((?:[\w\u
00c0-
\u
FFFF
\-]
|
\\
.
)
+
)
/
,
NAME
:
/
\[
name=
[
'"
]
*
((?:[\w\u
00c0-
\u
FFFF
\-]
|
\\
.
)
+
)[
'"
]
*
\]
/
,
ATTR
:
/
\[\s
*
((?:[\w\u
00c0-
\u
FFFF
\-]
|
\\
.
)
+
)\s
*
(?:(\S?
=
)\s
*
(?:([
'"
])(
.*
?)\3
|
(
#
?(?:[\w\u
00c0-
\u
FFFF
\-]
|
\\
.
)
*
)
|
)
|
)\s
*
\]
/
,
TAG
:
/^
((?:[\w\u
00c0-
\u
FFFF
\*\-]
|
\\
.
)
+
)
/
,
CHILD
:
/:
(
only|nth|last|first
)
-child
(?:\(\s
*
(
even|odd|
(?:[
+
\-]?\d
+|
(?:[
+
\-]?\d
*
)?
n
\s
*
(?:[
+
\-]\s
*
\d
+
)?))\s
*
\))?
/
,
POS
:
/:
(
nth|eq|gt|lt|first|last|even|odd
)(?:\((\d
*
)\))?(?=[^\-]
|$
)
/
,
PSEUDO
:
/:
((?:[\w\u
00c0-
\u
FFFF
\-]
|
\\
.
)
+
)(?:\(([
'"
]?)((?:\([^\)]
+
\)
|
[^\(\)]
*
)
+
)\2\))?
/
},
leftMatch
:{},
attrMap
:{
"
class
"
:
"
className
"
,
"
for
"
:
"
htmlFor
"
},
attrHandle
:{
href
:
function
(
a
){
return
a
.
getAttribute
(
"
href
"
)},
type
:
function
(
a
){
return
a
.
getAttribute
(
"
type
"
)}},
relative
:{
"
+
"
:
function
(
a
,
b
){
var
c
=
typeof
b
==
"
string
"
,
d
=
c
&&!
l
.
test
(
b
),
e
=
c
&&!
d
;
d
&&
(
b
=
b
.
toLowerCase
());
for
(
var
f
=
0
,
g
=
a
.
length
,
h
;
f
<
g
;
f
++
)
if
(
h
=
a
[
f
]){
while
((
h
=
h
.
previousSibling
)
&&
h
.
nodeType
!==
1
);
a
[
f
]
=
e
||
h
&&
h
.
nodeName
.
toLowerCase
()
===
b
?
h
||!
1
:
h
===
b
}
e
&&
m
.
filter
(
b
,
a
,
!
0
)},
"
>
"
:
function
(
a
,
b
){
var
c
,
d
=
typeof
b
==
"
string
"
,
e
=
0
,
f
=
a
.
length
;
if
(
d
&&!
l
.
test
(
b
)){
b
=
b
.
toLowerCase
();
for
(;
e
<
f
;
e
++
){
c
=
a
[
e
];
if
(
c
){
var
g
=
c
.
parentNode
;
a
[
e
]
=
g
.
nodeName
.
toLowerCase
()
===
b
?
g
:
!
1
}}}
else
{
for
(;
e
<
f
;
e
++
)
c
=
a
[
e
],
c
&&
(
a
[
e
]
=
d
?
c
.
parentNode
:
c
.
parentNode
===
b
);
d
&&
m
.
filter
(
b
,
a
,
!
0
)}},
""
:
function
(
a
,
b
,
c
){
var
d
,
f
=
e
++
,
g
=
x
;
typeof
b
==
"
string
"
&&!
l
.
test
(
b
)
&&
(
b
=
b
.
toLowerCase
(),
d
=
b
,
g
=
w
),
g
(
"
parentNode
"
,
b
,
f
,
a
,
d
,
c
)},
"
~
"
:
function
(
a
,
b
,
c
){
var
d
,
f
=
e
++
,
g
=
x
;
typeof
b
==
"
string
"
&&!
l
.
test
(
b
)
&&
(
b
=
b
.
toLowerCase
(),
d
=
b
,
g
=
w
),
g
(
"
previousSibling
"
,
b
,
f
,
a
,
d
,
c
)}},
find
:{
ID
:
function
(
a
,
b
,
c
){
if
(
typeof
b
.
getElementById
!=
"
undefined
"
&&!
c
){
var
d
=
b
.
getElementById
(
a
[
1
]);
return
d
&&
d
.
parentNode
?[
d
]:[]}},
NAME
:
function
(
a
,
b
){
if
(
typeof
b
.
getElementsByName
!=
"
undefined
"
){
var
c
=
[],
d
=
b
.
getElementsByName
(
a
[
1
]);
for
(
var
e
=
0
,
f
=
d
.
length
;
e
<
f
;
e
++
)
d
[
e
].
getAttribute
(
"
name
"
)
===
a
[
1
]
&&
c
.
push
(
d
[
e
]);
return
c
.
length
===
0
?
null
:
c
}},
TAG
:
function
(
a
,
b
){
if
(
typeof
b
.
getElementsByTagName
!=
"
undefined
"
)
return
b
.
getElementsByTagName
(
a
[
1
])}},
preFilter
:{
CLASS
:
function
(
a
,
b
,
c
,
d
,
e
,
f
){
a
=
"
"
+
a
[
1
].
replace
(
j
,
""
)
+
"
"
;
if
(
f
)
return
a
;
for
(
var
g
=
0
,
h
;(
h
=
b
[
g
])
!=
null
;
g
++
)
h
&&
(
e
^
(
h
.
className
&&
(
"
"
+
h
.
className
+
"
"
).
replace
(
/
[\t\n\r]
/g
,
"
"
).
indexOf
(
a
)
>=
0
)?
c
||
d
.
push
(
h
):
c
&&
(
b
[
g
]
=!
1
));
return
!
1
},
ID
:
function
(
a
){
return
a
[
1
].
replace
(
j
,
""
)},
TAG
:
function
(
a
,
b
){
return
a
[
1
].
replace
(
j
,
""
).
toLowerCase
()},
CHILD
:
function
(
a
){
if
(
a
[
1
]
===
"
nth
"
){
a
[
2
]
||
m
.
error
(
a
[
0
]),
a
[
2
]
=
a
[
2
].
replace
(
/^
\+
|
\s
*/g
,
""
);
var
b
=
/
(
-
?)(\d
*
)(?:
n
([
+
\-]?\d
*
))?
/
.
exec
(
a
[
2
]
===
"
even
"
&&
"
2n
"
||
a
[
2
]
===
"
odd
"
&&
"
2n+1
"
||!
/
\D
/
.
test
(
a
[
2
])
&&
"
0n+
"
+
a
[
2
]
||
a
[
2
]);
a
[
2
]
=
b
[
1
]
+
(
b
[
2
]
||
1
)
-
0
,
a
[
3
]
=
b
[
3
]
-
0
}
else
a
[
2
]
&&
m
.
error
(
a
[
0
]);
a
[
0
]
=
e
++
;
return
a
},
ATTR
:
function
(
a
,
b
,
c
,
d
,
e
,
f
){
var
g
=
a
[
1
]
=
a
[
1
].
replace
(
j
,
""
);
!
f
&&
o
.
attrMap
[
g
]
&&
(
a
[
1
]
=
o
.
attrMap
[
g
]),
a
[
4
]
=
(
a
[
4
]
||
a
[
5
]
||
""
).
replace
(
j
,
""
),
a
[
2
]
===
"
~=
"
&&
(
a
[
4
]
=
"
"
+
a
[
4
]
+
"
"
);
return
a
},
PSEUDO
:
function
(
b
,
c
,
d
,
e
,
f
){
if
(
b
[
1
]
===
"
not
"
)
if
((
a
.
exec
(
b
[
3
])
||
""
).
length
>
1
||
/^
\w
/
.
test
(
b
[
3
]))
b
[
3
]
=
m
(
b
[
3
],
null
,
null
,
c
);
else
{
var
g
=
m
.
filter
(
b
[
3
],
c
,
d
,
!
0
^
f
);
d
||
e
.
push
.
apply
(
e
,
g
);
return
!
1
}
else
if
(
o
.
match
.
POS
.
test
(
b
[
0
])
||
o
.
match
.
CHILD
.
test
(
b
[
0
]))
return
!
0
;
return
b
},
POS
:
function
(
a
){
a
.
unshift
(
!
0
);
return
a
}},
filters
:{
enabled
:
function
(
a
){
return
a
.
disabled
===!
1
&&
a
.
type
!==
"
hidden
"
},
disabled
:
function
(
a
){
return
a
.
disabled
===!
0
},
checked
:
function
(
a
){
return
a
.
checked
===!
0
},
selected
:
function
(
a
){
a
.
parentNode
&&
a
.
parentNode
.
selectedIndex
;
return
a
.
selected
===!
0
},
parent
:
function
(
a
){
return
!!
a
.
firstChild
},
empty
:
function
(
a
){
return
!
a
.
firstChild
},
has
:
function
(
a
,
b
,
c
){
return
!!
m
(
c
[
3
],
a
).
length
},
header
:
function
(
a
){
return
/h
\d
/i
.
test
(
a
.
nodeName
)},
text
:
function
(
a
){
var
b
=
a
.
getAttribute
(
"
type
"
),
c
=
a
.
type
;
return
a
.
nodeName
.
toLowerCase
()
===
"
input
"
&&
"
text
"
===
c
&&
(
b
===
c
||
b
===
null
)},
radio
:
function
(
a
){
return
a
.
nodeName
.
toLowerCase
()
===
"
input
"
&&
"
radio
"
===
a
.
type
},
checkbox
:
function
(
a
){
return
a
.
nodeName
.
toLowerCase
()
===
"
input
"
&&
"
checkbox
"
===
a
.
type
},
file
:
function
(
a
){
return
a
.
nodeName
.
toLowerCase
()
===
"
input
"
&&
"
file
"
===
a
.
type
},
password
:
function
(
a
){
return
a
.
nodeName
.
toLowerCase
()
===
"
input
"
&&
"
password
"
===
a
.
type
},
submit
:
function
(
a
){
var
b
=
a
.
nodeName
.
toLowerCase
();
return
(
b
===
"
input
"
||
b
===
"
button
"
)
&&
"
submit
"
===
a
.
type
},
image
:
function
(
a
){
return
a
.
nodeName
.
toLowerCase
()
===
"
input
"
&&
"
image
"
===
a
.
type
},
reset
:
function
(
a
){
var
b
=
a
.
nodeName
.
toLowerCase
();
return
(
b
===
"
input
"
||
b
===
"
button
"
)
&&
"
reset
"
===
a
.
type
},
button
:
function
(
a
){
var
b
=
a
.
nodeName
.
toLowerCase
();
return
b
===
"
input
"
&&
"
button
"
===
a
.
type
||
b
===
"
button
"
},
input
:
function
(
a
){
return
/input|select|textarea|button/i
.
test
(
a
.
nodeName
)},
focus
:
function
(
a
){
return
a
===
a
.
ownerDocument
.
activeElement
}},
setFilters
:{
first
:
function
(
a
,
b
){
return
b
===
0
},
last
:
function
(
a
,
b
,
c
,
d
){
return
b
===
d
.
length
-
1
},
even
:
function
(
a
,
b
){
return
b
%
2
===
0
},
odd
:
function
(
a
,
b
){
return
b
%
2
===
1
},
lt
:
function
(
a
,
b
,
c
){
return
b
<
c
[
3
]
-
0
},
gt
:
function
(
a
,
b
,
c
){
return
b
>
c
[
3
]
-
0
},
nth
:
function
(
a
,
b
,
c
){
return
c
[
3
]
-
0
===
b
},
eq
:
function
(
a
,
b
,
c
){
return
c
[
3
]
-
0
===
b
}},
filter
:{
PSEUDO
:
function
(
a
,
b
,
c
,
d
){
var
e
=
b
[
1
],
f
=
o
.
filters
[
e
];
if
(
f
)
return
f
(
a
,
c
,
b
,
d
);
if
(
e
===
"
contains
"
)
return
(
a
.
textContent
||
a
.
innerText
||
n
([
a
])
||
""
).
indexOf
(
b
[
3
])
>=
0
;
if
(
e
===
"
not
"
){
var
g
=
b
[
3
];
for
(
var
h
=
0
,
i
=
g
.
length
;
h
<
i
;
h
++
)
if
(
g
[
h
]
===
a
)
return
!
1
;
return
!
0
}
m
.
error
(
e
)},
CHILD
:
function
(
a
,
b
){
var
c
,
e
,
f
,
g
,
h
,
i
,
j
,
k
=
b
[
1
],
l
=
a
;
switch
(
k
){
case
"
only
"
:
case
"
first
"
:
while
(
l
=
l
.
previousSibling
)
if
(
l
.
nodeType
===
1
)
return
!
1
;
if
(
k
===
"
first
"
)
return
!
0
;
l
=
a
;
case
"
last
"
:
while
(
l
=
l
.
nextSibling
)
if
(
l
.
nodeType
===
1
)
return
!
1
;
return
!
0
;
case
"
nth
"
:
c
=
b
[
2
],
e
=
b
[
3
];
if
(
c
===
1
&&
e
===
0
)
return
!
0
;
f
=
b
[
0
],
g
=
a
.
parentNode
;
if
(
g
&&
(
g
[
d
]
!==
f
||!
a
.
nodeIndex
)){
i
=
0
;
for
(
l
=
g
.
firstChild
;
l
;
l
=
l
.
nextSibling
)
l
.
nodeType
===
1
&&
(
l
.
nodeIndex
=++
i
);
g
[
d
]
=
f
}
j
=
a
.
nodeIndex
-
e
;
return
c
===
0
?
j
===
0
:
j
%
c
===
0
&&
j
/
c
>=
0
}},
ID
:
function
(
a
,
b
){
return
a
.
nodeType
===
1
&&
a
.
getAttribute
(
"
id
"
)
===
b
},
TAG
:
function
(
a
,
b
){
return
b
===
"
*
"
&&
a
.
nodeType
===
1
||!!
a
.
nodeName
&&
a
.
nodeName
.
toLowerCase
()
===
b
},
CLASS
:
function
(
a
,
b
){
return
(
"
"
+
(
a
.
className
||
a
.
getAttribute
(
"
class
"
))
+
"
"
).
indexOf
(
b
)
>-
1
},
ATTR
:
function
(
a
,
b
){
var
c
=
b
[
1
],
d
=
m
.
attr
?
m
.
attr
(
a
,
c
):
o
.
attrHandle
[
c
]?
o
.
attrHandle
[
c
](
a
):
a
[
c
]
!=
null
?
a
[
c
]:
a
.
getAttribute
(
c
),
e
=
d
+
""
,
f
=
b
[
2
],
g
=
b
[
4
];
return
d
==
null
?
f
===
"
!=
"
:
!
f
&&
m
.
attr
?
d
!=
null
:
f
===
"
=
"
?
e
===
g
:
f
===
"
*=
"
?
e
.
indexOf
(
g
)
>=
0
:
f
===
"
~=
"
?(
"
"
+
e
+
"
"
).
indexOf
(
g
)
>=
0
:
g
?
f
===
"
!=
"
?
e
!==
g
:
f
===
"
^=
"
?
e
.
indexOf
(
g
)
===
0
:
f
===
"
$=
"
?
e
.
substr
(
e
.
length
-
g
.
length
)
===
g
:
f
===
"
|=
"
?
e
===
g
||
e
.
substr
(
0
,
g
.
length
+
1
)
===
g
+
"
-
"
:
!
1
:
e
&&
d
!==!
1
},
POS
:
function
(
a
,
b
,
c
,
d
){
var
e
=
b
[
2
],
f
=
o
.
setFilters
[
e
];
if
(
f
)
return
f
(
a
,
c
,
b
,
d
)}}},
p
=
o
.
match
.
POS
,
q
=
function
(
a
,
b
){
return
"
\\
"
+
(
b
-
0
+
1
)};
for
(
var
r
in
o
.
match
)
o
.
match
[
r
]
=
new
RegExp
(
o
.
match
[
r
].
source
+
/
(?![^\[]
*
\])(?![^\(]
*
\))
/
.
source
),
o
.
leftMatch
[
r
]
=
new
RegExp
(
/
(
^
(?:
.|
\r
|
\n)
*
?)
/
.
source
+
o
.
match
[
r
].
source
.
replace
(
/
\\(\d
+
)
/g
,
q
));
o
.
match
.
globalPOS
=
p
;
var
s
=
function
(
a
,
b
){
a
=
Array
.
prototype
.
slice
.
call
(
a
,
0
);
if
(
b
){
b
.
push
.
apply
(
b
,
a
);
return
b
}
return
a
};
try
{
Array
.
prototype
.
slice
.
call
(
c
.
documentElement
.
childNodes
,
0
)[
0
].
nodeType
}
catch
(
t
){
s
=
function
(
a
,
b
){
var
c
=
0
,
d
=
b
||
[];
if
(
g
.
call
(
a
)
===
"
[object Array]
"
)
Array
.
prototype
.
push
.
apply
(
d
,
a
);
else
if
(
typeof
a
.
length
==
"
number
"
)
for
(
var
e
=
a
.
length
;
c
<
e
;
c
++
)
d
.
push
(
a
[
c
]);
else
for
(;
a
[
c
];
c
++
)
d
.
push
(
a
[
c
]);
return
d
}}
var
u
,
v
;
c
.
documentElement
.
compareDocumentPosition
?
u
=
function
(
a
,
b
){
if
(
a
===
b
){
h
=!
0
;
return
0
}
if
(
!
a
.
compareDocumentPosition
||!
b
.
compareDocumentPosition
)
return
a
.
compareDocumentPosition
?
-
1
:
1
;
return
a
.
compareDocumentPosition
(
b
)
&
4
?
-
1
:
1
}:(
u
=
function
(
a
,
b
){
if
(
a
===
b
){
h
=!
0
;
return
0
}
if
(
a
.
sourceIndex
&&
b
.
sourceIndex
)
return
a
.
sourceIndex
-
b
.
sourceIndex
;
var
c
,
d
,
e
=
[],
f
=
[],
g
=
a
.
parentNode
,
i
=
b
.
parentNode
,
j
=
g
;
if
(
g
===
i
)
return
v
(
a
,
b
);
if
(
!
g
)
return
-
1
;
if
(
!
i
)
return
1
;
while
(
j
)
e
.
unshift
(
j
),
j
=
j
.
parentNode
;
j
=
i
;
while
(
j
)
f
.
unshift
(
j
),
j
=
j
.
parentNode
;
c
=
e
.
length
,
d
=
f
.
length
;
for
(
var
k
=
0
;
k
<
c
&&
k
<
d
;
k
++
)
if
(
e
[
k
]
!==
f
[
k
])
return
v
(
e
[
k
],
f
[
k
]);
return
k
===
c
?
v
(
a
,
f
[
k
],
-
1
):
v
(
e
[
k
],
b
,
1
)},
v
=
function
(
a
,
b
,
c
){
if
(
a
===
b
)
return
c
;
var
d
=
a
.
nextSibling
;
while
(
d
){
if
(
d
===
b
)
return
-
1
;
d
=
d
.
nextSibling
}
return
1
}),
function
(){
var
a
=
c
.
createElement
(
"
div
"
),
d
=
"
script
"
+
(
new
Date
).
getTime
(),
e
=
c
.
documentElement
;
a
.
innerHTML
=
"
<a name='
"
+
d
+
"
'/>
"
,
e
.
insertBefore
(
a
,
e
.
firstChild
),
c
.
getElementById
(
d
)
&&
(
o
.
find
.
ID
=
function
(
a
,
c
,
d
){
if
(
typeof
c
.
getElementById
!=
"
undefined
"
&&!
d
){
var
e
=
c
.
getElementById
(
a
[
1
]);
return
e
?
e
.
id
===
a
[
1
]
||
typeof
e
.
getAttributeNode
!=
"
undefined
"
&&
e
.
getAttributeNode
(
"
id
"
).
nodeValue
===
a
[
1
]?[
e
]:
b
:[]}},
o
.
filter
.
ID
=
function
(
a
,
b
){
var
c
=
typeof
a
.
getAttributeNode
!=
"
undefined
"
&&
a
.
getAttributeNode
(
"
id
"
);
return
a
.
nodeType
===
1
&&
c
&&
c
.
nodeValue
===
b
}),
e
.
removeChild
(
a
),
e
=
a
=
null
}(),
function
(){
var
a
=
c
.
createElement
(
"
div
"
);
a
.
appendChild
(
c
.
createComment
(
""
)),
a
.
getElementsByTagName
(
"
*
"
).
length
>
0
&&
(
o
.
find
.
TAG
=
function
(
a
,
b
){
var
c
=
b
.
getElementsByTagName
(
a
[
1
]);
if
(
a
[
1
]
===
"
*
"
){
var
d
=
[];
for
(
var
e
=
0
;
c
[
e
];
e
++
)
c
[
e
].
nodeType
===
1
&&
d
.
push
(
c
[
e
]);
c
=
d
}
return
c
}),
a
.
innerHTML
=
"
<a href='#'></a>
"
,
a
.
firstChild
&&
typeof
a
.
firstChild
.
getAttribute
!=
"
undefined
"
&&
a
.
firstChild
.
getAttribute
(
"
href
"
)
!==
"
#
"
&&
(
o
.
attrHandle
.
href
=
function
(
a
){
return
a
.
getAttribute
(
"
href
"
,
2
)}),
a
=
null
}(),
c
.
querySelectorAll
&&
function
(){
var
a
=
m
,
b
=
c
.
createElement
(
"
div
"
),
d
=
"
__sizzle__
"
;
b
.
innerHTML
=
"
<p class='TEST'></p>
"
;
if
(
!
b
.
querySelectorAll
||
b
.
querySelectorAll
(
"
.TEST
"
).
length
!==
0
){
m
=
function
(
b
,
e
,
f
,
g
){
e
=
e
||
c
;
if
(
!
g
&&!
m
.
isXML
(
e
)){
var
h
=
/^
(\w
+$
)
|^
\.([\w\-]
+$
)
|^#
([\w\-]
+$
)
/
.
exec
(
b
);
if
(
h
&&
(
e
.
nodeType
===
1
||
e
.
nodeType
===
9
)){
if
(
h
[
1
])
return
s
(
e
.
getElementsByTagName
(
b
),
f
);
if
(
h
[
2
]
&&
o
.
find
.
CLASS
&&
e
.
getElementsByClassName
)
return
s
(
e
.
getElementsByClassName
(
h
[
2
]),
f
)}
if
(
e
.
nodeType
===
9
){
if
(
b
===
"
body
"
&&
e
.
body
)
return
s
([
e
.
body
],
f
);
if
(
h
&&
h
[
3
]){
var
i
=
e
.
getElementById
(
h
[
3
]);
if
(
!
i
||!
i
.
parentNode
)
return
s
([],
f
);
if
(
i
.
id
===
h
[
3
])
return
s
([
i
],
f
)}
try
{
return
s
(
e
.
querySelectorAll
(
b
),
f
)}
catch
(
j
){}}
else
if
(
e
.
nodeType
===
1
&&
e
.
nodeName
.
toLowerCase
()
!==
"
object
"
){
var
k
=
e
,
l
=
e
.
getAttribute
(
"
id
"
),
n
=
l
||
d
,
p
=
e
.
parentNode
,
q
=
/^
\s
*
[
+~
]
/
.
test
(
b
);
l
?
n
=
n
.
replace
(
/'/g
,
"
\\
$&
"
):
e
.
setAttribute
(
"
id
"
,
n
),
q
&&
p
&&
(
e
=
e
.
parentNode
);
try
{
if
(
!
q
||
p
)
return
s
(
e
.
querySelectorAll
(
"
[id='
"
+
n
+
"
']
"
+
b
),
f
)}
catch
(
r
){}
finally
{
l
||
k
.
removeAttribute
(
"
id
"
)}}}
return
a
(
b
,
e
,
f
,
g
)};
for
(
var
e
in
a
)
m
[
e
]
=
a
[
e
];
b
=
null
}}(),
function
(){
var
a
=
c
.
documentElement
,
b
=
a
.
matchesSelector
||
a
.
mozMatchesSelector
||
a
.
webkitMatchesSelector
||
a
.
msMatchesSelector
;
if
(
b
){
var
d
=!
b
.
call
(
c
.
createElement
(
"
div
"
),
"
div
"
),
e
=!
1
;
try
{
b
.
call
(
c
.
documentElement
,
"
[test!='']:sizzle
"
)}
catch
(
f
){
e
=!
0
}
m
.
matchesSelector
=
function
(
a
,
c
){
c
=
c
.
replace
(
/
\=\s
*
([^
'"
\]]
*
)\s
*
\]
/g
,
"
='$1']
"
);
if
(
!
m
.
isXML
(
a
))
try
{
if
(
e
||!
o
.
match
.
PSEUDO
.
test
(
c
)
&&!
/!=/
.
test
(
c
)){
var
f
=
b
.
call
(
a
,
c
);
if
(
f
||!
d
||
a
.
document
&&
a
.
document
.
nodeType
!==
11
)
return
f
}}
catch
(
g
){}
return
m
(
c
,
null
,
null
,[
a
]).
length
>
0
}}}(),
function
(){
var
a
=
c
.
createElement
(
"
div
"
);
a
.
innerHTML
=
"
<div class='test e'></div><div class='test'></div>
"
;
if
(
!!
a
.
getElementsByClassName
&&
a
.
getElementsByClassName
(
"
e
"
).
length
!==
0
){
a
.
lastChild
.
className
=
"
e
"
;
if
(
a
.
getElementsByClassName
(
"
e
"
).
length
===
1
)
return
;
o
.
order
.
splice
(
1
,
0
,
"
CLASS
"
),
o
.
find
.
CLASS
=
function
(
a
,
b
,
c
){
if
(
typeof
b
.
getElementsByClassName
!=
"
undefined
"
&&!
c
)
return
b
.
getElementsByClassName
(
a
[
1
])},
a
=
null
}}(),
c
.
documentElement
.
contains
?
m
.
contains
=
function
(
a
,
b
){
return
a
!==
b
&&
(
a
.
contains
?
a
.
contains
(
b
):
!
0
)}:
c
.
documentElement
.
compareDocumentPosition
?
m
.
contains
=
function
(
a
,
b
){
return
!!
(
a
.
compareDocumentPosition
(
b
)
&
16
)}:
m
.
contains
=
function
(){
return
!
1
},
m
.
isXML
=
function
(
a
){
var
b
=
(
a
?
a
.
ownerDocument
||
a
:
0
).
documentElement
;
return
b
?
b
.
nodeName
!==
"
HTML
"
:
!
1
};
var
y
=
function
(
a
,
b
,
c
){
var
d
,
e
=
[],
f
=
""
,
g
=
b
.
nodeType
?[
b
]:
b
;
while
(
d
=
o
.
match
.
PSEUDO
.
exec
(
a
))
f
+=
d
[
0
],
a
=
a
.
replace
(
o
.
match
.
PSEUDO
,
""
);
a
=
o
.
relative
[
a
]?
a
+
"
*
"
:
a
;
for
(
var
h
=
0
,
i
=
g
.
length
;
h
<
i
;
h
++
)
m
(
a
,
g
[
h
],
e
,
c
);
return
m
.
filter
(
f
,
e
)};
m
.
attr
=
f
.
attr
,
m
.
selectors
.
attrMap
=
{},
f
.
find
=
m
,
f
.
expr
=
m
.
selectors
,
f
.
expr
[
"
:
"
]
=
f
.
expr
.
filters
,
f
.
unique
=
m
.
uniqueSort
,
f
.
text
=
m
.
getText
,
f
.
isXMLDoc
=
m
.
isXML
,
f
.
contains
=
m
.
contains
}();
var
L
=
/Until$/
,
M
=
/^
(?:
parents|prevUntil|prevAll
)
/
,
N
=
/,/
,
O
=
/^.
[^
:#
\[\.
,
]
*$/
,
P
=
Array
.
prototype
.
slice
,
Q
=
f
.
expr
.
match
.
globalPOS
,
R
=
{
children
:
!
0
,
contents
:
!
0
,
next
:
!
0
,
prev
:
!
0
};
f
.
fn
.
extend
({
find
:
function
(
a
){
var
b
=
this
,
c
,
d
;
if
(
typeof
a
!=
"
string
"
)
return
f
(
a
).
filter
(
function
(){
for
(
c
=
0
,
d
=
b
.
length
;
c
<
d
;
c
++
)
if
(
f
.
contains
(
b
[
c
],
this
))
return
!
0
});
var
e
=
this
.
pushStack
(
""
,
"
find
"
,
a
),
g
,
h
,
i
;
for
(
c
=
0
,
d
=
this
.
length
;
c
<
d
;
c
++
){
g
=
e
.
length
,
f
.
find
(
a
,
this
[
c
],
e
);
if
(
c
>
0
)
for
(
h
=
g
;
h
<
e
.
length
;
h
++
)
for
(
i
=
0
;
i
<
g
;
i
++
)
if
(
e
[
i
]
===
e
[
h
]){
e
.
splice
(
h
--
,
1
);
break
}}
return
e
},
has
:
function
(
a
){
var
b
=
f
(
a
);
return
this
.
filter
(
function
(){
for
(
var
a
=
0
,
c
=
b
.
length
;
a
<
c
;
a
++
)
if
(
f
.
contains
(
this
,
b
[
a
]))
return
!
0
})},
not
:
function
(
a
){
return
this
.
pushStack
(
T
(
this
,
a
,
!
1
),
"
not
"
,
a
)},
filter
:
function
(
a
){
return
this
.
pushStack
(
T
(
this
,
a
,
!
0
),
"
filter
"
,
a
)},
is
:
function
(
a
){
return
!!
a
&&
(
typeof
a
==
"
string
"
?
Q
.
test
(
a
)?
f
(
a
,
this
.
context
).
index
(
this
[
0
])
>=
0
:
f
.
filter
(
a
,
this
).
length
>
0
:
this
.
filter
(
a
).
length
>
0
)},
closest
:
function
(
a
,
b
){
var
c
=
[],
d
,
e
,
g
=
this
[
0
];
if
(
f
.
isArray
(
a
)){
var
h
=
1
;
while
(
g
&&
g
.
ownerDocument
&&
g
!==
b
){
for
(
d
=
0
;
d
<
a
.
length
;
d
++
)
f
(
g
).
is
(
a
[
d
])
&&
c
.
push
({
selector
:
a
[
d
],
elem
:
g
,
level
:
h
});
g
=
g
.
parentNode
,
h
++
}
return
c
}
var
i
=
Q
.
test
(
a
)
||
typeof
a
!=
"
string
"
?
f
(
a
,
b
||
this
.
context
):
0
;
for
(
d
=
0
,
e
=
this
.
length
;
d
<
e
;
d
++
){
g
=
this
[
d
];
while
(
g
){
if
(
i
?
i
.
index
(
g
)
>-
1
:
f
.
find
.
matchesSelector
(
g
,
a
)){
c
.
push
(
g
);
break
}
g
=
g
.
parentNode
;
if
(
!
g
||!
g
.
ownerDocument
||
g
===
b
||
g
.
nodeType
===
11
)
break
}}
c
=
c
.
length
>
1
?
f
.
unique
(
c
):
c
;
return
this
.
pushStack
(
c
,
"
closest
"
,
a
)},
index
:
function
(
a
){
if
(
!
a
)
return
this
[
0
]
&&
this
[
0
].
parentNode
?
this
.
prevAll
().
length
:
-
1
;
if
(
typeof
a
==
"
string
"
)
return
f
.
inArray
(
this
[
0
],
f
(
a
));
return
f
.
inArray
(
a
.
jquery
?
a
[
0
]:
a
,
this
)},
add
:
function
(
a
,
b
){
var
c
=
typeof
a
==
"
string
"
?
f
(
a
,
b
):
f
.
makeArray
(
a
&&
a
.
nodeType
?[
a
]:
a
),
d
=
f
.
merge
(
this
.
get
(),
c
);
return
this
.
pushStack
(
S
(
c
[
0
])
||
S
(
d
[
0
])?
d
:
f
.
unique
(
d
))},
andSelf
:
function
(){
return
this
.
add
(
this
.
prevObject
)}}),
f
.
each
({
parent
:
function
(
a
){
var
b
=
a
.
parentNode
;
return
b
&&
b
.
nodeType
!==
11
?
b
:
null
},
parents
:
function
(
a
){
return
f
.
dir
(
a
,
"
parentNode
"
)},
parentsUntil
:
function
(
a
,
b
,
c
){
return
f
.
dir
(
a
,
"
parentNode
"
,
c
)},
next
:
function
(
a
){
return
f
.
nth
(
a
,
2
,
"
nextSibling
"
)},
prev
:
function
(
a
){
return
f
.
nth
(
a
,
2
,
"
previousSibling
"
)},
nextAll
:
function
(
a
){
return
f
.
dir
(
a
,
"
nextSibling
"
)},
prevAll
:
function
(
a
){
return
f
.
dir
(
a
,
"
previousSibling
"
)},
nextUntil
:
function
(
a
,
b
,
c
){
return
f
.
dir
(
a
,
"
nextSibling
"
,
c
)},
prevUntil
:
function
(
a
,
b
,
c
){
return
f
.
dir
(
a
,
"
previousSibling
"
,
c
)},
siblings
:
function
(
a
){
return
f
.
sibling
((
a
.
parentNode
||
{}).
firstChild
,
a
)},
children
:
function
(
a
){
return
f
.
sibling
(
a
.
firstChild
)},
contents
:
function
(
a
){
return
f
.
nodeName
(
a
,
"
iframe
"
)?
a
.
contentDocument
||
a
.
contentWindow
.
document
:
f
.
makeArray
(
a
.
childNodes
)}},
function
(
a
,
b
){
f
.
fn
[
a
]
=
function
(
c
,
d
){
var
e
=
f
.
map
(
this
,
b
,
c
);
L
.
test
(
a
)
||
(
d
=
c
),
d
&&
typeof
d
==
"
string
"
&&
(
e
=
f
.
filter
(
d
,
e
)),
e
=
this
.
length
>
1
&&!
R
[
a
]?
f
.
unique
(
e
):
e
,(
this
.
length
>
1
||
N
.
test
(
d
))
&&
M
.
test
(
a
)
&&
(
e
=
e
.
reverse
());
return
this
.
pushStack
(
e
,
a
,
P
.
call
(
arguments
).
join
(
"
,
"
))}}),
f
.
extend
({
filter
:
function
(
a
,
b
,
c
){
c
&&
(
a
=
"
:not(
"
+
a
+
"
)
"
);
return
b
.
length
===
1
?
f
.
find
.
matchesSelector
(
b
[
0
],
a
)?[
b
[
0
]]:[]:
f
.
find
.
matches
(
a
,
b
)},
dir
:
function
(
a
,
c
,
d
){
var
e
=
[],
g
=
a
[
c
];
while
(
g
&&
g
.
nodeType
!==
9
&&
(
d
===
b
||
g
.
nodeType
!==
1
||!
f
(
g
).
is
(
d
)))
g
.
nodeType
===
1
&&
e
.
push
(
g
),
g
=
g
[
c
];
return
e
},
nth
:
function
(
a
,
b
,
c
,
d
){
b
=
b
||
1
;
var
e
=
0
;
for
(;
a
;
a
=
a
[
c
])
if
(
a
.
nodeType
===
1
&&++
e
===
b
)
break
;
return
a
},
sibling
:
function
(
a
,
b
){
var
c
=
[];
for
(;
a
;
a
=
a
.
nextSibling
)
a
.
nodeType
===
1
&&
a
!==
b
&&
c
.
push
(
a
);
return
c
}});
var
V
=
"
abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video
"
,
W
=
/ jQuery
\d
+="
(?:\d
+|null
)
"/g
,
X
=
/^
\s
+/
,
Y
=
/<
(?!
area|br|col|embed|hr|img|input|link|meta|param
)(([\w
:
]
+
)[^
>
]
*
)\/
>/ig
,
Z
=
/<
([\w
:
]
+
)
/
,
$
=
/<tbody/i
,
_
=
/<|&#
?\w
+;/
,
ba
=
/<
(?:
script|style
)
/i
,
bb
=
/<
(?:
script|object|embed|option|style
)
/i
,
bc
=
new
RegExp
(
"
<(?:
"
+
V
+
"
)[
\\
s/>]
"
,
"
i
"
),
bd
=
/checked
\s
*
(?:[^
=
]
|=
\s
*.checked.
)
/i
,
be
=
/
\/(
java|ecma
)
script/i
,
bf
=
/^
\s
*<!
(?:\[
CDATA
\[
|
\-\-)
/
,
bg
=
{
option
:[
1
,
"
<select multiple='multiple'>
"
,
"
</select>
"
],
legend
:[
1
,
"
<fieldset>
"
,
"
</fieldset>
"
],
thead
:[
1
,
"
<table>
"
,
"
</table>
"
],
tr
:[
2
,
"
<table><tbody>
"
,
"
</tbody></table>
"
],
td
:[
3
,
"
<table><tbody><tr>
"
,
"
</tr></tbody></table>
"
],
col
:[
2
,
"
<table><tbody></tbody><colgroup>
"
,
"
</colgroup></table>
"
],
area
:[
1
,
"
<map>
"
,
"
</map>
"
],
_default
:[
0
,
""
,
""
]},
bh
=
U
(
c
);
bg
.
optgroup
=
bg
.
option
,
bg
.
tbody
=
bg
.
tfoot
=
bg
.
colgroup
=
bg
.
caption
=
bg
.
thead
,
bg
.
th
=
bg
.
td
,
f
.
support
.
htmlSerialize
||
(
bg
.
_default
=
[
1
,
"
div<div>
"
,
"
</div>
"
]),
f
.
fn
.
extend
({
text
:
function
(
a
){
return
f
.
access
(
this
,
function
(
a
){
return
a
===
b
?
f
.
text
(
this
):
this
.
empty
().
append
((
this
[
0
]
&&
this
[
0
].
ownerDocument
||
c
).
createTextNode
(
a
))},
null
,
a
,
arguments
.
length
)},
wrapAll
:
function
(
a
){
if
(
f
.
isFunction
(
a
))
return
this
.
each
(
function
(
b
){
f
(
this
).
wrapAll
(
a
.
call
(
this
,
b
))});
if
(
this
[
0
]){
var
b
=
f
(
a
,
this
[
0
].
ownerDocument
).
eq
(
0
).
clone
(
!
0
);
this
[
0
].
parentNode
&&
b
.
insertBefore
(
this
[
0
]),
b
.
map
(
function
(){
var
a
=
this
;
while
(
a
.
firstChild
&&
a
.
firstChild
.
nodeType
===
1
)
a
=
a
.
firstChild
;
return
a
}).
append
(
this
)}
return
this
},
wrapInner
:
function
(
a
){
if
(
f
.
isFunction
(
a
))
return
this
.
each
(
function
(
b
){
f
(
this
).
wrapInner
(
a
.
call
(
this
,
b
))});
return
this
.
each
(
function
(){
var
b
=
f
(
this
),
c
=
b
.
contents
();
c
.
length
?
c
.
wrapAll
(
a
):
b
.
append
(
a
)})},
wrap
:
function
(
a
){
var
b
=
f
.
isFunction
(
a
);
return
this
.
each
(
function
(
c
){
f
(
this
).
wrapAll
(
b
?
a
.
call
(
this
,
c
):
a
)})},
unwrap
:
function
(){
return
this
.
parent
().
each
(
function
(){
f
.
nodeName
(
this
,
"
body
"
)
||
f
(
this
).
replaceWith
(
this
.
childNodes
)}).
end
()},
append
:
function
(){
return
this
.
domManip
(
arguments
,
!
0
,
function
(
a
){
this
.
nodeType
===
1
&&
this
.
appendChild
(
a
)})},
prepend
:
function
(){
return
this
.
domManip
(
arguments
,
!
0
,
function
(
a
){
this
.
nodeType
===
1
&&
this
.
insertBefore
(
a
,
this
.
firstChild
)})},
before
:
function
(){
if
(
this
[
0
]
&&
this
[
0
].
parentNode
)
return
this
.
domManip
(
arguments
,
!
1
,
function
(
a
){
this
.
parentNode
.
insertBefore
(
a
,
this
)});
if
(
arguments
.
length
){
var
a
=
f
.
clean
(
arguments
);
a
.
push
.
apply
(
a
,
this
.
toArray
());
return
this
.
pushStack
(
a
,
"
before
"
,
arguments
)}},
after
:
function
(){
if
(
this
[
0
]
&&
this
[
0
].
parentNode
)
return
this
.
domManip
(
arguments
,
!
1
,
function
(
a
){
this
.
parentNode
.
insertBefore
(
a
,
this
.
nextSibling
)});
if
(
arguments
.
length
){
var
a
=
this
.
pushStack
(
this
,
"
after
"
,
arguments
);
a
.
push
.
apply
(
a
,
f
.
clean
(
arguments
));
return
a
}},
remove
:
function
(
a
,
b
){
for
(
var
c
=
0
,
d
;(
d
=
this
[
c
])
!=
null
;
c
++
)
if
(
!
a
||
f
.
filter
(
a
,[
d
]).
length
)
!
b
&&
d
.
nodeType
===
1
&&
(
f
.
cleanData
(
d
.
getElementsByTagName
(
"
*
"
)),
f
.
cleanData
([
d
])),
d
.
parentNode
&&
d
.
parentNode
.
removeChild
(
d
);
return
this
},
empty
:
function
(){
for
(
var
a
=
0
,
b
;(
b
=
this
[
a
])
!=
null
;
a
++
){
b
.
nodeType
===
1
&&
f
.
cleanData
(
b
.
getElementsByTagName
(
"
*
"
));
while
(
b
.
firstChild
)
b
.
removeChild
(
b
.
firstChild
)}
return
this
},
clone
:
function
(
a
,
b
){
a
=
a
==
null
?
!
1
:
a
,
b
=
b
==
null
?
a
:
b
;
return
this
.
map
(
function
(){
return
f
.
clone
(
this
,
a
,
b
)})},
html
:
function
(
a
){
return
f
.
access
(
this
,
function
(
a
){
var
c
=
this
[
0
]
||
{},
d
=
0
,
e
=
this
.
length
;
if
(
a
===
b
)
return
c
.
nodeType
===
1
?
c
.
innerHTML
.
replace
(
W
,
""
):
null
;
if
(
typeof
a
==
"
string
"
&&!
ba
.
test
(
a
)
&&
(
f
.
support
.
leadingWhitespace
||!
X
.
test
(
a
))
&&!
bg
[(
Z
.
exec
(
a
)
||
[
""
,
""
])[
1
].
toLowerCase
()]){
a
=
a
.
replace
(
Y
,
"
<$1></$2>
"
);
try
{
for
(;
d
<
e
;
d
++
)
c
=
this
[
d
]
||
{},
c
.
nodeType
===
1
&&
(
f
.
cleanData
(
c
.
getElementsByTagName
(
"
*
"
)),
c
.
innerHTML
=
a
);
c
=
0
}
catch
(
g
){}}
c
&&
this
.
empty
().
append
(
a
)},
null
,
a
,
arguments
.
length
)},
replaceWith
:
function
(
a
){
if
(
this
[
0
]
&&
this
[
0
].
parentNode
){
if
(
f
.
isFunction
(
a
))
return
this
.
each
(
function
(
b
){
var
c
=
f
(
this
),
d
=
c
.
html
();
c
.
replaceWith
(
a
.
call
(
this
,
b
,
d
))});
typeof
a
!=
"
string
"
&&
(
a
=
f
(
a
).
detach
());
return
this
.
each
(
function
(){
var
b
=
this
.
nextSibling
,
c
=
this
.
parentNode
;
f
(
this
).
remove
(),
b
?
f
(
b
).
before
(
a
):
f
(
c
).
append
(
a
)})}
return
this
.
length
?
this
.
pushStack
(
f
(
f
.
isFunction
(
a
)?
a
():
a
),
"
replaceWith
"
,
a
):
this
},
detach
:
function
(
a
){
return
this
.
remove
(
a
,
!
0
)},
domManip
:
function
(
a
,
c
,
d
){
var
e
,
g
,
h
,
i
,
j
=
a
[
0
],
k
=
[];
if
(
!
f
.
support
.
checkClone
&&
arguments
.
length
===
3
&&
typeof
j
==
"
string
"
&&
bd
.
test
(
j
))
return
this
.
each
(
function
(){
f
(
this
).
domManip
(
a
,
c
,
d
,
!
0
)});
if
(
f
.
isFunction
(
j
))
return
this
.
each
(
function
(
e
){
var
g
=
f
(
this
);
a
[
0
]
=
j
.
call
(
this
,
e
,
c
?
g
.
html
():
b
),
g
.
domManip
(
a
,
c
,
d
)});
if
(
this
[
0
]){
i
=
j
&&
j
.
parentNode
,
f
.
support
.
parentNode
&&
i
&&
i
.
nodeType
===
11
&&
i
.
childNodes
.
length
===
this
.
length
?
e
=
{
fragment
:
i
}:
e
=
f
.
buildFragment
(
a
,
this
,
k
),
h
=
e
.
fragment
,
h
.
childNodes
.
length
===
1
?
g
=
h
=
h
.
firstChild
:
g
=
h
.
firstChild
;
if
(
g
){
c
=
c
&&
f
.
nodeName
(
g
,
"
tr
"
);
for
(
var
l
=
0
,
m
=
this
.
length
,
n
=
m
-
1
;
l
<
m
;
l
++
)
d
.
call
(
c
?
bi
(
this
[
l
],
g
):
this
[
l
],
e
.
cacheable
||
m
>
1
&&
l
<
n
?
f
.
clone
(
h
,
!
0
,
!
0
):
h
)}
k
.
length
&&
f
.
each
(
k
,
function
(
a
,
b
){
b
.
src
?
f
.
ajax
({
type
:
"
GET
"
,
global
:
!
1
,
url
:
b
.
src
,
async
:
!
1
,
dataType
:
"
script
"
}):
f
.
globalEval
((
b
.
text
||
b
.
textContent
||
b
.
innerHTML
||
""
).
replace
(
bf
,
"
/*$0*/
"
)),
b
.
parentNode
&&
b
.
parentNode
.
removeChild
(
b
)})}
return
this
}}),
f
.
buildFragment
=
function
(
a
,
b
,
d
){
var
e
,
g
,
h
,
i
,
j
=
a
[
0
];
b
&&
b
[
0
]
&&
(
i
=
b
[
0
].
ownerDocument
||
b
[
0
]),
i
.
createDocumentFragment
||
(
i
=
c
),
a
.
length
===
1
&&
typeof
j
==
"
string
"
&&
j
.
length
<
512
&&
i
===
c
&&
j
.
charAt
(
0
)
===
"
<
"
&&!
bb
.
test
(
j
)
&&
(
f
.
support
.
checkClone
||!
bd
.
test
(
j
))
&&
(
f
.
support
.
html5Clone
||!
bc
.
test
(
j
))
&&
(
g
=!
0
,
h
=
f
.
fragments
[
j
],
h
&&
h
!==
1
&&
(
e
=
h
)),
e
||
(
e
=
i
.
createDocumentFragment
(),
f
.
clean
(
a
,
i
,
e
,
d
)),
g
&&
(
f
.
fragments
[
j
]
=
h
?
e
:
1
);
return
{
fragment
:
e
,
cacheable
:
g
}},
f
.
fragments
=
{},
f
.
each
({
appendTo
:
"
append
"
,
prependTo
:
"
prepend
"
,
insertBefore
:
"
before
"
,
insertAfter
:
"
after
"
,
replaceAll
:
"
replaceWith
"
},
function
(
a
,
b
){
f
.
fn
[
a
]
=
function
(
c
){
var
d
=
[],
e
=
f
(
c
),
g
=
this
.
length
===
1
&&
this
[
0
].
parentNode
;
if
(
g
&&
g
.
nodeType
===
11
&&
g
.
childNodes
.
length
===
1
&&
e
.
length
===
1
){
e
[
b
](
this
[
0
]);
return
this
}
for
(
var
h
=
0
,
i
=
e
.
length
;
h
<
i
;
h
++
){
var
j
=
(
h
>
0
?
this
.
clone
(
!
0
):
this
).
get
();
f
(
e
[
h
])[
b
](
j
),
d
=
d
.
concat
(
j
)}
return
this
.
pushStack
(
d
,
a
,
e
.
selector
)}}),
f
.
extend
({
clone
:
function
(
a
,
b
,
c
){
var
d
,
e
,
g
,
h
=
f
.
support
.
html5Clone
||
f
.
isXMLDoc
(
a
)
||!
bc
.
test
(
"
<
"
+
a
.
nodeName
+
"
>
"
)?
a
.
cloneNode
(
!
0
):
bo
(
a
);
if
((
!
f
.
support
.
noCloneEvent
||!
f
.
support
.
noCloneChecked
)
&&
(
a
.
nodeType
===
1
||
a
.
nodeType
===
11
)
&&!
f
.
isXMLDoc
(
a
)){
bk
(
a
,
h
),
d
=
bl
(
a
),
e
=
bl
(
h
);
for
(
g
=
0
;
d
[
g
];
++
g
)
e
[
g
]
&&
bk
(
d
[
g
],
e
[
g
])}
if
(
b
){
bj
(
a
,
h
);
if
(
c
){
d
=
bl
(
a
),
e
=
bl
(
h
);
for
(
g
=
0
;
d
[
g
];
++
g
)
bj
(
d
[
g
],
e
[
g
])}}
d
=
e
=
null
;
return
h
},
clean
:
function
(
a
,
b
,
d
,
e
){
var
g
,
h
,
i
,
j
=
[];
b
=
b
||
c
,
typeof
b
.
createElement
==
"
undefined
"
&&
(
b
=
b
.
ownerDocument
||
b
[
0
]
&&
b
[
0
].
ownerDocument
||
c
);
for
(
var
k
=
0
,
l
;(
l
=
a
[
k
])
!=
null
;
k
++
){
typeof
l
==
"
number
"
&&
(
l
+=
""
);
if
(
!
l
)
continue
;
if
(
typeof
l
==
"
string
"
)
if
(
!
_
.
test
(
l
))
l
=
b
.
createTextNode
(
l
);
else
{
l
=
l
.
replace
(
Y
,
"
<$1></$2>
"
);
var
m
=
(
Z
.
exec
(
l
)
||
[
""
,
""
])[
1
].
toLowerCase
(),
n
=
bg
[
m
]
||
bg
.
_default
,
o
=
n
[
0
],
p
=
b
.
createElement
(
"
div
"
),
q
=
bh
.
childNodes
,
r
;
b
===
c
?
bh
.
appendChild
(
p
):
U
(
b
).
appendChild
(
p
),
p
.
innerHTML
=
n
[
1
]
+
l
+
n
[
2
];
while
(
o
--
)
p
=
p
.
lastChild
;
if
(
!
f
.
support
.
tbody
){
var
s
=
$
.
test
(
l
),
t
=
m
===
"
table
"
&&!
s
?
p
.
firstChild
&&
p
.
firstChild
.
childNodes
:
n
[
1
]
===
"
<table>
"
&&!
s
?
p
.
childNodes
:[];
for
(
i
=
t
.
length
-
1
;
i
>=
0
;
--
i
)
f
.
nodeName
(
t
[
i
],
"
tbody
"
)
&&!
t
[
i
].
childNodes
.
length
&&
t
[
i
].
parentNode
.
removeChild
(
t
[
i
])}
!
f
.
support
.
leadingWhitespace
&&
X
.
test
(
l
)
&&
p
.
insertBefore
(
b
.
createTextNode
(
X
.
exec
(
l
)[
0
]),
p
.
firstChild
),
l
=
p
.
childNodes
,
p
&&
(
p
.
parentNode
.
removeChild
(
p
),
q
.
length
>
0
&&
(
r
=
q
[
q
.
length
-
1
],
r
&&
r
.
parentNode
&&
r
.
parentNode
.
removeChild
(
r
)))}
var
u
;
if
(
!
f
.
support
.
appendChecked
)
if
(
l
[
0
]
&&
typeof
(
u
=
l
.
length
)
==
"
number
"
)
for
(
i
=
0
;
i
<
u
;
i
++
)
bn
(
l
[
i
]);
else
bn
(
l
);
l
.
nodeType
?
j
.
push
(
l
):
j
=
f
.
merge
(
j
,
l
)}
if
(
d
){
g
=
function
(
a
){
return
!
a
.
type
||
be
.
test
(
a
.
type
)};
for
(
k
=
0
;
j
[
k
];
k
++
){
h
=
j
[
k
];
if
(
e
&&
f
.
nodeName
(
h
,
"
script
"
)
&&
(
!
h
.
type
||
be
.
test
(
h
.
type
)))
e
.
push
(
h
.
parentNode
?
h
.
parentNode
.
removeChild
(
h
):
h
);
else
{
if
(
h
.
nodeType
===
1
){
var
v
=
f
.
grep
(
h
.
getElementsByTagName
(
"
script
"
),
g
);
j
.
splice
.
apply
(
j
,[
k
+
1
,
0
].
concat
(
v
))}
d
.
appendChild
(
h
)}}}
return
j
},
cleanData
:
function
(
a
){
var
b
,
c
,
d
=
f
.
cache
,
e
=
f
.
event
.
special
,
g
=
f
.
support
.
deleteExpando
;
for
(
var
h
=
0
,
i
;(
i
=
a
[
h
])
!=
null
;
h
++
){
if
(
i
.
nodeName
&&
f
.
noData
[
i
.
nodeName
.
toLowerCase
()])
continue
;
c
=
i
[
f
.
expando
];
if
(
c
){
b
=
d
[
c
];
if
(
b
&&
b
.
events
){
for
(
var
j
in
b
.
events
)
e
[
j
]?
f
.
event
.
remove
(
i
,
j
):
f
.
removeEvent
(
i
,
j
,
b
.
handle
);
b
.
handle
&&
(
b
.
handle
.
elem
=
null
)}
g
?
delete
i
[
f
.
expando
]:
i
.
removeAttribute
&&
i
.
removeAttribute
(
f
.
expando
),
delete
d
[
c
]}}}});
var
bp
=
/alpha
\([^
)
]
*
\)
/i
,
bq
=
/opacity=
([^
)
]
*
)
/
,
br
=
/
([
A-Z
]
|^ms
)
/g
,
bs
=
/^
[\-
+
]?(?:\d
*
\.)?\d
+$/i
,
bt
=
/^-
?(?:\d
*
\.)?\d
+
(?!
px
)[^\d\s]
+$/i
,
bu
=
/^
([\-
+
])
=
([\-
+.
\d
e
]
+
)
/
,
bv
=
/^margin/
,
bw
=
{
position
:
"
absolute
"
,
visibility
:
"
hidden
"
,
display
:
"
block
"
},
bx
=
[
"
Top
"
,
"
Right
"
,
"
Bottom
"
,
"
Left
"
],
by
,
bz
,
bA
;
f
.
fn
.
css
=
function
(
a
,
c
){
return
f
.
access
(
this
,
function
(
a
,
c
,
d
){
return
d
!==
b
?
f
.
style
(
a
,
c
,
d
):
f
.
css
(
a
,
c
)},
a
,
c
,
arguments
.
length
>
1
)},
f
.
extend
({
cssHooks
:{
opacity
:{
get
:
function
(
a
,
b
){
if
(
b
){
var
c
=
by
(
a
,
"
opacity
"
);
return
c
===
""
?
"
1
"
:
c
}
return
a
.
style
.
opacity
}}},
cssNumber
:{
fillOpacity
:
!
0
,
fontWeight
:
!
0
,
lineHeight
:
!
0
,
opacity
:
!
0
,
orphans
:
!
0
,
widows
:
!
0
,
zIndex
:
!
0
,
zoom
:
!
0
},
cssProps
:{
"
float
"
:
f
.
support
.
cssFloat
?
"
cssFloat
"
:
"
styleFloat
"
},
style
:
function
(
a
,
c
,
d
,
e
){
if
(
!!
a
&&
a
.
nodeType
!==
3
&&
a
.
nodeType
!==
8
&&!!
a
.
style
){
var
g
,
h
,
i
=
f
.
camelCase
(
c
),
j
=
a
.
style
,
k
=
f
.
cssHooks
[
i
];
c
=
f
.
cssProps
[
i
]
||
i
;
if
(
d
===
b
){
if
(
k
&&
"
get
"
in
k
&&
(
g
=
k
.
get
(
a
,
!
1
,
e
))
!==
b
)
return
g
;
return
j
[
c
]}
h
=
typeof
d
,
h
===
"
string
"
&&
(
g
=
bu
.
exec
(
d
))
&&
(
d
=+
(
g
[
1
]
+
1
)
*+
g
[
2
]
+
parseFloat
(
f
.
css
(
a
,
c
)),
h
=
"
number
"
);
if
(
d
==
null
||
h
===
"
number
"
&&
isNaN
(
d
))
return
;
h
===
"
number
"
&&!
f
.
cssNumber
[
i
]
&&
(
d
+=
"
px
"
);
if
(
!
k
||!
(
"
set
"
in
k
)
||
(
d
=
k
.
set
(
a
,
d
))
!==
b
)
try
{
j
[
c
]
=
d
}
catch
(
l
){}}},
css
:
function
(
a
,
c
,
d
){
var
e
,
g
;
c
=
f
.
camelCase
(
c
),
g
=
f
.
cssHooks
[
c
],
c
=
f
.
cssProps
[
c
]
||
c
,
c
===
"
cssFloat
"
&&
(
c
=
"
float
"
);
if
(
g
&&
"
get
"
in
g
&&
(
e
=
g
.
get
(
a
,
!
0
,
d
))
!==
b
)
return
e
;
if
(
by
)
return
by
(
a
,
c
)},
swap
:
function
(
a
,
b
,
c
){
var
d
=
{},
e
,
f
;
for
(
f
in
b
)
d
[
f
]
=
a
.
style
[
f
],
a
.
style
[
f
]
=
b
[
f
];
e
=
c
.
call
(
a
);
for
(
f
in
b
)
a
.
style
[
f
]
=
d
[
f
];
return
e
}}),
f
.
curCSS
=
f
.
css
,
c
.
defaultView
&&
c
.
defaultView
.
getComputedStyle
&&
(
bz
=
function
(
a
,
b
){
var
c
,
d
,
e
,
g
,
h
=
a
.
style
;
b
=
b
.
replace
(
br
,
"
-$1
"
).
toLowerCase
(),(
d
=
a
.
ownerDocument
.
defaultView
)
&&
(
e
=
d
.
getComputedStyle
(
a
,
null
))
&&
(
c
=
e
.
getPropertyValue
(
b
),
c
===
""
&&!
f
.
contains
(
a
.
ownerDocument
.
documentElement
,
a
)
&&
(
c
=
f
.
style
(
a
,
b
))),
!
f
.
support
.
pixelMargin
&&
e
&&
bv
.
test
(
b
)
&&
bt
.
test
(
c
)
&&
(
g
=
h
.
width
,
h
.
width
=
c
,
c
=
e
.
width
,
h
.
width
=
g
);
return
c
}),
c
.
documentElement
.
currentStyle
&&
(
bA
=
function
(
a
,
b
){
var
c
,
d
,
e
,
f
=
a
.
currentStyle
&&
a
.
currentStyle
[
b
],
g
=
a
.
style
;
f
==
null
&&
g
&&
(
e
=
g
[
b
])
&&
(
f
=
e
),
bt
.
test
(
f
)
&&
(
c
=
g
.
left
,
d
=
a
.
runtimeStyle
&&
a
.
runtimeStyle
.
left
,
d
&&
(
a
.
runtimeStyle
.
left
=
a
.
currentStyle
.
left
),
g
.
left
=
b
===
"
fontSize
"
?
"
1em
"
:
f
,
f
=
g
.
pixelLeft
+
"
px
"
,
g
.
left
=
c
,
d
&&
(
a
.
runtimeStyle
.
left
=
d
));
return
f
===
""
?
"
auto
"
:
f
}),
by
=
bz
||
bA
,
f
.
each
([
"
height
"
,
"
width
"
],
function
(
a
,
b
){
f
.
cssHooks
[
b
]
=
{
get
:
function
(
a
,
c
,
d
){
if
(
c
)
return
a
.
offsetWidth
!==
0
?
bB
(
a
,
b
,
d
):
f
.
swap
(
a
,
bw
,
function
(){
return
bB
(
a
,
b
,
d
)})},
set
:
function
(
a
,
b
){
return
bs
.
test
(
b
)?
b
+
"
px
"
:
b
}}}),
f
.
support
.
opacity
||
(
f
.
cssHooks
.
opacity
=
{
get
:
function
(
a
,
b
){
return
bq
.
test
((
b
&&
a
.
currentStyle
?
a
.
currentStyle
.
filter
:
a
.
style
.
filter
)
||
""
)?
parseFloat
(
RegExp
.
$1
)
/
100
+
""
:
b
?
"
1
"
:
""
},
set
:
function
(
a
,
b
){
var
c
=
a
.
style
,
d
=
a
.
currentStyle
,
e
=
f
.
isNumeric
(
b
)?
"
alpha(opacity=
"
+
b
*
100
+
"
)
"
:
""
,
g
=
d
&&
d
.
filter
||
c
.
filter
||
""
;
c
.
zoom
=
1
;
if
(
b
>=
1
&&
f
.
trim
(
g
.
replace
(
bp
,
""
))
===
""
){
c
.
removeAttribute
(
"
filter
"
);
if
(
d
&&!
d
.
filter
)
return
}
c
.
filter
=
bp
.
test
(
g
)?
g
.
replace
(
bp
,
e
):
g
+
"
"
+
e
}}),
f
(
function
(){
f
.
support
.
reliableMarginRight
||
(
f
.
cssHooks
.
marginRight
=
{
get
:
function
(
a
,
b
){
return
f
.
swap
(
a
,{
display
:
"
inline-block
"
},
function
(){
return
b
?
by
(
a
,
"
margin-right
"
):
a
.
style
.
marginRight
})}})}),
f
.
expr
&&
f
.
expr
.
filters
&&
(
f
.
expr
.
filters
.
hidden
=
function
(
a
){
var
b
=
a
.
offsetWidth
,
c
=
a
.
offsetHeight
;
return
b
===
0
&&
c
===
0
||!
f
.
support
.
reliableHiddenOffsets
&&
(
a
.
style
&&
a
.
style
.
display
||
f
.
css
(
a
,
"
display
"
))
===
"
none
"
},
f
.
expr
.
filters
.
visible
=
function
(
a
){
return
!
f
.
expr
.
filters
.
hidden
(
a
)}),
f
.
each
({
margin
:
""
,
padding
:
""
,
border
:
"
Width
"
},
function
(
a
,
b
){
f
.
cssHooks
[
a
+
b
]
=
{
expand
:
function
(
c
){
var
d
,
e
=
typeof
c
==
"
string
"
?
c
.
split
(
"
"
):[
c
],
f
=
{};
for
(
d
=
0
;
d
<
4
;
d
++
)
f
[
a
+
bx
[
d
]
+
b
]
=
e
[
d
]
||
e
[
d
-
2
]
||
e
[
0
];
return
f
}}});
var
bC
=
/%20/g
,
bD
=
/
\[\]
$/
,
bE
=
/
\r?\n
/g
,
bF
=
/#.*$/
,
bG
=
/^
(
.*
?)
:
[
\t]
*
([^\r\n]
*
)\r?
$/mg
,
bH
=
/^
(?:
color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week
)
$/i
,
bI
=
/^
(?:
about|app|app
\-
storage|.+
\-
extension|file|res|widget
)
:$/
,
bJ
=
/^
(?:
GET|HEAD
)
$/
,
bK
=
/^
\/\/
/
,
bL
=
/
\?
/
,
bM
=
/<script
\b[^
<
]
*
(?:(?!
<
\/
script>
)
<
[^
<
]
*
)
*<
\/
script>/gi
,
bN
=
/^
(?:
select|textarea
)
/i
,
bO
=
/
\s
+/
,
bP
=
/
([
?&
])
_=
[^
&
]
*/
,
bQ
=
/^
([\w\+\.\-]
+:
)(?:\/\/([^\/
?#:
]
*
)(?:
:
(\d
+
))?)?
/
,
bR
=
f
.
fn
.
load
,
bS
=
{},
bT
=
{},
bU
,
bV
,
bW
=
[
"
*/
"
]
+
[
"
*
"
];
try
{
bU
=
e
.
href
}
catch
(
bX
){
bU
=
c
.
createElement
(
"
a
"
),
bU
.
href
=
""
,
bU
=
bU
.
href
}
bV
=
bQ
.
exec
(
bU
.
toLowerCase
())
||
[],
f
.
fn
.
extend
({
load
:
function
(
a
,
c
,
d
){
if
(
typeof
a
!=
"
string
"
&&
bR
)
return
bR
.
apply
(
this
,
arguments
);
if
(
!
this
.
length
)
return
this
;
var
e
=
a
.
indexOf
(
"
"
);
if
(
e
>=
0
){
var
g
=
a
.
slice
(
e
,
a
.
length
);
a
=
a
.
slice
(
0
,
e
)}
var
h
=
"
GET
"
;
c
&&
(
f
.
isFunction
(
c
)?(
d
=
c
,
c
=
b
):
typeof
c
==
"
object
"
&&
(
c
=
f
.
param
(
c
,
f
.
ajaxSettings
.
traditional
),
h
=
"
POST
"
));
var
i
=
this
;
f
.
ajax
({
url
:
a
,
type
:
h
,
dataType
:
"
html
"
,
data
:
c
,
complete
:
function
(
a
,
b
,
c
){
c
=
a
.
responseText
,
a
.
isResolved
()
&&
(
a
.
done
(
function
(
a
){
c
=
a
}),
i
.
html
(
g
?
f
(
"
<div>
"
).
append
(
c
.
replace
(
bM
,
""
)).
find
(
g
):
c
)),
d
&&
i
.
each
(
d
,[
c
,
b
,
a
])}});
return
this
},
serialize
:
function
(){
return
f
.
param
(
this
.
serializeArray
())},
serializeArray
:
function
(){
return
this
.
map
(
function
(){
return
this
.
elements
?
f
.
makeArray
(
this
.
elements
):
this
}).
filter
(
function
(){
return
this
.
name
&&!
this
.
disabled
&&
(
this
.
checked
||
bN
.
test
(
this
.
nodeName
)
||
bH
.
test
(
this
.
type
))}).
map
(
function
(
a
,
b
){
var
c
=
f
(
this
).
val
();
return
c
==
null
?
null
:
f
.
isArray
(
c
)?
f
.
map
(
c
,
function
(
a
,
c
){
return
{
name
:
b
.
name
,
value
:
a
.
replace
(
bE
,
"
\r\n
"
)}}):{
name
:
b
.
name
,
value
:
c
.
replace
(
bE
,
"
\r\n
"
)}}).
get
()}}),
f
.
each
(
"
ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend
"
.
split
(
"
"
),
function
(
a
,
b
){
f
.
fn
[
b
]
=
function
(
a
){
return
this
.
on
(
b
,
a
)}}),
f
.
each
([
"
get
"
,
"
post
"
],
function
(
a
,
c
){
f
[
c
]
=
function
(
a
,
d
,
e
,
g
){
f
.
isFunction
(
d
)
&&
(
g
=
g
||
e
,
e
=
d
,
d
=
b
);
return
f
.
ajax
({
type
:
c
,
url
:
a
,
data
:
d
,
success
:
e
,
dataType
:
g
})}}),
f
.
extend
({
getScript
:
function
(
a
,
c
){
return
f
.
get
(
a
,
b
,
c
,
"
script
"
)},
getJSON
:
function
(
a
,
b
,
c
){
return
f
.
get
(
a
,
b
,
c
,
"
json
"
)},
ajaxSetup
:
function
(
a
,
b
){
b
?
b$
(
a
,
f
.
ajaxSettings
):(
b
=
a
,
a
=
f
.
ajaxSettings
),
b$
(
a
,
b
);
return
a
},
ajaxSettings
:{
url
:
bU
,
isLocal
:
bI
.
test
(
bV
[
1
]),
global
:
!
0
,
type
:
"
GET
"
,
contentType
:
"
application/x-www-form-urlencoded; charset=UTF-8
"
,
processData
:
!
0
,
async
:
!
0
,
accepts
:{
xml
:
"
application/xml, text/xml
"
,
html
:
"
text/html
"
,
text
:
"
text/plain
"
,
json
:
"
application/json, text/javascript
"
,
"
*
"
:
bW
},
contents
:{
xml
:
/xml/
,
html
:
/html/
,
json
:
/json/
},
responseFields
:{
xml
:
"
responseXML
"
,
text
:
"
responseText
"
},
converters
:{
"
* text
"
:
a
.
String
,
"
text html
"
:
!
0
,
"
text json
"
:
f
.
parseJSON
,
"
text xml
"
:
f
.
parseXML
},
flatOptions
:{
context
:
!
0
,
url
:
!
0
}},
ajaxPrefilter
:
bY
(
bS
),
ajaxTransport
:
bY
(
bT
),
ajax
:
function
(
a
,
c
){
function
w
(
a
,
c
,
l
,
m
){
if
(
s
!==
2
){
s
=
2
,
q
&&
clearTimeout
(
q
),
p
=
b
,
n
=
m
||
""
,
v
.
readyState
=
a
>
0
?
4
:
0
;
var
o
,
r
,
u
,
w
=
c
,
x
=
l
?
ca
(
d
,
v
,
l
):
b
,
y
,
z
;
if
(
a
>=
200
&&
a
<
300
||
a
===
304
){
if
(
d
.
ifModified
){
if
(
y
=
v
.
getResponseHeader
(
"
Last-Modified
"
))
f
.
lastModified
[
k
]
=
y
;
if
(
z
=
v
.
getResponseHeader
(
"
Etag
"
))
f
.
etag
[
k
]
=
z
}
if
(
a
===
304
)
w
=
"
notmodified
"
,
o
=!
0
;
else
try
{
r
=
cb
(
d
,
x
),
w
=
"
success
"
,
o
=!
0
}
catch
(
A
){
w
=
"
parsererror
"
,
u
=
A
}}
else
{
u
=
w
;
if
(
!
w
||
a
)
w
=
"
error
"
,
a
<
0
&&
(
a
=
0
)}
v
.
status
=
a
,
v
.
statusText
=
""
+
(
c
||
w
),
o
?
h
.
resolveWith
(
e
,[
r
,
w
,
v
]):
h
.
rejectWith
(
e
,[
v
,
w
,
u
]),
v
.
statusCode
(
j
),
j
=
b
,
t
&&
g
.
trigger
(
"
ajax
"
+
(
o
?
"
Success
"
:
"
Error
"
),[
v
,
d
,
o
?
r
:
u
]),
i
.
fireWith
(
e
,[
v
,
w
]),
t
&&
(
g
.
trigger
(
"
ajaxComplete
"
,[
v
,
d
]),
--
f
.
active
||
f
.
event
.
trigger
(
"
ajaxStop
"
))}}
typeof
a
==
"
object
"
&&
(
c
=
a
,
a
=
b
),
c
=
c
||
{};
var
d
=
f
.
ajaxSetup
({},
c
),
e
=
d
.
context
||
d
,
g
=
e
!==
d
&&
(
e
.
nodeType
||
e
instanceof
f
)?
f
(
e
):
f
.
event
,
h
=
f
.
Deferred
(),
i
=
f
.
Callbacks
(
"
once memory
"
),
j
=
d
.
statusCode
||
{},
k
,
l
=
{},
m
=
{},
n
,
o
,
p
,
q
,
r
,
s
=
0
,
t
,
u
,
v
=
{
readyState
:
0
,
setRequestHeader
:
function
(
a
,
b
){
if
(
!
s
){
var
c
=
a
.
toLowerCase
();
a
=
m
[
c
]
=
m
[
c
]
||
a
,
l
[
a
]
=
b
}
return
this
},
getAllResponseHeaders
:
function
(){
return
s
===
2
?
n
:
null
},
getResponseHeader
:
function
(
a
){
var
c
;
if
(
s
===
2
){
if
(
!
o
){
o
=
{};
while
(
c
=
bG
.
exec
(
n
))
o
[
c
[
1
].
toLowerCase
()]
=
c
[
2
]}
c
=
o
[
a
.
toLowerCase
()]}
return
c
===
b
?
null
:
c
},
overrideMimeType
:
function
(
a
){
s
||
(
d
.
mimeType
=
a
);
return
this
},
abort
:
function
(
a
){
a
=
a
||
"
abort
"
,
p
&&
p
.
abort
(
a
),
w
(
0
,
a
);
return
this
}};
h
.
promise
(
v
),
v
.
success
=
v
.
done
,
v
.
error
=
v
.
fail
,
v
.
complete
=
i
.
add
,
v
.
statusCode
=
function
(
a
){
if
(
a
){
var
b
;
if
(
s
<
2
)
for
(
b
in
a
)
j
[
b
]
=
[
j
[
b
],
a
[
b
]];
else
b
=
a
[
v
.
status
],
v
.
then
(
b
,
b
)}
return
this
},
d
.
url
=
((
a
||
d
.
url
)
+
""
).
replace
(
bF
,
""
).
replace
(
bK
,
bV
[
1
]
+
"
//
"
),
d
.
dataTypes
=
f
.
trim
(
d
.
dataType
||
"
*
"
).
toLowerCase
().
split
(
bO
),
d
.
crossDomain
==
null
&&
(
r
=
bQ
.
exec
(
d
.
url
.
toLowerCase
()),
d
.
crossDomain
=!
(
!
r
||
r
[
1
]
==
bV
[
1
]
&&
r
[
2
]
==
bV
[
2
]
&&
(
r
[
3
]
||
(
r
[
1
]
===
"
http:
"
?
80
:
443
))
==
(
bV
[
3
]
||
(
bV
[
1
]
===
"
http:
"
?
80
:
443
)))),
d
.
data
&&
d
.
processData
&&
typeof
d
.
data
!=
"
string
"
&&
(
d
.
data
=
f
.
param
(
d
.
data
,
d
.
traditional
)),
bZ
(
bS
,
d
,
c
,
v
);
if
(
s
===
2
)
return
!
1
;
t
=
d
.
global
,
d
.
type
=
d
.
type
.
toUpperCase
(),
d
.
hasContent
=!
bJ
.
test
(
d
.
type
),
t
&&
f
.
active
++===
0
&&
f
.
event
.
trigger
(
"
ajaxStart
"
);
if
(
!
d
.
hasContent
){
d
.
data
&&
(
d
.
url
+=
(
bL
.
test
(
d
.
url
)?
"
&
"
:
"
?
"
)
+
d
.
data
,
delete
d
.
data
),
k
=
d
.
url
;
if
(
d
.
cache
===!
1
){
var
x
=
f
.
now
(),
y
=
d
.
url
.
replace
(
bP
,
"
$1_=
"
+
x
);
d
.
url
=
y
+
(
y
===
d
.
url
?(
bL
.
test
(
d
.
url
)?
"
&
"
:
"
?
"
)
+
"
_=
"
+
x
:
""
)}}(
d
.
data
&&
d
.
hasContent
&&
d
.
contentType
!==!
1
||
c
.
contentType
)
&&
v
.
setRequestHeader
(
"
Content-Type
"
,
d
.
contentType
),
d
.
ifModified
&&
(
k
=
k
||
d
.
url
,
f
.
lastModified
[
k
]
&&
v
.
setRequestHeader
(
"
If-Modified-Since
"
,
f
.
lastModified
[
k
]),
f
.
etag
[
k
]
&&
v
.
setRequestHeader
(
"
If-None-Match
"
,
f
.
etag
[
k
])),
v
.
setRequestHeader
(
"
Accept
"
,
d
.
dataTypes
[
0
]
&&
d
.
accepts
[
d
.
dataTypes
[
0
]]?
d
.
accepts
[
d
.
dataTypes
[
0
]]
+
(
d
.
dataTypes
[
0
]
!==
"
*
"
?
"
,
"
+
bW
+
"
; q=0.01
"
:
""
):
d
.
accepts
[
"
*
"
]);
for
(
u
in
d
.
headers
)
v
.
setRequestHeader
(
u
,
d
.
headers
[
u
]);
if
(
d
.
beforeSend
&&
(
d
.
beforeSend
.
call
(
e
,
v
,
d
)
===!
1
||
s
===
2
)){
v
.
abort
();
return
!
1
}
for
(
u
in
{
success
:
1
,
error
:
1
,
complete
:
1
})
v
[
u
](
d
[
u
]);
p
=
bZ
(
bT
,
d
,
c
,
v
);
if
(
!
p
)
w
(
-
1
,
"
No Transport
"
);
else
{
v
.
readyState
=
1
,
t
&&
g
.
trigger
(
"
ajaxSend
"
,[
v
,
d
]),
d
.
async
&&
d
.
timeout
>
0
&&
(
q
=
setTimeout
(
function
(){
v
.
abort
(
"
timeout
"
)},
d
.
timeout
));
try
{
s
=
1
,
p
.
send
(
l
,
w
)}
catch
(
z
){
if
(
s
<
2
)
w
(
-
1
,
z
);
else
throw
z
}}
return
v
},
param
:
function
(
a
,
c
){
var
d
=
[],
e
=
function
(
a
,
b
){
b
=
f
.
isFunction
(
b
)?
b
():
b
,
d
[
d
.
length
]
=
encodeURIComponent
(
a
)
+
"
=
"
+
encodeURIComponent
(
b
)};
c
===
b
&&
(
c
=
f
.
ajaxSettings
.
traditional
);
if
(
f
.
isArray
(
a
)
||
a
.
jquery
&&!
f
.
isPlainObject
(
a
))
f
.
each
(
a
,
function
(){
e
(
this
.
name
,
this
.
value
)});
else
for
(
var
g
in
a
)
b_
(
g
,
a
[
g
],
c
,
e
);
return
d
.
join
(
"
&
"
).
replace
(
bC
,
"
+
"
)}}),
f
.
extend
({
active
:
0
,
lastModified
:{},
etag
:{}});
var
cc
=
f
.
now
(),
cd
=
/
(\=)\?(
&|$
)
|
\?\?
/i
;
f
.
ajaxSetup
({
jsonp
:
"
callback
"
,
jsonpCallback
:
function
(){
return
f
.
expando
+
"
_
"
+
cc
++
}}),
f
.
ajaxPrefilter
(
"
json jsonp
"
,
function
(
b
,
c
,
d
){
var
e
=
typeof
b
.
data
==
"
string
"
&&
/^application
\/
x
\-
www
\-
form
\-
urlencoded/
.
test
(
b
.
contentType
);
if
(
b
.
dataTypes
[
0
]
===
"
jsonp
"
||
b
.
jsonp
!==!
1
&&
(
cd
.
test
(
b
.
url
)
||
e
&&
cd
.
test
(
b
.
data
))){
var
g
,
h
=
b
.
jsonpCallback
=
f
.
isFunction
(
b
.
jsonpCallback
)?
b
.
jsonpCallback
():
b
.
jsonpCallback
,
i
=
a
[
h
],
j
=
b
.
url
,
k
=
b
.
data
,
l
=
"
$1
"
+
h
+
"
$2
"
;
b
.
jsonp
!==!
1
&&
(
j
=
j
.
replace
(
cd
,
l
),
b
.
url
===
j
&&
(
e
&&
(
k
=
k
.
replace
(
cd
,
l
)),
b
.
data
===
k
&&
(
j
+=
(
/
\?
/
.
test
(
j
)?
"
&
"
:
"
?
"
)
+
b
.
jsonp
+
"
=
"
+
h
))),
b
.
url
=
j
,
b
.
data
=
k
,
a
[
h
]
=
function
(
a
){
g
=
[
a
]},
d
.
always
(
function
(){
a
[
h
]
=
i
,
g
&&
f
.
isFunction
(
i
)
&&
a
[
h
](
g
[
0
])}),
b
.
converters
[
"
script json
"
]
=
function
(){
g
||
f
.
error
(
h
+
"
was not called
"
);
return
g
[
0
]},
b
.
dataTypes
[
0
]
=
"
json
"
;
return
"
script
"
}}),
f
.
ajaxSetup
({
accepts
:{
script
:
"
text/javascript, application/javascript, application/ecmascript, application/x-ecmascript
"
},
contents
:{
script
:
/javascript|ecmascript/
},
converters
:{
"
text script
"
:
function
(
a
){
f
.
globalEval
(
a
);
return
a
}}}),
f
.
ajaxPrefilter
(
"
script
"
,
function
(
a
){
a
.
cache
===
b
&&
(
a
.
cache
=!
1
),
a
.
crossDomain
&&
(
a
.
type
=
"
GET
"
,
a
.
global
=!
1
)}),
f
.
ajaxTransport
(
"
script
"
,
function
(
a
){
if
(
a
.
crossDomain
){
var
d
,
e
=
c
.
head
||
c
.
getElementsByTagName
(
"
head
"
)[
0
]
||
c
.
documentElement
;
return
{
send
:
function
(
f
,
g
){
d
=
c
.
createElement
(
"
script
"
),
d
.
async
=
"
async
"
,
a
.
scriptCharset
&&
(
d
.
charset
=
a
.
scriptCharset
),
d
.
src
=
a
.
url
,
d
.
onload
=
d
.
onreadystatechange
=
function
(
a
,
c
){
if
(
c
||!
d
.
readyState
||
/loaded|complete/
.
test
(
d
.
readyState
))
d
.
onload
=
d
.
onreadystatechange
=
null
,
e
&&
d
.
parentNode
&&
e
.
removeChild
(
d
),
d
=
b
,
c
||
g
(
200
,
"
success
"
)},
e
.
insertBefore
(
d
,
e
.
firstChild
)},
abort
:
function
(){
d
&&
d
.
onload
(
0
,
1
)}}}});
var
ce
=
a
.
ActiveXObject
?
function
(){
for
(
var
a
in
cg
)
cg
[
a
](
0
,
1
)}:
!
1
,
cf
=
0
,
cg
;
f
.
ajaxSettings
.
xhr
=
a
.
ActiveXObject
?
function
(){
return
!
this
.
isLocal
&&
ch
()
||
ci
()}:
ch
,
function
(
a
){
f
.
extend
(
f
.
support
,{
ajax
:
!!
a
,
cors
:
!!
a
&&
"
withCredentials
"
in
a
})}(
f
.
ajaxSettings
.
xhr
()),
f
.
support
.
ajax
&&
f
.
ajaxTransport
(
function
(
c
){
if
(
!
c
.
crossDomain
||
f
.
support
.
cors
){
var
d
;
return
{
send
:
function
(
e
,
g
){
var
h
=
c
.
xhr
(),
i
,
j
;
c
.
username
?
h
.
open
(
c
.
type
,
c
.
url
,
c
.
async
,
c
.
username
,
c
.
password
):
h
.
open
(
c
.
type
,
c
.
url
,
c
.
async
);
if
(
c
.
xhrFields
)
for
(
j
in
c
.
xhrFields
)
h
[
j
]
=
c
.
xhrFields
[
j
];
c
.
mimeType
&&
h
.
overrideMimeType
&&
h
.
overrideMimeType
(
c
.
mimeType
),
!
c
.
crossDomain
&&!
e
[
"
X-Requested-With
"
]
&&
(
e
[
"
X-Requested-With
"
]
=
"
XMLHttpRequest
"
);
try
{
for
(
j
in
e
)
h
.
setRequestHeader
(
j
,
e
[
j
])}
catch
(
k
){}
h
.
send
(
c
.
hasContent
&&
c
.
data
||
null
),
d
=
function
(
a
,
e
){
var
j
,
k
,
l
,
m
,
n
;
try
{
if
(
d
&&
(
e
||
h
.
readyState
===
4
)){
d
=
b
,
i
&&
(
h
.
onreadystatechange
=
f
.
noop
,
ce
&&
delete
cg
[
i
]);
if
(
e
)
h
.
readyState
!==
4
&&
h
.
abort
();
else
{
j
=
h
.
status
,
l
=
h
.
getAllResponseHeaders
(),
m
=
{},
n
=
h
.
responseXML
,
n
&&
n
.
documentElement
&&
(
m
.
xml
=
n
);
try
{
m
.
text
=
h
.
responseText
}
catch
(
a
){}
try
{
k
=
h
.
statusText
}
catch
(
o
){
k
=
""
}
!
j
&&
c
.
isLocal
&&!
c
.
crossDomain
?
j
=
m
.
text
?
200
:
404
:
j
===
1223
&&
(
j
=
204
)}}}
catch
(
p
){
e
||
g
(
-
1
,
p
)}
m
&&
g
(
j
,
k
,
m
,
l
)},
!
c
.
async
||
h
.
readyState
===
4
?
d
():(
i
=++
cf
,
ce
&&
(
cg
||
(
cg
=
{},
f
(
a
).
unload
(
ce
)),
cg
[
i
]
=
d
),
h
.
onreadystatechange
=
d
)},
abort
:
function
(){
d
&&
d
(
0
,
1
)}}}});
var
cj
=
{},
ck
,
cl
,
cm
=
/^
(?:
toggle|show|hide
)
$/
,
cn
=
/^
([
+
\-]
=
)?([\d
+.
\-]
+
)([
a-z%
]
*
)
$/i
,
co
,
cp
=
[[
"
height
"
,
"
marginTop
"
,
"
marginBottom
"
,
"
paddingTop
"
,
"
paddingBottom
"
],[
"
width
"
,
"
marginLeft
"
,
"
marginRight
"
,
"
paddingLeft
"
,
"
paddingRight
"
],[
"
opacity
"
]],
cq
;
f
.
fn
.
extend
({
show
:
function
(
a
,
b
,
c
){
var
d
,
e
;
if
(
a
||
a
===
0
)
return
this
.
animate
(
ct
(
"
show
"
,
3
),
a
,
b
,
c
);
for
(
var
g
=
0
,
h
=
this
.
length
;
g
<
h
;
g
++
)
d
=
this
[
g
],
d
.
style
&&
(
e
=
d
.
style
.
display
,
!
f
.
_data
(
d
,
"
olddisplay
"
)
&&
e
===
"
none
"
&&
(
e
=
d
.
style
.
display
=
""
),(
e
===
""
&&
f
.
css
(
d
,
"
display
"
)
===
"
none
"
||!
f
.
contains
(
d
.
ownerDocument
.
documentElement
,
d
))
&&
f
.
_data
(
d
,
"
olddisplay
"
,
cu
(
d
.
nodeName
)));
for
(
g
=
0
;
g
<
h
;
g
++
){
d
=
this
[
g
];
if
(
d
.
style
){
e
=
d
.
style
.
display
;
if
(
e
===
""
||
e
===
"
none
"
)
d
.
style
.
display
=
f
.
_data
(
d
,
"
olddisplay
"
)
||
""
}}
return
this
},
hide
:
function
(
a
,
b
,
c
){
if
(
a
||
a
===
0
)
return
this
.
animate
(
ct
(
"
hide
"
,
3
),
a
,
b
,
c
);
var
d
,
e
,
g
=
0
,
h
=
this
.
length
;
for
(;
g
<
h
;
g
++
)
d
=
this
[
g
],
d
.
style
&&
(
e
=
f
.
css
(
d
,
"
display
"
),
e
!==
"
none
"
&&!
f
.
_data
(
d
,
"
olddisplay
"
)
&&
f
.
_data
(
d
,
"
olddisplay
"
,
e
));
for
(
g
=
0
;
g
<
h
;
g
++
)
this
[
g
].
style
&&
(
this
[
g
].
style
.
display
=
"
none
"
);
return
this
},
_toggle
:
f
.
fn
.
toggle
,
toggle
:
function
(
a
,
b
,
c
){
var
d
=
typeof
a
==
"
boolean
"
;
f
.
isFunction
(
a
)
&&
f
.
isFunction
(
b
)?
this
.
_toggle
.
apply
(
this
,
arguments
):
a
==
null
||
d
?
this
.
each
(
function
(){
var
b
=
d
?
a
:
f
(
this
).
is
(
"
:hidden
"
);
f
(
this
)[
b
?
"
show
"
:
"
hide
"
]()}):
this
.
animate
(
ct
(
"
toggle
"
,
3
),
a
,
b
,
c
);
return
this
},
fadeTo
:
function
(
a
,
b
,
c
,
d
){
return
this
.
filter
(
"
:hidden
"
).
css
(
"
opacity
"
,
0
).
show
().
end
().
animate
({
opacity
:
b
},
a
,
c
,
d
)},
animate
:
function
(
a
,
b
,
c
,
d
){
function
g
(){
e
.
queue
===!
1
&&
f
.
_mark
(
this
);
var
b
=
f
.
extend
({},
e
),
c
=
this
.
nodeType
===
1
,
d
=
c
&&
f
(
this
).
is
(
"
:hidden
"
),
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
,
p
,
q
;
b
.
animatedProperties
=
{};
for
(
i
in
a
){
g
=
f
.
camelCase
(
i
),
i
!==
g
&&
(
a
[
g
]
=
a
[
i
],
delete
a
[
i
]);
if
((
k
=
f
.
cssHooks
[
g
])
&&
"
expand
"
in
k
){
l
=
k
.
expand
(
a
[
g
]),
delete
a
[
g
];
for
(
i
in
l
)
i
in
a
||
(
a
[
i
]
=
l
[
i
])}}
for
(
g
in
a
){
h
=
a
[
g
],
f
.
isArray
(
h
)?(
b
.
animatedProperties
[
g
]
=
h
[
1
],
h
=
a
[
g
]
=
h
[
0
]):
b
.
animatedProperties
[
g
]
=
b
.
specialEasing
&&
b
.
specialEasing
[
g
]
||
b
.
easing
||
"
swing
"
;
if
(
h
===
"
hide
"
&&
d
||
h
===
"
show
"
&&!
d
)
return
b
.
complete
.
call
(
this
);
c
&&
(
g
===
"
height
"
||
g
===
"
width
"
)
&&
(
b
.
overflow
=
[
this
.
style
.
overflow
,
this
.
style
.
overflowX
,
this
.
style
.
overflowY
],
f
.
css
(
this
,
"
display
"
)
===
"
inline
"
&&
f
.
css
(
this
,
"
float
"
)
===
"
none
"
&&
(
!
f
.
support
.
inlineBlockNeedsLayout
||
cu
(
this
.
nodeName
)
===
"
inline
"
?
this
.
style
.
display
=
"
inline-block
"
:
this
.
style
.
zoom
=
1
))}
b
.
overflow
!=
null
&&
(
this
.
style
.
overflow
=
"
hidden
"
);
for
(
i
in
a
)
j
=
new
f
.
fx
(
this
,
b
,
i
),
h
=
a
[
i
],
cm
.
test
(
h
)?(
q
=
f
.
_data
(
this
,
"
toggle
"
+
i
)
||
(
h
===
"
toggle
"
?
d
?
"
show
"
:
"
hide
"
:
0
),
q
?(
f
.
_data
(
this
,
"
toggle
"
+
i
,
q
===
"
show
"
?
"
hide
"
:
"
show
"
),
j
[
q
]()):
j
[
h
]()):(
m
=
cn
.
exec
(
h
),
n
=
j
.
cur
(),
m
?(
o
=
parseFloat
(
m
[
2
]),
p
=
m
[
3
]
||
(
f
.
cssNumber
[
i
]?
""
:
"
px
"
),
p
!==
"
px
"
&&
(
f
.
style
(
this
,
i
,(
o
||
1
)
+
p
),
n
=
(
o
||
1
)
/
j
.
cur
()
*
n
,
f
.
style
(
this
,
i
,
n
+
p
)),
m
[
1
]
&&
(
o
=
(
m
[
1
]
===
"
-=
"
?
-
1
:
1
)
*
o
+
n
),
j
.
custom
(
n
,
o
,
p
)):
j
.
custom
(
n
,
h
,
""
));
return
!
0
}
var
e
=
f
.
speed
(
b
,
c
,
d
);
if
(
f
.
isEmptyObject
(
a
))
return
this
.
each
(
e
.
complete
,[
!
1
]);
a
=
f
.
extend
({},
a
);
return
e
.
queue
===!
1
?
this
.
each
(
g
):
this
.
queue
(
e
.
queue
,
g
)},
stop
:
function
(
a
,
c
,
d
){
typeof
a
!=
"
string
"
&&
(
d
=
c
,
c
=
a
,
a
=
b
),
c
&&
a
!==!
1
&&
this
.
queue
(
a
||
"
fx
"
,[]);
return
this
.
each
(
function
(){
function
h
(
a
,
b
,
c
){
var
e
=
b
[
c
];
f
.
removeData
(
a
,
c
,
!
0
),
e
.
stop
(
d
)}
var
b
,
c
=!
1
,
e
=
f
.
timers
,
g
=
f
.
_data
(
this
);
d
||
f
.
_unmark
(
!
0
,
this
);
if
(
a
==
null
)
for
(
b
in
g
)
g
[
b
]
&&
g
[
b
].
stop
&&
b
.
indexOf
(
"
.run
"
)
===
b
.
length
-
4
&&
h
(
this
,
g
,
b
);
else
g
[
b
=
a
+
"
.run
"
]
&&
g
[
b
].
stop
&&
h
(
this
,
g
,
b
);
for
(
b
=
e
.
length
;
b
--
;)
e
[
b
].
elem
===
this
&&
(
a
==
null
||
e
[
b
].
queue
===
a
)
&&
(
d
?
e
[
b
](
!
0
):
e
[
b
].
saveState
(),
c
=!
0
,
e
.
splice
(
b
,
1
));(
!
d
||!
c
)
&&
f
.
dequeue
(
this
,
a
)})}}),
f
.
each
({
slideDown
:
ct
(
"
show
"
,
1
),
slideUp
:
ct
(
"
hide
"
,
1
),
slideToggle
:
ct
(
"
toggle
"
,
1
),
fadeIn
:{
opacity
:
"
show
"
},
fadeOut
:{
opacity
:
"
hide
"
},
fadeToggle
:{
opacity
:
"
toggle
"
}},
function
(
a
,
b
){
f
.
fn
[
a
]
=
function
(
a
,
c
,
d
){
return
this
.
animate
(
b
,
a
,
c
,
d
)}}),
f
.
extend
({
speed
:
function
(
a
,
b
,
c
){
var
d
=
a
&&
typeof
a
==
"
object
"
?
f
.
extend
({},
a
):{
complete
:
c
||!
c
&&
b
||
f
.
isFunction
(
a
)
&&
a
,
duration
:
a
,
easing
:
c
&&
b
||
b
&&!
f
.
isFunction
(
b
)
&&
b
};
d
.
duration
=
f
.
fx
.
off
?
0
:
typeof
d
.
duration
==
"
number
"
?
d
.
duration
:
d
.
duration
in
f
.
fx
.
speeds
?
f
.
fx
.
speeds
[
d
.
duration
]:
f
.
fx
.
speeds
.
_default
;
if
(
d
.
queue
==
null
||
d
.
queue
===!
0
)
d
.
queue
=
"
fx
"
;
d
.
old
=
d
.
complete
,
d
.
complete
=
function
(
a
){
f
.
isFunction
(
d
.
old
)
&&
d
.
old
.
call
(
this
),
d
.
queue
?
f
.
dequeue
(
this
,
d
.
queue
):
a
!==!
1
&&
f
.
_unmark
(
this
)};
return
d
},
easing
:{
linear
:
function
(
a
){
return
a
},
swing
:
function
(
a
){
return
-
Math
.
cos
(
a
*
Math
.
PI
)
/
2
+
.
5
}},
timers
:[],
fx
:
function
(
a
,
b
,
c
){
this
.
options
=
b
,
this
.
elem
=
a
,
this
.
prop
=
c
,
b
.
orig
=
b
.
orig
||
{}}}),
f
.
fx
.
prototype
=
{
update
:
function
(){
this
.
options
.
step
&&
this
.
options
.
step
.
call
(
this
.
elem
,
this
.
now
,
this
),(
f
.
fx
.
step
[
this
.
prop
]
||
f
.
fx
.
step
.
_default
)(
this
)},
cur
:
function
(){
if
(
this
.
elem
[
this
.
prop
]
!=
null
&&
(
!
this
.
elem
.
style
||
this
.
elem
.
style
[
this
.
prop
]
==
null
))
return
this
.
elem
[
this
.
prop
];
var
a
,
b
=
f
.
css
(
this
.
elem
,
this
.
prop
);
return
isNaN
(
a
=
parseFloat
(
b
))?
!
b
||
b
===
"
auto
"
?
0
:
b
:
a
},
custom
:
function
(
a
,
c
,
d
){
function
h
(
a
){
return
e
.
step
(
a
)}
var
e
=
this
,
g
=
f
.
fx
;
this
.
startTime
=
cq
||
cr
(),
this
.
end
=
c
,
this
.
now
=
this
.
start
=
a
,
this
.
pos
=
this
.
state
=
0
,
this
.
unit
=
d
||
this
.
unit
||
(
f
.
cssNumber
[
this
.
prop
]?
""
:
"
px
"
),
h
.
queue
=
this
.
options
.
queue
,
h
.
elem
=
this
.
elem
,
h
.
saveState
=
function
(){
f
.
_data
(
e
.
elem
,
"
fxshow
"
+
e
.
prop
)
===
b
&&
(
e
.
options
.
hide
?
f
.
_data
(
e
.
elem
,
"
fxshow
"
+
e
.
prop
,
e
.
start
):
e
.
options
.
show
&&
f
.
_data
(
e
.
elem
,
"
fxshow
"
+
e
.
prop
,
e
.
end
))},
h
()
&&
f
.
timers
.
push
(
h
)
&&!
co
&&
(
co
=
setInterval
(
g
.
tick
,
g
.
interval
))},
show
:
function
(){
var
a
=
f
.
_data
(
this
.
elem
,
"
fxshow
"
+
this
.
prop
);
this
.
options
.
orig
[
this
.
prop
]
=
a
||
f
.
style
(
this
.
elem
,
this
.
prop
),
this
.
options
.
show
=!
0
,
a
!==
b
?
this
.
custom
(
this
.
cur
(),
a
):
this
.
custom
(
this
.
prop
===
"
width
"
||
this
.
prop
===
"
height
"
?
1
:
0
,
this
.
cur
()),
f
(
this
.
elem
).
show
()},
hide
:
function
(){
this
.
options
.
orig
[
this
.
prop
]
=
f
.
_data
(
this
.
elem
,
"
fxshow
"
+
this
.
prop
)
||
f
.
style
(
this
.
elem
,
this
.
prop
),
this
.
options
.
hide
=!
0
,
this
.
custom
(
this
.
cur
(),
0
)},
step
:
function
(
a
){
var
b
,
c
,
d
,
e
=
cq
||
cr
(),
g
=!
0
,
h
=
this
.
elem
,
i
=
this
.
options
;
if
(
a
||
e
>=
i
.
duration
+
this
.
startTime
){
this
.
now
=
this
.
end
,
this
.
pos
=
this
.
state
=
1
,
this
.
update
(),
i
.
animatedProperties
[
this
.
prop
]
=!
0
;
for
(
b
in
i
.
animatedProperties
)
i
.
animatedProperties
[
b
]
!==!
0
&&
(
g
=!
1
);
if
(
g
){
i
.
overflow
!=
null
&&!
f
.
support
.
shrinkWrapBlocks
&&
f
.
each
([
""
,
"
X
"
,
"
Y
"
],
function
(
a
,
b
){
h
.
style
[
"
overflow
"
+
b
]
=
i
.
overflow
[
a
]}),
i
.
hide
&&
f
(
h
).
hide
();
if
(
i
.
hide
||
i
.
show
)
for
(
b
in
i
.
animatedProperties
)
f
.
style
(
h
,
b
,
i
.
orig
[
b
]),
f
.
removeData
(
h
,
"
fxshow
"
+
b
,
!
0
),
f
.
removeData
(
h
,
"
toggle
"
+
b
,
!
0
);
d
=
i
.
complete
,
d
&&
(
i
.
complete
=!
1
,
d
.
call
(
h
))}
return
!
1
}
i
.
duration
==
Infinity
?
this
.
now
=
e
:(
c
=
e
-
this
.
startTime
,
this
.
state
=
c
/
i
.
duration
,
this
.
pos
=
f
.
easing
[
i
.
animatedProperties
[
this
.
prop
]](
this
.
state
,
c
,
0
,
1
,
i
.
duration
),
this
.
now
=
this
.
start
+
(
this
.
end
-
this
.
start
)
*
this
.
pos
),
this
.
update
();
return
!
0
}},
f
.
extend
(
f
.
fx
,{
tick
:
function
(){
var
a
,
b
=
f
.
timers
,
c
=
0
;
for
(;
c
<
b
.
length
;
c
++
)
a
=
b
[
c
],
!
a
()
&&
b
[
c
]
===
a
&&
b
.
splice
(
c
--
,
1
);
b
.
length
||
f
.
fx
.
stop
()},
interval
:
13
,
stop
:
function
(){
clearInterval
(
co
),
co
=
null
},
speeds
:{
slow
:
600
,
fast
:
200
,
_default
:
400
},
step
:{
opacity
:
function
(
a
){
f
.
style
(
a
.
elem
,
"
opacity
"
,
a
.
now
)},
_default
:
function
(
a
){
a
.
elem
.
style
&&
a
.
elem
.
style
[
a
.
prop
]
!=
null
?
a
.
elem
.
style
[
a
.
prop
]
=
a
.
now
+
a
.
unit
:
a
.
elem
[
a
.
prop
]
=
a
.
now
}}}),
f
.
each
(
cp
.
concat
.
apply
([],
cp
),
function
(
a
,
b
){
b
.
indexOf
(
"
margin
"
)
&&
(
f
.
fx
.
step
[
b
]
=
function
(
a
){
f
.
style
(
a
.
elem
,
b
,
Math
.
max
(
0
,
a
.
now
)
+
a
.
unit
)})}),
f
.
expr
&&
f
.
expr
.
filters
&&
(
f
.
expr
.
filters
.
animated
=
function
(
a
){
return
f
.
grep
(
f
.
timers
,
function
(
b
){
return
a
===
b
.
elem
}).
length
});
var
cv
,
cw
=
/^t
(?:
able|d|h
)
$/i
,
cx
=
/^
(?:
body|html
)
$/i
;
"
getBoundingClientRect
"
in
c
.
documentElement
?
cv
=
function
(
a
,
b
,
c
,
d
){
try
{
d
=
a
.
getBoundingClientRect
()}
catch
(
e
){}
if
(
!
d
||!
f
.
contains
(
c
,
a
))
return
d
?{
top
:
d
.
top
,
left
:
d
.
left
}:{
top
:
0
,
left
:
0
};
var
g
=
b
.
body
,
h
=
cy
(
b
),
i
=
c
.
clientTop
||
g
.
clientTop
||
0
,
j
=
c
.
clientLeft
||
g
.
clientLeft
||
0
,
k
=
h
.
pageYOffset
||
f
.
support
.
boxModel
&&
c
.
scrollTop
||
g
.
scrollTop
,
l
=
h
.
pageXOffset
||
f
.
support
.
boxModel
&&
c
.
scrollLeft
||
g
.
scrollLeft
,
m
=
d
.
top
+
k
-
i
,
n
=
d
.
left
+
l
-
j
;
return
{
top
:
m
,
left
:
n
}}:
cv
=
function
(
a
,
b
,
c
){
var
d
,
e
=
a
.
offsetParent
,
g
=
a
,
h
=
b
.
body
,
i
=
b
.
defaultView
,
j
=
i
?
i
.
getComputedStyle
(
a
,
null
):
a
.
currentStyle
,
k
=
a
.
offsetTop
,
l
=
a
.
offsetLeft
;
while
((
a
=
a
.
parentNode
)
&&
a
!==
h
&&
a
!==
c
){
if
(
f
.
support
.
fixedPosition
&&
j
.
position
===
"
fixed
"
)
break
;
d
=
i
?
i
.
getComputedStyle
(
a
,
null
):
a
.
currentStyle
,
k
-=
a
.
scrollTop
,
l
-=
a
.
scrollLeft
,
a
===
e
&&
(
k
+=
a
.
offsetTop
,
l
+=
a
.
offsetLeft
,
f
.
support
.
doesNotAddBorder
&&
(
!
f
.
support
.
doesAddBorderForTableAndCells
||!
cw
.
test
(
a
.
nodeName
))
&&
(
k
+=
parseFloat
(
d
.
borderTopWidth
)
||
0
,
l
+=
parseFloat
(
d
.
borderLeftWidth
)
||
0
),
g
=
e
,
e
=
a
.
offsetParent
),
f
.
support
.
subtractsBorderForOverflowNotVisible
&&
d
.
overflow
!==
"
visible
"
&&
(
k
+=
parseFloat
(
d
.
borderTopWidth
)
||
0
,
l
+=
parseFloat
(
d
.
borderLeftWidth
)
||
0
),
j
=
d
}
if
(
j
.
position
===
"
relative
"
||
j
.
position
===
"
static
"
)
k
+=
h
.
offsetTop
,
l
+=
h
.
offsetLeft
;
f
.
support
.
fixedPosition
&&
j
.
position
===
"
fixed
"
&&
(
k
+=
Math
.
max
(
c
.
scrollTop
,
h
.
scrollTop
),
l
+=
Math
.
max
(
c
.
scrollLeft
,
h
.
scrollLeft
));
return
{
top
:
k
,
left
:
l
}},
f
.
fn
.
offset
=
function
(
a
){
if
(
arguments
.
length
)
return
a
===
b
?
this
:
this
.
each
(
function
(
b
){
f
.
offset
.
setOffset
(
this
,
a
,
b
)});
var
c
=
this
[
0
],
d
=
c
&&
c
.
ownerDocument
;
if
(
!
d
)
return
null
;
if
(
c
===
d
.
body
)
return
f
.
offset
.
bodyOffset
(
c
);
return
cv
(
c
,
d
,
d
.
documentElement
)},
f
.
offset
=
{
bodyOffset
:
function
(
a
){
var
b
=
a
.
offsetTop
,
c
=
a
.
offsetLeft
;
f
.
support
.
doesNotIncludeMarginInBodyOffset
&&
(
b
+=
parseFloat
(
f
.
css
(
a
,
"
marginTop
"
))
||
0
,
c
+=
parseFloat
(
f
.
css
(
a
,
"
marginLeft
"
))
||
0
);
return
{
top
:
b
,
left
:
c
}},
setOffset
:
function
(
a
,
b
,
c
){
var
d
=
f
.
css
(
a
,
"
position
"
);
d
===
"
static
"
&&
(
a
.
style
.
position
=
"
relative
"
);
var
e
=
f
(
a
),
g
=
e
.
offset
(),
h
=
f
.
css
(
a
,
"
top
"
),
i
=
f
.
css
(
a
,
"
left
"
),
j
=
(
d
===
"
absolute
"
||
d
===
"
fixed
"
)
&&
f
.
inArray
(
"
auto
"
,[
h
,
i
])
>-
1
,
k
=
{},
l
=
{},
m
,
n
;
j
?(
l
=
e
.
position
(),
m
=
l
.
top
,
n
=
l
.
left
):(
m
=
parseFloat
(
h
)
||
0
,
n
=
parseFloat
(
i
)
||
0
),
f
.
isFunction
(
b
)
&&
(
b
=
b
.
call
(
a
,
c
,
g
)),
b
.
top
!=
null
&&
(
k
.
top
=
b
.
top
-
g
.
top
+
m
),
b
.
left
!=
null
&&
(
k
.
left
=
b
.
left
-
g
.
left
+
n
),
"
using
"
in
b
?
b
.
using
.
call
(
a
,
k
):
e
.
css
(
k
)}},
f
.
fn
.
extend
({
position
:
function
(){
if
(
!
this
[
0
])
return
null
;
var
a
=
this
[
0
],
b
=
this
.
offsetParent
(),
c
=
this
.
offset
(),
d
=
cx
.
test
(
b
[
0
].
nodeName
)?{
top
:
0
,
left
:
0
}:
b
.
offset
();
c
.
top
-=
parseFloat
(
f
.
css
(
a
,
"
marginTop
"
))
||
0
,
c
.
left
-=
parseFloat
(
f
.
css
(
a
,
"
marginLeft
"
))
||
0
,
d
.
top
+=
parseFloat
(
f
.
css
(
b
[
0
],
"
borderTopWidth
"
))
||
0
,
d
.
left
+=
parseFloat
(
f
.
css
(
b
[
0
],
"
borderLeftWidth
"
))
||
0
;
return
{
top
:
c
.
top
-
d
.
top
,
left
:
c
.
left
-
d
.
left
}},
offsetParent
:
function
(){
return
this
.
map
(
function
(){
var
a
=
this
.
offsetParent
||
c
.
body
;
while
(
a
&&!
cx
.
test
(
a
.
nodeName
)
&&
f
.
css
(
a
,
"
position
"
)
===
"
static
"
)
a
=
a
.
offsetParent
;
return
a
})}}),
f
.
each
({
scrollLeft
:
"
pageXOffset
"
,
scrollTop
:
"
pageYOffset
"
},
function
(
a
,
c
){
var
d
=
/Y/
.
test
(
c
);
f
.
fn
[
a
]
=
function
(
e
){
return
f
.
access
(
this
,
function
(
a
,
e
,
g
){
var
h
=
cy
(
a
);
if
(
g
===
b
)
return
h
?
c
in
h
?
h
[
c
]:
f
.
support
.
boxModel
&&
h
.
document
.
documentElement
[
e
]
||
h
.
document
.
body
[
e
]:
a
[
e
];
h
?
h
.
scrollTo
(
d
?
f
(
h
).
scrollLeft
():
g
,
d
?
g
:
f
(
h
).
scrollTop
()):
a
[
e
]
=
g
},
a
,
e
,
arguments
.
length
,
null
)}}),
f
.
each
({
Height
:
"
height
"
,
Width
:
"
width
"
},
function
(
a
,
c
){
var
d
=
"
client
"
+
a
,
e
=
"
scroll
"
+
a
,
g
=
"
offset
"
+
a
;
f
.
fn
[
"
inner
"
+
a
]
=
function
(){
var
a
=
this
[
0
];
return
a
?
a
.
style
?
parseFloat
(
f
.
css
(
a
,
c
,
"
padding
"
)):
this
[
c
]():
null
},
f
.
fn
[
"
outer
"
+
a
]
=
function
(
a
){
var
b
=
this
[
0
];
return
b
?
b
.
style
?
parseFloat
(
f
.
css
(
b
,
c
,
a
?
"
margin
"
:
"
border
"
)):
this
[
c
]():
null
},
f
.
fn
[
c
]
=
function
(
a
){
return
f
.
access
(
this
,
function
(
a
,
c
,
h
){
var
i
,
j
,
k
,
l
;
if
(
f
.
isWindow
(
a
)){
i
=
a
.
document
,
j
=
i
.
documentElement
[
d
];
return
f
.
support
.
boxModel
&&
j
||
i
.
body
&&
i
.
body
[
d
]
||
j
}
if
(
a
.
nodeType
===
9
){
i
=
a
.
documentElement
;
if
(
i
[
d
]
>=
i
[
e
])
return
i
[
d
];
return
Math
.
max
(
a
.
body
[
e
],
i
[
e
],
a
.
body
[
g
],
i
[
g
])}
if
(
h
===
b
){
k
=
f
.
css
(
a
,
c
),
l
=
parseFloat
(
k
);
return
f
.
isNumeric
(
l
)?
l
:
k
}
f
(
a
).
css
(
c
,
h
)},
c
,
a
,
arguments
.
length
,
null
)}}),
a
.
jQuery
=
a
.
$
=
f
,
typeof
define
==
"
function
"
&&
define
.
amd
&&
define
.
amd
.
jQuery
&&
define
(
"
jquery
"
,[],
function
(){
return
f
})})(
window
);
\ No newline at end of file
src/main/resources/static/js/supersized-init.js
deleted
100644 → 0
View file @
19a2655c
jQuery
(
function
(
$
){
$
.
supersized
({
// Functionality
slide_interval
:
4000
,
// Length between transitions
transition
:
1
,
// 0-None, 1-Fade, 2-Slide Top, 3-Slide Right, 4-Slide Bottom, 5-Slide Left, 6-Carousel Right, 7-Carousel Left
transition_speed
:
1000
,
// Speed of transition
performance
:
1
,
// 0-Normal, 1-Hybrid speed/quality, 2-Optimizes image quality, 3-Optimizes transition speed // (Only works for Firefox/IE, not Webkit)
// Size & Position
min_width
:
0
,
// Min width allowed (in pixels)
min_height
:
0
,
// Min height allowed (in pixels)
vertical_center
:
1
,
// Vertically center background
horizontal_center
:
1
,
// Horizontally center background
fit_always
:
0
,
// Image will never exceed browser width or height (Ignores min. dimensions)
fit_portrait
:
1
,
// Portrait images will not exceed browser height
fit_landscape
:
0
,
// Landscape images will not exceed browser width
// Components
slide_links
:
'
blank
'
,
// Individual links for each slide (Options: false, 'num', 'name', 'blank')
slides
:
[
// Slideshow Images
{
image
:
'
/img/backgrounds/1.jpg
'
},
{
image
:
'
/img/backgrounds/2.jpg
'
},
{
image
:
'
/img/backgrounds/3.jpg
'
}
]
});
});
src/main/resources/static/js/supersized.3.2.7.min.js
deleted
100644 → 0
View file @
19a2655c
(
function
(
a
){
a
(
document
).
ready
(
function
(){
a
(
"
body
"
).
append
(
'
<div id="supersized-loader"></div><ul id="supersized"></ul>
'
)});
a
.
supersized
=
function
(
b
){
var
c
=
"
#supersized
"
,
d
=
this
;
d
.
$el
=
a
(
c
);
d
.
el
=
c
;
vars
=
a
.
supersized
.
vars
;
d
.
$el
.
data
(
"
supersized
"
,
d
);
api
=
d
.
$el
.
data
(
"
supersized
"
);
d
.
init
=
function
(){
a
.
supersized
.
vars
=
a
.
extend
(
a
.
supersized
.
vars
,
a
.
supersized
.
themeVars
);
a
.
supersized
.
vars
.
options
=
a
.
extend
({},
a
.
supersized
.
defaultOptions
,
a
.
supersized
.
themeOptions
,
b
);
d
.
options
=
a
.
supersized
.
vars
.
options
;
d
.
_build
()};
d
.
_build
=
function
(){
var
g
=
0
,
e
=
""
,
j
=
""
,
h
,
f
=
""
,
i
;
while
(
g
<=
d
.
options
.
slides
.
length
-
1
){
switch
(
d
.
options
.
slide_links
){
case
"
num
"
:
h
=
g
;
break
;
case
"
name
"
:
h
=
d
.
options
.
slides
[
g
].
title
;
break
;
case
"
blank
"
:
h
=
""
;
break
}
e
=
e
+
'
<li class="slide-
'
+
g
+
'
"></li>
'
;
if
(
g
==
d
.
options
.
start_slide
-
1
){
if
(
d
.
options
.
slide_links
){
j
=
j
+
'
<li class="slide-link-
'
+
g
+
'
current-slide"><a>
'
+
h
+
"
</a></li>
"
}
if
(
d
.
options
.
thumb_links
){
d
.
options
.
slides
[
g
].
thumb
?
i
=
d
.
options
.
slides
[
g
].
thumb
:
i
=
d
.
options
.
slides
[
g
].
image
;
f
=
f
+
'
<li class="thumb
'
+
g
+
'
current-thumb"><img src="
'
+
i
+
'
"/></li>
'
}}
else
{
if
(
d
.
options
.
slide_links
){
j
=
j
+
'
<li class="slide-link-
'
+
g
+
'
" ><a>
'
+
h
+
"
</a></li>
"
}
if
(
d
.
options
.
thumb_links
){
d
.
options
.
slides
[
g
].
thumb
?
i
=
d
.
options
.
slides
[
g
].
thumb
:
i
=
d
.
options
.
slides
[
g
].
image
;
f
=
f
+
'
<li class="thumb
'
+
g
+
'
"><img src="
'
+
i
+
'
"/></li>
'
}}
g
++
}
if
(
d
.
options
.
slide_links
){
a
(
vars
.
slide_list
).
html
(
j
)}
if
(
d
.
options
.
thumb_links
&&
vars
.
thumb_tray
.
length
){
a
(
vars
.
thumb_tray
).
append
(
'
<ul id="
'
+
vars
.
thumb_list
.
replace
(
"
#
"
,
""
)
+
'
">
'
+
f
+
"
</ul>
"
)}
a
(
d
.
el
).
append
(
e
);
if
(
d
.
options
.
thumbnail_navigation
){
vars
.
current_slide
-
1
<
0
?
prevThumb
=
d
.
options
.
slides
.
length
-
1
:
prevThumb
=
vars
.
current_slide
-
1
;
a
(
vars
.
prev_thumb
).
show
().
html
(
a
(
"
<img/>
"
).
attr
(
"
src
"
,
d
.
options
.
slides
[
prevThumb
].
image
));
vars
.
current_slide
==
d
.
options
.
slides
.
length
-
1
?
nextThumb
=
0
:
nextThumb
=
vars
.
current_slide
+
1
;
a
(
vars
.
next_thumb
).
show
().
html
(
a
(
"
<img/>
"
).
attr
(
"
src
"
,
d
.
options
.
slides
[
nextThumb
].
image
))}
d
.
_start
()};
d
.
_start
=
function
(){
if
(
d
.
options
.
start_slide
){
vars
.
current_slide
=
d
.
options
.
start_slide
-
1
}
else
{
vars
.
current_slide
=
Math
.
floor
(
Math
.
random
()
*
d
.
options
.
slides
.
length
)}
var
o
=
d
.
options
.
new_window
?
'
target="_blank"
'
:
""
;
if
(
d
.
options
.
performance
==
3
){
d
.
$el
.
addClass
(
"
speed
"
)}
else
{
if
((
d
.
options
.
performance
==
1
)
||
(
d
.
options
.
performance
==
2
)){
d
.
$el
.
addClass
(
"
quality
"
)}}
if
(
d
.
options
.
random
){
arr
=
d
.
options
.
slides
;
for
(
var
h
,
m
,
k
=
arr
.
length
;
k
;
h
=
parseInt
(
Math
.
random
()
*
k
),
m
=
arr
[
--
k
],
arr
[
k
]
=
arr
[
h
],
arr
[
h
]
=
m
){}
d
.
options
.
slides
=
arr
}
if
(
d
.
options
.
slides
.
length
>
1
){
if
(
d
.
options
.
slides
.
length
>
2
){
vars
.
current_slide
-
1
<
0
?
loadPrev
=
d
.
options
.
slides
.
length
-
1
:
loadPrev
=
vars
.
current_slide
-
1
;
var
g
=
(
d
.
options
.
slides
[
loadPrev
].
url
)?
"
href='
"
+
d
.
options
.
slides
[
loadPrev
].
url
+
"
'
"
:
""
;
var
q
=
a
(
'
<img src="
'
+
d
.
options
.
slides
[
loadPrev
].
image
+
'
"/>
'
);
var
n
=
d
.
el
+
"
li:eq(
"
+
loadPrev
+
"
)
"
;
q
.
appendTo
(
n
).
wrap
(
"
<a
"
+
g
+
o
+
"
></a>
"
).
parent
().
parent
().
addClass
(
"
image-loading prevslide
"
);
q
.
load
(
function
(){
a
(
this
).
data
(
"
origWidth
"
,
a
(
this
).
width
()).
data
(
"
origHeight
"
,
a
(
this
).
height
());
d
.
resizeNow
()})}}
else
{
d
.
options
.
slideshow
=
0
}
g
=
(
api
.
getField
(
"
url
"
))?
"
href='
"
+
api
.
getField
(
"
url
"
)
+
"
'
"
:
""
;
var
l
=
a
(
'
<img src="
'
+
api
.
getField
(
"
image
"
)
+
'
"/>
'
);
var
f
=
d
.
el
+
"
li:eq(
"
+
vars
.
current_slide
+
"
)
"
;
l
.
appendTo
(
f
).
wrap
(
"
<a
"
+
g
+
o
+
"
></a>
"
).
parent
().
parent
().
addClass
(
"
image-loading activeslide
"
);
l
.
load
(
function
(){
d
.
_origDim
(
a
(
this
));
d
.
resizeNow
();
d
.
launch
();
if
(
typeof
theme
!=
"
undefined
"
&&
typeof
theme
.
_init
==
"
function
"
){
theme
.
_init
()}});
if
(
d
.
options
.
slides
.
length
>
1
){
vars
.
current_slide
==
d
.
options
.
slides
.
length
-
1
?
loadNext
=
0
:
loadNext
=
vars
.
current_slide
+
1
;
g
=
(
d
.
options
.
slides
[
loadNext
].
url
)?
"
href='
"
+
d
.
options
.
slides
[
loadNext
].
url
+
"
'
"
:
""
;
var
e
=
a
(
'
<img src="
'
+
d
.
options
.
slides
[
loadNext
].
image
+
'
"/>
'
);
var
p
=
d
.
el
+
"
li:eq(
"
+
loadNext
+
"
)
"
;
e
.
appendTo
(
p
).
wrap
(
"
<a
"
+
g
+
o
+
"
></a>
"
).
parent
().
parent
().
addClass
(
"
image-loading
"
);
e
.
load
(
function
(){
a
(
this
).
data
(
"
origWidth
"
,
a
(
this
).
width
()).
data
(
"
origHeight
"
,
a
(
this
).
height
());
d
.
resizeNow
()})}
d
.
$el
.
css
(
"
visibility
"
,
"
hidden
"
);
a
(
"
.load-item
"
).
hide
()};
d
.
launch
=
function
(){
d
.
$el
.
css
(
"
visibility
"
,
"
visible
"
);
a
(
"
#supersized-loader
"
).
remove
();
if
(
typeof
theme
!=
"
undefined
"
&&
typeof
theme
.
beforeAnimation
==
"
function
"
){
theme
.
beforeAnimation
(
"
next
"
)}
a
(
"
.load-item
"
).
show
();
if
(
d
.
options
.
keyboard_nav
){
a
(
document
.
documentElement
).
keyup
(
function
(
e
){
if
(
vars
.
in_animation
){
return
false
}
if
((
e
.
keyCode
==
37
)
||
(
e
.
keyCode
==
40
)){
clearInterval
(
vars
.
slideshow_interval
);
d
.
prevSlide
()}
else
{
if
((
e
.
keyCode
==
39
)
||
(
e
.
keyCode
==
38
)){
clearInterval
(
vars
.
slideshow_interval
);
d
.
nextSlide
()}
else
{
if
(
e
.
keyCode
==
32
&&!
vars
.
hover_pause
){
clearInterval
(
vars
.
slideshow_interval
);
d
.
playToggle
()}}}})}
if
(
d
.
options
.
slideshow
&&
d
.
options
.
pause_hover
){
a
(
d
.
el
).
hover
(
function
(){
if
(
vars
.
in_animation
){
return
false
}
vars
.
hover_pause
=
true
;
if
(
!
vars
.
is_paused
){
vars
.
hover_pause
=
"
resume
"
;
d
.
playToggle
()}},
function
(){
if
(
vars
.
hover_pause
==
"
resume
"
){
d
.
playToggle
();
vars
.
hover_pause
=
false
}})}
if
(
d
.
options
.
slide_links
){
a
(
vars
.
slide_list
+
"
> li
"
).
click
(
function
(){
index
=
a
(
vars
.
slide_list
+
"
> li
"
).
index
(
this
);
targetSlide
=
index
+
1
;
d
.
goTo
(
targetSlide
);
return
false
})}
if
(
d
.
options
.
thumb_links
){
a
(
vars
.
thumb_list
+
"
> li
"
).
click
(
function
(){
index
=
a
(
vars
.
thumb_list
+
"
> li
"
).
index
(
this
);
targetSlide
=
index
+
1
;
api
.
goTo
(
targetSlide
);
return
false
})}
if
(
d
.
options
.
slideshow
&&
d
.
options
.
slides
.
length
>
1
){
if
(
d
.
options
.
autoplay
&&
d
.
options
.
slides
.
length
>
1
){
vars
.
slideshow_interval
=
setInterval
(
d
.
nextSlide
,
d
.
options
.
slide_interval
)}
else
{
vars
.
is_paused
=
true
}
a
(
"
.load-item img
"
).
bind
(
"
contextmenu mousedown
"
,
function
(){
return
false
})}
a
(
window
).
resize
(
function
(){
d
.
resizeNow
()})};
d
.
resizeNow
=
function
(){
return
d
.
$el
.
each
(
function
(){
a
(
"
img
"
,
d
.
el
).
each
(
function
(){
thisSlide
=
a
(
this
);
var
f
=
(
thisSlide
.
data
(
"
origHeight
"
)
/
thisSlide
.
data
(
"
origWidth
"
)).
toFixed
(
2
);
var
e
=
d
.
$el
.
width
(),
h
=
d
.
$el
.
height
(),
i
;
if
(
d
.
options
.
fit_always
){
if
((
h
/
e
)
>
f
){
g
()}
else
{
j
()}}
else
{
if
((
h
<=
d
.
options
.
min_height
)
&&
(
e
<=
d
.
options
.
min_width
)){
if
((
h
/
e
)
>
f
){
d
.
options
.
fit_landscape
&&
f
<
1
?
g
(
true
):
j
(
true
)}
else
{
d
.
options
.
fit_portrait
&&
f
>=
1
?
j
(
true
):
g
(
true
)}}
else
{
if
(
e
<=
d
.
options
.
min_width
){
if
((
h
/
e
)
>
f
){
d
.
options
.
fit_landscape
&&
f
<
1
?
g
(
true
):
j
()}
else
{
d
.
options
.
fit_portrait
&&
f
>=
1
?
j
():
g
(
true
)}}
else
{
if
(
h
<=
d
.
options
.
min_height
){
if
((
h
/
e
)
>
f
){
d
.
options
.
fit_landscape
&&
f
<
1
?
g
():
j
(
true
)}
else
{
d
.
options
.
fit_portrait
&&
f
>=
1
?
j
(
true
):
g
()}}
else
{
if
((
h
/
e
)
>
f
){
d
.
options
.
fit_landscape
&&
f
<
1
?
g
():
j
()}
else
{
d
.
options
.
fit_portrait
&&
f
>=
1
?
j
():
g
()}}}}}
function
g
(
k
){
if
(
k
){
if
(
thisSlide
.
width
()
<
e
||
thisSlide
.
width
()
<
d
.
options
.
min_width
){
if
(
thisSlide
.
width
()
*
f
>=
d
.
options
.
min_height
){
thisSlide
.
width
(
d
.
options
.
min_width
);
thisSlide
.
height
(
thisSlide
.
width
()
*
f
)}
else
{
j
()}}}
else
{
if
(
d
.
options
.
min_height
>=
h
&&!
d
.
options
.
fit_landscape
){
if
(
e
*
f
>=
d
.
options
.
min_height
||
(
e
*
f
>=
d
.
options
.
min_height
&&
f
<=
1
)){
thisSlide
.
width
(
e
);
thisSlide
.
height
(
e
*
f
)}
else
{
if
(
f
>
1
){
thisSlide
.
height
(
d
.
options
.
min_height
);
thisSlide
.
width
(
thisSlide
.
height
()
/
f
)}
else
{
if
(
thisSlide
.
width
()
<
e
){
thisSlide
.
width
(
e
);
thisSlide
.
height
(
thisSlide
.
width
()
*
f
)}}}}
else
{
thisSlide
.
width
(
e
);
thisSlide
.
height
(
e
*
f
)}}}
function
j
(
k
){
if
(
k
){
if
(
thisSlide
.
height
()
<
h
){
if
(
thisSlide
.
height
()
/
f
>=
d
.
options
.
min_width
){
thisSlide
.
height
(
d
.
options
.
min_height
);
thisSlide
.
width
(
thisSlide
.
height
()
/
f
)}
else
{
g
(
true
)}}}
else
{
if
(
d
.
options
.
min_width
>=
e
){
if
(
h
/
f
>=
d
.
options
.
min_width
||
f
>
1
){
thisSlide
.
height
(
h
);
thisSlide
.
width
(
h
/
f
)}
else
{
if
(
f
<=
1
){
thisSlide
.
width
(
d
.
options
.
min_width
);
thisSlide
.
height
(
thisSlide
.
width
()
*
f
)}}}
else
{
thisSlide
.
height
(
h
);
thisSlide
.
width
(
h
/
f
)}}}
if
(
thisSlide
.
parents
(
"
li
"
).
hasClass
(
"
image-loading
"
)){
a
(
"
.image-loading
"
).
removeClass
(
"
image-loading
"
)}
if
(
d
.
options
.
horizontal_center
){
a
(
this
).
css
(
"
left
"
,(
e
-
a
(
this
).
width
())
/
2
)}
if
(
d
.
options
.
vertical_center
){
a
(
this
).
css
(
"
top
"
,(
h
-
a
(
this
).
height
())
/
2
)}});
if
(
d
.
options
.
image_protect
){
a
(
"
img
"
,
d
.
el
).
bind
(
"
contextmenu mousedown
"
,
function
(){
return
false
})}
return
false
})};
d
.
nextSlide
=
function
(){
if
(
vars
.
in_animation
||!
api
.
options
.
slideshow
){
return
false
}
else
{
vars
.
in_animation
=
true
}
clearInterval
(
vars
.
slideshow_interval
);
var
h
=
d
.
options
.
slides
,
e
=
d
.
$el
.
find
(
"
.activeslide
"
);
a
(
"
.prevslide
"
).
removeClass
(
"
prevslide
"
);
e
.
removeClass
(
"
activeslide
"
).
addClass
(
"
prevslide
"
);
vars
.
current_slide
+
1
==
d
.
options
.
slides
.
length
?
vars
.
current_slide
=
0
:
vars
.
current_slide
++
;
var
g
=
a
(
d
.
el
+
"
li:eq(
"
+
vars
.
current_slide
+
"
)
"
),
i
=
d
.
$el
.
find
(
"
.prevslide
"
);
if
(
d
.
options
.
performance
==
1
){
d
.
$el
.
removeClass
(
"
quality
"
).
addClass
(
"
speed
"
)}
loadSlide
=
false
;
vars
.
current_slide
==
d
.
options
.
slides
.
length
-
1
?
loadSlide
=
0
:
loadSlide
=
vars
.
current_slide
+
1
;
var
k
=
d
.
el
+
"
li:eq(
"
+
loadSlide
+
"
)
"
;
if
(
!
a
(
k
).
html
()){
var
j
=
d
.
options
.
new_window
?
'
target="_blank"
'
:
""
;
imageLink
=
(
d
.
options
.
slides
[
loadSlide
].
url
)?
"
href='
"
+
d
.
options
.
slides
[
loadSlide
].
url
+
"
'
"
:
""
;
var
f
=
a
(
'
<img src="
'
+
d
.
options
.
slides
[
loadSlide
].
image
+
'
"/>
'
);
f
.
appendTo
(
k
).
wrap
(
"
<a
"
+
imageLink
+
j
+
"
></a>
"
).
parent
().
parent
().
addClass
(
"
image-loading
"
).
css
(
"
visibility
"
,
"
hidden
"
);
f
.
load
(
function
(){
d
.
_origDim
(
a
(
this
));
d
.
resizeNow
()})}
if
(
d
.
options
.
thumbnail_navigation
==
1
){
vars
.
current_slide
-
1
<
0
?
prevThumb
=
d
.
options
.
slides
.
length
-
1
:
prevThumb
=
vars
.
current_slide
-
1
;
a
(
vars
.
prev_thumb
).
html
(
a
(
"
<img/>
"
).
attr
(
"
src
"
,
d
.
options
.
slides
[
prevThumb
].
image
));
nextThumb
=
loadSlide
;
a
(
vars
.
next_thumb
).
html
(
a
(
"
<img/>
"
).
attr
(
"
src
"
,
d
.
options
.
slides
[
nextThumb
].
image
))}
if
(
typeof
theme
!=
"
undefined
"
&&
typeof
theme
.
beforeAnimation
==
"
function
"
){
theme
.
beforeAnimation
(
"
next
"
)}
if
(
d
.
options
.
slide_links
){
a
(
"
.current-slide
"
).
removeClass
(
"
current-slide
"
);
a
(
vars
.
slide_list
+
"
> li
"
).
eq
(
vars
.
current_slide
).
addClass
(
"
current-slide
"
)}
g
.
css
(
"
visibility
"
,
"
hidden
"
).
addClass
(
"
activeslide
"
);
switch
(
d
.
options
.
transition
){
case
0
:
case
"
none
"
:
g
.
css
(
"
visibility
"
,
"
visible
"
);
vars
.
in_animation
=
false
;
d
.
afterAnimation
();
break
;
case
1
:
case
"
fade
"
:
g
.
animate
({
opacity
:
0
},
0
).
css
(
"
visibility
"
,
"
visible
"
).
animate
({
opacity
:
1
,
avoidTransforms
:
false
},
d
.
options
.
transition_speed
,
function
(){
d
.
afterAnimation
()});
break
;
case
2
:
case
"
slideTop
"
:
g
.
animate
({
top
:
-
d
.
$el
.
height
()},
0
).
css
(
"
visibility
"
,
"
visible
"
).
animate
({
top
:
0
,
avoidTransforms
:
false
},
d
.
options
.
transition_speed
,
function
(){
d
.
afterAnimation
()});
break
;
case
3
:
case
"
slideRight
"
:
g
.
animate
({
left
:
d
.
$el
.
width
()},
0
).
css
(
"
visibility
"
,
"
visible
"
).
animate
({
left
:
0
,
avoidTransforms
:
false
},
d
.
options
.
transition_speed
,
function
(){
d
.
afterAnimation
()});
break
;
case
4
:
case
"
slideBottom
"
:
g
.
animate
({
top
:
d
.
$el
.
height
()},
0
).
css
(
"
visibility
"
,
"
visible
"
).
animate
({
top
:
0
,
avoidTransforms
:
false
},
d
.
options
.
transition_speed
,
function
(){
d
.
afterAnimation
()});
break
;
case
5
:
case
"
slideLeft
"
:
g
.
animate
({
left
:
-
d
.
$el
.
width
()},
0
).
css
(
"
visibility
"
,
"
visible
"
).
animate
({
left
:
0
,
avoidTransforms
:
false
},
d
.
options
.
transition_speed
,
function
(){
d
.
afterAnimation
()});
break
;
case
6
:
case
"
carouselRight
"
:
g
.
animate
({
left
:
d
.
$el
.
width
()},
0
).
css
(
"
visibility
"
,
"
visible
"
).
animate
({
left
:
0
,
avoidTransforms
:
false
},
d
.
options
.
transition_speed
,
function
(){
d
.
afterAnimation
()});
e
.
animate
({
left
:
-
d
.
$el
.
width
(),
avoidTransforms
:
false
},
d
.
options
.
transition_speed
);
break
;
case
7
:
case
"
carouselLeft
"
:
g
.
animate
({
left
:
-
d
.
$el
.
width
()},
0
).
css
(
"
visibility
"
,
"
visible
"
).
animate
({
left
:
0
,
avoidTransforms
:
false
},
d
.
options
.
transition_speed
,
function
(){
d
.
afterAnimation
()});
e
.
animate
({
left
:
d
.
$el
.
width
(),
avoidTransforms
:
false
},
d
.
options
.
transition_speed
);
break
}
return
false
};
d
.
prevSlide
=
function
(){
if
(
vars
.
in_animation
||!
api
.
options
.
slideshow
){
return
false
}
else
{
vars
.
in_animation
=
true
}
clearInterval
(
vars
.
slideshow_interval
);
var
h
=
d
.
options
.
slides
,
e
=
d
.
$el
.
find
(
"
.activeslide
"
);
a
(
"
.prevslide
"
).
removeClass
(
"
prevslide
"
);
e
.
removeClass
(
"
activeslide
"
).
addClass
(
"
prevslide
"
);
vars
.
current_slide
==
0
?
vars
.
current_slide
=
d
.
options
.
slides
.
length
-
1
:
vars
.
current_slide
--
;
var
g
=
a
(
d
.
el
+
"
li:eq(
"
+
vars
.
current_slide
+
"
)
"
),
i
=
d
.
$el
.
find
(
"
.prevslide
"
);
if
(
d
.
options
.
performance
==
1
){
d
.
$el
.
removeClass
(
"
quality
"
).
addClass
(
"
speed
"
)}
loadSlide
=
vars
.
current_slide
;
var
k
=
d
.
el
+
"
li:eq(
"
+
loadSlide
+
"
)
"
;
if
(
!
a
(
k
).
html
()){
var
j
=
d
.
options
.
new_window
?
'
target="_blank"
'
:
""
;
imageLink
=
(
d
.
options
.
slides
[
loadSlide
].
url
)?
"
href='
"
+
d
.
options
.
slides
[
loadSlide
].
url
+
"
'
"
:
""
;
var
f
=
a
(
'
<img src="
'
+
d
.
options
.
slides
[
loadSlide
].
image
+
'
"/>
'
);
f
.
appendTo
(
k
).
wrap
(
"
<a
"
+
imageLink
+
j
+
"
></a>
"
).
parent
().
parent
().
addClass
(
"
image-loading
"
).
css
(
"
visibility
"
,
"
hidden
"
);
f
.
load
(
function
(){
d
.
_origDim
(
a
(
this
));
d
.
resizeNow
()})}
if
(
d
.
options
.
thumbnail_navigation
==
1
){
loadSlide
==
0
?
prevThumb
=
d
.
options
.
slides
.
length
-
1
:
prevThumb
=
loadSlide
-
1
;
a
(
vars
.
prev_thumb
).
html
(
a
(
"
<img/>
"
).
attr
(
"
src
"
,
d
.
options
.
slides
[
prevThumb
].
image
));
vars
.
current_slide
==
d
.
options
.
slides
.
length
-
1
?
nextThumb
=
0
:
nextThumb
=
vars
.
current_slide
+
1
;
a
(
vars
.
next_thumb
).
html
(
a
(
"
<img/>
"
).
attr
(
"
src
"
,
d
.
options
.
slides
[
nextThumb
].
image
))}
if
(
typeof
theme
!=
"
undefined
"
&&
typeof
theme
.
beforeAnimation
==
"
function
"
){
theme
.
beforeAnimation
(
"
prev
"
)}
if
(
d
.
options
.
slide_links
){
a
(
"
.current-slide
"
).
removeClass
(
"
current-slide
"
);
a
(
vars
.
slide_list
+
"
> li
"
).
eq
(
vars
.
current_slide
).
addClass
(
"
current-slide
"
)}
g
.
css
(
"
visibility
"
,
"
hidden
"
).
addClass
(
"
activeslide
"
);
switch
(
d
.
options
.
transition
){
case
0
:
case
"
none
"
:
g
.
css
(
"
visibility
"
,
"
visible
"
);
vars
.
in_animation
=
false
;
d
.
afterAnimation
();
break
;
case
1
:
case
"
fade
"
:
g
.
animate
({
opacity
:
0
},
0
).
css
(
"
visibility
"
,
"
visible
"
).
animate
({
opacity
:
1
,
avoidTransforms
:
false
},
d
.
options
.
transition_speed
,
function
(){
d
.
afterAnimation
()});
break
;
case
2
:
case
"
slideTop
"
:
g
.
animate
({
top
:
d
.
$el
.
height
()},
0
).
css
(
"
visibility
"
,
"
visible
"
).
animate
({
top
:
0
,
avoidTransforms
:
false
},
d
.
options
.
transition_speed
,
function
(){
d
.
afterAnimation
()});
break
;
case
3
:
case
"
slideRight
"
:
g
.
animate
({
left
:
-
d
.
$el
.
width
()},
0
).
css
(
"
visibility
"
,
"
visible
"
).
animate
({
left
:
0
,
avoidTransforms
:
false
},
d
.
options
.
transition_speed
,
function
(){
d
.
afterAnimation
()});
break
;
case
4
:
case
"
slideBottom
"
:
g
.
animate
({
top
:
-
d
.
$el
.
height
()},
0
).
css
(
"
visibility
"
,
"
visible
"
).
animate
({
top
:
0
,
avoidTransforms
:
false
},
d
.
options
.
transition_speed
,
function
(){
d
.
afterAnimation
()});
break
;
case
5
:
case
"
slideLeft
"
:
g
.
animate
({
left
:
d
.
$el
.
width
()},
0
).
css
(
"
visibility
"
,
"
visible
"
).
animate
({
left
:
0
,
avoidTransforms
:
false
},
d
.
options
.
transition_speed
,
function
(){
d
.
afterAnimation
()});
break
;
case
6
:
case
"
carouselRight
"
:
g
.
animate
({
left
:
-
d
.
$el
.
width
()},
0
).
css
(
"
visibility
"
,
"
visible
"
).
animate
({
left
:
0
,
avoidTransforms
:
false
},
d
.
options
.
transition_speed
,
function
(){
d
.
afterAnimation
()});
e
.
animate
({
left
:
0
},
0
).
animate
({
left
:
d
.
$el
.
width
(),
avoidTransforms
:
false
},
d
.
options
.
transition_speed
);
break
;
case
7
:
case
"
carouselLeft
"
:
g
.
animate
({
left
:
d
.
$el
.
width
()},
0
).
css
(
"
visibility
"
,
"
visible
"
).
animate
({
left
:
0
,
avoidTransforms
:
false
},
d
.
options
.
transition_speed
,
function
(){
d
.
afterAnimation
()});
e
.
animate
({
left
:
0
},
0
).
animate
({
left
:
-
d
.
$el
.
width
(),
avoidTransforms
:
false
},
d
.
options
.
transition_speed
);
break
}
return
false
};
d
.
playToggle
=
function
(){
if
(
vars
.
in_animation
||!
api
.
options
.
slideshow
){
return
false
}
if
(
vars
.
is_paused
){
vars
.
is_paused
=
false
;
if
(
typeof
theme
!=
"
undefined
"
&&
typeof
theme
.
playToggle
==
"
function
"
){
theme
.
playToggle
(
"
play
"
)}
vars
.
slideshow_interval
=
setInterval
(
d
.
nextSlide
,
d
.
options
.
slide_interval
)}
else
{
vars
.
is_paused
=
true
;
if
(
typeof
theme
!=
"
undefined
"
&&
typeof
theme
.
playToggle
==
"
function
"
){
theme
.
playToggle
(
"
pause
"
)}
clearInterval
(
vars
.
slideshow_interval
)}
return
false
};
d
.
goTo
=
function
(
f
){
if
(
vars
.
in_animation
||!
api
.
options
.
slideshow
){
return
false
}
var
e
=
d
.
options
.
slides
.
length
;
if
(
f
<
0
){
f
=
e
}
else
{
if
(
f
>
e
){
f
=
1
}}
f
=
e
-
f
+
1
;
clearInterval
(
vars
.
slideshow_interval
);
if
(
typeof
theme
!=
"
undefined
"
&&
typeof
theme
.
goTo
==
"
function
"
){
theme
.
goTo
()}
if
(
vars
.
current_slide
==
e
-
f
){
if
(
!
(
vars
.
is_paused
)){
vars
.
slideshow_interval
=
setInterval
(
d
.
nextSlide
,
d
.
options
.
slide_interval
)}
return
false
}
if
(
e
-
f
>
vars
.
current_slide
){
vars
.
current_slide
=
e
-
f
-
1
;
vars
.
update_images
=
"
next
"
;
d
.
_placeSlide
(
vars
.
update_images
)}
else
{
if
(
e
-
f
<
vars
.
current_slide
){
vars
.
current_slide
=
e
-
f
+
1
;
vars
.
update_images
=
"
prev
"
;
d
.
_placeSlide
(
vars
.
update_images
)}}
if
(
d
.
options
.
slide_links
){
a
(
vars
.
slide_list
+
"
> .current-slide
"
).
removeClass
(
"
current-slide
"
);
a
(
vars
.
slide_list
+
"
> li
"
).
eq
((
e
-
f
)).
addClass
(
"
current-slide
"
)}
if
(
d
.
options
.
thumb_links
){
a
(
vars
.
thumb_list
+
"
> .current-thumb
"
).
removeClass
(
"
current-thumb
"
);
a
(
vars
.
thumb_list
+
"
> li
"
).
eq
((
e
-
f
)).
addClass
(
"
current-thumb
"
)}};
d
.
_placeSlide
=
function
(
e
){
var
h
=
d
.
options
.
new_window
?
'
target="_blank"
'
:
""
;
loadSlide
=
false
;
if
(
e
==
"
next
"
){
vars
.
current_slide
==
d
.
options
.
slides
.
length
-
1
?
loadSlide
=
0
:
loadSlide
=
vars
.
current_slide
+
1
;
var
g
=
d
.
el
+
"
li:eq(
"
+
loadSlide
+
"
)
"
;
if
(
!
a
(
g
).
html
()){
var
h
=
d
.
options
.
new_window
?
'
target="_blank"
'
:
""
;
imageLink
=
(
d
.
options
.
slides
[
loadSlide
].
url
)?
"
href='
"
+
d
.
options
.
slides
[
loadSlide
].
url
+
"
'
"
:
""
;
var
f
=
a
(
'
<img src="
'
+
d
.
options
.
slides
[
loadSlide
].
image
+
'
"/>
'
);
f
.
appendTo
(
g
).
wrap
(
"
<a
"
+
imageLink
+
h
+
"
></a>
"
).
parent
().
parent
().
addClass
(
"
image-loading
"
).
css
(
"
visibility
"
,
"
hidden
"
);
f
.
load
(
function
(){
d
.
_origDim
(
a
(
this
));
d
.
resizeNow
()})}
d
.
nextSlide
()}
else
{
if
(
e
==
"
prev
"
){
vars
.
current_slide
-
1
<
0
?
loadSlide
=
d
.
options
.
slides
.
length
-
1
:
loadSlide
=
vars
.
current_slide
-
1
;
var
g
=
d
.
el
+
"
li:eq(
"
+
loadSlide
+
"
)
"
;
if
(
!
a
(
g
).
html
()){
var
h
=
d
.
options
.
new_window
?
'
target="_blank"
'
:
""
;
imageLink
=
(
d
.
options
.
slides
[
loadSlide
].
url
)?
"
href='
"
+
d
.
options
.
slides
[
loadSlide
].
url
+
"
'
"
:
""
;
var
f
=
a
(
'
<img src="
'
+
d
.
options
.
slides
[
loadSlide
].
image
+
'
"/>
'
);
f
.
appendTo
(
g
).
wrap
(
"
<a
"
+
imageLink
+
h
+
"
></a>
"
).
parent
().
parent
().
addClass
(
"
image-loading
"
).
css
(
"
visibility
"
,
"
hidden
"
);
f
.
load
(
function
(){
d
.
_origDim
(
a
(
this
));
d
.
resizeNow
()})}
d
.
prevSlide
()}}};
d
.
_origDim
=
function
(
e
){
e
.
data
(
"
origWidth
"
,
e
.
width
()).
data
(
"
origHeight
"
,
e
.
height
())};
d
.
afterAnimation
=
function
(){
if
(
d
.
options
.
performance
==
1
){
d
.
$el
.
removeClass
(
"
speed
"
).
addClass
(
"
quality
"
)}
if
(
vars
.
update_images
){
vars
.
current_slide
-
1
<
0
?
setPrev
=
d
.
options
.
slides
.
length
-
1
:
setPrev
=
vars
.
current_slide
-
1
;
vars
.
update_images
=
false
;
a
(
"
.prevslide
"
).
removeClass
(
"
prevslide
"
);
a
(
d
.
el
+
"
li:eq(
"
+
setPrev
+
"
)
"
).
addClass
(
"
prevslide
"
)}
vars
.
in_animation
=
false
;
if
(
!
vars
.
is_paused
&&
d
.
options
.
slideshow
){
vars
.
slideshow_interval
=
setInterval
(
d
.
nextSlide
,
d
.
options
.
slide_interval
);
if
(
d
.
options
.
stop_loop
&&
vars
.
current_slide
==
d
.
options
.
slides
.
length
-
1
){
d
.
playToggle
()}}
if
(
typeof
theme
!=
"
undefined
"
&&
typeof
theme
.
afterAnimation
==
"
function
"
){
theme
.
afterAnimation
()}
return
false
};
d
.
getField
=
function
(
e
){
return
d
.
options
.
slides
[
vars
.
current_slide
][
e
]};
d
.
init
()};
a
.
supersized
.
vars
=
{
thumb_tray
:
"
#thumb-tray
"
,
thumb_list
:
"
#thumb-list
"
,
slide_list
:
"
#slide-list
"
,
current_slide
:
0
,
in_animation
:
false
,
is_paused
:
false
,
hover_pause
:
false
,
slideshow_interval
:
false
,
update_images
:
false
,
options
:{}};
a
.
supersized
.
defaultOptions
=
{
slideshow
:
1
,
autoplay
:
1
,
start_slide
:
1
,
stop_loop
:
0
,
random
:
0
,
slide_interval
:
5000
,
transition
:
1
,
transition_speed
:
750
,
new_window
:
1
,
pause_hover
:
0
,
keyboard_nav
:
1
,
performance
:
1
,
image_protect
:
1
,
fit_always
:
0
,
fit_landscape
:
0
,
fit_portrait
:
1
,
min_width
:
0
,
min_height
:
0
,
horizontal_center
:
1
,
vertical_center
:
1
,
slide_links
:
1
,
thumb_links
:
1
,
thumbnail_navigation
:
0
};
a
.
fn
.
supersized
=
function
(
b
){
return
this
.
each
(
function
(){(
new
a
.
supersized
(
b
))})}})(
jQuery
);
\ No newline at end of file
src/main/resources/static/snapshot/11111.jpg
deleted
100644 → 0
View file @
19a2655c
188 KB
src/main/resources/templates/addtask.html
deleted
100644 → 0
View file @
19a2655c
<!DOCTYPE html>
<html
xmlns:th=
"http://www.thymeleaf.org"
>
<head>
<meta
charset=
"UTF-8"
>
<title>
定时任务新增页面
</title>
<!-- jquery -->
<script
type=
"text/javascript"
th:src=
"@{/js/jquery.min.js}"
></script>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/animate.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/bootstrap.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/font-awesome.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/mediaelementplayer.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/red.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/simple-line-icons.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/style.css}"
/>
<style
type=
"text/css"
>
.col-sm-10
{
margin-bottom
:
10px
}
</style>
</head>
<body>
<div
class=
"col-md-12 top-20 padding-0"
>
<input
type=
"hidden"
value=
"false"
id=
"changewidthnot"
/>
<input
type=
"hidden"
value=
"false"
id=
"imgsrc"
/>
<div
class=
"col-md-12"
>
<div
class=
"panel"
>
<div
class=
"panel-body"
>
<div
class=
"panel-heading"
>
<h4>
新增定时任务项
</h4>
</div>
<div
class=
"col-md-6"
style=
"padding-left:10px;"
>
<form
action=
"#"
method=
"post"
>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
任务编号:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
name=
"taskno"
id=
"taskno"
class=
"form-control"
>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
任务名称:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
name=
"taskname"
id=
"taskname"
class=
"form-control"
></div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
间隔时间(秒):
</label>
<div
class=
"col-sm-10"
>
<input
type=
"number"
min=
"1"
max=
"59"
step=
"1"
placeholder=
"间隔时间"
name=
"schedulerrule"
id=
"schedulerrule"
class=
"form-control"
>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
冻结状态:
</label>
<div
class=
"col-sm-10"
>
<select
class=
"form-control"
id=
"frozenstatus"
>
<option
th:value=
"FROZEN"
selected=
"selected"
disabled=
"disabled"
>
冻结
</option>
</select>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
执行方式:
</label>
<div
class=
"col-sm-10"
>
<select
class=
"form-control"
id=
"sendtype"
>
<option
th:value=
"http"
>
http
</option>
</select>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
监控id:
</label>
、
<select
class=
"form-control"
id=
"metatype"
>
<option
th:value=
"3DHCA343714GMCE"
山河村
</
option
>
<option
th:value=
"3DHCA34401BUXS9"
>
赵家上村
</option>
<option
th:value=
"3YSCA44524PUH3B"
>
3YSCA44524PUH3B
</option>
</select>
</div>
<div
class=
"form-group"
>
<div
class=
"col-sm-10"
>
<input
type=
"text"
name=
"videoid"
id=
"videoid"
class=
"form-control"
style=
"width:65%;float: left"
>
<a
id=
"getrtsp"
href=
" javascript:void(0)"
style=
"float: left;padding-left: 12px;padding-top: 10px;"
>
获得监控图片
</a>
<!--<a id="getwidth" href=" javascript:void(0)"-->
<!--style="float: left;padding-left: 12px;padding-top: 10px;">编辑监控范围</a>-->
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
事件类型:
</label>
<div
class=
"col-sm-10"
>
<select
class=
"form-control"
id=
"metatype"
>
<option
th:value=
"1"
全目标
</
option
>
<option
th:value=
"2"
>
行人、骑行、车辆检测识别
</option>
<option
th:value=
"3"
>
人脸检测识别
</option>
<option
th:value=
"4"
>
单独行人、骑行检测识别
</option>
<option
th:value=
"5"
>
单独车辆检测识别
</option>
<option
th:value=
"6"
>
人脸检测识别(不包含大类检测)
</option>
<option
th:value=
"7"
>
行人、骑行、人脸
</option>
</select>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
告警类型:
</label>
<div
class=
"col-sm-10"
>
<select
class=
"form-control"
id=
"recordtype"
>
<option
th:value=
"20"
>
周界入侵
</option>
<option
th:value=
"10"
>
人群密度
</option>
<option
th:value=
"41"
>
结构化统计机动车
</option>
<option
th:value=
"42"
>
结构化统计非机动车
</option>
<option
th:value=
"50"
>
未佩戴口罩
</option>
</select>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
url:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
name=
"url"
id=
"url"
class=
"form-control"
></div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
执行参数:
</label>
<div
class=
"col-sm-10"
><input
readonly
type=
"text"
name=
"executeparamter"
id=
"executeparamter"
class=
"form-control"
></div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
timeKey:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
placeholder=
"(例如: yyyy-MM-dd HH:mm:ss)"
name=
"timekey"
id=
"timekey"
class=
"form-control"
></div>
</div>
<input
type=
"button"
class=
"btn btn-3d btn-danger"
th:onclick=
"'history.go(-1);'"
align=
"left"
style=
"float:left;margin-left:120px;box-shadow:none;background-color: #f26c4f !important;width:70px"
value=
"关闭"
/>
<input
type=
"button"
class=
"btn btn-3d btn-success"
id=
"savetask"
align=
"right"
style=
"box-shadow:none;background-color: #73B18D !important;width:70px"
value=
"保存"
/>
</form>
</div>
</div>
</div>
</div>
</div>
<canvas
id=
"draw-canvas"
width=
"600"
height=
"400"
style=
"border:1px solid #d3d3d3; position: absolute; left: 50%; top: 100px;}"
>
</canvas>
<script
type=
"text/javascript"
th:inline=
"javascript"
>
class
DrawRectangle
{
constructor
(
id
,
options
)
{
this
.
canvas
=
document
.
getElementById
(
id
);
//canvas标签
this
.
ctx
=
this
.
canvas
.
getContext
(
'
2d
'
);
this
.
currentR
=
null
;
//单前点击的矩形框
this
.
startX
=
0
;
//开始X坐标
this
.
startY
=
0
;
//开始Y坐标
this
.
endX
=
0
;
// 结束X坐标
this
.
endY
=
0
;
// 结束Y坐标
this
.
layers
=
options
&&
options
.
layers
||
[];
//图层
this
.
optype
=
0
;
//op操作类型 0 无操作 1 画矩形框 2 拖动矩形框
this
.
scale
=
1
;
//放大倍数
this
.
scaleStep
=
1.05
;
//
this
.
flag
=
false
;
//是否点击鼠标的标志
this
.
type
=
0
;
//鼠标移动类型
this
.
topDistance
=
0
;
//
this
.
leftDistance
=
0
;
//
this
.
ratew
=
1
;
this
.
rateh
=
1
;
this
.
config
=
{
width
:
600
,
height
:
400
,
dashedColor
:
'
red
'
,
//虚线颜色
solidColor
:
'
red
'
,
//实线颜色
src
:
null
,
//图片的路径
}
if
(
options
)
{
for
(
const
key
in
options
)
{
this
.
config
[
key
]
=
options
[
key
]
}
}
this
.
setImageBackground
(
this
.
config
.
src
);
this
.
canvas
.
onmouseleave
=
()
=>
{
this
.
canvas
.
onmousedown
=
null
;
this
.
canvas
.
onmousemove
=
null
;
this
.
canvas
.
onmouseup
=
null
;
}
this
.
canvas
.
onmouseenter
=
()
=>
{
this
.
canvas
.
onmousedown
=
this
.
mousedown
.
bind
(
this
);
this
.
canvas
.
onmousemove
=
this
.
mousemove
.
bind
(
this
);
document
.
onmouseup
=
this
.
mouseup
.
bind
(
this
);
}
}
init
(
cvw
,
cvh
,
imgw
,
imgh
)
{
var
item
=
this
.
layers
[
1
];
this
.
ratew
=
cvw
/
imgw
;
this
.
rateh
=
cvh
/
imgh
;
this
.
ctx
.
beginPath
();
this
.
startX
=
(
item
.
x1
)
*
this
.
ratew
;
this
.
startY
=
(
item
.
y1
)
*
this
.
rateh
;
this
.
endX
=
(
item
.
x1
)
*
this
.
ratew
+
(
item
.
width
)
*
this
.
ratew
;
this
.
endY
=
(
item
.
y1
)
*
this
.
ratew
+
(
item
.
height
)
*
this
.
rateh
;
this
.
ctx
.
rect
(
this
.
startX
,
this
.
startY
,
(
item
.
width
)
*
this
.
ratew
,
(
item
.
height
)
*
this
.
rateh
);
// this.ctx.rect(item.x1, item.y1, item.width, item.height);
this
.
ctx
.
strokeStyle
=
item
.
strokeStyle
;
this
.
layers
.
splice
(
0
,
1
,
this
.
fixPosition
({
x1
:
Math
.
ceil
(
this
.
startX
),
y1
:
Math
.
ceil
(
this
.
startY
),
x2
:
Math
.
ceil
(
this
.
endX
),
y2
:
Math
.
ceil
(
this
.
endY
),
strokeStyle
:
this
.
config
.
solidColor
,
type
:
this
.
type
}));
console
.
log
(
`item`
,
item
)
this
.
ctx
.
stroke
();
console
.
log
(
`init:`
,
this
.
layers
);
}
//设置图片为canvas的背景
setImageBackground
(
src
)
{
const
img
=
new
Image
();
img
.
src
=
src
;
img
.
onload
=
()
=>
{
let
actImgW
=
img
.
width
,
actImgH
=
img
.
height
,
imgW
=
actImgW
,
imgH
=
actImgH
,
rate
=
1
,
left
=
0
,
top
=
0
,
canvasW
=
600
,
canvasH
=
400
;
//因为canvas画布的宽高固定,所以通过判断图片的宽高来进行缩放处理
if
(
actImgW
>
canvasW
||
actImgH
>
canvasH
)
{
if
(
actImgW
/
actImgH
>=
canvasW
/
canvasH
)
{
imgW
=
canvasW
;
rate
=
actImgW
/
canvasW
;
imgH
=
actImgH
/
rate
;
top
=
(
canvasH
-
imgH
)
/
2
;
}
else
{
imgH
=
canvasH
;
rate
=
actImgH
/
canvasH
;
imgW
=
actImgW
/
rate
;
left
=
(
canvasW
-
imgW
)
/
2
;
}
}
else
{
left
=
(
canvasW
-
imgW
)
/
2
;
top
=
(
canvasH
-
imgH
)
/
2
;
}
//this.ctx.drawImage(img, left, top, imgW, imgH);
//if (img.labelVos)
//drawRect(this.ctx, img, left, top, rate);
const
_this
=
this
;
//img.onload = ()=> {
_this
.
canvas
.
width
=
imgW
;
_this
.
canvas
.
height
=
imgH
;
_this
.
config
.
width
=
actImgW
;
_this
.
config
.
height
=
actImgH
;
_this
.
canvas
.
style
.
backgroundImage
=
"
url(
"
+
img
.
src
+
"
)
"
;
_this
.
canvas
.
style
.
backgroundSize
=
`
${
imgW
}
px
${
imgH
}
px`
;
_this
.
init
(
imgW
,
imgH
,
actImgW
,
actImgH
);
// }
}
}
//左侧拉伸展
resizeLeft
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
w-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
3
;
}
if
(
this
.
flag
&&
this
.
optype
==
3
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x1
=
this
.
endX
;
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
}
}
//上边框拉伸
resizeTop
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
s-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
4
;
}
if
(
this
.
flag
&&
this
.
optype
==
4
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
y1
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
;
}
}
resizeWidth
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
w-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
5
;
}
if
(
this
.
flag
&&
this
.
optype
==
5
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x2
=
this
.
endX
;
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
}
}
resizeHeight
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
s-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
6
;
}
if
(
this
.
flag
&&
this
.
optype
==
6
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
y2
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
;
}
}
resizeLT
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
se-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
7
;
}
if
(
this
.
flag
&&
this
.
optype
==
7
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x1
=
this
.
endX
;
this
.
currentR
.
y1
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
;
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
;
}
}
resizeWH
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
se-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
8
;
}
if
(
this
.
flag
&&
this
.
optype
==
8
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x2
=
this
.
endX
;
this
.
currentR
.
y2
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
;
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
;
}
}
resizeLH
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
ne-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
9
;
}
if
(
this
.
flag
&&
this
.
optype
==
9
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x1
=
this
.
endX
;
this
.
currentR
.
y2
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
;
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
;
}
}
resizeWT
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
ne-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
10
;
}
if
(
this
.
flag
&&
this
.
optype
==
10
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x2
=
this
.
endX
;
this
.
currentR
.
y1
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
}
}
reshow
(
x
,
y
,
changesmall
)
{
let
allNotIn
=
1
;
let
item
=
this
.
layers
[
0
];
this
.
ctx
.
beginPath
();
console
.
log
(
item
.
x1
);
this
.
ctx
.
rect
(
item
.
x1
,
item
.
y1
,
item
.
width
,
item
.
height
);
this
.
ctx
.
strokeStyle
=
item
.
strokeStyle
;
if
(
this
.
ctx
.
isPointInPath
(
x
*
this
.
scale
,
y
*
this
.
scale
))
{
this
.
render
(
item
);
allNotIn
=
0
;
}
this
.
ctx
.
stroke
();
if
(
this
.
flag
&&
allNotIn
&&
this
.
optype
<
3
)
{
this
.
optype
=
1
;
}
}
render
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
move
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
2
;
}
if
(
this
.
flag
&&
this
.
optype
==
2
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x2
+=
this
.
endX
-
this
.
leftDistance
-
this
.
currentR
.
x1
;
this
.
currentR
.
x1
+=
this
.
endX
-
this
.
leftDistance
-
this
.
currentR
.
x1
;
this
.
currentR
.
y2
+=
this
.
endY
-
this
.
topDistance
-
this
.
currentR
.
y1
;
this
.
currentR
.
y1
+=
this
.
endY
-
this
.
topDistance
-
this
.
currentR
.
y1
;
}
}
isPointInRetc
(
x
,
y
)
{
let
len
=
this
.
layers
.
length
;
for
(
let
i
=
0
;
i
<
len
;
i
++
)
{
if
(
this
.
layers
[
i
].
x1
<
x
&&
x
<
this
.
layers
[
i
].
x2
&&
this
.
layers
[
i
].
y1
<
y
&&
y
<
this
.
layers
[
i
].
y2
)
{
return
this
.
layers
[
i
];
}
}
}
fixPosition
(
position
)
{
if
(
position
.
x1
>
position
.
x2
)
{
let
x
=
position
.
x1
;
position
.
x1
=
position
.
x2
;
position
.
x2
=
x
;
}
if
(
position
.
y1
>
position
.
y2
)
{
let
y
=
position
.
y1
;
position
.
y1
=
position
.
y2
;
position
.
y2
=
y
;
}
position
.
width
=
position
.
x2
-
position
.
x1
position
.
height
=
position
.
y2
-
position
.
y1
return
position
}
mousedown
(
e
)
{
if
(
$
(
"
#changewidthnot
"
).
val
()
==
"
1
"
)
{
this
.
startX
=
(
e
.
pageX
-
this
.
canvas
.
offsetLeft
)
/
this
.
scale
;
this
.
startY
=
(
e
.
pageY
-
this
.
canvas
.
offsetTop
)
/
this
.
scale
;
this
.
currentR
=
this
.
isPointInRetc
(
this
.
startX
,
this
.
startY
);
if
(
this
.
currentR
)
{
this
.
leftDistance
=
this
.
startX
-
this
.
currentR
.
x1
;
this
.
topDistance
=
this
.
startY
-
this
.
currentR
.
y1
;
}
this
.
ctx
.
strokeRect
(
this
.
endX
,
this
.
endY
,
0
,
0
);
this
.
ctx
.
strokeStyle
=
this
.
config
.
dashedColor
;
this
.
flag
=
1
;
}
}
mousemove
(
e
)
{
if
(
$
(
"
#changewidthnot
"
).
val
()
==
"
1
"
)
{
this
.
endX
=
(
e
.
pageX
-
this
.
canvas
.
offsetLeft
)
/
this
.
scale
;
this
.
endY
=
(
e
.
pageY
-
this
.
canvas
.
offsetTop
)
/
this
.
scale
;
// console.log(`mousemove`, this.endX, this.endY);
this
.
ctx
.
save
();
this
.
ctx
.
setLineDash
([
5
])
this
.
canvas
.
style
.
cursor
=
"
crosshair
"
;
this
.
ctx
.
clearRect
(
0
,
0
,
this
.
config
.
width
,
this
.
config
.
height
);
if
(
this
.
flag
&&
this
.
optype
==
1
)
{
this
.
ctx
.
strokeRect
(
this
.
startX
,
this
.
startY
,
this
.
endX
-
this
.
startX
,
this
.
endY
-
this
.
startY
);
}
this
.
ctx
.
restore
();
this
.
reshow
(
this
.
endX
,
this
.
endY
,
"
1
"
);
}
}
mouseup
(
e
)
{
if
(
$
(
"
#changewidthnot
"
).
val
()
==
"
1
"
)
{
if
(
this
.
optype
==
1
)
{
this
.
layers
.
splice
(
0
,
1
,
this
.
fixPosition
({
x1
:
this
.
startX
,
y1
:
this
.
startY
,
x2
:
this
.
endX
,
y2
:
this
.
endY
,
strokeStyle
:
this
.
config
.
solidColor
,
type
:
this
.
type
}))
var
ratew
=
this
.
config
.
width
/
this
.
canvas
.
width
;
var
rateh
=
this
.
config
.
height
/
this
.
canvas
.
height
;
this
.
layers
.
splice
(
1
,
1
,
this
.
fixPosition
({
x1
:
Math
.
ceil
(
this
.
startX
*
ratew
),
y1
:
Math
.
ceil
(
this
.
startY
*
rateh
),
x2
:
Math
.
ceil
(
this
.
endX
*
ratew
),
y2
:
Math
.
ceil
(
this
.
endY
*
rateh
),
strokeStyle
:
this
.
config
.
solidColor
,
type
:
this
.
type
}));
}
else
if
(
this
.
optype
>=
3
)
{
this
.
fixPosition
(
this
.
currentR
);
}
this
.
currentR
=
null
;
this
.
flag
=
0
;
this
.
reshow
(
this
.
endX
,
this
.
endY
);
this
.
optype
=
0
;
}
}
}
const
draw
=
new
DrawRectangle
(
'
draw-canvas
'
,
{
src
:
$
(
"
#imgsrc
"
).
val
(),
layers
:[{},
{
"
x1
"
:
null
,
"
y1
"
:
null
,
"
x2
"
:
null
,
"
y2
"
:
null
,
"
width
"
:
null
,
"
height
"
:
null
,
"
strokeStyle
"
:
"
red
"
,
"
type
"
:
0
}
]
});
$
(
function
()
{
$
(
"
#getrtsp
"
).
on
(
'
click
'
,
function
(
e
)
{
$
.
ajax
({
url
:
"
/ai/getRtsp
"
,
dataType
:
"
json
"
,
type
:
"
post
"
,
contentType
:
'
application/json
'
,
data
:
JSON
.
stringify
({
data
:
$
(
"
#videoid
"
).
val
()}),
success
:
function
(
result
)
{
if
(
result
.
code
==
200
)
{
if
(
result
.
message
.
indexOf
(
"
,
"
)
>
-
1
)
{
$
(
"
#executeparamter
"
).
val
(
$
(
"
#taskno
"
).
val
());
$
(
"
#rtsp
"
).
val
(
result
.
message
.
split
(
"
,
"
)[
1
]);
$
(
"
#imgsrc
"
).
val
(
result
.
message
.
split
(
"
,
"
)[
0
]);
draw
.
src
=
result
.
message
.
split
(
"
,
"
)[
0
];
draw
.
setImageBackground
(
"
/api/alg/files?location=
"
+
result
.
message
.
split
(
"
,
"
)[
0
]);
//draw.init();
}
}
else
{
alert
(
"
超时!
"
);
}
}
});
});
$
(
"
#getwidth
"
).
on
(
'
click
'
,
function
(
e
)
{
if
(
$
(
"
#changewidthnot
"
).
val
()
==
"
1
"
)
{
$
(
"
#changewidthnot
"
).
val
(
"
0
"
);
//$("#draw-canvas").style.cursor = "hand";
}
else
{
$
(
"
#changewidthnot
"
).
val
(
"
1
"
);
// $("#draw-canvas").style.cursor = "crosshair";
}
});
$
(
"
#savetask
"
).
on
(
'
click
'
,
function
(
e
)
{
var
taskno
=
$
(
"
#taskno
"
).
val
();
if
(
null
==
taskno
||
""
==
taskno
)
{
alert
(
"
请输入任务编号!
"
);
return
;
}
var
taskname
=
$
(
"
#taskname
"
).
val
();
var
schedulerrule
=
$
(
"
#schedulerrule
"
).
val
();
if
(
null
==
schedulerrule
||
""
==
schedulerrule
)
{
alert
(
"
请输入间隔时间!
"
);
return
;
}
var
frozenstatus
=
$
(
"
#frozenstatus
"
).
val
();
var
executorno
=
$
(
"
#executorno
"
).
val
();
var
sendtype
=
$
(
"
#sendtype
"
).
val
();
var
videoid
=
$
(
"
#videoid
"
).
val
()
if
(
null
==
videoid
||
""
==
videoid
)
{
alert
(
"
请输入监控id!
"
);
return
;
}
var
url
=
$
(
"
#url
"
).
val
();
var
executeparamter
=
$
(
"
#executeparamter
"
).
val
();
if
(
null
==
executeparamter
||
""
==
executeparamter
)
{
alert
(
"
请输入执行参数!
"
);
return
;
}
var
timekey
=
$
(
"
#timekey
"
).
val
();
object
=
draw
.
layers
[
1
];
if
(
null
==
object
.
x1
||
null
==
object
.
x2
||
null
==
object
.
width
||
null
==
object
.
height
)
{
alert
(
"
请确定图片检测范围!
"
);
return
;
}
$
.
ajax
({
url
:
"
/ai/add/task
"
,
dataType
:
"
json
"
,
type
:
"
POST
"
,
data
:
{
"
taskno
"
:
taskno
,
"
taskname
"
:
taskname
,
"
schedulerrule
"
:
schedulerrule
,
"
frozenstatus
"
:
frozenstatus
,
"
executorno
"
:
executorno
,
"
sendtype
"
:
sendtype
,
"
url
"
:
url
,
"
executeparamter
"
:
executeparamter
,
"
timekey
"
:
timekey
,
"
objectx
"
:
object
.
x1
,
"
objecty
"
:
object
.
y1
,
"
objectw
"
:
object
.
width
,
"
objecth
"
:
object
.
height
,
"
recordtype
"
:
$
(
"
#recordtype
"
).
val
(),
"
metatype
"
:
$
(
"
#metatype
"
).
val
(),
"
rtsp
"
:
$
(
"
#rtsp
"
).
val
(),
"
imgsrc
"
:
$
(
"
#imgsrc
"
).
val
(),
"
videoid
"
:
videoid
},
success
:
function
(
result
)
{
if
(
result
.
code
==
200
)
{
alert
(
"
添加成功!
"
);
location
.
href
=
"
/
"
;
}
else
if
(
result
.
code
==
1001
)
{
alert
(
"
该任务编号已经存在
"
);
}
else
{
alert
(
"
system error
"
);
}
}
})
});
});
</script>
</body>
</html>
src/main/resources/templates/addtask2.html
deleted
100644 → 0
View file @
19a2655c
<!DOCTYPE html>
<html
xmlns:th=
"http://www.thymeleaf.org"
>
<head>
<meta
charset=
"UTF-8"
>
<title>
定时任务新增页面
</title>
<!-- jquery -->
<script
type=
"text/javascript"
th:src=
"@{/js/jquery.min.js}"
></script>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/animate.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/bootstrap.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/font-awesome.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/mediaelementplayer.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/red.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/simple-line-icons.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/style.css}"
/>
</head>
<body>
<div
class=
"col-md-12 top-20 padding-0"
>
<div
class=
"col-md-12"
>
<div
class=
"panel"
>
<div
class=
"panel-body"
>
<div
class=
"panel-heading"
>
<h4>
新增定时任务项
</h4>
</div>
<div
class=
"col-md-6"
style=
"padding-left:10px;"
>
<form
action=
"#"
method=
"post"
>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
任务编号:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
name=
"taskno"
id=
"taskno"
class=
"form-control"
>
</div>
</div>
<br/>
<br/>
<br/>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
任务名称:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
name=
"taskname"
id=
"taskname"
class=
"form-control"
></div>
</div>
<br/>
<br/>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
定时配置规则:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
placeholder=
"(例如: * /5 * * * * ? 每5秒执行一次)"
name=
"schedulerrule"
id=
"schedulerrule"
class=
"form-control"
>
</div>
</div>
<br/>
<br/>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
冻结状态:
</label>
<div
class=
"col-sm-10"
>
<select
class=
"form-control"
id=
"frozenstatus"
>
<option
th:value=
"FROZEN"
selected=
"selected"
disabled=
"disabled"
>
冻结
</option>
</select>
</div>
</div>
<br/>
<br/>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
执行方:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
name=
"executorno"
id=
"executorno"
class=
"form-control"
></div>
</div>
<br/>
<br/>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
执行方式:
</label>
<div
class=
"col-sm-10"
>
<select
class=
"form-control"
id=
"sendtype"
>
<option
th:value=
"http"
>
http
</option>
<option
th:value=
"kafka"
>
kafka
</option>
</select>
</div>
</div>
<br/>
<br/>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
url:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
name=
"url"
id=
"url"
class=
"form-control"
></div>
</div>
<br/>
<br/>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
执行参数:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
name=
"executeparamter"
id=
"executeparamter"
class=
"form-control"
></div>
</div>
<br/><br/>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
timeKey:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
placeholder=
"(例如: yyyy-MM-dd HH:mm:ss)"
name=
"timekey"
id=
"timekey"
class=
"form-control"
></div>
</div>
<br/>
<br/><br/>
<input
type=
"button"
class=
"btn btn-3d btn-danger"
th:onclick=
"'history.go(-1);'"
align=
"left"
style=
"float:left;margin-left:700px;"
value=
"关闭"
/>
<input
type=
"button"
class=
"btn btn-3d btn-success"
id=
"savetask"
align=
"right"
value=
"保存"
/>
</form>
</div>
</div>
</div>
</div>
</div>
<script
type=
"text/javascript"
th:inline=
"javascript"
>
$
(
function
()
{
$
(
"
#savetask
"
).
on
(
'
click
'
,
function
(
e
)
{
var
taskno
=
$
(
"
#taskno
"
).
val
();
var
taskname
=
$
(
"
#taskname
"
).
val
();
var
schedulerrule
=
$
(
"
#schedulerrule
"
).
val
();
var
frozenstatus
=
$
(
"
#frozenstatus
"
).
val
();
var
executorno
=
$
(
"
#executorno
"
).
val
();
var
sendtype
=
$
(
"
#sendtype
"
).
val
();
var
url
=
$
(
"
#url
"
).
val
();
var
executeparamter
=
$
(
"
#executeparamter
"
).
val
();
var
timekey
=
$
(
"
#timekey
"
).
val
();
$
.
ajax
({
url
:
"
/ai/add/task
"
,
dataType
:
"
json
"
,
type
:
"
POST
"
,
data
:
{
"
taskno
"
:
taskno
,
"
taskname
"
:
taskname
,
"
schedulerrule
"
:
schedulerrule
,
"
frozenstatus
"
:
frozenstatus
,
"
executorno
"
:
executorno
,
"
sendtype
"
:
sendtype
,
"
url
"
:
url
,
"
executeparamter
"
:
executeparamter
,
"
timekey
"
:
timekey
},
success
:
function
(
result
)
{
if
(
result
.
code
==
200
)
{
alert
(
"
添加成功!
"
);
location
.
href
=
"
/
"
;
}
else
if
(
result
.
code
==
1001
)
{
alert
(
"
该任务编号已经存在
"
);
}
else
{
alert
(
"
system error
"
);
}
}
})
});
});
</script>
</body>
</html>
src/main/resources/templates/index.html
deleted
100644 → 0
View file @
19a2655c
<!DOCTYPE html>
<html
xmlns:th=
"http://www.thymeleaf.org"
>
<head>
<meta
charset=
"UTF-8"
>
<title>
定时任务后台管理页面
</title>
<!-- jquery -->
<script
type=
"text/javascript"
th:src=
"@{/js/jquery.min.js}"
></script>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/animate.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/bootstrap.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/font-awesome.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/mediaelementplayer.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/red.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/simple-line-icons.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/style.css}"
/>
</head>
<body>
<div
class=
"col-md-12 top-20 padding-0"
>
<div
class=
"col-md-12"
>
<div
class=
"panel"
>
<div
class=
"panel-body"
>
<div
class=
"col-md-12 padding-0"
style=
"padding-bottom:20px;"
>
<h2>
定时任务列表
</h2>
<hr/>
<div
class=
"col-md-6"
style=
"padding-left:10px;"
>
<form
action=
"import"
method=
"post"
>
<input
type=
"button"
class=
"btn btn-3d btn-success"
style=
"box-shadow:none;background-color: #73B18D !important;width:70px"
onclick=
"addNewTask()"
value=
"新增定时任务"
/>
</form>
</div>
<div
class=
"col-md-6"
>
<div
class=
"col-lg-12"
>
<div
class=
"input-group"
>
<input
type=
"input"
class=
"form-control"
aria-label=
"..."
id=
"name"
/>
<div
class=
"input-group-btn"
>
<input
type=
"button"
id=
"search"
onclick=
"dosearch()"
class=
"btn btn-3d btn-success"
style=
"box-shadow:none;background-color: #73B18D !important;width:70px;margin-left: 19px;"
value=
"search"
/>
</div>
</div>
</div>
</div>
</div>
<div
class=
"responsive-table"
>
<table
class=
"table table-striped table-bordered"
width=
"100%"
cellspacing=
"0"
style=
"text-align:center;vertical-align:middle;"
>
<thead>
<tr>
<th
style=
"text-align:center;vertical-align:middle;"
>
任务编号
</th>
<th
style=
"text-align:center;vertical-align:middle;"
>
任务名称
</th>
<th
style=
"text-align:center;vertical-align:middle;"
>
间隔时间(秒)
</th>
<th
style=
"text-align:center;vertical-align:middle;"
>
冻结状态
</th>
<th
style=
"text-align:center;vertical-align:middle;"
>
执行参数
</th>
<th
style=
"text-align:center;vertical-align:middle;"
>
创建时间
</th>
<th
style=
"text-align:center;vertical-align:middle;"
>
最后修改时间
</th>
<th
style=
"text-align:center;vertical-align:middle;"
>
操作
</th>
</tr>
</thead>
<tbody>
<tr
th:each=
"task:${taskList}"
>
<td>
<a
th:href=
"@{'/quartz/taskrecords?taskno='+${task.taskno}}"
th:text=
"${task.taskno}"
></a>
</td>
<td
th:text=
"${task.taskname}"
/>
<td
th:text=
"${task.schedulerrule}"
/>
<td>
<span
th:if=
"${task.frozenstatus eq 'UNFROZEN'}"
>
未冻结
</span>
<span
th:if=
"${task.frozenstatus eq 'FROZEN'}"
style=
"color:red;"
>
已冻结
</span>
</td>
<td
th:text=
"${task.executeparamter}"
/>
<td
th:text=
"${#dates.format(task.createtime,'yyyy-MM-dd HH:mm:ss')}"
/>
<td
th:text=
"${#dates.format(task.lastmodifytime,'yyyy-MM-dd HH:mm:ss')}"
/>
<td>
<span
th:if=
"${task.frozenstatus eq 'UNFROZEN'}"
>
<input
type=
"button"
class=
"btn btn-3d btn-danger"
value=
"暂停"
style=
"box-shadow:none;background-color: #f26c4f !important;width:70px"
th:onclick=
"'javascript:startOrStop('+${task.taskno}+')'"
/>
</span>
<span
th:if=
"${task.frozenstatus eq 'FROZEN'}"
>
<input
type=
"button"
class=
"btn btn-3d btn-success"
value=
"启动"
style=
"box-shadow:none;background-color: #73B18D !important;width:70px"
th:onclick=
"'javascript:startOrStop('+${task.taskno}+')'"
/>
</span>
<input
type=
"button"
class=
"btn btn-3d btn-success"
style=
"box-shadow:none;background-color: #73B18D !important;width:70px"
th:onclick=
"'javascript:runRightNow('+${task.taskno}+')'"
value=
"立刻运行一次"
/>
<input
type=
"button"
class=
"btn btn-3d btn-success"
style=
"box-shadow:none;background-color: #73B18D !important;width:70px"
th:onclick=
"'javascript:editpage('+${task.id}+')'"
value=
"修改"
/>
</td>
</tr>
</tbody>
</table>
</div>
<div
class=
"col-md-6"
style=
"padding-top:20px;"
>
总共
<span
style=
"color: red;"
th:text=
"${size}"
/>
条记录
</div>
<div
class=
"col-md-6"
>
<ul
class=
"pagination pull-right"
>
<li>
<a
href=
"#"
aria-label=
"Previous"
>
<span
aria-hidden=
"true"
>
上一页
</span>
</a>
</li>
<li
class=
"active"
>
<a
href=
"#"
>
1
</a>
</li>
<li>
<a
href=
"#"
>
2
</a>
</li>
<li>
<a
href=
"#"
>
3
</a>
</li>
<li>
<a
href=
"#"
>
4
</a>
</li>
<li>
<a
href=
"#"
>
5
</a>
</li>
<li>
<a
href=
"#"
aria-label=
"Next"
>
<span
aria-hidden=
"true"
>
下一页
</span>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<script
type=
"text/javascript"
th:inline=
"javascript"
>
function
editpage
(
id
)
{
window
.
open
(
"
/ai/edit/taskpage?id=
"
+
id
);
}
function
addNewTask
()
{
window
.
open
(
"
/ai/add/taskpage/
"
);
}
function
startOrStop
(
taskNo
)
{
$
.
ajax
({
url
:
"
/ai/list/optionjob?taskNo=
"
+
taskNo
,
type
:
"
GET
"
,
dataType
:
"
json
"
,
success
:
function
(
result
)
{
if
(
result
.
code
==
200
)
{
alert
(
"
success!
"
);
location
.
href
=
"
/
"
;
}
else
if
(
result
.
code
==
6001
)
{
alert
(
"
任务编号为空!
"
);
}
else
if
(
result
.
code
==
1003
)
{
alert
(
"
无此定时任务!
"
);
}
else
{
alert
(
"
system error!
"
);
}
}
});
};
function
runRightNow
(
taskNo
)
{
$
.
ajax
({
url
:
"
/ai/runtask/rightnow?taskno=
"
+
taskNo
,
type
:
"
GET
"
,
dataType
:
"
json
"
,
success
:
function
(
result
)
{
if
(
result
.
code
==
200
)
{
alert
(
"
运行成功!
"
);
}
else
if
(
result
.
code
==
6001
)
{
alert
(
"
任务编号不能为空!
"
);
}
else
if
(
result
.
code
==
1003
)
{
alert
(
"
无此定时任务!
"
);
}
else
{
alert
(
"
执行失败!
"
);
}
}
});
}
function
dosearch
(){
$
.
ajax
({
url
:
"
/ai/list/optionjob?taskNo=
"
+
taskNo
,
type
:
"
GET
"
,
dataType
:
"
json
"
,
success
:
function
(
result
)
{
if
(
result
.
code
==
200
)
{
alert
(
"
success!
"
);
location
.
href
=
"
/
"
;
}
else
if
(
result
.
code
==
6001
)
{
alert
(
"
任务编号为空!
"
);
}
else
if
(
result
.
code
==
1003
)
{
alert
(
"
无此定时任务!
"
);
}
else
{
alert
(
"
system error!
"
);
}
}
});
}
</script>
</body>
</html>
src/main/resources/templates/login.html
deleted
100644 → 0
View file @
19a2655c
<!DOCTYPE html>
<html
xmlns:th=
"http://www.thymeleaf.org"
>
<head>
<meta
charset=
"UTF-8"
>
<title>
电影资源后台管理
</title>
<!-- jquery -->
<script
type=
"text/javascript"
th:src=
"@{/js/jquery.min.js}"
></script>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/animate.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/bootstrap.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/font-awesome.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/mediaelementplayer.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/red.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/simple-line-icons.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/style.css}"
/>
</head><body
id=
"mimin"
class=
"dashboard form-signin-wrapper"
>
<div
class=
"container"
>
<form
class=
"form-signin"
action=
"/index"
>
<div
class=
"panel periodic-login"
>
<span
class=
"atomic-number"
>
28
</span>
<div
class=
"panel-body text-center"
>
<h1
class=
"atomic-symbol"
>
Mi
</h1>
<p
class=
"atomic-mass"
>
14.072110
</p>
<p
class=
"element-name"
>
Miminium
</p>
<i
class=
"icons icon-arrow-down"
></i>
<div
class=
"form-group form-animate-text"
style=
"margin-top:40px !important;"
>
<input
type=
"text"
class=
"form-text"
required
>
<span
class=
"bar"
></span>
<label>
Username
</label>
</div>
<div
class=
"form-group form-animate-text"
style=
"margin-top:40px !important;"
>
<input
type=
"password"
class=
"form-text"
required
>
<span
class=
"bar"
></span>
<label>
Password
</label>
</div>
<label
class=
"pull-left"
>
<input
type=
"checkbox"
class=
"icheck pull-left"
name=
"checkbox1"
/>
Remember me
</label>
<input
type=
"submit"
class=
"btn col-md-12"
value=
"SignIn"
/>
</div>
<div
class=
"text-center"
style=
"padding:5px;"
>
<a
href=
"forgotpass.html"
>
Forgot Password
</a>
<a
href=
"reg.html"
>
| Signup
</a>
</div>
</div>
</form>
</div>
<!-- end: Content -->
<!-- start: Javascript -->
<script
src=
"asset/js/jquery.min.js"
></script>
<script
src=
"asset/js/jquery.ui.min.js"
></script>
<script
src=
"asset/js/bootstrap.min.js"
></script>
<script
src=
"asset/js/plugins/moment.min.js"
></script>
<script
src=
"asset/js/plugins/icheck.min.js"
></script>
<!-- custom -->
<script
src=
"asset/js/main.js"
></script>
<script
type=
"text/javascript"
>
$
(
document
).
ready
(
function
(){
$
(
'
input
'
).
iCheck
({
checkboxClass
:
'
icheckbox_flat-aero
'
,
radioClass
:
'
iradio_flat-aero
'
});
});
</script>
<!-- end: Javascript -->
</body>
</html>
src/main/resources/templates/taskerrors.html
deleted
100644 → 0
View file @
19a2655c
<!DOCTYPE html>
<html
xmlns:th=
"http://www.thymeleaf.org"
>
<head>
<meta
charset=
"UTF-8"
>
<title>
定时任务错误详情页面
</title>
<!-- jquery -->
<script
type=
"text/javascript"
th:src=
"@{/js/jquery.min.js}"
></script>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/animate.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/bootstrap.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/font-awesome.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/mediaelementplayer.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/red.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/simple-line-icons.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/style.css}"
/>
</head>
<body>
<div
class=
"col-md-12 top-20 padding-0"
>
<div
class=
"col-md-12"
>
<div
class=
"panel"
>
<div
class=
"panel-body"
>
<div
class=
"col-md-12 padding-0"
style=
"padding-bottom:20px;"
>
<h2>
定时任务错误详情
</h2>
<hr/>
</div>
<div
class=
"responsive-table"
>
<table
class=
"table table-striped table-bordered"
width=
"100%"
cellspacing=
"0"
style=
"text-align:center;vertical-align:middle;font-size: 16px;"
>
<tr>
<td
style=
"text-align:center;vertical-align:middle;"
>
errorKey
</td>
<td
style=
"text-align:left;vertical-align:middle;"
th:text=
"${taskErrors.errorkey}"
/>
</tr>
<tr>
<td
style=
"text-align:center;vertical-align:middle;"
>
errorValue
</td>
<td
style=
"color: red;text-align:left;vertical-align:middle;"
th:text=
"${taskErrors.errorvalue}"
/>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
<script
type=
"text/javascript"
th:inline=
"javascript"
>
function
editpage
(
id
)
{
location
.
href
=
"
/ai/edit/taskpage?id=
"
+
id
;
}
function
addNewTask
()
{
location
.
href
=
"
/ai/add/taskpage/
"
;
}
function
startOrStop
(
taskNo
)
{
$
.
ajax
({
url
:
"
/ai/list/optionjob?taskNo=
"
+
taskNo
,
type
:
"
GET
"
,
dataType
:
"
json
"
,
success
:
function
(
result
)
{
if
(
result
.
code
==
200
)
{
alert
(
"
success!
"
);
location
.
href
=
"
/
"
;
}
else
if
(
result
.
code
==
6001
)
{
alert
(
"
任务编号为空!
"
);
}
else
if
(
result
.
code
==
1003
)
{
alert
(
"
无此定时任务!
"
);
}
else
{
alert
(
"
system error!
"
);
}
}
});
};
function
runRightNow
(
taskNo
)
{
$
.
ajax
({
url
:
"
/ai/runtask/rightnow?taskno=
"
+
taskNo
,
type
:
"
GET
"
,
dataType
:
"
json
"
,
success
:
function
(
result
)
{
if
(
result
.
code
==
200
)
{
alert
(
"
运行成功!
"
);
}
else
if
(
result
.
code
==
6001
)
{
alert
(
"
任务编号不能为空!
"
);
}
else
if
(
result
.
code
==
1003
)
{
alert
(
"
无此定时任务!
"
);
}
else
{
alert
(
"
执行失败!
"
);
}
}
});
}
</script>
</body>
</html>
src/main/resources/templates/taskrecords.html
deleted
100644 → 0
View file @
19a2655c
<!DOCTYPE html>
<html
xmlns:th=
"http://www.thymeleaf.org"
>
<head>
<meta
charset=
"UTF-8"
>
<title>
定时任务执行详情页面
</title>
<!-- jquery -->
<script
type=
"text/javascript"
th:src=
"@{/js/jquery.min.js}"
></script>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/animate.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/bootstrap.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/font-awesome.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/mediaelementplayer.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/red.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/simple-line-icons.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/style.css}"
/>
</head>
<body>
<div
class=
"col-md-12 top-20 padding-0"
>
<div
class=
"col-md-12"
>
<div
class=
"panel"
>
<div
class=
"panel-body"
>
<h2>
定时任务执行情况
</h2>
<hr/>
<div
class=
"responsive-table"
>
<table
class=
"table table-striped table-bordered"
width=
"100%"
cellspacing=
"0"
style=
"text-align:center;vertical-align:middle;"
>
<thead>
<tr>
<th
style=
"text-align:center;vertical-align:middle;"
>
任务编号
</th>
<th
style=
"text-align:center;vertical-align:middle;"
>
时间参数
</th>
<th
style=
"text-align:center;vertical-align:middle;"
>
执行时间
</th>
<th
style=
"text-align:center;vertical-align:middle;"
>
执行时长(毫秒)
</th>
<th
style=
"text-align:center;vertical-align:middle;"
>
执行状态
</th>
<th
style=
"text-align:center;vertical-align:middle;"
>
失败数
</th>
<th
style=
"text-align:center;vertical-align:middle;"
>
操作
</th>
</tr>
</thead>
<tbody>
<tr
th:each=
"task:${quartzTaskRecords}"
>
<td
th:text=
"${task.taskno}"
/>
<td
th:text=
"${task.timekeyvalue}"
/>
<td
th:text=
"${#dates.format(task.executetime,'yyyy-MM-dd HH:mm:ss')}"
/>
<td
th:text=
"${task.time}"
/>
<td>
<span
th:if=
"${task.taskstatus eq 'SUCCESS'}"
style=
"color:lawngreen"
>
成功
</span>
<span
th:if=
"${task.taskstatus eq 'INIT'}"
>
初始化
</span>
<span
th:if=
"${task.taskstatus eq 'FAIL'}"
style=
"color:red;"
>
失败
</span>
</td>
<td
th:text=
"${task.failcount}"
/>
<td
>
<span
th:if=
"${task.taskstatus eq 'FAIL'} or ${task.taskstatus eq 'INIT'}"
>
<input
type=
"button"
class=
"btn btn-3d btn-danger"
th:onclick=
"'javascript:detailTaskErrors('+${task.id}+')'"
value=
"查看"
/>
</span>
</td>
</tr>
</tbody>
</table>
</div>
<div
class=
"col-md-6"
style=
"padding-top:20px;"
>
showing
<span
style=
"color: red;"
th:text=
"${size}"
/>
items
</div>
</div>
</div>
</div>
</div>
<script
type=
"text/javascript"
th:inline=
"javascript"
>
function
detailTaskErrors
(
recordId
)
{
location
.
href
=
"
/ai/task/errors?recordid=
"
+
recordId
;
}
</script>
</body>
</html>
src/main/resources/templates/updatetask.html
deleted
100644 → 0
View file @
19a2655c
<!DOCTYPE html>
<html
xmlns:th=
"http://www.thymeleaf.org"
>
<head>
<meta
charset=
"UTF-8"
>
<title>
定时任务修改
</title>
<script
type=
"text/javascript"
th:src=
"@{/js/jquery.min.js}"
></script>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/animate.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/bootstrap.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/font-awesome.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/mediaelementplayer.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/red.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/simple-line-icons.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/style.css}"
/>
<style
type=
"text/css"
>
.col-sm-10
{
margin-bottom
:
10px
}
</style>
</head>
<body>
<div
class=
"col-md-12 top-20 padding-0"
>
<div
class=
"col-md-12"
>
<div
class=
"panel"
>
<div
class=
"panel-body"
>
<div
class=
"panel-heading"
>
<h4>
修改定时任务项
</h4>
</div>
<div
class=
"col-md-6"
style=
"padding-left:10px;"
>
<form
action=
"/ai/edit/task"
method=
"post"
>
<input
type=
"hidden"
th:value=
"${taskInformation.id}"
name=
"id"
id=
"id"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.version}"
name=
"version"
id=
"version"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.createtime}"
name=
"createtime"
id=
"createtime"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.lastmodifytime}"
name=
"lastmodifytime"
id=
"lastmodifytime"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.frozentime}"
name=
"frozentime"
id=
"frozentime"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.unfrozentime}"
name=
"unfrozentime"
id=
"unfrozentime"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.objectx}"
name=
"objectx"
id=
"objectx"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.objecty}"
name=
"objecty"
id=
"objecty"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.objectw}"
name=
"objectw"
id=
"objectw"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.objecth}"
name=
"objecth"
id=
"objecth"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.imgsrc}"
name=
"imgsrc"
id=
"imgsrc"
/>
<input
type=
"hidden"
value=
"false"
name=
"changewidthnot"
id=
"changewidthnot"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.rtsp}"
name=
"rtsp"
id=
"rtsp"
/>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
任务编号:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
th:value=
"${taskInformation.taskno}"
name=
"taskno"
id=
"taskno"
class=
"form-control"
>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
任务描述:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
th:value=
"${taskInformation.taskname}"
name=
"taskname"
id=
"taskname"
class=
"form-control"
></div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
间隔时间(秒):
</label>
<div
class=
"col-sm-10"
>
<input
type=
"number"
min=
"1"
max=
"59"
step=
"1"
placeholder=
"间隔时间"
name=
"schedulerrule"
th:value=
"${taskInformation.schedulerrule}"
id=
"schedulerrule"
class=
"form-control"
>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
冻结状态:
</label>
<div
class=
"col-sm-10"
>
<select
class=
"form-control"
id=
"frozenstatus"
>
<option
th:value=
"FROZEN"
th:selected=
"${taskInformation.frozenstatus == 'FROZEN'}"
>
冻结
</option>
<option
th:value=
"UNFROZEN"
th:selected=
"${taskInformation.frozenstatus == 'UNFROZEN'}"
>
解冻
</option>
</select>
</div>
</div>
<!--<td>-->
<!--<div class="form-group"><label-->
<!--class="col-sm-2 control-label text-right">执行方:</label>-->
<!--<div class="col-sm-10"><input type="text"-->
<!--th:value="${taskInformation.executorno}"-->
<!--name="executorno" id="executorno"-->
<!--class="form-control"></div>-->
<!--</div>-->
<!--</td>-->
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
执行方式:
</label>
<div
class=
"col-sm-10"
>
<select
class=
"form-control"
id=
"sendtype"
>
<option
th:value=
"http"
th:selected=
"${taskInformation.sendtype == 'http'}"
>
http
</option>
<option
th:value=
"kafka"
th:selected=
"${taskInformation.sendtype == 'kafka'}"
>
kafka
</option>
</select>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
监控id:
</label>
</div>
<div
class=
"form-group"
>
<div
class=
"col-sm-10"
>
<input
type=
"text"
name=
"videoid"
th:value=
"${taskInformation.videoid}"
id=
"videoid"
class=
"form-control"
style=
"width:65%;float: left"
>
<a
id=
"getrtsp"
href=
" javascript:void(0)"
style=
"float: left;padding-left: 12px;padding-top: 10px;"
>
获得监控图片
</a>
<a
id=
"getwidth"
href=
" javascript:void(0)"
style=
"float: left;padding-left: 12px;padding-top: 10px;"
>
编辑监控范围
</a>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
事件类型:
</label>
<div
class=
"col-sm-10"
>
<select
class=
"form-control"
id=
"metatype"
>
<option
th:value=
"1"
th:selected=
"${taskInformation.metatype == '1'}"
>
全目标
</option>
<option
th:value=
"2"
th:selected=
"${taskInformation.metatype == '2'}"
>
行人、骑行、车辆检测识别
</option>
<option
th:value=
"3"
th:selected=
"${taskInformation.metatype == '3'}"
>
人脸检测识别
</option>
<option
th:value=
"4"
th:selected=
"${taskInformation.metatype == '4'}"
>
单独行人、骑行检测识别
</option>
<option
th:value=
"5"
th:selected=
"${taskInformation.metatype == '5'}"
>
单独车辆检测识别
</option>
<option
th:value=
"6"
th:selected=
"${taskInformation.metatype == '6'}"
>
人脸检测识别(不包含大类检测)
</option>
<option
th:value=
"7"
th:selected=
"${taskInformation.metatype == '7'}"
>
行人、骑行、人脸
</option>
</select>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
告警类型:
</label>
<div
class=
"col-sm-10"
>
<select
class=
"form-control"
id=
"recordtype"
>
<option
th:value=
"1"
th:selected=
"${taskInformation.recordtype == '1'}"
>
周界入侵
</option>
<option
th:value=
"2"
th:selected=
"${taskInformation.recordtype == '2'}"
>
人群密度
</option>
<option
th:value=
"3"
th:selected=
"${taskInformation.recordtype == '3'}"
>
周界越线
</option>
<option
th:value=
"4"
th:selected=
"${taskInformation.recordtype == '4'}"
>
非机动车未戴头盔
</option>
<option
th:value=
"5"
th:selected=
"${taskInformation.recordtype == '5'}"
>
非机动车载人
</option>
<option
th:value=
"6"
th:selected=
"${taskInformation.recordtype == '6'}"
>
结构化统计
</option>
</select>
</div>
</div>
<!--<div class="form-group"><label class="col-sm-2 control-label text-right">人群密度标准:</label>-->
<!--<div class="col-sm-10">-->
<!--<input type="text" th:value="${taskInformation.populationdensity}"-->
<!--name="executorno" id="populationdensity"-->
<!--class="form-control">-->
<!--</div>-->
<!--</div>-->
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
url:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
name=
"url"
th:value=
"${taskInformation.url}"
id=
"url"
class=
"form-control"
></div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
执行参数:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
name=
"executeparamter"
th:value=
"${taskInformation.executeparamter}"
id=
"executeparamter"
class=
"form-control"
>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
timeKey:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
placeholder=
"(例如: yyyy-MM-dd HH:mm:ss)"
name=
"timekey"
th:value=
"${taskInformation.timekey}"
id=
"timekey"
class=
"form-control"
></div>
</div>
<input
type=
"button"
class=
"btn btn-3d btn-warning"
th:onclick=
"'history.go(-1);'"
align=
"left"
style=
"float:left;margin-left:120px;box-shadow:none;background-color: #f26c4f !important;width:70px"
value=
"关闭"
/>
<input
type=
"button"
class=
"btn btn-3d btn-success"
id=
"updatetask"
align=
"right"
style=
"box-shadow:none;background-color: #73B18D !important;width:70px"
value=
"保存"
/>
</form>
</div>
</div>
</div>
</div>
</div>
<canvas
id=
"draw-canvas"
width=
"600"
height=
"400"
style=
"border:1px solid #d3d3d3; position: absolute; left: 50%; top: 100px;}"
>
</canvas>
<script
type=
"text/javascript"
th:inline=
"javascript"
>
class
DrawRectangle
{
constructor
(
id
,
options
)
{
this
.
canvas
=
document
.
getElementById
(
id
);
//canvas标签
this
.
ctx
=
this
.
canvas
.
getContext
(
'
2d
'
);
this
.
currentR
=
null
;
//单前点击的矩形框
this
.
startX
=
0
;
//开始X坐标
this
.
startY
=
0
;
//开始Y坐标
this
.
endX
=
0
;
// 结束X坐标
this
.
endY
=
0
;
// 结束Y坐标
this
.
layers
=
options
&&
options
.
layers
||
[];
//图层
this
.
optype
=
0
;
//op操作类型 0 无操作 1 画矩形框 2 拖动矩形框
this
.
scale
=
1
;
//放大倍数
this
.
scaleStep
=
1.05
;
//
this
.
flag
=
false
;
//是否点击鼠标的标志
this
.
type
=
0
;
//鼠标移动类型
this
.
topDistance
=
0
;
//
this
.
leftDistance
=
0
;
//
this
.
ratew
=
1
;
this
.
rateh
=
1
;
this
.
config
=
{
width
:
600
,
height
:
400
,
dashedColor
:
'
red
'
,
//虚线颜色
solidColor
:
'
red
'
,
//实线颜色
src
:
null
,
//图片的路径
}
if
(
options
)
{
for
(
const
key
in
options
)
{
this
.
config
[
key
]
=
options
[
key
]
}
}
this
.
setImageBackground
(
this
.
config
.
src
);
this
.
canvas
.
onmouseleave
=
()
=>
{
this
.
canvas
.
onmousedown
=
null
;
this
.
canvas
.
onmousemove
=
null
;
this
.
canvas
.
onmouseup
=
null
;
}
this
.
canvas
.
onmouseenter
=
()
=>
{
this
.
canvas
.
onmousedown
=
this
.
mousedown
.
bind
(
this
);
this
.
canvas
.
onmousemove
=
this
.
mousemove
.
bind
(
this
);
document
.
onmouseup
=
this
.
mouseup
.
bind
(
this
);
}
}
init
(
cvw
,
cvh
,
imgw
,
imgh
)
{
var
item
=
this
.
layers
[
1
];
this
.
ratew
=
cvw
/
imgw
;
this
.
rateh
=
cvh
/
imgh
;
this
.
ctx
.
beginPath
();
this
.
startX
=
(
item
.
x1
)
*
this
.
ratew
;
this
.
startY
=
(
item
.
y1
)
*
this
.
rateh
;
this
.
endX
=
(
item
.
x1
)
*
this
.
ratew
+
(
item
.
width
)
*
this
.
ratew
;
this
.
endY
=
(
item
.
y1
)
*
this
.
ratew
+
(
item
.
height
)
*
this
.
rateh
;
this
.
ctx
.
rect
(
this
.
startX
,
this
.
startY
,
(
item
.
width
)
*
this
.
ratew
,
(
item
.
height
)
*
this
.
rateh
);
// this.ctx.rect(item.x1, item.y1, item.width, item.height);
this
.
ctx
.
strokeStyle
=
item
.
strokeStyle
;
this
.
layers
.
splice
(
0
,
1
,
this
.
fixPosition
({
x1
:
Math
.
ceil
(
this
.
startX
),
y1
:
Math
.
ceil
(
this
.
startY
),
x2
:
Math
.
ceil
(
this
.
endX
),
y2
:
Math
.
ceil
(
this
.
endY
),
strokeStyle
:
this
.
config
.
solidColor
,
type
:
this
.
type
}));
console
.
log
(
`item`
,
item
)
this
.
ctx
.
stroke
();
console
.
log
(
`init:`
,
this
.
layers
);
}
//设置图片为canvas的背景
setImageBackground
(
src
)
{
const
img
=
new
Image
();
img
.
src
=
src
;
img
.
onload
=
()
=>
{
let
actImgW
=
img
.
width
,
actImgH
=
img
.
height
,
imgW
=
actImgW
,
imgH
=
actImgH
,
rate
=
1
,
left
=
0
,
top
=
0
,
canvasW
=
600
,
canvasH
=
400
;
//因为canvas画布的宽高固定,所以通过判断图片的宽高来进行缩放处理
if
(
actImgW
>
canvasW
||
actImgH
>
canvasH
)
{
if
(
actImgW
/
actImgH
>=
canvasW
/
canvasH
)
{
imgW
=
canvasW
;
rate
=
actImgW
/
canvasW
;
imgH
=
actImgH
/
rate
;
top
=
(
canvasH
-
imgH
)
/
2
;
}
else
{
imgH
=
canvasH
;
rate
=
actImgH
/
canvasH
;
imgW
=
actImgW
/
rate
;
left
=
(
canvasW
-
imgW
)
/
2
;
}
}
else
{
left
=
(
canvasW
-
imgW
)
/
2
;
top
=
(
canvasH
-
imgH
)
/
2
;
}
//this.ctx.drawImage(img, left, top, imgW, imgH);
//if (img.labelVos)
//drawRect(this.ctx, img, left, top, rate);
const
_this
=
this
;
//img.onload = ()=> {
_this
.
canvas
.
width
=
imgW
;
_this
.
canvas
.
height
=
imgH
;
_this
.
config
.
width
=
actImgW
;
_this
.
config
.
height
=
actImgH
;
_this
.
canvas
.
style
.
backgroundImage
=
"
url(
"
+
img
.
src
+
"
)
"
;
_this
.
canvas
.
style
.
backgroundSize
=
`
${
imgW
}
px
${
imgH
}
px`
;
_this
.
init
(
imgW
,
imgH
,
actImgW
,
actImgH
);
// }
}
}
//左侧拉伸展
resizeLeft
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
w-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
3
;
}
if
(
this
.
flag
&&
this
.
optype
==
3
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x1
=
this
.
endX
;
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
}
}
//上边框拉伸
resizeTop
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
s-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
4
;
}
if
(
this
.
flag
&&
this
.
optype
==
4
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
y1
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
;
}
}
resizeWidth
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
w-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
5
;
}
if
(
this
.
flag
&&
this
.
optype
==
5
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x2
=
this
.
endX
;
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
}
}
resizeHeight
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
s-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
6
;
}
if
(
this
.
flag
&&
this
.
optype
==
6
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
y2
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
;
}
}
resizeLT
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
se-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
7
;
}
if
(
this
.
flag
&&
this
.
optype
==
7
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x1
=
this
.
endX
;
this
.
currentR
.
y1
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
;
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
;
}
}
resizeWH
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
se-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
8
;
}
if
(
this
.
flag
&&
this
.
optype
==
8
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x2
=
this
.
endX
;
this
.
currentR
.
y2
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
;
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
;
}
}
resizeLH
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
ne-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
9
;
}
if
(
this
.
flag
&&
this
.
optype
==
9
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x1
=
this
.
endX
;
this
.
currentR
.
y2
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
;
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
;
}
}
resizeWT
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
ne-resize
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
10
;
}
if
(
this
.
flag
&&
this
.
optype
==
10
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x2
=
this
.
endX
;
this
.
currentR
.
y1
=
this
.
endY
;
this
.
currentR
.
height
=
this
.
currentR
.
y2
-
this
.
currentR
.
y1
this
.
currentR
.
width
=
this
.
currentR
.
x2
-
this
.
currentR
.
x1
}
}
reshow
(
x
,
y
,
changesmall
)
{
let
allNotIn
=
1
;
let
item
=
this
.
layers
[
0
];
this
.
ctx
.
beginPath
();
console
.
log
(
item
.
x1
);
this
.
ctx
.
rect
(
item
.
x1
,
item
.
y1
,
item
.
width
,
item
.
height
);
this
.
ctx
.
strokeStyle
=
item
.
strokeStyle
;
if
(
this
.
ctx
.
isPointInPath
(
x
*
this
.
scale
,
y
*
this
.
scale
))
{
this
.
render
(
item
);
allNotIn
=
0
;
}
this
.
ctx
.
stroke
();
if
(
this
.
flag
&&
allNotIn
&&
this
.
optype
<
3
)
{
this
.
optype
=
1
;
}
}
render
(
rect
)
{
this
.
canvas
.
style
.
cursor
=
"
move
"
;
if
(
this
.
flag
&&
this
.
optype
==
0
)
{
this
.
optype
=
2
;
}
if
(
this
.
flag
&&
this
.
optype
==
2
)
{
if
(
!
this
.
currentR
)
{
this
.
currentR
=
rect
}
this
.
currentR
.
x2
+=
this
.
endX
-
this
.
leftDistance
-
this
.
currentR
.
x1
;
this
.
currentR
.
x1
+=
this
.
endX
-
this
.
leftDistance
-
this
.
currentR
.
x1
;
this
.
currentR
.
y2
+=
this
.
endY
-
this
.
topDistance
-
this
.
currentR
.
y1
;
this
.
currentR
.
y1
+=
this
.
endY
-
this
.
topDistance
-
this
.
currentR
.
y1
;
}
}
isPointInRetc
(
x
,
y
)
{
let
len
=
this
.
layers
.
length
;
for
(
let
i
=
0
;
i
<
len
;
i
++
)
{
if
(
this
.
layers
[
i
].
x1
<
x
&&
x
<
this
.
layers
[
i
].
x2
&&
this
.
layers
[
i
].
y1
<
y
&&
y
<
this
.
layers
[
i
].
y2
)
{
return
this
.
layers
[
i
];
}
}
}
fixPosition
(
position
)
{
if
(
position
.
x1
>
position
.
x2
)
{
let
x
=
position
.
x1
;
position
.
x1
=
position
.
x2
;
position
.
x2
=
x
;
}
if
(
position
.
y1
>
position
.
y2
)
{
let
y
=
position
.
y1
;
position
.
y1
=
position
.
y2
;
position
.
y2
=
y
;
}
position
.
width
=
position
.
x2
-
position
.
x1
position
.
height
=
position
.
y2
-
position
.
y1
return
position
}
mousedown
(
e
)
{
if
(
$
(
"
#changewidthnot
"
).
val
()
==
"
1
"
)
{
this
.
startX
=
(
e
.
pageX
-
this
.
canvas
.
offsetLeft
)
/
this
.
scale
;
this
.
startY
=
(
e
.
pageY
-
this
.
canvas
.
offsetTop
)
/
this
.
scale
;
this
.
currentR
=
this
.
isPointInRetc
(
this
.
startX
,
this
.
startY
);
if
(
this
.
currentR
)
{
this
.
leftDistance
=
this
.
startX
-
this
.
currentR
.
x1
;
this
.
topDistance
=
this
.
startY
-
this
.
currentR
.
y1
;
}
this
.
ctx
.
strokeRect
(
this
.
endX
,
this
.
endY
,
0
,
0
);
this
.
ctx
.
strokeStyle
=
this
.
config
.
dashedColor
;
this
.
flag
=
1
;
}
}
mousemove
(
e
)
{
if
(
$
(
"
#changewidthnot
"
).
val
()
==
"
1
"
)
{
this
.
endX
=
(
e
.
pageX
-
this
.
canvas
.
offsetLeft
)
/
this
.
scale
;
this
.
endY
=
(
e
.
pageY
-
this
.
canvas
.
offsetTop
)
/
this
.
scale
;
// console.log(`mousemove`, this.endX, this.endY);
this
.
ctx
.
save
();
this
.
ctx
.
setLineDash
([
5
])
this
.
canvas
.
style
.
cursor
=
"
crosshair
"
;
this
.
ctx
.
clearRect
(
0
,
0
,
this
.
config
.
width
,
this
.
config
.
height
);
if
(
this
.
flag
&&
this
.
optype
==
1
)
{
this
.
ctx
.
strokeRect
(
this
.
startX
,
this
.
startY
,
this
.
endX
-
this
.
startX
,
this
.
endY
-
this
.
startY
);
}
this
.
ctx
.
restore
();
this
.
reshow
(
this
.
endX
,
this
.
endY
,
"
1
"
);
}
}
mouseup
(
e
)
{
if
(
$
(
"
#changewidthnot
"
).
val
()
==
"
1
"
)
{
if
(
this
.
optype
==
1
)
{
this
.
layers
.
splice
(
0
,
1
,
this
.
fixPosition
({
x1
:
this
.
startX
,
y1
:
this
.
startY
,
x2
:
this
.
endX
,
y2
:
this
.
endY
,
strokeStyle
:
this
.
config
.
solidColor
,
type
:
this
.
type
}))
var
ratew
=
this
.
config
.
width
/
this
.
canvas
.
width
;
var
rateh
=
this
.
config
.
height
/
this
.
canvas
.
height
;
this
.
layers
.
splice
(
1
,
1
,
this
.
fixPosition
({
x1
:
Math
.
ceil
(
this
.
startX
*
ratew
),
y1
:
Math
.
ceil
(
this
.
startY
*
rateh
),
x2
:
Math
.
ceil
(
this
.
endX
*
ratew
),
y2
:
Math
.
ceil
(
this
.
endY
*
rateh
),
strokeStyle
:
this
.
config
.
solidColor
,
type
:
this
.
type
}));
}
else
if
(
this
.
optype
>=
3
)
{
this
.
fixPosition
(
this
.
currentR
);
}
this
.
currentR
=
null
;
this
.
flag
=
0
;
this
.
reshow
(
this
.
endX
,
this
.
endY
);
this
.
optype
=
0
;
}
}
}
const
draw
=
new
DrawRectangle
(
'
draw-canvas
'
,
{
src
:
$
(
"
#imgsrc
"
).
val
(),
layers
:
[{},
{
"
x1
"
:
parseInt
(
$
(
"
#objectx
"
).
val
()),
"
y1
"
:
parseInt
(
$
(
"
#objecty
"
).
val
()),
"
x2
"
:
parseInt
(
$
(
"
#objectx
"
).
val
())
+
parseInt
(
$
(
"
#objectw
"
).
val
()),
"
y2
"
:
parseInt
(
$
(
"
#objecty
"
).
val
())
+
parseInt
(
$
(
"
#objecth
"
).
val
()),
"
width
"
:
parseInt
(
$
(
"
#objectw
"
).
val
()),
"
height
"
:
parseInt
(
$
(
"
#objecth
"
).
val
()),
"
strokeStyle
"
:
"
red
"
,
"
type
"
:
0
}
]
});
$
(
function
()
{
//查询所有监控
$
.
ajax
({
url
:
"
/video/list
"
,
dataType
:
"
json
"
,
type
:
"
get
"
,
success
:
function
(
result
)
{
console
.
log
(
result
);
}
});
$
(
"
#getwidth
"
).
on
(
'
click
'
,
function
(
e
)
{
if
(
$
(
"
#changewidthnot
"
).
val
()
==
"
1
"
)
{
$
(
"
#changewidthnot
"
).
val
(
"
0
"
);
// $("#draw-canvas").style.cursor = "hand";
}
else
{
$
(
"
#changewidthnot
"
).
val
(
"
1
"
);
// $("#draw-canvas").style.cursor = "crosshair";
}
});
$
(
"
#getrtsp
"
).
on
(
'
click
'
,
function
(
e
)
{
$
.
ajax
({
url
:
"
/ai/getRtsp
"
,
dataType
:
"
json
"
,
type
:
"
post
"
,
contentType
:
'
application/json
'
,
data
:
JSON
.
stringify
({
data
:
$
(
"
#videoid
"
).
val
()}),
success
:
function
(
result
)
{
if
(
result
.
code
==
200
)
{
if
(
result
.
message
.
indexOf
(
"
,
"
)
>
-
1
)
{
$
(
"
#executeparamter
"
).
val
(
$
(
"
#taskno
"
).
val
());
$
(
"
#rtsp
"
).
val
(
result
.
message
.
split
(
"
,
"
)[
1
]);
$
(
"
#imgsrc
"
).
val
(
result
.
message
.
split
(
"
,
"
)[
0
]);
draw
.
src
=
result
.
message
.
split
(
"
,
"
)[
0
];
draw
.
setImageBackground
(
"
/api/alg/files?location=
"
+
result
.
message
.
split
(
"
,
"
)[
0
]);
//draw.init();
}
}
else
{
alert
(
"
超时!
"
);
}
},
error
:
function
(
result
)
{
alert
(
"
超时!
"
);
}
});
});
$
(
"
#updatetask
"
).
on
(
'
click
'
,
function
(
e
)
{
var
taskno
=
$
(
"
#taskno
"
).
val
();
var
taskname
=
$
(
"
#taskname
"
).
val
();
var
schedulerrule
=
$
(
"
#schedulerrule
"
).
val
();
var
frozenstatus
=
$
(
"
#frozenstatus
"
).
val
();
var
executorno
=
$
(
"
#executorno
"
).
val
();
var
sendtype
=
$
(
"
#sendtype
"
).
val
();
var
url
=
$
(
"
#url
"
).
val
();
var
executeparamter
=
$
(
"
#executeparamter
"
).
val
();
var
timekey
=
$
(
"
#timekey
"
).
val
();
var
id
=
$
(
"
#id
"
).
val
();
var
version
=
$
(
"
#version
"
).
val
();
var
createtime
=
$
(
"
#createtime
"
).
val
();
var
lastmodifytime
=
$
(
"
#lastmodifytime
"
).
val
();
var
frozentime
=
$
(
"
#frozentime
"
).
val
();
var
unfrozentime
=
$
(
"
#unfrozentime
"
).
val
();
object
=
draw
.
layers
[
1
];
$
.
ajax
({
url
:
"
/ai/edit/task
"
,
dataType
:
"
json
"
,
type
:
"
POST
"
,
data
:
{
"
taskno
"
:
taskno
,
"
taskname
"
:
taskname
,
"
schedulerrule
"
:
schedulerrule
,
"
frozenstatus
"
:
frozenstatus
,
"
executorno
"
:
executorno
,
"
sendtype
"
:
sendtype
,
"
url
"
:
url
,
"
executeparamter
"
:
executeparamter
,
"
timekey
"
:
timekey
,
"
id
"
:
id
,
"
version
"
:
version
,
"
createtime
"
:
createtime
,
"
lastmodifytime
"
:
lastmodifytime
,
"
frozentime
"
:
frozentime
,
"
unfrozentime
"
:
unfrozentime
,
"
objectx
"
:
object
.
x1
,
"
objecty
"
:
object
.
y1
,
"
objectw
"
:
object
.
width
,
"
objecth
"
:
object
.
height
,
"
recordtype
"
:
$
(
"
#recordtype
"
).
val
(),
"
metatype
"
:
$
(
"
#metatype
"
).
val
(),
"
rtsp
"
:
$
(
"
#rtsp
"
).
val
(),
"
imgsrc
"
:
$
(
"
#imgsrc
"
).
val
(),
"
videoid
"
:
$
(
"
#videoid
"
).
val
()
},
success
:
function
(
result
)
{
if
(
result
.
code
==
200
)
{
alert
(
"
更新成功!
"
);
location
.
href
=
"
/
"
;
}
else
if
(
result
.
code
==
1002
)
{
alert
(
"
更新失败!
"
);
}
else
{
alert
(
"
system error
"
);
}
}
})
});
});
</script>
</body>
</html>
src/main/resources/templates/updatetask1.html
deleted
100644 → 0
View file @
19a2655c
<!DOCTYPE html>
<html
xmlns:th=
"http://www.thymeleaf.org"
>
<head>
<meta
charset=
"UTF-8"
>
<title>
定时任务修改
</title>
<script
type=
"text/javascript"
th:src=
"@{/js/jquery.min.js}"
></script>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/animate.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/bootstrap.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/font-awesome.min.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/mediaelementplayer.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/red.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/simple-line-icons.css}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
th:href=
"@{/css/style.css}"
/>
</head>
<body>
<div
class=
"col-md-12 top-20 padding-0"
>
<div
class=
"col-md-12"
>
<div
class=
"panel"
>
<div
class=
"panel-body"
>
<div
class=
"panel-heading"
>
<h4>
修改定时任务项
</h4>
</div>
<div
class=
"col-md-6"
style=
"padding-left:10px;"
>
<form
action=
"/ai/edit/task"
method=
"post"
>
<input
type=
"hidden"
th:value=
"${taskInformation.id}"
name=
"id"
id=
"id"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.version}"
name=
"version"
id=
"version"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.createtime}"
name=
"createtime"
id=
"createtime"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.lastmodifytime}"
name=
"lastmodifytime"
id=
"lastmodifytime"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.frozentime}"
name=
"frozentime"
id=
"frozentime"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.unfrozentime}"
name=
"unfrozentime"
id=
"unfrozentime"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.objectx}"
name=
"objectx"
id=
"objectx"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.objecty}"
name=
"objecty"
id=
"objecty"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.objectw}"
name=
"objectw"
id=
"objectw"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.objecth}"
name=
"objecth"
id=
"objecth"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.imgsrc}"
name=
"imgsrc"
id=
"imgsrc"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.rtsp}"
name=
"rtsp"
id=
"rtsp"
/>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
任务编号:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
th:value=
"${taskInformation.taskno}"
name=
"taskno"
id=
"taskno"
class=
"form-control"
>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
任务名称:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
th:value=
"${taskInformation.taskname}"
name=
"taskname"
id=
"taskname"
class=
"form-control"
></div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
定时配置规则:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
placeholder=
"(例如: * /5 * * * * ? 每5秒执行一次)"
name=
"schedulerrule"
th:value=
"${taskInformation.schedulerrule}"
id=
"schedulerrule"
class=
"form-control"
>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
冻结状态:
</label>
<div
class=
"col-sm-10"
>
<select
class=
"form-control"
id=
"frozenstatus"
>
<option
th:value=
"FROZEN"
th:selected=
"${taskInformation.frozenstatus == 'FROZEN'}"
>
冻结
</option>
<option
th:value=
"UNFROZEN"
th:selected=
"${taskInformation.frozenstatus == 'UNFROZEN'}"
>
解冻
</option>
</select>
</div>
</div>
<!--<td>-->
<!--<div class="form-group"><label-->
<!--class="col-sm-2 control-label text-right">执行方:</label>-->
<!--<div class="col-sm-10"><input type="text"-->
<!--th:value="${taskInformation.executorno}"-->
<!--name="executorno" id="executorno"-->
<!--class="form-control"></div>-->
<!--</div>-->
<!--</td>-->
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
执行方式:
</label>
<div
class=
"col-sm-10"
>
<select
class=
"form-control"
id=
"sendtype"
>
<option
th:value=
"http"
th:selected=
"${taskInformation.sendtype == 'http'}"
>
http
</option>
<option
th:value=
"kafka"
th:selected=
"${taskInformation.sendtype == 'kafka'}"
>
kafka
</option>
</select>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
监控id:
</label>
</div>
<div
class=
"form-group"
>
<div
class=
"col-sm-10"
>
<input
type=
"text"
name=
"videoid"
th:value=
"${taskInformation.videoid}"
id=
"videoid"
class=
"form-control"
>
<a
id=
"getrtsp"
href=
" javascript:void(0)"
>
获得监控图片
</a>
<canvas
id=
"cv"
width=
"600"
height=
"400"
style=
"border:1px solid #d3d3d3;"
>
</canvas>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
事件类型:
</label>
<div
class=
"col-sm-10"
>
<select
class=
"form-control"
id=
"metatype"
>
<option
th:value=
"1"
th:selected=
"${taskInformation.metatype == '1'}"
>
全目标
</option>
<option
th:value=
"2"
th:selected=
"${taskInformation.metatype == '2'}"
>
行人、骑行、车辆检测识别
</option>
<option
th:value=
"3"
th:selected=
"${taskInformation.metatype == '3'}"
>
人脸检测识别
</option>
<option
th:value=
"4"
th:selected=
"${taskInformation.metatype == '4'}"
>
单独行人、骑行检测识别
</option>
<option
th:value=
"5"
th:selected=
"${taskInformation.metatype == '5'}"
>
单独车辆检测识别
</option>
<option
th:value=
"6"
th:selected=
"${taskInformation.metatype == '6'}"
>
人脸检测识别(不包含大类检测)
</option>
<option
th:value=
"7"
th:selected=
"${taskInformation.metatype == '7'}"
>
行人、骑行、人脸
</option>
</select>
</div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
告警类型:
</label>
<div
class=
"col-sm-10"
>
<select
class=
"form-control"
id=
"recordtype"
>
<option
th:value=
"1"
th:selected=
"${taskInformation.recordtype == '1'}"
>
周界入侵
</option>
<option
th:value=
"2"
th:selected=
"${taskInformation.recordtype == '2'}"
>
人群密度
</option>
<option
th:value=
"3"
th:selected=
"${taskInformation.recordtype == '3'}"
>
周界越线
</option>
<option
th:value=
"4"
th:selected=
"${taskInformation.recordtype == '4'}"
>
非机动车未戴头盔
</option>
<option
th:value=
"5"
th:selected=
"${taskInformation.recordtype == '5'}"
>
非机动车载人
</option>
<option
th:value=
"6"
th:selected=
"${taskInformation.recordtype == '6'}"
>
结构化统计
</option>
</select>
</div>
</div>
<!--<div class="form-group"><label class="col-sm-2 control-label text-right">人群密度标准:</label>-->
<!--<div class="col-sm-10">-->
<!--<input type="text" th:value="${taskInformation.populationdensity}"-->
<!--name="executorno" id="populationdensity"-->
<!--class="form-control">-->
<!--</div>-->
<!--</div>-->
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
url:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
name=
"url"
th:value=
"${taskInformation.url}"
id=
"url"
class=
"form-control"
></div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
执行参数:
</label>
<div
class=
"col-sm-10"
><input
readonly
type=
"text"
name=
"executeparamter"
th:value=
"${taskInformation.executeparamter}"
id=
"executeparamter"
class=
"form-control"
></div>
</div>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label text-right"
>
timeKey:
</label>
<div
class=
"col-sm-10"
><input
type=
"text"
placeholder=
"(例如: yyyy-MM-dd HH:mm:ss)"
name=
"timekey"
th:value=
"${taskInformation.timekey}"
id=
"timekey"
class=
"form-control"
></div>
</div>
<input
type=
"button"
class=
"btn btn-3d btn-danger"
th:onclick=
"'history.go(-1);'"
align=
"left"
style=
"float:left;margin-left:700px;"
value=
"关闭"
/>
<input
type=
"button"
class=
"btn btn-3d btn-success"
id=
"updatetask"
align=
"right"
value=
"保存"
/>
</form>
<!--</div>-->
</div>
</div>
</div>
</div>
</div>
<script
type=
"text/javascript"
th:inline=
"javascript"
>
var
layer
=
0
;
CanvasExt
=
{
renderImgAndRect
:
function
(
ctx
,
img
,
imgData
,
canvasW
,
canvasH
)
{
let
actImgW
=
img
.
width
,
actImgH
=
img
.
height
,
imgW
=
actImgW
,
imgH
=
actImgH
,
rate
=
1
,
left
=
0
,
top
=
0
;
//因为canvas画布的宽高固定,所以通过判断图片的宽高来进行缩放处理
if
(
actImgW
>
canvasW
||
actImgH
>
canvasH
)
{
if
(
actImgW
/
actImgH
>=
canvasW
/
canvasH
)
{
imgW
=
canvasW
;
rate
=
actImgW
/
canvasW
;
imgH
=
actImgH
/
rate
;
top
=
(
canvasH
-
imgH
)
/
2
;
}
else
{
imgH
=
canvasH
;
rate
=
actImgH
/
canvasH
;
imgW
=
actImgW
/
rate
;
left
=
(
canvasW
-
imgW
)
/
2
;
}
}
else
{
left
=
(
canvasW
-
imgW
)
/
2
;
top
=
(
canvasH
-
imgH
)
/
2
;
}
ctx
.
drawImage
(
img
,
left
,
top
,
imgW
,
imgH
);
if
(
imgData
.
labelVos
)
drawRect
(
ctx
,
imgData
.
labelVos
,
left
,
top
,
rate
);
}
drawRect
:
function
(
ctx
,
rectList
,
left
,
top
,
rate
){
let
colorType
=
sessionStorage
.
getItem
(
"
colorType
"
);
let
labelArr
=
[];
if
(
colorType
)
{
colorType
=
JSON
.
parse
(
colorType
);
labelArr
=
Object
.
keys
(
colorType
);
}
else
{
colorType
=
{};
}
for
(
let
i
=
0
;
i
<
rectList
.
length
;
i
++
)
{
let
rect
=
rectList
[
i
];
let
labelName
=
rect
.
labelName
;
if
(
!
labelArr
.
includes
(
labelName
))
{
labelArr
.
push
(
labelName
);
let
randomColor
=
getRandomColor
();
colorType
[
labelName
]
=
randomColor
;
ctx
.
strokeStyle
=
randomColor
;
ctx
.
fillStyle
=
randomColor
;
}
else
{
ctx
.
strokeStyle
=
colorType
[
labelName
];
ctx
.
fillStyle
=
colorType
[
labelName
];
}
let
x
=
rect
.
upperLeftCoorX
/
rate
+
left
,
y
=
rect
.
upperLeftCoorY
/
rate
+
top
,
w
=
(
rect
.
lowerRightCoorX
-
rect
.
upperLeftCoorX
)
/
rate
,
h
=
(
rect
.
lowerRightCoorY
-
rect
.
upperLeftCoorY
)
/
rate
;
ctx
.
strokeRect
(
x
,
y
,
w
,
h
);
if
(
labelName
)
{
ctx
.
font
=
`
${
20
/
rate
}
px sans-serif`
;
let
{
confidence
}
=
rect
;
let
text
=
confidence
?
`
${
labelName
}
:
${
confidence
}
%`
:
labelName
;
ctx
.
fillText
(
text
,
x
-
1
,
y
-
10
/
rate
);
}
}
sessionStorage
.
setItem
(
"
colorType
"
,
JSON
.
stringify
(
colorType
));
//鼠标点击按下事件,画图准备
canvas
.
onmousedown
=
function
(
e
){
<!--
//设置画笔颜色和宽度-->
<!--
var
color
=
that
.
penColor
;
-->
<!--
var
penWidth
=
that
.
penWidth
;
-->
<!--
layerIndex
++
;
-->
<!--
layer
++
;
-->
<!--
layerName
+=
layerIndex
;
-->
x
=
e
.
clientX
-
canvasLeft
;
y
=
e
.
clientY
-
canvasTop
;
$
(
"
#
"
+
canvasId
).
addLayer
({
type
:
'
rectangle
'
,
strokeStyle
:
color
,
strokeWidth
:
penWidth
,
name
:
layerName
,
fromCenter
:
false
,
x
:
x
,
y
:
y
,
width
:
1
,
height
:
1
});
$
(
"
#
"
+
canvasId
).
drawLayers
();
$
(
"
#
"
+
canvasId
).
saveCanvas
();
//鼠标移动事件,画图
canvas
.
onmousemove
=
function
(
e
){
width
=
e
.
clientX
-
canvasLeft
-
x
;
height
=
e
.
clientY
-
canvasTop
-
y
;
$
(
"
#
"
+
canvasId
).
removeLayer
(
layerName
);
$
(
"
#
"
+
canvasId
).
addLayer
({
type
:
'
rectangle
'
,
strokeStyle
:
color
,
strokeWidth
:
penWidth
,
name
:
layerName
,
fromCenter
:
false
,
x
:
x
,
y
:
y
,
width
:
width
,
height
:
height
});
$
(
"
#
"
+
canvasId
).
drawLayers
();
}
};
canvas
.
onmouseup
=
function
(
e
){
var
color
=
that
.
penColor
;
var
penWidth
=
that
.
penWidth
;
canvas
.
onmousemove
=
null
;
width
=
e
.
clientX
-
canvasLeft
-
x
;
height
=
e
.
clientY
-
canvasTop
-
y
;
$
(
"
#
"
+
canvasId
).
removeLayer
(
layerName
);
$
(
"
#
"
+
canvasId
).
addLayer
({
type
:
'
rectangle
'
,
strokeStyle
:
color
,
strokeWidth
:
penWidth
,
name
:
layerName
,
fromCenter
:
false
,
x
:
x
,
y
:
y
,
width
:
width
,
height
:
height
});
$
(
"
#
"
+
canvasId
).
drawLayers
();
$
(
"
#
"
+
canvasId
).
saveCanvas
();
}
}
getRandomColor
:
function
()
{
let
colorValue
=
"
0123456789abcdef
"
;
let
randomColor
=
"
#
"
;
for
(
let
i
=
0
;
i
<
6
;
i
++
)
{
randomColor
+=
colorValue
[
Math
.
floor
(
Math
.
random
()
*
16
)];
}
return
randomColor
;
}
};
drawPen
();
function
drawPen
(){
var
color
=
"
red
"
;
var
width
=
1
;
CanvasExt
.
drawRect
(
"
cv
"
,
color
,
width
);
}
function
initCanvas
(
imgData
)
{
var
cvs
=
document
.
getElementById
(
"
cv
"
);
var
ctx
=
cvs
.
getContext
(
'
2d
'
),
canvasW
=
cvs
.
width
,
canvasH
=
cvs
.
height
;
ctx
.
clearRect
(
0
,
0
,
canvasW
,
canvasH
);
ctx
.
lineWidth
=
'
2
'
;
let
img
=
new
Image
();
img
.
src
=
imgData
;
img
.
onload
=
function
()
{
renderImgAndRect
(
ctx
,
img
,
imgData
,
canvasW
,
canvasH
)
};
}
$
(
function
()
{
<!--
initCanvas
(
$
(
"
#imgsrc
"
).
val
());
-->
$
(
"
#getrtsp
"
).
on
(
'
click
'
,
function
(
e
)
{
$
.
ajax
({
url
:
"
/ai/getRtsp/
"
+
$
(
"
#videoid
"
).
val
(),
dataType
:
"
json
"
,
type
:
"
get
"
,
success
:
function
(
result
)
{
if
(
result
.
code
==
200
)
{
if
(
result
.
message
.
indexOf
(
"
,
"
)
>-
1
){
$
(
"
#executeparamter
"
).
val
(
result
.
message
.
split
(
"
,
"
)[
1
]);
$
(
"
#rtsp
"
).
val
(
result
.
message
.
split
(
"
,
"
)[
1
]);
$
(
"
#imgsrc
"
).
val
(
result
.
message
.
split
(
"
,
"
)[
0
]);
draw
.
src
=
result
.
message
.
split
(
"
,
"
)[
0
];
draw
.
setImageBackground
(
result
.
message
.
split
(
"
,
"
)[
0
]);
draw
.
init
();
}
}
}
});
$
.
ajax
({
url
:
"
http://212.129.142.17:8281/gh/device/test?deviceCode=
"
+
$
(
"
#videoid
"
).
val
(),
async
:
false
,
dataType
:
"
jsonp
"
,
jsonp
:
"
callback
"
,
jsonpCallback
:
"
callback
"
,
success
:
function
(
result
)
{
if
(
result
.
code
==
200
)
{
}
}
});
});
$
(
"
#updatetask
"
).
on
(
'
click
'
,
function
(
e
)
{
var
taskno
=
$
(
"
#taskno
"
).
val
();
var
taskname
=
$
(
"
#taskname
"
).
val
();
var
schedulerrule
=
$
(
"
#schedulerrule
"
).
val
();
var
frozenstatus
=
$
(
"
#frozenstatus
"
).
val
();
var
executorno
=
$
(
"
#executorno
"
).
val
();
var
sendtype
=
$
(
"
#sendtype
"
).
val
();
var
url
=
$
(
"
#url
"
).
val
();
var
executeparamter
=
$
(
"
#executeparamter
"
).
val
();
var
timekey
=
$
(
"
#timekey
"
).
val
();
var
id
=
$
(
"
#id
"
).
val
();
var
version
=
$
(
"
#version
"
).
val
();
var
createtime
=
$
(
"
#createtime
"
).
val
();
var
lastmodifytime
=
$
(
"
#lastmodifytime
"
).
val
();
var
frozentime
=
$
(
"
#frozentime
"
).
val
();
var
unfrozentime
=
$
(
"
#unfrozentime
"
).
val
();
object
=
draw
.
layers
[
0
];
$
.
ajax
({
url
:
"
/ai/edit/task
"
,
dataType
:
"
json
"
,
type
:
"
POST
"
,
data
:
{
"
taskno
"
:
taskno
,
"
taskname
"
:
taskname
,
"
schedulerrule
"
:
schedulerrule
,
"
frozenstatus
"
:
frozenstatus
,
"
executorno
"
:
executorno
,
"
sendtype
"
:
sendtype
,
"
url
"
:
url
,
"
executeparamter
"
:
executeparamter
,
"
timekey
"
:
timekey
,
"
id
"
:
id
,
"
version
"
:
version
,
"
createtime
"
:
createtime
,
"
lastmodifytime
"
:
lastmodifytime
,
"
frozentime
"
:
frozentime
,
"
unfrozentime
"
:
unfrozentime
,
"
objectx
"
:
object
.
x1
,
"
objecty
"
:
object
.
y1
,
"
objectw
"
:
object
.
width
,
"
objecth
"
:
object
.
height
,
"
recordtype
"
:
$
(
"
#recordtype
"
).
val
(),
"
metatype
"
:
$
(
"
#metatype
"
).
val
(),
"
rtsp
"
:
$
(
"
#rtsp
"
).
val
(),
"
imgsrc
"
:
$
(
"
#imgsrc
"
).
val
(),
"
videoid
"
:
$
(
"
#videoid
"
).
val
()
},
success
:
function
(
result
)
{
if
(
result
.
code
==
200
)
{
alert
(
"
更新成功!
"
);
location
.
href
=
"
/
"
;
}
else
if
(
result
.
code
==
1002
)
{
alert
(
"
更新失败!
"
);
}
else
{
alert
(
"
system error
"
);
}
}
})
});
});
</script>
</body>
</html>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment