Repository: KBRACER/kbracer.github.io
Branch: master
Commit: b2d3635ea97a
Files: 22
Total size: 715.3 KB
Directory structure:
gitextract_ls4d2koz/
├── .gitignore
├── CNAME
├── bigV.json
├── css/
│ ├── button.css
│ ├── button.less
│ └── index.css
├── goldport.json
├── index.html
├── js/
│ └── index.js
├── lib/
│ ├── bootstrap/
│ │ ├── css/
│ │ │ ├── bootstrap-table.css
│ │ │ ├── bootstrap-theme.css
│ │ │ └── bootstrap.css
│ │ └── js/
│ │ ├── bootstrap-table.js
│ │ ├── bootstrap.js
│ │ └── npm.js
│ ├── canvas-bg/
│ │ └── rAF.js
│ ├── layer/
│ │ ├── layer.js
│ │ ├── mobile/
│ │ │ ├── layer.js
│ │ │ └── need/
│ │ │ └── layer.css
│ │ └── theme/
│ │ └── default/
│ │ └── layer.css
│ └── template.js
└── speed.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
speed - 副本 (2).json
================================================
FILE: CNAME
================================================
kbracer.github.io
================================================
FILE: bigV.json
================================================
[
{
"year":"2014",
"car": "911 TurboS",
"BID": "BV1eN4y1K7nf",
"Btitle": "最烂仔的GT2RS?",
"hp": "620",
"hp_content": "620",
"Powertrain": "3.8T/7DCT",
"speed": "63.21",
"mods": "2",
"tyre": "F200",
"temperature": "26",
"lv": "S",
"time": "",
"accelerate": "3.38",
"limit": "202.54",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"255.10",
"driver":"阿飞"
},
{
"year":"2021",
"car": "911 Carrara S",
"BID": "BV1RN4y1P7ZH",
"Btitle": "GIC最速传说,比GT3RS还快的992S..",
"hp": "540",
"hp_content": "540",
"Powertrain": "3.0T/7DCT",
"speed": "64.45",
"mods": "1",
"tyre": "Cup2R",
"temperature": "26",
"lv": "S",
"time": "",
"accelerate": "3.24",
"limit": "189.07",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"146.00",
"driver":"Jerry杨浩宇"
},
{
"year":"2019",
"car": "AMG GTC",
"BID": "BV1W7HczjEen",
"Btitle": "【大V榜】小米工程师开AMG GTC",
"hp": "557",
"hp_content": "557",
"Powertrain": "4.0T/7DCT",
"speed": "66.01",
"mods": "1",
"tyre": "PT-01",
"temperature": "12",
"lv": "S",
"time": "",
"accelerate": "--",
"limit": "193.34",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"182.68",
"driver":"Frank"
},
{
"year":"2011",
"car": "M3",
"BID": "BV1AuvmBxEJr",
"Btitle": "【大V榜】100万的宝马M4 vs 10万的宝马M4~!!",
"hp": "420",
"hp_content": "420",
"Powertrain": "4.0/7DCT",
"speed": "66.31",
"mods": "1",
"tyre": "CR-S",
"temperature": "6",
"lv": "B",
"time": "",
"accelerate": "4.64",
"limit": "175.51",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"110.50",
"driver":"约翰"
},
{
"year":"2014",
"car": "GT86",
"BID": "BV1PA41167u8",
"Btitle": "北方一台快的86都没有?",
"hp": "233",
"hp_content": "233",
"Powertrain": "2.0/6MT",
"speed": "70.81",
"mods": "1",
"tyre": "TD",
"temperature": "1",
"lv": "S",
"time": "",
"accelerate": "6.21",
"limit": "159.83",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"26.96",
"driver":"键盘打工人"
},
{
"year":"2008",
"car": "Lancer Evolution IX",
"BID": "BV16T411T7qD",
"Btitle": "EVO 9已经超过100W了?",
"hp": "280",
"hp_content": "280",
"Powertrain": "2.0T/6MT",
"speed": "74.30",
"mods": "1",
"tyre": "R888R",
"temperature": "31",
"lv": "A",
"time": "",
"accelerate": "6.18",
"limit": "156.12",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"45.50",
"driver":"李松桥"
},
{
"year":"2003",
"car": "M3 CSL",
"BID": "BV1KU4y1k7Ck",
"Btitle": "20年的老车还要100W?E46M3 CSL喜欢您来!",
"hp": "360",
"hp_content": "360",
"Powertrain": "3.2/6MT",
"speed": "78.36",
"mods": "1",
"tyre": "Cup2",
"temperature": "33",
"lv": "B",
"time": "",
"accelerate": "6.62",
"limit": "138.40",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"-",
"driver":"亢岳"
}
]
================================================
FILE: css/button.css
================================================
.button {
position: relative;
appearance: none;
background: #337ab7;
padding: 10px 20px;
border: none;
color: white;
cursor: pointer;
outline: none;
overflow: hidden;
border-radius: 10px;
text-align: center;
width: 180px;
height: 40px;
line-height: 20px;
box-sizing: border-box;
box-shadow: inset 0 -2px 0 #23527c;
margin: 20px auto 40px;
transform: scale(2);
}
.button span {
position: relative;
letter-spacing: 8px;
}
.button::before {
--size: 0;
content: '';
position: absolute;
left: var(--x);
top: var(--y);
width: var(--size);
height: var(--size);
background: radial-gradient(circle closest-side, #4405f7, transparent);
transform: translate(-50%, -50%);
transition: width 0.2s ease, height 0.2s ease;
}
.button:hover::before {
--size: 400px;
}
================================================
FILE: css/button.less
================================================
.button {
position: relative;
appearance: none;
background: #337ab7;
// padding: 1em 2em;
padding: 10px 20px;
border: none;
color: white;
// font-size: 1.2em;
cursor: pointer;
outline: none;
overflow: hidden;
border-radius: 10px;
text-align: center;
width: 180px;
height: 40px;
line-height: 20px;
box-sizing: border-box;
box-shadow: inset 0 -2px 0 #23527c;
margin: 20px auto 40px;
transform: scale(2);
span {
position: relative;
letter-spacing:8px
}
&::before {
--size: 0;
content: '';
position: absolute;
left: var(--x);
top: var(--y);
width: var(--size);
height: var(--size);
background: radial-gradient(circle closest-side, #4405f7, transparent);
transform: translate(-50%, -50%);
transition: width .2s ease, height .2s ease;
}
&:hover::before {
--size: 400px;
}
}
================================================
FILE: css/index.css
================================================
body {
background-image: linear-gradient(90deg, #485563, #29323c);
min-height: 100vh;
display: flex;
flex-direction: column;
overflow-x: hidden;
}
table {
width:100%;
}
tbody {
color: #eeeeee;
width: 100%;
}
thead {
color: #e5e5e5;
width: 100%;
}
.mini_banner {
display: none;
}
tr.speed0 {
background-image: linear-gradient(230deg, hsl(335, 58%, 48%), hsl(335, 47%, 60%));
}
tr.speed1 {
background-image: linear-gradient(230deg, hsl(0, 65%, 60%),hsl(0, 79%, 63%) );
}
tr.speed2 {
background-image: linear-gradient(230deg, hsl(282, 38%, 28%), hsl(282, 27%, 56%));
}
tr.speed3 {
background-image: linear-gradient(230deg, hsl(238, 38%, 28%), hsl(206, 53%, 56%));
}
tr.speed4 {
background-image: linear-gradient(230deg, hsl(186, 38%, 28%), hsl(186, 27%, 56%));
}
tr.speed5 {
background-image: linear-gradient(230deg, hsl(30, 83%, 38%), hsl(30, 49%, 56%));
}
tr.speed6 {
background-image: linear-gradient(230deg, hsl(0, 54%, 38%), hsl(10, 49%, 56%));
}
tr.speed0:hover {
background-image: linear-gradient(230deg, hsl(335, 58%, 60%), hsl(335, 47%, 72%));
color: fff;
}
tr.speed1:hover {
background-image: linear-gradient(230deg, hsl(8, 58%, 67%),hsl(8, 80%, 69%) );
color: #fff;
}
tr.speed2:hover {
background-image: linear-gradient(230deg, hsl(282, 38%, 40%), hsl(282, 27%, 68%));
color: #fff;
}
tr.speed3:hover {
background-image: linear-gradient(230deg, hsl(238, 38%, 40%), hsl(206, 53%, 68%));
color: #fff;
}
tr.speed4:hover {
background-image: linear-gradient(230deg, hsl(186, 38%, 40%), hsl(186, 27%, 68%));
color: #fff;
}
t
tr.speed5:hover {
background-image: linear-gradient(230deg, hsl(30, 83%, 50%), hsl(30, 49%, 68%));
color: #fff;
}
tr.speed6:hover {
background-image: linear-gradient(230deg, hsl(0, 54%, 50%), hsl(10, 49%, 68%));
color: #fff;
}
.table-responsive {
background-color: rgba(229, 229, 229, 0.3);
border-radius: 4px;
border: solid;
border-width: 0;
margin: 2em;
}
.black {
background-color: rgba(0, 0, 0, 0.3);
}
.gray {
background-color: rgba(33,33,33, 0.1);
}
.blue {
background-color: rgba(33,33,33, 0.6);
}
.align-left {
text-align:left !important;
}
.table {
margin-bottom: 0;
min-width: 1500px;
display: none;
text-align:center;
}
.table.active {
display: table;
}
a {
color: #bbffff !important;
}
a:hover {
color: aqua;
}
a:checked {
color: azure;
}
.index_banner {
/* position: relative; */
padding: 2em 1em;
margin: 1em 2em 0em;
border-radius: 20px;
box-shadow: 1px 1px 10px #333;
background-image: linear-gradient(200deg, #2980b9, #2c3e50);
text-align: left;
vertical-align: middle;
}
#canvas_bg {
position: absolute;
/* width: 100%;
height: 100%; */
z-index: -10;
}
.title {
color: #fefeff
}
footer {
color: #fff;
background-image: linear-gradient(90deg, rgba(200, 200, 255, 0.2), rgba(255, 255, 255, 0.4));
box-shadow: -10px 0px 50px #333;
width: 100%;
padding: 2em;
margin-bottom: 0px;
line-height: 40px;
}
/* layer */
.tips-content {
padding: 20px;
background-color: #000;
color: #fff;
}
.t-left {
text-align: left;
}
.t-center {
text-align: center;
}
.t-right {
text-align: right;
}
#tb_results .icon ,
#tb_results2 .icon ,
#tb_results3 .icon {
width: 15px;
cursor: pointer;
}
#tb_results td ,
#tb_results2 td,
#tb_results3 td,
#tb_results thead ,
#tb_results2 thead,
#tb_results3 thead,
#tb_results tr ,
#tb_results2 tr,
#tb_results3 tr,
#tb_results th ,
#tb_results2 th,
#tb_results3 th{
text-align:center;
border: 1px solid;
}
#tb_results .ranking,
#tb_results .limit,
#tb_results .accelerate,
#tb_results .speed ,
#tb_results2 .ranking,
#tb_results3 .ranking,
#tb_results2 .limit,
#tb_results3 .limit,
#tb_results2 .accelerate,
#tb_results3 .accelerate,
#tb_results2 .speed ,
#tb_results3 .speed {
min-width: 65px;
}
#tb_results .mods ,
#tb_results2 .mods ,
#tb_results3 .mods {
min-width: 80px;
}
#tb_results .lv ,
#tb_results2 .lv ,
#tb_results3 .lv {
min-width: 50px;
}
#tb_results .temperature ,
#tb_results2 .temperature ,
#tb_results3 .temperature {
min-width: 90px;
}
#tb_results .car ,
#tb_results2 .car ,
#tb_results3 .car {
min-width: 135px;
}
/* 移动端适配 */
@media (max-width: 550px) {
.hid {
display: none;
}
.options>div {
margin-bottom: 5px;
}
/* .index_banner {
display: none;
}
.mini_banner {
display: block;
padding-left: 20px;
padding-top: 20px;
}
.input_ctrl {
margin-top: 20px;
} */
}
/* button动效 */
/* tab切换 */
.box-tabs {
width:100%;
padding: 30px 0 0 30px;
}
.box-tabs .tab {
display:inline-block;
width:160px;
height:40px;
line-height:40px;
text-align:center;
background-color: #fff;
cursor: pointer;
border-radius: 10px;
margin-right: 10px;
}
.box-tabs .tab.active {
background-color: #ff0080;
color:#fff;
}
/* 国旗icon */
.icon-flag {
width: 24px;
height: 24px;
display: inline-block;
vertical-align: middle;
background-size: 100%;
background-position: center;
background-repeat: no-repeat;
}
.icon-flag.DE {
background-image: url(../img/flags/DE.png);
}
.icon-flag.BR {
background-image: url(../img/flags/BR.png);
}
.icon-flag.CN {
background-image: url(../img/flags/CN.png);
}
.icon-flag.FR {
background-image: url(../img/flags/FR.png);
}
.icon-flag.IT {
background-image: url(../img/flags/IT.png);
}
.icon-flag.JP {
background-image: url(../img/flags/JP.png);
}
.icon-flag.KR {
background-image: url(../img/flags/KR.png);
}
.icon-flag.RU {
background-image: url(../img/flags/RU.png);
}
.icon-flag.SE {
background-image: url(../img/flags/SE.png);
}
.icon-flag.UK {
background-image: url(../img/flags/UK.png);
}
.icon-flag.US {
background-image: url(../img/flags/US.png);
}
.icon-flag.CZ {
background-image: url(../img/flags/CZ.png);
}
================================================
FILE: goldport.json
================================================
[
{
"year":"2018",
"car": "911 GT3RS",
"BID": "BV1W94y1X7JY",
"Btitle": "GT3 RS刷新易车金港赛道纪录?",
"hp": "540",
"hp_content": "540",
"Powertrain": "4.0/7DCT",
"speed": "62.90",
"mods": "1",
"tyre": "Cup2R",
"temperature": "18",
"lv": "S",
"time": "",
"accelerate": "3.29",
"limit": "201.34",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"226.80"
},
{
"year":"2025",
"car": "SU7 ULTRA",
"BID": "BV1GegizAETD",
"Btitle": "小米SU7U,打不过日产轩逸?!",
"hp": "1548",
"hp_content": "1548",
"Powertrain": "E",
"speed": "63.52",
"mods": "0",
"tyre": "PT-01",
"temperature": "15",
"lv": "C",
"time": "",
"accelerate": "--",
"limit": "227.99",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"52.99"
},
{
"year":"2017",
"car": "911GT3",
"BID": "BV1BZ42127z9",
"Btitle": "键盘圈速榜,原厂榜首预定?",
"hp": "500",
"hp_content": "500",
"Powertrain": "4.0/7DCT",
"speed": "64.40",
"mods": "0",
"tyre": "Cup2R",
"temperature": "5",
"lv": "S",
"time": "",
"accelerate": "3.45",
"limit": "200.58",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"183.00"
},
{
"year":"2020",
"car": "SF90",
"BID": "BV1iT411d76t",
"Btitle": "800万,1000马力,法拉利SF90杀爆全场?",
"hp": "1000",
"hp_content": "1000",
"Powertrain": "3.9T+E/8DCT",
"speed": "64.41",
"mods": "0",
"tyre": "Cup2R",
"temperature": "0",
"lv": "S",
"time": "",
"accelerate": "2.61",
"limit": "216.70",
"powerType":"0",
"producer":"2",
"nationality":"IT",
"price":"498.80"
},
{
"year":"2019",
"car": "AMG GT R",
"BID": "BV1VX4y1k7rR",
"Btitle": "日产GT-R,AMG GT R,谁是真战神?",
"hp": "585",
"hp_content": "585",
"Powertrain": "4.0T/7DCT",
"speed": "64.64",
"mods": "0",
"tyre": "Cup2R",
"temperature": "13",
"lv": "S",
"time": "",
"accelerate": "3.76",
"limit": "202.62",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"212.88"
},
{
"year":"2017",
"car": "M4",
"BID": "BV1HN4y157tk",
"Btitle": "国产魔王最后一战?",
"hp": "521",
"hp_content": "521",
"Powertrain": "3.0T/7DCT",
"speed": "64.81",
"mods": "1",
"tyre": "F200",
"temperature": "14",
"lv": "B",
"time": "",
"accelerate": "--",
"limit": "196.34",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"90.68"
},
{
"year":"2013",
"car": "911GT3",
"BID": "BV1jA4m1V7hB",
"Btitle": "100万能买911 GT3,为什么还要玩本田?",
"hp": "476",
"hp_content": "476",
"Powertrain": "3.8/7DCT",
"speed": "65.28",
"mods": "0",
"tyre": "Cup2R",
"temperature": "5",
"lv": "S",
"time": "",
"accelerate": "3.68",
"limit": "195.16",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"187.80"
},
{
"year":"2021",
"car": "911 Carrera 4S",
"BID": "BV1Sa411X7gx",
"Btitle": "911有必要四驱么?-- 满配992 4S圈速测试",
"hp": "530",
"hp_content": "530",
"Powertrain": "3.0T/8DCT",
"speed": "66.38",
"mods": "1",
"tyre": "P0",
"temperature": "28",
"lv": "S",
"time": "",
"accelerate": "3.05",
"limit": "197.19",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"155.10"
},
{
"year":"2022",
"car": "M4雷霆版 M xDrive",
"BID": "BV1jG4y1c7j8",
"Btitle": "比保时捷还快的宝马?G82四驱赛道测试!",
"hp": "510",
"hp_content": "510",
"Powertrain": "3.0T/8AT",
"speed": "66.40",
"mods": "0",
"tyre": "PS4S*",
"temperature": "6",
"lv": "B",
"time": "",
"accelerate": "3.35",
"limit": "192.18",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"94.39"
},
{
"year":"2022",
"car": "911 Carrera S",
"BID": "BV1ZG4y1j77t",
"Btitle": "保时捷992S VS 马丁Vantage F1,谁快?",
"hp": "450",
"hp_content": "450",
"Powertrain": "3.0T/8DCT",
"speed": "66.73",
"mods": "0",
"tyre": "P0",
"temperature": "15",
"lv": "S",
"time": "",
"accelerate": "3.48",
"limit": "192.98",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"147.30"
},
{
"year":"2015",
"car": "GT-R",
"BID": "BV1Bc411j7vu",
"Btitle": "日产GTR,打得过宝马M4?",
"hp": "600",
"hp_content": "600",
"Powertrain": "3.8T/6DCT",
"speed": "66.76",
"mods": "1",
"tyre": "Cup2C/Cup2R",
"temperature": "7",
"lv": "S",
"time": "",
"accelerate": "3.55",
"limit": "195.35",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"158.00"
},
{
"year":"-",
"car": "领克03++赛车",
"BID": "BV1JgmyB3EHw",
"Btitle": "140万领克TCR的青春版,能打保时捷911~?",
"hp": "350",
"hp_content": "350",
"Powertrain": "2.0T/8AT",
"speed": "66.75",
"mods": "1",
"tyre": "赛轮",
"temperature": "5",
"lv": "A",
"time": "",
"accelerate": "4.96",
"limit": "175.28",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"--"
},
{
"year":"2025",
"car": "Ioniq5N",
"BID": "BV1XHR1YoEQw",
"Btitle": "金港最速量产SUV?",
"hp": "650",
"hp_content": "650",
"Powertrain": "E",
"speed": "67.45",
"mods": "0",
"tyre": "CUP2C",
"temperature": "20",
"lv": "SUV2",
"time": "",
"accelerate": "3.51",
"limit": "189.03",
"powerType":"1",
"producer":"2",
"nationality":"KR",
"price":"38.88"
},
{
"year":"2020",
"car": "718GTS",
"BID": "BV1dY4y1o7oN",
"Btitle": "60W,2.5T最强四缸保时捷~",
"hp": "366",
"hp_content": "366",
"Powertrain": "2.5T/7DCT",
"speed": "67.65",
"mods": "0",
"tyre": "PS4S",
"temperature": "14",
"lv": "S",
"time": "",
"accelerate": "3.85",
"limit": "185.93",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"87.50"
},
{
"year":"-",
"car": "思域FK8赛车",
"BID": "BV1Lz4y1M7NL",
"Btitle": "50W手搓本田FK8 TCR,居然能到9300转?",
"hp": "300",
"hp_content": "300",
"Powertrain": "2.4/6SMG",
"speed": "67.72",
"mods": "1",
"tyre": "F200",
"temperature": "37",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "168.03",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"--"
},
{
"year":"2021",
"car": "GTI",
"BID": "BV113411X7WB",
"Btitle": "改装GTI vs 原厂奥迪RS 3",
"hp": "294",
"hp_content": "294",
"Powertrain": "2.0T/7DCT",
"speed": "68.02",
"mods": "1",
"tyre": "TD/Cup2C",
"temperature": "4",
"lv": "A",
"time": "",
"accelerate": "5.59",
"limit": "181.31",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"22.98"
},
{
"year":"2011",
"car": "458",
"BID": "BV1AK421y7xf",
"Btitle": "法拉利458,赛道能打得过911?",
"hp": "570",
"hp_content": "570",
"Powertrain": "4.5/7DCT",
"speed": "68.08",
"mods": "0",
"tyre": "Cup2R",
"temperature": "31",
"lv": "S",
"time": "",
"accelerate": "--",
"limit": "188.10",
"powerType":"0",
"producer":"2",
"nationality":"IT",
"price":"388.00"
},
{
"year":"2022",
"car": "Vantage F1",
"BID": "BV1ZG4y1j77t",
"Btitle": "保时捷992S VS 马丁Vantage F1,谁快?",
"hp": "534",
"hp_content": "534",
"Powertrain": "4.0T/8AT",
"speed": "68.11",
"mods": "0",
"tyre": "P0",
"temperature": "17",
"lv": "S",
"time": "",
"accelerate": "3.91",
"limit": "188.80",
"powerType":"0",
"producer":"2",
"nationality":"UK",
"price":"206.80"
},
{
"year":"2017",
"car": "86",
"BID": "BV1px4y1L7ki",
"Btitle": "涡轮+ 86 = 911?",
"hp": "320",
"hp_content": "320",
"Powertrain": "2.0T/6MT",
"speed": "68.16",
"mods": "1",
"tyre": "TD",
"temperature": "1",
"lv": "S",
"time": "",
"accelerate": "5.38",
"limit": "175.02",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"24.98"
},
{
"year":"2014",
"car": "86",
"BID": "BV1PA41167u8",
"Btitle": "北方一台快的86都没有?",
"hp": "233",
"hp_content": "233",
"Powertrain": "2.0/6MT",
"speed": "68.73",
"mods": "1",
"tyre": "TD",
"temperature": "1",
"lv": "S",
"time": "",
"accelerate": "6.21",
"limit": "164.15",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"26.96"
},
{
"year":"2022",
"car": "思域Type-R",
"BID": "BV15p421R7rD",
"Btitle": "330马力的思域TYPE R,能有多快?",
"hp": "330",
"hp_content": "330",
"Powertrain": "2.0T/6MT",
"speed": "68.85",
"mods": "1",
"tyre": "Cup2C",
"temperature": "16",
"lv": "A",
"time": "",
"accelerate": "5.29",
"limit": "177.08",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"42.00"
},
{
"year":"2023",
"car": "影豹R",
"BID": "BV12V6gYLEmu",
"Btitle": "影豹RR第二季的最后一次圈速测试。",
"hp": "350",
"hp_content": "350",
"Powertrain": "2.0T/8AT",
"speed": "68.90",
"mods": "1",
"tyre": "DSS",
"temperature": "18",
"lv": "A",
"time": "",
"accelerate": "4.91",
"limit": "175.14",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"15.80"
},
{
"year":"2005",
"car": "菱帅 进化8",
"BID": "BV1Bb4y13771",
"Btitle": "200马力菱帅王,比思域TR快?",
"hp": "200",
"hp_content": "200",
"Powertrain": "1.6/5MT",
"speed": "68.96",
"mods": "1",
"tyre": "RC001",
"temperature": "23",
"lv": "A",
"time": "",
"accelerate": "5.99",
"limit": "159.27",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"11.88"
},
{
"year":"2020",
"car": "M2C",
"BID": "BV14S4y1p74Y",
"Btitle": "100W内天花板?",
"hp": "411",
"hp_content": "411",
"Powertrain": "3.0T/7DCT",
"speed": "69.00",
"mods": "0",
"tyre": "PS4S*",
"temperature": "33",
"lv": "A",
"time": "",
"accelerate": "4.54",
"limit": "183.59",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"64.38"
},
{
"year":"2023",
"car": "M2",
"BID": "BV1V64y1w7KR",
"Btitle": "宝马M2很丑,但S58",
"hp": "460",
"hp_content": "460",
"Powertrain": "3.0T/8AT",
"speed": "69.05",
"mods": "0",
"tyre": "P0*",
"temperature": "27",
"lv": "A",
"time": "",
"accelerate": "4.34",
"limit": "188.41",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"59.90"
},{
"year":"2024",
"car": "RS6 Performance",
"BID": "BV15f421Q7KG",
"Btitle": "马力没有SU7大,新款RS6还行吗?",
"hp": "630",
"hp_content": "630",
"Powertrain": "4.0T/8AT",
"speed": "69.05",
"mods": "0",
"tyre": "SC7",
"temperature": "25",
"lv": "C",
"time": "",
"accelerate": "3.25",
"limit": "190.20",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"145.38"
},
{
"year":"2022",
"car": "Giulia QV",
"BID": "BV1Bk4y1477X",
"Btitle": "大家别骂键盘打工人了,Giulia QV二番战!",
"hp": "510",
"hp_content": "510",
"Powertrain": "2.9T/8AT",
"speed": "69.08",
"mods": "0",
"tyre": "Cup2C*",
"temperature": "6",
"lv": "B",
"time": "",
"accelerate": "4.29",
"limit": "189.08",
"powerType":"0",
"producer":"2",
"nationality":"IT",
"price":"90.28"
},
{
"year":"2012",
"car": "911 Carrera S",
"BID": "BV1Gx4y1T7He",
"Btitle": "老保时捷,能拿捏宝马M吗?",
"hp": "400",
"hp_content": "400",
"Powertrain": "3.8/7DCT",
"speed": "69.20",
"mods": "0",
"tyre": "P0",
"temperature": "2",
"lv": "S",
"time": "",
"accelerate": "4.34",
"limit": "181.80",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"146.50"
},
{
"year":"2021",
"car": "AMG GT",
"BID": "BV1114y1g7tE",
"Btitle": "V8即正义,AMG GT能干掉911么?",
"hp": "476",
"hp_content": "476",
"Powertrain": "4.0T/7DCT",
"speed": "69.38",
"mods": "0",
"tyre": "PS4S",
"temperature": "17",
"lv": "S",
"time": "",
"accelerate": "4.37",
"limit": "183.74",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"146.88"
},
{
"year":"2022",
"car": "BRZ",
"BID": "BV16G4y1g7G8",
"Btitle": "【新老BRZ进化】避震篇",
"hp": "234",
"hp_content": "234",
"Powertrain": "2.4/6MT",
"speed": "69.48",
"mods": "1",
"tyre": "V01R",
"temperature": "17",
"lv": "S",
"time": "",
"accelerate": "--",
"limit": "161.37",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"30.88"
},
{
"year":"2022",
"car": "Supra",
"BID": "BV1wW4y1C7Zn",
"Btitle": "丰田SUPRA和宝马Z4,性能差距有多大?",
"hp": "340",
"hp_content": "340",
"Powertrain": "3.0T/8AT",
"speed": "69.57",
"mods": "0",
"tyre": "PSS*",
"temperature": "28",
"lv": "S",
"time": "",
"accelerate": "4.70",
"limit": "177.95",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"62.90"
},
{
"year":"2021",
"car": "GTI",
"BID": "BV1fA411k7WG",
"Btitle": "【4车进化】领克全车拆空,大战思域、GTI、CT4!",
"hp": "294",
"hp_content": "294",
"Powertrain": "2.0T/7DCT",
"speed": "69.58",
"mods": "1",
"tyre": "Cup2C",
"temperature": "4",
"lv": "A",
"time": "",
"accelerate": "6.03",
"limit": "178.37",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"22.98"
},
{
"year":"2017",
"car": "RS3",
"BID": "BV113411X7WB",
"Btitle": "改装GTI vs 原厂奥迪RS 3",
"hp": "400",
"hp_content": "400",
"Powertrain": "2.5T/7DCT",
"speed": "69.83",
"mods": "0",
"tyre": "PS4S",
"temperature": "4",
"lv": "A",
"time": "",
"accelerate": "3.89",
"limit": "180.80",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"51.38"
},
{
"year":"2018",
"car": "718",
"BID": "BV14S4y1p74Y",
"Btitle": "100W内天花板?",
"hp": "370",
"hp_content": "370",
"Powertrain": "2.0T/7DCT",
"speed": "69.83",
"mods": "1",
"tyre": "P0",
"temperature": "33",
"lv": "S",
"time": "",
"accelerate": "4.50",
"limit": "176.81",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"54.50"
},
{
"year":"2024",
"car": "03+TCR",
"BID": "BV1tw4m1a7UN",
"Btitle": "42万领克王,降维打击“本田王和现代王”?",
"hp": "350",
"hp_content": "350",
"Powertrain": "2.0T/8AT",
"speed": "69.96",
"mods": "0",
"tyre": "R31红",
"temperature": "32",
"lv": "A",
"time": "",
"accelerate": "5.42",
"limit": "171.76",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"42.03"
},
{
"year":"2024",
"car": "SU7 MAX",
"BID": "BV1J1421m791",
"Btitle": "真 · 保时捷平替,小米SU7~!",
"hp": "673",
"hp_content": "673",
"Powertrain": "E",
"speed": "69.99",
"mods": "0",
"tyre": "P0PZ5EV",
"temperature": "27",
"lv": "C",
"time": "",
"accelerate": "3.14",
"limit": "189.66",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"29.99"
},
{
"year":"2021",
"car": "C43",
"BID": "BV1jM411b7W6",
"Btitle": "CUP2C VS AD09,谁能助力AMG C 43登顶榜首?",
"hp": "390",
"hp_content": "390",
"Powertrain": "3.0T/9AT",
"speed": "70.05",
"mods": "1",
"tyre": "Cup2C",
"temperature": "12",
"lv": "B",
"time": "",
"accelerate": "4.11",
"limit": "177.03",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"57.38"
},
{
"year":"2021",
"car": "C43",
"BID": "BV1jM411b7W6",
"Btitle": "CUP2C VS AD09,谁能助力AMG C 43登顶榜首?",
"hp": "390",
"hp_content": "390",
"Powertrain": "3.0T/9AT",
"speed": "70.05",
"mods": "1",
"tyre": "AD09",
"temperature": "12",
"lv": "B",
"time": "",
"accelerate": "4.11",
"limit": "176.00",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"57.38"
},
{
"year":"2017",
"car": "BRZ",
"BID": "BV1JR4y167Uu",
"Btitle": "【新老BRZ进化】轮上马力相差多少?",
"hp": "217",
"hp_content": "217",
"Powertrain": "2.0/6MT",
"speed": "70.26",
"mods": "1",
"tyre": "V01R",
"temperature": "4",
"lv": "S",
"time": "",
"accelerate": "6.98",
"limit": "158.78",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"26.98"
},
{
"year":"2017",
"car": "TT RS",
"BID": "BV1DB4y1W75H",
"Btitle": "TTRS直线居然输M2C?",
"hp": "400",
"hp_content": "400",
"Powertrain": "2.5T/7DCT",
"speed": "70.35",
"mods": "0",
"tyre": "PS4S*",
"temperature": "24",
"lv": "S",
"time": "",
"accelerate": "3.94",
"limit": "181.65",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"76.98"
},
{
"year":"2021",
"car": "思域HB",
"BID": "BV1fA411k7WG",
"Btitle": "【4车进化】领克全车拆空,大战思域、GTI、CT4!",
"hp": "232",
"hp_content": "232",
"Powertrain": "1.5T/6MT",
"speed": "70.50",
"mods": "1",
"tyre": "Cup2C",
"temperature": "4",
"lv": "A",
"time": "",
"accelerate": "6.27",
"limit": "165.21",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"15.99"
},
{
"year":"2022",
"car": "Z4 M40i",
"BID": "BV1wW4y1C7Zn",
"Btitle": "丰田SUPRA和宝马Z4,性能差距有多大?",
"hp": "340",
"hp_content": "340",
"Powertrain": "3.0T/8AT",
"speed": "70.52",
"mods": "0",
"tyre": "PSS*",
"temperature": "30",
"lv": "S",
"time": "",
"accelerate": "4.74",
"limit": "174.90",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"62.98"
},
{
"year":"2014",
"car": "STI11",
"BID": "BV1XC41177oq",
"Btitle": "斯巴鲁最后荣光,11代STI能打赢原厂TR么?~",
"hp": "300",
"hp_content": "300",
"Powertrain": "2.5T/6MT",
"speed": "70.55",
"mods": "1",
"tyre": "A052",
"temperature": "13",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "164.68",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"--"
},
{
"year":"2019",
"car": "C43 旅行",
"BID": "BV1ST411f7sT",
"Btitle": "改装C 43能战胜奥迪RS 5?",
"hp": "520",
"hp_content": "520",
"Powertrain": "3.0T/9AT",
"speed": "70.80",
"mods": "1",
"tyre": "PS4S",
"temperature": "12",
"lv": "B",
"time": "",
"accelerate": "3.69",
"limit": "181.61",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"65.38"
},
{
"year":"2022",
"car": "BRZ",
"BID": "BV1rP4y1m7hJ",
"Btitle": "【新老BRZ进化】刹车是反向改装?",
"hp": "234",
"hp_content": "234",
"Powertrain": "2.4/6MT",
"speed": "70.83",
"mods": "0",
"tyre": "V01R",
"temperature": "17",
"lv": "S",
"time": "",
"accelerate": "6.26",
"limit": "163.72",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"30.88"
},
{
"year":"2017",
"car": "BRZ",
"BID": "BV16G4y1g7G8",
"Btitle": "【新老BRZ进化】避震篇",
"hp": "200",
"hp_content": "200",
"Powertrain": "2.0/6MT",
"speed": "70.95",
"mods": "1",
"tyre": "V01R",
"temperature": "14",
"lv": "S",
"time": "",
"accelerate": "--",
"limit": "154.51",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"26.98"
},
{
"year":"2008",
"car": "STI",
"BID": "BV1Fu4m1u75P",
"Btitle": "不到20W的斯巴鲁STI,能赢42W的本田TR么?",
"hp": "350",
"hp_content": "350",
"Powertrain": "2.5T/6MT",
"speed": "71.00",
"mods": "1",
"tyre": "AD09",
"temperature": "13",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "165.26",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"48.80"
},
{
"year":"2023",
"car": "思域 Type-R",
"BID": "BV18e411C7bH",
"Btitle": "本田,现代,谁是前驱王。",
"hp": "300",
"hp_content": "300",
"Powertrain": "2.0T/6MT",
"speed": "71.03",
"mods": "0",
"tyre": "PS4S",
"temperature": "6",
"lv": "A",
"time": "",
"accelerate": "5.66",
"limit": "169.98",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"42.00"
},
{
"year":"2017",
"car": "Panamera 4S",
"BID": "BV1qr4y1j7Wd",
"Btitle": "Panamera跑赛道和911差多少?",
"hp": "441",
"hp_content": "441",
"Powertrain": "2.9T/8DCT",
"speed": "71.32",
"mods": "0",
"tyre": "P0",
"temperature": "24",
"lv": "D",
"time": "",
"accelerate": "4.09",
"limit": "175.32",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"152.80"
},
{
"year":"2022",
"car": "718 Cayman",
"BID": "BV15P411P7hu",
"Btitle": "保时捷718能战胜同价位丰田SUPRA?",
"hp": "250",
"hp_content": "250",
"Powertrain": "2.0T/7DCT",
"speed": "71.33",
"mods": "0",
"tyre": "PS4S",
"temperature": "17",
"lv": "S",
"time": "",
"accelerate": "5.13",
"limit": "164.44",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"56.50"
},
{
"year":"2003",
"car": "360 Modena",
"BID": "BV1SF411F78o",
"Btitle": "40万买法拉利,跑不过86?",
"hp": "400",
"hp_content": "400",
"Powertrain": "3.6/6SMG",
"speed": "71.55",
"mods": "0",
"tyre": "PS4S*",
"temperature": "22",
"lv": "S",
"time": "",
"accelerate": "5.25",
"limit": "176.26",
"powerType":"0",
"producer":"2",
"nationality":"IT",
"price":"330.00"
},
{
"year":"2023",
"car": "Elantra N",
"BID": "BV1Dc411278A",
"Btitle": "中规伊兰特N,依然是前驱的王?",
"hp": "276",
"hp_content": "276",
"Powertrain": "2.0T/8DCT",
"speed": "71.56",
"mods": "0",
"tyre": "PS4S HN",
"temperature": "6",
"lv": "A",
"time": "",
"accelerate": "5.35",
"limit": "170.89",
"powerType":"0",
"producer":"2",
"nationality":"KR",
"price":"24.98"
},
{
"year":"2022",
"car": "03+ Cyan",
"BID": "BV1fA411k7WG",
"Btitle": "【4车进化】领克全车拆空,大战思域、GTI、CT4!",
"hp": "269",
"hp_content": "269",
"Powertrain": "2.0T/8AT",
"speed": "71.63",
"mods": "1",
"tyre": "Cup2C",
"temperature": "5",
"lv": "A",
"time": "",
"accelerate": "5.50",
"limit": "157.68",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"25.68"
},
{
"year":"2021",
"car": "GTI",
"BID": "BV1U84y1j7L5",
"Btitle": "【4车进化】领克03+,大众GTI,凯迪拉克CT4,本田思域,谁的轮上马力最大?",
"hp": "294",
"hp_content": "294",
"Powertrain": "2.0T/7DCT",
"speed": "71.69",
"mods": "1",
"tyre": "Cup2C",
"temperature": "5",
"lv": "A",
"time": "",
"accelerate": "5.66",
"limit": "178.50",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"22.98"
},
{
"year":"2021",
"car": "S4",
"BID": "BV1Co4y1v7fq",
"Btitle": "奥迪S4,山路赛道大败北?",
"hp": "354",
"hp_content": "354",
"Powertrain": "3.0T/8AT",
"speed": "71.71",
"mods": "0",
"tyre": "PS4S*",
"temperature": "-2",
"lv": "B",
"time": "",
"accelerate": "4.56",
"limit": "171.54",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"46.88"
},
{
"year":"2022",
"car": "ZEEKR 001",
"BID": "BV1bD4y1s7WC",
"Btitle": "极氪001赛道版来了?",
"hp": "544",
"hp_content": "544",
"Powertrain": "E",
"speed": "71.96",
"mods": "0",
"tyre": "PC6",
"temperature": "15",
"lv": "C",
"time": "",
"accelerate": "3.88",
"limit": "179.37",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"38.60"
},
{
"year":"2021",
"car": "CT4",
"BID": "BV1fA411k7WG",
"Btitle": "【4车进化】领克全车拆空,大战思域、GTI、CT4!",
"hp": "264",
"hp_content": "264",
"Powertrain": "2.0T/8AT",
"speed": "72.16",
"mods": "1",
"tyre": "Cup2C",
"temperature": "4",
"lv": "B",
"time": "",
"accelerate": "6.18",
"limit": "159.45",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"25.97"
},
{
"year":"2012",
"car": "劳恩斯-酷派",
"BID": "BV1R54y1K7sP",
"Btitle": "EVO的跑车版本:劳恩斯-酷派",
"hp": "330",
"hp_content": "330",
"Powertrain": "2.0T/6MT",
"speed": "72.16",
"mods": "1",
"tyre": "Cup2C",
"temperature": "13",
"lv": "S",
"time": "",
"accelerate": "5.86",
"limit": "166.97",
"powerType":"0",
"producer":"2",
"nationality":"KR",
"price":"23.36"
},
{
"year":"2023",
"car": "影豹R",
"BID": "BV14N411p7uU",
"Btitle": "国产车 X 国产改件,出征小纽北~",
"hp": "265",
"hp_content": "265",
"Powertrain": "2.0T/8AT",
"speed": "72.27",
"mods": "1",
"tyre": "A052",
"temperature": "26",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "163.28",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"13.80"
},
{
"year":"2017",
"car": "BRZ",
"BID": "BV1rP4y1m7hJ",
"Btitle": "【新老BRZ进化】刹车是反向改装?",
"hp": "200",
"hp_content": "200",
"Powertrain": "2.0/6MT",
"speed": "72.31",
"mods": "0",
"tyre": "V01R",
"temperature": "17",
"lv": "S",
"time": "",
"accelerate": "7.18",
"limit": "159.44",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"26.97"
},
{
"year":"2024",
"car": "03+ Racing",
"BID": "BV1TJ4m1Y76E",
"Btitle": "32万国产车,是AMG A35克星?",
"hp": "350",
"hp_content": "350",
"Powertrain": "2.0T/8AT",
"speed": "72.46",
"mods": "0",
"tyre": "PS4S",
"temperature": "14",
"lv": "A",
"time": "",
"accelerate": "5.06",
"limit": "169.98",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"32.58"
},
{
"year":"2022",
"car": "03+ Cyan",
"BID": "BV1He4y1s7wS",
"Btitle": "【4车进化】GTI和03+火星组地位不保,手动思域和后驱CT4的逆袭成功?",
"hp": "265",
"hp_content": "265",
"Powertrain": "2.0T/8AT",
"speed": "72.48",
"mods": "1",
"tyre": "Cup2C",
"temperature": "13",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "157.34",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"25.68"
},
{
"year":"2021",
"car": "CT4",
"BID": "BV1U84y1j7L5",
"Btitle": "【4车进化】领克03+,大众GTI,凯迪拉克CT4,本田思域,谁的轮上马力最大?",
"hp": "264",
"hp_content": "264",
"Powertrain": "2.0T/8AT",
"speed": "72.55",
"mods": "1",
"tyre": "Cup2C",
"temperature": "5",
"lv": "B",
"time": "",
"accelerate": "6.76",
"limit": "158.39",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"25.97"
},
{
"year":"2022",
"car": "03+ Cyan",
"BID": "BV1U84y1j7L5",
"Btitle": "【4车进化】领克03+,大众GTI,凯迪拉克CT4,本田思域,谁的轮上马力最大?",
"hp": "269",
"hp_content": "269",
"Powertrain": "2.0T/8AT",
"speed": "72.66",
"mods": "1",
"tyre": "Cup2C",
"temperature": "5",
"lv": "A",
"time": "",
"accelerate": "5.76",
"limit": "156.83",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"25.68"
},
{
"year":"2022",
"car": "BRZ",
"BID": "BV1ia41157dM",
"Btitle": "【新老BRZ进化】换山东胎,刹车秒杀保时捷?",
"hp": "234",
"hp_content": "234",
"Powertrain": "2.4/6MT",
"speed": "72.72",
"mods": "0",
"tyre": "V01R",
"temperature": "34",
"lv": "S",
"time": "",
"accelerate": "7.49",
"limit": "154.02",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"30.88"
},
{
"year":"2021",
"car": "极星2",
"BID": "BV1Rg411m776",
"Btitle": "极星2才是电车王!",
"hp": "408",
"hp_content": "408",
"Powertrain": "E",
"speed": "72.81",
"mods": "0",
"tyre": "PS4S",
"temperature": "30",
"lv": "A",
"time": "",
"accelerate": "4.66",
"limit": "169.68",
"powerType":"1",
"producer":"1",
"nationality":"SW",
"price":"35.88"
},
{
"year":"2023",
"car": "smart精灵#3",
"BID": "BV1Qt4y1f7Lj",
"Btitle": "20W+,买百奔之王!!!",
"hp": "428",
"hp_content": "428",
"Powertrain": "E",
"speed": "72.96",
"mods": "0",
"tyre": "EC6Q",
"temperature": "40",
"lv": "A",
"time": "",
"accelerate": "3.80",
"limit": "176.84",
"powerType":"1",
"producer":"1",
"nationality":"DE",
"price":"28.99"
},
{
"year":"2021",
"car": "GTI",
"BID": "BV1He4y1s7wS",
"Btitle": "【4车进化】GTI和03+火星组地位不保,手动思域和后驱CT4的逆袭成功?",
"hp": "220",
"hp_content": "220",
"Powertrain": "2.0T/7DCT",
"speed": "72.96",
"mods": "1",
"tyre": "Cup2C",
"temperature": "13",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "158.00",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"22.98"
},
{
"year":"2020",
"car": "Macan GTS",
"BID": "BV1kB4y1873e",
"Btitle": "不是山东胎的MACAN GTS,反杀榜首X4M?",
"hp": "381",
"hp_content": "381",
"Powertrain": "2.9T/7DCT",
"speed": "73.00",
"mods": "0",
"tyre": "P0",
"temperature": "35",
"lv": "SUV2",
"time": "",
"accelerate": "4.68",
"limit": "169.55",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"76.80"
},
{
"year":"2025",
"car": "03+",
"BID": "BV177r8BmEcv",
"Btitle": "309马力4驱的领克03+,只要23W~!!",
"hp": "309",
"hp_content": "309",
"Powertrain": "2.0T/8AT",
"speed": "73.00",
"mods": "0",
"tyre": "MC6",
"temperature": "3",
"lv": "A",
"time": "",
"accelerate": "5.61",
"limit": "162.27",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"23.88"
},
{
"year":"2022",
"car": "BRZ",
"BID": "BV1nZ4y1q79U",
"Btitle": "【新老BRZ进化】烂仔逆袭,新老BRZ同胎大战!",
"hp": "234",
"hp_content": "234",
"Powertrain": "2.4/6MT",
"speed": "73.07",
"mods": "0",
"tyre": "PS4",
"temperature": "25",
"lv": "S",
"time": "",
"accelerate": "6.35",
"limit": "160.03",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"30.88"
},
{
"year":"2021",
"car": "A35",
"BID": "BV14T411K7pi",
"Btitle": "A35能赢李松桥100W的EVO 9么?",
"hp": "306",
"hp_content": "306",
"Powertrain": "2.0T/7DCT",
"speed": "73.08",
"mods": "0",
"tyre": "P0",
"temperature": "28",
"lv": "A",
"time": "",
"accelerate": "4.84",
"limit": "163.98",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"43.98"
},
{
"year":"2022",
"car": "03+ Cyan(22",
"BID": "BV1cD4y1k7ru",
"Btitle": "【4车进化】中美日德大战,家乡的樱花凋零~",
"hp": "265",
"hp_content": "265",
"Powertrain": "2.0T/8AT",
"speed": "73.25",
"mods": "1",
"tyre": "Cup2C",
"temperature": "15",
"lv": "A",
"time": "",
"accelerate": "6.15",
"limit": "155.91",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"25.68"
},
{
"year":"2021",
"car": "GTI",
"BID": "BV1cD4y1k7ru",
"Btitle": "【4车进化】中美日德大战,家乡的樱花凋零~",
"hp": "220",
"hp_content": "220",
"Powertrain": "2.0T/7DCT",
"speed": "73.43",
"mods": "1",
"tyre": "Cup2C",
"temperature": "15",
"lv": "A",
"time": "",
"accelerate": "6.75",
"limit": "156.96",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"22.98"
},
{
"year":"2011",
"car": "尚酷R",
"BID": "BV1xW4y1W78E",
"Btitle": "10W,买500匹潜力的钢炮王!",
"hp": "256",
"hp_content": "256",
"Powertrain": "2.0T/7DCT",
"speed": "73.66",
"mods": "1",
"tyre": "V02R",
"temperature": "16",
"lv": "S",
"time": "",
"accelerate": "5.97",
"limit": "163.25",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"39.88"
},
{
"year":"2021",
"car": "CT4",
"BID": "BV1He4y1s7wS",
"Btitle": "【4车进化】GTI和03+火星组地位不保,手动思域和后驱CT4的逆袭成功?",
"hp": "237",
"hp_content": "237",
"Powertrain": "2.0T/8AT",
"speed": "73.70",
"mods": "1",
"tyre": "Cup2C",
"temperature": "13",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "148.49",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"25.97"
},
{
"year":"2023",
"car": "M240i",
"BID": "BV1XV411X7GJ",
"Btitle": "最便宜的B58,宝马240i真香!",
"hp": "333",
"hp_content": "333",
"Powertrain": "3.0T/8AT",
"speed": "73.71",
"mods": "0",
"tyre": "P0 PZ4",
"temperature": "25",
"lv": "A",
"time": "",
"accelerate": "5.10",
"limit": "168.84",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"41.98"
},
{
"year":"2017",
"car": "BRZ",
"BID": "BV1nZ4y1q79U",
"Btitle": "【新老BRZ进化】烂仔逆袭,新老BRZ同胎大战!",
"hp": "200",
"hp_content": "200",
"Powertrain": "2.0/6MT",
"speed": "73.72",
"mods": "0",
"tyre": "PS4",
"temperature": "25",
"lv": "S",
"time": "",
"accelerate": "7.77",
"limit": "153.99",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"26.98"
},
{
"year":"2021",
"car": "GTI",
"BID": "BV1Ge4y117y9",
"Btitle": "【4车进化】GTI变成了最难开的车..",
"hp": "220",
"hp_content": "220",
"Powertrain": "2.0T/7DCT",
"speed": "73.81",
"mods": "1",
"tyre": "Cup2C",
"temperature": "20",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "158.61",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"22.98"
},
{
"year":"2022",
"car": "03+ Cyan",
"BID": "BV1Ge4y117y9",
"Btitle": "【4车进化】GTI变成了最难开的车..",
"hp": "265",
"hp_content": "265",
"Powertrain": "2.0T/8AT",
"speed": "73.81",
"mods": "1",
"tyre": "Cup2C",
"temperature": "20",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "158.61",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"25.68"
},
{
"year":"2022",
"car": "海豹",
"BID": "BV1LP4y1272r",
"Btitle": "四驱海豹,真性能么?",
"hp": "530",
"hp_content": "530",
"Powertrain": "E",
"speed": "73.97",
"mods": "0",
"tyre": "SC7",
"temperature": "15",
"lv": "A",
"time": "",
"accelerate": "3.89",
"limit": "168.71",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"28.98"
},
{
"year":"2020",
"car": "Mustang",
"BID": "BV1y14y1n7ya",
"Btitle": "野马杀爆电野马...",
"hp": "299",
"hp_content": "299",
"Powertrain": "2.3T/10AT",
"speed": "74.03",
"mods": "0",
"tyre": "P0",
"temperature": "15",
"lv": "S",
"time": "",
"accelerate": "5.64",
"limit": "161.07",
"powerType":"0",
"producer":"2",
"nationality":"US",
"price":"36.98"
},
{
"year":"2017",
"car": "BRZ",
"BID": "BV1ia41157dM",
"Btitle": "【新老BRZ进化】换山东胎,刹车秒杀保时捷?",
"hp": "200",
"hp_content": "200",
"Powertrain": "2.0/6MT",
"speed": "74.11",
"mods": "0",
"tyre": "V01R",
"temperature": "34",
"lv": "S",
"time": "",
"accelerate": "8.32",
"limit": "149.51",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"26.98"
},
{
"year":"2021",
"car": "思域HB",
"BID": "BV1He4y1s7wS",
"Btitle": "【4车进化】GTI和03+火星组地位不保,手动思域和后驱CT4的逆袭成功?",
"hp": "177",
"hp_content": "177",
"Powertrain": "1.5T/6MT",
"speed": "74.11",
"mods": "1",
"tyre": "Cup2C",
"temperature": "13",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "147.86",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"15.99"
},
{
"year":"2022",
"car": "540i",
"BID": "BV1px4y157Jf",
"Btitle": "3.0T标轴后驱5系王,540i能干掉奥迪S4?",
"hp": "340",
"hp_content": "340",
"Powertrain": "3.0T/8AT",
"speed": "74.35",
"mods": "0",
"tyre": "Eagle F1*",
"temperature": "11",
"lv": "C",
"time": "",
"accelerate": "5.22",
"limit": "167.74",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"61.99"
},
{
"year":"2021",
"car": "CT4",
"BID": "BV1cD4y1k7ru",
"Btitle": "【4车进化】中美日德大战,家乡的樱花凋零~",
"hp": "237",
"hp_content": "237",
"Powertrain": "2.0T/8AT",
"speed": "74.48",
"mods": "1",
"tyre": "Cup2C",
"temperature": "15",
"lv": "A",
"time": "",
"accelerate": "7.35",
"limit": "152.73",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"25.97"
},
{
"year":"2022",
"car": "ZEEKR 001",
"BID": "BV1zF411c7Qd",
"Btitle": "谁是国产之王?极氪 001挑战蔚来ET7榜首!",
"hp": "544",
"hp_content": "544",
"Powertrain": "E",
"speed": "74.61",
"mods": "0",
"tyre": "PC6",
"temperature": "34",
"lv": "C",
"time": "",
"accelerate": "3.88",
"limit": "181.07",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"38.60"
},
{
"year":"2021",
"car": "Mastang Mach-E",
"BID": "BV1Ae4y1g7M6",
"Btitle": "电野马和油野马,谁更强?",
"hp": "488",
"hp_content": "488",
"Powertrain": "E",
"speed": "74.66",
"mods": "0",
"tyre": "P0",
"temperature": "14",
"lv": "SUV2",
"time": "",
"accelerate": "4.00",
"limit": "165.10",
"powerType":"1",
"producer":"2",
"nationality":"US",
"price":"36.99"
},
{
"year":"2021",
"car": "CT4",
"BID": "BV1Ge4y117y9",
"Btitle": "【4车进化】GTI变成了最难开的车..",
"hp": "237",
"hp_content": "237",
"Powertrain": "2.0T/8AT",
"speed": "74.68",
"mods": "1",
"tyre": "Cup2C",
"temperature": "20",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "149.77",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"25.97"
},
{
"year":"2021",
"car": "思域HB",
"BID": "BV1cD4y1k7ru",
"Btitle": "【4车进化】中美日德大战,家乡的樱花凋零~",
"hp": "177",
"hp_content": "177",
"Powertrain": "1.5T/6MT",
"speed": "74.71",
"mods": "1",
"tyre": "Cup2C",
"temperature": "15",
"lv": "A",
"time": "",
"accelerate": "8.24",
"limit": "149.12",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"15.99"
},
{
"year":"2022",
"car": "A5",
"BID": "BV1uG4y1o71X",
"Btitle": "无敌的四驱A5,把宝马粉开哭了",
"hp": "252",
"hp_content": "252",
"Powertrain": "2.0T/7DCT",
"speed": "74.86",
"mods": "0",
"tyre": "S001",
"temperature": "15",
"lv": "B",
"time": "",
"accelerate": "5.81",
"limit": "157.45",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"48.88"
},
{
"year":"2026",
"car": "领克03",
"BID": "BV1pHzxBrEon",
"Btitle": "新领克03,比影豹R快么?",
"hp": "272",
"hp_content": "272",
"Powertrain": "2.0T/8AT",
"speed": "75.00",
"mods": "0",
"tyre": "MC6",
"temperature": "-2",
"lv": "A",
"time": "",
"accelerate": "6.27",
"limit": "155.21",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"15.68"
},
{
"year":"2024",
"car": "影豹R",
"BID": "BV1Fx4y147mm",
"Btitle": "2024款影豹R,更快了?",
"hp": "265",
"hp_content": "265",
"Powertrain": "2.0T/8AT",
"speed": "75.28",
"mods": "0",
"tyre": "PS5",
"temperature": "28",
"lv": "A",
"time": "",
"accelerate": "5.92",
"limit": "159.46",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"15.80"
},
{
"year":"2017",
"car": "C200 Coupe",
"BID": "BV16o2kBTE2p",
"Btitle": "【同事的车】小锤的奔驰 vs 钊博的宝马!!!",
"hp": "184",
"hp_content": "184",
"Powertrain": "2.0T/9AT",
"speed": "75.28",
"mods": "0",
"tyre": "PS4",
"temperature": "10",
"lv": "B",
"time": "",
"accelerate": "6.52",
"limit": "151.32",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"38.28"
},
{
"year":"2022",
"car": "迈锐宝XL",
"BID": "BV1Xe411A7dS",
"Btitle": "20万最强!买菜车吊打小钢炮?",
"hp": "237",
"hp_content": "237",
"Powertrain": "2.0T/9AT",
"speed": "75.48",
"mods": "0",
"tyre": "MC5",
"temperature": "4",
"lv": "A",
"time": "",
"accelerate": "6.78",
"limit": "154.97",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"21.99"
},
{
"year":"2021",
"car": "思域HB",
"BID": "BV1Ge4y117y9",
"Btitle": "【4车进化】GTI变成了最难开的车..",
"hp": "177",
"hp_content": "177",
"Powertrain": "1.5T/6MT",
"speed": "75.48",
"mods": "1",
"tyre": "Cup2C",
"temperature": "20",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "146.13",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"15.99"
},
{
"year":"2019",
"car": "S3",
"BID": "BV1Ua411K767",
"Btitle": "奥迪S3+卫途轮胎的圈速测试..",
"hp": "290",
"hp_content": "290",
"Powertrain": "2.0T/7DCT",
"speed": "75.56",
"mods": "0",
"tyre": "V02R",
"temperature": "38",
"lv": "A",
"time": "",
"accelerate": "5.42",
"limit": "162.36",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"36.38"
},
{
"year":"2021",
"car": "GTI",
"BID": "BV1kB4y167xf",
"Btitle": "【4车进化】前驱后驱四驱,谁最强?",
"hp": "220",
"hp_content": "220",
"Powertrain": "2.0T/7DCT",
"speed": "75.69",
"mods": "0",
"tyre": "K127",
"temperature": "38",
"lv": "A",
"time": "",
"accelerate": "6.73",
"limit": "158.84",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"22.98"
},
{
"year":"2014",
"car": "思域Si",
"BID": "BV1Rj411G7Wu",
"Btitle": "2.4+手动+LSD,思域Si赛道能赢GTI?",
"hp": "217",
"hp_content": "217",
"Powertrain": "2.4/6MT",
"speed": "75.83",
"mods": "1",
"tyre": "PS5",
"temperature": "6",
"lv": "A",
"time": "",
"accelerate": "6.59",
"limit": "154.65",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"19.98"
},
{
"year":"2022",
"car": "ET7",
"BID": "BV1zZ4y1Y7Lm",
"Btitle": "易车圈速榜马力最大的车,蔚来ET7",
"hp": "653",
"hp_content": "653",
"Powertrain": "E",
"speed": "75.90",
"mods": "0",
"tyre": "EC6",
"temperature": "24",
"lv": "C",
"time": "",
"accelerate": "3.75",
"limit": "175.76",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"45.80"
},
{
"year":"2022",
"car": "03+ Cyan",
"BID": "BV1kB4y167xf",
"Btitle": "【4车进化】前驱后驱四驱,谁最强?",
"hp": "265",
"hp_content": "265",
"Powertrain": "2.0T/8AT",
"speed": "75.90",
"mods": "0",
"tyre": "PS4S",
"temperature": "36",
"lv": "A",
"time": "",
"accelerate": "6.88",
"limit": "155.07",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"25.68"
},
{
"year":"2022",
"car": "i3 35L",
"BID": "BV1Lg411Y7Wb",
"Btitle": "比3系还3系?i3赛道测试",
"hp": "286",
"hp_content": "286",
"Powertrain": "E",
"speed": "76.05",
"mods": "0",
"tyre": "御乘II",
"temperature": "28",
"lv": "B",
"time": "",
"accelerate": "5.53",
"limit": "155.18",
"powerType":"1",
"producer":"1",
"nationality":"DE",
"price":"34.99"
},
{
"year":"2017",
"car": "220i",
"BID": "BV16o2kBTE2p",
"Btitle": "【同事的车】小锤的奔驰 vs 钊博的宝马!!!",
"hp": "184",
"hp_content": "184",
"Powertrain": "2.0T/8AT",
"speed": "77.21",
"mods": "0",
"tyre": "K117",
"temperature": "10",
"lv": "A",
"time": "",
"accelerate": "7.05",
"limit": "148.17",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"32.00"
},
{
"year":"2022",
"car": "05+",
"BID": "BBV13N4y137Ha",
"Btitle": "开完赛道SUV,再开领克05+是什么体验?",
"hp": "265",
"hp_content": "265",
"Powertrain": "2.0T/8AT",
"speed": "77.43",
"mods": "0",
"tyre": "PS4S",
"temperature": "27",
"lv": "SUV1",
"time": "",
"accelerate": "7.07",
"limit": "143.99",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"23.58"
},
{
"year":"2021",
"car": "CC猎装",
"BID": "BV1gY411U72a",
"Btitle": "CC旅行跑赛道,GTI精神重现?",
"hp": "220",
"hp_content": "220",
"Powertrain": "2.0T/7DCT",
"speed": "77.45",
"mods": "0",
"tyre": "P7",
"temperature": "12",
"lv": "B",
"time": "",
"accelerate": "7.26",
"limit": "150.04",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"29.99"
},
{
"year":"2021",
"car": "星越L",
"BID": "BV1dA411C7nh",
"Btitle": "星越L才是真正的赛道级?",
"hp": "239",
"hp_content": "239",
"Powertrain": "2.0T/8AT",
"speed": "77.83",
"mods": "0",
"tyre": "Eagle F1",
"temperature": "2",
"lv": "SUV1",
"time": "",
"accelerate": "6.84",
"limit": "148.52",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"18.52"
},
{
"year":"2022",
"car": "03",
"BID": "BV1ZP4y1o7Bz",
"Btitle": "2.0T+DCT的领克03,必秒03+?",
"hp": "190",
"hp_content": "190",
"Powertrain": "2.0T/7DCT",
"speed": "78.03",
"mods": "0",
"tyre": "御乘II",
"temperature": "29",
"lv": "A",
"time": "",
"accelerate": "7.83",
"limit": "146.22",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"15.08"
},
{
"year":"2022",
"car": "325i",
"BID": "BV1qW4y1j7Eo",
"Btitle": "40万184马力,宝马325i值么?",
"hp": "184",
"hp_content": "184",
"Powertrain": "2.0T/8AT",
"speed": "78.47",
"mods": "0",
"tyre": "T005",
"temperature": "17",
"lv": "B",
"time": "",
"accelerate": "7.65",
"limit": "142.78",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"31.39"
},
{
"year":"2011",
"car": "凯泽西",
"BID": "BV1Xx4y1F7tp",
"Btitle": "2.4手动凯泽西,纽北调校研发的铃木王!",
"hp": "178",
"hp_content": "178",
"Powertrain": "2.0/6MT",
"speed": "78.60",
"mods": "0",
"tyre": "PS5",
"temperature": "6",
"lv": "B",
"time": "",
"accelerate": "8.54",
"limit": "141.95",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"18.88"
},
{
"year":"2022",
"car": "型格",
"BID": "BV1AY4y1x7kS",
"Btitle": "本田内战,型格和思域性能PK~",
"hp": "182",
"hp_content": "182",
"Powertrain": "1.5T/CVT",
"speed": "78.62",
"mods": "0",
"tyre": "SP050",
"temperature": "27",
"lv": "A",
"time": "",
"accelerate": "8.46",
"limit": "147.32",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"16.69"
},
{
"year":"2021",
"car": "CT4",
"BID": "BV1kB4y167xf",
"Btitle": "【4车进化】前驱后驱四驱,谁最强?",
"hp": "237",
"hp_content": "237",
"Powertrain": "2.0T/8AT",
"speed": "79.05",
"mods": "0",
"tyre": "PC6 SSR",
"temperature": "38",
"lv": "A",
"time": "",
"accelerate": "7.72",
"limit": "145.19",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"25.97"
},
{
"year":"2022",
"car": "UNI-V",
"BID": "BV1vY4y1x7es",
"Btitle": "思域克星:UNI-V!",
"hp": "188",
"hp_content": "188",
"Powertrain": "1.5T/7DCT",
"speed": "79.77",
"mods": "0",
"tyre": "MC6",
"temperature": "25",
"lv": "A",
"time": "",
"accelerate": "7.01",
"limit": "142.15",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"11.69"
},
{
"year":"2020",
"car": "福克斯",
"BID": "BV1FT411F7X5",
"Btitle": "四缸福克斯 vs 三缸福克斯,谁是赛道之王?",
"hp": "174",
"hp_content": "174",
"Powertrain": "1.5T/8AT",
"speed": "79.84",
"mods": "0",
"tyre": "PS4",
"temperature": "30",
"lv": "A",
"time": "",
"accelerate": "9.24",
"limit": "134.59",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"15.08"
},
{
"year":"2021",
"car": "思域HB",
"BID": "BV1kB4y167xf",
"Btitle": "【4车进化】前驱后驱四驱,谁最强?",
"hp": "177",
"hp_content": "177",
"Powertrain": "1.5T/6MT",
"speed": "79.95",
"mods": "0",
"tyre": "Advan DB",
"temperature": "38",
"lv": "A",
"time": "",
"accelerate": "8.65",
"limit": "145.81",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"15.99"
},
{
"year":"2022",
"car": "MG5天蝎座",
"BID": "BV1c341137Qo",
"Btitle": "MG5天蝎座,01加速9秒多…",
"hp": "181",
"hp_content": "181",
"Powertrain": "1.5T/7DCT",
"speed": "80.13",
"mods": "0",
"tyre": "3ST",
"temperature": "28",
"lv": "A",
"time": "",
"accelerate": "9.13",
"limit": "145.22",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"11.79"
},
{
"year":"2022",
"car": "思域",
"BID": "BV1AY4y1x7kS",
"Btitle": "本田内战,型格和思域性能PK~",
"hp": "182",
"hp_content": "182",
"Powertrain": "1.5T/CVT",
"speed": "80.20",
"mods": "0",
"tyre": "MA510",
"temperature": "27",
"lv": "A",
"time": "",
"accelerate": "8.27",
"limit": "147.42",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"14.29"
},
{
"year":"2022",
"car": "凌云S",
"BID": "BV1bF411c7tW",
"Btitle": "261马力的凌云S,大直线被1.5T思域拉爆?",
"hp": "261",
"hp_content": "261",
"Powertrain": "2.0T/7DCT",
"speed": "80.21",
"mods": "0",
"tyre": "UC6",
"temperature": "27",
"lv": "SUV1",
"time": "",
"accelerate": "7.46",
"limit": "146.99",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"16.99"
},
{
"year":"2012",
"car": "星骋",
"BID": "BV1Gv4y1u7ZU",
"Btitle": "新老马自达3圈速比拼!谁是A级自吸之王?",
"hp": "150",
"hp_content": "150",
"Powertrain": "2.0/6MT",
"speed": "80.32",
"mods": "0",
"tyre": "T005",
"temperature": "25",
"lv": "A",
"time": "",
"accelerate": "9.54",
"limit": "137.70",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"13.98"
},
{
"year":"2022",
"car": "福克斯",
"BID": "BV1FT411F7X5",
"Btitle": "四缸福克斯 vs 三缸福克斯,谁是赛道之王?",
"hp": "177",
"hp_content": "177",
"Powertrain": "1.5T/6AT",
"speed": "80.55",
"mods": "0",
"tyre": "PS4",
"temperature": "30",
"lv": "A",
"time": "",
"accelerate": "8.50",
"limit": "133.61",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"14.38"
},
{
"year":"2022",
"car": "ID.4 CROZZ",
"BID": "BV1114y1L72H",
"Btitle": "ID.4 vs ID.3,圈速测试",
"hp": "204",
"hp_content": "204",
"Powertrain": "E",
"speed": "80.60",
"mods": "0",
"tyre": "御乘II",
"temperature": "28",
"lv": "A",
"time": "",
"accelerate": "8.23",
"limit": "138.28",
"powerType":"1",
"producer":"1",
"nationality":"DE",
"price":"23.13"
},
{
"year":"2022",
"car": "ID.3",
"BID": "BV1oN4y1G7Gf",
"Btitle": "18W买后置后驱超跑?大众ID.3赛道测试!",
"hp": "170",
"hp_content": "170",
"Powertrain": "E",
"speed": "80.70",
"mods": "0",
"tyre": "K127 EV",
"temperature": "31",
"lv": "A",
"time": "",
"accelerate": "8.06",
"limit": "144.34",
"powerType":"1",
"producer":"1",
"nationality":"DE",
"price":"18.53"
},
{
"year":"2021",
"car": "昂克赛拉",
"BID": "BV1Gv4y1u7ZU",
"Btitle": "新老马自达3圈速比拼!谁是A级自吸之王?",
"hp": "156",
"hp_content": "156",
"Powertrain": "2.0/6AT",
"speed": "80.73",
"mods": "0",
"tyre": "T005",
"temperature": "25",
"lv": "A",
"time": "",
"accelerate": "9.53",
"limit": "138.60",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"14.79"
},
{
"year":"2006",
"car": "思域",
"BID": "BV1wjShB2ETR",
"Btitle": "八代思域进化,遇事不决米其林~!",
"hp": "140",
"hp_content": "140",
"Powertrain": "1.8/5MT",
"speed": "80.86",
"mods": "0",
"tyre": "浩悦5",
"temperature": "9",
"lv": "A",
"time": "",
"accelerate": "8.52",
"limit": "135.64",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"14.78"
},
{
"year":"2022",
"car": "X3 25i",
"BID": "BV1rt4y1c7aa",
"Btitle": "又是一个赛道级?宝马X3赛道测试",
"hp": "184",
"hp_content": "184",
"Powertrain": "2.0T/8AT",
"speed": "81.10",
"mods": "0",
"tyre": "P7",
"temperature": "26",
"lv": "SUV2",
"time": "",
"accelerate": "8.07",
"limit": "133.80",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"39.69"
},
{
"year":"2021",
"car": "奇骏",
"BID": "BV1Rg411C7CH",
"Btitle": "三缸奇骏真的好玩!",
"hp": "204",
"hp_content": "204",
"Powertrain": "1.5T/CVT",
"speed": "81.53",
"mods": "0",
"tyre": "SP050+",
"temperature": "38",
"lv": "SUV1",
"time": "",
"accelerate": "9.75",
"limit": "138.49",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"26.29"
},
{
"year":"2021",
"car": "海豚",
"BID": "BV1Qt4y1E7oz",
"Btitle": "海豚王必秒飞度!",
"hp": "177",
"hp_content": "177",
"Powertrain": "E",
"speed": "81.56",
"mods": "0",
"tyre": "RRP76",
"temperature": "25",
"lv": "A0",
"time": "",
"accelerate": "7.34",
"limit": "143.40",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"13.08"
},
{
"year":"2022",
"car": "皓影 AWD",
"BID": "BV1km42157Zo",
"Btitle": "广汽本田皓影,全能战士?!",
"hp": "192",
"hp_content": "192",
"Powertrain": "1.5T/CVT",
"speed": "81.68",
"mods": "0",
"tyre": "LS3",
"temperature": "25",
"lv": "SUV1",
"time": "",
"accelerate": "9.69",
"limit": "141.91",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"24.99"
},
{
"year":"2021",
"car": "飞度",
"BID": "BV1UF411V7Gb",
"Btitle": "飞度GR9,还是“超跑”么?",
"hp": "131",
"hp_content": "131",
"Powertrain": "1.5/CVT",
"speed": "81.71",
"mods": "0",
"tyre": "ENASAVE",
"temperature": "28",
"lv": "A0",
"time": "",
"accelerate": "9.95",
"limit": "136.53",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"8.68"
},
{
"year":"2020",
"car": "锐际",
"BID": "BV1rD4y1i7hD",
"Btitle": "(原视频已下架)",
"hp": "248",
"hp_content": "248",
"Powertrain": "2.0T/8AT",
"speed": "82.33",
"mods": "0",
"tyre": "SV",
"temperature": "30",
"lv": "SUV1",
"time": "",
"accelerate": "7.38",
"limit": "140.22",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"15.98"
},
{
"year":"2006",
"car": "思域",
"BID": "BV1uYSiB3Edf",
"Btitle": "八代思域,万元烂仔王!",
"hp": "140",
"hp_content": "140",
"Powertrain": "1.8/5MT",
"speed": "82.65",
"mods": "0",
"tyre": "远路",
"temperature": "9",
"lv": "A",
"time": "",
"accelerate": "8.71",
"limit": "136.55",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"14.78"
},
{
"year":"2022",
"car": "奥德赛",
"BID": "BV1ZP4y1f7cf",
"Btitle": "土屋圭市座驾,赛道级MPV!",
"hp": "215",
"hp_content": "215",
"Powertrain": "2.0+E/ECVT",
"speed": "86.80",
"mods": "0",
"tyre": "Advan DB",
"temperature": "30",
"lv": "MPV",
"time": "",
"accelerate": "9.36",
"limit": "131.62",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"32.88"
},
{
"year":"2021",
"car": "海豚",
"BID": "BV1bg41117k1",
"Btitle": "海豚下赛道能比飞度快?",
"hp": "95",
"hp_content": "95",
"Powertrain": "E",
"speed": "86.83",
"mods": "0",
"tyre": "RRP76",
"temperature": "31",
"lv": "A0",
"time": "",
"accelerate": "11.29",
"limit": "124.93",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"11.78"
}
]
================================================
FILE: index.html
================================================
键盘车神教锐思圈速榜
键盘车神教圈速榜
传说中的偶像派车评人教主的真实圈速榜单
级别
所有
MPV
跑车
所有轿车
A00级
A0级
A级
B级
C级
所有SUV
小型
紧凑型
中型
中大型
大型
排名
车型
售价
马力 (Ps)
圈速
轮胎
气温 (℃)
动力总成
尾速
0-100
改装程度
链接
排名
车型
售价
马力 (Ps)
圈速
轮胎
气温 (℃)
动力总成
尾速
0-100
是否改装
链接
排名
车型
车手
圈速
马力 (Ps)
轮胎
气温 (℃)
动力总成
尾速
0-100
是否改装
链接
圈速榜说明书
1.改装程度
改装程度分【0】【1】【2】【3】【-1】
【0】包括原厂车和只更换轮胎刹车以及心情件的车,因为很多老车的轮胎已经停止售卖,刹车片也很少维持原厂。但是轮胎不能有太越级的提升,比如思域的原厂胎提升一级到PS4是可以的,M2C的PSS星标提升到CUP2C是可以的,但是思域换成CUP2C是算入改装的。
【1】轻度改装,轮胎,轮毂,避震,刹车,进排气,ECU等,不能改装引擎和波箱内部结构,不能使用R胎。这是绝大部分改装车最常见的入门改装。
【2】中度改装,引擎改装,如腹内锻造,大涡轮,扩缸或移植非性能引擎。传动系统改装,如LSD+大尾牙。可以使用热熔胎。
【3】赛化改装。无限制,专业赛车,移植性能机,序列式,改变悬挂结构等。
【-1】一般指使用了比原厂规格更低的轮胎,如A45,或者副驾带人(额外负重)。
2.气温
最出圈速的气温是轮胎能够起温,且进气温度低。我会尽量选在10-25℃进行测试。
气温过高:空气密度低。马力小于200ps的自然吸气引擎,或者高温衰减严重的涡轮买菜车,圈速会变慢。30℃以上区间会非常明显,相比10℃,这些车圈速在锐思会有0.X秒的差距。甚至有些极端车型有超过1s的差距,请大家自行脑补修正。
气温过低:如果使用热熔胎在低温环境中测试,会因为轮胎无法进入工作温度而大幅影响圈速。而普通运动轮胎普遍可以在0℃的情况下正常工作。
相对而言,散热较好且马力较大的宝马S55车型,保时捷911车型,受到高温影响较小。而搭载四驱的高性能车,如奥迪RS系列,对轮胎起温的要求较低,受到低温影响较小,0℃以下依然能发挥威力。
3.轮胎磨损
我的测试车辆大多数来自白嫖。有的车借来时轮胎已经有严重磨损或者年份过久,会影响圈速,我都会在节目中说明。(如S3轮胎已经石化)
4.尾速
赛道尾速是指一条赛道中能达到的最高速度,一般在赛道最长的直线中诞生。尾速和01加速一样是动力水准的重要指标,但又有所不同。
01加速不仅是对动力的检验,还需要考虑起步时的驱动效率,以及弹射程序的聪明与否。影响尾速的最大因素的仍然是动力水准,如我100ps的原厂菱帅只有112的尾速。但是450ps的911s(992)则是163的尾速。第二影响因素是弯道性能,也就是操控,因为直线上一个弯道出的快不快,直接影响直线部分的起始速度。
5.为什么我要动态起步
Hot lap,一般被称为飞行圈或者飞驰圈(我喜欢叫飞行圈,因为比较中二)。指得是非静止起步的全力最快圈,也是大家约定俗称进行圈速测试的方式。
有人可能会有疑问,因为每台车起始速度不同,但这由车辆性能差异导致,本就应该对圈速产生影响。
而静态起步圈速测试和驱动形式关系较大,意义不大,一般并采用。
圈速是一台车动力,操控性,制动和主动安全性的全面体现。
================================================
FILE: js/index.js
================================================
$(function () {
var jsonData;
var goldData;
var bigVData;
function setTable(arr) {
var htmlStr = template("tb", {
data: arr,
});
$("#tb_results > tbody").html(htmlStr);
}
function setTableGold(arr) {
var htmlStr = template("tb2", {
data: arr,
});
$("#tb_results2 > tbody").html(htmlStr);
}
function setTableBigV(arr) {
var htmlStr = template("tb3", {
data: arr,
});
$("#tb_results3 > tbody").html(htmlStr);
}
template.defaults.imports.timeFormat = function (date) {
var timeArr = date.split("."),
sec = timeArr[0] % 60,
min;
timeArr[0] >= 60 ? (min = 1) : (min = 0);
sec < 10 ? (sec = "0" + sec) : null;
return `${min}:${sec}.${timeArr[1]}`;
};
//获取json数据
$.ajax({
url: "./goldport.json?v=20240306",
// async: false,
success: function (res) {
console.log('goldport',res);
goldData = res;
setTableGold(goldData);
},
});
$.ajax({
url: "./speed.json?v=20240226",
// async: false,
success: function (res) {
console.log('ruisi',res);
jsonData = res;
setTable(jsonData);
},
});
$.ajax({
url: "./bigV.json?v=20240226",
// async: false,
success: function (res) {
console.log('bigV',res);
bigVData = res;
setTableBigV(bigVData);
},
});
// setTable(jsonData);
// setTableGold(goldData);
$(".mods,.lv,.powerType,.producer").on("change", function () {
// screen($(this).val())
screen(jsonData,'ruisi');
screen(goldData,'gold');
screen(bigVData,'bigV');
});
// 筛选
function screen(arr,type) {
var lv = $(".lv").val(),
mods = $(".mods").val(),
powerType = $(".powerType").val(),
producer = $(".producer").val(),
search = $('.search').val().toLowerCase();
// arr = jsonData;
// 车型级别
if (lv !== "all") {
if (lv == "SUV") {
arr = arr.filter(function (v) {
return ["SUV1", "SUV2", "SUV3", "SUV4","SUV5"].includes(v.lv);
});
} else if (lv == "0") {
arr = arr.filter(function (v) {
return ["A00", "A0", "A", "B", "C","D"].includes(v.lv);
});
} else {
arr = arr.filter(function (v) {
return v.lv == lv;
});
}
}
// 改装程度
if (mods == "all") {
// setTable(jsonData)
} else if (mods == 0) {
arr = arr.filter(function (v) {
return v.mods <= 0;
});
} else {
arr = arr.filter(function (v) {
return v.mods > 0;
});
}
// 动力类型: 0 燃油 , 1 电动
if (powerType != "all") {
arr = arr.filter(function (v) {
return v.powerType == powerType;
});
}
// 产地: 0 国产, 1 合资 , 2 进口
if (producer != "all") {
arr = arr.filter(function (v) {
return v.producer == producer;
});
}
if(search){
arr = arr.filter((v) => {
return v.car.toLowerCase().indexOf(search) != -1;
})
}
console.log(type,arr);
switch (type) {
case 'ruisi':
setTable(arr)
break;
case 'gold':
setTableGold(arr)
break;
case 'bigV':
setTableBigV(arr)
break;
default:
break;
}
}
//搜索车型
$(".search").on("input", function () {
// var val = $(this).val().toLowerCase();
// var arr = jsonData.filter((v) => {
// return v.car.toLowerCase().indexOf(val) != -1;
// });
// setTable(arr);
// screen()
screen(jsonData,'ruisi');
screen(goldData,'gold');
screen(bigVData,'bigV');
});
// button动效
document.querySelector(".button").onmousemove = (e) => {
const x = e.pageX - e.target.offsetLeft;
const y = e.pageY - e.target.offsetTop;
e.target.style.setProperty("--x", `${x}px`);
e.target.style.setProperty("--y", `${y}px`);
};
// 榜单切换
$('.box-tabs .tab').on('click',function(){
var index = $(this).index()
$(this).addClass('active').siblings().removeClass('active')
$('.table-hover').eq(index).addClass('active').siblings().removeClass('active')
// console.log($(this).addClass('active').siblings());
})
// // 榜单说明
$(".button").on("click", function () {
layer.open({
type: 1,
area: ["820px", "640px"],
title: null,
shade: false,
content: $(".tips"),
});
});
// // 改装程度
// $('.mods .icon').click(function () {
// layer.open({
// type: 1,
// shade: false,
// title: false,
// content: $('.tips-content-mods'),
// });
// })
// // 气温
// $('.temperature .icon').click(function () {
// layer.open({
// type: 1,
// shade: false,
// title: false,
// content: $('.tips-content-temperature'),
// });
// })
// // 轮胎
// $('.tyre .icon').click(function () {
// layer.open({
// type: 1,
// shade: false,
// title: false,
// content: $('.tips-content-tyre'),
// });
// })
// // 尾速
// $('.limit .icon').click(function () {
// layer.open({
// type: 1,
// shade: false,
// title: false,
// content: $('.tips-content-limit'),
// });
// })
// // 排名 飞行圈说明
// $('.ranking .icon').click(function () {
// layer.open({
// type: 1,
// shade: false,
// title: false,
// content: $('.tips-content-ranking'),
// });
// })
// // 圈速
// $('.speed .icon').click(function () {
// layer.open({
// type: 1,
// shade: false,
// title: false,
// content: $('.tips-content-speed'),
// });
// })
(function () {
var width,
height,
largeHeader,
canvas,
ctx,
points,
target,
animateHeader = true;
// Main
initHeader();
initAnimation();
addListeners();
function initHeader() {
// width = window.innerWidth;
// height = window.innerHeight;
target = { x: width / 2, y: height / 2 };
largeHeader = document.querySelector("body");
// largeHeader = document.getElementById("canvas_bg");
// largeHeader.style.height = height + "px";
width = largeHeader.offsetWidth;
height = largeHeader.offsetHeight;
canvas = document.getElementById("canvas1");
canvas.width = width;
canvas.height = height;
ctx = canvas.getContext("2d");
// create points
points = [];
for (var x = 0; x < width; x = x + width / 20) {
for (var y = 0; y < height; y = y + height / 20) {
var px = x + (Math.random() * width) / 20;
var py = y + (Math.random() * height) / 20;
var p = { x: px, originX: px, y: py, originY: py };
points.push(p);
}
}
// for each point find the 5 closest points
for (var i = 0; i < points.length; i++) {
var closest = [];
var p1 = points[i];
for (var j = 0; j < points.length; j++) {
var p2 = points[j];
if (!(p1 == p2)) {
var placed = false;
for (var k = 0; k < 5; k++) {
if (!placed) {
if (closest[k] == undefined) {
closest[k] = p2;
placed = true;
}
}
}
for (var k = 0; k < 5; k++) {
if (!placed) {
if (getDistance(p1, p2) < getDistance(p1, closest[k])) {
closest[k] = p2;
placed = true;
}
}
}
}
}
p1.closest = closest;
}
// assign a circle to each point
for (var i in points) {
var c = new Circle(
points[i],
2 + Math.random() * 2,
"rgba(255,255,255,0.3)"
);
points[i].circle = c;
}
}
// Event handling
function addListeners() {
if (!("ontouchstart" in window)) {
window.addEventListener("mousemove", mouseMove);
}
window.addEventListener("scroll", scrollCheck);
// window.addEventListener("resize", resize);
}
function mouseMove(e) {
// var posx = (posy = 0);
// if (e.pageX || e.pageY) {
// posx = e.pageX;
// posy = e.pageY;
// } else if (e.clientX || e.clientY) {
// posx =
// e.clientX +
// document.body.scrollLeft +
// document.documentElement.scrollLeft;
// posy =
// e.clientY +
// document.body.scrollTop +
// document.documentElement.scrollTop;
// }
var scrTop = largeHeader.parentNode.offsetTop,
l = largeHeader.parentNode.offsetLeft,
h = largeHeader.parentNode.offsetHeight;
if (e.pageY >= scrTop && e.pageY <= scrTop + h) {
target.x = e.pageX - l;
// target.y = e.offsetY;
target.y = e.pageY - scrTop;
} else {
target.x = -500;
target.y = -500;
}
}
function scrollCheck() {
if (document.body.scrollTop > height) animateHeader = false;
else animateHeader = true;
}
function resize() {
width = window.innerWidth;
height = window.innerHeight;
largeHeader.style.height = height + "px";
canvas.width = width;
canvas.height = height;
}
// animation
function initAnimation() {
animate();
for (var i in points) {
shiftPoint(points[i]);
}
}
function animate() {
if (animateHeader) {
ctx.clearRect(0, 0, width, height);
for (var i in points) {
// detect points in range
if (Math.abs(getDistance(target, points[i])) < 4000) {
points[i].active = 0.3;
points[i].circle.active = 0.6;
} else if (Math.abs(getDistance(target, points[i])) < 20000) {
points[i].active = 0.1;
points[i].circle.active = 0.3;
} else if (Math.abs(getDistance(target, points[i])) < 40000) {
points[i].active = 0.02;
points[i].circle.active = 0.1;
} else {
points[i].active = 0;
points[i].circle.active = 0;
}
drawLines(points[i]);
points[i].circle.draw();
}
}
requestAnimationFrame(animate);
}
function shiftPoint(p) {
TweenLite.to(p, 1 + 1 * Math.random(), {
x: p.originX - 50 + Math.random() * 100,
y: p.originY - 50 + Math.random() * 100,
ease: Circ.easeInOut,
onComplete: function () {
shiftPoint(p);
},
});
}
// Canvas manipulation
function drawLines(p) {
if (!p.active) return;
for (var i in p.closest) {
ctx.beginPath();
ctx.moveTo(p.x, p.y);
ctx.lineTo(p.closest[i].x, p.closest[i].y);
ctx.strokeStyle = "rgba(156,217,249," + p.active + ")";
ctx.stroke();
}
}
function Circle(pos, rad, color) {
var _this = this;
// constructor
(function () {
_this.pos = pos || null;
_this.radius = rad || null;
_this.color = color || null;
})();
this.draw = function () {
if (!_this.active) return;
ctx.beginPath();
ctx.arc(_this.pos.x, _this.pos.y, _this.radius, 0, 2 * Math.PI, false);
ctx.fillStyle = "rgba(156,217,249," + _this.active + ")";
ctx.fill();
};
}
// Util
function getDistance(p1, p2) {
return Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2);
}
})();
console.log(
"%c键盘车神教圈速榜 by铲子",
"text-shadow:0 1px 0 #ccc,0 2px 0 #c9c9c9,0 3px 0 #bbb, 0 4px 0 #b9b9b9,0 5px 0 #aaa,0 6px 1px rgba(0,0,0,0.1),0 0 5px rgba(0,0,0,0.25),0 10px 10px rgba(0,0,0,0.2),0 20px 20px rgba(0,0,0,0.15);font-size:100px"
);
});
================================================
FILE: lib/bootstrap/css/bootstrap-table.css
================================================
@charset "UTF-8";
/**
* @author zhixin wen
* version: 1.15.5
* https://github.com/wenzhixin/bootstrap-table/
*/
.bootstrap-table .fixed-table-toolbar::after {
content: "";
display: block;
clear: both;
}
.bootstrap-table .fixed-table-toolbar .bs-bars,
.bootstrap-table .fixed-table-toolbar .search,
.bootstrap-table .fixed-table-toolbar .columns {
position: relative;
margin-top: 10px;
margin-bottom: 10px;
}
.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group {
display: inline-block;
margin-left: -1px !important;
}
.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group > .btn {
border-radius: 0;
}
.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group:first-child > .btn {
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
.bootstrap-table .fixed-table-toolbar .columns .btn-group > .btn-group:last-child > .btn {
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu {
text-align: left;
max-height: 300px;
overflow: auto;
-ms-overflow-style: scrollbar;
z-index: 1001;
}
.bootstrap-table .fixed-table-toolbar .columns label {
display: block;
padding: 3px 20px;
clear: both;
font-weight: normal;
line-height: 1.428571429;
}
.bootstrap-table .fixed-table-toolbar .columns-left {
margin-right: 5px;
}
.bootstrap-table .fixed-table-toolbar .columns-right {
margin-left: 5px;
}
.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu {
right: 0;
left: auto;
}
.bootstrap-table .fixed-table-container {
position: relative;
clear: both;
}
.bootstrap-table .fixed-table-container .table {
width: 100%;
margin-bottom: 0 !important;
}
.bootstrap-table .fixed-table-container .table th,
.bootstrap-table .fixed-table-container .table td {
vertical-align: middle;
box-sizing: border-box;
}
.bootstrap-table .fixed-table-container .table thead th {
vertical-align: bottom;
padding: 0;
margin: 0;
}
.bootstrap-table .fixed-table-container .table thead th:focus {
outline: 0 solid transparent;
}
.bootstrap-table .fixed-table-container .table thead th.detail {
width: 30px;
}
.bootstrap-table .fixed-table-container .table thead th .th-inner {
padding: 0.75rem;
vertical-align: bottom;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.bootstrap-table .fixed-table-container .table thead th .sortable {
cursor: pointer;
background-position: right;
background-repeat: no-repeat;
padding-right: 30px;
}
.bootstrap-table .fixed-table-container .table thead th .both {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC");
}
.bootstrap-table .fixed-table-container .table thead th .asc {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==");
}
.bootstrap-table .fixed-table-container .table thead th .desc {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= ");
}
.bootstrap-table .fixed-table-container .table tbody tr.selected td {
background-color: rgba(0, 0, 0, 0.075);
}
.bootstrap-table .fixed-table-container .table tbody tr.no-records-found {
text-align: center;
}
.bootstrap-table .fixed-table-container .table tbody tr .card-view {
display: flex;
}
.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title {
font-weight: bold;
display: inline-block;
min-width: 30%;
text-align: left !important;
}
.bootstrap-table .fixed-table-container .table .bs-checkbox {
text-align: center;
}
.bootstrap-table .fixed-table-container .table .bs-checkbox label {
margin-bottom: 0;
}
.bootstrap-table .fixed-table-container .table input[type=radio],
.bootstrap-table .fixed-table-container .table input[type=checkbox] {
margin: 0 auto !important;
}
.bootstrap-table .fixed-table-container .table.table-sm .th-inner {
padding: 0.3rem;
}
.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer) {
border-bottom: 1px solid #dee2e6;
}
.bootstrap-table .fixed-table-container.fixed-height.has-card-view {
border-top: 1px solid #dee2e6;
border-bottom: 1px solid #dee2e6;
}
.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border {
border-left: 1px solid #dee2e6;
border-right: 1px solid #dee2e6;
}
.bootstrap-table .fixed-table-container.fixed-height .table thead th {
border-bottom: 1px solid #dee2e6;
}
.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th {
border-bottom: 1px solid #32383e;
}
.bootstrap-table .fixed-table-container .fixed-table-header {
overflow: hidden;
}
.bootstrap-table .fixed-table-container .fixed-table-body {
overflow-x: auto;
overflow-y: auto;
height: 100%;
}
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading {
align-items: center;
background: #fff;
display: none;
justify-content: center;
position: absolute;
bottom: 0;
width: 100%;
z-index: 1000;
}
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap {
align-items: baseline;
display: flex;
justify-content: center;
}
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text {
font-size: 2rem;
margin-right: 6px;
}
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap {
align-items: center;
display: flex;
justify-content: center;
}
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after,
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before {
content: "";
animation-duration: 1.5s;
animation-iteration-count: infinite;
animation-name: LOADING;
background: #212529;
border-radius: 50%;
display: block;
height: 5px;
margin: 0 4px;
opacity: 0;
width: 5px;
}
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot {
animation-delay: 0.3s;
}
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after {
animation-delay: 0.6s;
}
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark {
background: #212529;
}
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after,
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before {
background: #fff;
}
.bootstrap-table .fixed-table-container .fixed-table-footer {
overflow: hidden;
}
.bootstrap-table .fixed-table-pagination::after {
content: "";
display: block;
clear: both;
}
.bootstrap-table .fixed-table-pagination > .pagination-detail,
.bootstrap-table .fixed-table-pagination > .pagination {
margin-top: 10px;
margin-bottom: 10px;
}
.bootstrap-table .fixed-table-pagination > .pagination-detail .pagination-info {
line-height: 34px;
margin-right: 5px;
}
.bootstrap-table .fixed-table-pagination > .pagination-detail .page-list {
display: inline-block;
}
.bootstrap-table .fixed-table-pagination > .pagination-detail .page-list .btn-group {
position: relative;
display: inline-block;
vertical-align: middle;
}
.bootstrap-table .fixed-table-pagination > .pagination-detail .page-list .btn-group .dropdown-menu {
margin-bottom: 0;
}
.bootstrap-table .fixed-table-pagination > .pagination ul.pagination {
margin: 0;
}
.bootstrap-table .fixed-table-pagination > .pagination ul.pagination a {
padding: 6px 12px;
line-height: 1.428571429;
}
.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.page-intermediate a {
color: #c8c8c8;
}
.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.page-intermediate a::before {
content: "⬅";
}
.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.page-intermediate a::after {
content: "➡";
}
.bootstrap-table .fixed-table-pagination > .pagination ul.pagination li.disabled a {
pointer-events: none;
cursor: default;
}
.bootstrap-table.fullscreen {
position: fixed;
top: 0;
left: 0;
z-index: 1050;
width: 100% !important;
background: #fff;
height: calc(100vh);
overflow-y: scroll;
}
/* calculate scrollbar width */
div.fixed-table-scroll-inner {
width: 100%;
height: 200px;
}
div.fixed-table-scroll-outer {
top: 0;
left: 0;
visibility: hidden;
width: 200px;
height: 150px;
overflow: hidden;
}
@keyframes LOADING {
0% {
opacity: 0;
}
50% {
opacity: 1;
}
to {
opacity: 0;
}
}
/*# sourceMappingURL=bootstrap-table.css.map */
================================================
FILE: lib/bootstrap/css/bootstrap-theme.css
================================================
/*!
* Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
.btn-default,
.btn-primary,
.btn-success,
.btn-info,
.btn-warning,
.btn-danger {
text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
}
.btn-default:active,
.btn-primary:active,
.btn-success:active,
.btn-info:active,
.btn-warning:active,
.btn-danger:active,
.btn-default.active,
.btn-primary.active,
.btn-success.active,
.btn-info.active,
.btn-warning.active,
.btn-danger.active {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.btn-default.disabled,
.btn-primary.disabled,
.btn-success.disabled,
.btn-info.disabled,
.btn-warning.disabled,
.btn-danger.disabled,
.btn-default[disabled],
.btn-primary[disabled],
.btn-success[disabled],
.btn-info[disabled],
.btn-warning[disabled],
.btn-danger[disabled],
fieldset[disabled] .btn-default,
fieldset[disabled] .btn-primary,
fieldset[disabled] .btn-success,
fieldset[disabled] .btn-info,
fieldset[disabled] .btn-warning,
fieldset[disabled] .btn-danger {
-webkit-box-shadow: none;
box-shadow: none;
}
.btn-default .badge,
.btn-primary .badge,
.btn-success .badge,
.btn-info .badge,
.btn-warning .badge,
.btn-danger .badge {
text-shadow: none;
}
.btn:active,
.btn.active {
background-image: none;
}
.btn-default {
text-shadow: 0 1px 0 #fff;
background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #dbdbdb;
border-color: #ccc;
}
.btn-default:hover,
.btn-default:focus {
background-color: #e0e0e0;
background-position: 0 -15px;
}
.btn-default:active,
.btn-default.active {
background-color: #e0e0e0;
border-color: #dbdbdb;
}
.btn-default.disabled,
.btn-default[disabled],
fieldset[disabled] .btn-default,
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus,
.btn-default.disabled:active,
.btn-default[disabled]:active,
fieldset[disabled] .btn-default:active,
.btn-default.disabled.active,
.btn-default[disabled].active,
fieldset[disabled] .btn-default.active {
background-color: #e0e0e0;
background-image: none;
}
.btn-primary {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #245580;
}
.btn-primary:hover,
.btn-primary:focus {
background-color: #265a88;
background-position: 0 -15px;
}
.btn-primary:active,
.btn-primary.active {
background-color: #265a88;
border-color: #245580;
}
.btn-primary.disabled,
.btn-primary[disabled],
fieldset[disabled] .btn-primary,
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus,
.btn-primary.disabled:active,
.btn-primary[disabled]:active,
fieldset[disabled] .btn-primary:active,
.btn-primary.disabled.active,
.btn-primary[disabled].active,
fieldset[disabled] .btn-primary.active {
background-color: #265a88;
background-image: none;
}
.btn-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #3e8f3e;
}
.btn-success:hover,
.btn-success:focus {
background-color: #419641;
background-position: 0 -15px;
}
.btn-success:active,
.btn-success.active {
background-color: #419641;
border-color: #3e8f3e;
}
.btn-success.disabled,
.btn-success[disabled],
fieldset[disabled] .btn-success,
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus,
.btn-success.disabled:active,
.btn-success[disabled]:active,
fieldset[disabled] .btn-success:active,
.btn-success.disabled.active,
.btn-success[disabled].active,
fieldset[disabled] .btn-success.active {
background-color: #419641;
background-image: none;
}
.btn-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #28a4c9;
}
.btn-info:hover,
.btn-info:focus {
background-color: #2aabd2;
background-position: 0 -15px;
}
.btn-info:active,
.btn-info.active {
background-color: #2aabd2;
border-color: #28a4c9;
}
.btn-info.disabled,
.btn-info[disabled],
fieldset[disabled] .btn-info,
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus,
.btn-info.disabled:active,
.btn-info[disabled]:active,
fieldset[disabled] .btn-info:active,
.btn-info.disabled.active,
.btn-info[disabled].active,
fieldset[disabled] .btn-info.active {
background-color: #2aabd2;
background-image: none;
}
.btn-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #e38d13;
}
.btn-warning:hover,
.btn-warning:focus {
background-color: #eb9316;
background-position: 0 -15px;
}
.btn-warning:active,
.btn-warning.active {
background-color: #eb9316;
border-color: #e38d13;
}
.btn-warning.disabled,
.btn-warning[disabled],
fieldset[disabled] .btn-warning,
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus,
.btn-warning.disabled:active,
.btn-warning[disabled]:active,
fieldset[disabled] .btn-warning:active,
.btn-warning.disabled.active,
.btn-warning[disabled].active,
fieldset[disabled] .btn-warning.active {
background-color: #eb9316;
background-image: none;
}
.btn-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #b92c28;
}
.btn-danger:hover,
.btn-danger:focus {
background-color: #c12e2a;
background-position: 0 -15px;
}
.btn-danger:active,
.btn-danger.active {
background-color: #c12e2a;
border-color: #b92c28;
}
.btn-danger.disabled,
.btn-danger[disabled],
fieldset[disabled] .btn-danger,
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus,
.btn-danger.disabled:active,
.btn-danger[disabled]:active,
fieldset[disabled] .btn-danger:active,
.btn-danger.disabled.active,
.btn-danger[disabled].active,
fieldset[disabled] .btn-danger.active {
background-color: #c12e2a;
background-image: none;
}
.thumbnail,
.img-thumbnail {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
background-color: #e8e8e8;
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
background-color: #2e6da4;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
.navbar-default {
background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .active > a {
background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
}
.navbar-brand,
.navbar-nav > li > a {
text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
}
.navbar-inverse {
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-radius: 4px;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .active > a {
background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
}
.navbar-inverse .navbar-brand,
.navbar-inverse .navbar-nav > li > a {
text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
}
.navbar-static-top,
.navbar-fixed-top,
.navbar-fixed-bottom {
border-radius: 0;
}
@media (max-width: 767px) {
.navbar .navbar-nav .open .dropdown-menu > .active > a,
.navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
.navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
color: #fff;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
}
.alert {
text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
}
.alert-success {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
background-repeat: repeat-x;
border-color: #b2dba1;
}
.alert-info {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
background-repeat: repeat-x;
border-color: #9acfea;
}
.alert-warning {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
background-repeat: repeat-x;
border-color: #f5e79e;
}
.alert-danger {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
background-repeat: repeat-x;
border-color: #dca7a7;
}
.progress {
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-striped {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.list-group {
border-radius: 4px;
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
text-shadow: 0 -1px 0 #286090;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
background-repeat: repeat-x;
border-color: #2b669a;
}
.list-group-item.active .badge,
.list-group-item.active:hover .badge,
.list-group-item.active:focus .badge {
text-shadow: none;
}
.panel {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
}
.panel-default > .panel-heading {
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
}
.panel-primary > .panel-heading {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
.panel-success > .panel-heading {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
background-repeat: repeat-x;
}
.panel-info > .panel-heading {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
background-repeat: repeat-x;
}
.panel-warning > .panel-heading {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
background-repeat: repeat-x;
}
.panel-danger > .panel-heading {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
background-repeat: repeat-x;
}
.well {
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
border-color: #dcdcdc;
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
}
/*# sourceMappingURL=bootstrap-theme.css.map */
================================================
FILE: lib/bootstrap/css/bootstrap.css
================================================
/*!
* Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
font-family: sans-serif;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
body {
margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
display: block;
}
audio,
canvas,
progress,
video {
display: inline-block;
vertical-align: baseline;
}
audio:not([controls]) {
display: none;
height: 0;
}
[hidden],
template {
display: none;
}
a {
background-color: transparent;
}
a:active,
a:hover {
outline: 0;
}
abbr[title] {
border-bottom: 1px dotted;
}
b,
strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
h1 {
margin: .67em 0;
font-size: 2em;
}
mark {
color: #000;
background: #ff0;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sup {
top: -.5em;
}
sub {
bottom: -.25em;
}
img {
border: 0;
}
svg:not(:root) {
overflow: hidden;
}
figure {
margin: 1em 40px;
}
hr {
height: 0;
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
pre {
overflow: auto;
}
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
margin: 0;
font: inherit;
color: inherit;
}
button {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
cursor: pointer;
}
button[disabled],
html input[disabled] {
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
padding: 0;
border: 0;
}
input {
line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
input[type="search"] {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
-webkit-appearance: textfield;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
fieldset {
padding: .35em .625em .75em;
margin: 0 2px;
border: 1px solid #c0c0c0;
}
legend {
padding: 0;
border: 0;
}
textarea {
overflow: auto;
}
optgroup {
font-weight: bold;
}
table {
border-spacing: 0;
border-collapse: collapse;
}
td,
th {
padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
*,
*:before,
*:after {
color: #000 !important;
text-shadow: none !important;
background: transparent !important;
-webkit-box-shadow: none !important;
box-shadow: none !important;
}
a,
a:visited {
text-decoration: underline;
}
a[href]:after {
content: " (" attr(href) ")";
}
abbr[title]:after {
content: " (" attr(title) ")";
}
a[href^="#"]:after,
a[href^="javascript:"]:after {
content: "";
}
pre,
blockquote {
border: 1px solid #999;
page-break-inside: avoid;
}
thead {
display: table-header-group;
}
tr,
img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
p,
h2,
h3 {
orphans: 3;
widows: 3;
}
h2,
h3 {
page-break-after: avoid;
}
.navbar {
display: none;
}
.btn > .caret,
.dropup > .btn > .caret {
border-top-color: #000 !important;
}
.label {
border: 1px solid #000;
}
.table {
border-collapse: collapse !important;
}
.table td,
.table th {
background-color: #fff !important;
}
.table-bordered th,
.table-bordered td {
border: 1px solid #ddd !important;
}
}
@font-face {
font-family: 'Glyphicons Halflings';
src: url('../fonts/glyphicons-halflings-regular.eot');
src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
position: relative;
top: 1px;
display: inline-block;
font-family: 'Glyphicons Halflings';
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
content: "\002a";
}
.glyphicon-plus:before {
content: "\002b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
content: "\20ac";
}
.glyphicon-minus:before {
content: "\2212";
}
.glyphicon-cloud:before {
content: "\2601";
}
.glyphicon-envelope:before {
content: "\2709";
}
.glyphicon-pencil:before {
content: "\270f";
}
.glyphicon-glass:before {
content: "\e001";
}
.glyphicon-music:before {
content: "\e002";
}
.glyphicon-search:before {
content: "\e003";
}
.glyphicon-heart:before {
content: "\e005";
}
.glyphicon-star:before {
content: "\e006";
}
.glyphicon-star-empty:before {
content: "\e007";
}
.glyphicon-user:before {
content: "\e008";
}
.glyphicon-film:before {
content: "\e009";
}
.glyphicon-th-large:before {
content: "\e010";
}
.glyphicon-th:before {
content: "\e011";
}
.glyphicon-th-list:before {
content: "\e012";
}
.glyphicon-ok:before {
content: "\e013";
}
.glyphicon-remove:before {
content: "\e014";
}
.glyphicon-zoom-in:before {
content: "\e015";
}
.glyphicon-zoom-out:before {
content: "\e016";
}
.glyphicon-off:before {
content: "\e017";
}
.glyphicon-signal:before {
content: "\e018";
}
.glyphicon-cog:before {
content: "\e019";
}
.glyphicon-trash:before {
content: "\e020";
}
.glyphicon-home:before {
content: "\e021";
}
.glyphicon-file:before {
content: "\e022";
}
.glyphicon-time:before {
content: "\e023";
}
.glyphicon-road:before {
content: "\e024";
}
.glyphicon-download-alt:before {
content: "\e025";
}
.glyphicon-download:before {
content: "\e026";
}
.glyphicon-upload:before {
content: "\e027";
}
.glyphicon-inbox:before {
content: "\e028";
}
.glyphicon-play-circle:before {
content: "\e029";
}
.glyphicon-repeat:before {
content: "\e030";
}
.glyphicon-refresh:before {
content: "\e031";
}
.glyphicon-list-alt:before {
content: "\e032";
}
.glyphicon-lock:before {
content: "\e033";
}
.glyphicon-flag:before {
content: "\e034";
}
.glyphicon-headphones:before {
content: "\e035";
}
.glyphicon-volume-off:before {
content: "\e036";
}
.glyphicon-volume-down:before {
content: "\e037";
}
.glyphicon-volume-up:before {
content: "\e038";
}
.glyphicon-qrcode:before {
content: "\e039";
}
.glyphicon-barcode:before {
content: "\e040";
}
.glyphicon-tag:before {
content: "\e041";
}
.glyphicon-tags:before {
content: "\e042";
}
.glyphicon-book:before {
content: "\e043";
}
.glyphicon-bookmark:before {
content: "\e044";
}
.glyphicon-print:before {
content: "\e045";
}
.glyphicon-camera:before {
content: "\e046";
}
.glyphicon-font:before {
content: "\e047";
}
.glyphicon-bold:before {
content: "\e048";
}
.glyphicon-italic:before {
content: "\e049";
}
.glyphicon-text-height:before {
content: "\e050";
}
.glyphicon-text-width:before {
content: "\e051";
}
.glyphicon-align-left:before {
content: "\e052";
}
.glyphicon-align-center:before {
content: "\e053";
}
.glyphicon-align-right:before {
content: "\e054";
}
.glyphicon-align-justify:before {
content: "\e055";
}
.glyphicon-list:before {
content: "\e056";
}
.glyphicon-indent-left:before {
content: "\e057";
}
.glyphicon-indent-right:before {
content: "\e058";
}
.glyphicon-facetime-video:before {
content: "\e059";
}
.glyphicon-picture:before {
content: "\e060";
}
.glyphicon-map-marker:before {
content: "\e062";
}
.glyphicon-adjust:before {
content: "\e063";
}
.glyphicon-tint:before {
content: "\e064";
}
.glyphicon-edit:before {
content: "\e065";
}
.glyphicon-share:before {
content: "\e066";
}
.glyphicon-check:before {
content: "\e067";
}
.glyphicon-move:before {
content: "\e068";
}
.glyphicon-step-backward:before {
content: "\e069";
}
.glyphicon-fast-backward:before {
content: "\e070";
}
.glyphicon-backward:before {
content: "\e071";
}
.glyphicon-play:before {
content: "\e072";
}
.glyphicon-pause:before {
content: "\e073";
}
.glyphicon-stop:before {
content: "\e074";
}
.glyphicon-forward:before {
content: "\e075";
}
.glyphicon-fast-forward:before {
content: "\e076";
}
.glyphicon-step-forward:before {
content: "\e077";
}
.glyphicon-eject:before {
content: "\e078";
}
.glyphicon-chevron-left:before {
content: "\e079";
}
.glyphicon-chevron-right:before {
content: "\e080";
}
.glyphicon-plus-sign:before {
content: "\e081";
}
.glyphicon-minus-sign:before {
content: "\e082";
}
.glyphicon-remove-sign:before {
content: "\e083";
}
.glyphicon-ok-sign:before {
content: "\e084";
}
.glyphicon-question-sign:before {
content: "\e085";
}
.glyphicon-info-sign:before {
content: "\e086";
}
.glyphicon-screenshot:before {
content: "\e087";
}
.glyphicon-remove-circle:before {
content: "\e088";
}
.glyphicon-ok-circle:before {
content: "\e089";
}
.glyphicon-ban-circle:before {
content: "\e090";
}
.glyphicon-arrow-left:before {
content: "\e091";
}
.glyphicon-arrow-right:before {
content: "\e092";
}
.glyphicon-arrow-up:before {
content: "\e093";
}
.glyphicon-arrow-down:before {
content: "\e094";
}
.glyphicon-share-alt:before {
content: "\e095";
}
.glyphicon-resize-full:before {
content: "\e096";
}
.glyphicon-resize-small:before {
content: "\e097";
}
.glyphicon-exclamation-sign:before {
content: "\e101";
}
.glyphicon-gift:before {
content: "\e102";
}
.glyphicon-leaf:before {
content: "\e103";
}
.glyphicon-fire:before {
content: "\e104";
}
.glyphicon-eye-open:before {
content: "\e105";
}
.glyphicon-eye-close:before {
content: "\e106";
}
.glyphicon-warning-sign:before {
content: "\e107";
}
.glyphicon-plane:before {
content: "\e108";
}
.glyphicon-calendar:before {
content: "\e109";
}
.glyphicon-random:before {
content: "\e110";
}
.glyphicon-comment:before {
content: "\e111";
}
.glyphicon-magnet:before {
content: "\e112";
}
.glyphicon-chevron-up:before {
content: "\e113";
}
.glyphicon-chevron-down:before {
content: "\e114";
}
.glyphicon-retweet:before {
content: "\e115";
}
.glyphicon-shopping-cart:before {
content: "\e116";
}
.glyphicon-folder-close:before {
content: "\e117";
}
.glyphicon-folder-open:before {
content: "\e118";
}
.glyphicon-resize-vertical:before {
content: "\e119";
}
.glyphicon-resize-horizontal:before {
content: "\e120";
}
.glyphicon-hdd:before {
content: "\e121";
}
.glyphicon-bullhorn:before {
content: "\e122";
}
.glyphicon-bell:before {
content: "\e123";
}
.glyphicon-certificate:before {
content: "\e124";
}
.glyphicon-thumbs-up:before {
content: "\e125";
}
.glyphicon-thumbs-down:before {
content: "\e126";
}
.glyphicon-hand-right:before {
content: "\e127";
}
.glyphicon-hand-left:before {
content: "\e128";
}
.glyphicon-hand-up:before {
content: "\e129";
}
.glyphicon-hand-down:before {
content: "\e130";
}
.glyphicon-circle-arrow-right:before {
content: "\e131";
}
.glyphicon-circle-arrow-left:before {
content: "\e132";
}
.glyphicon-circle-arrow-up:before {
content: "\e133";
}
.glyphicon-circle-arrow-down:before {
content: "\e134";
}
.glyphicon-globe:before {
content: "\e135";
}
.glyphicon-wrench:before {
content: "\e136";
}
.glyphicon-tasks:before {
content: "\e137";
}
.glyphicon-filter:before {
content: "\e138";
}
.glyphicon-briefcase:before {
content: "\e139";
}
.glyphicon-fullscreen:before {
content: "\e140";
}
.glyphicon-dashboard:before {
content: "\e141";
}
.glyphicon-paperclip:before {
content: "\e142";
}
.glyphicon-heart-empty:before {
content: "\e143";
}
.glyphicon-link:before {
content: "\e144";
}
.glyphicon-phone:before {
content: "\e145";
}
.glyphicon-pushpin:before {
content: "\e146";
}
.glyphicon-usd:before {
content: "\e148";
}
.glyphicon-gbp:before {
content: "\e149";
}
.glyphicon-sort:before {
content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
content: "\e152";
}
.glyphicon-sort-by-order:before {
content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
content: "\e154";
}
.glyphicon-sort-by-attributes:before {
content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
content: "\e156";
}
.glyphicon-unchecked:before {
content: "\e157";
}
.glyphicon-expand:before {
content: "\e158";
}
.glyphicon-collapse-down:before {
content: "\e159";
}
.glyphicon-collapse-up:before {
content: "\e160";
}
.glyphicon-log-in:before {
content: "\e161";
}
.glyphicon-flash:before {
content: "\e162";
}
.glyphicon-log-out:before {
content: "\e163";
}
.glyphicon-new-window:before {
content: "\e164";
}
.glyphicon-record:before {
content: "\e165";
}
.glyphicon-save:before {
content: "\e166";
}
.glyphicon-open:before {
content: "\e167";
}
.glyphicon-saved:before {
content: "\e168";
}
.glyphicon-import:before {
content: "\e169";
}
.glyphicon-export:before {
content: "\e170";
}
.glyphicon-send:before {
content: "\e171";
}
.glyphicon-floppy-disk:before {
content: "\e172";
}
.glyphicon-floppy-saved:before {
content: "\e173";
}
.glyphicon-floppy-remove:before {
content: "\e174";
}
.glyphicon-floppy-save:before {
content: "\e175";
}
.glyphicon-floppy-open:before {
content: "\e176";
}
.glyphicon-credit-card:before {
content: "\e177";
}
.glyphicon-transfer:before {
content: "\e178";
}
.glyphicon-cutlery:before {
content: "\e179";
}
.glyphicon-header:before {
content: "\e180";
}
.glyphicon-compressed:before {
content: "\e181";
}
.glyphicon-earphone:before {
content: "\e182";
}
.glyphicon-phone-alt:before {
content: "\e183";
}
.glyphicon-tower:before {
content: "\e184";
}
.glyphicon-stats:before {
content: "\e185";
}
.glyphicon-sd-video:before {
content: "\e186";
}
.glyphicon-hd-video:before {
content: "\e187";
}
.glyphicon-subtitles:before {
content: "\e188";
}
.glyphicon-sound-stereo:before {
content: "\e189";
}
.glyphicon-sound-dolby:before {
content: "\e190";
}
.glyphicon-sound-5-1:before {
content: "\e191";
}
.glyphicon-sound-6-1:before {
content: "\e192";
}
.glyphicon-sound-7-1:before {
content: "\e193";
}
.glyphicon-copyright-mark:before {
content: "\e194";
}
.glyphicon-registration-mark:before {
content: "\e195";
}
.glyphicon-cloud-download:before {
content: "\e197";
}
.glyphicon-cloud-upload:before {
content: "\e198";
}
.glyphicon-tree-conifer:before {
content: "\e199";
}
.glyphicon-tree-deciduous:before {
content: "\e200";
}
.glyphicon-cd:before {
content: "\e201";
}
.glyphicon-save-file:before {
content: "\e202";
}
.glyphicon-open-file:before {
content: "\e203";
}
.glyphicon-level-up:before {
content: "\e204";
}
.glyphicon-copy:before {
content: "\e205";
}
.glyphicon-paste:before {
content: "\e206";
}
.glyphicon-alert:before {
content: "\e209";
}
.glyphicon-equalizer:before {
content: "\e210";
}
.glyphicon-king:before {
content: "\e211";
}
.glyphicon-queen:before {
content: "\e212";
}
.glyphicon-pawn:before {
content: "\e213";
}
.glyphicon-bishop:before {
content: "\e214";
}
.glyphicon-knight:before {
content: "\e215";
}
.glyphicon-baby-formula:before {
content: "\e216";
}
.glyphicon-tent:before {
content: "\26fa";
}
.glyphicon-blackboard:before {
content: "\e218";
}
.glyphicon-bed:before {
content: "\e219";
}
.glyphicon-apple:before {
content: "\f8ff";
}
.glyphicon-erase:before {
content: "\e221";
}
.glyphicon-hourglass:before {
content: "\231b";
}
.glyphicon-lamp:before {
content: "\e223";
}
.glyphicon-duplicate:before {
content: "\e224";
}
.glyphicon-piggy-bank:before {
content: "\e225";
}
.glyphicon-scissors:before {
content: "\e226";
}
.glyphicon-bitcoin:before {
content: "\e227";
}
.glyphicon-btc:before {
content: "\e227";
}
.glyphicon-xbt:before {
content: "\e227";
}
.glyphicon-yen:before {
content: "\00a5";
}
.glyphicon-jpy:before {
content: "\00a5";
}
.glyphicon-ruble:before {
content: "\20bd";
}
.glyphicon-rub:before {
content: "\20bd";
}
.glyphicon-scale:before {
content: "\e230";
}
.glyphicon-ice-lolly:before {
content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
content: "\e232";
}
.glyphicon-education:before {
content: "\e233";
}
.glyphicon-option-horizontal:before {
content: "\e234";
}
.glyphicon-option-vertical:before {
content: "\e235";
}
.glyphicon-menu-hamburger:before {
content: "\e236";
}
.glyphicon-modal-window:before {
content: "\e237";
}
.glyphicon-oil:before {
content: "\e238";
}
.glyphicon-grain:before {
content: "\e239";
}
.glyphicon-sunglasses:before {
content: "\e240";
}
.glyphicon-text-size:before {
content: "\e241";
}
.glyphicon-text-color:before {
content: "\e242";
}
.glyphicon-text-background:before {
content: "\e243";
}
.glyphicon-object-align-top:before {
content: "\e244";
}
.glyphicon-object-align-bottom:before {
content: "\e245";
}
.glyphicon-object-align-horizontal:before {
content: "\e246";
}
.glyphicon-object-align-left:before {
content: "\e247";
}
.glyphicon-object-align-vertical:before {
content: "\e248";
}
.glyphicon-object-align-right:before {
content: "\e249";
}
.glyphicon-triangle-right:before {
content: "\e250";
}
.glyphicon-triangle-left:before {
content: "\e251";
}
.glyphicon-triangle-bottom:before {
content: "\e252";
}
.glyphicon-triangle-top:before {
content: "\e253";
}
.glyphicon-console:before {
content: "\e254";
}
.glyphicon-superscript:before {
content: "\e255";
}
.glyphicon-subscript:before {
content: "\e256";
}
.glyphicon-menu-left:before {
content: "\e257";
}
.glyphicon-menu-right:before {
content: "\e258";
}
.glyphicon-menu-down:before {
content: "\e259";
}
.glyphicon-menu-up:before {
content: "\e260";
}
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
*:before,
*:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html {
font-size: 10px;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 1.42857143;
color: #333;
background-color: #fff;
}
input,
button,
select,
textarea {
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
a {
color: #337ab7;
text-decoration: none;
}
a:hover,
a:focus {
color: #23527c;
text-decoration: underline;
}
a:focus {
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
figure {
margin: 0;
}
img {
vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
display: block;
max-width: 100%;
height: auto;
}
.img-rounded {
border-radius: 6px;
}
.img-thumbnail {
display: inline-block;
max-width: 100%;
height: auto;
padding: 4px;
line-height: 1.42857143;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 4px;
-webkit-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
}
.img-circle {
border-radius: 50%;
}
hr {
margin-top: 20px;
margin-bottom: 20px;
border: 0;
border-top: 1px solid #eee;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
position: static;
width: auto;
height: auto;
margin: 0;
overflow: visible;
clip: auto;
}
[role="button"] {
cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
font-family: inherit;
font-weight: 500;
line-height: 1.1;
color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
font-weight: normal;
line-height: 1;
color: #777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
margin-top: 20px;
margin-bottom: 10px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
margin-top: 10px;
margin-bottom: 10px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
font-size: 75%;
}
h1,
.h1 {
font-size: 36px;
}
h2,
.h2 {
font-size: 30px;
}
h3,
.h3 {
font-size: 24px;
}
h4,
.h4 {
font-size: 18px;
}
h5,
.h5 {
font-size: 14px;
}
h6,
.h6 {
font-size: 12px;
}
p {
margin: 0 0 10px;
}
.lead {
margin-bottom: 20px;
font-size: 16px;
font-weight: 300;
line-height: 1.4;
}
@media (min-width: 768px) {
.lead {
font-size: 21px;
}
}
small,
.small {
font-size: 85%;
}
mark,
.mark {
padding: .2em;
background-color: #fcf8e3;
}
.text-left {
text-align: left;
}
.text-right {
text-align: right;
}
.text-center {
text-align: center;
}
.text-justify {
text-align: justify;
}
.text-nowrap {
white-space: nowrap;
}
.text-lowercase {
text-transform: lowercase;
}
.text-uppercase {
text-transform: uppercase;
}
.text-capitalize {
text-transform: capitalize;
}
.text-muted {
color: #777;
}
.text-primary {
color: #337ab7;
}
a.text-primary:hover,
a.text-primary:focus {
color: #286090;
}
.text-success {
color: #3c763d;
}
a.text-success:hover,
a.text-success:focus {
color: #2b542c;
}
.text-info {
color: #31708f;
}
a.text-info:hover,
a.text-info:focus {
color: #245269;
}
.text-warning {
color: #8a6d3b;
}
a.text-warning:hover,
a.text-warning:focus {
color: #66512c;
}
.text-danger {
color: #a94442;
}
a.text-danger:hover,
a.text-danger:focus {
color: #843534;
}
.bg-primary {
color: #fff;
background-color: #337ab7;
}
a.bg-primary:hover,
a.bg-primary:focus {
background-color: #286090;
}
.bg-success {
background-color: #dff0d8;
}
a.bg-success:hover,
a.bg-success:focus {
background-color: #c1e2b3;
}
.bg-info {
background-color: #d9edf7;
}
a.bg-info:hover,
a.bg-info:focus {
background-color: #afd9ee;
}
.bg-warning {
background-color: #fcf8e3;
}
a.bg-warning:hover,
a.bg-warning:focus {
background-color: #f7ecb5;
}
.bg-danger {
background-color: #f2dede;
}
a.bg-danger:hover,
a.bg-danger:focus {
background-color: #e4b9b9;
}
.page-header {
padding-bottom: 9px;
margin: 40px 0 20px;
border-bottom: 1px solid #eee;
}
ul,
ol {
margin-top: 0;
margin-bottom: 10px;
}
ul ul,
ol ul,
ul ol,
ol ol {
margin-bottom: 0;
}
.list-unstyled {
padding-left: 0;
list-style: none;
}
.list-inline {
padding-left: 0;
margin-left: -5px;
list-style: none;
}
.list-inline > li {
display: inline-block;
padding-right: 5px;
padding-left: 5px;
}
dl {
margin-top: 0;
margin-bottom: 20px;
}
dt,
dd {
line-height: 1.42857143;
}
dt {
font-weight: bold;
}
dd {
margin-left: 0;
}
@media (min-width: 768px) {
.dl-horizontal dt {
float: left;
width: 160px;
overflow: hidden;
clear: left;
text-align: right;
text-overflow: ellipsis;
white-space: nowrap;
}
.dl-horizontal dd {
margin-left: 180px;
}
}
abbr[title],
abbr[data-original-title] {
cursor: help;
border-bottom: 1px dotted #777;
}
.initialism {
font-size: 90%;
text-transform: uppercase;
}
blockquote {
padding: 10px 20px;
margin: 0 0 20px;
font-size: 17.5px;
border-left: 5px solid #eee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
display: block;
font-size: 80%;
line-height: 1.42857143;
color: #777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
padding-right: 15px;
padding-left: 0;
text-align: right;
border-right: 5px solid #eee;
border-left: 0;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
content: '\00A0 \2014';
}
address {
margin-bottom: 20px;
font-style: normal;
line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
}
code {
padding: 2px 4px;
font-size: 90%;
color: #c7254e;
background-color: #f9f2f4;
border-radius: 4px;
}
kbd {
padding: 2px 4px;
font-size: 90%;
color: #fff;
background-color: #333;
border-radius: 3px;
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
}
kbd kbd {
padding: 0;
font-size: 100%;
font-weight: bold;
-webkit-box-shadow: none;
box-shadow: none;
}
pre {
display: block;
padding: 9.5px;
margin: 0 0 10px;
font-size: 13px;
line-height: 1.42857143;
color: #333;
word-break: break-all;
word-wrap: break-word;
background-color: #f5f5f5;
border: 1px solid #ccc;
border-radius: 4px;
}
pre code {
padding: 0;
font-size: inherit;
color: inherit;
white-space: pre-wrap;
background-color: transparent;
border-radius: 0;
}
.pre-scrollable {
max-height: 340px;
overflow-y: scroll;
}
.container {
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
@media (min-width: 768px) {
.container {
width: 750px;
}
}
@media (min-width: 992px) {
.container {
width: 970px;
}
}
@media (min-width: 1200px) {
.container {
width: 1170px;
}
}
.container-fluid {
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
.row {
margin-right: -15px;
margin-left: -15px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
position: relative;
min-height: 1px;
padding-right: 15px;
padding-left: 15px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
float: left;
}
.col-xs-12 {
width: 100%;
}
.col-xs-11 {
width: 91.66666667%;
}
.col-xs-10 {
width: 83.33333333%;
}
.col-xs-9 {
width: 75%;
}
.col-xs-8 {
width: 66.66666667%;
}
.col-xs-7 {
width: 58.33333333%;
}
.col-xs-6 {
width: 50%;
}
.col-xs-5 {
width: 41.66666667%;
}
.col-xs-4 {
width: 33.33333333%;
}
.col-xs-3 {
width: 25%;
}
.col-xs-2 {
width: 16.66666667%;
}
.col-xs-1 {
width: 8.33333333%;
}
.col-xs-pull-12 {
right: 100%;
}
.col-xs-pull-11 {
right: 91.66666667%;
}
.col-xs-pull-10 {
right: 83.33333333%;
}
.col-xs-pull-9 {
right: 75%;
}
.col-xs-pull-8 {
right: 66.66666667%;
}
.col-xs-pull-7 {
right: 58.33333333%;
}
.col-xs-pull-6 {
right: 50%;
}
.col-xs-pull-5 {
right: 41.66666667%;
}
.col-xs-pull-4 {
right: 33.33333333%;
}
.col-xs-pull-3 {
right: 25%;
}
.col-xs-pull-2 {
right: 16.66666667%;
}
.col-xs-pull-1 {
right: 8.33333333%;
}
.col-xs-pull-0 {
right: auto;
}
.col-xs-push-12 {
left: 100%;
}
.col-xs-push-11 {
left: 91.66666667%;
}
.col-xs-push-10 {
left: 83.33333333%;
}
.col-xs-push-9 {
left: 75%;
}
.col-xs-push-8 {
left: 66.66666667%;
}
.col-xs-push-7 {
left: 58.33333333%;
}
.col-xs-push-6 {
left: 50%;
}
.col-xs-push-5 {
left: 41.66666667%;
}
.col-xs-push-4 {
left: 33.33333333%;
}
.col-xs-push-3 {
left: 25%;
}
.col-xs-push-2 {
left: 16.66666667%;
}
.col-xs-push-1 {
left: 8.33333333%;
}
.col-xs-push-0 {
left: auto;
}
.col-xs-offset-12 {
margin-left: 100%;
}
.col-xs-offset-11 {
margin-left: 91.66666667%;
}
.col-xs-offset-10 {
margin-left: 83.33333333%;
}
.col-xs-offset-9 {
margin-left: 75%;
}
.col-xs-offset-8 {
margin-left: 66.66666667%;
}
.col-xs-offset-7 {
margin-left: 58.33333333%;
}
.col-xs-offset-6 {
margin-left: 50%;
}
.col-xs-offset-5 {
margin-left: 41.66666667%;
}
.col-xs-offset-4 {
margin-left: 33.33333333%;
}
.col-xs-offset-3 {
margin-left: 25%;
}
.col-xs-offset-2 {
margin-left: 16.66666667%;
}
.col-xs-offset-1 {
margin-left: 8.33333333%;
}
.col-xs-offset-0 {
margin-left: 0;
}
@media (min-width: 768px) {
.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
float: left;
}
.col-sm-12 {
width: 100%;
}
.col-sm-11 {
width: 91.66666667%;
}
.col-sm-10 {
width: 83.33333333%;
}
.col-sm-9 {
width: 75%;
}
.col-sm-8 {
width: 66.66666667%;
}
.col-sm-7 {
width: 58.33333333%;
}
.col-sm-6 {
width: 50%;
}
.col-sm-5 {
width: 41.66666667%;
}
.col-sm-4 {
width: 33.33333333%;
}
.col-sm-3 {
width: 25%;
}
.col-sm-2 {
width: 16.66666667%;
}
.col-sm-1 {
width: 8.33333333%;
}
.col-sm-pull-12 {
right: 100%;
}
.col-sm-pull-11 {
right: 91.66666667%;
}
.col-sm-pull-10 {
right: 83.33333333%;
}
.col-sm-pull-9 {
right: 75%;
}
.col-sm-pull-8 {
right: 66.66666667%;
}
.col-sm-pull-7 {
right: 58.33333333%;
}
.col-sm-pull-6 {
right: 50%;
}
.col-sm-pull-5 {
right: 41.66666667%;
}
.col-sm-pull-4 {
right: 33.33333333%;
}
.col-sm-pull-3 {
right: 25%;
}
.col-sm-pull-2 {
right: 16.66666667%;
}
.col-sm-pull-1 {
right: 8.33333333%;
}
.col-sm-pull-0 {
right: auto;
}
.col-sm-push-12 {
left: 100%;
}
.col-sm-push-11 {
left: 91.66666667%;
}
.col-sm-push-10 {
left: 83.33333333%;
}
.col-sm-push-9 {
left: 75%;
}
.col-sm-push-8 {
left: 66.66666667%;
}
.col-sm-push-7 {
left: 58.33333333%;
}
.col-sm-push-6 {
left: 50%;
}
.col-sm-push-5 {
left: 41.66666667%;
}
.col-sm-push-4 {
left: 33.33333333%;
}
.col-sm-push-3 {
left: 25%;
}
.col-sm-push-2 {
left: 16.66666667%;
}
.col-sm-push-1 {
left: 8.33333333%;
}
.col-sm-push-0 {
left: auto;
}
.col-sm-offset-12 {
margin-left: 100%;
}
.col-sm-offset-11 {
margin-left: 91.66666667%;
}
.col-sm-offset-10 {
margin-left: 83.33333333%;
}
.col-sm-offset-9 {
margin-left: 75%;
}
.col-sm-offset-8 {
margin-left: 66.66666667%;
}
.col-sm-offset-7 {
margin-left: 58.33333333%;
}
.col-sm-offset-6 {
margin-left: 50%;
}
.col-sm-offset-5 {
margin-left: 41.66666667%;
}
.col-sm-offset-4 {
margin-left: 33.33333333%;
}
.col-sm-offset-3 {
margin-left: 25%;
}
.col-sm-offset-2 {
margin-left: 16.66666667%;
}
.col-sm-offset-1 {
margin-left: 8.33333333%;
}
.col-sm-offset-0 {
margin-left: 0;
}
}
@media (min-width: 992px) {
.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
float: left;
}
.col-md-12 {
width: 100%;
}
.col-md-11 {
width: 91.66666667%;
}
.col-md-10 {
width: 83.33333333%;
}
.col-md-9 {
width: 75%;
}
.col-md-8 {
width: 66.66666667%;
}
.col-md-7 {
width: 58.33333333%;
}
.col-md-6 {
width: 50%;
}
.col-md-5 {
width: 41.66666667%;
}
.col-md-4 {
width: 33.33333333%;
}
.col-md-3 {
width: 25%;
}
.col-md-2 {
width: 16.66666667%;
}
.col-md-1 {
width: 8.33333333%;
}
.col-md-pull-12 {
right: 100%;
}
.col-md-pull-11 {
right: 91.66666667%;
}
.col-md-pull-10 {
right: 83.33333333%;
}
.col-md-pull-9 {
right: 75%;
}
.col-md-pull-8 {
right: 66.66666667%;
}
.col-md-pull-7 {
right: 58.33333333%;
}
.col-md-pull-6 {
right: 50%;
}
.col-md-pull-5 {
right: 41.66666667%;
}
.col-md-pull-4 {
right: 33.33333333%;
}
.col-md-pull-3 {
right: 25%;
}
.col-md-pull-2 {
right: 16.66666667%;
}
.col-md-pull-1 {
right: 8.33333333%;
}
.col-md-pull-0 {
right: auto;
}
.col-md-push-12 {
left: 100%;
}
.col-md-push-11 {
left: 91.66666667%;
}
.col-md-push-10 {
left: 83.33333333%;
}
.col-md-push-9 {
left: 75%;
}
.col-md-push-8 {
left: 66.66666667%;
}
.col-md-push-7 {
left: 58.33333333%;
}
.col-md-push-6 {
left: 50%;
}
.col-md-push-5 {
left: 41.66666667%;
}
.col-md-push-4 {
left: 33.33333333%;
}
.col-md-push-3 {
left: 25%;
}
.col-md-push-2 {
left: 16.66666667%;
}
.col-md-push-1 {
left: 8.33333333%;
}
.col-md-push-0 {
left: auto;
}
.col-md-offset-12 {
margin-left: 100%;
}
.col-md-offset-11 {
margin-left: 91.66666667%;
}
.col-md-offset-10 {
margin-left: 83.33333333%;
}
.col-md-offset-9 {
margin-left: 75%;
}
.col-md-offset-8 {
margin-left: 66.66666667%;
}
.col-md-offset-7 {
margin-left: 58.33333333%;
}
.col-md-offset-6 {
margin-left: 50%;
}
.col-md-offset-5 {
margin-left: 41.66666667%;
}
.col-md-offset-4 {
margin-left: 33.33333333%;
}
.col-md-offset-3 {
margin-left: 25%;
}
.col-md-offset-2 {
margin-left: 16.66666667%;
}
.col-md-offset-1 {
margin-left: 8.33333333%;
}
.col-md-offset-0 {
margin-left: 0;
}
}
@media (min-width: 1200px) {
.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
float: left;
}
.col-lg-12 {
width: 100%;
}
.col-lg-11 {
width: 91.66666667%;
}
.col-lg-10 {
width: 83.33333333%;
}
.col-lg-9 {
width: 75%;
}
.col-lg-8 {
width: 66.66666667%;
}
.col-lg-7 {
width: 58.33333333%;
}
.col-lg-6 {
width: 50%;
}
.col-lg-5 {
width: 41.66666667%;
}
.col-lg-4 {
width: 33.33333333%;
}
.col-lg-3 {
width: 25%;
}
.col-lg-2 {
width: 16.66666667%;
}
.col-lg-1 {
width: 8.33333333%;
}
.col-lg-pull-12 {
right: 100%;
}
.col-lg-pull-11 {
right: 91.66666667%;
}
.col-lg-pull-10 {
right: 83.33333333%;
}
.col-lg-pull-9 {
right: 75%;
}
.col-lg-pull-8 {
right: 66.66666667%;
}
.col-lg-pull-7 {
right: 58.33333333%;
}
.col-lg-pull-6 {
right: 50%;
}
.col-lg-pull-5 {
right: 41.66666667%;
}
.col-lg-pull-4 {
right: 33.33333333%;
}
.col-lg-pull-3 {
right: 25%;
}
.col-lg-pull-2 {
right: 16.66666667%;
}
.col-lg-pull-1 {
right: 8.33333333%;
}
.col-lg-pull-0 {
right: auto;
}
.col-lg-push-12 {
left: 100%;
}
.col-lg-push-11 {
left: 91.66666667%;
}
.col-lg-push-10 {
left: 83.33333333%;
}
.col-lg-push-9 {
left: 75%;
}
.col-lg-push-8 {
left: 66.66666667%;
}
.col-lg-push-7 {
left: 58.33333333%;
}
.col-lg-push-6 {
left: 50%;
}
.col-lg-push-5 {
left: 41.66666667%;
}
.col-lg-push-4 {
left: 33.33333333%;
}
.col-lg-push-3 {
left: 25%;
}
.col-lg-push-2 {
left: 16.66666667%;
}
.col-lg-push-1 {
left: 8.33333333%;
}
.col-lg-push-0 {
left: auto;
}
.col-lg-offset-12 {
margin-left: 100%;
}
.col-lg-offset-11 {
margin-left: 91.66666667%;
}
.col-lg-offset-10 {
margin-left: 83.33333333%;
}
.col-lg-offset-9 {
margin-left: 75%;
}
.col-lg-offset-8 {
margin-left: 66.66666667%;
}
.col-lg-offset-7 {
margin-left: 58.33333333%;
}
.col-lg-offset-6 {
margin-left: 50%;
}
.col-lg-offset-5 {
margin-left: 41.66666667%;
}
.col-lg-offset-4 {
margin-left: 33.33333333%;
}
.col-lg-offset-3 {
margin-left: 25%;
}
.col-lg-offset-2 {
margin-left: 16.66666667%;
}
.col-lg-offset-1 {
margin-left: 8.33333333%;
}
.col-lg-offset-0 {
margin-left: 0;
}
}
table {
background-color: transparent;
}
caption {
padding-top: 8px;
padding-bottom: 8px;
color: #777;
text-align: left;
}
th {
text-align: left;
}
.table {
width: 100%;
max-width: 100%;
margin-bottom: 20px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
padding: 8px;
line-height: 1.42857143;
vertical-align: top;
border-top: 1px solid #ddd;
}
.table > thead > tr > th {
vertical-align: bottom;
border-bottom: 2px solid #ddd;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
border-top: 0;
}
.table > tbody + tbody {
border-top: 2px solid #ddd;
}
.table .table {
background-color: #fff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
padding: 5px;
}
.table-bordered {
border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
background-color: #f5f5f5;
}
table col[class*="col-"] {
position: static;
display: table-column;
float: none;
}
table td[class*="col-"],
table th[class*="col-"] {
position: static;
display: table-cell;
float: none;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
background-color: #f5f5f5;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
background-color: #e8e8e8;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
background-color: #dff0d8;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
background-color: #d0e9c6;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
background-color: #d9edf7;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
background-color: #c4e3f3;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
background-color: #fcf8e3;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
background-color: #faf2cc;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
background-color: #f2dede;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
background-color: #ebcccc;
}
.table-responsive {
min-height: .01%;
overflow-x: auto;
}
@media screen and (max-width: 767px) {
.table-responsive {
width: 100%;
margin-bottom: 15px;
overflow-y: hidden;
-ms-overflow-style: -ms-autohiding-scrollbar;
border: 1px solid #ddd;
}
.table-responsive > .table {
margin-bottom: 0;
}
.table-responsive > .table > thead > tr > th,
.table-responsive > .table > tbody > tr > th,
.table-responsive > .table > tfoot > tr > th,
.table-responsive > .table > thead > tr > td,
.table-responsive > .table > tbody > tr > td,
.table-responsive > .table > tfoot > tr > td {
white-space: nowrap;
}
.table-responsive > .table-bordered {
border: 0;
}
.table-responsive > .table-bordered > thead > tr > th:first-child,
.table-responsive > .table-bordered > tbody > tr > th:first-child,
.table-responsive > .table-bordered > tfoot > tr > th:first-child,
.table-responsive > .table-bordered > thead > tr > td:first-child,
.table-responsive > .table-bordered > tbody > tr > td:first-child,
.table-responsive > .table-bordered > tfoot > tr > td:first-child {
border-left: 0;
}
.table-responsive > .table-bordered > thead > tr > th:last-child,
.table-responsive > .table-bordered > tbody > tr > th:last-child,
.table-responsive > .table-bordered > tfoot > tr > th:last-child,
.table-responsive > .table-bordered > thead > tr > td:last-child,
.table-responsive > .table-bordered > tbody > tr > td:last-child,
.table-responsive > .table-bordered > tfoot > tr > td:last-child {
border-right: 0;
}
.table-responsive > .table-bordered > tbody > tr:last-child > th,
.table-responsive > .table-bordered > tfoot > tr:last-child > th,
.table-responsive > .table-bordered > tbody > tr:last-child > td,
.table-responsive > .table-bordered > tfoot > tr:last-child > td {
border-bottom: 0;
}
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
padding: 0;
margin-bottom: 20px;
font-size: 21px;
line-height: inherit;
color: #333;
border: 0;
border-bottom: 1px solid #e5e5e5;
}
label {
display: inline-block;
max-width: 100%;
margin-bottom: 5px;
font-weight: bold;
}
input[type="search"] {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
margin: 4px 0 0;
margin-top: 1px \9;
line-height: normal;
}
input[type="file"] {
display: block;
}
input[type="range"] {
display: block;
width: 100%;
}
select[multiple],
select[size] {
height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
output {
display: block;
padding-top: 7px;
font-size: 14px;
line-height: 1.42857143;
color: #555;
}
.form-control {
display: block;
width: 100%;
height: 34px;
padding: 6px 12px;
font-size: 14px;
line-height: 1.42857143;
color: #555;
background-color: #fff;
background-image: none;
border: 1px solid #ccc;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
border-color: #66afe9;
outline: 0;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
}
.form-control::-moz-placeholder {
color: #999;
opacity: 1;
}
.form-control:-ms-input-placeholder {
color: #999;
}
.form-control::-webkit-input-placeholder {
color: #999;
}
.form-control::-ms-expand {
background-color: transparent;
border: 0;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
background-color: #eee;
opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
cursor: not-allowed;
}
textarea.form-control {
height: auto;
}
input[type="search"] {
-webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
input[type="date"].form-control,
input[type="time"].form-control,
input[type="datetime-local"].form-control,
input[type="month"].form-control {
line-height: 34px;
}
input[type="date"].input-sm,
input[type="time"].input-sm,
input[type="datetime-local"].input-sm,
input[type="month"].input-sm,
.input-group-sm input[type="date"],
.input-group-sm input[type="time"],
.input-group-sm input[type="datetime-local"],
.input-group-sm input[type="month"] {
line-height: 30px;
}
input[type="date"].input-lg,
input[type="time"].input-lg,
input[type="datetime-local"].input-lg,
input[type="month"].input-lg,
.input-group-lg input[type="date"],
.input-group-lg input[type="time"],
.input-group-lg input[type="datetime-local"],
.input-group-lg input[type="month"] {
line-height: 46px;
}
}
.form-group {
margin-bottom: 15px;
}
.radio,
.checkbox {
position: relative;
display: block;
margin-top: 10px;
margin-bottom: 10px;
}
.radio label,
.checkbox label {
min-height: 20px;
padding-left: 20px;
margin-bottom: 0;
font-weight: normal;
cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
position: absolute;
margin-top: 4px \9;
margin-left: -20px;
}
.radio + .radio,
.checkbox + .checkbox {
margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
position: relative;
display: inline-block;
padding-left: 20px;
margin-bottom: 0;
font-weight: normal;
vertical-align: middle;
cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
margin-top: 0;
margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
cursor: not-allowed;
}
.form-control-static {
min-height: 34px;
padding-top: 7px;
padding-bottom: 7px;
margin-bottom: 0;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
padding-right: 0;
padding-left: 0;
}
.input-sm {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 3px;
}
select.input-sm {
height: 30px;
line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
height: auto;
}
.form-group-sm .form-control {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 3px;
}
.form-group-sm select.form-control {
height: 30px;
line-height: 30px;
}
.form-group-sm textarea.form-control,
.form-group-sm select[multiple].form-control {
height: auto;
}
.form-group-sm .form-control-static {
height: 30px;
min-height: 32px;
padding: 6px 10px;
font-size: 12px;
line-height: 1.5;
}
.input-lg {
height: 46px;
padding: 10px 16px;
font-size: 18px;
line-height: 1.3333333;
border-radius: 6px;
}
select.input-lg {
height: 46px;
line-height: 46px;
}
textarea.input-lg,
select[multiple].input-lg {
height: auto;
}
.form-group-lg .form-control {
height: 46px;
padding: 10px 16px;
font-size: 18px;
line-height: 1.3333333;
border-radius: 6px;
}
.form-group-lg select.form-control {
height: 46px;
line-height: 46px;
}
.form-group-lg textarea.form-control,
.form-group-lg select[multiple].form-control {
height: auto;
}
.form-group-lg .form-control-static {
height: 46px;
min-height: 38px;
padding: 11px 16px;
font-size: 18px;
line-height: 1.3333333;
}
.has-feedback {
position: relative;
}
.has-feedback .form-control {
padding-right: 42.5px;
}
.form-control-feedback {
position: absolute;
top: 0;
right: 0;
z-index: 2;
display: block;
width: 34px;
height: 34px;
line-height: 34px;
text-align: center;
pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
width: 46px;
height: 46px;
line-height: 46px;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
width: 30px;
height: 30px;
line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
color: #3c763d;
}
.has-success .form-control {
border-color: #3c763d;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
}
.has-success .form-control:focus {
border-color: #2b542c;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
color: #3c763d;
background-color: #dff0d8;
border-color: #3c763d;
}
.has-success .form-control-feedback {
color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
color: #8a6d3b;
}
.has-warning .form-control {
border-color: #8a6d3b;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
}
.has-warning .form-control:focus {
border-color: #66512c;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
color: #8a6d3b;
background-color: #fcf8e3;
border-color: #8a6d3b;
}
.has-warning .form-control-feedback {
color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
color: #a94442;
}
.has-error .form-control {
border-color: #a94442;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
}
.has-error .form-control:focus {
border-color: #843534;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
color: #a94442;
background-color: #f2dede;
border-color: #a94442;
}
.has-error .form-control-feedback {
color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
top: 25px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
top: 0;
}
.help-block {
display: block;
margin-top: 5px;
margin-bottom: 10px;
color: #737373;
}
@media (min-width: 768px) {
.form-inline .form-group {
display: inline-block;
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .form-control {
display: inline-block;
width: auto;
vertical-align: middle;
}
.form-inline .form-control-static {
display: inline-block;
}
.form-inline .input-group {
display: inline-table;
vertical-align: middle;
}
.form-inline .input-group .input-group-addon,
.form-inline .input-group .input-group-btn,
.form-inline .input-group .form-control {
width: auto;
}
.form-inline .input-group > .form-control {
width: 100%;
}
.form-inline .control-label {
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .radio,
.form-inline .checkbox {
display: inline-block;
margin-top: 0;
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .radio label,
.form-inline .checkbox label {
padding-left: 0;
}
.form-inline .radio input[type="radio"],
.form-inline .checkbox input[type="checkbox"] {
position: relative;
margin-left: 0;
}
.form-inline .has-feedback .form-control-feedback {
top: 0;
}
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
padding-top: 7px;
margin-top: 0;
margin-bottom: 0;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
min-height: 27px;
}
.form-horizontal .form-group {
margin-right: -15px;
margin-left: -15px;
}
@media (min-width: 768px) {
.form-horizontal .control-label {
padding-top: 7px;
margin-bottom: 0;
text-align: right;
}
}
.form-horizontal .has-feedback .form-control-feedback {
right: 15px;
}
@media (min-width: 768px) {
.form-horizontal .form-group-lg .control-label {
padding-top: 11px;
font-size: 18px;
}
}
@media (min-width: 768px) {
.form-horizontal .form-group-sm .control-label {
padding-top: 6px;
font-size: 12px;
}
}
.btn {
display: inline-block;
padding: 6px 12px;
margin-bottom: 0;
font-size: 14px;
font-weight: normal;
line-height: 1.42857143;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-ms-touch-action: manipulation;
touch-action: manipulation;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-image: none;
border: 1px solid transparent;
border-radius: 4px;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
color: #333;
text-decoration: none;
}
.btn:active,
.btn.active {
background-image: none;
outline: 0;
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
cursor: not-allowed;
filter: alpha(opacity=65);
-webkit-box-shadow: none;
box-shadow: none;
opacity: .65;
}
a.btn.disabled,
fieldset[disabled] a.btn {
pointer-events: none;
}
.btn-default {
color: #333;
background-color: #fff;
border-color: #ccc;
}
.btn-default:focus,
.btn-default.focus {
color: #333;
background-color: #e6e6e6;
border-color: #8c8c8c;
}
.btn-default:hover {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
color: #333;
background-color: #d4d4d4;
border-color: #8c8c8c;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
background-color: #fff;
border-color: #ccc;
}
.btn-default .badge {
color: #fff;
background-color: #333;
}
.btn-primary {
color: #fff;
background-color: #337ab7;
border-color: #2e6da4;
}
.btn-primary:focus,
.btn-primary.focus {
color: #fff;
background-color: #286090;
border-color: #122b40;
}
.btn-primary:hover {
color: #fff;
background-color: #286090;
border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
color: #fff;
background-color: #286090;
border-color: #204d74;
}
.btn-primary:active:hover,
.btn-primary.active:hover,
.open > .dropdown-toggle.btn-primary:hover,
.btn-primary:active:focus,
.btn-primary.active:focus,
.open > .dropdown-toggle.btn-primary:focus,
.btn-primary:active.focus,
.btn-primary.active.focus,
.open > .dropdown-toggle.btn-primary.focus {
color: #fff;
background-color: #204d74;
border-color: #122b40;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
background-image: none;
}
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus {
background-color: #337ab7;
border-color: #2e6da4;
}
.btn-primary .badge {
color: #337ab7;
background-color: #fff;
}
.btn-success {
color: #fff;
background-color: #5cb85c;
border-color: #4cae4c;
}
.btn-success:focus,
.btn-success.focus {
color: #fff;
background-color: #449d44;
border-color: #255625;
}
.btn-success:hover {
color: #fff;
background-color: #449d44;
border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
color: #fff;
background-color: #449d44;
border-color: #398439;
}
.btn-success:active:hover,
.btn-success.active:hover,
.open > .dropdown-toggle.btn-success:hover,
.btn-success:active:focus,
.btn-success.active:focus,
.open > .dropdown-toggle.btn-success:focus,
.btn-success:active.focus,
.btn-success.active.focus,
.open > .dropdown-toggle.btn-success.focus {
color: #fff;
background-color: #398439;
border-color: #255625;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
background-image: none;
}
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus {
background-color: #5cb85c;
border-color: #4cae4c;
}
.btn-success .badge {
color: #5cb85c;
background-color: #fff;
}
.btn-info {
color: #fff;
background-color: #5bc0de;
border-color: #46b8da;
}
.btn-info:focus,
.btn-info.focus {
color: #fff;
background-color: #31b0d5;
border-color: #1b6d85;
}
.btn-info:hover {
color: #fff;
background-color: #31b0d5;
border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
color: #fff;
background-color: #31b0d5;
border-color: #269abc;
}
.btn-info:active:hover,
.btn-info.active:hover,
.open > .dropdown-toggle.btn-info:hover,
.btn-info:active:focus,
.btn-info.active:focus,
.open > .dropdown-toggle.btn-info:focus,
.btn-info:active.focus,
.btn-info.active.focus,
.open > .dropdown-toggle.btn-info.focus {
color: #fff;
background-color: #269abc;
border-color: #1b6d85;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
background-image: none;
}
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus {
background-color: #5bc0de;
border-color: #46b8da;
}
.btn-info .badge {
color: #5bc0de;
background-color: #fff;
}
.btn-warning {
color: #fff;
background-color: #f0ad4e;
border-color: #eea236;
}
.btn-warning:focus,
.btn-warning.focus {
color: #fff;
background-color: #ec971f;
border-color: #985f0d;
}
.btn-warning:hover {
color: #fff;
background-color: #ec971f;
border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
color: #fff;
background-color: #ec971f;
border-color: #d58512;
}
.btn-warning:active:hover,
.btn-warning.active:hover,
.open > .dropdown-toggle.btn-warning:hover,
.btn-warning:active:focus,
.btn-warning.active:focus,
.open > .dropdown-toggle.btn-warning:focus,
.btn-warning:active.focus,
.btn-warning.active.focus,
.open > .dropdown-toggle.btn-warning.focus {
color: #fff;
background-color: #d58512;
border-color: #985f0d;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
background-image: none;
}
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus {
background-color: #f0ad4e;
border-color: #eea236;
}
.btn-warning .badge {
color: #f0ad4e;
background-color: #fff;
}
.btn-danger {
color: #fff;
background-color: #d9534f;
border-color: #d43f3a;
}
.btn-danger:focus,
.btn-danger.focus {
color: #fff;
background-color: #c9302c;
border-color: #761c19;
}
.btn-danger:hover {
color: #fff;
background-color: #c9302c;
border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
color: #fff;
background-color: #c9302c;
border-color: #ac2925;
}
.btn-danger:active:hover,
.btn-danger.active:hover,
.open > .dropdown-toggle.btn-danger:hover,
.btn-danger:active:focus,
.btn-danger.active:focus,
.open > .dropdown-toggle.btn-danger:focus,
.btn-danger:active.focus,
.btn-danger.active.focus,
.open > .dropdown-toggle.btn-danger.focus {
color: #fff;
background-color: #ac2925;
border-color: #761c19;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
background-image: none;
}
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus {
background-color: #d9534f;
border-color: #d43f3a;
}
.btn-danger .badge {
color: #d9534f;
background-color: #fff;
}
.btn-link {
font-weight: normal;
color: #337ab7;
border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
background-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
color: #23527c;
text-decoration: underline;
background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
color: #777;
text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
padding: 10px 16px;
font-size: 18px;
line-height: 1.3333333;
border-radius: 6px;
}
.btn-sm,
.btn-group-sm > .btn {
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 3px;
}
.btn-xs,
.btn-group-xs > .btn {
padding: 1px 5px;
font-size: 12px;
line-height: 1.5;
border-radius: 3px;
}
.btn-block {
display: block;
width: 100%;
}
.btn-block + .btn-block {
margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
width: 100%;
}
.fade {
opacity: 0;
-webkit-transition: opacity .15s linear;
-o-transition: opacity .15s linear;
transition: opacity .15s linear;
}
.fade.in {
opacity: 1;
}
.collapse {
display: none;
}
.collapse.in {
display: block;
}
tr.collapse.in {
display: table-row;
}
tbody.collapse.in {
display: table-row-group;
}
.collapsing {
position: relative;
height: 0;
overflow: hidden;
-webkit-transition-timing-function: ease;
-o-transition-timing-function: ease;
transition-timing-function: ease;
-webkit-transition-duration: .35s;
-o-transition-duration: .35s;
transition-duration: .35s;
-webkit-transition-property: height, visibility;
-o-transition-property: height, visibility;
transition-property: height, visibility;
}
.caret {
display: inline-block;
width: 0;
height: 0;
margin-left: 2px;
vertical-align: middle;
border-top: 4px dashed;
border-top: 4px solid \9;
border-right: 4px solid transparent;
border-left: 4px solid transparent;
}
.dropup,
.dropdown {
position: relative;
}
.dropdown-toggle:focus {
outline: 0;
}
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
display: none;
float: left;
min-width: 160px;
padding: 5px 0;
margin: 2px 0 0;
font-size: 14px;
text-align: left;
list-style: none;
background-color: #fff;
-webkit-background-clip: padding-box;
background-clip: padding-box;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, .15);
border-radius: 4px;
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
}
.dropdown-menu.pull-right {
right: 0;
left: auto;
}
.dropdown-menu .divider {
height: 1px;
margin: 9px 0;
overflow: hidden;
background-color: #e5e5e5;
}
.dropdown-menu > li > a {
display: block;
padding: 3px 20px;
clear: both;
font-weight: normal;
line-height: 1.42857143;
color: #333;
white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
color: #262626;
text-decoration: none;
background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
color: #fff;
text-decoration: none;
background-color: #337ab7;
outline: 0;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
color: #777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
text-decoration: none;
cursor: not-allowed;
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.open > .dropdown-menu {
display: block;
}
.open > a {
outline: 0;
}
.dropdown-menu-right {
right: 0;
left: auto;
}
.dropdown-menu-left {
right: auto;
left: 0;
}
.dropdown-header {
display: block;
padding: 3px 20px;
font-size: 12px;
line-height: 1.42857143;
color: #777;
white-space: nowrap;
}
.dropdown-backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 990;
}
.pull-right > .dropdown-menu {
right: 0;
left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
content: "";
border-top: 0;
border-bottom: 4px dashed;
border-bottom: 4px solid \9;
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
top: auto;
bottom: 100%;
margin-bottom: 2px;
}
@media (min-width: 768px) {
.navbar-right .dropdown-menu {
right: 0;
left: auto;
}
.navbar-right .dropdown-menu-left {
right: auto;
left: 0;
}
}
.btn-group,
.btn-group-vertical {
position: relative;
display: inline-block;
vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
position: relative;
float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
margin-left: -1px;
}
.btn-toolbar {
margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
margin-left: 5px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
border-radius: 0;
}
.btn-group > .btn:first-child {
margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group > .btn-group {
float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
border-radius: 0;
}
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
padding-right: 8px;
padding-left: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
padding-right: 12px;
padding-left: 12px;
}
.btn-group.open .dropdown-toggle {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.btn-group.open .dropdown-toggle.btn-link {
-webkit-box-shadow: none;
box-shadow: none;
}
.btn .caret {
margin-left: 0;
}
.btn-lg .caret {
border-width: 5px 5px 0;
border-bottom-width: 0;
}
.dropup .btn-lg .caret {
border-width: 0 5px 5px;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
display: block;
float: none;
width: 100%;
max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
margin-top: -1px;
margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
border-top-left-radius: 0;
border-top-right-radius: 0;
border-bottom-right-radius: 4px;
border-bottom-left-radius: 4px;
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.btn-group-justified {
display: table;
width: 100%;
table-layout: fixed;
border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
display: table-cell;
float: none;
width: 1%;
}
.btn-group-justified > .btn-group .btn {
width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
position: absolute;
clip: rect(0, 0, 0, 0);
pointer-events: none;
}
.input-group {
position: relative;
display: table;
border-collapse: separate;
}
.input-group[class*="col-"] {
float: none;
padding-right: 0;
padding-left: 0;
}
.input-group .form-control {
position: relative;
z-index: 2;
float: left;
width: 100%;
margin-bottom: 0;
}
.input-group .form-control:focus {
z-index: 3;
}
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
height: 46px;
padding: 10px 16px;
font-size: 18px;
line-height: 1.3333333;
border-radius: 6px;
}
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
height: 46px;
line-height: 46px;
}
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
textarea.input-group-lg > .input-group-btn > .btn,
select[multiple].input-group-lg > .form-control,
select[multiple].input-group-lg > .input-group-addon,
select[multiple].input-group-lg > .input-group-btn > .btn {
height: auto;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 3px;
}
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
height: 30px;
line-height: 30px;
}
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
textarea.input-group-sm > .input-group-btn > .btn,
select[multiple].input-group-sm > .form-control,
select[multiple].input-group-sm > .input-group-addon,
select[multiple].input-group-sm > .input-group-btn > .btn {
height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
border-radius: 0;
}
.input-group-addon,
.input-group-btn {
width: 1%;
white-space: nowrap;
vertical-align: middle;
}
.input-group-addon {
padding: 6px 12px;
font-size: 14px;
font-weight: normal;
line-height: 1;
color: #555;
text-align: center;
background-color: #eee;
border: 1px solid #ccc;
border-radius: 4px;
}
.input-group-addon.input-sm {
padding: 5px 10px;
font-size: 12px;
border-radius: 3px;
}
.input-group-addon.input-lg {
padding: 10px 16px;
font-size: 18px;
border-radius: 6px;
}
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group-addon:first-child {
border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.input-group-addon:last-child {
border-left: 0;
}
.input-group-btn {
position: relative;
font-size: 0;
white-space: nowrap;
}
.input-group-btn > .btn {
position: relative;
}
.input-group-btn > .btn + .btn {
margin-left: -1px;
}
.input-group-btn > .btn:hover,
.input-group-btn > .btn:focus,
.input-group-btn > .btn:active {
z-index: 2;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
margin-right: -1px;
}
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group {
z-index: 2;
margin-left: -1px;
}
.nav {
padding-left: 0;
margin-bottom: 0;
list-style: none;
}
.nav > li {
position: relative;
display: block;
}
.nav > li > a {
position: relative;
display: block;
padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
text-decoration: none;
background-color: #eee;
}
.nav > li.disabled > a {
color: #777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
color: #777;
text-decoration: none;
cursor: not-allowed;
background-color: transparent;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
background-color: #eee;
border-color: #337ab7;
}
.nav .nav-divider {
height: 1px;
margin: 9px 0;
overflow: hidden;
background-color: #e5e5e5;
}
.nav > li > a > img {
max-width: none;
}
.nav-tabs {
border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
float: left;
margin-bottom: -1px;
}
.nav-tabs > li > a {
margin-right: 2px;
line-height: 1.42857143;
border: 1px solid transparent;
border-radius: 4px 4px 0 0;
}
.nav-tabs > li > a:hover {
border-color: #eee #eee #ddd;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
color: #555;
cursor: default;
background-color: #fff;
border: 1px solid #ddd;
border-bottom-color: transparent;
}
.nav-tabs.nav-justified {
width: 100%;
border-bottom: 0;
}
.nav-tabs.nav-justified > li {
float: none;
}
.nav-tabs.nav-justified > li > a {
margin-bottom: 5px;
text-align: center;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
top: auto;
left: auto;
}
@media (min-width: 768px) {
.nav-tabs.nav-justified > li {
display: table-cell;
width: 1%;
}
.nav-tabs.nav-justified > li > a {
margin-bottom: 0;
}
}
.nav-tabs.nav-justified > li > a {
margin-right: 0;
border-radius: 4px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
border: 1px solid #ddd;
}
@media (min-width: 768px) {
.nav-tabs.nav-justified > li > a {
border-bottom: 1px solid #ddd;
border-radius: 4px 4px 0 0;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
border-bottom-color: #fff;
}
}
.nav-pills > li {
float: left;
}
.nav-pills > li > a {
border-radius: 4px;
}
.nav-pills > li + li {
margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
color: #fff;
background-color: #337ab7;
}
.nav-stacked > li {
float: none;
}
.nav-stacked > li + li {
margin-top: 2px;
margin-left: 0;
}
.nav-justified {
width: 100%;
}
.nav-justified > li {
float: none;
}
.nav-justified > li > a {
margin-bottom: 5px;
text-align: center;
}
.nav-justified > .dropdown .dropdown-menu {
top: auto;
left: auto;
}
@media (min-width: 768px) {
.nav-justified > li {
display: table-cell;
width: 1%;
}
.nav-justified > li > a {
margin-bottom: 0;
}
}
.nav-tabs-justified {
border-bottom: 0;
}
.nav-tabs-justified > li > a {
margin-right: 0;
border-radius: 4px;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
border: 1px solid #ddd;
}
@media (min-width: 768px) {
.nav-tabs-justified > li > a {
border-bottom: 1px solid #ddd;
border-radius: 4px 4px 0 0;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
border-bottom-color: #fff;
}
}
.tab-content > .tab-pane {
display: none;
}
.tab-content > .active {
display: block;
}
.nav-tabs .dropdown-menu {
margin-top: -1px;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.navbar {
position: relative;
min-height: 50px;
margin-bottom: 20px;
border: 1px solid transparent;
}
@media (min-width: 768px) {
.navbar {
border-radius: 4px;
}
}
@media (min-width: 768px) {
.navbar-header {
float: left;
}
}
.navbar-collapse {
padding-right: 15px;
padding-left: 15px;
overflow-x: visible;
-webkit-overflow-scrolling: touch;
border-top: 1px solid transparent;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
}
.navbar-collapse.in {
overflow-y: auto;
}
@media (min-width: 768px) {
.navbar-collapse {
width: auto;
border-top: 0;
-webkit-box-shadow: none;
box-shadow: none;
}
.navbar-collapse.collapse {
display: block !important;
height: auto !important;
padding-bottom: 0;
overflow: visible !important;
}
.navbar-collapse.in {
overflow-y: visible;
}
.navbar-fixed-top .navbar-collapse,
.navbar-static-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
padding-right: 0;
padding-left: 0;
}
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
max-height: 340px;
}
@media (max-device-width: 480px) and (orientation: landscape) {
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
max-height: 200px;
}
}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
margin-right: -15px;
margin-left: -15px;
}
@media (min-width: 768px) {
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
margin-right: 0;
margin-left: 0;
}
}
.navbar-static-top {
z-index: 1000;
border-width: 0 0 1px;
}
@media (min-width: 768px) {
.navbar-static-top {
border-radius: 0;
}
}
.navbar-fixed-top,
.navbar-fixed-bottom {
position: fixed;
right: 0;
left: 0;
z-index: 1030;
}
@media (min-width: 768px) {
.navbar-fixed-top,
.navbar-fixed-bottom {
border-radius: 0;
}
}
.navbar-fixed-top {
top: 0;
border-width: 0 0 1px;
}
.navbar-fixed-bottom {
bottom: 0;
margin-bottom: 0;
border-width: 1px 0 0;
}
.navbar-brand {
float: left;
height: 50px;
padding: 15px 15px;
font-size: 18px;
line-height: 20px;
}
.navbar-brand:hover,
.navbar-brand:focus {
text-decoration: none;
}
.navbar-brand > img {
display: block;
}
@media (min-width: 768px) {
.navbar > .container .navbar-brand,
.navbar > .container-fluid .navbar-brand {
margin-left: -15px;
}
}
.navbar-toggle {
position: relative;
float: right;
padding: 9px 10px;
margin-top: 8px;
margin-right: 15px;
margin-bottom: 8px;
background-color: transparent;
background-image: none;
border: 1px solid transparent;
border-radius: 4px;
}
.navbar-toggle:focus {
outline: 0;
}
.navbar-toggle .icon-bar {
display: block;
width: 22px;
height: 2px;
border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
margin-top: 4px;
}
@media (min-width: 768px) {
.navbar-toggle {
display: none;
}
}
.navbar-nav {
margin: 7.5px -15px;
}
.navbar-nav > li > a {
padding-top: 10px;
padding-bottom: 10px;
line-height: 20px;
}
@media (max-width: 767px) {
.navbar-nav .open .dropdown-menu {
position: static;
float: none;
width: auto;
margin-top: 0;
background-color: transparent;
border: 0;
-webkit-box-shadow: none;
box-shadow: none;
}
.navbar-nav .open .dropdown-menu > li > a,
.navbar-nav .open .dropdown-menu .dropdown-header {
padding: 5px 15px 5px 25px;
}
.navbar-nav .open .dropdown-menu > li > a {
line-height: 20px;
}
.navbar-nav .open .dropdown-menu > li > a:hover,
.navbar-nav .open .dropdown-menu > li > a:focus {
background-image: none;
}
}
@media (min-width: 768px) {
.navbar-nav {
float: left;
margin: 0;
}
.navbar-nav > li {
float: left;
}
.navbar-nav > li > a {
padding-top: 15px;
padding-bottom: 15px;
}
}
.navbar-form {
padding: 10px 15px;
margin-top: 8px;
margin-right: -15px;
margin-bottom: 8px;
margin-left: -15px;
border-top: 1px solid transparent;
border-bottom: 1px solid transparent;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
}
@media (min-width: 768px) {
.navbar-form .form-group {
display: inline-block;
margin-bottom: 0;
vertical-align: middle;
}
.navbar-form .form-control {
display: inline-block;
width: auto;
vertical-align: middle;
}
.navbar-form .form-control-static {
display: inline-block;
}
.navbar-form .input-group {
display: inline-table;
vertical-align: middle;
}
.navbar-form .input-group .input-group-addon,
.navbar-form .input-group .input-group-btn,
.navbar-form .input-group .form-control {
width: auto;
}
.navbar-form .input-group > .form-control {
width: 100%;
}
.navbar-form .control-label {
margin-bottom: 0;
vertical-align: middle;
}
.navbar-form .radio,
.navbar-form .checkbox {
display: inline-block;
margin-top: 0;
margin-bottom: 0;
vertical-align: middle;
}
.navbar-form .radio label,
.navbar-form .checkbox label {
padding-left: 0;
}
.navbar-form .radio input[type="radio"],
.navbar-form .checkbox input[type="checkbox"] {
position: relative;
margin-left: 0;
}
.navbar-form .has-feedback .form-control-feedback {
top: 0;
}
}
@media (max-width: 767px) {
.navbar-form .form-group {
margin-bottom: 5px;
}
.navbar-form .form-group:last-child {
margin-bottom: 0;
}
}
@media (min-width: 768px) {
.navbar-form {
width: auto;
padding-top: 0;
padding-bottom: 0;
margin-right: 0;
margin-left: 0;
border: 0;
-webkit-box-shadow: none;
box-shadow: none;
}
}
.navbar-nav > li > .dropdown-menu {
margin-top: 0;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
margin-bottom: 0;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.navbar-btn {
margin-top: 8px;
margin-bottom: 8px;
}
.navbar-btn.btn-sm {
margin-top: 10px;
margin-bottom: 10px;
}
.navbar-btn.btn-xs {
margin-top: 14px;
margin-bottom: 14px;
}
.navbar-text {
margin-top: 15px;
margin-bottom: 15px;
}
@media (min-width: 768px) {
.navbar-text {
float: left;
margin-right: 15px;
margin-left: 15px;
}
}
@media (min-width: 768px) {
.navbar-left {
float: left !important;
}
.navbar-right {
float: right !important;
margin-right: -15px;
}
.navbar-right ~ .navbar-right {
margin-right: 0;
}
}
.navbar-default {
background-color: #f8f8f8;
border-color: #e7e7e7;
}
.navbar-default .navbar-brand {
color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
color: #5e5e5e;
background-color: transparent;
}
.navbar-default .navbar-text {
color: #777;
}
.navbar-default .navbar-nav > li > a {
color: #777;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
color: #333;
background-color: transparent;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
color: #555;
background-color: #e7e7e7;
}
.navbar-default .navbar-nav > .disabled > a,
.navbar-default .navbar-nav > .disabled > a:hover,
.navbar-default .navbar-nav > .disabled > a:focus {
color: #ccc;
background-color: transparent;
}
.navbar-default .navbar-toggle {
border-color: #ddd;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
background-color: #ddd;
}
.navbar-default .navbar-toggle .icon-bar {
background-color: #888;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
border-color: #e7e7e7;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
color: #555;
background-color: #e7e7e7;
}
@media (max-width: 767px) {
.navbar-default .navbar-nav .open .dropdown-menu > li > a {
color: #777;
}
.navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
color: #333;
background-color: transparent;
}
.navbar-default .navbar-nav .open .dropdown-menu > .active > a,
.navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
.navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
color: #555;
background-color: #e7e7e7;
}
.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
color: #ccc;
background-color: transparent;
}
}
.navbar-default .navbar-link {
color: #777;
}
.navbar-default .navbar-link:hover {
color: #333;
}
.navbar-default .btn-link {
color: #777;
}
.navbar-default .btn-link:hover,
.navbar-default .btn-link:focus {
color: #333;
}
.navbar-default .btn-link[disabled]:hover,
fieldset[disabled] .navbar-default .btn-link:hover,
.navbar-default .btn-link[disabled]:focus,
fieldset[disabled] .navbar-default .btn-link:focus {
color: #ccc;
}
.navbar-inverse {
background-color: #222;
border-color: #080808;
}
.navbar-inverse .navbar-brand {
color: #9d9d9d;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
color: #fff;
background-color: transparent;
}
.navbar-inverse .navbar-text {
color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a {
color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
color: #fff;
background-color: transparent;
}
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:hover,
.navbar-inverse .navbar-nav > .active > a:focus {
color: #fff;
background-color: #080808;
}
.navbar-inverse .navbar-nav > .disabled > a,
.navbar-inverse .navbar-nav > .disabled > a:hover,
.navbar-inverse .navbar-nav > .disabled > a:focus {
color: #444;
background-color: transparent;
}
.navbar-inverse .navbar-toggle {
border-color: #333;
}
.navbar-inverse .navbar-toggle:hover,
.navbar-inverse .navbar-toggle:focus {
background-color: #333;
}
.navbar-inverse .navbar-toggle .icon-bar {
background-color: #fff;
}
.navbar-inverse .navbar-collapse,
.navbar-inverse .navbar-form {
border-color: #101010;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .open > a:hover,
.navbar-inverse .navbar-nav > .open > a:focus {
color: #fff;
background-color: #080808;
}
@media (max-width: 767px) {
.navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
border-color: #080808;
}
.navbar-inverse .navbar-nav .open .dropdown-menu .divider {
background-color: #080808;
}
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
color: #9d9d9d;
}
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
color: #fff;
background-color: transparent;
}
.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
color: #fff;
background-color: #080808;
}
.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
color: #444;
background-color: transparent;
}
}
.navbar-inverse .navbar-link {
color: #9d9d9d;
}
.navbar-inverse .navbar-link:hover {
color: #fff;
}
.navbar-inverse .btn-link {
color: #9d9d9d;
}
.navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link:focus {
color: #fff;
}
.navbar-inverse .btn-link[disabled]:hover,
fieldset[disabled] .navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link[disabled]:focus,
fieldset[disabled] .navbar-inverse .btn-link:focus {
color: #444;
}
.breadcrumb {
padding: 8px 15px;
margin-bottom: 20px;
list-style: none;
background-color: #f5f5f5;
border-radius: 4px;
}
.breadcrumb > li {
display: inline-block;
}
.breadcrumb > li + li:before {
padding: 0 5px;
color: #ccc;
content: "/\00a0";
}
.breadcrumb > .active {
color: #777;
}
.pagination {
display: inline-block;
padding-left: 0;
margin: 20px 0;
border-radius: 4px;
}
.pagination > li {
display: inline;
}
.pagination > li > a,
.pagination > li > span {
position: relative;
float: left;
padding: 6px 12px;
margin-left: -1px;
line-height: 1.42857143;
color: #337ab7;
text-decoration: none;
background-color: #fff;
border: 1px solid #ddd;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
margin-left: 0;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
z-index: 2;
color: #23527c;
background-color: #eee;
border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
z-index: 3;
color: #fff;
cursor: default;
background-color: #337ab7;
border-color: #337ab7;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
color: #777;
cursor: not-allowed;
background-color: #fff;
border-color: #ddd;
}
.pagination-lg > li > a,
.pagination-lg > li > span {
padding: 10px 16px;
font-size: 18px;
line-height: 1.3333333;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
border-top-left-radius: 6px;
border-bottom-left-radius: 6px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
border-top-right-radius: 6px;
border-bottom-right-radius: 6px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
}
.pager {
padding-left: 0;
margin: 20px 0;
text-align: center;
list-style: none;
}
.pager li {
display: inline;
}
.pager li > a,
.pager li > span {
display: inline-block;
padding: 5px 14px;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
text-decoration: none;
background-color: #eee;
}
.pager .next > a,
.pager .next > span {
float: right;
}
.pager .previous > a,
.pager .previous > span {
float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
color: #777;
cursor: not-allowed;
background-color: #fff;
}
.label {
display: inline;
padding: .2em .6em .3em;
font-size: 75%;
font-weight: bold;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: .25em;
}
a.label:hover,
a.label:focus {
color: #fff;
text-decoration: none;
cursor: pointer;
}
.label:empty {
display: none;
}
.btn .label {
position: relative;
top: -1px;
}
.label-default {
background-color: #777;
}
.label-default[href]:hover,
.label-default[href]:focus {
background-color: #5e5e5e;
}
.label-primary {
background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
background-color: #286090;
}
.label-success {
background-color: #5cb85c;
}
.label-success[href]:hover,
.label-success[href]:focus {
background-color: #449d44;
}
.label-info {
background-color: #5bc0de;
}
.label-info[href]:hover,
.label-info[href]:focus {
background-color: #31b0d5;
}
.label-warning {
background-color: #f0ad4e;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
background-color: #ec971f;
}
.label-danger {
background-color: #d9534f;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
background-color: #c9302c;
}
.badge {
display: inline-block;
min-width: 10px;
padding: 3px 7px;
font-size: 12px;
font-weight: bold;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: middle;
background-color: #777;
border-radius: 10px;
}
.badge:empty {
display: none;
}
.btn .badge {
position: relative;
top: -1px;
}
.btn-xs .badge,
.btn-group-xs > .btn .badge {
top: 0;
padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
color: #fff;
text-decoration: none;
cursor: pointer;
}
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
color: #337ab7;
background-color: #fff;
}
.list-group-item > .badge {
float: right;
}
.list-group-item > .badge + .badge {
margin-right: 5px;
}
.nav-pills > li > a > .badge {
margin-left: 3px;
}
.jumbotron {
padding-top: 30px;
padding-bottom: 30px;
margin-bottom: 30px;
color: inherit;
background-color: #eee;
}
.jumbotron h1,
.jumbotron .h1 {
color: inherit;
}
.jumbotron p {
margin-bottom: 15px;
font-size: 21px;
font-weight: 200;
}
.jumbotron > hr {
border-top-color: #d5d5d5;
}
.container .jumbotron,
.container-fluid .jumbotron {
padding-right: 15px;
padding-left: 15px;
border-radius: 6px;
}
.jumbotron .container {
max-width: 100%;
}
@media screen and (min-width: 768px) {
.jumbotron {
padding-top: 48px;
padding-bottom: 48px;
}
.container .jumbotron,
.container-fluid .jumbotron {
padding-right: 60px;
padding-left: 60px;
}
.jumbotron h1,
.jumbotron .h1 {
font-size: 63px;
}
}
.thumbnail {
display: block;
padding: 4px;
margin-bottom: 20px;
line-height: 1.42857143;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 4px;
-webkit-transition: border .2s ease-in-out;
-o-transition: border .2s ease-in-out;
transition: border .2s ease-in-out;
}
.thumbnail > img,
.thumbnail a > img {
margin-right: auto;
margin-left: auto;
}
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
border-color: #337ab7;
}
.thumbnail .caption {
padding: 9px;
color: #333;
}
.alert {
padding: 15px;
margin-bottom: 20px;
border: 1px solid transparent;
border-radius: 4px;
}
.alert h4 {
margin-top: 0;
color: inherit;
}
.alert .alert-link {
font-weight: bold;
}
.alert > p,
.alert > ul {
margin-bottom: 0;
}
.alert > p + p {
margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
position: relative;
top: -2px;
right: -21px;
color: inherit;
}
.alert-success {
color: #3c763d;
background-color: #dff0d8;
border-color: #d6e9c6;
}
.alert-success hr {
border-top-color: #c9e2b3;
}
.alert-success .alert-link {
color: #2b542c;
}
.alert-info {
color: #31708f;
background-color: #d9edf7;
border-color: #bce8f1;
}
.alert-info hr {
border-top-color: #a6e1ec;
}
.alert-info .alert-link {
color: #245269;
}
.alert-warning {
color: #8a6d3b;
background-color: #fcf8e3;
border-color: #faebcc;
}
.alert-warning hr {
border-top-color: #f7e1b5;
}
.alert-warning .alert-link {
color: #66512c;
}
.alert-danger {
color: #a94442;
background-color: #f2dede;
border-color: #ebccd1;
}
.alert-danger hr {
border-top-color: #e4b9c0;
}
.alert-danger .alert-link {
color: #843534;
}
@-webkit-keyframes progress-bar-stripes {
from {
background-position: 40px 0;
}
to {
background-position: 0 0;
}
}
@-o-keyframes progress-bar-stripes {
from {
background-position: 40px 0;
}
to {
background-position: 0 0;
}
}
@keyframes progress-bar-stripes {
from {
background-position: 40px 0;
}
to {
background-position: 0 0;
}
}
.progress {
height: 20px;
margin-bottom: 20px;
overflow: hidden;
background-color: #f5f5f5;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
}
.progress-bar {
float: left;
width: 0;
height: 100%;
font-size: 12px;
line-height: 20px;
color: #fff;
text-align: center;
background-color: #337ab7;
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
-webkit-transition: width .6s ease;
-o-transition: width .6s ease;
transition: width .6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-webkit-background-size: 40px 40px;
background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
-webkit-animation: progress-bar-stripes 2s linear infinite;
-o-animation: progress-bar-stripes 2s linear infinite;
animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
background-color: #5cb85c;
}
.progress-striped .progress-bar-success {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
background-color: #5bc0de;
}
.progress-striped .progress-bar-info {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
background-color: #f0ad4e;
}
.progress-striped .progress-bar-warning {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
background-color: #d9534f;
}
.progress-striped .progress-bar-danger {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.media {
margin-top: 15px;
}
.media:first-child {
margin-top: 0;
}
.media,
.media-body {
overflow: hidden;
zoom: 1;
}
.media-body {
width: 10000px;
}
.media-object {
display: block;
}
.media-object.img-thumbnail {
max-width: none;
}
.media-right,
.media > .pull-right {
padding-left: 10px;
}
.media-left,
.media > .pull-left {
padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
display: table-cell;
vertical-align: top;
}
.media-middle {
vertical-align: middle;
}
.media-bottom {
vertical-align: bottom;
}
.media-heading {
margin-top: 0;
margin-bottom: 5px;
}
.media-list {
padding-left: 0;
list-style: none;
}
.list-group {
padding-left: 0;
margin-bottom: 20px;
}
.list-group-item {
position: relative;
display: block;
padding: 10px 15px;
margin-bottom: -1px;
background-color: #fff;
border: 1px solid #ddd;
}
.list-group-item:first-child {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.list-group-item:last-child {
margin-bottom: 0;
border-bottom-right-radius: 4px;
border-bottom-left-radius: 4px;
}
a.list-group-item,
button.list-group-item {
color: #555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
color: #333;
}
a.list-group-item:hover,
button.list-group-item:hover,
a.list-group-item:focus,
button.list-group-item:focus {
color: #555;
text-decoration: none;
background-color: #f5f5f5;
}
button.list-group-item {
width: 100%;
text-align: left;
}
.list-group-item.disabled,
.list-group-item.disabled:hover,
.list-group-item.disabled:focus {
color: #777;
cursor: not-allowed;
background-color: #eee;
}
.list-group-item.disabled .list-group-item-heading,
.list-group-item.disabled:hover .list-group-item-heading,
.list-group-item.disabled:focus .list-group-item-heading {
color: inherit;
}
.list-group-item.disabled .list-group-item-text,
.list-group-item.disabled:hover .list-group-item-text,
.list-group-item.disabled:focus .list-group-item-text {
color: #777;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
z-index: 2;
color: #fff;
background-color: #337ab7;
border-color: #337ab7;
}
.list-group-item.active .list-group-item-heading,
.list-group-item.active:hover .list-group-item-heading,
.list-group-item.active:focus .list-group-item-heading,
.list-group-item.active .list-group-item-heading > small,
.list-group-item.active:hover .list-group-item-heading > small,
.list-group-item.active:focus .list-group-item-heading > small,
.list-group-item.active .list-group-item-heading > .small,
.list-group-item.active:hover .list-group-item-heading > .small,
.list-group-item.active:focus .list-group-item-heading > .small {
color: inherit;
}
.list-group-item.active .list-group-item-text,
.list-group-item.active:hover .list-group-item-text,
.list-group-item.active:focus .list-group-item-text {
color: #c7ddef;
}
.list-group-item-success {
color: #3c763d;
background-color: #dff0d8;
}
a.list-group-item-success,
button.list-group-item-success {
color: #3c763d;
}
a.list-group-item-success .list-group-item-heading,
button.list-group-item-success .list-group-item-heading {
color: inherit;
}
a.list-group-item-success:hover,
button.list-group-item-success:hover,
a.list-group-item-success:focus,
button.list-group-item-success:focus {
color: #3c763d;
background-color: #d0e9c6;
}
a.list-group-item-success.active,
button.list-group-item-success.active,
a.list-group-item-success.active:hover,
button.list-group-item-success.active:hover,
a.list-group-item-success.active:focus,
button.list-group-item-success.active:focus {
color: #fff;
background-color: #3c763d;
border-color: #3c763d;
}
.list-group-item-info {
color: #31708f;
background-color: #d9edf7;
}
a.list-group-item-info,
button.list-group-item-info {
color: #31708f;
}
a.list-group-item-info .list-group-item-heading,
button.list-group-item-info .list-group-item-heading {
color: inherit;
}
a.list-group-item-info:hover,
button.list-group-item-info:hover,
a.list-group-item-info:focus,
button.list-group-item-info:focus {
color: #31708f;
background-color: #c4e3f3;
}
a.list-group-item-info.active,
button.list-group-item-info.active,
a.list-group-item-info.active:hover,
button.list-group-item-info.active:hover,
a.list-group-item-info.active:focus,
button.list-group-item-info.active:focus {
color: #fff;
background-color: #31708f;
border-color: #31708f;
}
.list-group-item-warning {
color: #8a6d3b;
background-color: #fcf8e3;
}
a.list-group-item-warning,
button.list-group-item-warning {
color: #8a6d3b;
}
a.list-group-item-warning .list-group-item-heading,
button.list-group-item-warning .list-group-item-heading {
color: inherit;
}
a.list-group-item-warning:hover,
button.list-group-item-warning:hover,
a.list-group-item-warning:focus,
button.list-group-item-warning:focus {
color: #8a6d3b;
background-color: #faf2cc;
}
a.list-group-item-warning.active,
button.list-group-item-warning.active,
a.list-group-item-warning.active:hover,
button.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus,
button.list-group-item-warning.active:focus {
color: #fff;
background-color: #8a6d3b;
border-color: #8a6d3b;
}
.list-group-item-danger {
color: #a94442;
background-color: #f2dede;
}
a.list-group-item-danger,
button.list-group-item-danger {
color: #a94442;
}
a.list-group-item-danger .list-group-item-heading,
button.list-group-item-danger .list-group-item-heading {
color: inherit;
}
a.list-group-item-danger:hover,
button.list-group-item-danger:hover,
a.list-group-item-danger:focus,
button.list-group-item-danger:focus {
color: #a94442;
background-color: #ebcccc;
}
a.list-group-item-danger.active,
button.list-group-item-danger.active,
a.list-group-item-danger.active:hover,
button.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus,
button.list-group-item-danger.active:focus {
color: #fff;
background-color: #a94442;
border-color: #a94442;
}
.list-group-item-heading {
margin-top: 0;
margin-bottom: 5px;
}
.list-group-item-text {
margin-bottom: 0;
line-height: 1.3;
}
.panel {
margin-bottom: 20px;
background-color: #fff;
border: 1px solid transparent;
border-radius: 4px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
}
.panel-body {
padding: 15px;
}
.panel-heading {
padding: 10px 15px;
border-bottom: 1px solid transparent;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.panel-heading > .dropdown .dropdown-toggle {
color: inherit;
}
.panel-title {
margin-top: 0;
margin-bottom: 0;
font-size: 16px;
color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
color: inherit;
}
.panel-footer {
padding: 10px 15px;
background-color: #f5f5f5;
border-top: 1px solid #ddd;
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
border-width: 1px 0;
border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
border-top: 0;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
border-bottom: 0;
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
border-top-width: 0;
}
.list-group + .panel-footer {
border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
padding-right: 15px;
padding-left: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
border-top-left-radius: 3px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
border-top-right-radius: 3px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
border-bottom-left-radius: 3px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
border-bottom-right-radius: 3px;
}
.panel > .panel-body + .table,
.panel > .panel-body + .table-responsive,
.panel > .table + .panel-body,
.panel > .table-responsive + .panel-body {
border-top: 1px solid #ddd;
}
.panel > .table > tbody:first-child > tr:first-child th,
.panel > .table > tbody:first-child > tr:first-child td {
border-top: 0;
}
.panel > .table-bordered,
.panel > .table-responsive > .table-bordered {
border: 0;
}
.panel > .table-bordered > thead > tr > th:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
.panel > .table-bordered > tbody > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
.panel > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-bordered > thead > tr > td:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
.panel > .table-bordered > tbody > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
.panel > .table-bordered > tfoot > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
border-left: 0;
}
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
border-right: 0;
}
.panel > .table-bordered > thead > tr:first-child > td,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
.panel > .table-bordered > tbody > tr:first-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
.panel > .table-bordered > thead > tr:first-child > th,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
.panel > .table-bordered > tbody > tr:first-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
border-bottom: 0;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
border-bottom: 0;
}
.panel > .table-responsive {
margin-bottom: 0;
border: 0;
}
.panel-group {
margin-bottom: 20px;
}
.panel-group .panel {
margin-bottom: 0;
border-radius: 4px;
}
.panel-group .panel + .panel {
margin-top: 5px;
}
.panel-group .panel-heading {
border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse > .panel-body,
.panel-group .panel-heading + .panel-collapse > .list-group {
border-top: 1px solid #ddd;
}
.panel-group .panel-footer {
border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
border-bottom: 1px solid #ddd;
}
.panel-default {
border-color: #ddd;
}
.panel-default > .panel-heading {
color: #333;
background-color: #f5f5f5;
border-color: #ddd;
}
.panel-default > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #ddd;
}
.panel-default > .panel-heading .badge {
color: #f5f5f5;
background-color: #333;
}
.panel-default > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #ddd;
}
.panel-primary {
border-color: #337ab7;
}
.panel-primary > .panel-heading {
color: #fff;
background-color: #337ab7;
border-color: #337ab7;
}
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #337ab7;
}
.panel-primary > .panel-heading .badge {
color: #337ab7;
background-color: #fff;
}
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #337ab7;
}
.panel-success {
border-color: #d6e9c6;
}
.panel-success > .panel-heading {
color: #3c763d;
background-color: #dff0d8;
border-color: #d6e9c6;
}
.panel-success > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #d6e9c6;
}
.panel-success > .panel-heading .badge {
color: #dff0d8;
background-color: #3c763d;
}
.panel-success > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #d6e9c6;
}
.panel-info {
border-color: #bce8f1;
}
.panel-info > .panel-heading {
color: #31708f;
background-color: #d9edf7;
border-color: #bce8f1;
}
.panel-info > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #bce8f1;
}
.panel-info > .panel-heading .badge {
color: #d9edf7;
background-color: #31708f;
}
.panel-info > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #bce8f1;
}
.panel-warning {
border-color: #faebcc;
}
.panel-warning > .panel-heading {
color: #8a6d3b;
background-color: #fcf8e3;
border-color: #faebcc;
}
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #faebcc;
}
.panel-warning > .panel-heading .badge {
color: #fcf8e3;
background-color: #8a6d3b;
}
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #faebcc;
}
.panel-danger {
border-color: #ebccd1;
}
.panel-danger > .panel-heading {
color: #a94442;
background-color: #f2dede;
border-color: #ebccd1;
}
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #ebccd1;
}
.panel-danger > .panel-heading .badge {
color: #f2dede;
background-color: #a94442;
}
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #ebccd1;
}
.embed-responsive {
position: relative;
display: block;
height: 0;
padding: 0;
overflow: hidden;
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
border: 0;
}
.embed-responsive-16by9 {
padding-bottom: 56.25%;
}
.embed-responsive-4by3 {
padding-bottom: 75%;
}
.well {
min-height: 20px;
padding: 19px;
margin-bottom: 20px;
background-color: #f5f5f5;
border: 1px solid #e3e3e3;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
}
.well blockquote {
border-color: #ddd;
border-color: rgba(0, 0, 0, .15);
}
.well-lg {
padding: 24px;
border-radius: 6px;
}
.well-sm {
padding: 9px;
border-radius: 3px;
}
.close {
float: right;
font-size: 21px;
font-weight: bold;
line-height: 1;
color: #000;
text-shadow: 0 1px 0 #fff;
filter: alpha(opacity=20);
opacity: .2;
}
.close:hover,
.close:focus {
color: #000;
text-decoration: none;
cursor: pointer;
filter: alpha(opacity=50);
opacity: .5;
}
button.close {
-webkit-appearance: none;
padding: 0;
cursor: pointer;
background: transparent;
border: 0;
}
.modal-open {
overflow: hidden;
}
.modal {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1050;
display: none;
overflow: hidden;
-webkit-overflow-scrolling: touch;
outline: 0;
}
.modal.fade .modal-dialog {
-webkit-transition: -webkit-transform .3s ease-out;
-o-transition: -o-transform .3s ease-out;
transition: transform .3s ease-out;
-webkit-transform: translate(0, -25%);
-ms-transform: translate(0, -25%);
-o-transform: translate(0, -25%);
transform: translate(0, -25%);
}
.modal.in .modal-dialog {
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
-o-transform: translate(0, 0);
transform: translate(0, 0);
}
.modal-open .modal {
overflow-x: hidden;
overflow-y: auto;
}
.modal-dialog {
position: relative;
width: auto;
margin: 10px;
}
.modal-content {
position: relative;
background-color: #fff;
-webkit-background-clip: padding-box;
background-clip: padding-box;
border: 1px solid #999;
border: 1px solid rgba(0, 0, 0, .2);
border-radius: 6px;
outline: 0;
-webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
}
.modal-backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1040;
background-color: #000;
}
.modal-backdrop.fade {
filter: alpha(opacity=0);
opacity: 0;
}
.modal-backdrop.in {
filter: alpha(opacity=50);
opacity: .5;
}
.modal-header {
padding: 15px;
border-bottom: 1px solid #e5e5e5;
}
.modal-header .close {
margin-top: -2px;
}
.modal-title {
margin: 0;
line-height: 1.42857143;
}
.modal-body {
position: relative;
padding: 15px;
}
.modal-footer {
padding: 15px;
text-align: right;
border-top: 1px solid #e5e5e5;
}
.modal-footer .btn + .btn {
margin-bottom: 0;
margin-left: 5px;
}
.modal-footer .btn-group .btn + .btn {
margin-left: -1px;
}
.modal-footer .btn-block + .btn-block {
margin-left: 0;
}
.modal-scrollbar-measure {
position: absolute;
top: -9999px;
width: 50px;
height: 50px;
overflow: scroll;
}
@media (min-width: 768px) {
.modal-dialog {
width: 600px;
margin: 30px auto;
}
.modal-content {
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
}
.modal-sm {
width: 300px;
}
}
@media (min-width: 992px) {
.modal-lg {
width: 900px;
}
}
.tooltip {
position: absolute;
z-index: 1070;
display: block;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 12px;
font-style: normal;
font-weight: normal;
line-height: 1.42857143;
text-align: left;
text-align: start;
text-decoration: none;
text-shadow: none;
text-transform: none;
letter-spacing: normal;
word-break: normal;
word-spacing: normal;
word-wrap: normal;
white-space: normal;
filter: alpha(opacity=0);
opacity: 0;
line-break: auto;
}
.tooltip.in {
filter: alpha(opacity=90);
opacity: .9;
}
.tooltip.top {
padding: 5px 0;
margin-top: -3px;
}
.tooltip.right {
padding: 0 5px;
margin-left: 3px;
}
.tooltip.bottom {
padding: 5px 0;
margin-top: 3px;
}
.tooltip.left {
padding: 0 5px;
margin-left: -3px;
}
.tooltip-inner {
max-width: 200px;
padding: 3px 8px;
color: #fff;
text-align: center;
background-color: #000;
border-radius: 4px;
}
.tooltip-arrow {
position: absolute;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
}
.tooltip.top .tooltip-arrow {
bottom: 0;
left: 50%;
margin-left: -5px;
border-width: 5px 5px 0;
border-top-color: #000;
}
.tooltip.top-left .tooltip-arrow {
right: 5px;
bottom: 0;
margin-bottom: -5px;
border-width: 5px 5px 0;
border-top-color: #000;
}
.tooltip.top-right .tooltip-arrow {
bottom: 0;
left: 5px;
margin-bottom: -5px;
border-width: 5px 5px 0;
border-top-color: #000;
}
.tooltip.right .tooltip-arrow {
top: 50%;
left: 0;
margin-top: -5px;
border-width: 5px 5px 5px 0;
border-right-color: #000;
}
.tooltip.left .tooltip-arrow {
top: 50%;
right: 0;
margin-top: -5px;
border-width: 5px 0 5px 5px;
border-left-color: #000;
}
.tooltip.bottom .tooltip-arrow {
top: 0;
left: 50%;
margin-left: -5px;
border-width: 0 5px 5px;
border-bottom-color: #000;
}
.tooltip.bottom-left .tooltip-arrow {
top: 0;
right: 5px;
margin-top: -5px;
border-width: 0 5px 5px;
border-bottom-color: #000;
}
.tooltip.bottom-right .tooltip-arrow {
top: 0;
left: 5px;
margin-top: -5px;
border-width: 0 5px 5px;
border-bottom-color: #000;
}
.popover {
position: absolute;
top: 0;
left: 0;
z-index: 1060;
display: none;
max-width: 276px;
padding: 1px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
font-style: normal;
font-weight: normal;
line-height: 1.42857143;
text-align: left;
text-align: start;
text-decoration: none;
text-shadow: none;
text-transform: none;
letter-spacing: normal;
word-break: normal;
word-spacing: normal;
word-wrap: normal;
white-space: normal;
background-color: #fff;
-webkit-background-clip: padding-box;
background-clip: padding-box;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, .2);
border-radius: 6px;
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
line-break: auto;
}
.popover.top {
margin-top: -10px;
}
.popover.right {
margin-left: 10px;
}
.popover.bottom {
margin-top: 10px;
}
.popover.left {
margin-left: -10px;
}
.popover-title {
padding: 8px 14px;
margin: 0;
font-size: 14px;
background-color: #f7f7f7;
border-bottom: 1px solid #ebebeb;
border-radius: 5px 5px 0 0;
}
.popover-content {
padding: 9px 14px;
}
.popover > .arrow,
.popover > .arrow:after {
position: absolute;
display: block;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
}
.popover > .arrow {
border-width: 11px;
}
.popover > .arrow:after {
content: "";
border-width: 10px;
}
.popover.top > .arrow {
bottom: -11px;
left: 50%;
margin-left: -11px;
border-top-color: #999;
border-top-color: rgba(0, 0, 0, .25);
border-bottom-width: 0;
}
.popover.top > .arrow:after {
bottom: 1px;
margin-left: -10px;
content: " ";
border-top-color: #fff;
border-bottom-width: 0;
}
.popover.right > .arrow {
top: 50%;
left: -11px;
margin-top: -11px;
border-right-color: #999;
border-right-color: rgba(0, 0, 0, .25);
border-left-width: 0;
}
.popover.right > .arrow:after {
bottom: -10px;
left: 1px;
content: " ";
border-right-color: #fff;
border-left-width: 0;
}
.popover.bottom > .arrow {
top: -11px;
left: 50%;
margin-left: -11px;
border-top-width: 0;
border-bottom-color: #999;
border-bottom-color: rgba(0, 0, 0, .25);
}
.popover.bottom > .arrow:after {
top: 1px;
margin-left: -10px;
content: " ";
border-top-width: 0;
border-bottom-color: #fff;
}
.popover.left > .arrow {
top: 50%;
right: -11px;
margin-top: -11px;
border-right-width: 0;
border-left-color: #999;
border-left-color: rgba(0, 0, 0, .25);
}
.popover.left > .arrow:after {
right: 1px;
bottom: -10px;
content: " ";
border-right-width: 0;
border-left-color: #fff;
}
.carousel {
position: relative;
}
.carousel-inner {
position: relative;
width: 100%;
overflow: hidden;
}
.carousel-inner > .item {
position: relative;
display: none;
-webkit-transition: .6s ease-in-out left;
-o-transition: .6s ease-in-out left;
transition: .6s ease-in-out left;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
line-height: 1;
}
@media all and (transform-3d), (-webkit-transform-3d) {
.carousel-inner > .item {
-webkit-transition: -webkit-transform .6s ease-in-out;
-o-transition: -o-transform .6s ease-in-out;
transition: transform .6s ease-in-out;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
-webkit-perspective: 1000px;
perspective: 1000px;
}
.carousel-inner > .item.next,
.carousel-inner > .item.active.right {
left: 0;
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
}
.carousel-inner > .item.prev,
.carousel-inner > .item.active.left {
left: 0;
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
}
.carousel-inner > .item.next.left,
.carousel-inner > .item.prev.right,
.carousel-inner > .item.active {
left: 0;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
display: block;
}
.carousel-inner > .active {
left: 0;
}
.carousel-inner > .next,
.carousel-inner > .prev {
position: absolute;
top: 0;
width: 100%;
}
.carousel-inner > .next {
left: 100%;
}
.carousel-inner > .prev {
left: -100%;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
left: 0;
}
.carousel-inner > .active.left {
left: -100%;
}
.carousel-inner > .active.right {
left: 100%;
}
.carousel-control {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 15%;
font-size: 20px;
color: #fff;
text-align: center;
text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
background-color: rgba(0, 0, 0, 0);
filter: alpha(opacity=50);
opacity: .5;
}
.carousel-control.left {
background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
background-repeat: repeat-x;
}
.carousel-control.right {
right: 0;
left: auto;
background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
background-repeat: repeat-x;
}
.carousel-control:hover,
.carousel-control:focus {
color: #fff;
text-decoration: none;
filter: alpha(opacity=90);
outline: 0;
opacity: .9;
}
.carousel-control .icon-prev,
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
position: absolute;
top: 50%;
z-index: 5;
display: inline-block;
margin-top: -10px;
}
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
left: 50%;
margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
right: 50%;
margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
width: 20px;
height: 20px;
font-family: serif;
line-height: 1;
}
.carousel-control .icon-prev:before {
content: '\2039';
}
.carousel-control .icon-next:before {
content: '\203a';
}
.carousel-indicators {
position: absolute;
bottom: 10px;
left: 50%;
z-index: 15;
width: 60%;
padding-left: 0;
margin-left: -30%;
text-align: center;
list-style: none;
}
.carousel-indicators li {
display: inline-block;
width: 10px;
height: 10px;
margin: 1px;
text-indent: -999px;
cursor: pointer;
background-color: #000 \9;
background-color: rgba(0, 0, 0, 0);
border: 1px solid #fff;
border-radius: 10px;
}
.carousel-indicators .active {
width: 12px;
height: 12px;
margin: 0;
background-color: #fff;
}
.carousel-caption {
position: absolute;
right: 15%;
bottom: 20px;
left: 15%;
z-index: 10;
padding-top: 20px;
padding-bottom: 20px;
color: #fff;
text-align: center;
text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
}
.carousel-caption .btn {
text-shadow: none;
}
@media screen and (min-width: 768px) {
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right,
.carousel-control .icon-prev,
.carousel-control .icon-next {
width: 30px;
height: 30px;
margin-top: -10px;
font-size: 30px;
}
.carousel-control .glyphicon-chevron-left,
.carousel-control .icon-prev {
margin-left: -10px;
}
.carousel-control .glyphicon-chevron-right,
.carousel-control .icon-next {
margin-right: -10px;
}
.carousel-caption {
right: 20%;
left: 20%;
padding-bottom: 30px;
}
.carousel-indicators {
bottom: 20px;
}
}
.clearfix:before,
.clearfix:after,
.dl-horizontal dd:before,
.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
.container-fluid:after,
.row:before,
.row:after,
.form-horizontal .form-group:before,
.form-horizontal .form-group:after,
.btn-toolbar:before,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:before,
.btn-group-vertical > .btn-group:after,
.nav:before,
.nav:after,
.navbar:before,
.navbar:after,
.navbar-header:before,
.navbar-header:after,
.navbar-collapse:before,
.navbar-collapse:after,
.pager:before,
.pager:after,
.panel-body:before,
.panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before,
.modal-footer:after {
display: table;
content: " ";
}
.clearfix:after,
.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
.form-horizontal .form-group:after,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:after,
.nav:after,
.navbar:after,
.navbar-header:after,
.navbar-collapse:after,
.pager:after,
.panel-body:after,
.modal-header:after,
.modal-footer:after {
clear: both;
}
.center-block {
display: block;
margin-right: auto;
margin-left: auto;
}
.pull-right {
float: right !important;
}
.pull-left {
float: left !important;
}
.hide {
display: none !important;
}
.show {
display: block !important;
}
.invisible {
visibility: hidden;
}
.text-hide {
font: 0/0 a;
color: transparent;
text-shadow: none;
background-color: transparent;
border: 0;
}
.hidden {
display: none !important;
}
.affix {
position: fixed;
}
@-ms-viewport {
width: device-width;
}
.visible-xs,
.visible-sm,
.visible-md,
.visible-lg {
display: none !important;
}
.visible-xs-block,
.visible-xs-inline,
.visible-xs-inline-block,
.visible-sm-block,
.visible-sm-inline,
.visible-sm-inline-block,
.visible-md-block,
.visible-md-inline,
.visible-md-inline-block,
.visible-lg-block,
.visible-lg-inline,
.visible-lg-inline-block {
display: none !important;
}
@media (max-width: 767px) {
.visible-xs {
display: block !important;
}
table.visible-xs {
display: table !important;
}
tr.visible-xs {
display: table-row !important;
}
th.visible-xs,
td.visible-xs {
display: table-cell !important;
}
}
@media (max-width: 767px) {
.visible-xs-block {
display: block !important;
}
}
@media (max-width: 767px) {
.visible-xs-inline {
display: inline !important;
}
}
@media (max-width: 767px) {
.visible-xs-inline-block {
display: inline-block !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.visible-sm {
display: block !important;
}
table.visible-sm {
display: table !important;
}
tr.visible-sm {
display: table-row !important;
}
th.visible-sm,
td.visible-sm {
display: table-cell !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.visible-sm-block {
display: block !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.visible-sm-inline {
display: inline !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.visible-sm-inline-block {
display: inline-block !important;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.visible-md {
display: block !important;
}
table.visible-md {
display: table !important;
}
tr.visible-md {
display: table-row !important;
}
th.visible-md,
td.visible-md {
display: table-cell !important;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.visible-md-block {
display: block !important;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.visible-md-inline {
display: inline !important;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.visible-md-inline-block {
display: inline-block !important;
}
}
@media (min-width: 1200px) {
.visible-lg {
display: block !important;
}
table.visible-lg {
display: table !important;
}
tr.visible-lg {
display: table-row !important;
}
th.visible-lg,
td.visible-lg {
display: table-cell !important;
}
}
@media (min-width: 1200px) {
.visible-lg-block {
display: block !important;
}
}
@media (min-width: 1200px) {
.visible-lg-inline {
display: inline !important;
}
}
@media (min-width: 1200px) {
.visible-lg-inline-block {
display: inline-block !important;
}
}
@media (max-width: 767px) {
.hidden-xs {
display: none !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.hidden-sm {
display: none !important;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.hidden-md {
display: none !important;
}
}
@media (min-width: 1200px) {
.hidden-lg {
display: none !important;
}
}
.visible-print {
display: none !important;
}
@media print {
.visible-print {
display: block !important;
}
table.visible-print {
display: table !important;
}
tr.visible-print {
display: table-row !important;
}
th.visible-print,
td.visible-print {
display: table-cell !important;
}
}
.visible-print-block {
display: none !important;
}
@media print {
.visible-print-block {
display: block !important;
}
}
.visible-print-inline {
display: none !important;
}
@media print {
.visible-print-inline {
display: inline !important;
}
}
.visible-print-inline-block {
display: none !important;
}
@media print {
.visible-print-inline-block {
display: inline-block !important;
}
}
@media print {
.hidden-print {
display: none !important;
}
}
/*# sourceMappingURL=bootstrap.css.map */
================================================
FILE: lib/bootstrap/js/bootstrap-table.js
================================================
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :
typeof define === 'function' && define.amd ? define(['jquery'], factory) :
(global = global || self, global.BootstrapTable = factory(global.jQuery));
}(this, function ($) { 'use strict';
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
function createCommonjsModule(fn, module) {
return module = { exports: {} }, fn(module, module.exports), module.exports;
}
var O = 'object';
var check = function (it) {
return it && it.Math == Math && it;
};
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global_1 =
// eslint-disable-next-line no-undef
check(typeof globalThis == O && globalThis) ||
check(typeof window == O && window) ||
check(typeof self == O && self) ||
check(typeof commonjsGlobal == O && commonjsGlobal) ||
// eslint-disable-next-line no-new-func
Function('return this')();
var fails = function (exec) {
try {
return !!exec();
} catch (error) {
return true;
}
};
// Thank's IE8 for his funny defineProperty
var descriptors = !fails(function () {
return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});
var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// Nashorn ~ JDK8 bug
var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
// `Object.prototype.propertyIsEnumerable` method implementation
// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable
var f = NASHORN_BUG ? function propertyIsEnumerable(V) {
var descriptor = getOwnPropertyDescriptor(this, V);
return !!descriptor && descriptor.enumerable;
} : nativePropertyIsEnumerable;
var objectPropertyIsEnumerable = {
f: f
};
var createPropertyDescriptor = function (bitmap, value) {
return {
enumerable: !(bitmap & 1),
configurable: !(bitmap & 2),
writable: !(bitmap & 4),
value: value
};
};
var toString = {}.toString;
var classofRaw = function (it) {
return toString.call(it).slice(8, -1);
};
var split = ''.split;
// fallback for non-array-like ES3 and non-enumerable old V8 strings
var indexedObject = fails(function () {
// throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
// eslint-disable-next-line no-prototype-builtins
return !Object('z').propertyIsEnumerable(0);
}) ? function (it) {
return classofRaw(it) == 'String' ? split.call(it, '') : Object(it);
} : Object;
// `RequireObjectCoercible` abstract operation
// https://tc39.github.io/ecma262/#sec-requireobjectcoercible
var requireObjectCoercible = function (it) {
if (it == undefined) throw TypeError("Can't call method on " + it);
return it;
};
// toObject with fallback for non-array-like ES3 strings
var toIndexedObject = function (it) {
return indexedObject(requireObjectCoercible(it));
};
var isObject = function (it) {
return typeof it === 'object' ? it !== null : typeof it === 'function';
};
// `ToPrimitive` abstract operation
// https://tc39.github.io/ecma262/#sec-toprimitive
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
var toPrimitive = function (input, PREFERRED_STRING) {
if (!isObject(input)) return input;
var fn, val;
if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
throw TypeError("Can't convert object to primitive value");
};
var hasOwnProperty = {}.hasOwnProperty;
var has = function (it, key) {
return hasOwnProperty.call(it, key);
};
var document$1 = global_1.document;
// typeof document.createElement is 'object' in old IE
var EXISTS = isObject(document$1) && isObject(document$1.createElement);
var documentCreateElement = function (it) {
return EXISTS ? document$1.createElement(it) : {};
};
// Thank's IE8 for his funny defineProperty
var ie8DomDefine = !descriptors && !fails(function () {
return Object.defineProperty(documentCreateElement('div'), 'a', {
get: function () { return 7; }
}).a != 7;
});
var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// `Object.getOwnPropertyDescriptor` method
// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
var f$1 = descriptors ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
O = toIndexedObject(O);
P = toPrimitive(P, true);
if (ie8DomDefine) try {
return nativeGetOwnPropertyDescriptor(O, P);
} catch (error) { /* empty */ }
if (has(O, P)) return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O, P), O[P]);
};
var objectGetOwnPropertyDescriptor = {
f: f$1
};
var anObject = function (it) {
if (!isObject(it)) {
throw TypeError(String(it) + ' is not an object');
} return it;
};
var nativeDefineProperty = Object.defineProperty;
// `Object.defineProperty` method
// https://tc39.github.io/ecma262/#sec-object.defineproperty
var f$2 = descriptors ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
anObject(O);
P = toPrimitive(P, true);
anObject(Attributes);
if (ie8DomDefine) try {
return nativeDefineProperty(O, P, Attributes);
} catch (error) { /* empty */ }
if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
if ('value' in Attributes) O[P] = Attributes.value;
return O;
};
var objectDefineProperty = {
f: f$2
};
var hide = descriptors ? function (object, key, value) {
return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value));
} : function (object, key, value) {
object[key] = value;
return object;
};
var setGlobal = function (key, value) {
try {
hide(global_1, key, value);
} catch (error) {
global_1[key] = value;
} return value;
};
var shared = createCommonjsModule(function (module) {
var SHARED = '__core-js_shared__';
var store = global_1[SHARED] || setGlobal(SHARED, {});
(module.exports = function (key, value) {
return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
version: '3.1.3',
mode: 'global',
copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
});
});
var functionToString = shared('native-function-to-string', Function.toString);
var WeakMap = global_1.WeakMap;
var nativeWeakMap = typeof WeakMap === 'function' && /native code/.test(functionToString.call(WeakMap));
var id = 0;
var postfix = Math.random();
var uid = function (key) {
return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
};
var keys = shared('keys');
var sharedKey = function (key) {
return keys[key] || (keys[key] = uid(key));
};
var hiddenKeys = {};
var WeakMap$1 = global_1.WeakMap;
var set, get, has$1;
var enforce = function (it) {
return has$1(it) ? get(it) : set(it, {});
};
var getterFor = function (TYPE) {
return function (it) {
var state;
if (!isObject(it) || (state = get(it)).type !== TYPE) {
throw TypeError('Incompatible receiver, ' + TYPE + ' required');
} return state;
};
};
if (nativeWeakMap) {
var store = new WeakMap$1();
var wmget = store.get;
var wmhas = store.has;
var wmset = store.set;
set = function (it, metadata) {
wmset.call(store, it, metadata);
return metadata;
};
get = function (it) {
return wmget.call(store, it) || {};
};
has$1 = function (it) {
return wmhas.call(store, it);
};
} else {
var STATE = sharedKey('state');
hiddenKeys[STATE] = true;
set = function (it, metadata) {
hide(it, STATE, metadata);
return metadata;
};
get = function (it) {
return has(it, STATE) ? it[STATE] : {};
};
has$1 = function (it) {
return has(it, STATE);
};
}
var internalState = {
set: set,
get: get,
has: has$1,
enforce: enforce,
getterFor: getterFor
};
var redefine = createCommonjsModule(function (module) {
var getInternalState = internalState.get;
var enforceInternalState = internalState.enforce;
var TEMPLATE = String(functionToString).split('toString');
shared('inspectSource', function (it) {
return functionToString.call(it);
});
(module.exports = function (O, key, value, options) {
var unsafe = options ? !!options.unsafe : false;
var simple = options ? !!options.enumerable : false;
var noTargetGet = options ? !!options.noTargetGet : false;
if (typeof value == 'function') {
if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);
enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
}
if (O === global_1) {
if (simple) O[key] = value;
else setGlobal(key, value);
return;
} else if (!unsafe) {
delete O[key];
} else if (!noTargetGet && O[key]) {
simple = true;
}
if (simple) O[key] = value;
else hide(O, key, value);
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, 'toString', function toString() {
return typeof this == 'function' && getInternalState(this).source || functionToString.call(this);
});
});
var path = global_1;
var aFunction = function (variable) {
return typeof variable == 'function' ? variable : undefined;
};
var getBuiltIn = function (namespace, method) {
return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global_1[namespace])
: path[namespace] && path[namespace][method] || global_1[namespace] && global_1[namespace][method];
};
var ceil = Math.ceil;
var floor = Math.floor;
// `ToInteger` abstract operation
// https://tc39.github.io/ecma262/#sec-tointeger
var toInteger = function (argument) {
return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
};
var min = Math.min;
// `ToLength` abstract operation
// https://tc39.github.io/ecma262/#sec-tolength
var toLength = function (argument) {
return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
};
var max = Math.max;
var min$1 = Math.min;
// Helper for a popular repeating case of the spec:
// Let integer be ? ToInteger(index).
// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).
var toAbsoluteIndex = function (index, length) {
var integer = toInteger(index);
return integer < 0 ? max(integer + length, 0) : min$1(integer, length);
};
// `Array.prototype.{ indexOf, includes }` methods implementation
var createMethod = function (IS_INCLUDES) {
return function ($this, el, fromIndex) {
var O = toIndexedObject($this);
var length = toLength(O.length);
var index = toAbsoluteIndex(fromIndex, length);
var value;
// Array#includes uses SameValueZero equality algorithm
// eslint-disable-next-line no-self-compare
if (IS_INCLUDES && el != el) while (length > index) {
value = O[index++];
// eslint-disable-next-line no-self-compare
if (value != value) return true;
// Array#indexOf ignores holes, Array#includes - not
} else for (;length > index; index++) {
if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
} return !IS_INCLUDES && -1;
};
};
var arrayIncludes = {
// `Array.prototype.includes` method
// https://tc39.github.io/ecma262/#sec-array.prototype.includes
includes: createMethod(true),
// `Array.prototype.indexOf` method
// https://tc39.github.io/ecma262/#sec-array.prototype.indexof
indexOf: createMethod(false)
};
var indexOf = arrayIncludes.indexOf;
var objectKeysInternal = function (object, names) {
var O = toIndexedObject(object);
var i = 0;
var result = [];
var key;
for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
// Don't enum bug & hidden keys
while (names.length > i) if (has(O, key = names[i++])) {
~indexOf(result, key) || result.push(key);
}
return result;
};
// IE8- don't enum bug keys
var enumBugKeys = [
'constructor',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'toLocaleString',
'toString',
'valueOf'
];
var hiddenKeys$1 = enumBugKeys.concat('length', 'prototype');
// `Object.getOwnPropertyNames` method
// https://tc39.github.io/ecma262/#sec-object.getownpropertynames
var f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
return objectKeysInternal(O, hiddenKeys$1);
};
var objectGetOwnPropertyNames = {
f: f$3
};
var f$4 = Object.getOwnPropertySymbols;
var objectGetOwnPropertySymbols = {
f: f$4
};
// all object keys, includes non-enumerable and symbols
var ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
var keys = objectGetOwnPropertyNames.f(anObject(it));
var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;
return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
};
var copyConstructorProperties = function (target, source) {
var keys = ownKeys(source);
var defineProperty = objectDefineProperty.f;
var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
}
};
var replacement = /#|\.prototype\./;
var isForced = function (feature, detection) {
var value = data[normalize(feature)];
return value == POLYFILL ? true
: value == NATIVE ? false
: typeof detection == 'function' ? fails(detection)
: !!detection;
};
var normalize = isForced.normalize = function (string) {
return String(string).replace(replacement, '.').toLowerCase();
};
var data = isForced.data = {};
var NATIVE = isForced.NATIVE = 'N';
var POLYFILL = isForced.POLYFILL = 'P';
var isForced_1 = isForced;
var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;
/*
options.target - name of the target object
options.global - target is the global object
options.stat - export as static methods of target
options.proto - export as prototype methods of target
options.real - real prototype method for the `pure` version
options.forced - export even if the native feature is available
options.bind - bind methods to the target, required for the `pure` version
options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
options.unsafe - use the simple assignment of property instead of delete + defineProperty
options.sham - add a flag to not completely full polyfills
options.enumerable - export as enumerable property
options.noTargetGet - prevent calling a getter on target
*/
var _export = function (options, source) {
var TARGET = options.target;
var GLOBAL = options.global;
var STATIC = options.stat;
var FORCED, target, key, targetProperty, sourceProperty, descriptor;
if (GLOBAL) {
target = global_1;
} else if (STATIC) {
target = global_1[TARGET] || setGlobal(TARGET, {});
} else {
target = (global_1[TARGET] || {}).prototype;
}
if (target) for (key in source) {
sourceProperty = source[key];
if (options.noTargetGet) {
descriptor = getOwnPropertyDescriptor$1(target, key);
targetProperty = descriptor && descriptor.value;
} else targetProperty = target[key];
FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
// contained in target
if (!FORCED && targetProperty !== undefined) {
if (typeof sourceProperty === typeof targetProperty) continue;
copyConstructorProperties(sourceProperty, targetProperty);
}
// add a flag to not completely full polyfills
if (options.sham || (targetProperty && targetProperty.sham)) {
hide(sourceProperty, 'sham', true);
}
// extend global
redefine(target, key, sourceProperty, options);
}
};
var nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () {
// Chrome 38 Symbol has incorrect toString conversion
// eslint-disable-next-line no-undef
return !String(Symbol());
});
// `IsArray` abstract operation
// https://tc39.github.io/ecma262/#sec-isarray
var isArray = Array.isArray || function isArray(arg) {
return classofRaw(arg) == 'Array';
};
// `ToObject` abstract operation
// https://tc39.github.io/ecma262/#sec-toobject
var toObject = function (argument) {
return Object(requireObjectCoercible(argument));
};
// `Object.keys` method
// https://tc39.github.io/ecma262/#sec-object.keys
var objectKeys = Object.keys || function keys(O) {
return objectKeysInternal(O, enumBugKeys);
};
// `Object.defineProperties` method
// https://tc39.github.io/ecma262/#sec-object.defineproperties
var objectDefineProperties = descriptors ? Object.defineProperties : function defineProperties(O, Properties) {
anObject(O);
var keys = objectKeys(Properties);
var length = keys.length;
var index = 0;
var key;
while (length > index) objectDefineProperty.f(O, key = keys[index++], Properties[key]);
return O;
};
var html = getBuiltIn('document', 'documentElement');
var IE_PROTO = sharedKey('IE_PROTO');
var PROTOTYPE = 'prototype';
var Empty = function () { /* empty */ };
// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
// Thrash, waste and sodomy: IE GC bug
var iframe = documentCreateElement('iframe');
var length = enumBugKeys.length;
var lt = '<';
var script = 'script';
var gt = '>';
var js = 'java' + script + ':';
var iframeDocument;
iframe.style.display = 'none';
html.appendChild(iframe);
iframe.src = String(js);
iframeDocument = iframe.contentWindow.document;
iframeDocument.open();
iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);
iframeDocument.close();
createDict = iframeDocument.F;
while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];
return createDict();
};
// `Object.create` method
// https://tc39.github.io/ecma262/#sec-object.create
var objectCreate = Object.create || function create(O, Properties) {
var result;
if (O !== null) {
Empty[PROTOTYPE] = anObject(O);
result = new Empty();
Empty[PROTOTYPE] = null;
// add "__proto__" for Object.getPrototypeOf polyfill
result[IE_PROTO] = O;
} else result = createDict();
return Properties === undefined ? result : objectDefineProperties(result, Properties);
};
hiddenKeys[IE_PROTO] = true;
var nativeGetOwnPropertyNames = objectGetOwnPropertyNames.f;
var toString$1 = {}.toString;
var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
? Object.getOwnPropertyNames(window) : [];
var getWindowNames = function (it) {
try {
return nativeGetOwnPropertyNames(it);
} catch (error) {
return windowNames.slice();
}
};
// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
var f$5 = function getOwnPropertyNames(it) {
return windowNames && toString$1.call(it) == '[object Window]'
? getWindowNames(it)
: nativeGetOwnPropertyNames(toIndexedObject(it));
};
var objectGetOwnPropertyNamesExternal = {
f: f$5
};
var Symbol$1 = global_1.Symbol;
var store$1 = shared('wks');
var wellKnownSymbol = function (name) {
return store$1[name] || (store$1[name] = nativeSymbol && Symbol$1[name]
|| (nativeSymbol ? Symbol$1 : uid)('Symbol.' + name));
};
var f$6 = wellKnownSymbol;
var wrappedWellKnownSymbol = {
f: f$6
};
var defineProperty = objectDefineProperty.f;
var defineWellKnownSymbol = function (NAME) {
var Symbol = path.Symbol || (path.Symbol = {});
if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {
value: wrappedWellKnownSymbol.f(NAME)
});
};
var defineProperty$1 = objectDefineProperty.f;
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
var setToStringTag = function (it, TAG, STATIC) {
if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {
defineProperty$1(it, TO_STRING_TAG, { configurable: true, value: TAG });
}
};
var aFunction$1 = function (it) {
if (typeof it != 'function') {
throw TypeError(String(it) + ' is not a function');
} return it;
};
// optional / simple context binding
var bindContext = function (fn, that, length) {
aFunction$1(fn);
if (that === undefined) return fn;
switch (length) {
case 0: return function () {
return fn.call(that);
};
case 1: return function (a) {
return fn.call(that, a);
};
case 2: return function (a, b) {
return fn.call(that, a, b);
};
case 3: return function (a, b, c) {
return fn.call(that, a, b, c);
};
}
return function (/* ...args */) {
return fn.apply(that, arguments);
};
};
var SPECIES = wellKnownSymbol('species');
// `ArraySpeciesCreate` abstract operation
// https://tc39.github.io/ecma262/#sec-arrayspeciescreate
var arraySpeciesCreate = function (originalArray, length) {
var C;
if (isArray(originalArray)) {
C = originalArray.constructor;
// cross-realm fallback
if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
else if (isObject(C)) {
C = C[SPECIES];
if (C === null) C = undefined;
}
} return new (C === undefined ? Array : C)(length === 0 ? 0 : length);
};
var push = [].push;
// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation
var createMethod$1 = function (TYPE) {
var IS_MAP = TYPE == 1;
var IS_FILTER = TYPE == 2;
var IS_SOME = TYPE == 3;
var IS_EVERY = TYPE == 4;
var IS_FIND_INDEX = TYPE == 6;
var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
return function ($this, callbackfn, that, specificCreate) {
var O = toObject($this);
var self = indexedObject(O);
var boundFunction = bindContext(callbackfn, that, 3);
var length = toLength(self.length);
var index = 0;
var create = specificCreate || arraySpeciesCreate;
var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
var value, result;
for (;length > index; index++) if (NO_HOLES || index in self) {
value = self[index];
result = boundFunction(value, index, O);
if (TYPE) {
if (IS_MAP) target[index] = result; // map
else if (result) switch (TYPE) {
case 3: return true; // some
case 5: return value; // find
case 6: return index; // findIndex
case 2: push.call(target, value); // filter
} else if (IS_EVERY) return false; // every
}
}
return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
};
};
var arrayIteration = {
// `Array.prototype.forEach` method
// https://tc39.github.io/ecma262/#sec-array.prototype.foreach
forEach: createMethod$1(0),
// `Array.prototype.map` method
// https://tc39.github.io/ecma262/#sec-array.prototype.map
map: createMethod$1(1),
// `Array.prototype.filter` method
// https://tc39.github.io/ecma262/#sec-array.prototype.filter
filter: createMethod$1(2),
// `Array.prototype.some` method
// https://tc39.github.io/ecma262/#sec-array.prototype.some
some: createMethod$1(3),
// `Array.prototype.every` method
// https://tc39.github.io/ecma262/#sec-array.prototype.every
every: createMethod$1(4),
// `Array.prototype.find` method
// https://tc39.github.io/ecma262/#sec-array.prototype.find
find: createMethod$1(5),
// `Array.prototype.findIndex` method
// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
findIndex: createMethod$1(6)
};
var $forEach = arrayIteration.forEach;
var HIDDEN = sharedKey('hidden');
var SYMBOL = 'Symbol';
var PROTOTYPE$1 = 'prototype';
var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
var setInternalState = internalState.set;
var getInternalState = internalState.getterFor(SYMBOL);
var ObjectPrototype = Object[PROTOTYPE$1];
var $Symbol = global_1.Symbol;
var JSON$1 = global_1.JSON;
var nativeJSONStringify = JSON$1 && JSON$1.stringify;
var nativeGetOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;
var nativeDefineProperty$1 = objectDefineProperty.f;
var nativeGetOwnPropertyNames$1 = objectGetOwnPropertyNamesExternal.f;
var nativePropertyIsEnumerable$1 = objectPropertyIsEnumerable.f;
var AllSymbols = shared('symbols');
var ObjectPrototypeSymbols = shared('op-symbols');
var StringToSymbolRegistry = shared('string-to-symbol-registry');
var SymbolToStringRegistry = shared('symbol-to-string-registry');
var WellKnownSymbolsStore = shared('wks');
var QObject = global_1.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
var USE_SETTER = !QObject || !QObject[PROTOTYPE$1] || !QObject[PROTOTYPE$1].findChild;
// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDescriptor = descriptors && fails(function () {
return objectCreate(nativeDefineProperty$1({}, 'a', {
get: function () { return nativeDefineProperty$1(this, 'a', { value: 7 }).a; }
})).a != 7;
}) ? function (O, P, Attributes) {
var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor$1(ObjectPrototype, P);
if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];
nativeDefineProperty$1(O, P, Attributes);
if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {
nativeDefineProperty$1(ObjectPrototype, P, ObjectPrototypeDescriptor);
}
} : nativeDefineProperty$1;
var wrap = function (tag, description) {
var symbol = AllSymbols[tag] = objectCreate($Symbol[PROTOTYPE$1]);
setInternalState(symbol, {
type: SYMBOL,
tag: tag,
description: description
});
if (!descriptors) symbol.description = description;
return symbol;
};
var isSymbol = nativeSymbol && typeof $Symbol.iterator == 'symbol' ? function (it) {
return typeof it == 'symbol';
} : function (it) {
return Object(it) instanceof $Symbol;
};
var $defineProperty = function defineProperty(O, P, Attributes) {
if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);
anObject(O);
var key = toPrimitive(P, true);
anObject(Attributes);
if (has(AllSymbols, key)) {
if (!Attributes.enumerable) {
if (!has(O, HIDDEN)) nativeDefineProperty$1(O, HIDDEN, createPropertyDescriptor(1, {}));
O[HIDDEN][key] = true;
} else {
if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;
Attributes = objectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });
} return setSymbolDescriptor(O, key, Attributes);
} return nativeDefineProperty$1(O, key, Attributes);
};
var $defineProperties = function defineProperties(O, Properties) {
anObject(O);
var properties = toIndexedObject(Properties);
var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));
$forEach(keys, function (key) {
if (!descriptors || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);
});
return O;
};
var $create = function create(O, Properties) {
return Properties === undefined ? objectCreate(O) : $defineProperties(objectCreate(O), Properties);
};
var $propertyIsEnumerable = function propertyIsEnumerable(V) {
var P = toPrimitive(V, true);
var enumerable = nativePropertyIsEnumerable$1.call(this, P);
if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;
return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {
var it = toIndexedObject(O);
var key = toPrimitive(P, true);
if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;
var descriptor = nativeGetOwnPropertyDescriptor$1(it, key);
if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {
descriptor.enumerable = true;
}
return descriptor;
};
var $getOwnPropertyNames = function getOwnPropertyNames(O) {
var names = nativeGetOwnPropertyNames$1(toIndexedObject(O));
var result = [];
$forEach(names, function (key) {
if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);
});
return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(O) {
var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;
var names = nativeGetOwnPropertyNames$1(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));
var result = [];
$forEach(names, function (key) {
if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {
result.push(AllSymbols[key]);
}
});
return result;
};
// `Symbol` constructor
// https://tc39.github.io/ecma262/#sec-symbol-constructor
if (!nativeSymbol) {
$Symbol = function Symbol() {
if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');
var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);
var tag = uid(description);
var setter = function (value) {
if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);
if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));
};
if (descriptors && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });
return wrap(tag, description);
};
redefine($Symbol[PROTOTYPE$1], 'toString', function toString() {
return getInternalState(this).tag;
});
objectPropertyIsEnumerable.f = $propertyIsEnumerable;
objectDefineProperty.f = $defineProperty;
objectGetOwnPropertyDescriptor.f = $getOwnPropertyDescriptor;
objectGetOwnPropertyNames.f = objectGetOwnPropertyNamesExternal.f = $getOwnPropertyNames;
objectGetOwnPropertySymbols.f = $getOwnPropertySymbols;
if (descriptors) {
// https://github.com/tc39/proposal-Symbol-description
nativeDefineProperty$1($Symbol[PROTOTYPE$1], 'description', {
configurable: true,
get: function description() {
return getInternalState(this).description;
}
});
{
redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });
}
}
wrappedWellKnownSymbol.f = function (name) {
return wrap(wellKnownSymbol(name), name);
};
}
_export({ global: true, wrap: true, forced: !nativeSymbol, sham: !nativeSymbol }, {
Symbol: $Symbol
});
$forEach(objectKeys(WellKnownSymbolsStore), function (name) {
defineWellKnownSymbol(name);
});
_export({ target: SYMBOL, stat: true, forced: !nativeSymbol }, {
// `Symbol.for` method
// https://tc39.github.io/ecma262/#sec-symbol.for
'for': function (key) {
var string = String(key);
if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];
var symbol = $Symbol(string);
StringToSymbolRegistry[string] = symbol;
SymbolToStringRegistry[symbol] = string;
return symbol;
},
// `Symbol.keyFor` method
// https://tc39.github.io/ecma262/#sec-symbol.keyfor
keyFor: function keyFor(sym) {
if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');
if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];
},
useSetter: function () { USE_SETTER = true; },
useSimple: function () { USE_SETTER = false; }
});
_export({ target: 'Object', stat: true, forced: !nativeSymbol, sham: !descriptors }, {
// `Object.create` method
// https://tc39.github.io/ecma262/#sec-object.create
create: $create,
// `Object.defineProperty` method
// https://tc39.github.io/ecma262/#sec-object.defineproperty
defineProperty: $defineProperty,
// `Object.defineProperties` method
// https://tc39.github.io/ecma262/#sec-object.defineproperties
defineProperties: $defineProperties,
// `Object.getOwnPropertyDescriptor` method
// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors
getOwnPropertyDescriptor: $getOwnPropertyDescriptor
});
_export({ target: 'Object', stat: true, forced: !nativeSymbol }, {
// `Object.getOwnPropertyNames` method
// https://tc39.github.io/ecma262/#sec-object.getownpropertynames
getOwnPropertyNames: $getOwnPropertyNames,
// `Object.getOwnPropertySymbols` method
// https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols
getOwnPropertySymbols: $getOwnPropertySymbols
});
// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
_export({ target: 'Object', stat: true, forced: fails(function () { objectGetOwnPropertySymbols.f(1); }) }, {
getOwnPropertySymbols: function getOwnPropertySymbols(it) {
return objectGetOwnPropertySymbols.f(toObject(it));
}
});
// `JSON.stringify` method behavior with symbols
// https://tc39.github.io/ecma262/#sec-json.stringify
JSON$1 && _export({ target: 'JSON', stat: true, forced: !nativeSymbol || fails(function () {
var symbol = $Symbol();
// MS Edge converts symbol values to JSON as {}
return nativeJSONStringify([symbol]) != '[null]'
// WebKit converts symbol values to JSON as null
|| nativeJSONStringify({ a: symbol }) != '{}'
// V8 throws on boxed symbols
|| nativeJSONStringify(Object(symbol)) != '{}';
}) }, {
stringify: function stringify(it) {
var args = [it];
var index = 1;
var replacer, $replacer;
while (arguments.length > index) args.push(arguments[index++]);
$replacer = replacer = args[1];
if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
if (!isArray(replacer)) replacer = function (key, value) {
if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
if (!isSymbol(value)) return value;
};
args[1] = replacer;
return nativeJSONStringify.apply(JSON$1, args);
}
});
// `Symbol.prototype[@@toPrimitive]` method
// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive
if (!$Symbol[PROTOTYPE$1][TO_PRIMITIVE]) hide($Symbol[PROTOTYPE$1], TO_PRIMITIVE, $Symbol[PROTOTYPE$1].valueOf);
// `Symbol.prototype[@@toStringTag]` property
// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag
setToStringTag($Symbol, SYMBOL);
hiddenKeys[HIDDEN] = true;
var defineProperty$2 = objectDefineProperty.f;
var NativeSymbol = global_1.Symbol;
if (descriptors && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||
// Safari 12 bug
NativeSymbol().description !== undefined
)) {
var EmptyStringDescriptionStore = {};
// wrap Symbol constructor for correct work with undefined description
var SymbolWrapper = function Symbol() {
var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);
var result = this instanceof SymbolWrapper
? new NativeSymbol(description)
// in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'
: description === undefined ? NativeSymbol() : NativeSymbol(description);
if (description === '') EmptyStringDescriptionStore[result] = true;
return result;
};
copyConstructorProperties(SymbolWrapper, NativeSymbol);
var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;
symbolPrototype.constructor = SymbolWrapper;
var symbolToString = symbolPrototype.toString;
var native = String(NativeSymbol('test')) == 'Symbol(test)';
var regexp = /^Symbol\((.*)\)[^)]+$/;
defineProperty$2(symbolPrototype, 'description', {
configurable: true,
get: function description() {
var symbol = isObject(this) ? this.valueOf() : this;
var string = symbolToString.call(symbol);
if (has(EmptyStringDescriptionStore, symbol)) return '';
var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');
return desc === '' ? undefined : desc;
}
});
_export({ global: true, forced: true }, {
Symbol: SymbolWrapper
});
}
// `Symbol.iterator` well-known symbol
// https://tc39.github.io/ecma262/#sec-symbol.iterator
defineWellKnownSymbol('iterator');
var createProperty = function (object, key, value) {
var propertyKey = toPrimitive(key);
if (propertyKey in object) objectDefineProperty.f(object, propertyKey, createPropertyDescriptor(0, value));
else object[propertyKey] = value;
};
var SPECIES$1 = wellKnownSymbol('species');
var arrayMethodHasSpeciesSupport = function (METHOD_NAME) {
return !fails(function () {
var array = [];
var constructor = array.constructor = {};
constructor[SPECIES$1] = function () {
return { foo: 1 };
};
return array[METHOD_NAME](Boolean).foo !== 1;
});
};
var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');
var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';
var IS_CONCAT_SPREADABLE_SUPPORT = !fails(function () {
var array = [];
array[IS_CONCAT_SPREADABLE] = false;
return array.concat()[0] !== array;
});
var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');
var isConcatSpreadable = function (O) {
if (!isObject(O)) return false;
var spreadable = O[IS_CONCAT_SPREADABLE];
return spreadable !== undefined ? !!spreadable : isArray(O);
};
var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;
// `Array.prototype.concat` method
// https://tc39.github.io/ecma262/#sec-array.prototype.concat
// with adding support of @@isConcatSpreadable and @@species
_export({ target: 'Array', proto: true, forced: FORCED }, {
concat: function concat(arg) { // eslint-disable-line no-unused-vars
var O = toObject(this);
var A = arraySpeciesCreate(O, 0);
var n = 0;
var i, k, length, len, E;
for (i = -1, length = arguments.length; i < length; i++) {
E = i === -1 ? O : arguments[i];
if (isConcatSpreadable(E)) {
len = toLength(E.length);
if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);
} else {
if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
createProperty(A, n++, E);
}
}
A.length = n;
return A;
}
});
var $filter = arrayIteration.filter;
// `Array.prototype.filter` method
// https://tc39.github.io/ecma262/#sec-array.prototype.filter
// with adding support of @@species
_export({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, {
filter: function filter(callbackfn /* , thisArg */) {
return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
}
});
var UNSCOPABLES = wellKnownSymbol('unscopables');
var ArrayPrototype = Array.prototype;
// Array.prototype[@@unscopables]
// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
if (ArrayPrototype[UNSCOPABLES] == undefined) {
hide(ArrayPrototype, UNSCOPABLES, objectCreate(null));
}
// add a key to Array.prototype[@@unscopables]
var addToUnscopables = function (key) {
ArrayPrototype[UNSCOPABLES][key] = true;
};
var $find = arrayIteration.find;
var FIND = 'find';
var SKIPS_HOLES = true;
// Shouldn't skip holes
if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });
// `Array.prototype.find` method
// https://tc39.github.io/ecma262/#sec-array.prototype.find
_export({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {
find: function find(callbackfn /* , that = undefined */) {
return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
}
});
// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
addToUnscopables(FIND);
var $findIndex = arrayIteration.findIndex;
var FIND_INDEX = 'findIndex';
var SKIPS_HOLES$1 = true;
// Shouldn't skip holes
if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES$1 = false; });
// `Array.prototype.findIndex` method
// https://tc39.github.io/ecma262/#sec-array.prototype.findindex
_export({ target: 'Array', proto: true, forced: SKIPS_HOLES$1 }, {
findIndex: function findIndex(callbackfn /* , that = undefined */) {
return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
}
});
// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
addToUnscopables(FIND_INDEX);
var $includes = arrayIncludes.includes;
// `Array.prototype.includes` method
// https://tc39.github.io/ecma262/#sec-array.prototype.includes
_export({ target: 'Array', proto: true }, {
includes: function includes(el /* , fromIndex = 0 */) {
return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
}
});
// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
addToUnscopables('includes');
var sloppyArrayMethod = function (METHOD_NAME, argument) {
var method = [][METHOD_NAME];
return !method || !fails(function () {
// eslint-disable-next-line no-useless-call,no-throw-literal
method.call(null, argument || function () { throw 1; }, 1);
});
};
var $indexOf = arrayIncludes.indexOf;
var nativeIndexOf = [].indexOf;
var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;
var SLOPPY_METHOD = sloppyArrayMethod('indexOf');
// `Array.prototype.indexOf` method
// https://tc39.github.io/ecma262/#sec-array.prototype.indexof
_export({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, {
indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {
return NEGATIVE_ZERO
// convert -0 to +0
? nativeIndexOf.apply(this, arguments) || 0
: $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);
}
});
var correctPrototypeGetter = !fails(function () {
function F() { /* empty */ }
F.prototype.constructor = null;
return Object.getPrototypeOf(new F()) !== F.prototype;
});
var IE_PROTO$1 = sharedKey('IE_PROTO');
var ObjectPrototype$1 = Object.prototype;
// `Object.getPrototypeOf` method
// https://tc39.github.io/ecma262/#sec-object.getprototypeof
var objectGetPrototypeOf = correctPrototypeGetter ? Object.getPrototypeOf : function (O) {
O = toObject(O);
if (has(O, IE_PROTO$1)) return O[IE_PROTO$1];
if (typeof O.constructor == 'function' && O instanceof O.constructor) {
return O.constructor.prototype;
} return O instanceof Object ? ObjectPrototype$1 : null;
};
var ITERATOR = wellKnownSymbol('iterator');
var BUGGY_SAFARI_ITERATORS = false;
var returnThis = function () { return this; };
// `%IteratorPrototype%` object
// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object
var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
if ([].keys) {
arrayIterator = [].keys();
// Safari 8 has buggy iterators w/o `next`
if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
else {
PrototypeOfArrayIteratorPrototype = objectGetPrototypeOf(objectGetPrototypeOf(arrayIterator));
if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
}
}
if (IteratorPrototype == undefined) IteratorPrototype = {};
// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
if ( !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);
var iteratorsCore = {
IteratorPrototype: IteratorPrototype,
BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
};
var IteratorPrototype$1 = iteratorsCore.IteratorPrototype;
var createIteratorConstructor = function (IteratorConstructor, NAME, next) {
var TO_STRING_TAG = NAME + ' Iterator';
IteratorConstructor.prototype = objectCreate(IteratorPrototype$1, { next: createPropertyDescriptor(1, next) });
setToStringTag(IteratorConstructor, TO_STRING_TAG, false);
return IteratorConstructor;
};
var aPossiblePrototype = function (it) {
if (!isObject(it) && it !== null) {
throw TypeError("Can't set " + String(it) + ' as a prototype');
} return it;
};
// `Object.setPrototypeOf` method
// https://tc39.github.io/ecma262/#sec-object.setprototypeof
// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () {
var CORRECT_SETTER = false;
var test = {};
var setter;
try {
setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;
setter.call(test, []);
CORRECT_SETTER = test instanceof Array;
} catch (error) { /* empty */ }
return function setPrototypeOf(O, proto) {
anObject(O);
aPossiblePrototype(proto);
if (CORRECT_SETTER) setter.call(O, proto);
else O.__proto__ = proto;
return O;
};
}() : undefined);
var IteratorPrototype$2 = iteratorsCore.IteratorPrototype;
var BUGGY_SAFARI_ITERATORS$1 = iteratorsCore.BUGGY_SAFARI_ITERATORS;
var ITERATOR$1 = wellKnownSymbol('iterator');
var KEYS = 'keys';
var VALUES = 'values';
var ENTRIES = 'entries';
var returnThis$1 = function () { return this; };
var defineIterator = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
createIteratorConstructor(IteratorConstructor, NAME, next);
var getIterationMethod = function (KIND) {
if (KIND === DEFAULT && defaultIterator) return defaultIterator;
if (!BUGGY_SAFARI_ITERATORS$1 && KIND in IterablePrototype) return IterablePrototype[KIND];
switch (KIND) {
case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };
case VALUES: return function values() { return new IteratorConstructor(this, KIND); };
case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };
} return function () { return new IteratorConstructor(this); };
};
var TO_STRING_TAG = NAME + ' Iterator';
var INCORRECT_VALUES_NAME = false;
var IterablePrototype = Iterable.prototype;
var nativeIterator = IterablePrototype[ITERATOR$1]
|| IterablePrototype['@@iterator']
|| DEFAULT && IterablePrototype[DEFAULT];
var defaultIterator = !BUGGY_SAFARI_ITERATORS$1 && nativeIterator || getIterationMethod(DEFAULT);
var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
var CurrentIteratorPrototype, methods, KEY;
// fix native
if (anyNativeIterator) {
CurrentIteratorPrototype = objectGetPrototypeOf(anyNativeIterator.call(new Iterable()));
if (IteratorPrototype$2 !== Object.prototype && CurrentIteratorPrototype.next) {
if ( objectGetPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype$2) {
if (objectSetPrototypeOf) {
objectSetPrototypeOf(CurrentIteratorPrototype, IteratorPrototype$2);
} else if (typeof CurrentIteratorPrototype[ITERATOR$1] != 'function') {
hide(CurrentIteratorPrototype, ITERATOR$1, returnThis$1);
}
}
// Set @@toStringTag to native iterators
setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true);
}
}
// fix Array#{values, @@iterator}.name in V8 / FF
if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
INCORRECT_VALUES_NAME = true;
defaultIterator = function values() { return nativeIterator.call(this); };
}
// define iterator
if ( IterablePrototype[ITERATOR$1] !== defaultIterator) {
hide(IterablePrototype, ITERATOR$1, defaultIterator);
}
// export additional methods
if (DEFAULT) {
methods = {
values: getIterationMethod(VALUES),
keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
entries: getIterationMethod(ENTRIES)
};
if (FORCED) for (KEY in methods) {
if (BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
redefine(IterablePrototype, KEY, methods[KEY]);
}
} else _export({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS$1 || INCORRECT_VALUES_NAME }, methods);
}
return methods;
};
var ARRAY_ITERATOR = 'Array Iterator';
var setInternalState$1 = internalState.set;
var getInternalState$1 = internalState.getterFor(ARRAY_ITERATOR);
// `Array.prototype.entries` method
// https://tc39.github.io/ecma262/#sec-array.prototype.entries
// `Array.prototype.keys` method
// https://tc39.github.io/ecma262/#sec-array.prototype.keys
// `Array.prototype.values` method
// https://tc39.github.io/ecma262/#sec-array.prototype.values
// `Array.prototype[@@iterator]` method
// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator
// `CreateArrayIterator` internal method
// https://tc39.github.io/ecma262/#sec-createarrayiterator
var es_array_iterator = defineIterator(Array, 'Array', function (iterated, kind) {
setInternalState$1(this, {
type: ARRAY_ITERATOR,
target: toIndexedObject(iterated), // target
index: 0, // next index
kind: kind // kind
});
// `%ArrayIteratorPrototype%.next` method
// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next
}, function () {
var state = getInternalState$1(this);
var target = state.target;
var kind = state.kind;
var index = state.index++;
if (!target || index >= target.length) {
state.target = undefined;
return { value: undefined, done: true };
}
if (kind == 'keys') return { value: index, done: false };
if (kind == 'values') return { value: target[index], done: false };
return { value: [index, target[index]], done: false };
}, 'values');
// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');
var nativeJoin = [].join;
var ES3_STRINGS = indexedObject != Object;
var SLOPPY_METHOD$1 = sloppyArrayMethod('join', ',');
// `Array.prototype.join` method
// https://tc39.github.io/ecma262/#sec-array.prototype.join
_export({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD$1 }, {
join: function join(separator) {
return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);
}
});
var SPECIES$2 = wellKnownSymbol('species');
var nativeSlice = [].slice;
var max$1 = Math.max;
// `Array.prototype.slice` method
// https://tc39.github.io/ecma262/#sec-array.prototype.slice
// fallback for not array-like ES3 strings and DOM objects
_export({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, {
slice: function slice(start, end) {
var O = toIndexedObject(this);
var length = toLength(O.length);
var k = toAbsoluteIndex(start, length);
var fin = toAbsoluteIndex(end === undefined ? length : end, length);
// inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible
var Constructor, result, n;
if (isArray(O)) {
Constructor = O.constructor;
// cross-realm fallback
if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {
Constructor = undefined;
} else if (isObject(Constructor)) {
Constructor = Constructor[SPECIES$2];
if (Constructor === null) Constructor = undefined;
}
if (Constructor === Array || Constructor === undefined) {
return nativeSlice.call(O, k, fin);
}
}
result = new (Constructor === undefined ? Array : Constructor)(max$1(fin - k, 0));
for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);
result.length = n;
return result;
}
});
var nativeSort = [].sort;
var test = [1, 2, 3];
// IE8-
var FAILS_ON_UNDEFINED = fails(function () {
test.sort(undefined);
});
// V8 bug
var FAILS_ON_NULL = fails(function () {
test.sort(null);
});
// Old WebKit
var SLOPPY_METHOD$2 = sloppyArrayMethod('sort');
var FORCED$1 = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD$2;
// `Array.prototype.sort` method
// https://tc39.github.io/ecma262/#sec-array.prototype.sort
_export({ target: 'Array', proto: true, forced: FORCED$1 }, {
sort: function sort(comparefn) {
return comparefn === undefined
? nativeSort.call(toObject(this))
: nativeSort.call(toObject(this), aFunction$1(comparefn));
}
});
var max$2 = Math.max;
var min$2 = Math.min;
var MAX_SAFE_INTEGER$1 = 0x1FFFFFFFFFFFFF;
var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';
// `Array.prototype.splice` method
// https://tc39.github.io/ecma262/#sec-array.prototype.splice
// with adding support of @@species
_export({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, {
splice: function splice(start, deleteCount /* , ...items */) {
var O = toObject(this);
var len = toLength(O.length);
var actualStart = toAbsoluteIndex(start, len);
var argumentsLength = arguments.length;
var insertCount, actualDeleteCount, A, k, from, to;
if (argumentsLength === 0) {
insertCount = actualDeleteCount = 0;
} else if (argumentsLength === 1) {
insertCount = 0;
actualDeleteCount = len - actualStart;
} else {
insertCount = argumentsLength - 2;
actualDeleteCount = min$2(max$2(toInteger(deleteCount), 0), len - actualStart);
}
if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER$1) {
throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);
}
A = arraySpeciesCreate(O, actualDeleteCount);
for (k = 0; k < actualDeleteCount; k++) {
from = actualStart + k;
if (from in O) createProperty(A, k, O[from]);
}
A.length = actualDeleteCount;
if (insertCount < actualDeleteCount) {
for (k = actualStart; k < len - actualDeleteCount; k++) {
from = k + actualDeleteCount;
to = k + insertCount;
if (from in O) O[to] = O[from];
else delete O[to];
}
for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];
} else if (insertCount > actualDeleteCount) {
for (k = len - actualDeleteCount; k > actualStart; k--) {
from = k + actualDeleteCount - 1;
to = k + insertCount - 1;
if (from in O) O[to] = O[from];
else delete O[to];
}
}
for (k = 0; k < insertCount; k++) {
O[k + actualStart] = arguments[k + 2];
}
O.length = len - actualDeleteCount + insertCount;
return A;
}
});
// makes subclassing work correct for wrapped built-ins
var inheritIfRequired = function ($this, dummy, Wrapper) {
var NewTarget, NewTargetPrototype;
if (
// it can work only with native `setPrototypeOf`
objectSetPrototypeOf &&
// we haven't completely correct pre-ES6 way for getting `new.target`, so use this
typeof (NewTarget = dummy.constructor) == 'function' &&
NewTarget !== Wrapper &&
isObject(NewTargetPrototype = NewTarget.prototype) &&
NewTargetPrototype !== Wrapper.prototype
) objectSetPrototypeOf($this, NewTargetPrototype);
return $this;
};
// a string of all valid unicode whitespaces
// eslint-disable-next-line max-len
var whitespaces = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
var whitespace = '[' + whitespaces + ']';
var ltrim = RegExp('^' + whitespace + whitespace + '*');
var rtrim = RegExp(whitespace + whitespace + '*$');
// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation
var createMethod$2 = function (TYPE) {
return function ($this) {
var string = String(requireObjectCoercible($this));
if (TYPE & 1) string = string.replace(ltrim, '');
if (TYPE & 2) string = string.replace(rtrim, '');
return string;
};
};
var stringTrim = {
// `String.prototype.{ trimLeft, trimStart }` methods
// https://tc39.github.io/ecma262/#sec-string.prototype.trimstart
start: createMethod$2(1),
// `String.prototype.{ trimRight, trimEnd }` methods
// https://tc39.github.io/ecma262/#sec-string.prototype.trimend
end: createMethod$2(2),
// `String.prototype.trim` method
// https://tc39.github.io/ecma262/#sec-string.prototype.trim
trim: createMethod$2(3)
};
var getOwnPropertyNames = objectGetOwnPropertyNames.f;
var getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f;
var defineProperty$3 = objectDefineProperty.f;
var trim = stringTrim.trim;
var NUMBER = 'Number';
var NativeNumber = global_1[NUMBER];
var NumberPrototype = NativeNumber.prototype;
// Opera ~12 has broken Object#toString
var BROKEN_CLASSOF = classofRaw(objectCreate(NumberPrototype)) == NUMBER;
// `ToNumber` abstract operation
// https://tc39.github.io/ecma262/#sec-tonumber
var toNumber = function (argument) {
var it = toPrimitive(argument, false);
var first, third, radix, maxCode, digits, length, index, code;
if (typeof it == 'string' && it.length > 2) {
it = trim(it);
first = it.charCodeAt(0);
if (first === 43 || first === 45) {
third = it.charCodeAt(2);
if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
} else if (first === 48) {
switch (it.charCodeAt(1)) {
case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i
case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i
default: return +it;
}
digits = it.slice(2);
length = digits.length;
for (index = 0; index < length; index++) {
code = digits.charCodeAt(index);
// parseInt parses a string to a first unavailable symbol
// but ToNumber should return NaN if a string contains unavailable symbols
if (code < 48 || code > maxCode) return NaN;
} return parseInt(digits, radix);
}
} return +it;
};
// `Number` constructor
// https://tc39.github.io/ecma262/#sec-number-constructor
if (isForced_1(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {
var NumberWrapper = function Number(value) {
var it = arguments.length < 1 ? 0 : value;
var dummy = this;
return dummy instanceof NumberWrapper
// check on 1..constructor(foo) case
&& (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classofRaw(dummy) != NUMBER)
? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);
};
for (var keys$1 = descriptors ? getOwnPropertyNames(NativeNumber) : (
// ES3:
'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
// ES2015 (in case, if modules with ES2015 Number statics required before):
'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
).split(','), j = 0, key; keys$1.length > j; j++) {
if (has(NativeNumber, key = keys$1[j]) && !has(NumberWrapper, key)) {
defineProperty$3(NumberWrapper, key, getOwnPropertyDescriptor$2(NativeNumber, key));
}
}
NumberWrapper.prototype = NumberPrototype;
NumberPrototype.constructor = NumberWrapper;
redefine(global_1, NUMBER, NumberWrapper);
}
var nativeAssign = Object.assign;
// `Object.assign` method
// https://tc39.github.io/ecma262/#sec-object.assign
// should work with symbols and should have deterministic property order (V8 bug)
var objectAssign = !nativeAssign || fails(function () {
var A = {};
var B = {};
// eslint-disable-next-line no-undef
var symbol = Symbol();
var alphabet = 'abcdefghijklmnopqrst';
A[symbol] = 7;
alphabet.split('').forEach(function (chr) { B[chr] = chr; });
return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;
}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
var T = toObject(target);
var argumentsLength = arguments.length;
var index = 1;
var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;
var propertyIsEnumerable = objectPropertyIsEnumerable.f;
while (argumentsLength > index) {
var S = indexedObject(arguments[index++]);
var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);
var length = keys.length;
var j = 0;
var key;
while (length > j) {
key = keys[j++];
if (!descriptors || propertyIsEnumerable.call(S, key)) T[key] = S[key];
}
} return T;
} : nativeAssign;
// `Object.assign` method
// https://tc39.github.io/ecma262/#sec-object.assign
_export({ target: 'Object', stat: true, forced: Object.assign !== objectAssign }, {
assign: objectAssign
});
var propertyIsEnumerable = objectPropertyIsEnumerable.f;
// `Object.{ entries, values }` methods implementation
var createMethod$3 = function (TO_ENTRIES) {
return function (it) {
var O = toIndexedObject(it);
var keys = objectKeys(O);
var length = keys.length;
var i = 0;
var result = [];
var key;
while (length > i) {
key = keys[i++];
if (!descriptors || propertyIsEnumerable.call(O, key)) {
result.push(TO_ENTRIES ? [key, O[key]] : O[key]);
}
}
return result;
};
};
var objectToArray = {
// `Object.entries` method
// https://tc39.github.io/ecma262/#sec-object.entries
entries: createMethod$3(true),
// `Object.values` method
// https://tc39.github.io/ecma262/#sec-object.values
values: createMethod$3(false)
};
var $entries = objectToArray.entries;
// `Object.entries` method
// https://tc39.github.io/ecma262/#sec-object.entries
_export({ target: 'Object', stat: true }, {
entries: function entries(O) {
return $entries(O);
}
});
var TO_STRING_TAG$1 = wellKnownSymbol('toStringTag');
// ES3 wrong here
var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
try {
return it[key];
} catch (error) { /* empty */ }
};
// getting tag from ES6+ `Object.prototype.toString`
var classof = function (it) {
var O, tag, result;
return it === undefined ? 'Undefined' : it === null ? 'Null'
// @@toStringTag case
: typeof (tag = tryGet(O = Object(it), TO_STRING_TAG$1)) == 'string' ? tag
// builtinTag case
: CORRECT_ARGUMENTS ? classofRaw(O)
// ES3 arguments fallback
: (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;
};
var TO_STRING_TAG$2 = wellKnownSymbol('toStringTag');
var test$1 = {};
test$1[TO_STRING_TAG$2] = 'z';
// `Object.prototype.toString` method implementation
// https://tc39.github.io/ecma262/#sec-object.prototype.tostring
var objectToString = String(test$1) !== '[object z]' ? function toString() {
return '[object ' + classof(this) + ']';
} : test$1.toString;
var ObjectPrototype$2 = Object.prototype;
// `Object.prototype.toString` method
// https://tc39.github.io/ecma262/#sec-object.prototype.tostring
if (objectToString !== ObjectPrototype$2.toString) {
redefine(ObjectPrototype$2, 'toString', objectToString, { unsafe: true });
}
var trim$1 = stringTrim.trim;
var nativeParseFloat = global_1.parseFloat;
var FORCED$2 = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity;
// `parseFloat` method
// https://tc39.github.io/ecma262/#sec-parsefloat-string
var _parseFloat = FORCED$2 ? function parseFloat(string) {
var trimmedString = trim$1(String(string));
var result = nativeParseFloat(trimmedString);
return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;
} : nativeParseFloat;
// `parseFloat` method
// https://tc39.github.io/ecma262/#sec-parsefloat-string
_export({ global: true, forced: parseFloat != _parseFloat }, {
parseFloat: _parseFloat
});
var trim$2 = stringTrim.trim;
var nativeParseInt = global_1.parseInt;
var hex = /^[+-]?0[Xx]/;
var FORCED$3 = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22;
// `parseInt` method
// https://tc39.github.io/ecma262/#sec-parseint-string-radix
var _parseInt = FORCED$3 ? function parseInt(string, radix) {
var S = trim$2(String(string));
return nativeParseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));
} : nativeParseInt;
// `parseInt` method
// https://tc39.github.io/ecma262/#sec-parseint-string-radix
_export({ global: true, forced: parseInt != _parseInt }, {
parseInt: _parseInt
});
// `RegExp.prototype.flags` getter implementation
// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags
var regexpFlags = function () {
var that = anObject(this);
var result = '';
if (that.global) result += 'g';
if (that.ignoreCase) result += 'i';
if (that.multiline) result += 'm';
if (that.dotAll) result += 's';
if (that.unicode) result += 'u';
if (that.sticky) result += 'y';
return result;
};
var TO_STRING = 'toString';
var RegExpPrototype = RegExp.prototype;
var nativeToString = RegExpPrototype[TO_STRING];
var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
// FF44- RegExp#toString has a wrong name
var INCORRECT_NAME = nativeToString.name != TO_STRING;
// `RegExp.prototype.toString` method
// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring
if (NOT_GENERIC || INCORRECT_NAME) {
redefine(RegExp.prototype, TO_STRING, function toString() {
var R = anObject(this);
var p = String(R.source);
var rf = R.flags;
var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? regexpFlags.call(R) : rf);
return '/' + p + '/' + f;
}, { unsafe: true });
}
var MATCH = wellKnownSymbol('match');
// `IsRegExp` abstract operation
// https://tc39.github.io/ecma262/#sec-isregexp
var isRegexp = function (it) {
var isRegExp;
return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classofRaw(it) == 'RegExp');
};
var notARegexp = function (it) {
if (isRegexp(it)) {
throw TypeError("The method doesn't accept regular expressions");
} return it;
};
var MATCH$1 = wellKnownSymbol('match');
var correctIsRegexpLogic = function (METHOD_NAME) {
var regexp = /./;
try {
'/./'[METHOD_NAME](regexp);
} catch (e) {
try {
regexp[MATCH$1] = false;
return '/./'[METHOD_NAME](regexp);
} catch (f) { /* empty */ }
} return false;
};
// `String.prototype.includes` method
// https://tc39.github.io/ecma262/#sec-string.prototype.includes
_export({ target: 'String', proto: true, forced: !correctIsRegexpLogic('includes') }, {
includes: function includes(searchString /* , position = 0 */) {
return !!~String(requireObjectCoercible(this))
.indexOf(notARegexp(searchString), arguments.length > 1 ? arguments[1] : undefined);
}
});
// `String.prototype.{ codePointAt, at }` methods implementation
var createMethod$4 = function (CONVERT_TO_STRING) {
return function ($this, pos) {
var S = String(requireObjectCoercible($this));
var position = toInteger(pos);
var size = S.length;
var first, second;
if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
first = S.charCodeAt(position);
return first < 0xD800 || first > 0xDBFF || position + 1 === size
|| (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
? CONVERT_TO_STRING ? S.charAt(position) : first
: CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
};
};
var stringMultibyte = {
// `String.prototype.codePointAt` method
// https://tc39.github.io/ecma262/#sec-string.prototype.codepointat
codeAt: createMethod$4(false),
// `String.prototype.at` method
// https://github.com/mathiasbynens/String.prototype.at
charAt: createMethod$4(true)
};
var charAt = stringMultibyte.charAt;
var STRING_ITERATOR = 'String Iterator';
var setInternalState$2 = internalState.set;
var getInternalState$2 = internalState.getterFor(STRING_ITERATOR);
// `String.prototype[@@iterator]` method
// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator
defineIterator(String, 'String', function (iterated) {
setInternalState$2(this, {
type: STRING_ITERATOR,
string: String(iterated),
index: 0
});
// `%StringIteratorPrototype%.next` method
// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next
}, function next() {
var state = getInternalState$2(this);
var string = state.string;
var index = state.index;
var point;
if (index >= string.length) return { value: undefined, done: true };
point = charAt(string, index);
state.index += point.length;
return { value: point, done: false };
});
var nativeExec = RegExp.prototype.exec;
// This always refers to the native implementation, because the
// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,
// which loads this file before patching the method.
var nativeReplace = String.prototype.replace;
var patchedExec = nativeExec;
var UPDATES_LAST_INDEX_WRONG = (function () {
var re1 = /a/;
var re2 = /b*/g;
nativeExec.call(re1, 'a');
nativeExec.call(re2, 'a');
return re1.lastIndex !== 0 || re2.lastIndex !== 0;
})();
// nonparticipating capturing group, copied from es5-shim's String#split patch.
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;
if (PATCH) {
patchedExec = function exec(str) {
var re = this;
var lastIndex, reCopy, match, i;
if (NPCG_INCLUDED) {
reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re));
}
if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
match = nativeExec.call(re, str);
if (UPDATES_LAST_INDEX_WRONG && match) {
re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
}
if (NPCG_INCLUDED && match && match.length > 1) {
// Fix browsers whose `exec` methods don't consistently return `undefined`
// for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
nativeReplace.call(match[0], reCopy, function () {
for (i = 1; i < arguments.length - 2; i++) {
if (arguments[i] === undefined) match[i] = undefined;
}
});
}
return match;
};
}
var regexpExec = patchedExec;
var SPECIES$3 = wellKnownSymbol('species');
var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
// #replace needs built-in support for named groups.
// #match works fine because it just return the exec results, even if it has
// a "grops" property.
var re = /./;
re.exec = function () {
var result = [];
result.groups = { a: '7' };
return result;
};
return ''.replace(re, '$') !== '7';
});
// Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
// Weex JS has frozen built-in prototypes, so use try / catch wrapper
var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {
var re = /(?:)/;
var originalExec = re.exec;
re.exec = function () { return originalExec.apply(this, arguments); };
var result = 'ab'.split(re);
return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';
});
var fixRegexpWellKnownSymbolLogic = function (KEY, length, exec, sham) {
var SYMBOL = wellKnownSymbol(KEY);
var DELEGATES_TO_SYMBOL = !fails(function () {
// String methods call symbol-named RegEp methods
var O = {};
O[SYMBOL] = function () { return 7; };
return ''[KEY](O) != 7;
});
var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
// Symbol-named RegExp methods call .exec
var execCalled = false;
var re = /a/;
re.exec = function () { execCalled = true; return null; };
if (KEY === 'split') {
// RegExp[@@split] doesn't call the regex's exec method, but first creates
// a new one. We need to return the patched regex when creating the new one.
re.constructor = {};
re.constructor[SPECIES$3] = function () { return re; };
}
re[SYMBOL]('');
return !execCalled;
});
if (
!DELEGATES_TO_SYMBOL ||
!DELEGATES_TO_EXEC ||
(KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||
(KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
) {
var nativeRegExpMethod = /./[SYMBOL];
var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
if (regexp.exec === regexpExec) {
if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
// The native String method already delegates to @@method (this
// polyfilled function), leasing to infinite recursion.
// We avoid it by directly calling the native @@method method.
return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
}
return { done: true, value: nativeMethod.call(str, regexp, arg2) };
}
return { done: false };
});
var stringMethod = methods[0];
var regexMethod = methods[1];
redefine(String.prototype, KEY, stringMethod);
redefine(RegExp.prototype, SYMBOL, length == 2
// 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
// 21.2.5.11 RegExp.prototype[@@split](string, limit)
? function (string, arg) { return regexMethod.call(string, this, arg); }
// 21.2.5.6 RegExp.prototype[@@match](string)
// 21.2.5.9 RegExp.prototype[@@search](string)
: function (string) { return regexMethod.call(string, this); }
);
if (sham) hide(RegExp.prototype[SYMBOL], 'sham', true);
}
};
var charAt$1 = stringMultibyte.charAt;
// `AdvanceStringIndex` abstract operation
// https://tc39.github.io/ecma262/#sec-advancestringindex
var advanceStringIndex = function (S, index, unicode) {
return index + (unicode ? charAt$1(S, index).length : 1);
};
// `RegExpExec` abstract operation
// https://tc39.github.io/ecma262/#sec-regexpexec
var regexpExecAbstract = function (R, S) {
var exec = R.exec;
if (typeof exec === 'function') {
var result = exec.call(R, S);
if (typeof result !== 'object') {
throw TypeError('RegExp exec method returned something other than an Object or null');
}
return result;
}
if (classofRaw(R) !== 'RegExp') {
throw TypeError('RegExp#exec called on incompatible receiver');
}
return regexpExec.call(R, S);
};
var max$3 = Math.max;
var min$3 = Math.min;
var floor$1 = Math.floor;
var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g;
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g;
var maybeToString = function (it) {
return it === undefined ? it : String(it);
};
// @@replace logic
fixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {
return [
// `String.prototype.replace` method
// https://tc39.github.io/ecma262/#sec-string.prototype.replace
function replace(searchValue, replaceValue) {
var O = requireObjectCoercible(this);
var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];
return replacer !== undefined
? replacer.call(searchValue, O, replaceValue)
: nativeReplace.call(String(O), searchValue, replaceValue);
},
// `RegExp.prototype[@@replace]` method
// https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
function (regexp, replaceValue) {
var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);
if (res.done) return res.value;
var rx = anObject(regexp);
var S = String(this);
var functionalReplace = typeof replaceValue === 'function';
if (!functionalReplace) replaceValue = String(replaceValue);
var global = rx.global;
if (global) {
var fullUnicode = rx.unicode;
rx.lastIndex = 0;
}
var results = [];
while (true) {
var result = regexpExecAbstract(rx, S);
if (result === null) break;
results.push(result);
if (!global) break;
var matchStr = String(result[0]);
if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
}
var accumulatedResult = '';
var nextSourcePosition = 0;
for (var i = 0; i < results.length; i++) {
result = results[i];
var matched = String(result[0]);
var position = max$3(min$3(toInteger(result.index), S.length), 0);
var captures = [];
// NOTE: This is equivalent to
// captures = result.slice(1).map(maybeToString)
// but for some reason `nativeSlice.call(result, 1, result.length)` (called in
// the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
// causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
var namedCaptures = result.groups;
if (functionalReplace) {
var replacerArgs = [matched].concat(captures, position, S);
if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
var replacement = String(replaceValue.apply(undefined, replacerArgs));
} else {
replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
}
if (position >= nextSourcePosition) {
accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
nextSourcePosition = position + matched.length;
}
}
return accumulatedResult + S.slice(nextSourcePosition);
}
];
// https://tc39.github.io/ecma262/#sec-getsubstitution
function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
var tailPos = position + matched.length;
var m = captures.length;
var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
if (namedCaptures !== undefined) {
namedCaptures = toObject(namedCaptures);
symbols = SUBSTITUTION_SYMBOLS;
}
return nativeReplace.call(replacement, symbols, function (match, ch) {
var capture;
switch (ch.charAt(0)) {
case '$': return '$';
case '&': return matched;
case '`': return str.slice(0, position);
case "'": return str.slice(tailPos);
case '<':
capture = namedCaptures[ch.slice(1, -1)];
break;
default: // \d\d?
var n = +ch;
if (n === 0) return match;
if (n > m) {
var f = floor$1(n / 10);
if (f === 0) return match;
if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
return match;
}
capture = captures[n - 1];
}
return capture === undefined ? '' : capture;
});
}
});
// `SameValue` abstract operation
// https://tc39.github.io/ecma262/#sec-samevalue
var sameValue = Object.is || function is(x, y) {
// eslint-disable-next-line no-self-compare
return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
};
// @@search logic
fixRegexpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {
return [
// `String.prototype.search` method
// https://tc39.github.io/ecma262/#sec-string.prototype.search
function search(regexp) {
var O = requireObjectCoercible(this);
var searcher = regexp == undefined ? undefined : regexp[SEARCH];
return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
},
// `RegExp.prototype[@@search]` method
// https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search
function (regexp) {
var res = maybeCallNative(nativeSearch, regexp, this);
if (res.done) return res.value;
var rx = anObject(regexp);
var S = String(this);
var previousLastIndex = rx.lastIndex;
if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;
var result = regexpExecAbstract(rx, S);
if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;
return result === null ? -1 : result.index;
}
];
});
var SPECIES$4 = wellKnownSymbol('species');
// `SpeciesConstructor` abstract operation
// https://tc39.github.io/ecma262/#sec-speciesconstructor
var speciesConstructor = function (O, defaultConstructor) {
var C = anObject(O).constructor;
var S;
return C === undefined || (S = anObject(C)[SPECIES$4]) == undefined ? defaultConstructor : aFunction$1(S);
};
var arrayPush = [].push;
var min$4 = Math.min;
var MAX_UINT32 = 0xFFFFFFFF;
// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError
var SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });
// @@split logic
fixRegexpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {
var internalSplit;
if (
'abbc'.split(/(b)*/)[1] == 'c' ||
'test'.split(/(?:)/, -1).length != 4 ||
'ab'.split(/(?:ab)*/).length != 2 ||
'.'.split(/(.?)(.?)/).length != 4 ||
'.'.split(/()()/).length > 1 ||
''.split(/.?/).length
) {
// based on es5-shim implementation, need to rework it
internalSplit = function (separator, limit) {
var string = String(requireObjectCoercible(this));
var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
if (lim === 0) return [];
if (separator === undefined) return [string];
// If `separator` is not a regex, use native split
if (!isRegexp(separator)) {
return nativeSplit.call(string, separator, lim);
}
var output = [];
var flags = (separator.ignoreCase ? 'i' : '') +
(separator.multiline ? 'm' : '') +
(separator.unicode ? 'u' : '') +
(separator.sticky ? 'y' : '');
var lastLastIndex = 0;
// Make `global` and avoid `lastIndex` issues by working with a copy
var separatorCopy = new RegExp(separator.source, flags + 'g');
var match, lastIndex, lastLength;
while (match = regexpExec.call(separatorCopy, string)) {
lastIndex = separatorCopy.lastIndex;
if (lastIndex > lastLastIndex) {
output.push(string.slice(lastLastIndex, match.index));
if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));
lastLength = match[0].length;
lastLastIndex = lastIndex;
if (output.length >= lim) break;
}
if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop
}
if (lastLastIndex === string.length) {
if (lastLength || !separatorCopy.test('')) output.push('');
} else output.push(string.slice(lastLastIndex));
return output.length > lim ? output.slice(0, lim) : output;
};
// Chakra, V8
} else if ('0'.split(undefined, 0).length) {
internalSplit = function (separator, limit) {
return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);
};
} else internalSplit = nativeSplit;
return [
// `String.prototype.split` method
// https://tc39.github.io/ecma262/#sec-string.prototype.split
function split(separator, limit) {
var O = requireObjectCoercible(this);
var splitter = separator == undefined ? undefined : separator[SPLIT];
return splitter !== undefined
? splitter.call(separator, O, limit)
: internalSplit.call(String(O), separator, limit);
},
// `RegExp.prototype[@@split]` method
// https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split
//
// NOTE: This cannot be properly polyfilled in engines that don't support
// the 'y' flag.
function (regexp, limit) {
var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);
if (res.done) return res.value;
var rx = anObject(regexp);
var S = String(this);
var C = speciesConstructor(rx, RegExp);
var unicodeMatching = rx.unicode;
var flags = (rx.ignoreCase ? 'i' : '') +
(rx.multiline ? 'm' : '') +
(rx.unicode ? 'u' : '') +
(SUPPORTS_Y ? 'y' : 'g');
// ^(? + rx + ) is needed, in combination with some S slicing, to
// simulate the 'y' flag.
var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);
var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
if (lim === 0) return [];
if (S.length === 0) return regexpExecAbstract(splitter, S) === null ? [S] : [];
var p = 0;
var q = 0;
var A = [];
while (q < S.length) {
splitter.lastIndex = SUPPORTS_Y ? q : 0;
var z = regexpExecAbstract(splitter, SUPPORTS_Y ? S : S.slice(q));
var e;
if (
z === null ||
(e = min$4(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p
) {
q = advanceStringIndex(S, q, unicodeMatching);
} else {
A.push(S.slice(p, q));
if (A.length === lim) return A;
for (var i = 1; i <= z.length - 1; i++) {
A.push(z[i]);
if (A.length === lim) return A;
}
q = p = e;
}
}
A.push(S.slice(p));
return A;
}
];
}, !SUPPORTS_Y);
var non = '\u200B\u0085\u180E';
// check that a method works with the correct list
// of whitespaces and has a correct name
var forcedStringTrimMethod = function (METHOD_NAME) {
return fails(function () {
return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;
});
};
var $trim = stringTrim.trim;
// `String.prototype.trim` method
// https://tc39.github.io/ecma262/#sec-string.prototype.trim
_export({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {
trim: function trim() {
return $trim(this);
}
});
// iterable DOM collections
// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
var domIterables = {
CSSRuleList: 0,
CSSStyleDeclaration: 0,
CSSValueList: 0,
ClientRectList: 0,
DOMRectList: 0,
DOMStringList: 0,
DOMTokenList: 1,
DataTransferItemList: 0,
FileList: 0,
HTMLAllCollection: 0,
HTMLCollection: 0,
HTMLFormElement: 0,
HTMLSelectElement: 0,
MediaList: 0,
MimeTypeArray: 0,
NamedNodeMap: 0,
NodeList: 1,
PaintRequestList: 0,
Plugin: 0,
PluginArray: 0,
SVGLengthList: 0,
SVGNumberList: 0,
SVGPathSegList: 0,
SVGPointList: 0,
SVGStringList: 0,
SVGTransformList: 0,
SourceBufferList: 0,
StyleSheetList: 0,
TextTrackCueList: 0,
TextTrackList: 0,
TouchList: 0
};
var $forEach$1 = arrayIteration.forEach;
// `Array.prototype.forEach` method implementation
// https://tc39.github.io/ecma262/#sec-array.prototype.foreach
var arrayForEach = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */) {
return $forEach$1(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
} : [].forEach;
for (var COLLECTION_NAME in domIterables) {
var Collection = global_1[COLLECTION_NAME];
var CollectionPrototype = Collection && Collection.prototype;
// some Chrome versions have non-configurable methods on DOMTokenList
if (CollectionPrototype && CollectionPrototype.forEach !== arrayForEach) try {
hide(CollectionPrototype, 'forEach', arrayForEach);
} catch (error) {
CollectionPrototype.forEach = arrayForEach;
}
}
var ITERATOR$2 = wellKnownSymbol('iterator');
var TO_STRING_TAG$3 = wellKnownSymbol('toStringTag');
var ArrayValues = es_array_iterator.values;
for (var COLLECTION_NAME$1 in domIterables) {
var Collection$1 = global_1[COLLECTION_NAME$1];
var CollectionPrototype$1 = Collection$1 && Collection$1.prototype;
if (CollectionPrototype$1) {
// some Chrome versions have non-configurable methods on DOMTokenList
if (CollectionPrototype$1[ITERATOR$2] !== ArrayValues) try {
hide(CollectionPrototype$1, ITERATOR$2, ArrayValues);
} catch (error) {
CollectionPrototype$1[ITERATOR$2] = ArrayValues;
}
if (!CollectionPrototype$1[TO_STRING_TAG$3]) hide(CollectionPrototype$1, TO_STRING_TAG$3, COLLECTION_NAME$1);
if (domIterables[COLLECTION_NAME$1]) for (var METHOD_NAME in es_array_iterator) {
// some Chrome versions have non-configurable methods on DOMTokenList
if (CollectionPrototype$1[METHOD_NAME] !== es_array_iterator[METHOD_NAME]) try {
hide(CollectionPrototype$1, METHOD_NAME, es_array_iterator[METHOD_NAME]);
} catch (error) {
CollectionPrototype$1[METHOD_NAME] = es_array_iterator[METHOD_NAME];
}
}
}
}
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
return arr2;
}
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArray(iter) {
if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
}
function _iterableToArrayLimit(arr, i) {
var _arr = [];
var _n = true;
var _d = false;
var _e = undefined;
try {
for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance");
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance");
}
var VERSION = '1.15.5';
var bootstrapVersion = 4;
try {
var rawVersion = $.fn.dropdown.Constructor.VERSION; // Only try to parse VERSION if it is defined.
// It is undefined in older versions of Bootstrap (tested with 3.1.1).
if (rawVersion !== undefined) {
bootstrapVersion = parseInt(rawVersion, 10);
}
} catch (e) {// ignore
}
var CONSTANTS = {
3: {
iconsPrefix: 'glyphicon',
icons: {
paginationSwitchDown: 'glyphicon-collapse-down icon-chevron-down',
paginationSwitchUp: 'glyphicon-collapse-up icon-chevron-up',
refresh: 'glyphicon-refresh icon-refresh',
toggleOff: 'glyphicon-list-alt icon-list-alt',
toggleOn: 'glyphicon-list-alt icon-list-alt',
columns: 'glyphicon-th icon-th',
detailOpen: 'glyphicon-plus icon-plus',
detailClose: 'glyphicon-minus icon-minus',
fullscreen: 'glyphicon-fullscreen',
search: 'glyphicon-search',
clearSearch: 'glyphicon-trash'
},
classes: {
buttonsPrefix: 'btn',
buttons: 'default',
buttonsGroup: 'btn-group',
buttonsDropdown: 'btn-group',
pull: 'pull',
inputGroup: 'input-group',
inputPrefix: 'input-',
input: 'form-control',
paginationDropdown: 'btn-group dropdown',
dropup: 'dropup',
dropdownActive: 'active',
paginationActive: 'active',
buttonActive: 'active'
},
html: {
toolbarDropdown: [''],
toolbarDropdownItem: '%s ',
toolbarDropdownSeparator: ' ',
pageDropdown: [''],
pageDropdownItem: '%s ',
dropdownCaret: ' ',
pagination: [''],
paginationItem: '%s ',
icon: ' ',
inputGroup: '%s%s
',
searchInput: ' ',
searchButton: '%s %s ',
searchClearButton: '%s %s '
}
},
4: {
iconsPrefix: 'fa',
icons: {
paginationSwitchDown: 'fa-caret-square-down',
paginationSwitchUp: 'fa-caret-square-up',
refresh: 'fa-sync',
toggleOff: 'fa-toggle-off',
toggleOn: 'fa-toggle-on',
columns: 'fa-th-list',
detailOpen: 'fa-plus',
detailClose: 'fa-minus',
fullscreen: 'fa-arrows-alt',
search: 'fa-search',
clearSearch: 'fa-trash'
},
classes: {
buttonsPrefix: 'btn',
buttons: 'secondary',
buttonsGroup: 'btn-group',
buttonsDropdown: 'btn-group',
pull: 'float',
inputGroup: 'btn-group',
inputPrefix: 'form-control-',
input: 'form-control',
paginationDropdown: 'btn-group dropdown',
dropup: 'dropup',
dropdownActive: 'active',
paginationActive: 'active',
buttonActive: 'active'
},
html: {
toolbarDropdown: [''],
toolbarDropdownItem: '%s ',
pageDropdown: [''],
pageDropdownItem: ' %s ',
toolbarDropdownSeparator: '
',
dropdownCaret: ' ',
pagination: [''],
paginationItem: '%s ',
icon: ' ',
inputGroup: '',
searchInput: ' ',
searchButton: '%s %s ',
searchClearButton: '%s %s '
}
}
}[bootstrapVersion];
var DEFAULTS = {
height: undefined,
classes: 'table table-bordered table-hover',
theadClasses: '',
rowStyle: function rowStyle(row, index) {
return {};
},
rowAttributes: function rowAttributes(row, index) {
return {};
},
undefinedText: '-',
locale: undefined,
virtualScroll: false,
virtualScrollItemHeight: undefined,
sortable: true,
sortClass: undefined,
silentSort: true,
sortName: undefined,
sortOrder: 'asc',
sortStable: false,
rememberOrder: false,
customSort: undefined,
columns: [[]],
data: [],
url: undefined,
method: 'get',
cache: true,
contentType: 'application/json',
dataType: 'json',
ajax: undefined,
ajaxOptions: {},
queryParams: function queryParams(params) {
return params;
},
queryParamsType: 'limit',
// 'limit', undefined
responseHandler: function responseHandler(res) {
return res;
},
totalField: 'total',
totalNotFilteredField: 'totalNotFiltered',
dataField: 'rows',
pagination: false,
onlyInfoPagination: false,
showExtendedPagination: false,
paginationLoop: true,
sidePagination: 'client',
// client or server
totalRows: 0,
totalNotFiltered: 0,
pageNumber: 1,
pageSize: 10,
pageList: [10, 25, 50, 100],
paginationHAlign: 'right',
// right, left
paginationVAlign: 'bottom',
// bottom, top, both
paginationDetailHAlign: 'left',
// right, left
paginationPreText: '‹',
paginationNextText: '›',
paginationSuccessivelySize: 5,
// Maximum successively number of pages in a row
paginationPagesBySide: 1,
// Number of pages on each side (right, left) of the current page.
paginationUseIntermediate: false,
// Calculate intermediate pages for quick access
search: false,
searchOnEnterKey: false,
strictSearch: false,
visibleSearch: false,
showButtonIcons: true,
showButtonText: false,
showSearchButton: false,
showSearchClearButton: false,
trimOnSearch: true,
searchAlign: 'right',
searchTimeOut: 500,
searchText: '',
customSearch: undefined,
showHeader: true,
showFooter: false,
footerStyle: function footerStyle(row, index) {
return {};
},
showColumns: false,
showColumnsToggleAll: false,
minimumCountColumns: 1,
showPaginationSwitch: false,
showRefresh: false,
showToggle: false,
showFullscreen: false,
smartDisplay: true,
escape: false,
filterOptions: {
filterAlgorithm: 'and'
},
idField: undefined,
selectItemName: 'btSelectItem',
clickToSelect: false,
ignoreClickToSelectOn: function ignoreClickToSelectOn(_ref) {
var tagName = _ref.tagName;
return ['A', 'BUTTON'].includes(tagName);
},
singleSelect: false,
checkboxHeader: true,
maintainMetaData: false,
multipleSelectRow: false,
uniqueId: undefined,
cardView: false,
detailView: false,
detailViewIcon: true,
detailViewByClick: false,
detailFormatter: function detailFormatter(index, row) {
return '';
},
detailFilter: function detailFilter(index, row) {
return true;
},
toolbar: undefined,
toolbarAlign: 'left',
buttonsToolbar: undefined,
buttonsAlign: 'right',
buttonsPrefix: CONSTANTS.classes.buttonsPrefix,
buttonsClass: CONSTANTS.classes.buttons,
icons: CONSTANTS.icons,
html: CONSTANTS.html,
iconSize: undefined,
iconsPrefix: CONSTANTS.iconsPrefix,
// glyphicon or fa(font-awesome)
onAll: function onAll(name, args) {
return false;
},
onClickCell: function onClickCell(field, value, row, $element) {
return false;
},
onDblClickCell: function onDblClickCell(field, value, row, $element) {
return false;
},
onClickRow: function onClickRow(item, $element) {
return false;
},
onDblClickRow: function onDblClickRow(item, $element) {
return false;
},
onSort: function onSort(name, order) {
return false;
},
onCheck: function onCheck(row) {
return false;
},
onUncheck: function onUncheck(row) {
return false;
},
onCheckAll: function onCheckAll(rows) {
return false;
},
onUncheckAll: function onUncheckAll(rows) {
return false;
},
onCheckSome: function onCheckSome(rows) {
return false;
},
onUncheckSome: function onUncheckSome(rows) {
return false;
},
onLoadSuccess: function onLoadSuccess(data) {
return false;
},
onLoadError: function onLoadError(status) {
return false;
},
onColumnSwitch: function onColumnSwitch(field, checked) {
return false;
},
onPageChange: function onPageChange(number, size) {
return false;
},
onSearch: function onSearch(text) {
return false;
},
onToggle: function onToggle(cardView) {
return false;
},
onPreBody: function onPreBody(data) {
return false;
},
onPostBody: function onPostBody() {
return false;
},
onPostHeader: function onPostHeader() {
return false;
},
onPostFooter: function onPostFooter() {
return false;
},
onExpandRow: function onExpandRow(index, row, $detail) {
return false;
},
onCollapseRow: function onCollapseRow(index, row) {
return false;
},
onRefreshOptions: function onRefreshOptions(options) {
return false;
},
onRefresh: function onRefresh(params) {
return false;
},
onResetView: function onResetView() {
return false;
},
onScrollBody: function onScrollBody() {
return false;
}
};
var EN = {
formatLoadingMessage: function formatLoadingMessage() {
return 'Loading, please wait';
},
formatRecordsPerPage: function formatRecordsPerPage(pageNumber) {
return "".concat(pageNumber, " rows per page");
},
formatShowingRows: function formatShowingRows(pageFrom, pageTo, totalRows, totalNotFiltered) {
if (totalNotFiltered !== undefined && totalNotFiltered > 0 && totalNotFiltered > totalRows) {
return "Showing ".concat(pageFrom, " to ").concat(pageTo, " of ").concat(totalRows, " rows (filtered from ").concat(totalNotFiltered, " total rows)");
}
return "Showing ".concat(pageFrom, " to ").concat(pageTo, " of ").concat(totalRows, " rows");
},
formatSRPaginationPreText: function formatSRPaginationPreText() {
return 'previous page';
},
formatSRPaginationPageText: function formatSRPaginationPageText(page) {
return "to page ".concat(page);
},
formatSRPaginationNextText: function formatSRPaginationNextText() {
return 'next page';
},
formatDetailPagination: function formatDetailPagination(totalRows) {
return "Showing ".concat(totalRows, " rows");
},
formatSearch: function formatSearch() {
return 'Search';
},
formatClearSearch: function formatClearSearch() {
return 'Clear Search';
},
formatNoMatches: function formatNoMatches() {
return 'No matching records found';
},
formatPaginationSwitch: function formatPaginationSwitch() {
return 'Hide/Show pagination';
},
formatPaginationSwitchDown: function formatPaginationSwitchDown() {
return 'Show pagination';
},
formatPaginationSwitchUp: function formatPaginationSwitchUp() {
return 'Hide pagination';
},
formatRefresh: function formatRefresh() {
return 'Refresh';
},
formatToggle: function formatToggle() {
return 'Toggle';
},
formatToggleOn: function formatToggleOn() {
return 'Show card view';
},
formatToggleOff: function formatToggleOff() {
return 'Hide card view';
},
formatColumns: function formatColumns() {
return 'Columns';
},
formatColumnsToggleAll: function formatColumnsToggleAll() {
return 'Toggle all';
},
formatFullscreen: function formatFullscreen() {
return 'Fullscreen';
},
formatAllRows: function formatAllRows() {
return 'All';
}
};
var COLUMN_DEFAULTS = {
field: undefined,
title: undefined,
titleTooltip: undefined,
'class': undefined,
width: undefined,
widthUnit: 'px',
rowspan: undefined,
colspan: undefined,
align: undefined,
// left, right, center
halign: undefined,
// left, right, center
falign: undefined,
// left, right, center
valign: undefined,
// top, middle, bottom
cellStyle: undefined,
radio: false,
checkbox: false,
checkboxEnabled: true,
clickToSelect: true,
showSelectTitle: false,
sortable: false,
sortName: undefined,
order: 'asc',
// asc, desc
sorter: undefined,
visible: true,
switchable: true,
cardVisible: true,
searchable: true,
formatter: undefined,
footerFormatter: undefined,
detailFormatter: undefined,
searchFormatter: true,
escape: false,
events: undefined
};
var METHODS = ['getOptions', 'refreshOptions', 'getData', 'getSelections', 'getAllSelections', 'load', 'append', 'prepend', 'remove', 'removeAll', 'insertRow', 'updateRow', 'getRowByUniqueId', 'updateByUniqueId', 'removeByUniqueId', 'updateCell', 'updateCellByUniqueId', 'showRow', 'hideRow', 'getHiddenRows', 'showColumn', 'hideColumn', 'getVisibleColumns', 'getHiddenColumns', 'showAllColumns', 'hideAllColumns', 'mergeCells', 'checkAll', 'uncheckAll', 'checkInvert', 'check', 'uncheck', 'checkBy', 'uncheckBy', 'refresh', 'destroy', 'resetView', 'resetWidth', 'showLoading', 'hideLoading', 'togglePagination', 'toggleFullscreen', 'toggleView', 'resetSearch', 'filterBy', 'scrollTo', 'getScrollPosition', 'selectPage', 'prevPage', 'nextPage', 'toggleDetailView', 'expandRow', 'collapseRow', 'expandAllRows', 'collapseAllRows', 'updateColumnTitle', 'updateFormatText'];
var EVENTS = {
'all.bs.table': 'onAll',
'click-row.bs.table': 'onClickRow',
'dbl-click-row.bs.table': 'onDblClickRow',
'click-cell.bs.table': 'onClickCell',
'dbl-click-cell.bs.table': 'onDblClickCell',
'sort.bs.table': 'onSort',
'check.bs.table': 'onCheck',
'uncheck.bs.table': 'onUncheck',
'check-all.bs.table': 'onCheckAll',
'uncheck-all.bs.table': 'onUncheckAll',
'check-some.bs.table': 'onCheckSome',
'uncheck-some.bs.table': 'onUncheckSome',
'load-success.bs.table': 'onLoadSuccess',
'load-error.bs.table': 'onLoadError',
'column-switch.bs.table': 'onColumnSwitch',
'page-change.bs.table': 'onPageChange',
'search.bs.table': 'onSearch',
'toggle.bs.table': 'onToggle',
'pre-body.bs.table': 'onPreBody',
'post-body.bs.table': 'onPostBody',
'post-header.bs.table': 'onPostHeader',
'post-footer.bs.table': 'onPostFooter',
'expand-row.bs.table': 'onExpandRow',
'collapse-row.bs.table': 'onCollapseRow',
'refresh-options.bs.table': 'onRefreshOptions',
'reset-view.bs.table': 'onResetView',
'refresh.bs.table': 'onRefresh',
'scroll-body.bs.table': 'onScrollBody'
};
Object.assign(DEFAULTS, EN);
var Constants = {
VERSION: VERSION,
THEME: "bootstrap".concat(bootstrapVersion),
CONSTANTS: CONSTANTS,
DEFAULTS: DEFAULTS,
COLUMN_DEFAULTS: COLUMN_DEFAULTS,
METHODS: METHODS,
EVENTS: EVENTS,
LOCALES: {
en: EN,
'en-US': EN
}
};
// `FlattenIntoArray` abstract operation
// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
var flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {
var targetIndex = start;
var sourceIndex = 0;
var mapFn = mapper ? bindContext(mapper, thisArg, 3) : false;
var element;
while (sourceIndex < sourceLen) {
if (sourceIndex in source) {
element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
if (depth > 0 && isArray(element)) {
targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;
} else {
if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');
target[targetIndex] = element;
}
targetIndex++;
}
sourceIndex++;
}
return targetIndex;
};
var flattenIntoArray_1 = flattenIntoArray;
// `Array.prototype.flat` method
// https://github.com/tc39/proposal-flatMap
_export({ target: 'Array', proto: true }, {
flat: function flat(/* depthArg = 1 */) {
var depthArg = arguments.length ? arguments[0] : undefined;
var O = toObject(this);
var sourceLen = toLength(O.length);
var A = arraySpeciesCreate(O, 0);
A.length = flattenIntoArray_1(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));
return A;
}
});
// this method was added to unscopables after implementation
// in popular engines, so it's moved to a separate module
addToUnscopables('flat');
var FAILS_ON_PRIMITIVES = fails(function () { objectKeys(1); });
// `Object.keys` method
// https://tc39.github.io/ecma262/#sec-object.keys
_export({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
keys: function keys(it) {
return objectKeys(toObject(it));
}
});
var Utils = {
// it only does '%s', and return '' when arguments are undefined
sprintf: function sprintf(_str) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
var flag = true;
var i = 0;
var str = _str.replace(/%s/g, function () {
var arg = args[i++];
if (typeof arg === 'undefined') {
flag = false;
return '';
}
return arg;
});
return flag ? str : '';
},
isEmptyObject: function isEmptyObject() {
var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return Object.entries(obj).length === 0 && obj.constructor === Object;
},
isNumeric: function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
},
getFieldTitle: function getFieldTitle(list, value) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = list[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var item = _step.value;
if (item.field === value) {
return item.title;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return '';
},
setFieldIndex: function setFieldIndex(columns) {
var totalCol = 0;
var flag = [];
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = columns[0][Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var column = _step2.value;
totalCol += column.colspan || 1;
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
for (var i = 0; i < columns.length; i++) {
flag[i] = [];
for (var j = 0; j < totalCol; j++) {
flag[i][j] = false;
}
}
for (var _i = 0; _i < columns.length; _i++) {
var _iteratorNormalCompletion3 = true;
var _didIteratorError3 = false;
var _iteratorError3 = undefined;
try {
for (var _iterator3 = columns[_i][Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
var r = _step3.value;
var rowspan = r.rowspan || 1;
var colspan = r.colspan || 1;
var index = flag[_i].indexOf(false);
r.colspanIndex = index;
if (colspan === 1) {
r.fieldIndex = index; // when field is undefined, use index instead
if (typeof r.field === 'undefined') {
r.field = index;
}
} else {
r.colspanGroup = r.colspan;
}
for (var k = 0; k < rowspan; k++) {
flag[_i + k][index] = true;
}
for (var _k = 0; _k < colspan; _k++) {
flag[_i][index + _k] = true;
}
}
} catch (err) {
_didIteratorError3 = true;
_iteratorError3 = err;
} finally {
try {
if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
_iterator3.return();
}
} finally {
if (_didIteratorError3) {
throw _iteratorError3;
}
}
}
}
},
updateFieldGroup: function updateFieldGroup(columns) {
var allColumns = columns.flat();
var _iteratorNormalCompletion4 = true;
var _didIteratorError4 = false;
var _iteratorError4 = undefined;
try {
for (var _iterator4 = columns[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
var c = _step4.value;
var _iteratorNormalCompletion5 = true;
var _didIteratorError5 = false;
var _iteratorError5 = undefined;
try {
for (var _iterator5 = c[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
var r = _step5.value;
if (r.colspanGroup > 1) {
var colspan = 0;
var _loop = function _loop(i) {
var column = allColumns.find(function (col) {
return col.fieldIndex === i;
});
if (column.visible) {
colspan++;
}
};
for (var i = r.colspanIndex; i < r.colspanIndex + r.colspanGroup; i++) {
_loop(i);
}
r.colspan = colspan;
r.visible = colspan > 0;
}
}
} catch (err) {
_didIteratorError5 = true;
_iteratorError5 = err;
} finally {
try {
if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
_iterator5.return();
}
} finally {
if (_didIteratorError5) {
throw _iteratorError5;
}
}
}
}
} catch (err) {
_didIteratorError4 = true;
_iteratorError4 = err;
} finally {
try {
if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
_iterator4.return();
}
} finally {
if (_didIteratorError4) {
throw _iteratorError4;
}
}
}
},
getScrollBarWidth: function getScrollBarWidth() {
if (this.cachedWidth === undefined) {
var $inner = $('
').addClass('fixed-table-scroll-inner');
var $outer = $('
').addClass('fixed-table-scroll-outer');
$outer.append($inner);
$('body').append($outer);
var w1 = $inner[0].offsetWidth;
$outer.css('overflow', 'scroll');
var w2 = $inner[0].offsetWidth;
if (w1 === w2) {
w2 = $outer[0].clientWidth;
}
$outer.remove();
this.cachedWidth = w1 - w2;
}
return this.cachedWidth;
},
calculateObjectValue: function calculateObjectValue(self, name, args, defaultValue) {
var func = name;
if (typeof name === 'string') {
// support obj.func1.func2
var names = name.split('.');
if (names.length > 1) {
func = window;
var _iteratorNormalCompletion6 = true;
var _didIteratorError6 = false;
var _iteratorError6 = undefined;
try {
for (var _iterator6 = names[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
var f = _step6.value;
func = func[f];
}
} catch (err) {
_didIteratorError6 = true;
_iteratorError6 = err;
} finally {
try {
if (!_iteratorNormalCompletion6 && _iterator6.return != null) {
_iterator6.return();
}
} finally {
if (_didIteratorError6) {
throw _iteratorError6;
}
}
}
} else {
func = window[name];
}
}
if (func !== null && _typeof(func) === 'object') {
return func;
}
if (typeof func === 'function') {
return func.apply(self, args || []);
}
if (!func && typeof name === 'string' && this.sprintf.apply(this, [name].concat(_toConsumableArray(args)))) {
return this.sprintf.apply(this, [name].concat(_toConsumableArray(args)));
}
return defaultValue;
},
compareObjects: function compareObjects(objectA, objectB, compareLength) {
var aKeys = Object.keys(objectA);
var bKeys = Object.keys(objectB);
if (compareLength && aKeys.length !== bKeys.length) {
return false;
}
for (var _i2 = 0, _aKeys = aKeys; _i2 < _aKeys.length; _i2++) {
var key = _aKeys[_i2];
if (bKeys.includes(key) && objectA[key] !== objectB[key]) {
return false;
}
}
return true;
},
escapeHTML: function escapeHTML(text) {
if (typeof text === 'string') {
return text.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/`/g, '`');
}
return text;
},
getRealDataAttr: function getRealDataAttr(dataAttr) {
for (var _i3 = 0, _Object$entries = Object.entries(dataAttr); _i3 < _Object$entries.length; _i3++) {
var _Object$entries$_i = _slicedToArray(_Object$entries[_i3], 2),
attr = _Object$entries$_i[0],
value = _Object$entries$_i[1];
var auxAttr = attr.split(/(?=[A-Z])/).join('-').toLowerCase();
if (auxAttr !== attr) {
dataAttr[auxAttr] = value;
delete dataAttr[attr];
}
}
return dataAttr;
},
getItemField: function getItemField(item, field, escape) {
var value = item;
if (typeof field !== 'string' || item.hasOwnProperty(field)) {
return escape ? this.escapeHTML(item[field]) : item[field];
}
var props = field.split('.');
var _iteratorNormalCompletion7 = true;
var _didIteratorError7 = false;
var _iteratorError7 = undefined;
try {
for (var _iterator7 = props[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {
var p = _step7.value;
value = value && value[p];
}
} catch (err) {
_didIteratorError7 = true;
_iteratorError7 = err;
} finally {
try {
if (!_iteratorNormalCompletion7 && _iterator7.return != null) {
_iterator7.return();
}
} finally {
if (_didIteratorError7) {
throw _iteratorError7;
}
}
}
return escape ? this.escapeHTML(value) : value;
},
isIEBrowser: function isIEBrowser() {
return navigator.userAgent.includes('MSIE ') || /Trident.*rv:11\./.test(navigator.userAgent);
},
findIndex: function findIndex(items, item) {
var _iteratorNormalCompletion8 = true;
var _didIteratorError8 = false;
var _iteratorError8 = undefined;
try {
for (var _iterator8 = items[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
var it = _step8.value;
if (JSON.stringify(it) === JSON.stringify(item)) {
return items.indexOf(it);
}
}
} catch (err) {
_didIteratorError8 = true;
_iteratorError8 = err;
} finally {
try {
if (!_iteratorNormalCompletion8 && _iterator8.return != null) {
_iterator8.return();
}
} finally {
if (_didIteratorError8) {
throw _iteratorError8;
}
}
}
return -1;
},
trToData: function trToData(columns, $els) {
var _this = this;
var data = [];
var m = [];
$els.each(function (y, el) {
var row = {}; // save tr's id, class and data-* attributes
row._id = $(el).attr('id');
row._class = $(el).attr('class');
row._data = _this.getRealDataAttr($(el).data());
$(el).find('>td,>th').each(function (_x, el) {
var cspan = +$(el).attr('colspan') || 1;
var rspan = +$(el).attr('rowspan') || 1;
var x = _x; // skip already occupied cells in current row
for (; m[y] && m[y][x]; x++) {} // ignore
// mark matrix elements occupied by current cell with true
for (var tx = x; tx < x + cspan; tx++) {
for (var ty = y; ty < y + rspan; ty++) {
if (!m[ty]) {
// fill missing rows
m[ty] = [];
}
m[ty][tx] = true;
}
}
var field = columns[x].field;
row[field] = $(el).html().trim(); // save td's id, class and data-* attributes
row["_".concat(field, "_id")] = $(el).attr('id');
row["_".concat(field, "_class")] = $(el).attr('class');
row["_".concat(field, "_rowspan")] = $(el).attr('rowspan');
row["_".concat(field, "_colspan")] = $(el).attr('colspan');
row["_".concat(field, "_title")] = $(el).attr('title');
row["_".concat(field, "_data")] = _this.getRealDataAttr($(el).data());
});
data.push(row);
});
return data;
},
sort: function sort(a, b, order, sortStable) {
if (a === undefined || a === null) {
a = '';
}
if (b === undefined || b === null) {
b = '';
}
if (sortStable && a === b) {
a = a._position;
b = b._position;
} // If both values are numeric, do a numeric comparison
if (this.isNumeric(a) && this.isNumeric(b)) {
// Convert numerical values form string to float.
a = parseFloat(a);
b = parseFloat(b);
if (a < b) {
return order * -1;
}
if (a > b) {
return order;
}
return 0;
}
if (a === b) {
return 0;
} // If value is not a string, convert to string
if (typeof a !== 'string') {
a = a.toString();
}
if (a.localeCompare(b) === -1) {
return order * -1;
}
return order;
}
};
var BLOCK_ROWS = 50;
var CLUSTER_BLOCKS = 4;
var VirtualScroll =
/*#__PURE__*/
function () {
function VirtualScroll(options) {
var _this = this;
_classCallCheck(this, VirtualScroll);
this.rows = options.rows;
this.scrollEl = options.scrollEl;
this.contentEl = options.contentEl;
this.callback = options.callback;
this.itemHeight = options.itemHeight;
this.cache = {};
this.scrollTop = this.scrollEl.scrollTop;
this.initDOM(this.rows, options.fixedScroll);
this.scrollEl.scrollTop = this.scrollTop;
this.lastCluster = 0;
var onScroll = function onScroll() {
if (_this.lastCluster !== (_this.lastCluster = _this.getNum())) {
_this.initDOM(_this.rows);
_this.callback();
}
};
this.scrollEl.addEventListener('scroll', onScroll, false);
this.destroy = function () {
_this.contentEl.innerHtml = '';
_this.scrollEl.removeEventListener('scroll', onScroll, false);
};
}
_createClass(VirtualScroll, [{
key: "initDOM",
value: function initDOM(rows, fixedScroll) {
if (typeof this.clusterHeight === 'undefined') {
this.cache.scrollTop = this.scrollEl.scrollTop;
this.cache.data = this.contentEl.innerHTML = rows[0] + rows[0] + rows[0];
this.getRowsHeight(rows);
}
var data = this.initData(rows, this.getNum(fixedScroll));
var thisRows = data.rows.join('');
var dataChanged = this.checkChanges('data', thisRows);
var topOffsetChanged = this.checkChanges('top', data.topOffset);
var bottomOffsetChanged = this.checkChanges('bottom', data.bottomOffset);
var html = [];
if (dataChanged && topOffsetChanged) {
if (data.topOffset) {
html.push(this.getExtra('top', data.topOffset));
}
html.push(thisRows);
if (data.bottomOffset) {
html.push(this.getExtra('bottom', data.bottomOffset));
}
this.contentEl.innerHTML = html.join('');
if (fixedScroll) {
this.contentEl.scrollTop = this.cache.scrollTop;
}
} else if (bottomOffsetChanged) {
this.contentEl.lastChild.style.height = "".concat(data.bottomOffset, "px");
}
}
}, {
key: "getRowsHeight",
value: function getRowsHeight() {
if (typeof this.itemHeight === 'undefined') {
var nodes = this.contentEl.children;
var node = nodes[Math.floor(nodes.length / 2)];
this.itemHeight = node.offsetHeight;
}
this.blockHeight = this.itemHeight * BLOCK_ROWS;
this.clusterRows = BLOCK_ROWS * CLUSTER_BLOCKS;
this.clusterHeight = this.blockHeight * CLUSTER_BLOCKS;
}
}, {
key: "getNum",
value: function getNum(fixedScroll) {
this.scrollTop = fixedScroll ? this.cache.scrollTop : this.scrollEl.scrollTop;
return Math.floor(this.scrollTop / (this.clusterHeight - this.blockHeight)) || 0;
}
}, {
key: "initData",
value: function initData(rows, num) {
if (rows.length < BLOCK_ROWS) {
return {
topOffset: 0,
bottomOffset: 0,
rowsAbove: 0,
rows: rows
};
}
var start = Math.max((this.clusterRows - BLOCK_ROWS) * num, 0);
var end = start + this.clusterRows;
var topOffset = Math.max(start * this.itemHeight, 0);
var bottomOffset = Math.max((rows.length - end) * this.itemHeight, 0);
var thisRows = [];
var rowsAbove = start;
if (topOffset < 1) {
rowsAbove++;
}
for (var i = start; i < end; i++) {
rows[i] && thisRows.push(rows[i]);
}
return {
topOffset: topOffset,
bottomOffset: bottomOffset,
rowsAbove: rowsAbove,
rows: thisRows
};
}
}, {
key: "checkChanges",
value: function checkChanges(type, value) {
var changed = value !== this.cache[type];
this.cache[type] = value;
return changed;
}
}, {
key: "getExtra",
value: function getExtra(className, height) {
var tag = document.createElement('tr');
tag.className = "virtual-scroll-".concat(className);
if (height) {
tag.style.height = "".concat(height, "px");
}
return tag.outerHTML;
}
}]);
return VirtualScroll;
}();
var BootstrapTable =
/*#__PURE__*/
function () {
function BootstrapTable(el, options) {
_classCallCheck(this, BootstrapTable);
this.options = options;
this.$el = $(el);
this.$el_ = this.$el.clone();
this.timeoutId_ = 0;
this.timeoutFooter_ = 0;
this.init();
}
_createClass(BootstrapTable, [{
key: "init",
value: function init() {
this.initConstants();
this.initLocale();
this.initContainer();
this.initTable();
this.initHeader();
this.initData();
this.initHiddenRows();
this.initToolbar();
this.initPagination();
this.initBody();
this.initSearchText();
this.initServer();
}
}, {
key: "initConstants",
value: function initConstants() {
var o = this.options;
this.constants = Constants.CONSTANTS;
this.constants.theme = $.fn.bootstrapTable.theme;
var buttonsPrefix = o.buttonsPrefix ? "".concat(o.buttonsPrefix, "-") : '';
this.constants.buttonsClass = [o.buttonsPrefix, buttonsPrefix + o.buttonsClass, Utils.sprintf("".concat(buttonsPrefix, "%s"), o.iconSize)].join(' ').trim();
}
}, {
key: "initLocale",
value: function initLocale() {
if (this.options.locale) {
var locales = $.fn.bootstrapTable.locales;
var parts = this.options.locale.split(/-|_/);
parts[0] = parts[0].toLowerCase();
if (parts[1]) {
parts[1] = parts[1].toUpperCase();
}
if (locales[this.options.locale]) {
$.extend(this.options, locales[this.options.locale]);
} else if (locales[parts.join('-')]) {
$.extend(this.options, locales[parts.join('-')]);
} else if (locales[parts[0]]) {
$.extend(this.options, locales[parts[0]]);
}
}
}
}, {
key: "initContainer",
value: function initContainer() {
var topPagination = ['top', 'both'].includes(this.options.paginationVAlign) ? '' : '';
var bottomPagination = ['bottom', 'both'].includes(this.options.paginationVAlign) ? '' : '';
this.$container = $("\n \n
\n ").concat(topPagination, "\n
\n \n
\n
\n \n ").concat(this.options.formatLoadingMessage(), " \n \n \n
\n
\n \n
\n ").concat(bottomPagination, "\n
\n "));
this.$container.insertAfter(this.$el);
this.$tableContainer = this.$container.find('.fixed-table-container');
this.$tableHeader = this.$container.find('.fixed-table-header');
this.$tableBody = this.$container.find('.fixed-table-body');
this.$tableLoading = this.$container.find('.fixed-table-loading');
this.$tableFooter = this.$el.find('tfoot'); // checking if custom table-toolbar exists or not
if (this.options.buttonsToolbar) {
this.$toolbar = $('body').find(this.options.buttonsToolbar);
} else {
this.$toolbar = this.$container.find('.fixed-table-toolbar');
}
this.$pagination = this.$container.find('.fixed-table-pagination');
this.$tableBody.append(this.$el);
this.$container.after('
');
this.$el.addClass(this.options.classes);
this.$tableLoading.addClass(this.options.classes);
if (this.options.height) {
this.$tableContainer.addClass('fixed-height');
if (this.options.showFooter) {
this.$tableContainer.addClass('has-footer');
}
if (this.options.classes.split(' ').includes('table-bordered')) {
this.$tableBody.append('
');
this.$tableBorder = this.$tableBody.find('.fixed-table-border');
this.$tableLoading.addClass('fixed-table-border');
}
this.$tableFooter = this.$container.find('.fixed-table-footer');
} else {
if (!this.$tableFooter.length) {
this.$el.append(' ');
this.$tableFooter = this.$el.find('tfoot');
}
}
}
}, {
key: "initTable",
value: function initTable() {
var _this = this;
var columns = [];
var data = [];
this.$header = this.$el.find('>thead');
if (!this.$header.length) {
this.$header = $(" ")).appendTo(this.$el);
} else if (this.options.theadClasses) {
this.$header.addClass(this.options.theadClasses);
}
this.$header.find('tr').each(function (i, el) {
var column = [];
$(el).find('th').each(function (i, el) {
// #2014: getFieldIndex and elsewhere assume this is string, causes issues if not
if (typeof $(el).data('field') !== 'undefined') {
$(el).data('field', "".concat($(el).data('field')));
}
column.push($.extend({}, {
title: $(el).html(),
'class': $(el).attr('class'),
titleTooltip: $(el).attr('title'),
rowspan: $(el).attr('rowspan') ? +$(el).attr('rowspan') : undefined,
colspan: $(el).attr('colspan') ? +$(el).attr('colspan') : undefined
}, $(el).data()));
});
columns.push(column);
});
if (!Array.isArray(this.options.columns[0])) {
this.options.columns = [this.options.columns];
}
this.options.columns = $.extend(true, [], columns, this.options.columns);
this.columns = [];
this.fieldsColumnsIndex = [];
Utils.setFieldIndex(this.options.columns);
this.options.columns.forEach(function (columns, i) {
columns.forEach(function (_column, j) {
var column = $.extend({}, BootstrapTable.COLUMN_DEFAULTS, _column);
if (typeof column.fieldIndex !== 'undefined') {
_this.columns[column.fieldIndex] = column;
_this.fieldsColumnsIndex[column.field] = column.fieldIndex;
}
_this.options.columns[i][j] = column;
});
}); // if options.data is setting, do not process tbody and tfoot data
if (!this.options.data.length) {
this.options.data = Utils.trToData(this.columns, this.$el.find('>tbody>tr'));
if (data.length) {
this.fromHtml = true;
}
}
this.footerData = Utils.trToData(this.columns, this.$el.find('>tfoot>tr'));
if (this.footerData) {
this.$el.find('tfoot').html(' ');
}
if (!this.options.showFooter || this.options.cardView) {
this.$tableFooter.hide();
} else {
this.$tableFooter.show();
}
}
}, {
key: "initHeader",
value: function initHeader() {
var _this2 = this;
var visibleColumns = {};
var html = [];
this.header = {
fields: [],
styles: [],
classes: [],
formatters: [],
detailFormatters: [],
events: [],
sorters: [],
sortNames: [],
cellStyles: [],
searchables: []
};
Utils.updateFieldGroup(this.options.columns);
this.options.columns.forEach(function (columns, i) {
html.push('');
if (i === 0 && !_this2.options.cardView && _this2.options.detailView && _this2.options.detailViewIcon) {
html.push("\n
\n \n "));
}
columns.forEach(function (column, j) {
var class_ = Utils.sprintf(' class="%s"', column['class']);
var unitWidth = column.widthUnit;
var width = parseFloat(column.width);
var halign = Utils.sprintf('text-align: %s; ', column.halign ? column.halign : column.align);
var align = Utils.sprintf('text-align: %s; ', column.align);
var style = Utils.sprintf('vertical-align: %s; ', column.valign);
style += Utils.sprintf('width: %s; ', (column.checkbox || column.radio) && !width ? !column.showSelectTitle ? '36px' : undefined : width ? width + unitWidth : undefined);
if (typeof column.fieldIndex === 'undefined' && !column.visible) {
return;
}
if (typeof column.fieldIndex !== 'undefined') {
_this2.header.fields[column.fieldIndex] = column.field;
_this2.header.styles[column.fieldIndex] = align + style;
_this2.header.classes[column.fieldIndex] = class_;
_this2.header.formatters[column.fieldIndex] = column.formatter;
_this2.header.detailFormatters[column.fieldIndex] = column.detailFormatter;
_this2.header.events[column.fieldIndex] = column.events;
_this2.header.sorters[column.fieldIndex] = column.sorter;
_this2.header.sortNames[column.fieldIndex] = column.sortName;
_this2.header.cellStyles[column.fieldIndex] = column.cellStyle;
_this2.header.searchables[column.fieldIndex] = column.searchable;
if (!column.visible) {
return;
}
if (_this2.options.cardView && !column.cardVisible) {
return;
}
visibleColumns[column.field] = column;
}
html.push(" 0 ? ' data-not-first-th' : '', '>');
html.push(Utils.sprintf('', _this2.options.sortable && column.sortable ? 'sortable both' : ''));
var text = _this2.options.escape ? Utils.escapeHTML(column.title) : column.title;
var title = text;
if (column.checkbox) {
text = '';
if (!_this2.options.singleSelect && _this2.options.checkboxHeader) {
text = ' ';
}
_this2.header.stateField = column.field;
}
if (column.radio) {
text = '';
_this2.header.stateField = column.field;
_this2.options.singleSelect = true;
}
if (!text && column.showSelectTitle) {
text += title;
}
html.push(text);
html.push('
');
html.push('
');
html.push('');
html.push(' ');
});
html.push(' ');
});
this.$header.html(html.join(''));
this.$header.find('th[data-field]').each(function (i, el) {
$(el).data(visibleColumns[$(el).data('field')]);
});
this.$container.off('click', '.th-inner').on('click', '.th-inner', function (e) {
var $this = $(e.currentTarget);
if (_this2.options.detailView && !$this.parent().hasClass('bs-checkbox')) {
if ($this.closest('.bootstrap-table')[0] !== _this2.$container[0]) {
return false;
}
}
if (_this2.options.sortable && $this.parent().data().sortable) {
_this2.onSort(e);
}
});
this.$header.children().children().off('keypress').on('keypress', function (e) {
if (_this2.options.sortable && $(e.currentTarget).data().sortable) {
var code = e.keyCode || e.which;
if (code === 13) {
// Enter keycode
_this2.onSort(e);
}
}
});
var resizeEvent = "resize.bootstrap-table".concat(this.$el.attr('id') || '');
$(window).off(resizeEvent);
if (!this.options.showHeader || this.options.cardView) {
this.$header.hide();
this.$tableHeader.hide();
this.$tableLoading.css('top', 0);
} else {
this.$header.show();
this.$tableHeader.show();
this.$tableLoading.css('top', this.$header.outerHeight() + 1); // Assign the correct sortable arrow
this.getCaret();
$(window).on(resizeEvent, function (e) {
return _this2.resetWidth(e);
});
}
this.$selectAll = this.$header.find('[name="btSelectAll"]');
this.$selectAll.off('click').on('click', function (_ref) {
var currentTarget = _ref.currentTarget;
var checked = $(currentTarget).prop('checked');
_this2[checked ? 'checkAll' : 'uncheckAll']();
_this2.updateSelected();
});
}
}, {
key: "initData",
value: function initData(data, type) {
if (type === 'append') {
this.options.data = this.options.data.concat(data);
} else if (type === 'prepend') {
this.options.data = [].concat(data).concat(this.options.data);
} else {
this.options.data = data || this.options.data;
}
this.data = this.options.data;
if (this.options.sidePagination === 'server') {
return;
}
this.initSort();
}
}, {
key: "initSort",
value: function initSort() {
var _this3 = this;
var name = this.options.sortName;
var order = this.options.sortOrder === 'desc' ? -1 : 1;
var index = this.header.fields.indexOf(this.options.sortName);
var timeoutId = 0;
if (index !== -1) {
if (this.options.sortStable) {
this.data.forEach(function (row, i) {
if (!row.hasOwnProperty('_position')) {
row._position = i;
}
});
}
if (this.options.customSort) {
Utils.calculateObjectValue(this.options, this.options.customSort, [this.options.sortName, this.options.sortOrder, this.data]);
} else {
this.data.sort(function (a, b) {
if (_this3.header.sortNames[index]) {
name = _this3.header.sortNames[index];
}
var aa = Utils.getItemField(a, name, _this3.options.escape);
var bb = Utils.getItemField(b, name, _this3.options.escape);
var value = Utils.calculateObjectValue(_this3.header, _this3.header.sorters[index], [aa, bb, a, b]);
if (value !== undefined) {
if (_this3.options.sortStable && value === 0) {
return order * (a._position - b._position);
}
return order * value;
}
return Utils.sort(aa, bb, order, _this3.options.sortStable);
});
}
if (this.options.sortClass !== undefined) {
clearTimeout(timeoutId);
timeoutId = setTimeout(function () {
_this3.$el.removeClass(_this3.options.sortClass);
var index = _this3.$header.find("[data-field=\"".concat(_this3.options.sortName, "\"]")).index();
_this3.$el.find("tr td:nth-child(".concat(index + 1, ")")).addClass(_this3.options.sortClass);
}, 250);
}
}
}
}, {
key: "onSort",
value: function onSort(_ref2) {
var type = _ref2.type,
currentTarget = _ref2.currentTarget;
var $this = type === 'keypress' ? $(currentTarget) : $(currentTarget).parent();
var $this_ = this.$header.find('th').eq($this.index());
this.$header.add(this.$header_).find('span.order').remove();
if (this.options.sortName === $this.data('field')) {
this.options.sortOrder = this.options.sortOrder === 'asc' ? 'desc' : 'asc';
} else {
this.options.sortName = $this.data('field');
if (this.options.rememberOrder) {
this.options.sortOrder = $this.data('order') === 'asc' ? 'desc' : 'asc';
} else {
this.options.sortOrder = this.columns[this.fieldsColumnsIndex[$this.data('field')]].sortOrder || this.columns[this.fieldsColumnsIndex[$this.data('field')]].order;
}
}
this.trigger('sort', this.options.sortName, this.options.sortOrder);
$this.add($this_).data('order', this.options.sortOrder); // Assign the correct sortable arrow
this.getCaret();
if (this.options.sidePagination === 'server') {
this.options.pageNumber = 1;
this.initServer(this.options.silentSort);
return;
}
this.initSort();
this.initBody();
}
}, {
key: "initToolbar",
value: function initToolbar() {
var _this4 = this;
var o = this.options;
var html = [];
var timeoutId = 0;
var $keepOpen;
var switchableCount = 0;
if (this.$toolbar.find('.bs-bars').children().length) {
$('body').append($(o.toolbar));
}
this.$toolbar.html('');
if (typeof o.toolbar === 'string' || _typeof(o.toolbar) === 'object') {
$(Utils.sprintf('
', this.constants.classes.pull, o.toolbarAlign)).appendTo(this.$toolbar).append($(o.toolbar));
} // showColumns, showToggle, showRefresh
html = ["")];
if (typeof o.icons === 'string') {
o.icons = Utils.calculateObjectValue(null, o.icons);
}
if (o.showPaginationSwitch) {
html.push("
\n ").concat(o.showButtonIcons ? Utils.sprintf(this.constants.html.icon, o.iconsPrefix, o.icons.paginationSwitchDown) : '', "\n ").concat(o.showButtonText ? o.formatPaginationSwitchUp() : '', "\n "));
}
if (o.showRefresh) {
html.push("
\n ").concat(o.showButtonIcons ? Utils.sprintf(this.constants.html.icon, o.iconsPrefix, o.icons.refresh) : '', "\n ").concat(o.showButtonText ? o.formatRefresh() : '', "\n "));
}
if (o.showToggle) {
html.push("
\n ").concat(o.showButtonIcons ? Utils.sprintf(this.constants.html.icon, o.iconsPrefix, o.icons.toggleOff) : '', "\n ").concat(o.showButtonText ? o.formatToggleOn() : '', "\n "));
}
if (o.showFullscreen) {
html.push("
\n ").concat(o.showButtonIcons ? Utils.sprintf(this.constants.html.icon, o.iconsPrefix, o.icons.fullscreen) : '', "\n ").concat(o.showButtonText ? o.formatFullscreen() : '', "\n "));
}
if (o.showColumns) {
html.push("
\n \n ").concat(o.showButtonIcons ? Utils.sprintf(this.constants.html.icon, o.iconsPrefix, o.icons.columns) : '', "\n ").concat(o.showButtonText ? o.formatColumns() : '', "\n ").concat(this.constants.html.dropdownCaret, "\n \n ").concat(this.constants.html.toolbarDropdown[0]));
if (o.showColumnsToggleAll) {
var allFieldsVisible = this.getVisibleColumns().length === this.columns.length;
html.push(Utils.sprintf(this.constants.html.toolbarDropdownItem, Utils.sprintf(' %s ', allFieldsVisible ? 'checked="checked"' : '', o.formatColumnsToggleAll())));
html.push(this.constants.html.toolbarDropdownSeparator);
}
this.columns.forEach(function (column, i) {
if (column.radio || column.checkbox) {
return;
}
if (o.cardView && !column.cardVisible) {
return;
}
var checked = column.visible ? ' checked="checked"' : '';
if (column.switchable) {
html.push(Utils.sprintf(_this4.constants.html.toolbarDropdownItem, Utils.sprintf(' %s ', column.field, i, checked, column.title)));
switchableCount++;
}
});
html.push(this.constants.html.toolbarDropdown[1], '
');
}
html.push('
'); // Fix #188: this.showToolbar is for extensions
if (this.showToolbar || html.length > 2) {
this.$toolbar.append(html.join(''));
}
if (o.showPaginationSwitch) {
this.$toolbar.find('button[name="paginationSwitch"]').off('click').on('click', function () {
return _this4.togglePagination();
});
}
if (o.showFullscreen) {
this.$toolbar.find('button[name="fullscreen"]').off('click').on('click', function () {
return _this4.toggleFullscreen();
});
}
if (o.showRefresh) {
this.$toolbar.find('button[name="refresh"]').off('click').on('click', function () {
return _this4.refresh();
});
}
if (o.showToggle) {
this.$toolbar.find('button[name="toggle"]').off('click').on('click', function () {
_this4.toggleView();
});
}
if (o.showColumns) {
$keepOpen = this.$toolbar.find('.keep-open');
var $checkboxes = $keepOpen.find('input:not(".toggle-all")');
var $toggleAll = $keepOpen.find('input.toggle-all');
if (switchableCount <= o.minimumCountColumns) {
$keepOpen.find('input').prop('disabled', true);
}
$keepOpen.find('li, label').off('click').on('click', function (e) {
e.stopImmediatePropagation();
});
$checkboxes.off('click').on('click', function (_ref3) {
var currentTarget = _ref3.currentTarget;
var $this = $(currentTarget);
_this4._toggleColumn($this.val(), $this.prop('checked'), false);
_this4.trigger('column-switch', $this.data('field'), $this.prop('checked'));
$toggleAll.prop('checked', $checkboxes.filter(':checked').length === _this4.columns.length);
});
$toggleAll.off('click').on('click', function (_ref4) {
var currentTarget = _ref4.currentTarget;
_this4._toggleAllColumns($(currentTarget).prop('checked'));
});
} // Fix #4516: this.showSearchClearButton is for extensions
if (o.search || this.showSearchClearButton) {
html = [];
var showSearchButton = Utils.sprintf(this.constants.html.searchButton, this.constants.buttonsClass, o.formatSearch(), o.showButtonIcons ? Utils.sprintf(this.constants.html.icon, o.iconsPrefix, o.icons.search) : '', o.showButtonText ? o.formatSearch() : '');
var showSearchClearButton = Utils.sprintf(this.constants.html.searchClearButton, this.constants.buttonsClass, o.formatClearSearch(), o.showButtonIcons ? Utils.sprintf(this.constants.html.icon, o.iconsPrefix, o.icons.clearSearch) : '', o.showButtonText ? o.formatClearSearch() : '');
var searchInputHtml = " ");
var searchInputFinalHtml = searchInputHtml;
if (o.showSearchButton || o.showSearchClearButton) {
var buttonsHtml = (o.showSearchButton ? showSearchButton : '') + (o.showSearchClearButton ? showSearchClearButton : '');
searchInputFinalHtml = o.search ? Utils.sprintf(this.constants.html.inputGroup, searchInputHtml, buttonsHtml) : buttonsHtml;
}
html.push(Utils.sprintf("\n \n %s\n
\n "), searchInputFinalHtml));
this.$toolbar.append(html.join(''));
var $searchInput = this.$toolbar.find('.search input');
var handleInputEvent = function handleInputEvent() {
var eventTriggers = Utils.isIEBrowser() ? 'mouseup' : 'keyup drop blur';
$searchInput.off(eventTriggers).on(eventTriggers, function (event) {
if (o.searchOnEnterKey && event.keyCode !== 13) {
return;
}
if ([37, 38, 39, 40].includes(event.keyCode)) {
return;
}
clearTimeout(timeoutId); // doesn't matter if it's 0
timeoutId = setTimeout(function () {
_this4.onSearch(event);
}, o.searchTimeOut);
});
};
if (o.showSearchButton) {
this.$toolbar.find('.search button[name=search]').off('click').on('click', function (event) {
clearTimeout(timeoutId); // doesn't matter if it's 0
timeoutId = setTimeout(function () {
_this4.onSearch({
currentTarget: $searchInput
});
}, o.searchTimeOut);
});
if (o.searchOnEnterKey) {
handleInputEvent();
}
} else {
handleInputEvent();
}
if (o.showSearchClearButton) {
this.$toolbar.find('.search button[name=clearSearch]').click(function () {
_this4.resetSearch();
});
}
}
}
}, {
key: "onSearch",
value: function onSearch() {
var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
currentTarget = _ref5.currentTarget,
firedByInitSearchText = _ref5.firedByInitSearchText;
var overwriteSearchText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
if (currentTarget !== undefined && $(currentTarget).length && overwriteSearchText) {
var text = $(currentTarget).val().trim();
if (this.options.trimOnSearch && $(currentTarget).val() !== text) {
$(currentTarget).val(text);
}
if (this.searchText === text) {
return;
}
if ($(currentTarget).hasClass('search-input')) {
this.searchText = text;
this.options.searchText = text;
}
}
if (!firedByInitSearchText) {
this.options.pageNumber = 1;
}
this.initSearch();
if (firedByInitSearchText) {
if (this.options.sidePagination === 'client') {
this.updatePagination();
}
} else {
this.updatePagination();
}
this.trigger('search', this.searchText);
}
}, {
key: "initSearch",
value: function initSearch() {
var _this5 = this;
this.filterOptions = this.filterOptions || this.options.filterOptions;
if (this.options.sidePagination !== 'server') {
if (this.options.customSearch) {
this.data = Utils.calculateObjectValue(this.options, this.options.customSearch, [this.options.data, this.searchText, this.filterColumns]);
return;
}
var s = this.searchText && (this.options.escape ? Utils.escapeHTML(this.searchText) : this.searchText).toLowerCase();
var f = Utils.isEmptyObject(this.filterColumns) ? null : this.filterColumns; // Check filter
if (typeof this.filterOptions.filterAlgorithm === 'function') {
this.data = this.options.data.filter(function (item, i) {
return _this5.filterOptions.filterAlgorithm.apply(null, [item, f]);
});
} else if (typeof this.filterOptions.filterAlgorithm === 'string') {
this.data = f ? this.options.data.filter(function (item, i) {
var filterAlgorithm = _this5.filterOptions.filterAlgorithm;
if (filterAlgorithm === 'and') {
for (var key in f) {
if (Array.isArray(f[key]) && !f[key].includes(item[key]) || !Array.isArray(f[key]) && item[key] !== f[key]) {
return false;
}
}
} else if (filterAlgorithm === 'or') {
var match = false;
for (var _key in f) {
if (Array.isArray(f[_key]) && f[_key].includes(item[_key]) || !Array.isArray(f[_key]) && item[_key] === f[_key]) {
match = true;
}
}
return match;
}
return true;
}) : this.options.data;
}
var visibleFields = this.getVisibleFields();
this.data = s ? this.data.filter(function (item, i) {
for (var j = 0; j < _this5.header.fields.length; j++) {
if (!_this5.header.searchables[j] || _this5.options.visibleSearch && visibleFields.indexOf(_this5.header.fields[j]) === -1) {
continue;
}
var key = Utils.isNumeric(_this5.header.fields[j]) ? parseInt(_this5.header.fields[j], 10) : _this5.header.fields[j];
var column = _this5.columns[_this5.fieldsColumnsIndex[key]];
var value = void 0;
if (typeof key === 'string') {
value = item;
var props = key.split('.');
for (var _i = 0; _i < props.length; _i++) {
if (value[props[_i]] !== null) {
value = value[props[_i]];
}
}
} else {
value = item[key];
} // Fix #142: respect searchFormatter boolean
if (column && column.searchFormatter) {
value = Utils.calculateObjectValue(column, _this5.header.formatters[j], [value, item, i, column.field], value);
}
if (typeof value === 'string' || typeof value === 'number') {
if (_this5.options.strictSearch) {
if ("".concat(value).toLowerCase() === s) {
return true;
}
} else {
var largerSmallerEqualsRegex = /(?:(<=|=>|=<|>=|>|<)(?:\s+)?(\d+)?|(\d+)?(\s+)?(<=|=>|=<|>=|>|<))/gm;
var matches = largerSmallerEqualsRegex.exec(s);
var comparisonCheck = false;
if (matches) {
var operator = matches[1] || "".concat(matches[5], "l");
var comparisonValue = matches[2] || matches[3];
var int = parseInt(value, 10);
var comparisonInt = parseInt(comparisonValue, 10);
switch (operator) {
case '>':
case ' comparisonInt;
break;
case '<':
case '>l':
comparisonCheck = int < comparisonInt;
break;
case '<=':
case '=<':
case '>=l':
case '=>l':
comparisonCheck = int <= comparisonInt;
break;
case '>=':
case '=>':
case '<=l':
case '== comparisonInt;
break;
default:
break;
}
}
if (comparisonCheck || "".concat(value).toLowerCase().includes(s)) {
return true;
}
}
}
}
return false;
}) : this.data;
}
}
}, {
key: "initPagination",
value: function initPagination() {
var _this6 = this;
var o = this.options;
if (!o.pagination) {
this.$pagination.hide();
return;
}
this.$pagination.show();
var html = [];
var $allSelected = false;
var i;
var from;
var to;
var $pageList;
var $pre;
var $next;
var $number;
var data = this.getData({
includeHiddenRows: false
});
var pageList = o.pageList;
if (o.sidePagination !== 'server') {
o.totalRows = data.length;
}
this.totalPages = 0;
if (o.totalRows) {
if (o.pageSize === o.formatAllRows()) {
o.pageSize = o.totalRows;
$allSelected = true;
} else if (o.pageSize === o.totalRows) {
// Fix #667 Table with pagination,
// multiple pages and a search this matches to one page throws exception
var pageLst = typeof o.pageList === 'string' ? o.pageList.replace('[', '').replace(']', '').replace(/ /g, '').toLowerCase().split(',') : o.pageList;
if (pageLst.includes(o.formatAllRows().toLowerCase())) {
$allSelected = true;
}
}
this.totalPages = ~~((o.totalRows - 1) / o.pageSize) + 1;
o.totalPages = this.totalPages;
}
if (this.totalPages > 0 && o.pageNumber > this.totalPages) {
o.pageNumber = this.totalPages;
}
this.pageFrom = (o.pageNumber - 1) * o.pageSize + 1;
this.pageTo = o.pageNumber * o.pageSize;
if (this.pageTo > o.totalRows) {
this.pageTo = o.totalRows;
}
if (this.options.pagination && this.options.sidePagination !== 'server') {
this.options.totalNotFiltered = this.options.data.length;
}
if (!this.options.showExtendedPagination) {
this.options.totalNotFiltered = undefined;
}
var paginationInfo = o.onlyInfoPagination ? o.formatDetailPagination(o.totalRows) : o.formatShowingRows(this.pageFrom, this.pageTo, o.totalRows, o.totalNotFiltered);
html.push("\n "));
if (!o.onlyInfoPagination) {
html.push('');
var pageNumber = [""));
html.push(o.formatRecordsPerPage(pageNumber.join('')));
html.push('
');
html.push(""), Utils.sprintf(this.constants.html.pagination[0], Utils.sprintf(' pagination-%s', o.iconSize)), Utils.sprintf(this.constants.html.paginationItem, ' page-pre', o.formatSRPaginationPreText(), o.paginationPreText));
if (this.totalPages < o.paginationSuccessivelySize) {
from = 1;
to = this.totalPages;
} else {
from = o.pageNumber - o.paginationPagesBySide;
to = from + o.paginationPagesBySide * 2;
}
if (o.pageNumber < o.paginationSuccessivelySize - 1) {
to = o.paginationSuccessivelySize;
}
if (o.paginationSuccessivelySize > this.totalPages - from) {
from = from - (o.paginationSuccessivelySize - (this.totalPages - from)) + 1;
}
if (from < 1) {
from = 1;
}
if (to > this.totalPages) {
to = this.totalPages;
}
var middleSize = Math.round(o.paginationPagesBySide / 2);
var pageItem = function pageItem(i) {
var classes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
return Utils.sprintf(_this6.constants.html.paginationItem, classes + (i === o.pageNumber ? " ".concat(_this6.constants.classes.paginationActive) : ''), o.formatSRPaginationPageText(i), i);
};
if (from > 1) {
var max = o.paginationPagesBySide;
if (max >= from) max = from - 1;
for (i = 1; i <= max; i++) {
html.push(pageItem(i));
}
if (from - 1 === max + 1) {
i = from - 1;
html.push(pageItem(i));
} else {
if (from - 1 > max) {
if (from - o.paginationPagesBySide * 2 > o.paginationPagesBySide && o.paginationUseIntermediate) {
i = Math.round((from - middleSize) / 2 + middleSize);
html.push(pageItem(i, ' page-intermediate'));
} else {
html.push(Utils.sprintf(this.constants.html.paginationItem, ' page-first-separator disabled', '', '...'));
}
}
}
}
for (i = from; i <= to; i++) {
html.push(pageItem(i));
}
if (this.totalPages > to) {
var min = this.totalPages - (o.paginationPagesBySide - 1);
if (to >= min) min = to + 1;
if (to + 1 === min - 1) {
i = to + 1;
html.push(pageItem(i));
} else {
if (min > to + 1) {
if (this.totalPages - to > o.paginationPagesBySide * 2 && o.paginationUseIntermediate) {
i = Math.round((this.totalPages - middleSize - to) / 2 + to);
html.push(pageItem(i, ' page-intermediate'));
} else {
html.push(Utils.sprintf(this.constants.html.paginationItem, ' page-last-separator disabled', '', '...'));
}
}
}
for (i = min; i <= this.totalPages; i++) {
html.push(pageItem(i));
}
}
html.push(Utils.sprintf(this.constants.html.paginationItem, ' page-next', o.formatSRPaginationNextText(), o.paginationNextText));
html.push(this.constants.html.pagination[1], '
');
}
this.$pagination.html(html.join(''));
var dropupClass = ['bottom', 'both'].includes(o.paginationVAlign) ? " ".concat(this.constants.classes.dropup) : '';
this.$pagination.last().find('.page-list > span').addClass(dropupClass);
if (!o.onlyInfoPagination) {
$pageList = this.$pagination.find('.page-list a');
$pre = this.$pagination.find('.page-pre');
$next = this.$pagination.find('.page-next');
$number = this.$pagination.find('.page-item').not('.page-next, .page-pre, .page-last-separator, .page-first-separator');
if (this.totalPages <= 1) {
this.$pagination.find('div.pagination').hide();
}
if (o.smartDisplay) {
if (pageList.length < 2 || o.totalRows <= pageList[0]) {
this.$pagination.find('span.page-list').hide();
}
} // when data is empty, hide the pagination
this.$pagination[this.getData().length ? 'show' : 'hide']();
if (!o.paginationLoop) {
if (o.pageNumber === 1) {
$pre.addClass('disabled');
}
if (o.pageNumber === this.totalPages) {
$next.addClass('disabled');
}
}
if ($allSelected) {
o.pageSize = o.formatAllRows();
} // removed the events for last and first, onPageNumber executeds the same logic
$pageList.off('click').on('click', function (e) {
return _this6.onPageListChange(e);
});
$pre.off('click').on('click', function (e) {
return _this6.onPagePre(e);
});
$next.off('click').on('click', function (e) {
return _this6.onPageNext(e);
});
$number.off('click').on('click', function (e) {
return _this6.onPageNumber(e);
});
}
}
}, {
key: "updatePagination",
value: function updatePagination(event) {
// Fix #171: IE disabled button can be clicked bug.
if (event && $(event.currentTarget).hasClass('disabled')) {
return;
}
if (!this.options.maintainMetaData) {
this.resetRows();
}
this.initPagination();
if (this.options.sidePagination === 'server') {
this.initServer();
} else {
this.initBody();
}
this.trigger('page-change', this.options.pageNumber, this.options.pageSize);
}
}, {
key: "onPageListChange",
value: function onPageListChange(event) {
event.preventDefault();
var $this = $(event.currentTarget);
$this.parent().addClass(this.constants.classes.dropdownActive).siblings().removeClass(this.constants.classes.dropdownActive);
this.options.pageSize = $this.text().toUpperCase() === this.options.formatAllRows().toUpperCase() ? this.options.formatAllRows() : +$this.text();
this.$toolbar.find('.page-size').text(this.options.pageSize);
this.updatePagination(event);
return false;
}
}, {
key: "onPagePre",
value: function onPagePre(event) {
event.preventDefault();
if (this.options.pageNumber - 1 === 0) {
this.options.pageNumber = this.options.totalPages;
} else {
this.options.pageNumber--;
}
this.updatePagination(event);
return false;
}
}, {
key: "onPageNext",
value: function onPageNext(event) {
event.preventDefault();
if (this.options.pageNumber + 1 > this.options.totalPages) {
this.options.pageNumber = 1;
} else {
this.options.pageNumber++;
}
this.updatePagination(event);
return false;
}
}, {
key: "onPageNumber",
value: function onPageNumber(event) {
event.preventDefault();
if (this.options.pageNumber === +$(event.currentTarget).text()) {
return;
}
this.options.pageNumber = +$(event.currentTarget).text();
this.updatePagination(event);
return false;
}
}, {
key: "initRow",
value: function initRow(item, i, data, trFragments) {
var _this7 = this;
var html = [];
var style = {};
var csses = [];
var data_ = '';
var attributes = {};
var htmlAttributes = [];
if (Utils.findIndex(this.hiddenRows, item) > -1) {
return;
}
style = Utils.calculateObjectValue(this.options, this.options.rowStyle, [item, i], style);
if (style && style.css) {
for (var _i2 = 0, _Object$entries = Object.entries(style.css); _i2 < _Object$entries.length; _i2++) {
var _Object$entries$_i = _slicedToArray(_Object$entries[_i2], 2),
key = _Object$entries$_i[0],
value = _Object$entries$_i[1];
csses.push("".concat(key, ": ").concat(value));
}
}
attributes = Utils.calculateObjectValue(this.options, this.options.rowAttributes, [item, i], attributes);
if (attributes) {
for (var _i3 = 0, _Object$entries2 = Object.entries(attributes); _i3 < _Object$entries2.length; _i3++) {
var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i3], 2),
key = _Object$entries2$_i[0],
value = _Object$entries2$_i[1];
htmlAttributes.push("".concat(key, "=\"").concat(Utils.escapeHTML(value), "\""));
}
}
if (item._data && !Utils.isEmptyObject(item._data)) {
for (var _i4 = 0, _Object$entries3 = Object.entries(item._data); _i4 < _Object$entries3.length; _i4++) {
var _Object$entries3$_i = _slicedToArray(_Object$entries3[_i4], 2),
k = _Object$entries3$_i[0],
v = _Object$entries3$_i[1];
// ignore data-index
if (k === 'index') {
return;
}
data_ += " data-".concat(k, "='").concat(_typeof(v) === 'object' ? JSON.stringify(v) : v, "'");
}
}
html.push('');
if (this.options.cardView) {
html.push(""));
}
if (!this.options.cardView && this.options.detailView && this.options.detailViewIcon) {
html.push('
');
if (Utils.calculateObjectValue(null, this.options.detailFilter, [i, item])) {
html.push("\n \n ".concat(Utils.sprintf(this.constants.html.icon, this.options.iconsPrefix, this.options.icons.detailOpen), "\n \n "));
}
html.push(' ');
}
this.header.fields.forEach(function (field, j) {
var text = '';
var value_ = Utils.getItemField(item, field, _this7.options.escape);
var value = '';
var type = '';
var cellStyle = {};
var id_ = '';
var class_ = _this7.header.classes[j];
var style_ = '';
var data_ = '';
var rowspan_ = '';
var colspan_ = '';
var title_ = '';
var column = _this7.columns[j];
if (_this7.fromHtml && typeof value_ === 'undefined') {
if (!column.checkbox && !column.radio) {
return;
}
}
if (!column.visible) {
return;
}
if (_this7.options.cardView && !column.cardVisible) {
return;
}
if (column.escape) {
value_ = Utils.escapeHTML(value_);
}
if (csses.concat([_this7.header.styles[j]]).length) {
style_ = " style=\"".concat(csses.concat([_this7.header.styles[j]]).join('; '), "\"");
} // handle td's id and class
if (item["_".concat(field, "_id")]) {
id_ = Utils.sprintf(' id="%s"', item["_".concat(field, "_id")]);
}
if (item["_".concat(field, "_class")]) {
class_ = Utils.sprintf(' class="%s"', item["_".concat(field, "_class")]);
}
if (item["_".concat(field, "_rowspan")]) {
rowspan_ = Utils.sprintf(' rowspan="%s"', item["_".concat(field, "_rowspan")]);
}
if (item["_".concat(field, "_colspan")]) {
colspan_ = Utils.sprintf(' colspan="%s"', item["_".concat(field, "_colspan")]);
}
if (item["_".concat(field, "_title")]) {
title_ = Utils.sprintf(' title="%s"', item["_".concat(field, "_title")]);
}
cellStyle = Utils.calculateObjectValue(_this7.header, _this7.header.cellStyles[j], [value_, item, i, field], cellStyle);
if (cellStyle.classes) {
class_ = " class=\"".concat(cellStyle.classes, "\"");
}
if (cellStyle.css) {
var csses_ = [];
for (var _i5 = 0, _Object$entries4 = Object.entries(cellStyle.css); _i5 < _Object$entries4.length; _i5++) {
var _Object$entries4$_i = _slicedToArray(_Object$entries4[_i5], 2),
key = _Object$entries4$_i[0],
_value = _Object$entries4$_i[1];
csses_.push("".concat(key, ": ").concat(_value));
}
style_ = " style=\"".concat(csses_.concat(_this7.header.styles[j]).join('; '), "\"");
}
value = Utils.calculateObjectValue(column, _this7.header.formatters[j], [value_, item, i, field], value_);
if (item["_".concat(field, "_data")] && !Utils.isEmptyObject(item["_".concat(field, "_data")])) {
for (var _i6 = 0, _Object$entries5 = Object.entries(item["_".concat(field, "_data")]); _i6 < _Object$entries5.length; _i6++) {
var _Object$entries5$_i = _slicedToArray(_Object$entries5[_i6], 2),
k = _Object$entries5$_i[0],
v = _Object$entries5$_i[1];
// ignore data-index
if (k === 'index') {
return;
}
data_ += " data-".concat(k, "=\"").concat(v, "\"");
}
}
if (column.checkbox || column.radio) {
type = column.checkbox ? 'checkbox' : type;
type = column.radio ? 'radio' : type;
var c = column['class'] || '';
var isChecked = (value === true || value_ || value && value.checked) && value !== false;
var isDisabled = !column.checkboxEnabled || value && value.disabled;
text = [_this7.options.cardView ? "
") : "
"), "\n \n \n "), _this7.header.formatters[j] && typeof value === 'string' ? value : '', _this7.options.cardView ? '' : ' '].join('');
item[_this7.header.stateField] = value === true || !!value_ || value && value.checked;
} else {
value = typeof value === 'undefined' || value === null ? _this7.options.undefinedText : value;
if (_this7.options.cardView) {
var cardTitle = _this7.options.showHeader ? "
").concat(Utils.getFieldTitle(_this7.columns, field), " ") : '';
text = "
".concat(cardTitle, "").concat(value, "
");
if (_this7.options.smartDisplay && value === '') {
text = '
';
}
} else {
text = "
").concat(value, " ");
}
}
html.push(text);
});
if (this.options.cardView) {
html.push('
');
}
html.push(' ');
return html.join('');
}
}, {
key: "initBody",
value: function initBody(fixedScroll) {
var _this8 = this;
var data = this.getData();
this.trigger('pre-body', data);
this.$body = this.$el.find('>tbody');
if (!this.$body.length) {
this.$body = $(' ').appendTo(this.$el);
} // Fix #389 Bootstrap-table-flatJSON is not working
if (!this.options.pagination || this.options.sidePagination === 'server') {
this.pageFrom = 1;
this.pageTo = data.length;
}
var rows = [];
var trFragments = $(document.createDocumentFragment());
var hasTr = false;
for (var i = this.pageFrom - 1; i < this.pageTo; i++) {
var item = data[i];
var tr = this.initRow(item, i, data, trFragments);
hasTr = hasTr || !!tr;
if (tr && typeof tr === 'string') {
if (!this.options.virtualScroll) {
trFragments.append(tr);
} else {
rows.push(tr);
}
}
} // show no records
if (!hasTr) {
this.$body.html("".concat(Utils.sprintf('%s ', this.$header.find('th').length, this.options.formatNoMatches()), " "));
} else {
if (!this.options.virtualScroll) {
this.$body.html(trFragments);
} else {
if (this.virtualScroll) {
this.virtualScroll.destroy();
}
this.virtualScroll = new VirtualScroll({
rows: rows,
fixedScroll: fixedScroll,
scrollEl: this.$tableBody[0],
contentEl: this.$body[0],
itemHeight: this.options.virtualScrollItemHeight,
callback: function callback() {
_this8.fitHeader();
_this8.initBodyEvent();
}
});
}
}
if (!fixedScroll) {
this.scrollTo(0);
}
this.initBodyEvent();
this.updateSelected();
this.initFooter();
this.resetView();
if (this.options.sidePagination !== 'server') {
this.options.totalRows = data.length;
}
this.trigger('post-body', data);
}
}, {
key: "initBodyEvent",
value: function initBodyEvent() {
var _this9 = this;
// click to select by column
this.$body.find('> tr[data-index] > td').off('click dblclick').on('click dblclick', function (e) {
var $td = $(e.currentTarget);
var $tr = $td.parent();
var $cardViewArr = $(e.target).parents('.card-views').children();
var $cardViewTarget = $(e.target).parents('.card-view');
var rowIndex = $tr.data('index');
var item = _this9.data[rowIndex];
var index = _this9.options.cardView ? $cardViewArr.index($cardViewTarget) : $td[0].cellIndex;
var fields = _this9.getVisibleFields();
var field = fields[_this9.options.detailView && _this9.options.detailViewIcon && !_this9.options.cardView ? index - 1 : index];
var column = _this9.columns[_this9.fieldsColumnsIndex[field]];
var value = Utils.getItemField(item, field, _this9.options.escape);
if ($td.find('.detail-icon').length) {
return;
}
_this9.trigger(e.type === 'click' ? 'click-cell' : 'dbl-click-cell', field, value, item, $td);
_this9.trigger(e.type === 'click' ? 'click-row' : 'dbl-click-row', item, $tr, field); // if click to select - then trigger the checkbox/radio click
if (e.type === 'click' && _this9.options.clickToSelect && column.clickToSelect && !Utils.calculateObjectValue(_this9.options, _this9.options.ignoreClickToSelectOn, [e.target])) {
var $selectItem = $tr.find(Utils.sprintf('[name="%s"]', _this9.options.selectItemName));
if ($selectItem.length) {
$selectItem[0].click();
}
}
if (e.type === 'click' && _this9.options.detailViewByClick) {
_this9.toggleDetailView(rowIndex, _this9.header.detailFormatters[_this9.fieldsColumnsIndex[field]]);
}
}).off('mousedown').on('mousedown', function (e) {
// https://github.com/jquery/jquery/issues/1741
_this9.multipleSelectRowCtrlKey = e.ctrlKey || e.metaKey;
_this9.multipleSelectRowShiftKey = e.shiftKey;
});
this.$body.find('> tr[data-index] > td > .detail-icon').off('click').on('click', function (e) {
e.preventDefault();
_this9.toggleDetailView($(e.currentTarget).parent().parent().data('index'));
return false;
});
this.$selectItem = this.$body.find(Utils.sprintf('[name="%s"]', this.options.selectItemName));
this.$selectItem.off('click').on('click', function (e) {
e.stopImmediatePropagation();
var $this = $(e.currentTarget);
_this9._toggleCheck($this.prop('checked'), $this.data('index'));
});
this.header.events.forEach(function (_events, i) {
var events = _events;
if (!events) {
return;
} // fix bug, if events is defined with namespace
if (typeof events === 'string') {
events = Utils.calculateObjectValue(null, events);
}
var field = _this9.header.fields[i];
var fieldIndex = _this9.getVisibleFields().indexOf(field);
if (fieldIndex === -1) {
return;
}
if (_this9.options.detailView && !_this9.options.cardView) {
fieldIndex += 1;
}
var _loop = function _loop(key) {
if (!events.hasOwnProperty(key)) {
return "continue";
}
var event = events[key];
_this9.$body.find('>tr:not(.no-records-found)').each(function (i, tr) {
var $tr = $(tr);
var $td = $tr.find(_this9.options.cardView ? '.card-views>.card-view' : '>td').eq(fieldIndex);
var index = key.indexOf(' ');
var name = key.substring(0, index);
var el = key.substring(index + 1);
$td.find(el).off(name).on(name, function (e) {
var index = $tr.data('index');
var row = _this9.data[index];
var value = row[field];
event.apply(_this9, [e, value, row, index]);
});
});
};
for (var key in events) {
var _ret = _loop(key);
if (_ret === "continue") continue;
}
});
}
}, {
key: "initServer",
value: function initServer(silent, query, url) {
var _this10 = this;
var data = {};
var index = this.header.fields.indexOf(this.options.sortName);
var params = {
searchText: this.searchText,
sortName: this.options.sortName,
sortOrder: this.options.sortOrder
};
if (this.header.sortNames[index]) {
params.sortName = this.header.sortNames[index];
}
if (this.options.pagination && this.options.sidePagination === 'server') {
params.pageSize = this.options.pageSize === this.options.formatAllRows() ? this.options.totalRows : this.options.pageSize;
params.pageNumber = this.options.pageNumber;
}
if (!(url || this.options.url) && !this.options.ajax) {
return;
}
if (this.options.queryParamsType === 'limit') {
params = {
search: params.searchText,
sort: params.sortName,
order: params.sortOrder
};
if (this.options.pagination && this.options.sidePagination === 'server') {
params.offset = this.options.pageSize === this.options.formatAllRows() ? 0 : this.options.pageSize * (this.options.pageNumber - 1);
params.limit = this.options.pageSize === this.options.formatAllRows() ? this.options.totalRows : this.options.pageSize;
if (params.limit === 0) {
delete params.limit;
}
}
}
if (!Utils.isEmptyObject(this.filterColumnsPartial)) {
params.filter = JSON.stringify(this.filterColumnsPartial, null);
}
$.extend(params, query || {});
data = Utils.calculateObjectValue(this.options, this.options.queryParams, [params], data); // false to stop request
if (data === false) {
return;
}
if (!silent) {
this.showLoading();
}
var request = $.extend({}, Utils.calculateObjectValue(null, this.options.ajaxOptions), {
type: this.options.method,
url: url || this.options.url,
data: this.options.contentType === 'application/json' && this.options.method === 'post' ? JSON.stringify(data) : data,
cache: this.options.cache,
contentType: this.options.contentType,
dataType: this.options.dataType,
success: function success(_res, textStatus, jqXHR) {
var res = Utils.calculateObjectValue(_this10.options, _this10.options.responseHandler, [_res, jqXHR], _res);
_this10.load(res);
_this10.trigger('load-success', res, jqXHR.status, jqXHR);
if (!silent) {
_this10.hideLoading();
}
},
error: function error(jqXHR) {
var data = [];
if (_this10.options.sidePagination === 'server') {
data = {};
data[_this10.options.totalField] = 0;
data[_this10.options.dataField] = [];
}
_this10.load(data);
_this10.trigger('load-error', jqXHR.status, jqXHR);
if (!silent) _this10.$tableLoading.hide();
}
});
if (this.options.ajax) {
Utils.calculateObjectValue(this, this.options.ajax, [request], null);
} else {
if (this._xhr && this._xhr.readyState !== 4) {
this._xhr.abort();
}
this._xhr = $.ajax(request);
}
return data;
}
}, {
key: "initSearchText",
value: function initSearchText() {
if (this.options.search) {
this.searchText = '';
if (this.options.searchText !== '') {
var $search = this.$toolbar.find('.search input');
$search.val(this.options.searchText);
this.onSearch({
currentTarget: $search,
firedByInitSearchText: true
});
}
}
}
}, {
key: "getCaret",
value: function getCaret() {
var _this11 = this;
this.$header.find('th').each(function (i, th) {
$(th).find('.sortable').removeClass('desc asc').addClass($(th).data('field') === _this11.options.sortName ? _this11.options.sortOrder : 'both');
});
}
}, {
key: "updateSelected",
value: function updateSelected() {
var checkAll = this.$selectItem.filter(':enabled').length && this.$selectItem.filter(':enabled').length === this.$selectItem.filter(':enabled').filter(':checked').length;
this.$selectAll.add(this.$selectAll_).prop('checked', checkAll);
this.$selectItem.each(function (i, el) {
$(el).closest('tr')[$(el).prop('checked') ? 'addClass' : 'removeClass']('selected');
});
}
}, {
key: "updateRows",
value: function updateRows() {
var _this12 = this;
this.$selectItem.each(function (i, el) {
_this12.data[$(el).data('index')][_this12.header.stateField] = $(el).prop('checked');
});
}
}, {
key: "resetRows",
value: function resetRows() {
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = this.data[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var row = _step2.value;
this.$selectAll.prop('checked', false);
this.$selectItem.prop('checked', false);
if (this.header.stateField) {
row[this.header.stateField] = false;
}
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
this.initHiddenRows();
}
}, {
key: "trigger",
value: function trigger(_name) {
var _this$options;
var name = "".concat(_name, ".bs.table");
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key2 = 1; _key2 < _len; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
(_this$options = this.options)[BootstrapTable.EVENTS[name]].apply(_this$options, args);
this.$el.trigger($.Event(name), args);
this.options.onAll(name, args);
this.$el.trigger($.Event('all.bs.table'), [name, args]);
}
}, {
key: "resetHeader",
value: function resetHeader() {
var _this13 = this;
// fix #61: the hidden table reset header bug.
// fix bug: get $el.css('width') error sometime (height = 500)
clearTimeout(this.timeoutId_);
this.timeoutId_ = setTimeout(function () {
return _this13.fitHeader();
}, this.$el.is(':hidden') ? 100 : 0);
}
}, {
key: "fitHeader",
value: function fitHeader() {
var _this14 = this;
if (this.$el.is(':hidden')) {
this.timeoutId_ = setTimeout(function () {
return _this14.fitHeader();
}, 100);
return;
}
var fixedBody = this.$tableBody.get(0);
var scrollWidth = fixedBody.scrollWidth > fixedBody.clientWidth && fixedBody.scrollHeight > fixedBody.clientHeight + this.$header.outerHeight() ? Utils.getScrollBarWidth() : 0;
this.$el.css('margin-top', -this.$header.outerHeight());
var focused = $(':focus');
if (focused.length > 0) {
var $th = focused.parents('th');
if ($th.length > 0) {
var dataField = $th.attr('data-field');
if (dataField !== undefined) {
var $headerTh = this.$header.find("[data-field='".concat(dataField, "']"));
if ($headerTh.length > 0) {
$headerTh.find(':input').addClass('focus-temp');
}
}
}
}
this.$header_ = this.$header.clone(true, true);
this.$selectAll_ = this.$header_.find('[name="btSelectAll"]');
this.$tableHeader.css('margin-right', scrollWidth).find('table').css('width', this.$el.outerWidth()).html('').attr('class', this.$el.attr('class')).append(this.$header_);
this.$tableLoading.css('width', this.$el.outerWidth());
var focusedTemp = $('.focus-temp:visible:eq(0)');
if (focusedTemp.length > 0) {
focusedTemp.focus();
this.$header.find('.focus-temp').removeClass('focus-temp');
} // fix bug: $.data() is not working as expected after $.append()
this.$header.find('th[data-field]').each(function (i, el) {
_this14.$header_.find(Utils.sprintf('th[data-field="%s"]', $(el).data('field'))).data($(el).data());
});
var visibleFields = this.getVisibleFields();
var $ths = this.$header_.find('th');
var $tr = this.$body.find('>tr:not(.no-records-found,.virtual-scroll-top)').eq(0);
while ($tr.length && $tr.find('>td[colspan]:not([colspan="1"])').length) {
$tr = $tr.next();
}
$tr.find('> *').each(function (i, el) {
var $this = $(el);
var index = i;
if (_this14.options.detailView && _this14.options.detailViewIcon && !_this14.options.cardView) {
if (i === 0) {
var $thDetail = $ths.filter('.detail');
var _zoomWidth = $thDetail.innerWidth() - $thDetail.find('.fht-cell').width();
$thDetail.find('.fht-cell').width($this.innerWidth() - _zoomWidth);
}
index = i - 1;
}
if (index === -1) {
return;
}
var $th = _this14.$header_.find(Utils.sprintf('th[data-field="%s"]', visibleFields[index]));
if ($th.length > 1) {
$th = $($ths[$this[0].cellIndex]);
}
var zoomWidth = $th.innerWidth() - $th.find('.fht-cell').width();
$th.find('.fht-cell').width($this.innerWidth() - zoomWidth);
});
this.horizontalScroll();
this.trigger('post-header');
}
}, {
key: "initFooter",
value: function initFooter() {
if (!this.options.showFooter || this.options.cardView) {
// do nothing
return;
}
var data = this.getData();
var html = [];
if (!this.options.cardView && this.options.detailView && this.options.detailViewIcon) {
html.push('
');
}
var _iteratorNormalCompletion3 = true;
var _didIteratorError3 = false;
var _iteratorError3 = undefined;
try {
for (var _iterator3 = this.columns[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
var column = _step3.value;
var falign = '';
var valign = '';
var csses = [];
var style = {};
var class_ = Utils.sprintf(' class="%s"', column['class']);
if (!column.visible) {
continue;
}
if (this.options.cardView && !column.cardVisible) {
return;
}
falign = Utils.sprintf('text-align: %s; ', column.falign ? column.falign : column.align);
valign = Utils.sprintf('vertical-align: %s; ', column.valign);
style = Utils.calculateObjectValue(null, this.options.footerStyle, [column]);
if (style && style.css) {
for (var _i7 = 0, _Object$entries6 = Object.entries(style.css); _i7 < _Object$entries6.length; _i7++) {
var _Object$entries6$_i = _slicedToArray(_Object$entries6[_i7], 2),
key = _Object$entries6$_i[0],
value = _Object$entries6$_i[1];
csses.push("".concat(key, ": ").concat(value));
}
}
if (style && style.classes) {
class_ = Utils.sprintf(' class="%s"', column['class'] ? [column['class'], style.classes].join(' ') : style.classes);
}
html.push('');
html.push('');
html.push(Utils.calculateObjectValue(column, column.footerFormatter, [data], this.footerData[0] && this.footerData[0][column.field] || ''));
html.push('
');
html.push('
');
html.push('');
html.push(' ');
}
} catch (err) {
_didIteratorError3 = true;
_iteratorError3 = err;
} finally {
try {
if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
_iterator3.return();
}
} finally {
if (_didIteratorError3) {
throw _iteratorError3;
}
}
}
this.$tableFooter.find('tr').html(html.join(''));
this.trigger('post-footer', this.$tableFooter);
}
}, {
key: "fitFooter",
value: function fitFooter() {
var _this15 = this;
if (this.$el.is(':hidden')) {
setTimeout(function () {
return _this15.fitFooter();
}, 100);
return;
}
var fixedBody = this.$tableBody.get(0);
var scrollWidth = fixedBody.scrollWidth > fixedBody.clientWidth && fixedBody.scrollHeight > fixedBody.clientHeight + this.$header.outerHeight() ? Utils.getScrollBarWidth() : 0;
this.$tableFooter.css('margin-right', scrollWidth).find('table').css('width', this.$el.outerWidth()).attr('class', this.$el.attr('class'));
var visibleFields = this.getVisibleFields();
var $ths = this.$tableFooter.find('th');
var $tr = this.$body.find('>tr:first-child:not(.no-records-found)');
while ($tr.length && $tr.find('>td[colspan]:not([colspan="1"])').length) {
$tr = $tr.next();
}
$tr.find('> *').each(function (i, el) {
var $this = $(el);
var index = i;
if (_this15.options.detailView && !_this15.options.cardView) {
if (i === 0) {
var $thDetail = $ths.filter('.detail');
var _zoomWidth2 = $thDetail.innerWidth() - $thDetail.find('.fht-cell').width();
$thDetail.find('.fht-cell').width($this.innerWidth() - _zoomWidth2);
}
index = i - 1;
}
if (index === -1) {
return;
}
var $th = $ths.eq(i);
var zoomWidth = $th.innerWidth() - $th.find('.fht-cell').width();
$th.find('.fht-cell').width($this.innerWidth() - zoomWidth);
});
this.horizontalScroll();
}
}, {
key: "horizontalScroll",
value: function horizontalScroll() {
var _this16 = this;
// horizontal scroll event
// TODO: it's probably better improving the layout than binding to scroll event
this.$tableBody.off('scroll').on('scroll', function (_ref6) {
var currentTarget = _ref6.currentTarget;
if (_this16.options.showHeader && _this16.options.height) {
_this16.$tableHeader.scrollLeft($(currentTarget).scrollLeft());
}
if (_this16.options.showFooter && !_this16.options.cardView) {
_this16.$tableFooter.scrollLeft($(currentTarget).scrollLeft());
}
_this16.trigger('scroll-body', $(currentTarget));
});
}
}, {
key: "getVisibleFields",
value: function getVisibleFields() {
var visibleFields = [];
var _iteratorNormalCompletion4 = true;
var _didIteratorError4 = false;
var _iteratorError4 = undefined;
try {
for (var _iterator4 = this.header.fields[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
var field = _step4.value;
var column = this.columns[this.fieldsColumnsIndex[field]];
if (!column || !column.visible) {
continue;
}
visibleFields.push(field);
}
} catch (err) {
_didIteratorError4 = true;
_iteratorError4 = err;
} finally {
try {
if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
_iterator4.return();
}
} finally {
if (_didIteratorError4) {
throw _iteratorError4;
}
}
}
return visibleFields;
}
}, {
key: "initHiddenRows",
value: function initHiddenRows() {
this.hiddenRows = [];
} // PUBLIC FUNCTION DEFINITION
// =======================
}, {
key: "getOptions",
value: function getOptions() {
// deep copy and remove data
var options = $.extend({}, this.options);
delete options.data;
return $.extend(true, {}, options);
}
}, {
key: "refreshOptions",
value: function refreshOptions(options) {
// If the objects are equivalent then avoid the call of destroy / init methods
if (Utils.compareObjects(this.options, options, true)) {
return;
}
this.options = $.extend(this.options, options);
this.trigger('refresh-options', this.options);
this.destroy();
this.init();
}
}, {
key: "getData",
value: function getData(params) {
var data = this.options.data;
if (this.searchText || this.options.sortName || !Utils.isEmptyObject(this.filterColumns) || !Utils.isEmptyObject(this.filterColumnsPartial)) {
data = this.data;
}
if (params && params.useCurrentPage) {
data = data.slice(this.pageFrom - 1, this.pageTo);
}
if (params && !params.includeHiddenRows) {
var hiddenRows = this.getHiddenRows();
data = data.filter(function (row) {
return Utils.findIndex(hiddenRows, row) === -1;
});
}
return data;
}
}, {
key: "getSelections",
value: function getSelections() {
var _this17 = this;
// fix #2424: from html with checkbox
return this.data.filter(function (row) {
return row[_this17.header.stateField] === true;
});
}
}, {
key: "getAllSelections",
value: function getAllSelections() {
var _this18 = this;
return this.options.data.filter(function (row) {
return row[_this18.header.stateField] === true;
});
}
}, {
key: "load",
value: function load(_data) {
var fixedScroll = false;
var data = _data; // #431: support pagination
if (this.options.pagination && this.options.sidePagination === 'server') {
this.options.totalRows = data[this.options.totalField];
}
if (this.options.pagination && this.options.sidePagination === 'server') {
this.options.totalNotFiltered = data[this.options.totalNotFilteredField];
}
fixedScroll = data.fixedScroll;
data = Array.isArray(data) ? data : data[this.options.dataField];
this.initData(data);
this.initSearch();
this.initPagination();
this.initBody(fixedScroll);
}
}, {
key: "append",
value: function append(data) {
this.initData(data, 'append');
this.initSearch();
this.initPagination();
this.initSort();
this.initBody(true);
}
}, {
key: "prepend",
value: function prepend(data) {
this.initData(data, 'prepend');
this.initSearch();
this.initPagination();
this.initSort();
this.initBody(true);
}
}, {
key: "remove",
value: function remove(params) {
var len = this.options.data.length;
var i;
var row;
if (!params.hasOwnProperty('field') || !params.hasOwnProperty('values')) {
return;
}
for (i = len - 1; i >= 0; i--) {
row = this.options.data[i];
if (!row.hasOwnProperty(params.field)) {
continue;
}
if (params.values.includes(row[params.field])) {
this.options.data.splice(i, 1);
if (this.options.sidePagination === 'server') {
this.options.totalRows -= 1;
}
}
}
if (len === this.options.data.length) {
return;
}
this.initSearch();
this.initPagination();
this.initSort();
this.initBody(true);
}
}, {
key: "removeAll",
value: function removeAll() {
if (this.options.data.length > 0) {
this.options.data.splice(0, this.options.data.length);
this.initSearch();
this.initPagination();
this.initBody(true);
}
}
}, {
key: "insertRow",
value: function insertRow(params) {
if (!params.hasOwnProperty('index') || !params.hasOwnProperty('row')) {
return;
}
this.options.data.splice(params.index, 0, params.row);
this.initSearch();
this.initPagination();
this.initSort();
this.initBody(true);
}
}, {
key: "updateRow",
value: function updateRow(params) {
var allParams = Array.isArray(params) ? params : [params];
var _iteratorNormalCompletion5 = true;
var _didIteratorError5 = false;
var _iteratorError5 = undefined;
try {
for (var _iterator5 = allParams[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
var _params = _step5.value;
if (!_params.hasOwnProperty('index') || !_params.hasOwnProperty('row')) {
continue;
}
$.extend(this.options.data[_params.index], _params.row);
if (_params.hasOwnProperty('replace') && _params.replace) {
this.options.data[_params.index] = _params.row;
} else {
$.extend(this.options.data[_params.index], _params.row);
}
}
} catch (err) {
_didIteratorError5 = true;
_iteratorError5 = err;
} finally {
try {
if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
_iterator5.return();
}
} finally {
if (_didIteratorError5) {
throw _iteratorError5;
}
}
}
this.initSearch();
this.initPagination();
this.initSort();
this.initBody(true);
}
}, {
key: "getRowByUniqueId",
value: function getRowByUniqueId(_id) {
var uniqueId = this.options.uniqueId;
var len = this.options.data.length;
var id = _id;
var dataRow = null;
var i;
var row;
var rowUniqueId;
for (i = len - 1; i >= 0; i--) {
row = this.options.data[i];
if (row.hasOwnProperty(uniqueId)) {
// uniqueId is a column
rowUniqueId = row[uniqueId];
} else if (row._data && row._data.hasOwnProperty(uniqueId)) {
// uniqueId is a row data property
rowUniqueId = row._data[uniqueId];
} else {
continue;
}
if (typeof rowUniqueId === 'string') {
id = id.toString();
} else if (typeof rowUniqueId === 'number') {
if (Number(rowUniqueId) === rowUniqueId && rowUniqueId % 1 === 0) {
id = parseInt(id);
} else if (rowUniqueId === Number(rowUniqueId) && rowUniqueId !== 0) {
id = parseFloat(id);
}
}
if (rowUniqueId === id) {
dataRow = row;
break;
}
}
return dataRow;
}
}, {
key: "updateByUniqueId",
value: function updateByUniqueId(params) {
var allParams = Array.isArray(params) ? params : [params];
var _iteratorNormalCompletion6 = true;
var _didIteratorError6 = false;
var _iteratorError6 = undefined;
try {
for (var _iterator6 = allParams[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
var _params2 = _step6.value;
if (!_params2.hasOwnProperty('id') || !_params2.hasOwnProperty('row')) {
continue;
}
var rowId = this.options.data.indexOf(this.getRowByUniqueId(_params2.id));
if (rowId === -1) {
continue;
}
if (_params2.hasOwnProperty('replace') && _params2.replace) {
this.options.data[rowId] = _params2.row;
} else {
$.extend(this.options.data[rowId], _params2.row);
}
}
} catch (err) {
_didIteratorError6 = true;
_iteratorError6 = err;
} finally {
try {
if (!_iteratorNormalCompletion6 && _iterator6.return != null) {
_iterator6.return();
}
} finally {
if (_didIteratorError6) {
throw _iteratorError6;
}
}
}
this.initSearch();
this.initPagination();
this.initSort();
this.initBody(true);
}
}, {
key: "removeByUniqueId",
value: function removeByUniqueId(id) {
var len = this.options.data.length;
var row = this.getRowByUniqueId(id);
if (row) {
this.options.data.splice(this.options.data.indexOf(row), 1);
}
if (len === this.options.data.length) {
return;
}
this.initSearch();
this.initPagination();
this.initBody(true);
}
}, {
key: "updateCell",
value: function updateCell(params) {
if (!params.hasOwnProperty('index') || !params.hasOwnProperty('field') || !params.hasOwnProperty('value')) {
return;
}
this.data[params.index][params.field] = params.value;
if (params.reinit === false) {
return;
}
this.initSort();
this.initBody(true);
}
}, {
key: "updateCellByUniqueId",
value: function updateCellByUniqueId(params) {
var _this19 = this;
if (!params.hasOwnProperty('id') || !params.hasOwnProperty('field') || !params.hasOwnProperty('value')) {
return;
}
var allParams = Array.isArray(params) ? params : [params];
allParams.forEach(function (_ref7) {
var id = _ref7.id,
field = _ref7.field,
value = _ref7.value;
var rowId = _this19.options.data.indexOf(_this19.getRowByUniqueId(id));
if (rowId === -1) {
return;
}
_this19.options.data[rowId][field] = value;
});
if (params.reinit === false) {
return;
}
this.initSort();
this.initBody(true);
}
}, {
key: "showRow",
value: function showRow(params) {
this._toggleRow(params, true);
}
}, {
key: "hideRow",
value: function hideRow(params) {
this._toggleRow(params, false);
}
}, {
key: "_toggleRow",
value: function _toggleRow(params, visible) {
var row;
if (params.hasOwnProperty('index')) {
row = this.getData()[params.index];
} else if (params.hasOwnProperty('uniqueId')) {
row = this.getRowByUniqueId(params.uniqueId);
}
if (!row) {
return;
}
var index = Utils.findIndex(this.hiddenRows, row);
if (!visible && index === -1) {
this.hiddenRows.push(row);
} else if (visible && index > -1) {
this.hiddenRows.splice(index, 1);
}
if (visible) {
this.updatePagination();
} else {
this.initBody(true);
this.initPagination();
}
}
}, {
key: "getHiddenRows",
value: function getHiddenRows(show) {
if (show) {
this.initHiddenRows();
this.initBody(true);
return;
}
var data = this.getData();
var rows = [];
var _iteratorNormalCompletion7 = true;
var _didIteratorError7 = false;
var _iteratorError7 = undefined;
try {
for (var _iterator7 = data[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {
var row = _step7.value;
if (this.hiddenRows.includes(row)) {
rows.push(row);
}
}
} catch (err) {
_didIteratorError7 = true;
_iteratorError7 = err;
} finally {
try {
if (!_iteratorNormalCompletion7 && _iterator7.return != null) {
_iterator7.return();
}
} finally {
if (_didIteratorError7) {
throw _iteratorError7;
}
}
}
this.hiddenRows = rows;
return rows;
}
}, {
key: "showColumn",
value: function showColumn(field) {
var _this20 = this;
var fields = Array.isArray(field) ? field : [field];
fields.forEach(function (field) {
_this20._toggleColumn(_this20.fieldsColumnsIndex[field], true, true);
});
}
}, {
key: "hideColumn",
value: function hideColumn(field) {
var _this21 = this;
var fields = Array.isArray(field) ? field : [field];
fields.forEach(function (field) {
_this21._toggleColumn(_this21.fieldsColumnsIndex[field], false, true);
});
}
}, {
key: "_toggleColumn",
value: function _toggleColumn(index, checked, needUpdate) {
if (index === -1 || this.columns[index].visible === checked) {
return;
}
this.columns[index].visible = checked;
this.initHeader();
this.initSearch();
this.initPagination();
this.initBody();
if (this.options.showColumns) {
var $items = this.$toolbar.find('.keep-open input').prop('disabled', false);
if (needUpdate) {
$items.filter(Utils.sprintf('[value="%s"]', index)).prop('checked', checked);
}
if ($items.filter(':checked').length <= this.options.minimumCountColumns) {
$items.filter(':checked').prop('disabled', true);
}
}
}
}, {
key: "getVisibleColumns",
value: function getVisibleColumns() {
return this.columns.filter(function (_ref8) {
var visible = _ref8.visible;
return visible;
});
}
}, {
key: "getHiddenColumns",
value: function getHiddenColumns() {
return this.columns.filter(function (_ref9) {
var visible = _ref9.visible;
return !visible;
});
}
}, {
key: "showAllColumns",
value: function showAllColumns() {
this._toggleAllColumns(true);
}
}, {
key: "hideAllColumns",
value: function hideAllColumns() {
this._toggleAllColumns(false);
}
}, {
key: "_toggleAllColumns",
value: function _toggleAllColumns(visible) {
var _this22 = this;
var _iteratorNormalCompletion8 = true;
var _didIteratorError8 = false;
var _iteratorError8 = undefined;
try {
for (var _iterator8 = this.columns.slice().reverse()[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
var column = _step8.value;
if (column.switchable) {
if (!visible && this.options.showColumns && this.getVisibleColumns().length === this.options.minimumCountColumns) {
continue;
}
column.visible = visible;
}
}
} catch (err) {
_didIteratorError8 = true;
_iteratorError8 = err;
} finally {
try {
if (!_iteratorNormalCompletion8 && _iterator8.return != null) {
_iterator8.return();
}
} finally {
if (_didIteratorError8) {
throw _iteratorError8;
}
}
}
this.initHeader();
this.initSearch();
this.initPagination();
this.initBody();
if (this.options.showColumns) {
var $items = this.$toolbar.find('.keep-open input:not(".toggle-all")').prop('disabled', false);
if (visible) {
$items.prop('checked', visible);
} else {
$items.get().reverse().forEach(function (item) {
if ($items.filter(':checked').length > _this22.options.minimumCountColumns) {
$(item).prop('checked', visible);
}
});
}
if ($items.filter(':checked').length <= this.options.minimumCountColumns) {
$items.filter(':checked').prop('disabled', true);
}
}
}
}, {
key: "mergeCells",
value: function mergeCells(options) {
var row = options.index;
var col = this.getVisibleFields().indexOf(options.field);
var rowspan = options.rowspan || 1;
var colspan = options.colspan || 1;
var i;
var j;
var $tr = this.$body.find('>tr');
if (this.options.detailView && !this.options.cardView) {
col += 1;
}
var $td = $tr.eq(row).find('>td').eq(col);
if (row < 0 || col < 0 || row >= this.data.length) {
return;
}
for (i = row; i < row + rowspan; i++) {
for (j = col; j < col + colspan; j++) {
$tr.eq(i).find('>td').eq(j).hide();
}
}
$td.attr('rowspan', rowspan).attr('colspan', colspan).show();
}
}, {
key: "checkAll",
value: function checkAll() {
this._toggleCheckAll(true);
}
}, {
key: "uncheckAll",
value: function uncheckAll() {
this._toggleCheckAll(false);
}
}, {
key: "_toggleCheckAll",
value: function _toggleCheckAll(checked) {
var rowsBefore = this.getSelections();
this.$selectAll.add(this.$selectAll_).prop('checked', checked);
this.$selectItem.filter(':enabled').prop('checked', checked);
this.updateRows();
var rowsAfter = this.getSelections();
if (checked) {
this.trigger('check-all', rowsAfter, rowsBefore);
return;
}
this.trigger('uncheck-all', rowsAfter, rowsBefore);
}
}, {
key: "checkInvert",
value: function checkInvert() {
var $items = this.$selectItem.filter(':enabled');
var checked = $items.filter(':checked');
$items.each(function (i, el) {
$(el).prop('checked', !$(el).prop('checked'));
});
this.updateRows();
this.updateSelected();
this.trigger('uncheck-some', checked);
checked = this.getSelections();
this.trigger('check-some', checked);
}
}, {
key: "check",
value: function check(index) {
this._toggleCheck(true, index);
}
}, {
key: "uncheck",
value: function uncheck(index) {
this._toggleCheck(false, index);
}
}, {
key: "_toggleCheck",
value: function _toggleCheck(checked, index) {
var $el = this.$selectItem.filter("[data-index=\"".concat(index, "\"]"));
var row = this.data[index];
if ($el.is(':radio') || this.options.singleSelect || this.options.multipleSelectRow && !this.multipleSelectRowCtrlKey && !this.multipleSelectRowShiftKey) {
var _iteratorNormalCompletion9 = true;
var _didIteratorError9 = false;
var _iteratorError9 = undefined;
try {
for (var _iterator9 = this.options.data[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
var r = _step9.value;
r[this.header.stateField] = false;
}
} catch (err) {
_didIteratorError9 = true;
_iteratorError9 = err;
} finally {
try {
if (!_iteratorNormalCompletion9 && _iterator9.return != null) {
_iterator9.return();
}
} finally {
if (_didIteratorError9) {
throw _iteratorError9;
}
}
}
this.$selectItem.filter(':checked').not($el).prop('checked', false);
}
row[this.header.stateField] = checked;
if (this.options.multipleSelectRow) {
if (this.multipleSelectRowShiftKey && this.multipleSelectRowLastSelectedIndex >= 0) {
var indexes = [this.multipleSelectRowLastSelectedIndex, index].sort();
for (var i = indexes[0] + 1; i < indexes[1]; i++) {
this.data[i][this.header.stateField] = true;
this.$selectItem.filter("[data-index=\"".concat(i, "\"]")).prop('checked', true);
}
}
this.multipleSelectRowCtrlKey = false;
this.multipleSelectRowShiftKey = false;
this.multipleSelectRowLastSelectedIndex = checked ? index : -1;
}
$el.prop('checked', checked);
this.updateSelected();
this.trigger(checked ? 'check' : 'uncheck', this.data[index], $el);
}
}, {
key: "checkBy",
value: function checkBy(obj) {
this._toggleCheckBy(true, obj);
}
}, {
key: "uncheckBy",
value: function uncheckBy(obj) {
this._toggleCheckBy(false, obj);
}
}, {
key: "_toggleCheckBy",
value: function _toggleCheckBy(checked, obj) {
var _this23 = this;
if (!obj.hasOwnProperty('field') || !obj.hasOwnProperty('values')) {
return;
}
var rows = [];
this.data.forEach(function (row, i) {
if (!row.hasOwnProperty(obj.field)) {
return false;
}
if (obj.values.includes(row[obj.field])) {
var $el = _this23.$selectItem.filter(':enabled').filter(Utils.sprintf('[data-index="%s"]', i));
$el = checked ? $el.not(':checked') : $el.filter(':checked');
if (!$el.length) {
return;
}
$el.prop('checked', checked);
row[_this23.header.stateField] = checked;
rows.push(row);
_this23.trigger(checked ? 'check' : 'uncheck', row, $el);
}
});
this.updateSelected();
this.trigger(checked ? 'check-some' : 'uncheck-some', rows);
}
}, {
key: "refresh",
value: function refresh(params) {
if (params && params.url) {
this.options.url = params.url;
}
if (params && params.pageNumber) {
this.options.pageNumber = params.pageNumber;
}
if (params && params.pageSize) {
this.options.pageSize = params.pageSize;
}
this.trigger('refresh', this.initServer(params && params.silent, params && params.query, params && params.url));
}
}, {
key: "destroy",
value: function destroy() {
this.$el.insertBefore(this.$container);
$(this.options.toolbar).insertBefore(this.$el);
this.$container.next().remove();
this.$container.remove();
this.$el.html(this.$el_.html()).css('margin-top', '0').attr('class', this.$el_.attr('class') || ''); // reset the class
}
}, {
key: "resetView",
value: function resetView(params) {
var padding = 0;
if (params && params.height) {
this.options.height = params.height;
}
this.$selectAll.prop('checked', this.$selectItem.length > 0 && this.$selectItem.length === this.$selectItem.filter(':checked').length);
this.$tableContainer.toggleClass('has-card-view', this.options.cardView);
if (!this.options.cardView && this.options.showHeader && this.options.height) {
this.$tableHeader.show();
this.resetHeader();
padding += this.$header.outerHeight(true) + 1;
} else {
this.$tableHeader.hide();
this.trigger('post-header');
}
if (!this.options.cardView && this.options.showFooter) {
this.$tableFooter.show();
this.fitFooter();
if (this.options.height) {
padding += this.$tableFooter.outerHeight(true);
}
}
if (this.options.height) {
var toolbarHeight = this.$toolbar.outerHeight(true);
var paginationHeight = this.$pagination.outerHeight(true);
var height = this.options.height - toolbarHeight - paginationHeight;
var tableHeight = this.$tableBody.find('table').outerHeight(true);
this.$tableContainer.css('height', "".concat(height, "px"));
this.$tableBorder && this.$tableBorder.css('height', "".concat(height - tableHeight - padding - 1, "px"));
}
if (this.options.cardView) {
// remove the element css
this.$el.css('margin-top', '0');
this.$tableContainer.css('padding-bottom', '0');
this.$tableFooter.hide();
} else {
// Assign the correct sortable arrow
this.getCaret();
this.$tableContainer.css('padding-bottom', "".concat(padding, "px"));
}
this.trigger('reset-view');
}
}, {
key: "resetWidth",
value: function resetWidth() {
if (this.options.showHeader && this.options.height) {
this.fitHeader();
}
if (this.options.showFooter && !this.options.cardView) {
this.fitFooter();
}
}
}, {
key: "showLoading",
value: function showLoading() {
this.$tableLoading.css('display', 'flex');
}
}, {
key: "hideLoading",
value: function hideLoading() {
this.$tableLoading.css('display', 'none');
}
}, {
key: "togglePagination",
value: function togglePagination() {
this.options.pagination = !this.options.pagination;
var icon = this.options.showButtonIcons ? this.options.pagination ? this.options.icons.paginationSwitchDown : this.options.icons.paginationSwitchUp : '';
var text = this.options.showButtonText ? this.options.pagination ? this.options.formatPaginationSwitchUp() : this.options.formatPaginationSwitchDown() : '';
this.$toolbar.find('button[name="paginationSwitch"]').html(Utils.sprintf(this.constants.html.icon, this.options.iconsPrefix, icon) + ' ' + text);
this.updatePagination();
}
}, {
key: "toggleFullscreen",
value: function toggleFullscreen() {
this.$el.closest('.bootstrap-table').toggleClass('fullscreen');
this.resetView();
}
}, {
key: "toggleView",
value: function toggleView() {
this.options.cardView = !this.options.cardView;
this.initHeader();
var icon = this.options.showButtonIcons ? this.options.cardView ? this.options.icons.toggleOn : this.options.icons.toggleOff : '';
var text = this.options.showButtonText ? this.options.cardView ? this.options.formatToggleOff() : this.options.formatToggleOn() : '';
this.$toolbar.find('button[name="toggle"]').html(Utils.sprintf(this.constants.html.icon, this.options.iconsPrefix, icon) + ' ' + text);
this.initBody();
this.trigger('toggle', this.options.cardView);
}
}, {
key: "resetSearch",
value: function resetSearch(text) {
var $search = this.$toolbar.find('.search input');
$search.val(text || '');
this.onSearch({
currentTarget: $search
});
}
}, {
key: "filterBy",
value: function filterBy(columns, options) {
this.filterOptions = Utils.isEmptyObject(options) ? this.options.filterOptions : $.extend(this.options.filterOptions, options);
this.filterColumns = Utils.isEmptyObject(columns) ? {} : columns;
this.options.pageNumber = 1;
this.initSearch();
this.updatePagination();
}
}, {
key: "scrollTo",
value: function scrollTo(params) {
if (typeof params === 'undefined') {
return this.$tableBody.scrollTop();
}
var options = {
unit: 'px',
value: 0
};
if (_typeof(params) === 'object') {
options = Object.assign(options, params);
} else if (typeof params === 'string' && params === 'bottom') {
options.value = this.$tableBody[0].scrollHeight;
} else if (typeof params === 'string') {
options.value = params;
}
var scrollTo = options.value;
if (options.unit === 'rows') {
scrollTo = 0;
this.$body.find("> tr:lt(".concat(options.value, ")")).each(function (i, el) {
scrollTo += $(el).outerHeight(true);
});
}
this.$tableBody.scrollTop(scrollTo);
}
}, {
key: "getScrollPosition",
value: function getScrollPosition() {
return this.scrollTo();
}
}, {
key: "selectPage",
value: function selectPage(page) {
if (page > 0 && page <= this.options.totalPages) {
this.options.pageNumber = page;
this.updatePagination();
}
}
}, {
key: "prevPage",
value: function prevPage() {
if (this.options.pageNumber > 1) {
this.options.pageNumber--;
this.updatePagination();
}
}
}, {
key: "nextPage",
value: function nextPage() {
if (this.options.pageNumber < this.options.totalPages) {
this.options.pageNumber++;
this.updatePagination();
}
}
}, {
key: "toggleDetailView",
value: function toggleDetailView(index, _columnDetailFormatter) {
var $tr = this.$body.find(Utils.sprintf('> tr[data-index="%s"]', index));
if ($tr.next().is('tr.detail-view')) {
this.collapseRow(index);
} else {
this.expandRow(index, _columnDetailFormatter);
}
this.resetView();
}
}, {
key: "expandRow",
value: function expandRow(index, _columnDetailFormatter) {
var row = this.data[index];
var $tr = this.$body.find(Utils.sprintf('> tr[data-index="%s"][data-has-detail-view]', index));
if ($tr.next().is('tr.detail-view')) {
return;
}
if (this.options.detailViewIcon) {
$tr.find('a.detail-icon').html(Utils.sprintf(this.constants.html.icon, this.options.iconsPrefix, this.options.icons.detailClose));
}
$tr.after(Utils.sprintf(' ', $tr.children('td').length));
var $element = $tr.next().find('td');
var detailFormatter = _columnDetailFormatter || this.options.detailFormatter;
var content = Utils.calculateObjectValue(this.options, detailFormatter, [index, row, $element], '');
if ($element.length === 1) {
$element.append(content);
}
this.trigger('expand-row', index, row, $element);
}
}, {
key: "collapseRow",
value: function collapseRow(index) {
var row = this.data[index];
var $tr = this.$body.find(Utils.sprintf('> tr[data-index="%s"][data-has-detail-view]', index));
if (!$tr.next().is('tr.detail-view')) {
return;
}
if (this.options.detailViewIcon) {
$tr.find('a.detail-icon').html(Utils.sprintf(this.constants.html.icon, this.options.iconsPrefix, this.options.icons.detailOpen));
}
this.trigger('collapse-row', index, row, $tr.next());
$tr.next().remove();
}
}, {
key: "expandAllRows",
value: function expandAllRows() {
var trs = this.$body.find('> tr[data-index][data-has-detail-view]');
for (var i = 0; i < trs.length; i++) {
this.expandRow($(trs[i]).data('index'));
}
}
}, {
key: "collapseAllRows",
value: function collapseAllRows() {
var trs = this.$body.find('> tr[data-index][data-has-detail-view]');
for (var i = 0; i < trs.length; i++) {
this.collapseRow($(trs[i]).data('index'));
}
}
}, {
key: "updateColumnTitle",
value: function updateColumnTitle(params) {
if (!params.hasOwnProperty('field') || !params.hasOwnProperty('title')) {
return;
}
this.columns[this.fieldsColumnsIndex[params.field]].title = this.options.escape ? Utils.escapeHTML(params.title) : params.title;
if (this.columns[this.fieldsColumnsIndex[params.field]].visible) {
var header = this.options.height !== undefined ? this.$tableHeader : this.$header;
header.find('th[data-field]').each(function (i, el) {
if ($(el).data('field') === params.field) {
$($(el).find('.th-inner')[0]).text(params.title);
return false;
}
});
}
}
}, {
key: "updateFormatText",
value: function updateFormatText(formatName, text) {
if (!/^format/.test(formatName) || !this.options[formatName]) {
return;
}
if (typeof text === 'string') {
this.options[formatName] = function () {
return text;
};
} else if (typeof text === 'function') {
this.options[formatName] = text;
}
this.initToolbar();
this.initPagination();
this.initBody();
}
}]);
return BootstrapTable;
}();
BootstrapTable.VERSION = Constants.VERSION;
BootstrapTable.DEFAULTS = Constants.DEFAULTS;
BootstrapTable.LOCALES = Constants.LOCALES;
BootstrapTable.COLUMN_DEFAULTS = Constants.COLUMN_DEFAULTS;
BootstrapTable.METHODS = Constants.METHODS;
BootstrapTable.EVENTS = Constants.EVENTS; // BOOTSTRAP TABLE PLUGIN DEFINITION
// =======================
$.BootstrapTable = BootstrapTable;
$.fn.bootstrapTable = function (option) {
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key3 = 1; _key3 < _len2; _key3++) {
args[_key3 - 1] = arguments[_key3];
}
var value;
this.each(function (i, el) {
var data = $(el).data('bootstrap.table');
var options = $.extend({}, BootstrapTable.DEFAULTS, $(el).data(), _typeof(option) === 'object' && option);
if (typeof option === 'string') {
var _data2;
if (!Constants.METHODS.includes(option)) {
throw new Error("Unknown method: ".concat(option));
}
if (!data) {
return;
}
value = (_data2 = data)[option].apply(_data2, args);
if (option === 'destroy') {
$(el).removeData('bootstrap.table');
}
}
if (!data) {
$(el).data('bootstrap.table', data = new $.BootstrapTable(el, options));
}
});
return typeof value === 'undefined' ? this : value;
};
$.fn.bootstrapTable.Constructor = BootstrapTable;
$.fn.bootstrapTable.theme = Constants.THEME;
$.fn.bootstrapTable.VERSION = Constants.VERSION;
$.fn.bootstrapTable.defaults = BootstrapTable.DEFAULTS;
$.fn.bootstrapTable.columnDefaults = BootstrapTable.COLUMN_DEFAULTS;
$.fn.bootstrapTable.events = BootstrapTable.EVENTS;
$.fn.bootstrapTable.locales = BootstrapTable.LOCALES;
$.fn.bootstrapTable.methods = BootstrapTable.METHODS;
$.fn.bootstrapTable.utils = Utils; // BOOTSTRAP TABLE INIT
// =======================
$(function () {
$('[data-toggle="table"]').bootstrapTable();
});
return BootstrapTable;
}));
================================================
FILE: lib/bootstrap/js/bootstrap.js
================================================
/*!
* Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2016 Twitter, Inc.
* Licensed under the MIT license
*/
if (typeof jQuery === 'undefined') {
throw new Error('Bootstrap\'s JavaScript requires jQuery')
}
+function ($) {
'use strict';
var version = $.fn.jquery.split(' ')[0].split('.')
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
}
}(jQuery);
/* ========================================================================
* Bootstrap: transition.js v3.3.7
* http://getbootstrap.com/javascript/#transitions
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
// ============================================================
function transitionEnd() {
var el = document.createElement('bootstrap')
var transEndEventNames = {
WebkitTransition : 'webkitTransitionEnd',
MozTransition : 'transitionend',
OTransition : 'oTransitionEnd otransitionend',
transition : 'transitionend'
}
for (var name in transEndEventNames) {
if (el.style[name] !== undefined) {
return { end: transEndEventNames[name] }
}
}
return false // explicit for ie8 ( ._.)
}
// http://blog.alexmaccaw.com/css-transitions
$.fn.emulateTransitionEnd = function (duration) {
var called = false
var $el = this
$(this).one('bsTransitionEnd', function () { called = true })
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
setTimeout(callback, duration)
return this
}
$(function () {
$.support.transition = transitionEnd()
if (!$.support.transition) return
$.event.special.bsTransitionEnd = {
bindType: $.support.transition.end,
delegateType: $.support.transition.end,
handle: function (e) {
if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
}
}
})
}(jQuery);
/* ========================================================================
* Bootstrap: alert.js v3.3.7
* http://getbootstrap.com/javascript/#alerts
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// ALERT CLASS DEFINITION
// ======================
var dismiss = '[data-dismiss="alert"]'
var Alert = function (el) {
$(el).on('click', dismiss, this.close)
}
Alert.VERSION = '3.3.7'
Alert.TRANSITION_DURATION = 150
Alert.prototype.close = function (e) {
var $this = $(this)
var selector = $this.attr('data-target')
if (!selector) {
selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = $(selector === '#' ? [] : selector)
if (e) e.preventDefault()
if (!$parent.length) {
$parent = $this.closest('.alert')
}
$parent.trigger(e = $.Event('close.bs.alert'))
if (e.isDefaultPrevented()) return
$parent.removeClass('in')
function removeElement() {
// detach from parent, fire event then clean up data
$parent.detach().trigger('closed.bs.alert').remove()
}
$.support.transition && $parent.hasClass('fade') ?
$parent
.one('bsTransitionEnd', removeElement)
.emulateTransitionEnd(Alert.TRANSITION_DURATION) :
removeElement()
}
// ALERT PLUGIN DEFINITION
// =======================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.alert')
if (!data) $this.data('bs.alert', (data = new Alert(this)))
if (typeof option == 'string') data[option].call($this)
})
}
var old = $.fn.alert
$.fn.alert = Plugin
$.fn.alert.Constructor = Alert
// ALERT NO CONFLICT
// =================
$.fn.alert.noConflict = function () {
$.fn.alert = old
return this
}
// ALERT DATA-API
// ==============
$(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
}(jQuery);
/* ========================================================================
* Bootstrap: button.js v3.3.7
* http://getbootstrap.com/javascript/#buttons
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// BUTTON PUBLIC CLASS DEFINITION
// ==============================
var Button = function (element, options) {
this.$element = $(element)
this.options = $.extend({}, Button.DEFAULTS, options)
this.isLoading = false
}
Button.VERSION = '3.3.7'
Button.DEFAULTS = {
loadingText: 'loading...'
}
Button.prototype.setState = function (state) {
var d = 'disabled'
var $el = this.$element
var val = $el.is('input') ? 'val' : 'html'
var data = $el.data()
state += 'Text'
if (data.resetText == null) $el.data('resetText', $el[val]())
// push to event loop to allow forms to submit
setTimeout($.proxy(function () {
$el[val](data[state] == null ? this.options[state] : data[state])
if (state == 'loadingText') {
this.isLoading = true
$el.addClass(d).attr(d, d).prop(d, true)
} else if (this.isLoading) {
this.isLoading = false
$el.removeClass(d).removeAttr(d).prop(d, false)
}
}, this), 0)
}
Button.prototype.toggle = function () {
var changed = true
var $parent = this.$element.closest('[data-toggle="buttons"]')
if ($parent.length) {
var $input = this.$element.find('input')
if ($input.prop('type') == 'radio') {
if ($input.prop('checked')) changed = false
$parent.find('.active').removeClass('active')
this.$element.addClass('active')
} else if ($input.prop('type') == 'checkbox') {
if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
this.$element.toggleClass('active')
}
$input.prop('checked', this.$element.hasClass('active'))
if (changed) $input.trigger('change')
} else {
this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
this.$element.toggleClass('active')
}
}
// BUTTON PLUGIN DEFINITION
// ========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.button')
var options = typeof option == 'object' && option
if (!data) $this.data('bs.button', (data = new Button(this, options)))
if (option == 'toggle') data.toggle()
else if (option) data.setState(option)
})
}
var old = $.fn.button
$.fn.button = Plugin
$.fn.button.Constructor = Button
// BUTTON NO CONFLICT
// ==================
$.fn.button.noConflict = function () {
$.fn.button = old
return this
}
// BUTTON DATA-API
// ===============
$(document)
.on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
var $btn = $(e.target).closest('.btn')
Plugin.call($btn, 'toggle')
if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
// Prevent double click on radios, and the double selections (so cancellation) on checkboxes
e.preventDefault()
// The target component still receive the focus
if ($btn.is('input,button')) $btn.trigger('focus')
else $btn.find('input:visible,button:visible').first().trigger('focus')
}
})
.on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
$(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
})
}(jQuery);
/* ========================================================================
* Bootstrap: carousel.js v3.3.7
* http://getbootstrap.com/javascript/#carousel
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// CAROUSEL CLASS DEFINITION
// =========================
var Carousel = function (element, options) {
this.$element = $(element)
this.$indicators = this.$element.find('.carousel-indicators')
this.options = options
this.paused = null
this.sliding = null
this.interval = null
this.$active = null
this.$items = null
this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
.on('mouseenter.bs.carousel', $.proxy(this.pause, this))
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
}
Carousel.VERSION = '3.3.7'
Carousel.TRANSITION_DURATION = 600
Carousel.DEFAULTS = {
interval: 5000,
pause: 'hover',
wrap: true,
keyboard: true
}
Carousel.prototype.keydown = function (e) {
if (/input|textarea/i.test(e.target.tagName)) return
switch (e.which) {
case 37: this.prev(); break
case 39: this.next(); break
default: return
}
e.preventDefault()
}
Carousel.prototype.cycle = function (e) {
e || (this.paused = false)
this.interval && clearInterval(this.interval)
this.options.interval
&& !this.paused
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
return this
}
Carousel.prototype.getItemIndex = function (item) {
this.$items = item.parent().children('.item')
return this.$items.index(item || this.$active)
}
Carousel.prototype.getItemForDirection = function (direction, active) {
var activeIndex = this.getItemIndex(active)
var willWrap = (direction == 'prev' && activeIndex === 0)
|| (direction == 'next' && activeIndex == (this.$items.length - 1))
if (willWrap && !this.options.wrap) return active
var delta = direction == 'prev' ? -1 : 1
var itemIndex = (activeIndex + delta) % this.$items.length
return this.$items.eq(itemIndex)
}
Carousel.prototype.to = function (pos) {
var that = this
var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
if (pos > (this.$items.length - 1) || pos < 0) return
if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
if (activeIndex == pos) return this.pause().cycle()
return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
}
Carousel.prototype.pause = function (e) {
e || (this.paused = true)
if (this.$element.find('.next, .prev').length && $.support.transition) {
this.$element.trigger($.support.transition.end)
this.cycle(true)
}
this.interval = clearInterval(this.interval)
return this
}
Carousel.prototype.next = function () {
if (this.sliding) return
return this.slide('next')
}
Carousel.prototype.prev = function () {
if (this.sliding) return
return this.slide('prev')
}
Carousel.prototype.slide = function (type, next) {
var $active = this.$element.find('.item.active')
var $next = next || this.getItemForDirection(type, $active)
var isCycling = this.interval
var direction = type == 'next' ? 'left' : 'right'
var that = this
if ($next.hasClass('active')) return (this.sliding = false)
var relatedTarget = $next[0]
var slideEvent = $.Event('slide.bs.carousel', {
relatedTarget: relatedTarget,
direction: direction
})
this.$element.trigger(slideEvent)
if (slideEvent.isDefaultPrevented()) return
this.sliding = true
isCycling && this.pause()
if (this.$indicators.length) {
this.$indicators.find('.active').removeClass('active')
var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
$nextIndicator && $nextIndicator.addClass('active')
}
var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
if ($.support.transition && this.$element.hasClass('slide')) {
$next.addClass(type)
$next[0].offsetWidth // force reflow
$active.addClass(direction)
$next.addClass(direction)
$active
.one('bsTransitionEnd', function () {
$next.removeClass([type, direction].join(' ')).addClass('active')
$active.removeClass(['active', direction].join(' '))
that.sliding = false
setTimeout(function () {
that.$element.trigger(slidEvent)
}, 0)
})
.emulateTransitionEnd(Carousel.TRANSITION_DURATION)
} else {
$active.removeClass('active')
$next.addClass('active')
this.sliding = false
this.$element.trigger(slidEvent)
}
isCycling && this.cycle()
return this
}
// CAROUSEL PLUGIN DEFINITION
// ==========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.carousel')
var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
var action = typeof option == 'string' ? option : options.slide
if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
if (typeof option == 'number') data.to(option)
else if (action) data[action]()
else if (options.interval) data.pause().cycle()
})
}
var old = $.fn.carousel
$.fn.carousel = Plugin
$.fn.carousel.Constructor = Carousel
// CAROUSEL NO CONFLICT
// ====================
$.fn.carousel.noConflict = function () {
$.fn.carousel = old
return this
}
// CAROUSEL DATA-API
// =================
var clickHandler = function (e) {
var href
var $this = $(this)
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
if (!$target.hasClass('carousel')) return
var options = $.extend({}, $target.data(), $this.data())
var slideIndex = $this.attr('data-slide-to')
if (slideIndex) options.interval = false
Plugin.call($target, options)
if (slideIndex) {
$target.data('bs.carousel').to(slideIndex)
}
e.preventDefault()
}
$(document)
.on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
.on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
$(window).on('load', function () {
$('[data-ride="carousel"]').each(function () {
var $carousel = $(this)
Plugin.call($carousel, $carousel.data())
})
})
}(jQuery);
/* ========================================================================
* Bootstrap: collapse.js v3.3.7
* http://getbootstrap.com/javascript/#collapse
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
/* jshint latedef: false */
+function ($) {
'use strict';
// COLLAPSE PUBLIC CLASS DEFINITION
// ================================
var Collapse = function (element, options) {
this.$element = $(element)
this.options = $.extend({}, Collapse.DEFAULTS, options)
this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
'[data-toggle="collapse"][data-target="#' + element.id + '"]')
this.transitioning = null
if (this.options.parent) {
this.$parent = this.getParent()
} else {
this.addAriaAndCollapsedClass(this.$element, this.$trigger)
}
if (this.options.toggle) this.toggle()
}
Collapse.VERSION = '3.3.7'
Collapse.TRANSITION_DURATION = 350
Collapse.DEFAULTS = {
toggle: true
}
Collapse.prototype.dimension = function () {
var hasWidth = this.$element.hasClass('width')
return hasWidth ? 'width' : 'height'
}
Collapse.prototype.show = function () {
if (this.transitioning || this.$element.hasClass('in')) return
var activesData
var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
if (actives && actives.length) {
activesData = actives.data('bs.collapse')
if (activesData && activesData.transitioning) return
}
var startEvent = $.Event('show.bs.collapse')
this.$element.trigger(startEvent)
if (startEvent.isDefaultPrevented()) return
if (actives && actives.length) {
Plugin.call(actives, 'hide')
activesData || actives.data('bs.collapse', null)
}
var dimension = this.dimension()
this.$element
.removeClass('collapse')
.addClass('collapsing')[dimension](0)
.attr('aria-expanded', true)
this.$trigger
.removeClass('collapsed')
.attr('aria-expanded', true)
this.transitioning = 1
var complete = function () {
this.$element
.removeClass('collapsing')
.addClass('collapse in')[dimension]('')
this.transitioning = 0
this.$element
.trigger('shown.bs.collapse')
}
if (!$.support.transition) return complete.call(this)
var scrollSize = $.camelCase(['scroll', dimension].join('-'))
this.$element
.one('bsTransitionEnd', $.proxy(complete, this))
.emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
}
Collapse.prototype.hide = function () {
if (this.transitioning || !this.$element.hasClass('in')) return
var startEvent = $.Event('hide.bs.collapse')
this.$element.trigger(startEvent)
if (startEvent.isDefaultPrevented()) return
var dimension = this.dimension()
this.$element[dimension](this.$element[dimension]())[0].offsetHeight
this.$element
.addClass('collapsing')
.removeClass('collapse in')
.attr('aria-expanded', false)
this.$trigger
.addClass('collapsed')
.attr('aria-expanded', false)
this.transitioning = 1
var complete = function () {
this.transitioning = 0
this.$element
.removeClass('collapsing')
.addClass('collapse')
.trigger('hidden.bs.collapse')
}
if (!$.support.transition) return complete.call(this)
this.$element
[dimension](0)
.one('bsTransitionEnd', $.proxy(complete, this))
.emulateTransitionEnd(Collapse.TRANSITION_DURATION)
}
Collapse.prototype.toggle = function () {
this[this.$element.hasClass('in') ? 'hide' : 'show']()
}
Collapse.prototype.getParent = function () {
return $(this.options.parent)
.find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
.each($.proxy(function (i, element) {
var $element = $(element)
this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
}, this))
.end()
}
Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
var isOpen = $element.hasClass('in')
$element.attr('aria-expanded', isOpen)
$trigger
.toggleClass('collapsed', !isOpen)
.attr('aria-expanded', isOpen)
}
function getTargetFromTrigger($trigger) {
var href
var target = $trigger.attr('data-target')
|| (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
return $(target)
}
// COLLAPSE PLUGIN DEFINITION
// ==========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.collapse')
var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.collapse
$.fn.collapse = Plugin
$.fn.collapse.Constructor = Collapse
// COLLAPSE NO CONFLICT
// ====================
$.fn.collapse.noConflict = function () {
$.fn.collapse = old
return this
}
// COLLAPSE DATA-API
// =================
$(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
var $this = $(this)
if (!$this.attr('data-target')) e.preventDefault()
var $target = getTargetFromTrigger($this)
var data = $target.data('bs.collapse')
var option = data ? 'toggle' : $this.data()
Plugin.call($target, option)
})
}(jQuery);
/* ========================================================================
* Bootstrap: dropdown.js v3.3.7
* http://getbootstrap.com/javascript/#dropdowns
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// DROPDOWN CLASS DEFINITION
// =========================
var backdrop = '.dropdown-backdrop'
var toggle = '[data-toggle="dropdown"]'
var Dropdown = function (element) {
$(element).on('click.bs.dropdown', this.toggle)
}
Dropdown.VERSION = '3.3.7'
function getParent($this) {
var selector = $this.attr('data-target')
if (!selector) {
selector = $this.attr('href')
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = selector && $(selector)
return $parent && $parent.length ? $parent : $this.parent()
}
function clearMenus(e) {
if (e && e.which === 3) return
$(backdrop).remove()
$(toggle).each(function () {
var $this = $(this)
var $parent = getParent($this)
var relatedTarget = { relatedTarget: this }
if (!$parent.hasClass('open')) return
if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this.attr('aria-expanded', 'false')
$parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
})
}
Dropdown.prototype.toggle = function (e) {
var $this = $(this)
if ($this.is('.disabled, :disabled')) return
var $parent = getParent($this)
var isActive = $parent.hasClass('open')
clearMenus()
if (!isActive) {
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
// if mobile we use a backdrop because click events don't delegate
$(document.createElement('div'))
.addClass('dropdown-backdrop')
.insertAfter($(this))
.on('click', clearMenus)
}
var relatedTarget = { relatedTarget: this }
$parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this
.trigger('focus')
.attr('aria-expanded', 'true')
$parent
.toggleClass('open')
.trigger($.Event('shown.bs.dropdown', relatedTarget))
}
return false
}
Dropdown.prototype.keydown = function (e) {
if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
var $this = $(this)
e.preventDefault()
e.stopPropagation()
if ($this.is('.disabled, :disabled')) return
var $parent = getParent($this)
var isActive = $parent.hasClass('open')
if (!isActive && e.which != 27 || isActive && e.which == 27) {
if (e.which == 27) $parent.find(toggle).trigger('focus')
return $this.trigger('click')
}
var desc = ' li:not(.disabled):visible a'
var $items = $parent.find('.dropdown-menu' + desc)
if (!$items.length) return
var index = $items.index(e.target)
if (e.which == 38 && index > 0) index-- // up
if (e.which == 40 && index < $items.length - 1) index++ // down
if (!~index) index = 0
$items.eq(index).trigger('focus')
}
// DROPDOWN PLUGIN DEFINITION
// ==========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.dropdown')
if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
if (typeof option == 'string') data[option].call($this)
})
}
var old = $.fn.dropdown
$.fn.dropdown = Plugin
$.fn.dropdown.Constructor = Dropdown
// DROPDOWN NO CONFLICT
// ====================
$.fn.dropdown.noConflict = function () {
$.fn.dropdown = old
return this
}
// APPLY TO STANDARD DROPDOWN ELEMENTS
// ===================================
$(document)
.on('click.bs.dropdown.data-api', clearMenus)
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
.on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
}(jQuery);
/* ========================================================================
* Bootstrap: modal.js v3.3.7
* http://getbootstrap.com/javascript/#modals
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// MODAL CLASS DEFINITION
// ======================
var Modal = function (element, options) {
this.options = options
this.$body = $(document.body)
this.$element = $(element)
this.$dialog = this.$element.find('.modal-dialog')
this.$backdrop = null
this.isShown = null
this.originalBodyPad = null
this.scrollbarWidth = 0
this.ignoreBackdropClick = false
if (this.options.remote) {
this.$element
.find('.modal-content')
.load(this.options.remote, $.proxy(function () {
this.$element.trigger('loaded.bs.modal')
}, this))
}
}
Modal.VERSION = '3.3.7'
Modal.TRANSITION_DURATION = 300
Modal.BACKDROP_TRANSITION_DURATION = 150
Modal.DEFAULTS = {
backdrop: true,
keyboard: true,
show: true
}
Modal.prototype.toggle = function (_relatedTarget) {
return this.isShown ? this.hide() : this.show(_relatedTarget)
}
Modal.prototype.show = function (_relatedTarget) {
var that = this
var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
this.$element.trigger(e)
if (this.isShown || e.isDefaultPrevented()) return
this.isShown = true
this.checkScrollbar()
this.setScrollbar()
this.$body.addClass('modal-open')
this.escape()
this.resize()
this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
this.$dialog.on('mousedown.dismiss.bs.modal', function () {
that.$element.one('mouseup.dismiss.bs.modal', function (e) {
if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
})
})
this.backdrop(function () {
var transition = $.support.transition && that.$element.hasClass('fade')
if (!that.$element.parent().length) {
that.$element.appendTo(that.$body) // don't move modals dom position
}
that.$element
.show()
.scrollTop(0)
that.adjustDialog()
if (transition) {
that.$element[0].offsetWidth // force reflow
}
that.$element.addClass('in')
that.enforceFocus()
var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
transition ?
that.$dialog // wait for modal to slide in
.one('bsTransitionEnd', function () {
that.$element.trigger('focus').trigger(e)
})
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
that.$element.trigger('focus').trigger(e)
})
}
Modal.prototype.hide = function (e) {
if (e) e.preventDefault()
e = $.Event('hide.bs.modal')
this.$element.trigger(e)
if (!this.isShown || e.isDefaultPrevented()) return
this.isShown = false
this.escape()
this.resize()
$(document).off('focusin.bs.modal')
this.$element
.removeClass('in')
.off('click.dismiss.bs.modal')
.off('mouseup.dismiss.bs.modal')
this.$dialog.off('mousedown.dismiss.bs.modal')
$.support.transition && this.$element.hasClass('fade') ?
this.$element
.one('bsTransitionEnd', $.proxy(this.hideModal, this))
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
this.hideModal()
}
Modal.prototype.enforceFocus = function () {
$(document)
.off('focusin.bs.modal') // guard against infinite focus loop
.on('focusin.bs.modal', $.proxy(function (e) {
if (document !== e.target &&
this.$element[0] !== e.target &&
!this.$element.has(e.target).length) {
this.$element.trigger('focus')
}
}, this))
}
Modal.prototype.escape = function () {
if (this.isShown && this.options.keyboard) {
this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
e.which == 27 && this.hide()
}, this))
} else if (!this.isShown) {
this.$element.off('keydown.dismiss.bs.modal')
}
}
Modal.prototype.resize = function () {
if (this.isShown) {
$(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
} else {
$(window).off('resize.bs.modal')
}
}
Modal.prototype.hideModal = function () {
var that = this
this.$element.hide()
this.backdrop(function () {
that.$body.removeClass('modal-open')
that.resetAdjustments()
that.resetScrollbar()
that.$element.trigger('hidden.bs.modal')
})
}
Modal.prototype.removeBackdrop = function () {
this.$backdrop && this.$backdrop.remove()
this.$backdrop = null
}
Modal.prototype.backdrop = function (callback) {
var that = this
var animate = this.$element.hasClass('fade') ? 'fade' : ''
if (this.isShown && this.options.backdrop) {
var doAnimate = $.support.transition && animate
this.$backdrop = $(document.createElement('div'))
.addClass('modal-backdrop ' + animate)
.appendTo(this.$body)
this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
if (this.ignoreBackdropClick) {
this.ignoreBackdropClick = false
return
}
if (e.target !== e.currentTarget) return
this.options.backdrop == 'static'
? this.$element[0].focus()
: this.hide()
}, this))
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
this.$backdrop.addClass('in')
if (!callback) return
doAnimate ?
this.$backdrop
.one('bsTransitionEnd', callback)
.emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
callback()
} else if (!this.isShown && this.$backdrop) {
this.$backdrop.removeClass('in')
var callbackRemove = function () {
that.removeBackdrop()
callback && callback()
}
$.support.transition && this.$element.hasClass('fade') ?
this.$backdrop
.one('bsTransitionEnd', callbackRemove)
.emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
callbackRemove()
} else if (callback) {
callback()
}
}
// these following methods are used to handle overflowing modals
Modal.prototype.handleUpdate = function () {
this.adjustDialog()
}
Modal.prototype.adjustDialog = function () {
var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
this.$element.css({
paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
})
}
Modal.prototype.resetAdjustments = function () {
this.$element.css({
paddingLeft: '',
paddingRight: ''
})
}
Modal.prototype.checkScrollbar = function () {
var fullWindowWidth = window.innerWidth
if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
var documentElementRect = document.documentElement.getBoundingClientRect()
fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
}
this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
this.scrollbarWidth = this.measureScrollbar()
}
Modal.prototype.setScrollbar = function () {
var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
this.originalBodyPad = document.body.style.paddingRight || ''
if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
}
Modal.prototype.resetScrollbar = function () {
this.$body.css('padding-right', this.originalBodyPad)
}
Modal.prototype.measureScrollbar = function () { // thx walsh
var scrollDiv = document.createElement('div')
scrollDiv.className = 'modal-scrollbar-measure'
this.$body.append(scrollDiv)
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
this.$body[0].removeChild(scrollDiv)
return scrollbarWidth
}
// MODAL PLUGIN DEFINITION
// =======================
function Plugin(option, _relatedTarget) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.modal')
var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
if (typeof option == 'string') data[option](_relatedTarget)
else if (options.show) data.show(_relatedTarget)
})
}
var old = $.fn.modal
$.fn.modal = Plugin
$.fn.modal.Constructor = Modal
// MODAL NO CONFLICT
// =================
$.fn.modal.noConflict = function () {
$.fn.modal = old
return this
}
// MODAL DATA-API
// ==============
$(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
var $this = $(this)
var href = $this.attr('href')
var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
if ($this.is('a')) e.preventDefault()
$target.one('show.bs.modal', function (showEvent) {
if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
$target.one('hidden.bs.modal', function () {
$this.is(':visible') && $this.trigger('focus')
})
})
Plugin.call($target, option, this)
})
}(jQuery);
/* ========================================================================
* Bootstrap: tooltip.js v3.3.7
* http://getbootstrap.com/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// TOOLTIP PUBLIC CLASS DEFINITION
// ===============================
var Tooltip = function (element, options) {
this.type = null
this.options = null
this.enabled = null
this.timeout = null
this.hoverState = null
this.$element = null
this.inState = null
this.init('tooltip', element, options)
}
Tooltip.VERSION = '3.3.7'
Tooltip.TRANSITION_DURATION = 150
Tooltip.DEFAULTS = {
animation: true,
placement: 'top',
selector: false,
template: '',
trigger: 'hover focus',
title: '',
delay: 0,
html: false,
container: false,
viewport: {
selector: 'body',
padding: 0
}
}
Tooltip.prototype.init = function (type, element, options) {
this.enabled = true
this.type = type
this.$element = $(element)
this.options = this.getOptions(options)
this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
this.inState = { click: false, hover: false, focus: false }
if (this.$element[0] instanceof document.constructor && !this.options.selector) {
throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
}
var triggers = this.options.trigger.split(' ')
for (var i = triggers.length; i--;) {
var trigger = triggers[i]
if (trigger == 'click') {
this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
} else if (trigger != 'manual') {
var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
}
}
this.options.selector ?
(this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
this.fixTitle()
}
Tooltip.prototype.getDefaults = function () {
return Tooltip.DEFAULTS
}
Tooltip.prototype.getOptions = function (options) {
options = $.extend({}, this.getDefaults(), this.$element.data(), options)
if (options.delay && typeof options.delay == 'number') {
options.delay = {
show: options.delay,
hide: options.delay
}
}
return options
}
Tooltip.prototype.getDelegateOptions = function () {
var options = {}
var defaults = this.getDefaults()
this._options && $.each(this._options, function (key, value) {
if (defaults[key] != value) options[key] = value
})
return options
}
Tooltip.prototype.enter = function (obj) {
var self = obj instanceof this.constructor ?
obj : $(obj.currentTarget).data('bs.' + this.type)
if (!self) {
self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
$(obj.currentTarget).data('bs.' + this.type, self)
}
if (obj instanceof $.Event) {
self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
}
if (self.tip().hasClass('in') || self.hoverState == 'in') {
self.hoverState = 'in'
return
}
clearTimeout(self.timeout)
self.hoverState = 'in'
if (!self.options.delay || !self.options.delay.show) return self.show()
self.timeout = setTimeout(function () {
if (self.hoverState == 'in') self.show()
}, self.options.delay.show)
}
Tooltip.prototype.isInStateTrue = function () {
for (var key in this.inState) {
if (this.inState[key]) return true
}
return false
}
Tooltip.prototype.leave = function (obj) {
var self = obj instanceof this.constructor ?
obj : $(obj.currentTarget).data('bs.' + this.type)
if (!self) {
self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
$(obj.currentTarget).data('bs.' + this.type, self)
}
if (obj instanceof $.Event) {
self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
}
if (self.isInStateTrue()) return
clearTimeout(self.timeout)
self.hoverState = 'out'
if (!self.options.delay || !self.options.delay.hide) return self.hide()
self.timeout = setTimeout(function () {
if (self.hoverState == 'out') self.hide()
}, self.options.delay.hide)
}
Tooltip.prototype.show = function () {
var e = $.Event('show.bs.' + this.type)
if (this.hasContent() && this.enabled) {
this.$element.trigger(e)
var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
if (e.isDefaultPrevented() || !inDom) return
var that = this
var $tip = this.tip()
var tipId = this.getUID(this.type)
this.setContent()
$tip.attr('id', tipId)
this.$element.attr('aria-describedby', tipId)
if (this.options.animation) $tip.addClass('fade')
var placement = typeof this.options.placement == 'function' ?
this.options.placement.call(this, $tip[0], this.$element[0]) :
this.options.placement
var autoToken = /\s?auto?\s?/i
var autoPlace = autoToken.test(placement)
if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
$tip
.detach()
.css({ top: 0, left: 0, display: 'block' })
.addClass(placement)
.data('bs.' + this.type, this)
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
this.$element.trigger('inserted.bs.' + this.type)
var pos = this.getPosition()
var actualWidth = $tip[0].offsetWidth
var actualHeight = $tip[0].offsetHeight
if (autoPlace) {
var orgPlacement = placement
var viewportDim = this.getPosition(this.$viewport)
placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
placement
$tip
.removeClass(orgPlacement)
.addClass(placement)
}
var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
this.applyPlacement(calculatedOffset, placement)
var complete = function () {
var prevHoverState = that.hoverState
that.$element.trigger('shown.bs.' + that.type)
that.hoverState = null
if (prevHoverState == 'out') that.leave(that)
}
$.support.transition && this.$tip.hasClass('fade') ?
$tip
.one('bsTransitionEnd', complete)
.emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
complete()
}
}
Tooltip.prototype.applyPlacement = function (offset, placement) {
var $tip = this.tip()
var width = $tip[0].offsetWidth
var height = $tip[0].offsetHeight
// manually read margins because getBoundingClientRect includes difference
var marginTop = parseInt($tip.css('margin-top'), 10)
var marginLeft = parseInt($tip.css('margin-left'), 10)
// we must check for NaN for ie 8/9
if (isNaN(marginTop)) marginTop = 0
if (isNaN(marginLeft)) marginLeft = 0
offset.top += marginTop
offset.left += marginLeft
// $.fn.offset doesn't round pixel values
// so we use setOffset directly with our own function B-0
$.offset.setOffset($tip[0], $.extend({
using: function (props) {
$tip.css({
top: Math.round(props.top),
left: Math.round(props.left)
})
}
}, offset), 0)
$tip.addClass('in')
// check to see if placing tip in new offset caused the tip to resize itself
var actualWidth = $tip[0].offsetWidth
var actualHeight = $tip[0].offsetHeight
if (placement == 'top' && actualHeight != height) {
offset.top = offset.top + height - actualHeight
}
var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
if (delta.left) offset.left += delta.left
else offset.top += delta.top
var isVertical = /top|bottom/.test(placement)
var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
$tip.offset(offset)
this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
}
Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
this.arrow()
.css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
.css(isVertical ? 'top' : 'left', '')
}
Tooltip.prototype.setContent = function () {
var $tip = this.tip()
var title = this.getTitle()
$tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
$tip.removeClass('fade in top bottom left right')
}
Tooltip.prototype.hide = function (callback) {
var that = this
var $tip = $(this.$tip)
var e = $.Event('hide.bs.' + this.type)
function complete() {
if (that.hoverState != 'in') $tip.detach()
if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
that.$element
.removeAttr('aria-describedby')
.trigger('hidden.bs.' + that.type)
}
callback && callback()
}
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
$tip.removeClass('in')
$.support.transition && $tip.hasClass('fade') ?
$tip
.one('bsTransitionEnd', complete)
.emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
complete()
this.hoverState = null
return this
}
Tooltip.prototype.fixTitle = function () {
var $e = this.$element
if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
}
}
Tooltip.prototype.hasContent = function () {
return this.getTitle()
}
Tooltip.prototype.getPosition = function ($element) {
$element = $element || this.$element
var el = $element[0]
var isBody = el.tagName == 'BODY'
var elRect = el.getBoundingClientRect()
if (elRect.width == null) {
// width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
}
var isSvg = window.SVGElement && el instanceof window.SVGElement
// Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
// See https://github.com/twbs/bootstrap/issues/20280
var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
return $.extend({}, elRect, scroll, outerDims, elOffset)
}
Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
/* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
}
Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
var delta = { top: 0, left: 0 }
if (!this.$viewport) return delta
var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
var viewportDimensions = this.getPosition(this.$viewport)
if (/right|left/.test(placement)) {
var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
if (topEdgeOffset < viewportDimensions.top) { // top overflow
delta.top = viewportDimensions.top - topEdgeOffset
} else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
}
} else {
var leftEdgeOffset = pos.left - viewportPadding
var rightEdgeOffset = pos.left + viewportPadding + actualWidth
if (leftEdgeOffset < viewportDimensions.left) { // left overflow
delta.left = viewportDimensions.left - leftEdgeOffset
} else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
}
}
return delta
}
Tooltip.prototype.getTitle = function () {
var title
var $e = this.$element
var o = this.options
title = $e.attr('data-original-title')
|| (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
return title
}
Tooltip.prototype.getUID = function (prefix) {
do prefix += ~~(Math.random() * 1000000)
while (document.getElementById(prefix))
return prefix
}
Tooltip.prototype.tip = function () {
if (!this.$tip) {
this.$tip = $(this.options.template)
if (this.$tip.length != 1) {
throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
}
}
return this.$tip
}
Tooltip.prototype.arrow = function () {
return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
}
Tooltip.prototype.enable = function () {
this.enabled = true
}
Tooltip.prototype.disable = function () {
this.enabled = false
}
Tooltip.prototype.toggleEnabled = function () {
this.enabled = !this.enabled
}
Tooltip.prototype.toggle = function (e) {
var self = this
if (e) {
self = $(e.currentTarget).data('bs.' + this.type)
if (!self) {
self = new this.constructor(e.currentTarget, this.getDelegateOptions())
$(e.currentTarget).data('bs.' + this.type, self)
}
}
if (e) {
self.inState.click = !self.inState.click
if (self.isInStateTrue()) self.enter(self)
else self.leave(self)
} else {
self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
}
}
Tooltip.prototype.destroy = function () {
var that = this
clearTimeout(this.timeout)
this.hide(function () {
that.$element.off('.' + that.type).removeData('bs.' + that.type)
if (that.$tip) {
that.$tip.detach()
}
that.$tip = null
that.$arrow = null
that.$viewport = null
that.$element = null
})
}
// TOOLTIP PLUGIN DEFINITION
// =========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.tooltip')
var options = typeof option == 'object' && option
if (!data && /destroy|hide/.test(option)) return
if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.tooltip
$.fn.tooltip = Plugin
$.fn.tooltip.Constructor = Tooltip
// TOOLTIP NO CONFLICT
// ===================
$.fn.tooltip.noConflict = function () {
$.fn.tooltip = old
return this
}
}(jQuery);
/* ========================================================================
* Bootstrap: popover.js v3.3.7
* http://getbootstrap.com/javascript/#popovers
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// POPOVER PUBLIC CLASS DEFINITION
// ===============================
var Popover = function (element, options) {
this.init('popover', element, options)
}
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
Popover.VERSION = '3.3.7'
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
placement: 'right',
trigger: 'click',
content: '',
template: ''
})
// NOTE: POPOVER EXTENDS tooltip.js
// ================================
Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
Popover.prototype.constructor = Popover
Popover.prototype.getDefaults = function () {
return Popover.DEFAULTS
}
Popover.prototype.setContent = function () {
var $tip = this.tip()
var title = this.getTitle()
var content = this.getContent()
$tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
$tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
](content)
$tip.removeClass('fade top bottom left right in')
// IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
// this manually by checking the contents.
if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
}
Popover.prototype.hasContent = function () {
return this.getTitle() || this.getContent()
}
Popover.prototype.getContent = function () {
var $e = this.$element
var o = this.options
return $e.attr('data-content')
|| (typeof o.content == 'function' ?
o.content.call($e[0]) :
o.content)
}
Popover.prototype.arrow = function () {
return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
}
// POPOVER PLUGIN DEFINITION
// =========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.popover')
var options = typeof option == 'object' && option
if (!data && /destroy|hide/.test(option)) return
if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.popover
$.fn.popover = Plugin
$.fn.popover.Constructor = Popover
// POPOVER NO CONFLICT
// ===================
$.fn.popover.noConflict = function () {
$.fn.popover = old
return this
}
}(jQuery);
/* ========================================================================
* Bootstrap: scrollspy.js v3.3.7
* http://getbootstrap.com/javascript/#scrollspy
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// SCROLLSPY CLASS DEFINITION
// ==========================
function ScrollSpy(element, options) {
this.$body = $(document.body)
this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
this.selector = (this.options.target || '') + ' .nav li > a'
this.offsets = []
this.targets = []
this.activeTarget = null
this.scrollHeight = 0
this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
this.refresh()
this.process()
}
ScrollSpy.VERSION = '3.3.7'
ScrollSpy.DEFAULTS = {
offset: 10
}
ScrollSpy.prototype.getScrollHeight = function () {
return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
}
ScrollSpy.prototype.refresh = function () {
var that = this
var offsetMethod = 'offset'
var offsetBase = 0
this.offsets = []
this.targets = []
this.scrollHeight = this.getScrollHeight()
if (!$.isWindow(this.$scrollElement[0])) {
offsetMethod = 'position'
offsetBase = this.$scrollElement.scrollTop()
}
this.$body
.find(this.selector)
.map(function () {
var $el = $(this)
var href = $el.data('target') || $el.attr('href')
var $href = /^#./.test(href) && $(href)
return ($href
&& $href.length
&& $href.is(':visible')
&& [[$href[offsetMethod]().top + offsetBase, href]]) || null
})
.sort(function (a, b) { return a[0] - b[0] })
.each(function () {
that.offsets.push(this[0])
that.targets.push(this[1])
})
}
ScrollSpy.prototype.process = function () {
var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
var scrollHeight = this.getScrollHeight()
var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
var offsets = this.offsets
var targets = this.targets
var activeTarget = this.activeTarget
var i
if (this.scrollHeight != scrollHeight) {
this.refresh()
}
if (scrollTop >= maxScroll) {
return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
}
if (activeTarget && scrollTop < offsets[0]) {
this.activeTarget = null
return this.clear()
}
for (i = offsets.length; i--;) {
activeTarget != targets[i]
&& scrollTop >= offsets[i]
&& (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
&& this.activate(targets[i])
}
}
ScrollSpy.prototype.activate = function (target) {
this.activeTarget = target
this.clear()
var selector = this.selector +
'[data-target="' + target + '"],' +
this.selector + '[href="' + target + '"]'
var active = $(selector)
.parents('li')
.addClass('active')
if (active.parent('.dropdown-menu').length) {
active = active
.closest('li.dropdown')
.addClass('active')
}
active.trigger('activate.bs.scrollspy')
}
ScrollSpy.prototype.clear = function () {
$(this.selector)
.parentsUntil(this.options.target, '.active')
.removeClass('active')
}
// SCROLLSPY PLUGIN DEFINITION
// ===========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.scrollspy')
var options = typeof option == 'object' && option
if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.scrollspy
$.fn.scrollspy = Plugin
$.fn.scrollspy.Constructor = ScrollSpy
// SCROLLSPY NO CONFLICT
// =====================
$.fn.scrollspy.noConflict = function () {
$.fn.scrollspy = old
return this
}
// SCROLLSPY DATA-API
// ==================
$(window).on('load.bs.scrollspy.data-api', function () {
$('[data-spy="scroll"]').each(function () {
var $spy = $(this)
Plugin.call($spy, $spy.data())
})
})
}(jQuery);
/* ========================================================================
* Bootstrap: tab.js v3.3.7
* http://getbootstrap.com/javascript/#tabs
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// TAB CLASS DEFINITION
// ====================
var Tab = function (element) {
// jscs:disable requireDollarBeforejQueryAssignment
this.element = $(element)
// jscs:enable requireDollarBeforejQueryAssignment
}
Tab.VERSION = '3.3.7'
Tab.TRANSITION_DURATION = 150
Tab.prototype.show = function () {
var $this = this.element
var $ul = $this.closest('ul:not(.dropdown-menu)')
var selector = $this.data('target')
if (!selector) {
selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
if ($this.parent('li').hasClass('active')) return
var $previous = $ul.find('.active:last a')
var hideEvent = $.Event('hide.bs.tab', {
relatedTarget: $this[0]
})
var showEvent = $.Event('show.bs.tab', {
relatedTarget: $previous[0]
})
$previous.trigger(hideEvent)
$this.trigger(showEvent)
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
var $target = $(selector)
this.activate($this.closest('li'), $ul)
this.activate($target, $target.parent(), function () {
$previous.trigger({
type: 'hidden.bs.tab',
relatedTarget: $this[0]
})
$this.trigger({
type: 'shown.bs.tab',
relatedTarget: $previous[0]
})
})
}
Tab.prototype.activate = function (element, container, callback) {
var $active = container.find('> .active')
var transition = callback
&& $.support.transition
&& ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
function next() {
$active
.removeClass('active')
.find('> .dropdown-menu > .active')
.removeClass('active')
.end()
.find('[data-toggle="tab"]')
.attr('aria-expanded', false)
element
.addClass('active')
.find('[data-toggle="tab"]')
.attr('aria-expanded', true)
if (transition) {
element[0].offsetWidth // reflow for transition
element.addClass('in')
} else {
element.removeClass('fade')
}
if (element.parent('.dropdown-menu').length) {
element
.closest('li.dropdown')
.addClass('active')
.end()
.find('[data-toggle="tab"]')
.attr('aria-expanded', true)
}
callback && callback()
}
$active.length && transition ?
$active
.one('bsTransitionEnd', next)
.emulateTransitionEnd(Tab.TRANSITION_DURATION) :
next()
$active.removeClass('in')
}
// TAB PLUGIN DEFINITION
// =====================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.tab')
if (!data) $this.data('bs.tab', (data = new Tab(this)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.tab
$.fn.tab = Plugin
$.fn.tab.Constructor = Tab
// TAB NO CONFLICT
// ===============
$.fn.tab.noConflict = function () {
$.fn.tab = old
return this
}
// TAB DATA-API
// ============
var clickHandler = function (e) {
e.preventDefault()
Plugin.call($(this), 'show')
}
$(document)
.on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
.on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
}(jQuery);
/* ========================================================================
* Bootstrap: affix.js v3.3.7
* http://getbootstrap.com/javascript/#affix
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// AFFIX CLASS DEFINITION
// ======================
var Affix = function (element, options) {
this.options = $.extend({}, Affix.DEFAULTS, options)
this.$target = $(this.options.target)
.on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
.on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
this.$element = $(element)
this.affixed = null
this.unpin = null
this.pinnedOffset = null
this.checkPosition()
}
Affix.VERSION = '3.3.7'
Affix.RESET = 'affix affix-top affix-bottom'
Affix.DEFAULTS = {
offset: 0,
target: window
}
Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
var scrollTop = this.$target.scrollTop()
var position = this.$element.offset()
var targetHeight = this.$target.height()
if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
if (this.affixed == 'bottom') {
if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
}
var initializing = this.affixed == null
var colliderTop = initializing ? scrollTop : position.top
var colliderHeight = initializing ? targetHeight : height
if (offsetTop != null && scrollTop <= offsetTop) return 'top'
if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
return false
}
Affix.prototype.getPinnedOffset = function () {
if (this.pinnedOffset) return this.pinnedOffset
this.$element.removeClass(Affix.RESET).addClass('affix')
var scrollTop = this.$target.scrollTop()
var position = this.$element.offset()
return (this.pinnedOffset = position.top - scrollTop)
}
Affix.prototype.checkPositionWithEventLoop = function () {
setTimeout($.proxy(this.checkPosition, this), 1)
}
Affix.prototype.checkPosition = function () {
if (!this.$element.is(':visible')) return
var height = this.$element.height()
var offset = this.options.offset
var offsetTop = offset.top
var offsetBottom = offset.bottom
var scrollHeight = Math.max($(document).height(), $(document.body).height())
if (typeof offset != 'object') offsetBottom = offsetTop = offset
if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
if (this.affixed != affix) {
if (this.unpin != null) this.$element.css('top', '')
var affixType = 'affix' + (affix ? '-' + affix : '')
var e = $.Event(affixType + '.bs.affix')
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
this.affixed = affix
this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
this.$element
.removeClass(Affix.RESET)
.addClass(affixType)
.trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
}
if (affix == 'bottom') {
this.$element.offset({
top: scrollHeight - height - offsetBottom
})
}
}
// AFFIX PLUGIN DEFINITION
// =======================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.affix')
var options = typeof option == 'object' && option
if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.affix
$.fn.affix = Plugin
$.fn.affix.Constructor = Affix
// AFFIX NO CONFLICT
// =================
$.fn.affix.noConflict = function () {
$.fn.affix = old
return this
}
// AFFIX DATA-API
// ==============
$(window).on('load', function () {
$('[data-spy="affix"]').each(function () {
var $spy = $(this)
var data = $spy.data()
data.offset = data.offset || {}
if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
if (data.offsetTop != null) data.offset.top = data.offsetTop
Plugin.call($spy, data)
})
})
}(jQuery);
================================================
FILE: lib/bootstrap/js/npm.js
================================================
// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
require('../../js/transition.js')
require('../../js/alert.js')
require('../../js/button.js')
require('../../js/carousel.js')
require('../../js/collapse.js')
require('../../js/dropdown.js')
require('../../js/modal.js')
require('../../js/tooltip.js')
require('../../js/popover.js')
require('../../js/scrollspy.js')
require('../../js/tab.js')
require('../../js/affix.js')
================================================
FILE: lib/canvas-bg/rAF.js
================================================
// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel
// MIT license
(function() {
var lastTime = 0;
var vendors = ['ms', 'moz', 'webkit', 'o'];
for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']
|| window[vendors[x]+'CancelRequestAnimationFrame'];
}
if (!window.requestAnimationFrame)
window.requestAnimationFrame = function(callback, element) {
var currTime = new Date().getTime();
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
var id = window.setTimeout(function() { callback(currTime + timeToCall); },
timeToCall);
lastTime = currTime + timeToCall;
return id;
};
if (!window.cancelAnimationFrame)
window.cancelAnimationFrame = function(id) {
clearTimeout(id);
};
}());
================================================
FILE: lib/layer/layer.js
================================================
/*! layer-v3.1.1 Web弹层组件 MIT License http://layer.layui.com/ By 贤心 */
;!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,i=t.length-1,n=i;n>0;n--)if("interactive"===t[n].readyState){e=t[n].src;break}return e||t[i].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"],getStyle:function(t,i){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](i)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName("head")[0],s=document.createElement("link");"string"==typeof i&&(n=i);var l=(n||t).replace(/\.|\//g,""),f="layuicss-"+l,c=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function u(){return++c>80?e.console&&console.error("layer.css: Invalid"):void(1989===parseInt(o.getStyle(document.getElementById(f),"width"))?i():setTimeout(u,100))}()}}},r={v:"3.1.1",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):o.link("theme/"+e.extend),this):this},ready:function(e){var t="layer",i="",n=(a?"modules/layer/":"theme/")+"default/layer.css?v="+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),document.body?t.creat():setTimeout(function(){t.creat()},30)};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim-00","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?''+(f?r.title[0]:r.title)+"
":"";return r.zIndex=s,t([r.shade?'
':"",''+(e&&2!=r.type?"":u)+'
'+(0==r.type&&r.icon!==-1?' ':"")+(1==r.type&&e?"":r.content||"")+'
'+function(){var e=c?' ':"";return r.closeBtn&&(e+=' '),e}()+" "+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t
'+r.btn[t]+"";return' '+e+"
"}():"")+(r.resize?' ':"")+" "],u,i('
')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"http://layer.layui.com","auto"];t.content='';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+' ',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i(".layui-layer-move")[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),i("#layui-layer-shade"+e.index).css({"background-color":t.shade[1]||"#000",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u="layer-anim "+l.anim[t.anim];e.layero.addClass(u).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data("isOutAnim",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i("#"+l[0]+e);""===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find("."+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css("padding-top"))))};switch(a.type){case 2:u("iframe");break;default:""===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u("."+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u("."+l[5])):u("."+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;af&&(a=f),ou&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&i("#layui-layer-shade"+t.index).on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){var a=i("#"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr("minLeft")||181*o.minIndex+"px",c=a.css("position");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr("position",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:"fixed",overflow:"hidden"},!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr("minLeft")||o.minIndex++,a.attr("minLeft",f)},r.restore=function(e){var t=i("#"+l[0]+e),n=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(n[0]),height:parseFloat(n[1]),top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i("#"+l[0]+e),n=t.attr("type"),a="layer-anim-close";if(t[0]){var s="layui-layer-wrap",f=function(){if(n===o.type[1]&&"object"===t.attr("conType")){t.children(":not(."+l[5]+")").remove();for(var a=t.find("."+s),r=0;r<2;r++)a.unwrap();a.css("display",a.data("display")).removeClass(s)}else{if(n===o.type[2])try{var f=i("#"+l[4]+e)[0];f.contentWindow.document.write(""),f.contentWindow.close(),t.find("."+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML="",t.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data("isOutAnim")&&t.addClass("layer-anim "+a),i("#layui-layer-moves, #layui-layer-shade"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr("minLeft")&&(o.minIndex--,o.minLeft.push(t.attr("minLeft"))),r.ie&&r.ie<10||!t.data("isOutAnim")?f():setTimeout(function(){f()},200)}},r.closeAll=function(e){i.each(i("."+l[0]),function(){var t=i(this),n=e?t.attr("type")===e:1;n&&r.close(t.attr("times")),n=null})};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'":function(){return' '}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(e){s=e.find(".layui-layer-input"),s.focus(),"function"==typeof f&&f(e)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n="layui-this",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,a="";if(e>0)for(a=''+t[0].title+" ";i"+t[i].title+"";return a}(),content:''+function(){var e=t.length,i=1,a="";if(e>0)for(a=''+(t[0].content||"no content")+" ";i'+(t[i].content||"no content")+"";return a}()+" ",success:function(t){var o=t.find(".layui-layer-title").children(),r=t.find(".layui-layer-tabmain").children();o.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),"function"==typeof e.change&&e.change(o)}),"function"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext()}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0] ",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imguide,.layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常 是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window);
================================================
FILE: lib/layer/mobile/layer.js
================================================
/*! layer mobile-v2.0.0 Web弹层组件 MIT License http://layer.layui.com/mobile By 贤心 */
;!function(e){"use strict";var t=document,n="querySelectorAll",i="getElementsByClassName",a=function(e){return t[n](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var n in e)t[n]=e[n];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var r=0,o=["layui-m-layer"],c=function(e){var t=this;t.config=l.extend(e),t.view()};c.prototype.view=function(){var e=this,n=e.config,s=t.createElement("div");e.id=s.id=o[0]+r,s.setAttribute("class",o[0]+" "+o[0]+(n.type||0)),s.setAttribute("index",r);var l=function(){var e="object"==typeof n.title;return n.title?''+(e?n.title[0]:n.title)+" ":""}(),c=function(){"string"==typeof n.btn&&(n.btn=[n.btn]);var e,t=(n.btn||[]).length;return 0!==t&&n.btn?(e=''+n.btn[0]+" ",2===t&&(e=''+n.btn[1]+" "+e),''+e+"
"):""}();if(n.fixed||(n.top=n.hasOwnProperty("top")?n.top:100,n.style=n.style||"",n.style+=" top:"+(t.body.scrollTop+n.top)+"px"),2===n.type&&(n.content=''+(n.content||"")+"
"),n.skin&&(n.anim="up"),"msg"===n.skin&&(n.shade=!1),s.innerHTML=(n.shade?"
':"")+'",!n.type||2===n.type){var d=t[i](o[0]+n.type),y=d.length;y>=1&&layer.close(d[0].getAttribute("index"))}document.body.appendChild(s);var u=e.elem=a("#"+e.id)[0];n.success&&n.success(u),e.index=r++,e.action(n,u)},c.prototype.action=function(e,t){var n=this;e.time&&(l.timer[n.index]=setTimeout(function(){layer.close(n.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),layer.close(n.index)):e.yes?e.yes(n.index):layer.close(n.index)};if(e.btn)for(var s=t[i]("layui-m-layerbtn")[0].children,r=s.length,o=0;odiv{line-height:22px;padding-top:7px;margin-bottom:20px;font-size:14px}.layui-m-layerbtn{display:box;display:-moz-box;display:-webkit-box;width:100%;height:50px;line-height:50px;font-size:0;border-top:1px solid #D0D0D0;background-color:#F2F2F2}.layui-m-layerbtn span{display:block;-moz-box-flex:1;box-flex:1;-webkit-box-flex:1;font-size:14px;cursor:pointer}.layui-m-layerbtn span[yes]{color:#40AFFE}.layui-m-layerbtn span[no]{border-right:1px solid #D0D0D0;border-radius:0 0 0 5px}.layui-m-layerbtn span:active{background-color:#F6F6F6}.layui-m-layerend{position:absolute;right:7px;top:10px;width:30px;height:30px;border:0;font-weight:400;background:0 0;cursor:pointer;-webkit-appearance:none;font-size:30px}.layui-m-layerend::after,.layui-m-layerend::before{position:absolute;left:5px;top:15px;content:'';width:18px;height:1px;background-color:#999;transform:rotate(45deg);-webkit-transform:rotate(45deg);border-radius:3px}.layui-m-layerend::after{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}body .layui-m-layer .layui-m-layer-footer{position:fixed;width:95%;max-width:100%;margin:0 auto;left:0;right:0;bottom:10px;background:0 0}.layui-m-layer-footer .layui-m-layercont{padding:20px;border-radius:5px 5px 0 0;background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn{display:block;height:auto;background:0 0;border-top:none}.layui-m-layer-footer .layui-m-layerbtn span{background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn span[no]{color:#FD482C;border-top:1px solid #c2c2c2;border-radius:0 0 5px 5px}.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top:10px;border-radius:5px}body .layui-m-layer .layui-m-layer-msg{width:auto;max-width:90%;margin:0 auto;bottom:-150px;background-color:rgba(0,0,0,.7);color:#fff}.layui-m-layer-msg .layui-m-layercont{padding:10px 20px}
================================================
FILE: lib/layer/theme/default/layer.css
================================================
.layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .layui-layer-title span,.layui-layer-title{text-overflow:ellipsis;white-space:nowrap}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch;top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-load{background:url(loading-1.gif) center center no-repeat #eee}.layui-layer-ico{background:url(icon.png) no-repeat}.layui-layer-btn a,.layui-layer-dialog .layui-layer-ico,.layui-layer-setwin a{display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layui-layer-title{padding:0 80px 0 20px;height:42px;line-height:42px;border-bottom:1px solid #eee;font-size:14px;color:#333;overflow:hidden;background-color:#F8F8F8;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:15px;font-size:0;line-height:initial}.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:10px;font-size:12px;_overflow:hidden}.layui-layer-setwin .layui-layer-min cite{position:absolute;width:14px;height:2px;left:0;top:50%;margin-top:-1px;background-color:#2E2D3C;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA}.layui-layer-setwin .layui-layer-max{background-position:-32px -40px}.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px}.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px}.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px}.layui-layer-setwin .layui-layer-close1{background-position:1px -40px;cursor:pointer}.layui-layer-setwin .layui-layer-close1:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;width:30px;height:30px;margin-left:0;background-position:-149px -31px;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{background-position:-180px -31px}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:#3e62e2;background-color:#3e62e2;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:260px}.layui-layer-dialog .layui-layer-content{position:relative;padding:20px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute;top:16px;left:15px;_left:-40px;width:30px;height:30px}.layui-layer-ico1{background-position:-30px 0}.layui-layer-ico2{background-position:-60px 0}.layui-layer-ico3{background-position:-90px 0}.layui-layer-ico4{background-position:-120px 0}.layui-layer-ico5{background-position:-150px 0}.layui-layer-ico6{background-position:-180px 0}.layui-layer-rim{border:6px solid #8D8D8D;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #D3D4D3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-content{padding:12px 25px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:20px 20px 20px 55px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(loading-0.gif) no-repeat}.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(loading-1.gif) no-repeat}.layui-layer-ico16,.layui-layer-loading .layui-layer-loading2{width:32px;height:32px;background:url(loading-2.gif) no-repeat}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan[type=dialog]{min-width:280px}.layui-layer-lan .layui-layer-title{background:#4476A7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;text-align:right;border-top:1px solid #E9E7E7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#E9E7E7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1}.layui-layer-iconext{background:url(icon-ext.png) no-repeat}.layui-layer-prompt .layui-layer-input{display:block;width:230px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:20px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;float:left;min-width:80px;max-width:260px;padding:0 20px;text-align:center;overflow:hidden;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:43px;border-left:1px solid #eee;border-right:1px solid #eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left:none}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{-webkit-animation-duration:.8s;animation-duration:.8s}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgbar,.layui-layer-imguide{display:none}.layui-layer-imgnext,.layui-layer-imgprev{position:absolute;top:50%;width:27px;_width:44px;height:44px;margin-top:-22px;outline:0;blr:expression(this.onFocus=this.blur())}.layui-layer-imgprev{left:10px;background-position:-5px -5px;_background-position:-70px -5px}.layui-layer-imgprev:hover{background-position:-33px -5px;_background-position:-120px -5px}.layui-layer-imgnext{right:10px;_right:8px;background-position:-5px -50px;_background-position:-70px -50px}.layui-layer-imgnext:hover{background-position:-33px -50px;_background-position:-120px -50px}.layui-layer-imgbar{position:absolute;left:0;bottom:0;width:100%;height:32px;line-height:32px;background-color:rgba(0,0,0,.8);background-color:#000\9;filter:Alpha(opacity=80);color:#fff;overflow:hidden;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:12px}.layui-layer-imgtit a{max-width:65%;overflow:hidden;color:#fff}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit em{padding-left:10px;font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}}
================================================
FILE: lib/template.js
================================================
/*! art-template@4.13.1 for browser | https://github.com/aui/art-template */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.template=t():e.template=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=4)}([function(e,t,n){"use strict";var r=n(6),i=n(2),o=n(22),s=function(e,t){t.onerror(e,t);var n=function(){return"{Template Error}"};return n.mappings=[],n.sourcesContent=[],n},a=function u(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};"string"!=typeof e?t=e:t.source=e,t=i.$extend(t),e=t.source,!0===t.debug&&(t.cache=!1,t.minimize=!1,t.compileDebug=!0),t.compileDebug&&(t.minimize=!1),t.filename&&(t.filename=t.resolveFilename(t.filename,t));var n=t.filename,a=t.cache,c=t.caches;if(a&&n){var l=c.get(n);if(l)return l}if(!e)try{e=t.loader(n,t),t.source=e}catch(m){var f=new o({name:"CompileError",path:n,message:"template not found: "+m.message,stack:m.stack});if(t.bail)throw f;return s(f,t)}var p=void 0,h=new r(t);try{p=h.build()}catch(f){if(f=new o(f),t.bail)throw f;return s(f,t)}var d=function(e,n){try{return p(e,n)}catch(f){if(!t.compileDebug)return t.cache=!1,t.compileDebug=!0,u(t)(e,n);if(f=new o(f),t.bail)throw f;return s(f,t)()}};return d.mappings=p.mappings,d.sourcesContent=p.sourcesContent,d.toString=function(){return p.toString()},a&&n&&c.set(n,d),d};a.Compiler=r,e.exports=a},function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=/((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g,t.matchToToken=function(e){var t={type:"invalid",value:e[0]};return e[1]?(t.type="string",t.closed=!(!e[3]&&!e[4])):e[5]?t.type="comment":e[6]?(t.type="comment",t.closed=!!e[7]):e[8]?t.type="regex":e[9]?t.type="number":e[10]?t.type="name":e[11]?t.type="punctuator":e[12]&&(t.type="whitespace"),t}},function(e,t,n){"use strict";function r(){this.$extend=function(e){return e=e||{},o(e,e instanceof r?e:this)}}var i=n(10),o=n(12),s=n(13),a=n(14),u=n(15),c=n(16),l=n(17),f=n(18),p=n(19),h=n(21),d="undefined"==typeof window,m={source:null,filename:null,rules:[f,l],escape:!0,debug:!!d&&"production"!==process.env.NODE_ENV,bail:!0,cache:!0,minimize:!0,compileDebug:!1,resolveFilename:h,include:s,htmlMinifier:p,htmlMinifierOptions:{collapseWhitespace:!0,minifyCSS:!0,minifyJS:!0,ignoreCustomFragments:[]},onerror:a,loader:c,caches:u,root:"/",extname:".art",ignore:[],imports:i};r.prototype=m,e.exports=new r},function(e,t){},function(e,t,n){"use strict";var r=n(5),i=n(0),o=n(23),s=function(e,t){return t instanceof Object?r({filename:e},t):i({filename:e,source:t})};s.render=r,s.compile=i,s.defaults=o,e.exports=s},function(e,t,n){"use strict";var r=n(0),i=function(e,t,n){return r(e,n)(t)};e.exports=i},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t|\([\w\W]*?\))\s*{[\s;]*$)/,"$1})"],[/(^[\w\W]*?\([\w\W]*?\)\s*{[\s;]*$)/,"$1}"]],n=0;n2&&arguments[2]!==undefined?arguments[2]:{},o=[new i("string",e)],s=0;sd&&(p=new i("string",v.slice(d,h.index),p),m.push(p)),p=new i("expression",h[0],p),h[0]=r(p),p.script=a.use.apply(n,h),m.push(p),d=h.index+h[0].length;d]/;o.$escape=function(e){return r(n(e))},o.$each=function(e,t){if(Array.isArray(e))for(var n=0,r=e.length;n {{"+n+"}}")};switch("#"===t&&h("#value","@value"),p){case"set":i="var "+u.join("").trim();break;case"if":i="if("+u.join("").trim()+"){";break;case"else":var d=u.indexOf("if");~d?(u.splice(0,d+1),i="}else if("+u.join("").trim()+"){"):i="}else{";break;case"/if":i="}";break;case"each":l=r._split(a),l.shift(),"as"===l[1]&&(h("each object as value index","each object value index"),l.splice(1,1));i="$each("+(l[0]||"$data")+",function("+(l[1]||"$value")+","+(l[2]||"$index")+"){";break;case"/each":i="})";break;case"block":l=r._split(a),l.shift(),i="block("+l.join(",").trim()+",function(){";break;case"/block":i="})";break;case"echo":p="print",h("echo value","value");case"print":case"include":case"extend":if(0!==u.join("").trim().indexOf("(")){l=r._split(a),l.shift(),i=p+"("+l.join(",")+")";break}default:if(~u.indexOf("|")){var m=a.reduce(function(e,t){var n=t.value,r=t.type;return"|"===n?e.push([]):"whitespace"!==r&&"comment"!==r&&(e.length||e.push([]),":"===n&&1===e[e.length-1].length?h("value | filter: argv","value | filter argv"):e[e.length-1].push(t)),e},[]).map(function(e){return r._split(e)});i=m.reduce(function(e,t){var n=t.shift();return t.unshift(e),"$imports."+n+"("+t.join(",")+")"},m.shift().join(" ").trim())}f=f||"escape"}return c.code=i,c.output=f,c},_split:function(e){e=e.filter(function(e){var t=e.type;return"whitespace"!==t&&"comment"!==t});for(var t=0,n=e.shift(),r=/\]|\)/,i=[[n]];t/,use:function(e,t,n,r){return n={"-":"raw","=":"escape","":!1,"==":"raw","=#":"raw"}[n],t&&(r="/*"+r+"*/",n=!1),{code:r,output:n}}};e.exports=r},function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t> ":" ")+n+"| "+e}).join("\n");return(r||"anonymous")+":"+i+":"+o+"\n"+f+"\n\n"+t+": "+a+(s?"\n generated: "+s:"")}var a=function(e){function t(e){r(this,t);var n=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e.message));return n.name="TemplateError",n.message=s(e),Error.captureStackTrace&&Error.captureStackTrace(n,n.constructor),n}return o(t,e),t}(Error);e.exports=a},function(e,t,n){"use strict";e.exports=n(2)}])});
================================================
FILE: speed.json
================================================
[
{
"year":"2018",
"car": "911 GT3RS",
"BID": "BV1fA411g7RK",
"Btitle": "300万的911 开起来像“小马力前驱车”?-- 911 GT3RS",
"hp": "570",
"hp_content": "570",
"Powertrain": "4.0/7DCT",
"speed": "52.34",
"mods": "1",
"tyre": "Cup2R",
"temperature": "26",
"lv": "S",
"time": "",
"accelerate": "3.29",
"limit": "164.96",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"226.80"
},
{
"year":"2017",
"car": "BMW M4",
"BID": "BV1ES4y1z7yC",
"Btitle": "卖车前,复盘“国产魔王M4”的改装思路...",
"hp": "521",
"hp_content": "521",
"Powertrain": "3.0T/7DCT",
"speed": "53.52",
"mods": "2",
"tyre": "F200",
"temperature": "13",
"lv": "B",
"time": "",
"accelerate": "--",
"limit": "163.465",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"90.68"
},
{
"year":"2017",
"car": "BMW M4",
"BID": "BV1oU4y1d7PB",
"Btitle": "【国产魔王计划】圈速测试,我差点哭了...",
"hp": "521",
"hp_content": "521",
"Powertrain": "3.0T/7DCT",
"speed": "54.77",
"mods": "2",
"tyre": "TD",
"temperature": "0",
"lv": "B",
"time": "",
"accelerate": "--",
"limit": "159.49",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"90.68"
},
{
"year":"2020",
"car": "911 S",
"BID": "BV16y4y167AL",
"Btitle": "911=赛场上的爸爸?",
"hp": "450",
"hp_content": "450",
"Powertrain": "3.0T/8DCT",
"speed": "54.83",
"mods": "0",
"tyre": "P0 PZ4",
"temperature": "13",
"lv": "S",
"time": "",
"accelerate": "3.28",
"limit": "163",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"147.30"
},
{
"year":"2017",
"car": "BMW M4",
"BID": "BV1kq4y1n7VB",
"Btitle": "M4换上CUP2能干911?-- 米其林全系运动胎指南",
"hp": "431",
"hp_content": "431",
"Powertrain": "3.0T/7DCT",
"speed": "55.43",
"mods": "0",
"tyre": "Cup 2C",
"temperature": "32",
"lv": "B",
"time": "",
"accelerate": "4.49",
"limit": "155.49",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"90.68"
},
{
"year":"2019",
"car": "F8 Tributo",
"BID": "BV1UQ4y1Q7CX",
"Btitle": "为了你们,我不能买法拉利了……",
"hp": "720",
"hp_content": "720",
"Powertrain": "3.9T/7DCT",
"speed": "55.49",
"mods": "0",
"tyre": "P0",
"temperature": "31",
"lv": "S",
"time": "",
"accelerate": "3.72",
"limit": "166.44",
"powerType":"0",
"producer":"2",
"nationality":"IT",
"price":"305.70"
},
{
"year":"2018",
"car": "718",
"BID": "BV1Ut4y1s7ZA",
"Btitle": "370马力丐版718,锤爆911?",
"hp": "370",
"hp_content": "250+150",
"Powertrain": "2.0T/7DCT",
"speed": "55.69",
"mods": "2",
"tyre": "CUP2R",
"temperature": "14",
"lv": "S",
"time": "",
"accelerate": "4.30",
"limit": "149.159",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"54.50"
},
{
"year":"2017",
"car": "911 GTS",
"BID": "BV1qi4y1c7kK",
"Btitle": "保时捷911,推头还是甩尾?",
"hp": "450",
"hp_content": "450",
"Powertrain": "3.0T/7DCT",
"speed": "55.80",
"mods": "0",
"tyre": "P0",
"temperature": "24",
"lv": "S",
"time": "",
"accelerate": "3.6",
"limit": "157",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"146.00"
},
{
"year":"2011",
"car": "E92 M3",
"BID": "BV1JK4y177cW",
"Btitle": "自吸老宝马怎么改,能赢新款M4?",
"hp": "420",
"hp_content": "420",
"Powertrain": "4.0/7DCT",
"speed": "55.80",
"mods": "2",
"tyre": "DH",
"temperature": "11",
"lv": "B",
"time": "",
"accelerate": "5.24",
"limit": "152",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"110.50"
},
{
"year":"2013",
"car": "丰田86",
"BID": "BV13L411e7Kc",
"Btitle": "丰田,比兰博基尼快?",
"hp": "233",
"hp_content": "233",
"Powertrain": "2.0L/6MT",
"speed": "55.88",
"mods": "2",
"tyre": "TD",
"temperature": "13",
"lv": "S",
"time": "",
"accelerate": "6.21",
"limit": "139.52",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"26.90"
},
{
"year":"2020",
"car": "BMW M2C",
"BID": "BV1UZ4y1y7qE",
"Btitle": "半热熔胎M2C跑不过街胎M4?",
"hp": "410",
"hp_content": "410",
"Powertrain": "3.0T/7DCT",
"speed": "55.95",
"mods": "2",
"tyre": "TR",
"temperature": "7",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "155.127",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"64.38"
},
{
"year":"2020",
"car": "Huracan EVO",
"BID": "BV1T44y1P7fP",
"Btitle": "喜欢本田的高转?不如买兰博基尼!",
"hp": "611",
"hp_content": "611",
"Powertrain": "5.2/7DCT",
"speed": "55.98",
"mods": "0",
"tyre": "P0",
"temperature": "4",
"lv": "S",
"time": "",
"accelerate": "3.60",
"limit": "162.601",
"powerType":"0",
"producer":"2",
"nationality":"IT",
"price":"254.00"
},
{
"year":"2020",
"car": "Cayman GTS",
"BID": "BV1s44y1V7aS",
"Btitle": "40万,约等于超跑!",
"hp": "340",
"hp_content": "340",
"Powertrain": "3.4/7DCT",
"speed": "56.14",
"mods": "0",
"tyre": "Cup2C",
"temperature": "11",
"lv": "S",
"time": "",
"accelerate": "4.45",
"limit": "150.08",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"87.5"
},
{
"year":"2017",
"car": "奥迪RS3",
"BID": "BV13L4y1g72v",
"Btitle": "500马力+热熔胎,奥迪RS3成为赛道新王?",
"hp": "530",
"hp_content": "530",
"Powertrain": "2.5T/7DCT",
"speed": "56.25",
"mods": "2",
"tyre": "Z214",
"temperature": "30",
"lv": "A",
"time": "",
"accelerate": "3.67",
"limit": "153.39",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"51.38"
},
{
"year":"2020",
"car": "迈锐宝XL",
"BID": "BV1R44y1b7sf",
"Btitle": "【迈锐宝XL进化3.0】15W我花完了,这TCR你就说要不要吧!",
"hp": "257",
"hp_content": "257",
"Powertrain": "2.0T/9AT",
"speed": "56.29",
"mods": "2",
"tyre": "DM",
"temperature": "27",
"lv": "B",
"time": "",
"accelerate": "6.21",
"limit": "141.09",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"21.99"
},
{
"year":"2022",
"car": "奥迪RS4",
"BID": "BV1NL411F79s",
"Btitle": "四驱打爆一切?旅行车键盘值0分",
"hp": "450",
"hp_content": "450",
"Powertrain": "2.9T/8AT",
"speed": "56.30",
"mods": "0",
"tyre": "SC6",
"temperature": "13",
"lv": "B",
"time": "",
"accelerate": "3.93",
"limit": "150.22",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"82.88"
},
{
"year":"2021",
"car": "G82 M4",
"BID": "BV1pP4y1x7dg",
"Btitle": "大80马力,新M4动力却输给老M4?",
"hp": "510",
"hp_content": "510",
"Powertrain": "3.0T/8AT",
"speed": "56.38",
"mods": "0",
"tyre": "PS4S",
"temperature": "31",
"lv": "B",
"time": "",
"accelerate": "4.34",
"limit": "154.03",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"87.99"
},
{
"year":"2017",
"car": "BMW M4",
"BID": "BV1pP4y1x7dg?",
"Btitle": "大80马力,新M4动力却输给老M4?",
"hp": "431",
"hp_content": "431",
"Powertrain": "3.0T/7DCT",
"speed": "56.45",
"mods": "0",
"tyre": "PS4S*",
"temperature": "31",
"lv": "B",
"time": "",
"accelerate": "4.49",
"limit": "152.19",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"90.68"
},
{
"year":"2018",
"car": "BMW M2",
"BID": "BV1zX4y137RJ",
"Btitle": "改装30W,宝马M2 vs M3 赛道大战~",
"hp": "410",
"hp_content": "410",
"Powertrain": "3.0/7DCT",
"speed": "56.60",
"mods": "2",
"tyre": "AR-1",
"temperature": "32",
"lv": "A",
"time": "",
"accelerate": "4.3",
"limit": "--",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"59.98"
},
{
"year":"2021",
"car": "C43",
"BID": "BV1e44y1V74o",
"Btitle": "四驱能让C43干翻C63么?",
"hp": "390",
"hp_content": "390",
"Powertrain": "3.0T/9AT",
"speed": "56.76",
"mods": "0",
"tyre": "CUP2C",
"temperature": "6",
"lv": "B",
"time": "",
"accelerate": "4.25",
"limit": "149.19",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"57.38"
},
{
"year":"2020",
"car": "BMW M2C",
"BID": "BV1tA411N7ot",
"Btitle": "换胎快1秒?键盘车神の终极改装~",
"hp": "410",
"hp_content": "410",
"Powertrain": "3.0T/7DCT",
"speed": "56.80",
"mods": "0",
"tyre": "Cup 2",
"temperature": "12",
"lv": "A",
"time": "",
"accelerate": "4.2",
"limit": "154",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"63.38"
},
{
"year":"2023",
"car": "718 GT4",
"BID": "BV19o4y1B7XG",
"Btitle": "250万,买一台手动挡718?",
"hp": "414",
"hp_content": "414",
"Powertrain": "4.0/6MT",
"speed": "56.81",
"mods": "0",
"tyre": "Race 2",
"temperature": "14",
"lv": "S",
"time": "",
"accelerate": "--",
"limit": "154.26",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"250.00"
},
{
"year":"2018",
"car": "BMW M3",
"BID": "BV1zX4y137RJ",
"Btitle": "改装30W,宝马M2 vs M3 赛道大战~",
"hp": "550",
"hp_content": "450+100",
"Powertrain": "3.0T/7DCT",
"speed": "56.90",
"mods": "1",
"tyre": "PS4S",
"temperature": "32",
"lv": "B",
"time": "",
"accelerate": "4.1",
"limit": "--",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"108.89"
},
{
"year":"2017",
"car": "GT-R",
"BID": "BV1nK4y1m7pg",
"Btitle": "虽然我的GTR车头很重,但是入弯却不推头~",
"hp": "555",
"hp_content": "555",
"Powertrain": "3.8T/6DCT",
"speed": "56.90",
"mods": "-1",
"tyre": "PS4S",
"temperature": "5",
"lv": "S",
"time": "",
"accelerate": "3.5",
"limit": "159",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"162.80"
},
{
"year":"2022",
"car": "伊兰特N",
"BID": "BV1MZ4y1D7w9",
"Btitle": "10000块四条胎,为了伊兰特N我尽力了!",
"hp": "280",
"hp_content": "280",
"Powertrain": "2.0T/8DCT",
"speed": "56.91",
"mods": "0",
"tyre": "Cup2C",
"temperature": "5",
"lv": "A",
"time": "",
"accelerate": "5.67",
"limit": "143.75",
"powerType":"0",
"producer":"2",
"nationality":"KR",
"price":"--"
},
{
"year":"2019",
"car": "奥迪S3",
"BID": "BV1b34y1C7PY",
"Btitle": "米其林CUP2C,卫途01,韩泰Z214对比测评,奥迪S3不推头了?",
"hp": "290",
"hp_content": "290",
"Powertrain": "2.0T/7DCT",
"speed": "56.98",
"mods": "2",
"tyre": "214",
"temperature": "4",
"lv": "A",
"time": "",
"accelerate": "5.04",
"limit": "144.02",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"36.38"
},
{
"year":"2017",
"car": "86",
"BID": "BV1zS4y1c7cL",
"Btitle": "2.0T内战,丰田SUPRA操控吊打丰田86?",
"hp": "240",
"hp_content": "240",
"Powertrain": "2.0T/6MT",
"speed": "57.05",
"mods": "2",
"tyre": "A052",
"temperature": "4",
"lv": "S",
"time": "",
"accelerate": "6.62",
"limit": "143.748",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"24.98"
},
{
"year":"2023",
"car": "影豹R",
"BID": "BV1wu411g7bK",
"Btitle": "13000公里,我把影豹R带去了纽北~",
"hp": "265",
"hp_content": "265",
"Powertrain": "2.0T/8AT",
"speed": "57.13",
"mods": "2",
"tyre": "A052",
"temperature": "28",
"lv": "A",
"time": "144",
"accelerate": "--",
"limit": "141.13",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"13.80"
},
{
"year":"2021",
"car": "Supra",
"BID": "BV1bU4y1V7Cf",
"Btitle": "SUPRA赛道吊打M-Power全系!",
"hp": "340",
"hp_content": "340",
"Powertrain": "3.0T/8AT",
"speed": "57.18",
"mods": "0",
"tyre": "PSS",
"temperature": "35",
"lv": "S",
"time": "",
"accelerate": "4.3",
"limit": "147.37",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"62.90"
},
{
"year":"2021",
"car": "X4M",
"BID": "BV1GF411h7Xk",
"Btitle": "Jacky说这玩意能赢我M4?——X4 M赛道测评",
"hp": "510",
"hp_content": "510",
"Powertrain": "3.0T/8AT",
"speed": "57.19",
"mods": "0",
"tyre": "SC6",
"temperature": "9",
"lv": "B",
"time": "",
"accelerate": "3.9",
"limit": "151.967",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"92.59"
},
{
"year":"2019",
"car": "BMW M4 ZCP",
"BID": "BV1mz4y1o7kP",
"Btitle": "千古谜题:宝马M4 vs M2C,谁厉害?",
"hp": "450",
"hp_content": "450",
"Powertrain": "3.0T/7DCT",
"speed": "57.24",
"mods": "0",
"tyre": "PSS",
"temperature": "32",
"lv": "B",
"time": "",
"accelerate": "4.5",
"limit": "150.42",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"89.99"
},
{
"year":"2017",
"car": "BMW M4",
"BID": "BV1Eo4y1k7PD",
"Btitle": "教主卖车?F82 M4超长伪干货全面详解。(对比C63 GIULIA QV RS5 911 G82)",
"hp": "431",
"hp_content": "431",
"Powertrain": "3.0T/7DCT",
"speed": "57.33",
"mods": "0",
"tyre": "PSS",
"temperature": "26",
"lv": "B",
"time": "",
"accelerate": "4.3",
"limit": "153.79",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"90.68"
},
{
"year":"2020",
"car": "A45s",
"BID": "BV1d3411z7rd",
"Btitle": "A 45 S比A 35强多少,能值70W?",
"hp": "421",
"hp_content": "421",
"Powertrain": "2.0T/8DCT",
"speed": "57.36",
"mods": "0",
"tyre": "PS4S",
"temperature": "24",
"lv": "A",
"time": "",
"accelerate": "3.99",
"limit": "150.29",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"57.98"
},
{
"year":"2020",
"car": "CT5 2.7",
"BID": "BV1pf4y1u7ds",
"Btitle": "全国最强CT5,2.7T能打几台宝马3系?",
"hp": "325",
"hp_content": "325",
"Powertrain": "2.7T/10AT",
"speed": "57.38",
"mods": "2",
"tyre": "CUP2R",
"temperature": "19",
"lv": "B",
"time": "",
"accelerate": "5.40",
"limit": "145.06",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"33.97"
},
{
"year":"2016",
"car": "Focus RS",
"BID": "BV1vJ411n7TY",
"Btitle": "【干货】如何用“4550块”爆改一台福克斯RS,赛道锤爆A45/EVO/S3...",
"hp": "350",
"hp_content": "350",
"Powertrain": "2.3T/6MT",
"speed": "57.40",
"mods": "2",
"tyre": "米其林Slick",
"temperature": "18",
"lv": "A",
"time": "144",
"accelerate": "5.0",
"limit": "144",
"powerType":"0",
"producer":"2",
"nationality":"US",
"price":"37.88"
},
{
"year":"2019",
"car": "奥迪S3",
"BID": "BV1b34y1C7PY",
"Btitle": "米其林CUP2C,卫途01,韩泰Z214对比测评,奥迪S3不推头了?",
"hp": "290",
"hp_content": "290",
"Powertrain": "2.0T/7DCT",
"speed": "57.56",
"mods": "0",
"tyre": "Cup2C",
"temperature": "4",
"lv": "A",
"time": "",
"accelerate": "5.04",
"limit": "141.90",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"36.38"
},
{
"year":"2022",
"car": "Model 3P",
"BID": "BV1YF411u7HW",
"Btitle": "真正的M3,Model 3P到底强在哪?",
"hp": "486",
"hp_content": "486",
"Powertrain": "E",
"speed": "57.58",
"mods": "0",
"tyre": "P0",
"temperature": "7",
"lv": "B",
"time": "",
"accelerate": "3.64",
"limit": "148.176",
"powerType":"1",
"producer":"1",
"nationality":"US",
"price":"36.79"
},
{
"year":"2011",
"car": "BMW 1M",
"BID": "BV1Gg411L7cQ",
"Btitle": "开3000km来北京 改装1M赛道屠榜M全系?",
"hp": "400",
"hp_content": "400",
"Powertrain": "3.0T/6MT",
"speed": "57.63",
"mods": "1",
"tyre": "Cup 2",
"temperature": "29",
"lv": "A",
"time": "",
"accelerate": "5.65",
"limit": "148.56",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"59.8"
},
{
"year":"2022",
"car": "伊兰特N",
"BID": "BV1TL411j7X5",
"Btitle": "M Power不行,N Power行!——伊兰特N赛道测试",
"hp": "280",
"hp_content": "280",
"Powertrain": "2.0T/8DCT",
"speed": "57.68",
"mods": "0",
"tyre": "PS4S(HN)",
"temperature": "4",
"lv": "A",
"time": "",
"accelerate": "5.67",
"limit": "145.83",
"powerType":"0",
"producer":"2",
"nationality":"KR",
"price":"--"
},
{
"year":"2005",
"car": "菱帅 进化6",
"BID": "BV1oM41127vJ",
"Btitle": "锻造菱帅王,杀爆新手村!",
"hp": "140",
"hp_content": "100+40",
"Powertrain": "1.6/5MT",
"speed": "57.71",
"mods": "2",
"tyre": "TD",
"temperature": "10",
"lv": "A",
"time": "",
"accelerate": "7.88",
"limit": "130.10",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"11.88"
},
{
"year":"2020",
"car": "迈锐宝XL",
"BID": "BV1VU4y1N7T8",
"Btitle": "【迈锐宝XL进化2.0】刷ECU,干掉宝马M2C!",
"hp": "257",
"hp_content": "257",
"Powertrain": "2.0T/9AT",
"speed": "57.77",
"mods": "2",
"tyre": "Cup2C",
"temperature": "26",
"lv": "B",
"time": "",
"accelerate": "6.11",
"limit": "141.06",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"20.49"
},
{
"year":"2019",
"car": "奥迪S3",
"BID": "BV1b34y1C7PY",
"Btitle": "米其林CUP2C,卫途01,韩泰Z214对比测评,奥迪S3不推头了?",
"hp": "290",
"hp_content": "290",
"Powertrain": "2.0T/7DCT",
"speed": "57.78",
"mods": "0",
"tyre": "卫途01",
"temperature": "4",
"lv": "A",
"time": "",
"accelerate": "5.04",
"limit": "141.02",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"36.38"
},
{
"year":"2022",
"car": "Giulia QV",
"BID": "BV15g411v7uF",
"Btitle": "四叶草,在哪快?",
"hp": "510",
"hp_content": "510",
"Powertrain": "2.9T/8AT",
"speed": "57.80",
"mods": "1",
"tyre": "CUP2 C",
"temperature": "36",
"lv": "B",
"time": "",
"accelerate": "4.33",
"limit": "153.06",
"powerType":"0",
"producer":"2",
"nationality":"IT",
"price":"90.28"
},
{
"year":"2022",
"car": "03+",
"BID": "BV1oH4y1S7zD",
"Btitle": "南北最强的领克03+,谁才是天下第一?",
"hp": "289",
"hp_content": "289",
"Powertrain": "2.0T/8AT",
"speed": "57.85",
"mods": "2",
"tyre": "TR",
"temperature": "40",
"lv": "A",
"time": "",
"accelerate": "5.91",
"limit": "139.89",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"22.28"
},
{
"year":"2023",
"car": "极氪001",
"BID": "BV1Zc411H7gx",
"Btitle": "国产电车,超越特斯拉?",
"hp": "544",
"hp_content": "544",
"Powertrain": "E",
"speed": "57.90",
"mods": "0",
"tyre": "PS4S",
"temperature": "17",
"lv": "C",
"time": "",
"accelerate": "3.78",
"limit": "153.22",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"38.60"
},
{
"year":"2022",
"car": "03+Cyan",
"BID": "BV1oH4y1S7zD",
"Btitle": "南北最强的领克03+,谁才是天下第一?",
"hp": "289",
"hp_content": "289",
"Powertrain": "2.0T/8AT",
"speed": "57.93",
"mods": "2",
"tyre": "TR",
"temperature": "40",
"lv": "A",
"time": "",
"accelerate": "6.41",
"limit": "138.93",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"25.68"
},
{
"year":"2020",
"car": "BMW M2C",
"BID": "BV1mz4y1o7kP",
"Btitle": "千古谜题:宝马M4 vs M2C,谁厉害?",
"hp": "410",
"hp_content": "410",
"Powertrain": "3.0T/7DCT",
"speed": "57.95",
"mods": "0",
"tyre": "PSS",
"temperature": "32",
"lv": "A",
"time": "",
"accelerate": "4.5",
"limit": "148.42",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"64.38"
},
{
"year":"2023",
"car": "影豹R",
"BID": "BV1wN4y197AG",
"Btitle": "完全体影豹R,强无敌!",
"hp": "265",
"hp_content": "265",
"Powertrain": "2.0T/8AT",
"speed": "57.95",
"mods": "2",
"tyre": "卫途02",
"temperature": "29",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "139.73",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"15.80"
},
{
"year":"2018",
"car": "MX-5 ND",
"BID": "BV1N14y1s7qE",
"Btitle": "超级MX5,BRZ杀手?",
"hp": "260",
"hp_content": "260",
"Powertrain": "2.0/6AT",
"speed": "57.95",
"mods": "2",
"tyre": "A052",
"temperature": "19",
"lv": "S",
"time": "",
"accelerate": "5.87",
"limit": "141.39",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"33.9"
},
{
"year":"2022",
"car": "Kona N",
"BID": "BV1Mb4y1H7xA",
"Btitle": "比伊兰特N更纯粹更好玩,Kona N赛道测试",
"hp": "280",
"hp_content": "280",
"Powertrain": "2.0T/8DCT",
"speed": "58.25",
"mods": "-1",
"tyre": "P0 PZ4",
"temperature": "7",
"lv": "A",
"time": "",
"accelerate": "5.77",
"limit": "142.27",
"powerType":"0",
"producer":"2",
"nationality":"KR",
"price":"--"
},
{
"year":"2016",
"car": "思域",
"BID": "BV1NK4y1A7UW",
"Btitle": "国货之光领克03+被东瀛烂仔暴打?",
"hp": "225",
"hp_content": "225",
"Powertrain": "1.5T/6MT",
"speed": "58.26",
"mods": "2",
"tyre": "AR-1/MC6",
"temperature": "15",
"lv": "A",
"time": "",
"accelerate": "6.8",
"limit": "139.34",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"12.99"
},
{
"year":"2022",
"car": "Model YP",
"BID": "BV17a411a76E",
"Btitle": "刷新SUV记录?Model YP赛道测试",
"hp": "486",
"hp_content": "486",
"Powertrain": "E",
"speed": "58.30",
"mods": "0",
"tyre": "PS4S",
"temperature": "6",
"lv": "B",
"time": "",
"accelerate": "4.02",
"limit": "147.40",
"powerType":"1",
"producer":"1",
"nationality":"US",
"price":"41.79"
},
{
"year":"2010",
"car": "C63",
"BID": "BV1r44y167gi",
"Btitle": "30多万的老奔驰-AMG C 63,操控堪比宝马M2C",
"hp": "487",
"hp_content": "487",
"Powertrain": "6.2/7AT",
"speed": "58.34",
"mods": "0",
"tyre": "PS4S",
"temperature": "5",
"lv": "B",
"time": "",
"accelerate": "4.4",
"limit": "-",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"133.80"
},
{
"year":"2018",
"car": "Golf GTI",
"BID": "BV1JA411G7WK",
"Btitle": "“GTI”吊打思域,成为键盘车神の前驱新神?",
"hp": "340",
"hp_content": "340",
"Powertrain": "2.0T/7DCT",
"speed": "58.35",
"mods": "2",
"tyre": "AR-1",
"temperature": "18",
"lv": "A",
"time": "",
"accelerate": "5.8",
"limit": "140.45",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"23.99"
},
{
"year":"2017",
"car": "BRZ",
"BID": "BV1L5411m7bj",
"Btitle": "我把丰田86开着火了...",
"hp": "200",
"hp_content": "200",
"Powertrain": "2.0/6MT",
"speed": "58.57",
"mods": "1",
"tyre": "卫途02",
"temperature": "15",
"lv": "S",
"time": "",
"accelerate": "7.63",
"limit": "134.892",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"26.98"
},
{
"year":"2018",
"car": "718",
"BID": "BV1cX4y1G7EH",
"Btitle": "保时捷中置跑车内战,自然吸气6缸 vs 涡轮增压4缸~ | 新老Cayman谁更强?",
"hp": "250",
"hp_content": "250",
"Powertrain": "2.0T/7DCT",
"speed": "58.60",
"mods": "0",
"tyre": "PS4S",
"temperature": "31",
"lv": "S",
"time": "",
"accelerate": "5.6",
"limit": "140",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"54.5"
},
{
"year":"2020",
"car": "A35",
"BID": "BV1rv411K7fD",
"Btitle": "35块买个签名,A 35就是AMG!",
"hp": "306",
"hp_content": "306",
"Powertrain": "2.0T/7DCT",
"speed": "58.61",
"mods": "0",
"tyre": "P0",
"temperature": "24",
"lv": "A",
"time": "",
"accelerate": "5.22",
"limit": "142.67",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"39.98"
},
{
"year":"2021",
"car": "GTI 8",
"BID": "BV1sm4y1o7Xs",
"Btitle": "30000块改装GTI,CYAN和N都是辣鸡?",
"hp": "220",
"hp_content": "220",
"Powertrain": "2.0T/7DCT",
"speed": "58.61",
"mods": "1",
"tyre": "Cup2C",
"temperature": "2",
"lv": "A",
"time": "",
"accelerate": "6.5",
"limit": "139.40",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"22.98"
},
{
"year":"2022",
"car": "BRZ",
"BID": "BV1MR4y1A7WS",
"Btitle": "全国首提二手新BRZ...",
"hp": "234",
"hp_content": "234",
"Powertrain": "2.4/6MT",
"speed": "58.66",
"mods": "0",
"tyre": "PS4",
"temperature": "32",
"lv": "S",
"time": "",
"accelerate": "6.63",
"limit": "137.578",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"30.88"
},
{
"year":"2013",
"car": "Cayman 981",
"BID": "BV1cX4y1G7EH",
"Btitle": "保时捷中置跑车内战,自然吸气6缸 vs 涡轮增压4缸~ | 新老Cayman谁更强?",
"hp": "275",
"hp_content": "275",
"Powertrain": "2.7/7DCT",
"speed": "58.70",
"mods": "1",
"tyre": "Cup 2",
"temperature": "32",
"lv": "S",
"time": "",
"accelerate": "5.6",
"limit": "139",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"72.7"
},
{
"year":"2005",
"car": "菱帅 进化6",
"BID": "BV1oM41127vJ",
"Btitle": "锻造菱帅王,杀爆新手村!",
"hp": "140",
"hp_content": "140",
"Powertrain": "1.6/5MT",
"speed": "58.77",
"mods": "2",
"tyre": "卫途01",
"temperature": "15",
"lv": "A",
"time": "",
"accelerate": "7.88",
"limit": "126.41",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"11.88"
},
{
"year":"2021",
"car": "Supra",
"BID": "BV1zS4y1c7cL",
"Btitle": "2.0T内战,丰田SUPRA操控吊打丰田86?",
"hp": "197",
"hp_content": "197",
"Powertrain": "2.0T/8AT",
"speed": "58.84",
"mods": "0",
"tyre": "PSS",
"temperature": "4",
"lv": "S",
"time": "",
"accelerate": "6.34",
"limit": "134.845",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"49.60"
},
{
"year":"2016",
"car": "Benz A45",
"BID": "BV1u64y1x757",
"Btitle": "AMG A 45的真实实力,领克03+怎么比",
"hp": "381",
"hp_content": "381",
"Powertrain": "2.0T/7DCT",
"speed": "58.86",
"mods": "0",
"tyre": "SC6",
"temperature": "6",
"lv": "A",
"time": "",
"accelerate": "4.28S",
"limit": "146.72",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"49.80"
},
{
"year":"2023",
"car": "思域Type-R",
"BID": "BV1az4y1p7ct",
"Btitle": "本田TYPE-R没有领克快,是人性的扭曲还是被充值了...",
"hp": "300",
"hp_content": "300",
"Powertrain": "2.0T/6MT",
"speed": "58.95",
"mods": "0",
"tyre": "PS4S",
"temperature": "29",
"lv": "A",
"time": "",
"accelerate": "5.72",
"limit": "142.71",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"40.20"
},
{
"year":"2016",
"car": "Focus RS",
"BID": "av78690283",
"Btitle": "特斯拉Model3 vs 福克斯RS,教主的战车终于出现了!",
"hp": "350",
"hp_content": "350",
"Powertrain": "2.3T/6MT",
"speed": "58.96",
"mods": "0",
"tyre": "PSS",
"temperature": "32",
"lv": "A",
"time": "138",
"accelerate": "5.0",
"limit": "138",
"powerType":"0",
"producer":"2",
"nationality":"US",
"price":"40.18"
},
{
"year":"2020",
"car": "小鹏P7",
"BID": "BV1Yq4y1E7Y8",
"Btitle": "小鹏P7能刷到1000ps么?",
"hp": "430",
"hp_content": "430",
"Powertrain": "E",
"speed": "59.00",
"mods": "1",
"tyre": "PS4",
"temperature": "13",
"lv": "C",
"time": "",
"accelerate": "4.3",
"limit": "148.20",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"34.99"
},
{
"year":"2020",
"car": "CT4",
"BID": "BV1Qy4y1g79T",
"Btitle": "开一台改装“CT4”干掉全场“M2C”是什么体验?-- CT4改装分析",
"hp": "270",
"hp_content": "270",
"Powertrain": "2.0T/8AT",
"speed": "59.10",
"mods": "2",
"tyre": "Cup 2",
"temperature": "21",
"lv": "B",
"time": "",
"accelerate": "6.22",
"limit": "140.24",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"25.97"
},
{
"year":"2010",
"car": "Z4",
"BID": "BV1P5411R7zs",
"Btitle": "轻松600马力神车,N54宝马Z4赛道测试",
"hp": "306",
"hp_content": "306",
"Powertrain": "3.0T/7DCT",
"speed": "59.19",
"mods": "1",
"tyre": "卫途02",
"temperature": "13",
"lv": "S",
"time": "",
"accelerate": "5.53",
"limit": "141.31",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"78.80"
},
{
"year":"2018",
"car": "奥迪S4",
"BID": "BV1KC4y1x7bk",
"Btitle": "V6+四驱=神,你想打几台86?--奥迪S4",
"hp": "354",
"hp_content": "354",
"Powertrain": "3T/8AT",
"speed": "59.30",
"mods": "0",
"tyre": "P0",
"temperature": "12",
"lv": "B",
"time": "",
"accelerate": "4.5",
"limit": "141",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"45.98"
},
{
"year":"2020",
"car": "CT5",
"BID": "BV1Gt4y1B7De",
"Btitle": "凯迪拉克CT5干掉宝马330i,要花多少钱?",
"hp": "241",
"hp_content": "241",
"Powertrain": "2.0T/10AT",
"speed": "59.50",
"mods": "1",
"tyre": "Cup 2",
"temperature": "26",
"lv": "B",
"time": "",
"accelerate": "--",
"limit": "129",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"33.97"
},
{
"year":"2022",
"car": "03+Cyan",
"BID": "BV1Aa411B7HM",
"Btitle": "领克03+Cyan徒有其表?值么?",
"hp": "265",
"hp_content": "265",
"Powertrain": "2.0T/8AT",
"speed": "59.54",
"mods": "0",
"tyre": "PS4S",
"temperature": "2",
"lv": "A",
"time": "",
"accelerate": "6.10",
"limit": "134.06",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"25.68"
},
{
"year":"2020",
"car": "领克03+",
"BID": "BV1A84y1c7fR",
"Btitle": "京城最速03+有多快,手动思域追不上?【头文字D追走】",
"hp": "254",
"hp_content": "254",
"Powertrain": "2.0T/8AT",
"speed": "59.61",
"mods": "2",
"tyre": "AR-1/MC6",
"temperature": "15",
"lv": "A",
"time": "",
"accelerate": "6.1",
"limit": "135.49",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"22.88"
},
{
"year":"2020",
"car": "飞凡F7",
"BID": "BV1oc411N7qx",
"Btitle": "飞凡F7跑赛道,是一种什么体验?",
"hp": "544",
"hp_content": "544",
"Powertrain": "E",
"speed": "59.63",
"mods": "0",
"tyre": "PS EV",
"temperature": "12",
"lv": "C",
"time": "",
"accelerate": "3.83",
"limit": "149.24",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"30.19"
},
{
"year":"2017",
"car": "86",
"BID": "BV1L5411m7bj",
"Btitle": "我把丰田86开着火了...",
"hp": "200",
"hp_content": "220",
"Powertrain": "2.0/6MT",
"speed": "59.78",
"mods": "1",
"tyre": "AD08R",
"temperature": "11",
"lv": "S",
"time": "",
"accelerate": "6.80",
"limit": "135.184",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"27.78"
},
{
"year":"2014",
"car": "飞度",
"BID": "BV13S4y1N7Gs",
"Btitle": "80000块移植K20A,飞度王!",
"hp": "220",
"hp_content": "220",
"Powertrain": "2.0/6MT",
"speed": "59.81",
"mods": "3",
"tyre": "NS2R",
"temperature": "30",
"lv": "A0",
"time": "",
"accelerate": "--",
"limit": "136.96",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"7.38"
},
{
"year":"2020",
"car": "野马",
"BID": "BV15f4y1u79p",
"Btitle": "2.3T原厂Mustang的操控如何,赛道轻松干掉原厂86?",
"hp": "299",
"hp_content": "299",
"Powertrain": "2.3T/10AT",
"speed": "59.89",
"mods": "0",
"tyre": "P0",
"temperature": "3",
"lv": "S",
"time": "",
"accelerate": "5.57",
"limit": "135.16",
"powerType":"0",
"producer":"2",
"nationality":"US",
"price":"36.98"
},
{
"year":"2021",
"car": "极氪001",
"BID": "BV1yS4y197Qp",
"Btitle": "赛道拉爆极氪001,要露馅了?",
"hp": "544",
"hp_content": "544",
"Powertrain": "E",
"speed": "59.91",
"mods": "0",
"tyre": "PC6",
"temperature": "10",
"lv": "C",
"time": "",
"accelerate": "3.88",
"limit": "149.39",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"36.00"
},
{
"year":"2013",
"car": "MINI JCW",
"BID": "BV1Bb4y1871i",
"Btitle": "小拉力赛车?MINI JCW R56性能测试!",
"hp": "211",
"hp_content": "211",
"Powertrain": "1.6T/6AT",
"speed": "59.96",
"mods": "2",
"tyre": "TD",
"temperature": "9",
"lv": "A0",
"time": "",
"accelerate": "6.08",
"limit": "136.57",
"powerType":"0",
"producer":"2",
"nationality":"UK",
"price":"39.90"
},
{
"year":"2019",
"car": "LOTUS GT410",
"BID": "BV1hZ4y1P7Br",
"Btitle": "路特斯GT410,比保时捷911更硬?",
"hp": "410",
"hp_content": "410",
"Powertrain": "3.5SC/6AT",
"speed": "60.0",
"mods": "0",
"tyre": "PS4S",
"temperature": "6",
"lv": "S",
"time": "",
"accelerate": "--",
"limit": "147",
"powerType":"0",
"producer":"2",
"nationality":"UK",
"price":"97.20"
},
{
"year":"2021",
"car": "Model Y",
"BID": "BV1qo4y1C7dt",
"Btitle": "SUV吊打小钢炮?特斯拉Model Y赛道测评!",
"hp": "432",
"hp_content": "432",
"Powertrain": "E",
"speed": "60.08",
"mods": "0",
"tyre": "K127",
"temperature": "21",
"lv": "B",
"time": "",
"accelerate": "4.95",
"limit": "145.751",
"powerType":"1",
"producer":"1",
"nationality":"US",
"price":"34.79"
},
{
"year":"2021",
"car": "宝马I4 M50",
"BID": "BV1cg411R7xw",
"Btitle": "半价M4,跑不过86?",
"hp": "544",
"hp_content": "544",
"Powertrain": "E",
"speed": "60.08",
"mods": "0",
"tyre": "K127",
"temperature": "27",
"lv": "B",
"time": "",
"accelerate": "3.87",
"limit": "150.53",
"powerType":"1",
"producer":"2",
"nationality":"DE",
"price":"53.99"
},
{
"year":"2005",
"car": "菱帅 进化5",
"BID": "BV1eK41167Xe",
"Btitle": "8000转的超级菱帅!【菱帅进化5.0】",
"hp": "125",
"hp_content": "125",
"Powertrain": "1.6/5MT",
"speed": "60.14",
"mods": "2",
"tyre": "卫途01",
"temperature": "14",
"lv": "A",
"time": "",
"accelerate": "8.96",
"limit": "122.91",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"11.88"
},
{
"year":"2014",
"car": "飞度",
"BID": "av48683350",
"Btitle": "7W买车7W改,超跑飞度成功刷新“键盘车神圈速榜”",
"hp": "151",
"hp_content": "151",
"Powertrain": "1.5/5MT",
"speed": "60.20",
"mods": "2",
"tyre": "RE71R+AD08R",
"temperature": "15",
"lv": "A0",
"time": "360",
"accelerate": "8.0",
"limit": "128",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"7.38"
},
{
"year":"2020",
"car": "领克03+",
"BID": "BV1NK4y1A7UW",
"Btitle": "国货之光领克03+被东瀛烂仔暴打?",
"hp": "254",
"hp_content": "254",
"Powertrain": "2.0T/8AT",
"speed": "60.21",
"mods": "1",
"tyre": "MC6",
"temperature": "15",
"lv": "A",
"time": "",
"accelerate": "6.3",
"limit": "133.08",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"22.88"
},
{
"year":"2019",
"car": "谢尔比GTE",
"BID": "BV1144y1g72R",
"Btitle": "40W的野马王,比超跑还宽",
"hp": "368",
"hp_content": "368",
"Powertrain": "2.3T/10AT",
"speed": "60.22",
"mods": "0",
"tyre": "P0",
"temperature": "13",
"lv": "S",
"time": "",
"accelerate": "6.77",
"limit": "135.371",
"powerType":"0",
"producer":"2",
"nationality":"US",
"price":"41.80"
},
{
"year":"2021",
"car": "CT5 尊贵型",
"BID": "BV1P64y1v7f1",
"Btitle": "30万级最强底盘中型轿车 可能就是它!",
"hp": "237",
"hp_content": "237",
"Powertrain": "2.0T/10AT",
"speed": "60.26",
"mods": "0",
"tyre": "PS4S",
"temperature": "29",
"lv": "B",
"time": "",
"accelerate": "7.73",
"limit": "130.22",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"32.27"
},
{
"year":"2023",
"car": "影豹R",
"BID": "BV1nV4y1Y7r3",
"Btitle": "影豹R+LSD,可能是全国首测?",
"hp": "265",
"hp_content": "265",
"Powertrain": "2.0T/8AT",
"speed": "60.33",
"mods": "2",
"tyre": "PS5",
"temperature": "29",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "140.00",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"15.80"
},
{
"year":"2014",
"car": "梅甘娜RS",
"BID": "BV1PU4y1878m",
"Btitle": "【最强手动挡钢炮特辑】梅甘娜RS,嘉年华ST,速翼特赛道PK!",
"hp": "275",
"hp_content": "275",
"Powertrain": "2.0T/6MT",
"speed": "60.35",
"mods": "0",
"tyre": "P0",
"temperature": "8",
"lv": "A",
"time": "",
"accelerate": "5.71",
"limit": "139.4",
"powerType":"0",
"producer":"2",
"nationality":"FR",
"price":"35.99"
},
{
"year":"2013",
"car": "宝马328i",
"BID": "BV1gY4y167rz",
"Btitle": "永远的标杆,宝马328i~",
"hp": "245",
"hp_content": "245",
"Powertrain": "2.0T/8AT",
"speed": "60.35",
"mods": "0",
"tyre": "PS4",
"temperature": "13",
"lv": "B",
"time": "",
"accelerate": "5.92",
"limit": "135.317",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"42.60"
},
{
"year":"2017",
"car": "Giulia 280",
"BID": "BV1mK411p7rK",
"Btitle": "Giulia是B级运动车最强?他能打爆CT5/宝马3/奥迪A4么?",
"hp": "330",
"hp_content": "330",
"Powertrain": "2.0T/8AT",
"speed": "60.40",
"mods": "1",
"tyre": "PS4S",
"temperature": "30",
"lv": "B",
"time": "",
"accelerate": "5.7",
"limit": "135",
"powerType":"0",
"producer":"2",
"nationality":"IT",
"price":"44.98"
},
{
"year":"2015",
"car": "Brz",
"BID": "BV1PP4y1E7m2",
"Btitle": "换上米其林PS4,BRZ直接干翻小钢炮",
"hp": "200",
"hp_content": "200",
"Powertrain": "2.0/6MT",
"speed": "60.50",
"mods": "0",
"tyre": "PS4",
"temperature": "10",
"lv": "S",
"time": "",
"accelerate": "7.70",
"limit": "133.77",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"26.90"
},
{
"year":"2020",
"car": "小鹏P7",
"BID": "BV1Ra4y1L7p2",
"Btitle": "电动妖刀!小鹏P7!",
"hp": "430",
"hp_content": "430",
"Powertrain": "E",
"speed": "60.60",
"mods": "0",
"tyre": "PS4",
"temperature": "31",
"lv": "C",
"time": "",
"accelerate": "4.3",
"limit": "145",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"33.99"
},
{
"year":"2017",
"car": "Brz",
"BID": "BV1PP4y1E7m2",
"Btitle": "换上米其林PS4,BRZ直接干翻小钢炮",
"hp": "200",
"hp_content": "200",
"Powertrain": "2.0/6AT",
"speed": "60.61",
"mods": "0",
"tyre": "PS4",
"temperature": "10",
"lv": "S",
"time": "",
"accelerate": "8.40",
"limit": "132.28",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"27.98"
},
{
"year":"2013",
"car": "MINI JCW",
"BID": "BV1Bb4y1871i",
"Btitle": "小拉力赛车?MINI JCW R56性能测试!",
"hp": "211",
"hp_content": "211",
"Powertrain": "1.6T/6AT",
"speed": "60.63",
"mods": "0",
"tyre": "PS4",
"temperature": "9",
"lv": "A0",
"time": "",
"accelerate": "6.08",
"limit": "138.19",
"powerType":"0",
"producer":"2",
"nationality":"UK",
"price":"39.90"
},
{
"year":"2020",
"car": "迈锐宝XL",
"BID": "BV1pU4y177kq",
"Btitle": "【迈锐宝XL进化1.0】白嫖的15W改装经费怎么花?",
"hp": "237",
"hp_content": "237",
"Powertrain": "2.0T/9AT",
"speed": "60.67",
"mods": "1",
"tyre": "Cup2C",
"temperature": "33",
"lv": "B",
"time": "",
"accelerate": "--",
"limit": "125.01",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"20.49"
},
{
"year":"2020",
"car": "BMW 330i",
"BID": "BV1Sv4y1f76E",
"Btitle": "宝马3系,运动亡者?-- 330i挑战CT5圈速",
"hp": "258",
"hp_content": "258",
"Powertrain": "2.0T/8AT",
"speed": "60.70",
"mods": "1",
"tyre": "MC6",
"temperature": "26",
"lv": "B",
"time": "",
"accelerate": "5.8",
"limit": "136",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"37.99"
},
{
"year":"2018",
"car": "BMW 540i",
"BID": "BV1Ya4y1i7mL",
"Btitle": "3.0T标轴C级运动王 | 宝马540 vs 捷豹XF对比测评",
"hp": "340",
"hp_content": "340",
"Powertrain": "3.0T/8AT",
"speed": "60.80",
"mods": "0",
"tyre": "Eagle F1*",
"temperature": "7",
"lv": "C",
"time": "",
"accelerate": "5.2",
"limit": "139",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"59.39"
},
{
"year":"2013",
"car": "福克斯ST",
"BID": "BV12g4y1z7WV",
"Btitle": "10万块买的“低配”梅甘娜RS有多香?--福克斯ST",
"hp": "275",
"hp_content": "275",
"Powertrain": "2.0T/6MT",
"speed": "60.80",
"mods": "1",
"tyre": "R888R/F1",
"temperature": "3",
"lv": "A",
"time": "",
"accelerate": "6.5",
"limit": "134",
"powerType":"0",
"producer":"2",
"nationality":"US",
"price":"25.98"
},
{
"year":"2020",
"car": "野马",
"BID": "BV1hQ4y1q7RW",
"Btitle": "流言终结者:Mustang操控真的很差?",
"hp": "350",
"hp_content": "350",
"Powertrain": "2.3T/10AT",
"speed": "60.84",
"mods": "1",
"tyre": "P0",
"temperature": "5",
"lv": "S",
"time": "",
"accelerate": "5.58",
"limit": "134.31",
"powerType":"0",
"producer":"2",
"nationality":"US",
"price":"36.98"
},
{
"year":"2020",
"car": "CT5 顶配",
"BID": "BV1ci4y1V7Ko",
"Btitle": "“洗浴城”的运动之王!--凯迪拉克CT5",
"hp": "241",
"hp_content": "241",
"Powertrain": "2.0T/10AT",
"speed": "60.90",
"mods": "0",
"tyre": "PS4S",
"temperature": "32",
"lv": "B",
"time": "",
"accelerate": "8.0",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"33.97"
},
{
"year":"2003",
"car": "菱帅",
"BID": "BV1TK411u7k2",
"Btitle": "我膨胀了!又买了台菱帅!【赛车 vs 街车】",
"hp": "100",
"hp_content": "100",
"Powertrain": "1.6/5MT",
"speed": "61.00",
"mods": "1",
"tyre": "AD08R",
"temperature": "27",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "125",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"11.88"
},
{
"year":"2021",
"car": "GTI 8",
"BID": "BV1F34y1Q7JC",
"Btitle": "GTI换上领克03+的轮胎,赛道圈速竟然这么快",
"hp": "220",
"hp_content": "220",
"Powertrain": "2.0T/7DCT",
"speed": "61.25",
"mods": "0",
"tyre": "MC6",
"temperature": "26",
"lv": "A",
"time": "",
"accelerate": "6.54",
"limit": "135.10",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"22.98"
},
{
"year":"2021",
"car": "02HB",
"BID": "BV1oq4y1h7vb",
"Btitle": "18万,是钢炮?",
"hp": "254",
"hp_content": "254",
"Powertrain": "2.0T/8AT",
"speed": "61.27",
"mods": "0",
"tyre": "PS4",
"temperature": "15",
"lv": "A",
"time": "",
"accelerate": "6.84",
"limit": "129.15",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"18.18"
},
{
"year":"2013",
"car": "福克斯ST",
"BID": "BV12g4y1z7WV",
"Btitle": "10万块买的“低配”梅甘娜RS有多香?",
"hp": "250",
"hp_content": "250",
"Powertrain": "2.0T/6MT",
"speed": "61.30",
"mods": "0",
"tyre": "F1",
"temperature": "13",
"lv": "A",
"time": "",
"accelerate": "6.7",
"limit": "135",
"powerType":"0",
"producer":"2",
"nationality":"US",
"price":"25.98"
},
{
"year":"2014",
"car": "思域SI",
"BID": "BV1ii4y1S7LB",
"Btitle": "大排量自吸前驱车,谁最强?",
"hp": "207",
"hp_content": "207",
"Powertrain": "2.4/6MT",
"speed": "61.33",
"mods": "1",
"tyre": "AD08R",
"temperature": "33",
"lv": "A",
"time": "",
"accelerate": "7.1",
"limit": "130.97",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"19.98"
},
{
"year":"2015",
"car": "Brz",
"BID": "BV11Z4y1Q7a8",
"Btitle": "手动vs自动,原厂BRZ赛道测试!",
"hp": "200",
"hp_content": "200",
"Powertrain": "2.0/6MT",
"speed": "61.38",
"mods": "0",
"tyre": "Advan DB",
"temperature": "10",
"lv": "S",
"time": "",
"accelerate": "7.70",
"limit": "133.33",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"26.90"
},
{
"year":"2019",
"car": "领克03+",
"BID": "BV1ui4y137jA",
"Btitle": "奥迪S3/大众GTI,被领克03+打爆了?",
"hp": "254",
"hp_content": "254",
"Powertrain": "2.0T/8AT",
"speed": "61.40",
"mods": "0",
"tyre": "MC6",
"temperature": "34",
"lv": "A",
"time": "",
"accelerate": "6.5",
"limit": "129",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"22.88"
},
{
"year":"2020",
"car": "奥迪A4L",
"BID": "BV1iD4y1Q7KH",
"Btitle": "奥迪A4L的“运动性”反而退步了?",
"hp": "252",
"hp_content": "252",
"Powertrain": "2.0T/7DCT",
"speed": "61.40",
"mods": "0",
"tyre": "P0",
"temperature": "32",
"lv": "B",
"time": "",
"accelerate": "6.6",
"limit": "129",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"39.68"
},
{
"year":"2022",
"car": "领克05+",
"BID": "BV1AF411V7CP",
"Btitle": "领克05+算的上“赛道级SUV”?",
"hp": "265",
"hp_content": "265",
"Powertrain": "2.0T/8AT",
"speed": "61.46",
"mods": "0",
"tyre": "PS4S",
"temperature": "22",
"lv": "A",
"time": "",
"accelerate": "6.86",
"limit": "130.86",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"23.58"
},
{
"year":"2006",
"car": "BMW M6",
"BID": "BV1Hy4y1Y7Jz",
"Btitle": "20多万,买F1的V10引擎~",
"hp": "507",
"hp_content": "507",
"Powertrain": "5.0/7SMG",
"speed": "61.50",
"mods": "0",
"tyre": "PS4S",
"temperature": "5",
"lv": "C",
"time": "",
"accelerate": "5.2",
"limit": "149",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"229.80"
},
{
"year":"2021",
"car": "沃尔沃S60 T8",
"BID": "BV1BA4y197S3",
"Btitle": "30万出头落地,S60 T8平替S4?",
"hp": "404",
"hp_content": "404",
"Powertrain": "2.0T+E/8AT",
"speed": "61.51",
"mods": "1",
"tyre": "P0",
"temperature": "27",
"lv": "B",
"time": "",
"accelerate": "5.10",
"limit": "138.26",
"powerType":"0",
"producer":"1",
"nationality":"SE",
"price":"46.19"
},
{
"year":"2013",
"car": "嘉年华ST",
"BID": "BV1PU4y1878m",
"Btitle": "【最强手动挡钢炮特辑】梅甘娜RS,嘉年华ST,速翼特赛道PK!",
"hp": "182",
"hp_content": "182",
"Powertrain": "1.6T/6MT",
"speed": "61.56",
"mods": "2",
"tyre": "AR-1",
"temperature": "8",
"lv": "A0",
"time": "",
"accelerate": "7.78",
"limit": "131.3",
"powerType":"0",
"producer":"2",
"nationality":"US",
"price":"18.59"
},
{
"year":"2017",
"car": "马自达3",
"BID": "BV1BT4y1C767",
"Btitle": "2.5引擎+手动挡,帝王马自达3来了!",
"hp": "192",
"hp_content": "192",
"Powertrain": "2.5/6MT",
"speed": "61.61",
"mods": "2",
"tyre": "PS4S",
"temperature": "3",
"lv": "A",
"time": "",
"accelerate": "7.96",
"limit": "130.76",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"11.30"
},
{
"year":"2017",
"car": "Brz",
"BID": "BV11Z4y1Q7a8",
"Btitle": "手动vs自动,原厂BRZ赛道测试!",
"hp": "200",
"hp_content": "200",
"Powertrain": "2.0/6AT",
"speed": "61.62",
"mods": "0",
"tyre": "DB",
"temperature": "10",
"lv": "S",
"time": "",
"accelerate": "8.40",
"limit": "129.20",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"27.98"
},
{
"year":"2023",
"car": "影豹R",
"BID": "BV1Wa4y1F72T",
"Btitle": "影豹R,低配如何变高配?",
"hp": "265",
"hp_content": "265",
"Powertrain": "2.0T/8AT",
"speed": "61.75",
"mods": "0",
"tyre": "卫途02",
"temperature": "40",
"lv": "A",
"time": "",
"accelerate": "5.91",
"limit": "132.16",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"13.80"
},
{
"year":"2020",
"car": "迈锐宝XL",
"BID": "BV1Xt4y1e78H",
"Btitle": "6台屌丝战车,谁能追上奔驰?",
"hp": "237",
"hp_content": "237",
"Powertrain": "2.0T/9AT",
"speed": "61.80",
"mods": "0",
"tyre": "MC5",
"temperature": "13",
"lv": "B",
"time": "",
"accelerate": "6.78",
"limit": "131",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"21.99"
},
{
"year":"2005",
"car": "菱帅 进化4",
"BID": "BV1dh411474c",
"Btitle": "【菱帅进化4.0】小马力的春药,3000块你要么?",
"hp": "100",
"hp_content": "100",
"Powertrain": "1.6/5MT",
"speed": "61.81",
"mods": "2",
"tyre": "AD08R",
"temperature": "5",
"lv": "A",
"time": "",
"accelerate": "10.5",
"limit": "",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"11.88"
},
{
"year":"2010",
"car": "SLK",
"BID": "BV1W84y1178n",
"Btitle": "6万块奔驰SLK,赛道日大杀四方?",
"hp": "184",
"hp_content": "184",
"Powertrain": "1.8SC/5AT",
"speed": "61.85",
"mods": "0",
"tyre": "PS5",
"temperature": "18",
"lv": "S",
"time": "",
"accelerate": "8.06",
"limit": "124.55",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"59.80"
},
{
"year":"2015",
"car": "野马",
"BID": "BV1hQ4y1q7RW",
"Btitle": "流言终结者:Mustang操控真的很差?",
"hp": "350",
"hp_content": "350",
"Powertrain": "2.3T/6AT",
"speed": "62.00",
"mods": "1",
"tyre": "PSS",
"temperature": "5",
"lv": "S",
"time": "",
"accelerate": "6.45",
"limit": "134.63",
"powerType":"0",
"producer":"2",
"nationality":"US",
"price":"39.98"
},
{
"year":"2018",
"car": "BMW 330Li",
"BID": "BV1uk4y1o7NE",
"Btitle": "5W改装宝马330Li,还跑不过捷豹XEL嘛?",
"hp": "252",
"hp_content": "252",
"Powertrain": "2.0T/8AT",
"speed": "62.10",
"mods": "1",
"tyre": "P7",
"temperature": "34",
"lv": "B",
"time": "",
"accelerate": "6.2",
"limit": "132",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"42.98"
},
{
"year":"2009",
"car": "G37",
"BID": "BV1mu411z7Y9",
"Btitle": "人人都吹的奇瑞王G37,就这?",
"hp": "351",
"hp_content": "351",
"Powertrain": "3.7/7AT",
"speed": "62.16",
"mods": "0",
"tyre": "PS4S",
"temperature": "11",
"lv": "B",
"time": "",
"accelerate": "5.78",
"limit": "138.9",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"49.10"
},
{
"year":"2020",
"car": "CT4",
"BID": "BV1wa4y1H72F",
"Btitle": "凯迪拉克CT4:美国的宝马E90~",
"hp": "270",
"hp_content": "270",
"Powertrain": "2.0T/8AT",
"speed": "62.20",
"mods": "2",
"tyre": "RE003",
"temperature": "1",
"lv": "B",
"time": "",
"accelerate": "6.67",
"limit": "135",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"25.97"
},
{
"year":"2021",
"car": "君威GS",
"BID": "BV1Xt4y1e78H",
"Btitle": "6台屌丝战车,谁能追上奔驰?",
"hp": "237",
"hp_content": "237",
"Powertrain": "2.0T/9AT",
"speed": "62.30",
"mods": "0",
"tyre": "MC5",
"temperature": "13",
"lv": "B",
"time": "",
"accelerate": "6.98",
"limit": "129",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"21.88"
},
{
"year":"2005",
"car": "菱帅 进化3",
"BID": "BV1ai4y1o7mB",
"Btitle": "【菱帅进化3.0】小马力前驱回归,自信男人の大杀器:Camber!",
"hp": "100",
"hp_content": "100",
"Powertrain": "1.6/5MT",
"speed": "62.35",
"mods": "1",
"tyre": "AD08R",
"temperature": "16",
"lv": "A",
"time": "",
"accelerate": "10.5",
"limit": "",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"11.88"
},
{
"year":"2017",
"car": "ATS-L",
"BID": "BV1Pv411s7Tf",
"Btitle": "去洗浴中心,凯迪拉克ATS-L和CT4谁更快?",
"hp": "279",
"hp_content": "279",
"Powertrain": "2.0T/8AT",
"speed": "62.40",
"mods": "0",
"tyre": "泰然者",
"temperature": "30",
"lv": "B",
"time": "",
"accelerate": "6.2",
"limit": "131",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"36.88"
},
{
"year":"2022",
"car": "思域",
"BID": "BV1zi4y117xQ",
"Btitle": "【米其林PS5】性能测试,11代思域圈速提升几秒?",
"hp": "182",
"hp_content": "182",
"Powertrain": "1.5T/CVT",
"speed": "62.42",
"mods": "0",
"tyre": "PS5",
"temperature": "0",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "131.46",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"14.29"
},
{
"year":"2020",
"car": "CT4",
"BID": "BV1wa4y1H72F",
"Btitle": "凯迪拉克CT4:美国的宝马E90~",
"hp": "237",
"hp_content": "237",
"Powertrain": "2.0T/8AT",
"speed": "62.50",
"mods": "0",
"tyre": "PC6SSR",
"temperature": "1",
"lv": "B",
"time": "",
"accelerate": "7.0",
"limit": "135",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"25.97"
},
{
"year":"2016",
"car": "速腾GLI",
"BID": "av76939481",
"Btitle": "GTI vs GLI -- 大众“推头王”之间的对决?",
"hp": "290",
"hp_content": "290",
"Powertrain": "2.0T/6DCT",
"speed": "62.50",
"mods": "1",
"tyre": "S001",
"temperature": "28",
"lv": "A",
"time": "303",
"accelerate": "6.6",
"limit": "134",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"21.88"
},
{
"year":"2014",
"car": "C63 507",
"BID": "BV1r44y167gi",
"Btitle": "30多万的老奔驰-AMG C 63,操控堪比宝马M2C",
"hp": "507",
"hp_content": "507",
"Powertrain": "6.2/7AT",
"speed": "62.54",
"mods": "0",
"tyre": "PS4S",
"temperature": "31",
"lv": "B",
"time": "",
"accelerate": "4.2",
"limit": "--",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"114.80"
},
{
"year":"2021",
"car": "星越L",
"BID": "BV1Yq4y1z77X",
"Btitle": "教主也造假?星越L比宝马3系快?",
"hp": "238",
"hp_content": "238",
"Powertrain": "2.0T/8AT",
"speed": "62.61",
"mods": "0",
"tyre": "Eagle F1",
"temperature": "12",
"lv": "A",
"time": "",
"accelerate": "7.07",
"limit": "-",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"18.52"
},
{
"year":"2006",
"car": "206 进化3",
"BID": "",
"Btitle": "",
"hp": "165",
"hp_content": "165",
"Powertrain": "1.8/5MT",
"speed": "62.68",
"mods": "2",
"tyre": "AD08R",
"temperature": "10",
"lv": "A0",
"time": "",
"accelerate": "7.1",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"CN",
"price":"7.78"
},
{
"year":"2021",
"car": "GTI 8",
"BID": "BV1F34y1Q7JC",
"Btitle": "GTI换上领克03+的轮胎,赛道圈速竟然这么快",
"hp": "220",
"hp_content": "220",
"Powertrain": "2.0T/7DCT",
"speed": "62.69",
"mods": "0",
"tyre": "邓禄普050",
"temperature": "26",
"lv": "A",
"time": "",
"accelerate": "6.92",
"limit": "132.71",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"22.98"
},
{
"year":"2019",
"car": "捷豹XEL",
"BID": "av40240801",
"Btitle": "你以为宝马3系同级别操控秒天秒地?试试捷豹XEL吧",
"hp": "250",
"hp_content": "250",
"Powertrain": "2.0T/8AT",
"speed": "62.80",
"mods": "0",
"tyre": "P7",
"temperature": "14",
"lv": "B",
"time": "1364",
"accelerate": "7.8",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"UK",
"price":"36.28"
},
{
"year":"2023",
"car": "影豹R",
"BID": "BV1va4y1A7sA",
"Btitle": "影豹R,低配才香?",
"hp": "265",
"hp_content": "265",
"Powertrain": "2.0T/8AT",
"speed": "62.81",
"mods": "0",
"tyre": "PS4",
"temperature": "28",
"lv": "A",
"time": "",
"accelerate": "5.91",
"limit": "133.66",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"13.80"
},
{
"year":"2021",
"car": "BMW 430i",
"BID": "BV1kK4y1R7Lb",
"Btitle": "2.0T卖60W+?宝马430i性能让我很失望",
"hp": "258",
"hp_content": "258",
"Powertrain": "2.0T/8AT",
"speed": "62.94",
"mods": "0",
"tyre": "泰然者+S001",
"temperature": "15",
"lv": "B",
"time": "",
"accelerate": "5.8",
"limit": "136.10",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"45.98"
},
{
"year":"2019",
"car": "领克03",
"BID": "av76609493",
"Btitle": "领克03四缸版,教主愿称他为“A级最速买菜王”",
"hp": "190",
"hp_content": "190",
"Powertrain": "2.0T/6AT",
"speed": "63.20",
"mods": "0",
"tyre": "Eagle F1",
"temperature": "6",
"lv": "A",
"time": "18",
"accelerate": "7.3",
"limit": "127",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"15.48"
},
{
"year":"2014",
"car": "捷豹XF",
"BID": "BV1Ya4y1i7mL",
"Btitle": "3.0T标轴C级运动王 | 宝马540 vs 捷豹XF对比测评",
"hp": "340",
"hp_content": "340",
"Powertrain": "3.0SC/8AT",
"speed": "63.20",
"mods": "0",
"tyre": "P0",
"temperature": "7",
"lv": "C",
"time": "",
"accelerate": "5.6",
"limit": "133",
"powerType":"0",
"producer":"2",
"nationality":"UK",
"price":"63.80"
},
{
"year":"2021",
"car": "BMW 325Li",
"BID": "BV1P64y1v7f1",
"Btitle": "30万级最强底盘中型轿车 可能就是它!",
"hp": "184",
"hp_content": "184",
"Powertrain": "2.0T/8AT",
"speed": "63.28",
"mods": "0",
"tyre": "P7",
"temperature": "29",
"lv": "B",
"time": "",
"accelerate": "7.90",
"limit": "125.26",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"34.69"
},
{
"year":"2020",
"car": "A220L",
"BID": "BV1Xt4y1e78H",
"Btitle": "6台屌丝战车,谁能追上奔驰?",
"hp": "190",
"hp_content": "190",
"Powertrain": "2.0T/7DCT",
"speed": "63.30",
"mods": "0",
"tyre": "泰然者",
"temperature": "13",
"lv": "A",
"time": "",
"accelerate": "7.1",
"limit": "128",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"29.98"
},
{
"year":"2022",
"car": "MG6",
"BID": "BV1Ra411a7vQ",
"Btitle": "花里胡哨之王,MG6...",
"hp": "181",
"hp_content": "181",
"Powertrain": "1.5T/7DCT",
"speed": "63.34",
"mods": "0",
"tyre": "泰然者",
"temperature": "9",
"lv": "A",
"time": "",
"accelerate": "7.93",
"limit": "124.711",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"13.98"
},
{
"year":"2021",
"car": "思域HB",
"BID": "BV1vR4y1T799",
"Btitle": "退步?思域11比10代还慢了...",
"hp": "177",
"hp_content": "177",
"Powertrain": "1.5T/CVT",
"speed": "63.37",
"mods": "0",
"tyre": "Advan DB",
"temperature": "13",
"lv": "A",
"time": "",
"accelerate": "7.98",
"limit": "127.82",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"14.39"
},
{
"year":"2015",
"car": "E320L",
"BID": "",
"Btitle": "",
"hp": "272",
"hp_content": "272",
"Powertrain": "3.0T/7AT",
"speed": "63.40",
"mods": "0",
"tyre": "PS4",
"temperature": "30",
"lv": "C",
"time": "",
"accelerate": "7.0",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"59.80"
},
{
"year":"2019",
"car": "天籁",
"BID": "av58322205",
"Btitle": "“天籁 | 凯美瑞 | 雅阁”赛道大横评,谁是“虚假的运动车型”?",
"hp": "252",
"hp_content": "252",
"Powertrain": "2.0T/CVT",
"speed": "63.50",
"mods": "0",
"tyre": "BluEearth-GT",
"temperature": "28",
"lv": "B",
"time": "139",
"accelerate": "6.9",
"limit": "131",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"21.58"
},
{
"year":"2016",
"car": "思域",
"BID": "BV1rp4y1H7Ce",
"Btitle": "思域比领克03强在哪?改装+原厂全面解析!",
"hp": "177",
"hp_content": "177",
"Powertrain": "1.5T/6MT",
"speed": "63.50",
"mods": "0",
"tyre": "MC5/DB",
"temperature": "6",
"lv": "A",
"time": "",
"accelerate": "7.0",
"limit": "130",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"12.99"
},
{
"year":"2013",
"car": "翼神",
"BID": "BV1ii4y1S7LB",
"Btitle": "大排量自吸前驱车,谁最强?",
"hp": "170",
"hp_content": "170",
"Powertrain": "2.4/5MT",
"speed": "63.53",
"mods": "2",
"tyre": "P7",
"temperature": "0",
"lv": "A0",
"time": "",
"accelerate": "7.5",
"limit": "--",
"powerType":"0",
"producer":"0",
"nationality":"JP",
"price":"13.08"
},
{
"year":"2010",
"car": "嘉年华",
"BID": "",
"Btitle": "",
"hp": "103",
"hp_content": "103",
"Powertrain": "1.5/5MT",
"speed": "63.55",
"mods": "1",
"tyre": "AD08R",
"temperature": "0",
"lv": "A0",
"time": "",
"accelerate": "--",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"9.29"
},
{
"year":"2018",
"car": "高尔夫GTI",
"BID": "BV1ui4y137jA",
"Btitle": "奥迪S3/大众GTI,被领克03+打爆了?",
"hp": "220",
"hp_content": "220",
"Powertrain": "2.0T/7DCT",
"speed": "63.60",
"mods": "0",
"tyre": "S001",
"temperature": "34",
"lv": "A",
"time": "",
"accelerate": "7.0",
"limit": "127",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"23.99"
},
{
"year":"2019",
"car": "菲斯塔",
"BID": "av60306282",
"Btitle": "“现代菲斯塔”打爆“名爵MG6”,教主再次冲出赛道~",
"hp": "204",
"hp_content": "204",
"Powertrain": "1.6T/7DCT",
"speed": "63.60",
"mods": "0",
"tyre": "耐克森",
"temperature": "6",
"lv": "A",
"time": "313",
"accelerate": "6.8",
"limit": "129",
"powerType":"0",
"producer":"1",
"nationality":"KR",
"price":"14.08"
},
{
"year":"2007",
"car": "C2 进化2",
"BID": "BV1yt4y1z7Mo",
"Btitle": "【206进化2.0】135马力,不怕飞度、速翼特!",
"hp": "135",
"hp_content": "135",
"Powertrain": "1.6/5MT",
"speed": "63.70",
"mods": "1",
"tyre": "AD08R",
"temperature": "14",
"lv": "A0",
"time": "",
"accelerate": "8.5",
"limit": "118",
"powerType":"0",
"producer":"1",
"nationality":"FR",
"price":"8.88"
},
{
"year":"2014",
"car": "飞度",
"BID": "av45970606",
"Btitle": "低配版“飞驰人生”!大众POLO vs 本田飞度",
"hp": "131",
"hp_content": "131",
"Powertrain": "1.5/5MT",
"speed": "63.70",
"mods": "1",
"tyre": "UC6",
"temperature": "6",
"lv": "A0",
"time": "753",
"accelerate": "8.7",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"7.38"
},
{
"year":"2012",
"car": "高尔夫GTI",
"BID": "av76939481",
"Btitle": "GTI vs GLI -- 大众“推头王”之间的对决?",
"hp": "230",
"hp_content": "230",
"Powertrain": "2.0T/6DCT",
"speed": "63.70",
"mods": "1",
"tyre": "P7",
"temperature": "28",
"lv": "A",
"time": "374",
"accelerate": "7.3",
"limit": "126",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"23.58"
},
{
"year":"2022",
"car": "思域",
"BID": "BV1vR4y1T799",
"Btitle": "退步?思域11比10代还慢了...",
"hp": "182",
"hp_content": "182",
"Powertrain": "1.5T/CVT",
"speed": "63.91",
"mods": "0",
"tyre": "玛吉斯510",
"temperature": "13",
"lv": "A",
"time": "",
"accelerate": "8.13",
"limit": "129.61",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"14.29"
},
{
"year":"2021",
"car": "奥迪A3",
"BID": "BV1Fb4y1Q7Fu",
"Btitle": "奔驰宝马被高尔夫吊打?凯特姐“进退两男”?",
"hp": "150",
"hp_content": "150",
"Powertrain": "1.4T/7DCT",
"speed": "64.07",
"mods": "0",
"tyre": "Eagle F1",
"temperature": "7",
"lv": "A",
"time": "",
"accelerate": "8.19",
"limit": "126.41",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"20.31"
},
{
"year":"2015",
"car": "福克斯",
"BID": "av53756099",
"Btitle": "改装福克斯有福克斯RS几分功力?",
"hp": "236",
"hp_content": "236",
"Powertrain": "1.5T/6AT",
"speed": "64.10",
"mods": "1",
"tyre": "AD08R",
"temperature": "23",
"lv": "A",
"time": "1407",
"accelerate": "--",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"14.98"
},
{
"year":"2018",
"car": "Golf 7",
"BID": "BV1DK4y1C7vt",
"Btitle": "【误】高尔夫R vs 福克斯ST?--赛道周末Vlog23",
"hp": "150",
"hp_content": "150",
"Powertrain": "1.4T/7DCT",
"speed": "64.10",
"mods": "0",
"tyre": "K117",
"temperature": "9",
"lv": "A",
"time": "",
"accelerate": "8.2",
"limit": "124",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"17.19"
},
{
"year":"2021",
"car": "Golf 8",
"BID": "BV1F34y1Q7JC",
"Btitle": "GTI换上领克03+的轮胎,赛道圈速竟然这么快",
"hp": "150",
"hp_content": "150",
"Powertrain": "1.4T/7DCT",
"speed": "64.12",
"mods": "0",
"tyre": "邓禄普sp",
"temperature": "7",
"lv": "A",
"time": "",
"accelerate": "8.08",
"limit": "125.95",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"22.98"
},
{
"year":"2005",
"car": "菱帅 进化2",
"BID": "BV1tA411v7CG",
"Btitle": "【菱帅进化2.0】买车7000块,改刹车7000块?",
"hp": "100",
"hp_content": "100",
"Powertrain": "1.6/5MT",
"speed": "64.20",
"mods": "1",
"tyre": "AD08R",
"temperature": "30",
"lv": "A",
"time": "",
"accelerate": "10.5",
"limit": "116",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"11.88"
},
{
"year":"2019",
"car": "Focus",
"BID": "BV1DK4y1C7vt",
"Btitle": "【误】高尔夫R vs 福克斯ST?--赛道周末Vlog23",
"hp": "184",
"hp_content": "184",
"Powertrain": "1.5T/8AT",
"speed": "64.30",
"mods": "0",
"tyre": "PS4",
"temperature": "9",
"lv": "A",
"time": "",
"accelerate": "8.9",
"limit": "121",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"13.48"
},
{
"year":"2018",
"car": "蔚来ES8",
"BID": "",
"Btitle": "内容下架了",
"hp": "652",
"hp_content": "652",
"Powertrain": "E",
"speed": "64.60",
"mods": "-1",
"tyre": "MC6",
"temperature": "9",
"lv": "C",
"time": "",
"accelerate": "4.4",
"limit": "130",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"44.80"
},
{
"year":"2019",
"car": "508L",
"BID": "BV1Xt4y1e78H",
"Btitle": "6台屌丝战车,谁能追上奔驰?",
"hp": "211",
"hp_content": "211",
"Powertrain": "1.8T/8AT",
"speed": "64.60",
"mods": "0",
"tyre": "固特异",
"temperature": "13",
"lv": "B",
"time": "",
"accelerate": "8.11",
"limit": "125",
"powerType":"0",
"producer":"1",
"nationality":"FR",
"price":"18.97"
},
{
"year":"2011",
"car": "嘉年华",
"BID": "BV1qh4y1k7Aa",
"Btitle": "马自达2 vs 嘉年华,谁是2万钢炮王?",
"hp": "103",
"hp_content": "103",
"Powertrain": "1.5/5MT",
"speed": "64.68",
"mods": "1",
"tyre": "AD08R",
"temperature": "19",
"lv": "A0",
"time": "",
"accelerate": "10.12",
"limit": "117.49",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"10.19"
},
{
"year":"2005",
"car": "菱帅 进化1",
"BID": "av31676244",
"Btitle": "6000多块钱改装一台车,你不撞车谁撞车?",
"hp": "100",
"hp_content": "100",
"Powertrain": "1.6/5MT",
"speed": "64.70",
"mods": "1",
"tyre": "AD08R",
"temperature": "27",
"lv": "A",
"time": "347",
"accelerate": "10.5",
"limit": "113",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"11.88"
},
{
"year":"2017",
"car": "Giulia 200",
"BID": "av43028847",
"Btitle": "百万级底盘居然赢不了教主二手菱帅?",
"hp": "200",
"hp_content": "200",
"Powertrain": "2.0T/8AT",
"speed": "64.70",
"mods": "0",
"tyre": "四季P7",
"temperature": "6",
"lv": "B",
"time": "185",
"accelerate": "--",
"limit": "--",
"powerType":"0",
"producer":"2",
"nationality":"IT",
"price":"31.98"
},
{
"year":"2016",
"car": "马自达3",
"BID": "BV1ii4y1S7LB",
"Btitle": "大排量自吸前驱车,谁最强?",
"hp": "192",
"hp_content": "192",
"Powertrain": "2.5/6AT",
"speed": "64.73",
"mods": "2",
"tyre": "MXM4",
"temperature": "33",
"lv": "A",
"time": "",
"accelerate": "8.5",
"limit": "119.7",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"11.49"
},
{
"year":"2011",
"car": "马自达2",
"BID": "BV1qh4y1k7Aa",
"Btitle": "马自达2 vs 嘉年华,谁是2万钢炮王?",
"hp": "102",
"hp_content": "102",
"Powertrain": "1.5/5MT",
"speed": "64.75",
"mods": "0",
"tyre": "PS3",
"temperature": "19",
"lv": "A0",
"time": "",
"accelerate": "9.76",
"limit": "118.24",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"8.88"
},
{
"year":"2013",
"car": "BMW 118i",
"BID": "av36925339",
"Btitle": "【键盘对决第1期】马自达昂克赛拉VS宝马118(下集)",
"hp": "170",
"hp_content": "170",
"Powertrain": "1.6T/8AT",
"speed": "64.80",
"mods": "0",
"tyre": "防爆P7",
"temperature": "31",
"lv": "A",
"time": "537",
"accelerate": "7.2",
"limit": "--",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"29.20"
},
{
"year":"2020",
"car": "K5",
"BID": "BV1Xt4y1e78H",
"Btitle": "6台屌丝战车,谁能追上奔驰?",
"hp": "240",
"hp_content": "240",
"Powertrain": "2.0T/8AT",
"speed": "65.10",
"mods": "0",
"tyre": "NEXEN",
"temperature": "13",
"lv": "B",
"time": "",
"accelerate": "7.48",
"limit": "127",
"powerType":"0",
"producer":"1",
"nationality":"KR",
"price":"18.98"
},
{
"year":"2020",
"car": "UNI-T",
"BID": "BV1ty4y1Y7Aw",
"Btitle": "国产小型SUV也配谈运动? -- 4车SUV大乱斗",
"hp": "180",
"hp_content": "180",
"Powertrain": "1.5T/7DCT",
"speed": "65.10",
"mods": "0",
"tyre": "MC6",
"temperature": "-3",
"lv": "A",
"time": "",
"accelerate": "9.95",
"limit": "118",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"11.39"
},
{
"year":"2021",
"car": "奥迪A3L",
"BID": "BV1Fb4y1Q7Fu",
"Btitle": "奔驰宝马被高尔夫吊打?凯特姐“进退两男”?",
"hp": "150",
"hp_content": "150",
"Powertrain": "1.4T/7DCT",
"speed": "65.39",
"mods": "0",
"tyre": "K127",
"temperature": "7",
"lv": "A",
"time": "",
"accelerate": "8.03",
"limit": "126.06",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"20.96"
},
{
"year":"2019",
"car": "名爵MG6",
"BID": "av60306282",
"Btitle": "“现代菲斯塔”打爆“名爵MG6”,教主再次冲出赛道~",
"hp": "169",
"hp_content": "169",
"Powertrain": "1.5T/7DCT",
"speed": "65.40",
"mods": "0",
"tyre": "T005",
"temperature": "23",
"lv": "A",
"time": "384",
"accelerate": "--",
"limit": "120",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"10.98"
},
{
"year":"2020",
"car": "阿特兹",
"BID": "BV1Xt4y1e78H",
"Btitle": "6台屌丝战车,谁能追上奔驰?",
"hp": "192",
"hp_content": "192",
"Powertrain": "2.5/6AT",
"speed": "65.40",
"mods": "0",
"tyre": "advan DB",
"temperature": "13",
"lv": "B",
"time": "",
"accelerate": "8.51",
"limit": "124",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"19.98"
},
{
"year":"2016",
"car": "奥迪A3",
"BID": "av57499131",
"Btitle": "“键盘车神”批判性的买了一台奥迪A3,开起来香么?",
"hp": "150",
"hp_content": "150",
"Powertrain": "1.4T/7DCT",
"speed": "65.50",
"mods": "0",
"tyre": "K115",
"temperature": "28",
"lv": "A",
"time": "1401",
"accelerate": "8.4",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"18.49"
},
{
"year":"2020",
"car": "零跑S01",
"BID": "BV1KX4y1K7jm",
"Btitle": "年轻人的第一台电动超跑!我买下次一定!",
"hp": "170",
"hp_content": "170",
"Powertrain": "E",
"speed": "65.50",
"mods": "0",
"tyre": "PS4",
"temperature": "0",
"lv": "S",
"time": "",
"accelerate": "7.5",
"limit": "119",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"12.99"
},
{
"year":"2020",
"car": "领克06",
"BID": "BV1ty4y1Y7Aw",
"Btitle": "国产小型SUV也配谈运动? -- 4车SUV大乱斗",
"hp": "177",
"hp_content": "177",
"Powertrain": "1.5T/7DCT",
"speed": "65.50",
"mods": "0",
"tyre": "UC6",
"temperature": "-3",
"lv": "A",
"time": "",
"accelerate": "8.59",
"limit": "122",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"11.86"
},
{
"year":"2020",
"car": "索纳塔",
"BID": "BV1Xt4y1e78H",
"Btitle": "6台屌丝战车,谁能追上奔驰?",
"hp": "240",
"hp_content": "240",
"Powertrain": "2.0T/8AT",
"speed": "65.60",
"mods": "0",
"tyre": "米其林",
"temperature": "13",
"lv": "B",
"time": "",
"accelerate": "7.28",
"limit": "129",
"powerType":"0",
"producer":"1",
"nationality":"KR",
"price":"18.38"
},
{
"year":"2021",
"car": "凡尔赛",
"BID": "BV18b4y1B7jV",
"Btitle": "底盘操控到底怎样 凡尔赛性能测试",
"hp": "175",
"hp_content": "175",
"Powertrain": "1.6T/8AT",
"speed": "65.62",
"mods": "0",
"tyre": "固特异 御乘",
"temperature": "10",
"lv": "B",
"time": "",
"accelerate": "9.21",
"limit": "122.82",
"powerType":"0",
"producer":"1",
"nationality":"FR",
"price":"18.67"
},
{
"year":"2019",
"car": "领克02",
"BID": "BV1wh411d7X4",
"Btitle": "【B站】发了台“领克02”给我,SUV我就不去赛道了么?",
"hp": "180",
"hp_content": "180",
"Powertrain": "1.5T/7DCT",
"speed": "65.70",
"mods": "0",
"tyre": "御乘",
"temperature": "26",
"lv": "A",
"time": "",
"accelerate": "8.8",
"limit": "121",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"18.88"
},
{
"year":"2016",
"car": "昂克塞拉",
"BID": "av36925339",
"Btitle": "【键盘对决第1期】马自达昂克赛拉VS宝马118(下集)",
"hp": "158",
"hp_content": "158",
"Powertrain": "2.0/6AT",
"speed": "65.80",
"mods": "0",
"tyre": "DB",
"temperature": "31",
"lv": "A",
"time": "537",
"accelerate": "--",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"15.29"
},
{
"year":"2020",
"car": "吉利ICON",
"BID": "BV1ty4y1Y7Aw",
"Btitle": "国产小型SUV也配谈运动? -- 4车SUV大乱斗",
"hp": "177",
"hp_content": "177",
"Powertrain": "1.5T/7DCT",
"speed": "65.80",
"mods": "0",
"tyre": "UC6",
"temperature": "-3",
"lv": "A",
"time": "",
"accelerate": "9.38",
"limit": "121",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"12.88"
},
{
"year":"2022",
"car": "拿铁DHT-PHEV",
"BID": "BV1yv4y1v7QU",
"Btitle": "键盘车神教的女主持人?",
"hp": "437",
"hp_content": "437",
"Powertrain": "1.5T+E",
"speed": "65.80",
"mods": "0",
"tyre": "浩悦4",
"temperature": "17",
"lv": "B",
"time": "",
"accelerate": "5.11",
"limit": "126.50",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"26.30"
},
{
"year":"2020",
"car": "CX-4",
"BID": "",
"Btitle": "www.zhihu.com/zvideo/1279892141532749824",
"hp": "196",
"hp_content": "196",
"Powertrain": "2.5/6AT",
"speed": "66.00",
"mods": "0",
"tyre": "DB",
"temperature": "36",
"lv": "A",
"time": "",
"accelerate": "9.4",
"limit": "121",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"17.98"
},
{
"year":"2022",
"car": "凌云S",
"BID": "BV1vr4y147p4",
"Btitle": "凌云S特调造假,让我白花18万?",
"hp": "261",
"hp_content": "261",
"Powertrain": "2.0T/7DCT",
"speed": "66.00",
"mods": "0",
"tyre": "UC6",
"temperature": "27",
"lv": "B",
"time": "",
"accelerate": "7.36",
"limit": "124.441",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"16.99"
},
{
"year":"2020",
"car": "奔驰A200L",
"BID": "BV1Fb4y1Q7Fu",
"Btitle": "奔驰宝马被高尔夫吊打?凯特姐“进退两男”?",
"hp": "163",
"hp_content": "163",
"Powertrain": "1.3T/7DCT",
"speed": "66.05",
"mods": "0",
"tyre": "primacy 4",
"temperature": "7",
"lv": "A",
"time": "",
"accelerate": "7.60",
"limit": "124",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"24.98"
},
{
"year":"2021",
"car": "BMW 120",
"BID": "BV1Fb4y1Q7Fu",
"Btitle": "奔驰宝马被高尔夫吊打?凯特姐“进退两男”?",
"hp": "140",
"hp_content": "140",
"Powertrain": "1.5T/7DCT",
"speed": "66.08",
"mods": "0",
"tyre": "K117",
"temperature": "7",
"lv": "A",
"time": "",
"accelerate": "8.71",
"limit": "116",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"20.38"
},
{
"year":"2022",
"car": "创酷RS",
"BID": "BV1Ga411Q755",
"Btitle": "10W最强SUV?创酷RS赛道测试...",
"hp": "184",
"hp_content": "184",
"Powertrain": "1.5T/CVT",
"speed": "66.17",
"mods": "0",
"tyre": "泰然者",
"temperature": "32",
"lv": "A",
"time": "",
"accelerate": "7.76",
"limit": "118.8",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"12.89"
},
{
"year":"2019",
"car": "凯美瑞",
"BID": "av58322205",
"Btitle": "“天籁 | 凯美瑞 | 雅阁”赛道大横评,谁是“虚假的运动车型”?",
"hp": "218",
"hp_content": "218",
"Powertrain": "2.5+E/CVT",
"speed": "66.20",
"mods": "0",
"tyre": "BluEearth-GT",
"temperature": "28",
"lv": "B",
"time": "252",
"accelerate": "8.8",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"23.98"
},
{
"year":"2006",
"car": "206 进化1",
"BID": "BV17E411u7hn",
"Btitle": "【206进化1.0】啥叫“新手改装4件套”?-- 8000块改一台标致206",
"hp": "130",
"hp_content": "106+14",
"Powertrain": "1.6/5MT",
"speed": "66.50",
"mods": "1",
"tyre": "AD08R",
"temperature": "29",
"lv": "A0",
"time": "",
"accelerate": "9.7",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"CN",
"price":"10.28"
},
{
"year":"2018",
"car": "飞度",
"BID": "BV1aK4y1a7nN",
"Btitle": "教主太膨胀,直接买超跑?",
"hp": "131",
"hp_content": "131",
"Powertrain": "1.5/5MT",
"speed": "66.80",
"mods": "-1",
"tyre": "固铂",
"temperature": "29",
"lv": "A0",
"time": "",
"accelerate": "8.8",
"limit": "120",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"7.38"
},
{
"year":"2020",
"car": "ES200",
"BID": "BV13b4y1t7z1",
"Btitle": "ES200,公路闪电?",
"hp": "173",
"hp_content": "173",
"Powertrain": "2.0/CVT",
"speed": "66.89",
"mods": "0",
"tyre": "AE51",
"temperature": "9",
"lv": "C",
"time": "",
"accelerate": "9.72",
"limit": "122.03",
"powerType":"0",
"producer":"2",
"nationality":"JP",
"price":"29.49"
},
{
"year":"2014",
"car": "POLO",
"BID": "av45970606",
"Btitle": "低配版“飞驰人生”!大众POLO vs 本田飞度",
"hp": "110",
"hp_content": "110",
"Powertrain": "1.6/6AT",
"speed": "66.90",
"mods": "1",
"tyre": "AD08R",
"temperature": "6",
"lv": "A0",
"time": "753",
"accelerate": "--",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"10.39"
},
{
"year":"2009",
"car": "思铂睿",
"BID": "av50120061",
"Btitle": "2.4高转自然吸气“大号思域SI买菜车”",
"hp": "181",
"hp_content": "181",
"Powertrain": "2.4/5AT",
"speed": "66.90",
"mods": "0",
"tyre": "原厂",
"temperature": "18",
"lv": "B",
"time": "313",
"accelerate": "--",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"23.78"
},
{
"year":"2018",
"car": "威朗",
"BID": "av38448486",
"Btitle": "要不是变速箱拦着,我能打十台思域",
"hp": "169",
"hp_content": "169",
"Powertrain": "1.5T/7DCT",
"speed": "67.20",
"mods": "0",
"tyre": "CC5",
"temperature": "26",
"lv": "A",
"time": "985",
"accelerate": "--",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"15.59"
},
{
"year":"2005",
"car": "菱帅",
"BID": "av24427381",
"Btitle": "7000块的二手菱帅,下赛道居然直追小钢炮?",
"hp": "100",
"hp_content": "100",
"Powertrain": "1.6/5MT",
"speed": "67.50",
"mods": "0",
"tyre": "原厂",
"temperature": "7",
"lv": "A",
"time": "410",
"accelerate": "10.2",
"limit": "112",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"11.88"
},
{
"year":"2018",
"car": "雅阁",
"BID": "av58322205",
"Btitle": "“天籁 | 凯美瑞 | 雅阁”赛道大横评,谁是“虚假的运动车型”?",
"hp": "215",
"hp_content": "215",
"Powertrain": "2.0E/CVT",
"speed": "67.60",
"mods": "0",
"tyre": "DB",
"temperature": "28",
"lv": "B",
"time": "377",
"accelerate": "8.1",
"limit": "",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"19.98"
},
{
"year":"2019",
"car": "捷达VS5",
"BID": "BV1ty4y1Y7Aw",
"Btitle": "国产小型SUV也配谈运动? -- 4车SUV大乱斗",
"hp": "150",
"hp_content": "150",
"Powertrain": "1.4T/6AT",
"speed": "67.70",
"mods": "0",
"tyre": "玲珑GREEN",
"temperature": "-3",
"lv": "A",
"time": "",
"accelerate": "9.02",
"limit": "117",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"9.88"
},
{
"year":"2012",
"car": "福克斯",
"BID": "av49386270",
"Btitle": "“平民操控王”经典福克斯,赛道圈速竟然倒数第一?",
"hp": "124",
"hp_content": "124",
"Powertrain": "1.8/5MT",
"speed": "67.90",
"mods": "0",
"tyre": "原厂",
"temperature": "18",
"lv": "A",
"time": "357",
"accelerate": "--",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"US",
"price":"9.98"
},
{
"year":"2006",
"car": "206",
"BID": "BV1oE411E7Q2",
"Btitle": "【206进化赛道篇】万元驾驶之王?“标致206”vs“东南菱帅”",
"hp": "120",
"hp_content": "120",
"Powertrain": "1.6/5MT",
"speed": "67.90",
"mods": "1",
"tyre": "原厂",
"temperature": "28",
"lv": "A0",
"time": "",
"accelerate": "9.7",
"limit": "-",
"powerType":"0",
"producer":"1",
"nationality":"FR",
"price":"10.28"
},
{
"year":"2022",
"car": "北汽魔方",
"BID": "BV1BP4y1m71E",
"Btitle": "9.99万买这么大个SUV?",
"hp": "188",
"hp_content": "188",
"Powertrain": "1.5T/7DCT",
"speed": "67.91",
"mods": "0",
"tyre": "UC6",
"temperature": "17",
"lv": "A",
"time": "",
"accelerate": "118.60",
"limit": "8.40",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"9.99"
},
{
"year":"2017",
"car": "雷凌",
"BID": "BV1Jp4y1972m",
"Btitle": "AE86的真正继任者,10W块买回家 -- 赛道周末Vlog24",
"hp": "116",
"hp_content": "116",
"Powertrain": "1.2T/CVT",
"speed": "68.60",
"mods": "0",
"tyre": "K415",
"temperature": "31",
"lv": "A",
"time": "",
"accelerate": "10.5",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"10.78"
},
{
"year":"--",
"car": "富康",
"BID": "BV1VN411o7fj",
"Btitle": "韩寒座驾,5000块你要么?",
"hp": "106",
"hp_content": "106",
"Powertrain": "1.6/5MT",
"speed": "68.60",
"mods": "0",
"tyre": "原厂",
"temperature": "30",
"lv": "A",
"time": "",
"accelerate": "--",
"limit": "--",
"powerType":"0",
"producer":"0",
"nationality":"FR",
"price":"7.58"
},
{
"year":"2008",
"car": "POLO",
"BID": "av55145767",
"Btitle": "打工1W多块买的老POLO,二挡5800转换挡变身买菜王!",
"hp": "86",
"hp_content": "86",
"Powertrain": "1.4/5MT",
"speed": "68.70",
"mods": "0",
"tyre": "原厂",
"temperature": "18",
"lv": "A0",
"time": "622",
"accelerate": "--",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"DE",
"price":"8.68"
},
{
"year":"2015",
"car": "菱悦",
"BID": "av77754389",
"Btitle": "【干货】菱悦VS菱帅,谁才是键盘车神的最爱?",
"hp": "120",
"hp_content": "120",
"Powertrain": "1.5/5MT",
"speed": "68.80",
"mods": "0",
"tyre": "原厂",
"temperature": "28",
"lv": "A",
"time": "35",
"accelerate": "--",
"limit": "--",
"powerType":"0",
"producer":"0",
"nationality":"CN",
"price":"5.69"
},
{
"year":"2006",
"car": "甲壳虫",
"BID": "av55879307",
"Btitle": "“逗斗车”的甲壳虫,教主借来豁赛道~",
"hp": "115",
"hp_content": "115",
"Powertrain": "2.0/6AT",
"speed": "69.80",
"mods": "1",
"tyre": "原厂",
"temperature": "21",
"lv": "A",
"time": "531",
"accelerate": "--",
"limit": "--",
"powerType":"0",
"producer":"2",
"nationality":"DE",
"price":"36.50"
},
{
"year":"2013",
"car": "奥拓",
"BID": "BV1R7411D72A",
"Btitle": "【送命挑战】普通人开“宝马”能赢赛车手开“奥拓”?",
"hp": "71",
"hp_content": "71",
"Powertrain": "1.0/5MT",
"speed": "71.30",
"mods": "0",
"tyre": "原厂",
"temperature": "30",
"lv": "A00",
"time": "",
"accelerate": "--",
"limit": "--",
"powerType":"0",
"producer":"1",
"nationality":"JP",
"price":"4.18"
},
{
"year":"2022",
"car": "五菱EV",
"BID": "BV1PL4y1c7qB",
"Btitle": "41马力,是钢炮?",
"hp": "41",
"hp_content": "41",
"Powertrain": "E",
"speed": "76.03",
"mods": "0",
"tyre": "玲珑",
"temperature": "27",
"lv": "A00",
"time": "",
"accelerate": "17.12",
"limit": "98.18",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"5.58"
},
{
"year":"2020",
"car": "五菱EV",
"BID": "BV1Rv411W7A7",
"Btitle": "27马力的赛道猛男,会翻车?",
"hp": "27",
"hp_content": "27",
"Powertrain": "E",
"speed": "87.50",
"mods": "0",
"tyre": "玲珑",
"temperature": "10",
"lv": "A00",
"time": "",
"accelerate": "∞",
"limit": "70",
"powerType":"1",
"producer":"0",
"nationality":"CN",
"price":"2.88"
}
]