From cd8c81b9a11dddbfb0ce877544ac3617b5d62950 Mon Sep 17 00:00:00 2001
From: wanghongjun <1445693971@qq,com>
Date: Tue, 24 Oct 2023 11:10:40 +0800
Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E7=BD=B2=E5=88=B0git?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../agentset/agentSetAccount.ctrl.php | 52 +
.../agentset/agentSetCommunity.ctrl.php | 82 +
.../agentset/agentSetStaff.ctrl.php | 121 +
.../controller/agentset/agentSetTags.ctrl.php | 84 +
.../web/controller/agentset/diyForm.ctrl.php | 110 +
.../web/controller/agentset/userset.ctrl.php | 49 +
.../web/controller/dashboard/adv.ctrl.php | 77 +
.../web/controller/dashboard/banner.ctrl.php | 70 +
.../controller/dashboard/category.ctrl.php | 259 +
.../web/controller/dashboard/cube.ctrl.php | 36 +
.../controller/dashboard/dashboard.ctrl.php | 42 +
.../web/controller/dashboard/foot.ctrl.php | 84 +
.../web/controller/dashboard/nav.ctrl.php | 70 +
.../web/controller/dashboard/notice.ctrl.php | 98 +
.../controller/dashboard/pagelinks.ctrl.php | 49 +
.../web/controller/dashboard/plugin.ctrl.php | 20 +
.../controller/dashboard/ruleCenter.ctrl.php | 78 +
.../web/controller/dashboard/sort.ctrl.php | 12 +
.../web/controller/diy/diy.ctrl.php | 643 +
.../finace/finaceWithdrawal.ctrl.php | 169 +
.../web/controller/finace/wlCash.ctrl.php | 389 +
.../controller/goodshouse/category.ctrl.php | 216 +
.../controller/goodshouse/goodshouse.ctrl.php | 1113 ++
.../web/controller/store/category.ctrl.php | 129 +
.../web/controller/store/comment.ctrl.php | 55 +
.../web/controller/store/group.ctrl.php | 58 +
.../web/controller/store/merchant.ctrl.php | 970 ++
.../web/controller/store/register.ctrl.php | 88 +
.../web/controller/store/settled.ctrl.php | 18 +
.../web/controller/store/storeApply.ctrl.php | 86 +
.../controller/store/storeCertified.ctrl.php | 100 +
.../controller/store/storeComment.ctrl.php | 185 +
.../controller/store/storeDynamic.ctrl.php | 191 +
.../controller/store/storeSetMeal.ctrl.php | 94 +
.../web/controller/user/login.ctrl.php | 207 +
.../web/controller/user/storelogin.ctrl.php | 153 +
.../controller/utility/attachment.ctrl.php | 372 +
.../web/controller/utility/member.ctrl.php | 21 +
.../web/controller/utility/qrcode.ctrl.php | 21 +
.../web/controller/utility/select.ctrl.php | 721 +
.../web/resource/address/bootstrap.css | 6727 +++++++++
.../web/resource/address/bootstrap.min.css | 1 +
.../web/resource/address/fastadmin.css | 5832 ++++++++
.../web/resource/address/fastadmin.min.css | 1 +
.../web/resource/address/jquery.js | 9814 +++++++++++++
.../web/resource/address/jquery.min.js | 4 +
.../web/resource/css/bootstrap-table.min.css | 1 +
.../web/resource/css/bootstrap.min.css | 5 +
.../web/resource/css/common_v2.css | 724 +
.../web/resource/css/select2.min.css | 104 +
.../web/resource/css/style.min.css | 1227 ++
.../web/resource/css/utility.css | 55 +
.../web/resource/diyForm/edit.css | 598 +
.../web/resource/diyForm/img/checkbox.png | Bin 0 -> 7440 bytes
.../web/resource/diyForm/img/city.png | Bin 0 -> 5418 bytes
.../web/resource/diyForm/img/datetime.png | Bin 0 -> 4591 bytes
.../web/resource/diyForm/img/img.png | Bin 0 -> 10238 bytes
.../web/resource/diyForm/img/select.png | Bin 0 -> 2470 bytes
.../web/resource/diyForm/img/text.png | Bin 0 -> 905 bytes
.../web/resource/diyForm/img/textarea.png | Bin 0 -> 3955 bytes
.../web/resource/diyForm/img/time.png | Bin 0 -> 12810 bytes
.../web/resource/download/activationcode.csv | 10 +
.../web/resource/download/aliarea.json | 1 +
.../web/resource/download/checkcodelist.csv | 2 +
.../resource/download/deliveryActivity.csv | 2 +
.../web/resource/download/locations.json | 1 +
.../web/resource/download/members.xlsx | Bin 0 -> 264919 bytes
.../web/resource/download/mobilelist.csv | 2 +
.../web/resource/download/robotnickname.csv | 4703 ++++++
.../web/resource/fonts/pingfang.ttf | Bin 0 -> 10325288 bytes
.../web/resource/goods/css/list.css | 88 +
.../web/resource/goods/js/category.js | 156 +
.../web/resource/goods/js/list.js | 255 +
.../web/resource/image/bg_repno.gif | Bin 0 -> 5117 bytes
.../web/resource/image/card.png | Bin 0 -> 7148 bytes
.../web/resource/image/cube/1.png | Bin 0 -> 11496 bytes
.../web/resource/image/cube/2.png | Bin 0 -> 16398 bytes
.../web/resource/image/cube/3.png | Bin 0 -> 19697 bytes
.../web/resource/image/cube/4.png | Bin 0 -> 22375 bytes
.../web/resource/image/cube/5.png | Bin 0 -> 24661 bytes
.../web/resource/image/cube/6.png | Bin 0 -> 31416 bytes
.../web/resource/images/chenggong.png | Bin 0 -> 10807 bytes
.../web/resource/images/dating_dynamic.png | Bin 0 -> 9052 bytes
.../web/resource/images/dating_home.png | Bin 0 -> 7876 bytes
.../web/resource/images/dating_matchmaker.png | Bin 0 -> 7257 bytes
.../web/resource/images/dating_video.png | Bin 0 -> 6267 bytes
.../web/resource/images/default.png | Bin 0 -> 16244 bytes
.../web/resource/images/default_adv.png | Bin 0 -> 17125 bytes
.../web/resource/images/festival_redpack.png | Bin 0 -> 187171 bytes
.../resource/images/festival_redpack_2.png | Bin 0 -> 186199 bytes
.../resource/images/festival_redpack_3.png | Bin 0 -> 147891 bytes
.../resource/images/festival_redpack_4.png | Bin 0 -> 79589 bytes
.../resource/images/festival_redpack_5.png | Bin 0 -> 171345 bytes
.../resource/images/festival_redpack_6.png | Bin 0 -> 264672 bytes
.../web/resource/images/gengxin.png | Bin 0 -> 10015 bytes
.../web/resource/images/icon_popup3696b4.png | Bin 0 -> 2193 bytes
.../web/resource/images/loading.gif | Bin 0 -> 748 bytes
.../web/resource/images/new_redpack.png | Bin 0 -> 111231 bytes
.../web/resource/images/nopic-small.jpg | Bin 0 -> 2985 bytes
.../web/resource/images/nopic.jpg | Bin 0 -> 36563 bytes
.../web/resource/images/nopic.png | Bin 0 -> 4367 bytes
.../web/resource/images/not-prize.png | Bin 0 -> 5777 bytes
.../web/resource/images/pixel.gif | Bin 0 -> 43 bytes
.../resource/images/recruit_enterprise.png | Bin 0 -> 2328 bytes
.../web/resource/images/recruit_part.png | Bin 0 -> 8625 bytes
.../web/resource/images/recruit_resume.png | Bin 0 -> 3567 bytes
.../web/resource/images/recruit_work.png | Bin 0 -> 2529 bytes
.../web/resource/images/star-off-big.png | Bin 0 -> 895 bytes
.../web/resource/images/star-on-big.png | Bin 0 -> 1031 bytes
.../web/resource/images/success-small.png | Bin 0 -> 1621 bytes
.../web/resource/images/update-file.png | Bin 0 -> 2153 bytes
.../web/resource/images/upgrade.png | Bin 0 -> 49091 bytes
.../weliam_smartcity/web/resource/js/biz.js | 602 +
.../web/resource/js/bootstrap-table.min.js | 8 +
.../web/resource/js/common.js | 285 +
.../js/contextMenu/jquery.contextMenu.css | 140 +
.../js/contextMenu/jquery.contextMenu.js | 1686 +++
.../web/resource/js/district.min.js | 5421 +++++++
.../web/resource/js/diyarea.js | 50 +
.../weliam_smartcity/web/resource/js/form.js | 155 +
.../web/resource/js/goods_selector.js | 443 +
.../web/resource/js/html2canvas.js | 215 +
.../weliam_smartcity/web/resource/js/init.js | 1268 ++
.../web/resource/js/jquery-1.11.1.min.js | 4 +
.../web/resource/js/jquery-form.js | 1277 ++
.../web/resource/js/jquery.form.min.js | 11 +
.../web/resource/js/jquery.gcjs.js | 702 +
.../web/resource/js/jquery.qrcode.min.js | 28 +
.../web/resource/js/jquery.ui.js | 125 +
.../web/resource/js/select2.min.js | 3 +
.../weliam_smartcity/web/resource/js/table.js | 232 +
.../weliam_smartcity/web/resource/js/tip.js | 211 +
.../weliam_smartcity/web/resource/js/util.js | 924 ++
.../weliam_smartcity/web/resource/js/vue.js | 11944 ++++++++++++++++
.../web/resource/js/weliam.js | 69 +
135 files changed, 63508 insertions(+)
create mode 100644 addons/weliam_smartcity/web/controller/agentset/agentSetAccount.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/agentset/agentSetCommunity.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/agentset/agentSetStaff.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/agentset/agentSetTags.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/agentset/diyForm.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/agentset/userset.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/dashboard/adv.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/dashboard/banner.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/dashboard/category.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/dashboard/cube.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/dashboard/dashboard.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/dashboard/foot.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/dashboard/nav.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/dashboard/notice.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/dashboard/pagelinks.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/dashboard/plugin.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/dashboard/ruleCenter.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/dashboard/sort.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/diy/diy.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/finace/finaceWithdrawal.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/finace/wlCash.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/goodshouse/category.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/goodshouse/goodshouse.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/store/category.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/store/comment.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/store/group.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/store/merchant.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/store/register.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/store/settled.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/store/storeApply.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/store/storeCertified.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/store/storeComment.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/store/storeDynamic.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/store/storeSetMeal.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/user/login.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/user/storelogin.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/utility/attachment.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/utility/member.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/utility/qrcode.ctrl.php
create mode 100644 addons/weliam_smartcity/web/controller/utility/select.ctrl.php
create mode 100644 addons/weliam_smartcity/web/resource/address/bootstrap.css
create mode 100644 addons/weliam_smartcity/web/resource/address/bootstrap.min.css
create mode 100644 addons/weliam_smartcity/web/resource/address/fastadmin.css
create mode 100644 addons/weliam_smartcity/web/resource/address/fastadmin.min.css
create mode 100644 addons/weliam_smartcity/web/resource/address/jquery.js
create mode 100644 addons/weliam_smartcity/web/resource/address/jquery.min.js
create mode 100644 addons/weliam_smartcity/web/resource/css/bootstrap-table.min.css
create mode 100644 addons/weliam_smartcity/web/resource/css/bootstrap.min.css
create mode 100644 addons/weliam_smartcity/web/resource/css/common_v2.css
create mode 100644 addons/weliam_smartcity/web/resource/css/select2.min.css
create mode 100644 addons/weliam_smartcity/web/resource/css/style.min.css
create mode 100644 addons/weliam_smartcity/web/resource/css/utility.css
create mode 100644 addons/weliam_smartcity/web/resource/diyForm/edit.css
create mode 100644 addons/weliam_smartcity/web/resource/diyForm/img/checkbox.png
create mode 100644 addons/weliam_smartcity/web/resource/diyForm/img/city.png
create mode 100644 addons/weliam_smartcity/web/resource/diyForm/img/datetime.png
create mode 100644 addons/weliam_smartcity/web/resource/diyForm/img/img.png
create mode 100644 addons/weliam_smartcity/web/resource/diyForm/img/select.png
create mode 100644 addons/weliam_smartcity/web/resource/diyForm/img/text.png
create mode 100644 addons/weliam_smartcity/web/resource/diyForm/img/textarea.png
create mode 100644 addons/weliam_smartcity/web/resource/diyForm/img/time.png
create mode 100644 addons/weliam_smartcity/web/resource/download/activationcode.csv
create mode 100644 addons/weliam_smartcity/web/resource/download/aliarea.json
create mode 100644 addons/weliam_smartcity/web/resource/download/checkcodelist.csv
create mode 100644 addons/weliam_smartcity/web/resource/download/deliveryActivity.csv
create mode 100644 addons/weliam_smartcity/web/resource/download/locations.json
create mode 100644 addons/weliam_smartcity/web/resource/download/members.xlsx
create mode 100644 addons/weliam_smartcity/web/resource/download/mobilelist.csv
create mode 100644 addons/weliam_smartcity/web/resource/download/robotnickname.csv
create mode 100644 addons/weliam_smartcity/web/resource/fonts/pingfang.ttf
create mode 100644 addons/weliam_smartcity/web/resource/goods/css/list.css
create mode 100644 addons/weliam_smartcity/web/resource/goods/js/category.js
create mode 100644 addons/weliam_smartcity/web/resource/goods/js/list.js
create mode 100644 addons/weliam_smartcity/web/resource/image/bg_repno.gif
create mode 100644 addons/weliam_smartcity/web/resource/image/card.png
create mode 100644 addons/weliam_smartcity/web/resource/image/cube/1.png
create mode 100644 addons/weliam_smartcity/web/resource/image/cube/2.png
create mode 100644 addons/weliam_smartcity/web/resource/image/cube/3.png
create mode 100644 addons/weliam_smartcity/web/resource/image/cube/4.png
create mode 100644 addons/weliam_smartcity/web/resource/image/cube/5.png
create mode 100644 addons/weliam_smartcity/web/resource/image/cube/6.png
create mode 100644 addons/weliam_smartcity/web/resource/images/chenggong.png
create mode 100644 addons/weliam_smartcity/web/resource/images/dating_dynamic.png
create mode 100644 addons/weliam_smartcity/web/resource/images/dating_home.png
create mode 100644 addons/weliam_smartcity/web/resource/images/dating_matchmaker.png
create mode 100644 addons/weliam_smartcity/web/resource/images/dating_video.png
create mode 100644 addons/weliam_smartcity/web/resource/images/default.png
create mode 100644 addons/weliam_smartcity/web/resource/images/default_adv.png
create mode 100644 addons/weliam_smartcity/web/resource/images/festival_redpack.png
create mode 100644 addons/weliam_smartcity/web/resource/images/festival_redpack_2.png
create mode 100644 addons/weliam_smartcity/web/resource/images/festival_redpack_3.png
create mode 100644 addons/weliam_smartcity/web/resource/images/festival_redpack_4.png
create mode 100644 addons/weliam_smartcity/web/resource/images/festival_redpack_5.png
create mode 100644 addons/weliam_smartcity/web/resource/images/festival_redpack_6.png
create mode 100644 addons/weliam_smartcity/web/resource/images/gengxin.png
create mode 100644 addons/weliam_smartcity/web/resource/images/icon_popup3696b4.png
create mode 100644 addons/weliam_smartcity/web/resource/images/loading.gif
create mode 100644 addons/weliam_smartcity/web/resource/images/new_redpack.png
create mode 100644 addons/weliam_smartcity/web/resource/images/nopic-small.jpg
create mode 100644 addons/weliam_smartcity/web/resource/images/nopic.jpg
create mode 100644 addons/weliam_smartcity/web/resource/images/nopic.png
create mode 100644 addons/weliam_smartcity/web/resource/images/not-prize.png
create mode 100644 addons/weliam_smartcity/web/resource/images/pixel.gif
create mode 100644 addons/weliam_smartcity/web/resource/images/recruit_enterprise.png
create mode 100644 addons/weliam_smartcity/web/resource/images/recruit_part.png
create mode 100644 addons/weliam_smartcity/web/resource/images/recruit_resume.png
create mode 100644 addons/weliam_smartcity/web/resource/images/recruit_work.png
create mode 100644 addons/weliam_smartcity/web/resource/images/star-off-big.png
create mode 100644 addons/weliam_smartcity/web/resource/images/star-on-big.png
create mode 100644 addons/weliam_smartcity/web/resource/images/success-small.png
create mode 100644 addons/weliam_smartcity/web/resource/images/update-file.png
create mode 100644 addons/weliam_smartcity/web/resource/images/upgrade.png
create mode 100644 addons/weliam_smartcity/web/resource/js/biz.js
create mode 100644 addons/weliam_smartcity/web/resource/js/bootstrap-table.min.js
create mode 100644 addons/weliam_smartcity/web/resource/js/common.js
create mode 100644 addons/weliam_smartcity/web/resource/js/contextMenu/jquery.contextMenu.css
create mode 100644 addons/weliam_smartcity/web/resource/js/contextMenu/jquery.contextMenu.js
create mode 100644 addons/weliam_smartcity/web/resource/js/district.min.js
create mode 100644 addons/weliam_smartcity/web/resource/js/diyarea.js
create mode 100644 addons/weliam_smartcity/web/resource/js/form.js
create mode 100644 addons/weliam_smartcity/web/resource/js/goods_selector.js
create mode 100644 addons/weliam_smartcity/web/resource/js/html2canvas.js
create mode 100644 addons/weliam_smartcity/web/resource/js/init.js
create mode 100644 addons/weliam_smartcity/web/resource/js/jquery-1.11.1.min.js
create mode 100644 addons/weliam_smartcity/web/resource/js/jquery-form.js
create mode 100644 addons/weliam_smartcity/web/resource/js/jquery.form.min.js
create mode 100644 addons/weliam_smartcity/web/resource/js/jquery.gcjs.js
create mode 100644 addons/weliam_smartcity/web/resource/js/jquery.qrcode.min.js
create mode 100644 addons/weliam_smartcity/web/resource/js/jquery.ui.js
create mode 100644 addons/weliam_smartcity/web/resource/js/select2.min.js
create mode 100644 addons/weliam_smartcity/web/resource/js/table.js
create mode 100644 addons/weliam_smartcity/web/resource/js/tip.js
create mode 100644 addons/weliam_smartcity/web/resource/js/util.js
create mode 100644 addons/weliam_smartcity/web/resource/js/vue.js
create mode 100644 addons/weliam_smartcity/web/resource/js/weliam.js
diff --git a/addons/weliam_smartcity/web/controller/agentset/agentSetAccount.ctrl.php b/addons/weliam_smartcity/web/controller/agentset/agentSetAccount.ctrl.php
new file mode 100644
index 0000000..dda894a
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/agentset/agentSetAccount.ctrl.php
@@ -0,0 +1,52 @@
+ $_W['uniacid'] , 'id' => $_W['aid']]);
+ if (checksubmit('submit')) {
+ if (empty($_GPC['pw']) || empty($_GPC['pw2'])) {
+ wl_message('密码不能为空,请重新填写!' , 'referer' , 'error');
+ }
+ if ($_GPC['pw'] == $_GPC['pw2']) {
+ wl_message('新密码与原密码一致,请检查!' , 'referer' , 'error');
+ }
+ $password_old = Util::encryptedPassword($_GPC['pw'] , $user['salt']);
+ if ($user['password'] != $password_old) {
+ wl_message('原密码错误,请重新填写!' , 'referer' , 'error');
+ }
+ $result = '';
+ $members = ['password' => Util::encryptedPassword($_GPC['pw2'] , $user['salt'])];
+ $result = pdo_update(PDO_NAME . 'agentusers' , $members , ['id' => $_W['aid']]);
+ wl_message('修改成功!' , 'referer' , 'success');
+ }
+ include wl_template('agentset/profile');
+ }
+ //代理商分享信息设置
+ public function shareSet(){
+ global $_W,$_GPC;
+ if (checksubmit('submit')) {
+ $share = $_GPC['share'];
+ Setting::agentsetting_save($share, 'share_set');
+
+ wl_message('更新设置成功!',referer());
+ }
+ //获取设置信息
+ $settings = Setting::agentsetting_read('share_set');;
+
+ include wl_template('agentset/shareSet');
+ }
+
+
+
+}
diff --git a/addons/weliam_smartcity/web/controller/agentset/agentSetCommunity.ctrl.php b/addons/weliam_smartcity/web/controller/agentset/agentSetCommunity.ctrl.php
new file mode 100644
index 0000000..ce29f15
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/agentset/agentSetCommunity.ctrl.php
@@ -0,0 +1,82 @@
+ $id]);
+ Setting::agentsetting_save($community , 'community');
+ show_json(1);
+ }
+ //社群添加
+ function communityAdd()
+ {
+ global $_W , $_GPC;
+ $id = $_GPC['id'];
+ $community = pdo_get('wlmerchant_community' , ['id' => $id]);
+ if ($_W['ispost']) {
+ $data = $_GPC['community'];
+ if ($id) {
+ if ($community['communqrcode'] != $data['communqrcode']) {
+ $data['media_id'] = '';
+ $data['media_endtime'] = 0;
+ }
+ $res = pdo_update('wlmerchant_community' , $data , ['id' => $id]);
+ }
+ else {
+ $data['uniacid'] = $_W['uniacid'];
+ $data['aid'] = $_W['aid'];
+ $data['createtime'] = time();
+ $res = pdo_insert(PDO_NAME . 'community' , $data);
+ }
+ if ($res) {
+ wl_message('操作成功!' , web_url('agentset/agentSetCommunity/communityList'));
+ }
+ else {
+ wl_message('操作失败,请重试!');
+ }
+ }
+ include wl_template('agentset/communityAdd');
+ }
+ //删除社群
+ function deletecommunity()
+ {
+ global $_W , $_GPC;
+ $id = $_GPC['id'];
+ $res = pdo_delete('wlmerchant_community' , ['id' => $id]);
+ if ($res) {
+ show_json(1);
+ }
+ else {
+ show_json(0 , '删除失败,请重试');
+ }
+ }
+}
diff --git a/addons/weliam_smartcity/web/controller/agentset/agentSetStaff.ctrl.php b/addons/weliam_smartcity/web/controller/agentset/agentSetStaff.ctrl.php
new file mode 100644
index 0000000..15e23c4
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/agentset/agentSetStaff.ctrl.php
@@ -0,0 +1,121 @@
+ $_W['uniacid'] ,
+ 'aid' => $_W['aid']
+ ] , 'id DESC' , $pindex , $psize , 1);
+ $tags = $datas[0];
+ $pager = $datas[1];
+ foreach ($tags as $key => &$value) {
+ $value['nickname'] = pdo_getcolumn(PDO_NAME . 'member' , ['id' => $value['mid']] , 'nickname');
+ }
+ //获取登录地址
+ if($_W['aid'] > 0) $loginUrl = $_W['siteroot']."web/cityagent.php?p=user&ac=login&do=agent_login&aid={$_W['aid']}";//代理商员工登录
+ else $loginUrl = $_W['siteroot']."web/citysys.php?p=user&ac=login&do=adminStaffLogin&i={$_W['uniacid']}";//平台员工登录
+
+ include wl_template('agentset/adminset');
+ }
+ //添加、编辑员工信息
+ public function adminedit()
+ {
+ global $_W , $_GPC;
+ if (!empty($_GPC['id'])) {
+ $admin = pdo_get('wlmerchant_agentadmin' , ['id' => $_GPC['id']]);
+ $admin['nickname'] = pdo_getcolumn(PDO_NAME . 'member' , ['id' => $admin['mid']] , 'nickname');
+ $jurisdiction = unserialize($admin['jurisdiction']);
+ $noticeauthority = unserialize($admin['noticeauthority']);
+ }
+ if (checksubmit('submit')) {
+ $admin = [];
+ $admin['account'] = trim($_GPC['account']);
+ //判断是否已经有了
+ $adminid = $_GPC['adminid'] ? $_GPC['adminid'] : 0;
+ $flag = pdo_fetch("SELECT id FROM " . tablename('wlmerchant_agentadmin') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND account = {$admin['account']} AND id != {$adminid}");
+ if ($flag) {
+ wl_message('账户名已被注册' , referer() , 'error');
+ }
+ if($adminid > 0){
+ $flag2 = pdo_fetch("SELECT id FROM " . tablename('wlmerchant_agentadmin') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND mid = {$_GPC['mid']} AND id != {$adminid}");
+ if ($flag2) {
+ wl_message('此用户已经是管理员' , referer() , 'error');
+ }
+ }
+ $password = trim($_GPC['password']);
+ $admin['openid'] = trim($_GPC['openid']);
+ $admin['mid'] = trim($_GPC['mid']);
+ $admin['notice'] = intval($_GPC['notice']);
+ $admin['manage'] = intval($_GPC['manage']);
+ $admin['jurisdiction'] = serialize($_GPC['jurisdiction']);
+ $admin['noticeauthority'] = serialize($_GPC['noticeauthority']);
+ if (empty($_GPC['adminid'])) {
+ $admin['uniacid'] = $_W['uniacid'];
+ $admin['aid'] = $_W['aid'];
+ $admin['createtime'] = time();
+ $admin['password'] = md5($password);
+ $res = pdo_insert(PDO_NAME . 'agentadmin' , $admin);
+ }
+ else {
+ $pwd = pdo_getcolumn(PDO_NAME . 'agentadmin' , ['id' => $_GPC['adminid']] , 'password');
+ if ($password != $pwd) {
+ //密码已被修改 从新进行加密
+ $admin['password'] = md5($password);
+ }
+ $res = pdo_update('wlmerchant_agentadmin' , $admin , ['id' => $_GPC['adminid']]);
+ }
+ if ($res) {
+ wl_message('保存成功' , web_url('agentset/agentSetStaff/adminset') , 'success');
+ }
+ else {
+ wl_message('保存失败' , referer() , 'error');
+ }
+ }
+ //获取菜单列表
+ $list = Jurisdiction::menuList();
+ include wl_template('agentset/adminedit');
+ }
+ //修改、删除员工通知权限
+ public function changeadmin()
+ {
+ global $_W , $_GPC;
+ $id = $_GPC['id'];
+ $type = $_GPC['type'];
+ $newvalue = trim($_GPC['value']);
+ if ($type == 1) {
+ $res = pdo_update('wlmerchant_agentadmin' , ['notice' => $newvalue] , ['id' => $id]);
+ }
+ else if ($type == 2) {
+ $res = pdo_update('wlmerchant_agentadmin' , ['manage' => $newvalue] , ['id' => $id]);
+ }
+ else if ($type == 3) {
+ $res = pdo_delete('wlmerchant_agentadmin' , ['id' => $id]);
+ }
+ if ($res) {
+ show_json(1 , '修改成功');
+ }
+ else {
+ show_json(0 , '修改失败,请重试');
+ }
+ }
+
+}
diff --git a/addons/weliam_smartcity/web/controller/agentset/agentSetTags.ctrl.php b/addons/weliam_smartcity/web/controller/agentset/agentSetTags.ctrl.php
new file mode 100644
index 0000000..571131a
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/agentset/agentSetTags.ctrl.php
@@ -0,0 +1,84 @@
+ $_W['uniacid'] ,
+ 'aid' => $_W['aid'] ,
+ 'type' => $type
+ ] , 'type ASC,sort DESC,id DESC' , $pindex , $psize , 1);
+ $tags = $datas[0];
+ $pager = $datas[1];
+ include wl_template('agentset/tagsindex');
+ }
+ //添加、编辑标签信息
+ public function tagsedit()
+ {
+ global $_W , $_GPC;
+ if (!empty($_GPC['id'])) {
+ $tag = pdo_get('wlmerchant_tags' , ['id' => $_GPC['id']]);
+ }
+ if (checksubmit('submit')) {
+ $tag = $_GPC['tag'];
+ $tag['title'] = trim($tag['title']);
+ $tag['sort'] = intval($tag['sort']);
+ $tag['enabled'] = intval($_GPC['enabled']);
+ if (empty($_GPC['tagid'])) {
+ $tag['uniacid'] = $_W['uniacid'];
+ $tag['aid'] = $_W['aid'];
+ $tag['createtime'] = time();
+ $res = pdo_insert(PDO_NAME . 'tags' , $tag);
+ }
+ else {
+ $res = pdo_update('wlmerchant_tags' , $tag , ['id' => $_GPC['tagid']]);
+ }
+ if ($res) {
+ wl_message('保存成功' , web_url('agentset/agentSetTags/tags') , 'success');
+ }
+ else {
+ wl_message('保存失败' , referer() , 'error');
+ }
+ }
+ include wl_template('agentset/tagsedit');
+ }
+ //修改、删除标签信息
+ public function changeinfo()
+ {
+ global $_W , $_GPC;
+ $id = $_GPC['id'];
+ $type = $_GPC['type'];
+ $newvalue = trim($_GPC['value']);
+ if ($type == 1) {
+ $res = pdo_update('wlmerchant_tags' , ['title' => $newvalue] , ['id' => $id]);
+ }
+ else if ($type == 2) {
+ $res = pdo_update('wlmerchant_tags' , ['sort' => $newvalue] , ['id' => $id]);
+ }
+ else if ($type == 3) {
+ $res = pdo_update('wlmerchant_tags' , ['enabled' => $newvalue] , ['id' => $id]);
+ }
+ else if ($type == 4) {
+ $res = pdo_delete('wlmerchant_tags' , ['id' => $id]);
+ }
+ if ($res) {
+ show_json(1 , '修改成功');
+ }
+ else {
+ show_json(0 , '修改失败,请重试');
+ }
+ }
+}
diff --git a/addons/weliam_smartcity/web/controller/agentset/diyForm.ctrl.php b/addons/weliam_smartcity/web/controller/agentset/diyForm.ctrl.php
new file mode 100644
index 0000000..e49eeb4
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/agentset/diyForm.ctrl.php
@@ -0,0 +1,110 @@
+ $data['base']['title'] ? : '自定义表单',
+ 'info' => base64_encode(json_encode($data,JSON_UNESCAPED_UNICODE)),
+ 'update_time' => time()
+ ];
+ //判断是添加还是修改
+ if($id > 0){
+ //修改操作
+ pdo_update(PDO_NAME."diyform",$params,['id'=>$id]);
+ }else{
+ //添加操作
+ $params['uniacid'] = $_W['uniacid'];
+ $params['aid'] = $_W['aid'];
+ $params['create_time'] = time();
+ if(is_store()) $params['sid'] = $_W['storeid'];
+ pdo_insert(PDO_NAME."diyform",$params);
+ }
+
+ wl_json(1,$id > 0 ? '编辑成功' : '添加成功');
+ }
+ //id存在 编辑信息 获取表单信息
+ if($id > 0){
+ $info = pdo_getcolumn(PDO_NAME."diyform",['id'=>$id],'info');
+ $info = json_decode(base64_decode($info), true);//页面的配置信息
+ }
+
+
+
+ include wl_template('agentset/diy_form/edit');
+ }
+ /**
+ * Comment: 删除表单
+ * Author: zzw
+ * Date: 2020/11/19 10:58
+ */
+ public function delete(){
+ global $_W,$_GPC;
+ //参数信息获取
+ $id = $_GPC['id'] OR show_json(0, '参数错误,请刷新重试!');
+ //删除内容
+ $res = pdo_delete(PDO_NAME."diyform",['id'=>$id]);
+ if ($res) show_json(1 , '删除成功');
+ else show_json(0 , '删除失败,请刷新重试');
+ }
+
+}
diff --git a/addons/weliam_smartcity/web/controller/agentset/userset.ctrl.php b/addons/weliam_smartcity/web/controller/agentset/userset.ctrl.php
new file mode 100644
index 0000000..936c38c
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/agentset/userset.ctrl.php
@@ -0,0 +1,49 @@
+ &$setV) {
+ if (!array_key_exists('switch' , $setV)) {
+ $setV['switch'] = 0;
+ }
+ }
+ $res = Setting::wlsetting_save($set , 'userindex');
+ if ($res) show_json(1);
+ else show_json(0 , '设置保存失败');
+ }
+ $setInfo = User::userSet();
+ foreach ($setInfo as $index => &$item) {
+ $item['show_img'] = tomedia($item['image']);
+ }
+ $identityList = User::getUserIdentityList();
+ $keyList = [];
+ include wl_template('agentset/userindex');
+ }
+ /**
+ * Comment: 代理客服设置
+ * Author: wlf
+ * Date: 2020/08/10 10:57
+ */
+ public function agentcustomer()
+ {
+ global $_W , $_GPC;
+ $settings = Setting::agentsetting_read('agentcustomer');
+ if (checksubmit('submit')) {
+ $base = Util::trimWithArray($_GPC['customer']);
+ Setting::agentsetting_save($base , 'agentcustomer');
+ wl_message('更新设置成功!' , web_url('agentset/userset/agentcustomer'));
+ }
+ include wl_template('agentset/customer');
+ }
+
+}
diff --git a/addons/weliam_smartcity/web/controller/dashboard/adv.ctrl.php b/addons/weliam_smartcity/web/controller/dashboard/adv.ctrl.php
new file mode 100644
index 0000000..3097fc3
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/dashboard/adv.ctrl.php
@@ -0,0 +1,77 @@
+ &$val) {
+ if (!empty($val['cateid'])) {
+ $val['catename'] = pdo_getcolumn('wlmerchant_groupon_category', array('uniacid' => $_W['uniacid'], 'aid' => $_W['aid'], 'id' => $val['cateid']), 'name');
+ }
+ }
+ $pager = wl_pagination($adves['count'], $pindex, $psize);
+ include wl_template('dashboard/advIndex');
+ }
+ /**
+ * 编辑幻灯片
+ */
+ public function edit(){
+ global $_W,$_GPC;
+ $cateid = intval($_GPC['cateid']);
+ if(checksubmit('submit')){
+ $adv = $_GPC['adv'];
+ $adv['advname'] = trim($adv['advname']);
+ $adv['displayorder'] = intval($adv['displayorder']);
+ $adv['enabled'] = intval($_GPC['enabled']);
+ if(!empty($_GPC['id'])){
+ if(Dashboard::editAdv($adv,$_GPC['id'])) wl_message('保存成功',web_url('dashboard/adv/index'),'success');
+ }else{
+ $adv['cateid'] = $cateid;
+ if(Dashboard::editAdv($adv)) wl_message('保存成功',web_url('dashboard/adv/index'),'success');
+ }
+ wl_message('保存失败',referer(),'error');
+ }
+ if(!empty($_GPC['id'])) $adv = Dashboard::getSingleAdv($_GPC['id']);
+ if (!empty($cateid) && p('groupon')) {
+ $catename = pdo_getcolumn('wlmerchant_groupon_category', array('uniacid' => $_W['uniacid'], 'aid' => $_W['aid'], 'id' => $cateid), 'name');
+ }
+
+ include wl_template('dashboard/advEdit');
+ }
+ /**
+ * Comment: 删除幻灯片
+ * Author: zzw
+ * Date: 2019/9/19 18:26
+ */
+ public function delete (){
+ global $_W , $_GPC;
+ #1、参数获取
+ $id = $_GPC['id'] OR show_json(0 , '删除失败,缺少id!');
+ #2、删除操作
+ pdo_delete(PDO_NAME . "adv" , [ 'id' => $id ]) OR show_json(0 , '失败');
+ show_json(1 , '成功');
+ }
+ /**
+ * Comment: 修改状态
+ * Author: zzw
+ * Date: 2019/9/18 15:41
+ */
+ public function changeStatus (){
+ global $_W , $_GPC;
+ #1、获取参数信息
+ $id = $_GPC['id'] OR Commons::sRenderError('缺少参数:幻灯片id');
+ $status = $_GPC['status'] ? : 0;
+ #1、修改操作
+ $res = pdo_update(PDO_NAME."adv",['enabled'=>$status],['id'=>$id]);
+ if($res) Commons::sRenderSuccess('修改成功');
+ else Commons::sRenderError('修改失败,请刷新重试!');
+ }
+
+}
diff --git a/addons/weliam_smartcity/web/controller/dashboard/banner.ctrl.php b/addons/weliam_smartcity/web/controller/dashboard/banner.ctrl.php
new file mode 100644
index 0000000..e081193
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/dashboard/banner.ctrl.php
@@ -0,0 +1,70 @@
+ $id ]) OR show_json(0 , '失败');
+ show_json(1 , '成功');
+ }
+ /**
+ * Comment: 修改状态
+ * Author: zzw
+ * Date: 2019/9/18 15:56
+ */
+ public function changeStatus (){
+ global $_W , $_GPC;
+ #1、获取参数信息
+ $id = $_GPC['id'] OR Commons::sRenderError('缺少参数:导航id');
+ $status = $_GPC['status'] ? : 0;
+ #1、修改操作
+ $res = pdo_update(PDO_NAME."banner",['enabled'=>$status],['id'=>$id]);
+ if($res) Commons::sRenderSuccess('修改成功');
+ else Commons::sRenderError('修改失败,请刷新重试!');
+ }
+
+
+
+
+
+}
diff --git a/addons/weliam_smartcity/web/controller/dashboard/category.ctrl.php b/addons/weliam_smartcity/web/controller/dashboard/category.ctrl.php
new file mode 100644
index 0000000..4cb7384
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/dashboard/category.ctrl.php
@@ -0,0 +1,259 @@
+ '商品', '2' => '招聘', '0' => '其他'];
+
+ public function index()
+ {
+ global $_W, $_GPC;
+
+ $pindex = max(1, intval($_GPC['page']));
+ $psize = 100;
+ $categoryes = Category::getAllCategory($pindex - 1, $psize, 0);
+ $categorys = $categoryes['data'];
+
+ $pager = wl_pagination($categoryes['count'], $pindex, $psize);
+ if (!empty($categorys)) {
+ foreach ($categorys as $key => $value) {
+ $childrens = Category::getAllCategory(0, 100, $value['id']);
+ $categorys[$key]['children'] = $childrens['data'];
+ }
+ }
+
+ include wl_template('dashboard/category/indexList');
+ }
+
+ public function edit()
+ {
+ global $_W, $_GPC;
+
+ if (checksubmit('submit')) {
+ $category = $_GPC['category'];
+ if (!empty($_GPC['parentid'])) {
+ if (!empty($category['parentid']) && preg_match('/^\d+$/',$category['parentid'])) {
+ $_GPC['parentid'] = $category['parentid'];
+ }
+ $category['parentid'] = intval($_GPC['parentid']);
+ $category['visible_level'] = 2;
+ $parentData = Category::getSingleCategory($_GPC['parentid'],'type');
+ if ($parentData) $category['type'] = $parentData['type'];
+ } else {
+ $category['parentid'] = 0;
+ $category['visible_level'] = 1;
+ }
+ $category['name'] = trim($category['name']);
+ $category['displayorder'] = intval($category['displayorder']);
+ $category['status'] = intval($_GPC['status']);
+ if (is_numeric($_GPC['type'])) $category['type'] = intval($_GPC['type']);
+
+ $advlogo = $_GPC['advlogo'];
+ $advlink = $_GPC['advlink'];
+ $advarray = [];
+ foreach ($advlogo as $dkey => $dle) {
+ $dlea['thumb'] = $advlogo[$dkey];
+ $dlea['link'] = $advlink[$dkey];
+ $advarray[] = $dlea;
+ }
+ $category['advs'] = serialize($advarray);
+
+ if (!empty($_GPC['id'])) {
+ Category::syncCategroyType($_GPC['id'],$category);
+ if (Category::categoryEdit($category, $_GPC['id'])) wl_message('保存成功', web_url('dashboard/category/index',array('active' => 1)), 'success');
+ } else {
+ if (Category::categoryEdit($category)) wl_message('保存成功', web_url('dashboard/category/index',array('active' => 1)), 'success');
+ }
+ wl_message('保存失败', referer(), 'error');
+ }
+
+ if (!empty($_GPC['id'])) {
+ $category = Category::getSingleCategory($_GPC['id']);
+ if ($category['parentid']) {
+ $category['advs'] = unserialize($category['advs']);
+ $videoRes = Category::categoryVideoAll($_GPC['id']);
+ $category['video'] = $videoRes['list'];
+ }
+ }
+
+ if (empty($category)) $category = ['type' => $_GPC['category_type']];
+ $typeArr = $this->typeArr;
+
+ include wl_template('dashboard/category/indexEdit');
+ }
+
+ /**
+ * Comment: 删除商户
+ */
+ public function delete()
+ {
+ global $_W, $_GPC;
+ if (Category::categoryDelete($_GPC['id'])) wl_message('删除成功', web_url('dashboard/category/index',array('active' => 1)), 'success');
+ wl_message('删除失败', referer(), 'error');
+ }
+
+ /**
+ * Comment: 修改状态
+ * Author: zzw
+ * Date: 2023/5/6 13:52
+ */
+ public function changeStatus()
+ {
+ global $_W, $_GPC;
+ #1、获取参数信息
+ $id = $_GPC['id'] or Commons::sRenderError('缺少参数:导航id');
+ $status = $_GPC['status'] ?: 0;
+ #1、修改操作
+ $res = pdo_update(PDO_NAME . "cultivate_class", ['status' => $status], ['id' => $id]);
+ if ($res) Commons::sRenderSuccess('修改成功');
+ else Commons::sRenderError('修改失败,请刷新重试!');
+ }
+
+ public function videoIndex()
+ {
+ global $_W, $_GPC;
+
+ $cc_id = $_GPC['cc_id'];
+ $pindex = $_GPC['page'] ?: 1;
+ $psize = $_GPC['psize'] ?: 5;
+
+ $videoRes = Category::categoryVideoAll($cc_id,'*',false,'',$pindex,$psize);
+ $video = $videoRes['list'];
+ $pager = $videoRes['pager'];
+ $total = $videoRes['total'];
+ $category = Category::getSingleCategory($cc_id);
+ $parentCategory = Category::getSingleCategory($category['parentid']);
+
+ include wl_template('dashboard/category/videoIndex');
+ }
+
+ public function videoEdit()
+ {
+
+ global $_W, $_GPC;
+
+ $id = $_GPC['id'];
+ $cc_id = $_GPC['cc_id'];
+ $category = Category::getSingleCategory($cc_id);
+ $parentCategory = Category::getSingleCategory($category['parentid']);
+
+ if (checksubmit('submit')) {
+
+ $data = $_GPC['video'];
+ if (empty($data['title'])) wl_message('请填写视频标题', referer(), 'error');
+ if (empty($data['video_link'])) wl_message('请上传视频', referer(), 'error');
+ $data['uniacid'] = $_W['uniacid'];
+ if (!empty($id)) {
+ $res = pdo_update(PDO_NAME . 'cultivate_class_video',$data,['id' => $id]);
+ } else {
+ $data['create_time'] = time();
+ $res = pdo_insert(PDO_NAME . 'cultivate_class_video',$data);
+ }
+ if ($res) wl_message('保存成功', web_url('dashboard/category/videoIndex',['cc_id' =>$_GPC['cc_id']]), 'success');
+ wl_message('保存失败', referer(), 'error');
+ }
+
+ if (!empty($id)) $video = Category::categoryVideoFind($id);
+
+ include wl_template('dashboard/category/videoEdit');
+ }
+
+ public function videoDelete()
+ {
+ global $_W, $_GPC;
+ if (empty($_GPC['id'])) wl_message('缺少id', referer(), 'error');
+ if (empty($_GPC['cc_id'])) wl_message('缺少分类id', referer(), 'error');
+ $result = pdo_delete(PDO_NAME . 'cultivate_class_video' , ['id' => $_GPC['id']]);
+ if ($result) wl_message('删除成功', web_url('dashboard/category/videoIndex',['cc_id' =>$_GPC['cc_id']]), 'success');
+ wl_message('删除失败', referer(), 'error');
+ }
+
+ public function videoComment()
+ {
+ global $_W, $_GPC;
+
+ $pindex = max(1, intval($_GPC['page']));
+ $psize = $_GPC['psize'] ?: 10;
+
+ $where = ['aid' => $_W['aid']];
+ if (!empty($_GPC['keyword'])) {
+ $keyword = trim($_GPC['keyword']);
+ if ($_GPC['keywordtype'] == 1) {
+ $where['id'] = $keyword;
+ } elseif ($_GPC['keywordtype'] == 2) {
+ $where['video_id'] = $keyword;
+ } elseif ($_GPC['keywordtype'] == 3) {
+ $videoRes = pdo_getall(PDO_NAME . 'cultivate_class_video'," title like '%{$keyword}%'",['id']);
+ $videoIdArr = array_column($videoRes,'id');
+ $where['video_id#'] = $videoIdArr ? implode(",",$videoIdArr) : 0;
+ } elseif ($_GPC['keywordtype'] == 4) {
+ $where['mid'] = $keyword;
+ }
+ }
+
+ $data = Category::getVideoComment($where,'',$pindex,$psize,0,' status asc,id asc');
+ $list = $data['list'];
+ $pager = $data['pager'];
+ $total = $data['total'];
+ foreach ($list as &$item) {
+ $video = pdo_get(PDO_NAME . 'cultivate_class_video',['id' => $item['video_id']],['video_link','title']);
+ $item['video_link'] = $video['video_link'] ? tomedia($video['video_link']) : '';
+ $item['video_title'] = $video['title'] ?: '';
+ Member::getMemberInfo($item,$item['mid']);
+ }
+
+ include wl_template('dashboard/category/videoComment');
+ }
+
+ public function videoCommentCheck()
+ {
+ global $_W, $_GPC;
+
+ $id = $_GPC['id'];
+ $status = $_GPC['status'];
+ if (empty($id)) wl_message('缺少id', referer(), 'error');
+ if (!in_array($status,array(1,2))) wl_message('参数错误:status', referer(), 'error');
+
+ $update = ['status' => $status];
+ $res = pdo_update(PDO_NAME . 'cultivate_class_comment',$update,['id' => $id]);
+ if ($res) wl_message('审核成功', web_url('dashboard/category/videoComment',array('active' => 2)), 'success');
+ wl_message('审核失败', referer(), 'error');
+ }
+
+ /**
+ * 删除视频评论
+ */
+ public function videoCommentDel()
+ {
+ global $_W, $_GPC;
+
+ if (Category::videoCommentDelete($_GPC['id'])) wl_message('删除成功', web_url('dashboard/category/videoComment',array('active' => 2)), 'success');
+
+ wl_message('删除失败', referer(), 'error');
+ }
+
+ /**
+ * Comment: 修改状态
+ * Author: zzw
+ * Date: 2023/5/6 13:52
+ */
+ public function changeStatusVideo()
+ {
+ global $_W, $_GPC;
+ #1、获取参数信息
+ $id = $_GPC['id'] or Commons::sRenderError('缺少参数:导航id');
+ $status = $_GPC['status'] ?: 0;
+ #1、修改操作
+ $res = pdo_update(PDO_NAME . "cultivate_class_video", ['status' => $status], ['id' => $id]);
+ if ($res) Commons::sRenderSuccess('修改成功');
+ else Commons::sRenderError('修改失败,请刷新重试!');
+ }
+
+ public function queryVideo()
+ {
+ global $_W, $_GPC;
+ $video_link = $_GPC['video_link'];
+ $title = $_GPC['title'];
+ include wl_template('dashboard/category/queryVideo');
+ }
+}
\ No newline at end of file
diff --git a/addons/weliam_smartcity/web/controller/dashboard/cube.ctrl.php b/addons/weliam_smartcity/web/controller/dashboard/cube.ctrl.php
new file mode 100644
index 0000000..4c23f40
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/dashboard/cube.ctrl.php
@@ -0,0 +1,36 @@
+ $_W['storeid']), 'storename');
+ }else{
+ $name = pdo_getcolumn(PDO_NAME . 'agentusers', array('id' => $_W['aid']), 'agentname');
+ //初始化总后台数据
+ Area::initAgent();
+ }
+
+
+ if ($_W['isajax']) {
+ if(is_store()){
+ $data = Merchant::newSurvey($_W['aid'],$_W['storeid']);
+ $data2 = Cache::getCache('storeinfo' . $_W['storeid'], 'data');
+ if ($data2['time'] < strtotime(date("Y-m-d"), time()) || $_GPC['refresh']) {
+ $data2 = Merchant::cacheSurvey($_W['aid'],$_W['storeid']);
+ Cache::setCache('storeinfo'.$_W['storeid'],'data',$data2);
+ }
+ }else{
+ $data = Merchant::newSurvey($_W['aid']);
+ $data2 = Cache::getCache('cachesur' . $_W['aid'], 'data');
+ if ($data2['time'] < strtotime(date("Y-m-d"), time()) || $_GPC['refresh']) {
+ $data2 = Merchant::cacheSurvey($_W['aid']);
+ Cache::setCache('cachesur' . $_W['aid'], 'data', $data2);
+ }
+ }
+ $data = array_merge($data, $data2);
+ $li = array('year' => date('m-d', time()), '金额' => $data['allmoney']);
+ $data['list'][] = $li;
+
+ die(json_encode($data));
+ }
+ include wl_template('dashboard/index');
+ }
+
+}
diff --git a/addons/weliam_smartcity/web/controller/dashboard/foot.ctrl.php b/addons/weliam_smartcity/web/controller/dashboard/foot.ctrl.php
new file mode 100644
index 0000000..99a134a
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/dashboard/foot.ctrl.php
@@ -0,0 +1,84 @@
+ $set['status'] ? $set['status'] : 0 ,//0=使用默认;1=使用当前自定义菜单
+ 'list' => [
+ 'one' => [
+ 'default_name' => '首页' ,//默认名称
+ 'diy_name' => '' ,//自定义名称
+ 'default_img' => '' ,//默认图片
+ 'selected_img' => '' ,//选中图片
+ 'link' => '' ,//跳转链接
+ 'switch' => 0 ,//是否开启:0=关,1=开启
+ ] ,
+ 'two' => [
+ 'default_name' => '附近' ,//默认名称
+ 'diy_name' => '' ,//自定义名称
+ 'default_img' => '' ,//默认图片
+ 'selected_img' => '' ,//选中图片
+ 'link' => '' ,//跳转链接
+ 'switch' => 0 ,//是否开启:0=关,1=开启
+ ] ,
+ 'three' => [
+ 'default_name' => '一卡通' ,//默认名称
+ 'diy_name' => '' ,//自定义名称
+ 'default_img' => '' ,//默认图片
+ 'selected_img' => '' ,//选中图片
+ 'link' => '' ,//跳转链接
+ 'switch' => 0 ,//是否开启:0=关,1=开启
+ ] ,
+ 'four' => [
+ 'default_name' => '入驻' ,//默认名称
+ 'diy_name' => '' ,//自定义名称
+ 'default_img' => '' ,//默认图片
+ 'selected_img' => '' ,//选中图片
+ 'link' => '' ,//跳转链接
+ 'switch' => 0 ,//是否开启:0=关,1=开启
+ ] ,
+ 'five' => [
+ 'default_name' => '我的' ,//默认名称
+ 'diy_name' => '' ,//自定义名称
+ 'default_img' => '' ,//默认图片
+ 'selected_img' => '' ,//选中图片
+ 'link' => '' ,//跳转链接
+ 'switch' => 0 ,//是否开启:0=关,1=开启
+ ] ,
+ ] ,
+ ];
+ }
+
+ return $set;
+ }
+
+}
\ No newline at end of file
diff --git a/addons/weliam_smartcity/web/controller/dashboard/nav.ctrl.php b/addons/weliam_smartcity/web/controller/dashboard/nav.ctrl.php
new file mode 100644
index 0000000..161a8db
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/dashboard/nav.ctrl.php
@@ -0,0 +1,70 @@
+ $id ]) OR show_json(0 , '失败');
+ show_json(1 , '成功');
+ }
+ /**
+ * Comment: 修改状态
+ * Author: zzw
+ * Date: 2019/9/18 15:41
+ */
+ public function changeStatus (){
+ global $_W , $_GPC;
+ #1、获取参数信息
+ $id = $_GPC['id'] OR Commons::sRenderError('缺少参数:导航id');
+ $status = $_GPC['status'] ? : 0;
+ #1、修改操作
+ $res = pdo_update(PDO_NAME."nav",['enabled'=>$status],['id'=>$id]);
+ if($res) Commons::sRenderSuccess('修改成功');
+ else Commons::sRenderError('修改失败,请刷新重试!');
+ }
+
+}
diff --git a/addons/weliam_smartcity/web/controller/dashboard/notice.ctrl.php b/addons/weliam_smartcity/web/controller/dashboard/notice.ctrl.php
new file mode 100644
index 0000000..49ad7b5
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/dashboard/notice.ctrl.php
@@ -0,0 +1,98 @@
+$id]),'success');
+ #3、修改操作
+ unset($data['id']);
+ $res = pdo_update(PDO_NAME."notice",$data,['id'=>$id]);
+ }else{
+ #2、添加操作
+ $data['aid'] = $_W[ 'aid' ];
+ $data['uniacid'] = $_W[ 'uniacid' ];
+ $data['createtime'] = time();
+ $res = pdo_insert(PDO_NAME."notice",$data);
+ }
+ #3、返回结果
+ if($res) wl_message('操作成功',web_url('dashboard/notice/index'),'success');
+ else wl_message('操作失败',referer(),'error');
+ }
+ #2、编辑信息准备
+ if($id) $notice = pdo_get(PDO_NAME."notice",['id'=>$id],['id','title','content','link','enabled']);
+
+ include wl_template('dashboard/noticeEdit');
+ }
+ /**
+ * Comment: 删除公告
+ * Author: zzw
+ * Date: 2019/9/19 10:03
+ */
+ public function delete (){
+ global $_W , $_GPC;
+ #1、参数获取
+ $id = $_GPC['id'] OR show_json(0, '删除失败,缺少id!');
+ #2、删除操作
+ pdo_delete(PDO_NAME."notice",['id'=>$id]) OR show_json(0, '失败');
+ show_json(1, '成功');
+ }
+ /**
+ * Comment: 修改状态
+ * Author: zzw
+ * Date: 2019/9/18 15:20
+ */
+ public function changeStatus (){
+ global $_W , $_GPC;
+ #1、获取参数信息
+ $id = $_GPC['id'] OR Commons::sRenderError('缺少参数:公告id');
+ $status = $_GPC['status'] ? : 0;
+ #1、修改操作
+ $res = pdo_update(PDO_NAME."notice",['enabled'=>$status],['id'=>$id]);
+ if($res) Commons::sRenderSuccess('修改成功');
+ else Commons::sRenderError('修改失败,请刷新重试!');
+ }
+
+ public function clear(){
+ global $_W , $_GPC;
+ pdo_delete('wlmerchant_diypage',array('uniacid'=>$_W['uniacid'],'aid'=>$_W['aid'],'name' => 'weliam_default_index'));
+ show_json(1, '清理成功');
+ }
+}
\ No newline at end of file
diff --git a/addons/weliam_smartcity/web/controller/dashboard/pagelinks.ctrl.php b/addons/weliam_smartcity/web/controller/dashboard/pagelinks.ctrl.php
new file mode 100644
index 0000000..fa0a0c5
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/dashboard/pagelinks.ctrl.php
@@ -0,0 +1,49 @@
+
\ No newline at end of file
diff --git a/addons/weliam_smartcity/web/controller/dashboard/ruleCenter.ctrl.php b/addons/weliam_smartcity/web/controller/dashboard/ruleCenter.ctrl.php
new file mode 100644
index 0000000..6a6f6db
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/dashboard/ruleCenter.ctrl.php
@@ -0,0 +1,78 @@
+ $_W['uniacid'],
+ 'img' => $data['img'],
+ 'sort' => $data['sort'],
+ 'status' => $data['status']
+ ];
+
+ if (!empty($id)) {
+ $result = pdo_update(PDO_NAME . 'rule_center',$arr,['id' => $id]);
+ } else {
+ $arr['create_time'] = time();
+ $result = pdo_insert(PDO_NAME . 'rule_center',$arr);
+ }
+
+ if ($result) wl_message('保存成功', web_url('dashboard/ruleCenter/index'), 'success');
+ wl_message('保存失败', referer(), 'error');
+ }
+
+ if ($id) {
+ $data = pdo_get(PDO_NAME . 'rule_center',['id' => $id]);
+ }
+
+ include wl_template('dashboard/rule_center/edit');
+ }
+
+ public function changeStatus()
+ {
+ global $_W, $_GPC;
+ #1、获取参数信息
+ $id = $_GPC['id'] or Commons::sRenderError('缺少参数:导航id');
+ $status = $_GPC['status'] ?: 0;
+ #1、修改操作
+ $res = pdo_update(PDO_NAME . "rule_center", ['status' => $status], ['id' => $id]);
+ if ($res) Commons::sRenderSuccess('修改成功');
+ else Commons::sRenderError('修改失败,请刷新重试!');
+ }
+
+ public function delete()
+ {
+ global $_W, $_GPC;
+ $id = $_GPC['id'];
+ if (empty($id) || !is_numeric($id)) wl_message('缺少id参数', referer(), 'error');
+ $deleteRes = pdo_delete(PDO_NAME . "rule_center",['id' => $id]);
+ if ($deleteRes) wl_message('删除成功', web_url('dashboard/ruleCenter/index'), 'success');
+ wl_message('删除失败', referer(), 'error');
+ }
+}
\ No newline at end of file
diff --git a/addons/weliam_smartcity/web/controller/dashboard/sort.ctrl.php b/addons/weliam_smartcity/web/controller/dashboard/sort.ctrl.php
new file mode 100644
index 0000000..4bfd621
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/dashboard/sort.ctrl.php
@@ -0,0 +1,12 @@
+ $_W['uniacid']));
+ $diymenu = pdo_getall(PDO_NAME . "diypage_menu", array('uniacid' => $_W['uniacid']));
+ $category = pdo_getall(PDO_NAME . "diypage_temp_cate", array('uniacid' => $_W['uniacid'],'aid' => $_W['aid']), array('id', 'name'));
+ } else {
+ //启动广告信息
+ $diyadvs = pdo_getall(PDO_NAME . "diypage_adv", array('aid' => $_W['aid'], 'uniacid' => $_W['uniacid']));
+ //菜单信息
+ $diymenu = pdo_getall(PDO_NAME . "diypage_menu", array('aid' => [$_W['aid'],0], 'uniacid' => $_W['uniacid']));
+ //模板分类信息
+ $category = pdo_getall(PDO_NAME . "diypage_temp_cate", array('aid' => $_W['aid'], 'uniacid' => $_W['uniacid']), array('id', 'name'));
+ }
+
+ include wl_template('diy/page_edit');
+ }
+ /**
+ * Comment: 保存页面信息
+ * Author: zzw
+ */
+ public function savePage() {
+ global $_W, $_GPC;
+ #1、参数接收
+ $id = $_GPC['id'];//修改的id
+ $data = json_decode(base64_decode($_GPC['data']), true);//页面的配置信息
+ #2、组装页面配置基本信息
+ $diypage = [
+ 'data' => base64_encode(json_encode($data,JSON_UNESCAPED_UNICODE)),
+ 'name' => $data['page']['name'],
+ 'type' => $data['page']['type'],
+ 'lastedittime' => time(),
+ ];
+ #3、进行数据的添加||修改
+ if ($id > 0) {
+ if(!$diypage['name']) unset($diypage['name']);//修改时如果页面标题为空则删除
+ if(!$diypage['type']) unset($diypage['type']);//修改时如果页面类型为空则删除
+ //修改已存在的页面配置信息
+ pdo_update(PDO_NAME . 'diypage', $diypage, array('id' => $id));
+ } else {
+ //添加储存新的页面配置信息
+ $diypage['uniacid'] = $_W['uniacid'];
+ $diypage['aid'] = $_W['aid'];
+ $diypage['createtime'] = time();
+ if (empty($diypage['aid'])) {
+ $diypage['is_public'] = 1;
+ }
+
+ pdo_insert(PDO_NAME . 'diypage', $diypage);
+ $id = pdo_insertid();
+ }
+
+ #4、返回最终的结果
+ $backUrl = "diypage/diy/pagelist";
+ wl_json(1, '操作成功', array('id' => $id, 'url' => web_url('diy/diy/editPage', array('id' => $id, 'type' => $data['page']['type'], 'page_type' => 'page', 'back_url' => $backUrl))));
+ }
+ /**
+ * Comment: 删除一个页面
+ * Author: zzw
+ */
+ public function delPage() {
+ global $_W,$_GPC;
+ $ids = $_GPC['ids'] ? : [];
+ pdo_delete(PDO_NAME."diypage",['id IN'=>$ids]);
+
+ show_json(1, "删除成功");
+ }
+
+
+ /**
+ * Comment: 保存菜单信息
+ * Author: zzw
+ */
+ public function saveMenu() {
+ global $_W, $_GPC;
+ $id = intval($_GPC['id']);
+ $data = $_GPC['menu'];
+ $menuClass = intval($_GPC['menu_class']);
+ $menudata = array('name' => $data['name'], 'data' => base64_encode(json_encode($data)), 'lastedittime' => time());
+ if (!empty($id)) {
+ pdo_update(PDO_NAME . 'diypage_menu', $menudata, array('id' => $id, 'uniacid' => $_W['uniacid']));
+ } else {
+ $menudata['uniacid'] = $_W['uniacid'];
+ $menudata['aid'] = $_W['aid'];
+ if (empty($menudata['aid'])) {
+ $menudata['is_public'] = 1;
+ }
+ $menudata['createtime'] = time();
+ $menudata['menu_class'] = $menuClass;
+ pdo_insert(PDO_NAME . 'diypage_menu', $menudata);
+ $id = pdo_insertid();
+ }
+ if ($menuClass == 1) {
+ $Url = "diypage/diy/menuEdit";
+ } else {
+ $Url = "chosen/diy/menuEdit";
+ }
+ wl_json(1, '保存成功', web_url($Url, array('id' => $id, 'menu_class' => $menuClass)));
+
+ }
+ /**
+ * Comment: 删除菜单
+ * Author: zzw
+ */
+ public function delMenu() {
+ global $_W, $_GPC;
+ $id = intval($_GPC['id']);
+ if (empty($id)) {
+ show_json(0, '参数错误,请刷新重试!');
+ } else {
+ pdo_delete(PDO_NAME . 'diypage_menu', array('id' => $id));
+ show_json(1);
+ }
+ }
+
+
+ /**
+ * Comment: 保存广告信息
+ * Author: zzw
+ */
+ public function saveAdv() {
+ global $_W, $_GPC;
+ $id = intval($_GPC['id']);
+ $advClass = $_GPC['adv_class'];
+ $data = $_GPC['advs'];
+ $advsdata = array('name' => $data['name'], 'data' => base64_encode(json_encode($data)), 'lastedittime' => time(), 'type' => 1, 'aid' => intval($_W['aid']));
+ if (empty($advsdata['aid'])) {
+ $advsdata['is_public'] = 1;
+ }
+ if (!empty($id)) {
+ pdo_update(PDO_NAME . 'diypage_adv', $advsdata, array('id' => $id, 'uniacid' => $_W['uniacid']));
+ } else {
+ $advsdata['uniacid'] = $_W['uniacid'];
+ $advsdata['createtime'] = time();
+ $advsdata['adv_class'] = $advClass;
+ pdo_insert(PDO_NAME . 'diypage_adv', $advsdata);
+ $id = pdo_insertid();
+ }
+ if ($advClass == 1) {
+ $Url = "diypage/diy/advEdit";
+ } else {
+ $Url = "chosen/diy/advEdit";
+ }
+ wl_json(1, '保存成功', web_url($Url, array('id' => $id, 'adv_class' => $advClass)));
+
+ }
+ /**
+ * Comment: 删除广告信息
+ * Author: zzw
+ */
+ public function delAdv() {
+ global $_W, $_GPC;
+ $id = intval($_GPC['id']);
+ if (empty($id)) {
+ show_json(0, '参数错误,请刷新重试!');
+ } else {
+ pdo_delete(PDO_NAME . 'diypage_adv', array('id' => $id, 'aid' => intval($_W['aid'])));
+ show_json(1);
+ }
+ }
+
+
+
+ /**
+ * Comment: 保存模板预览图片 并且返回图片路径
+ * Author: zzw
+ * Date: 2020/8/28 9:20
+ */
+ public function saveTempImage(){
+ global $_W, $_GPC;
+ //进行预览图-图片的处理
+ $pageImg = $_GPC['pageImg'];//预览图base64码
+ $imageName = "page_image" . time() . rand(1000, 9999) . '.png';
+ $imageName = "images/" . MODULE_NAME . "/" . $imageName;//文件储存路径 图片地址
+ $fullName = PATH_ATTACHMENT . $imageName;//文件在本地服务器暂存地址
+ if (strstr($pageImg, ",")) {
+ $pageImg = explode(',', $pageImg);
+ $pageImg = $pageImg[1];
+ }
+ file_put_contents($fullName, base64_decode($pageImg));
+
+ wl_json(1, '操作成功',['img_name'=>$imageName]);
+ }
+ /**
+ * Comment: 保存模板信息
+ * Author: zzw
+ */
+ public function saveTemp() {
+ global $_W, $_GPC;
+ #1、数据获取
+ $id = $_GPC['id'];//模板id
+ $type = $_GPC['type'];//页面类型
+ $cate = $_GPC['cate'];//模板分类id
+ $name = $_GPC['name'];//模板名称
+ $data = $_GPC['data'];//模板配置信息
+ $pageImg = $_GPC['pageImg'];//预览图
+ #2、组装页面配置基本信息
+ $temp = array(
+ 'type' => intval($type),//页面类型
+ 'cate' => intval($cate),//分类id
+ 'name' => trim($name), //模板名称
+ 'preview' => trim($pageImg),//预览图片
+ 'data' => base64_encode(json_encode($data, JSON_UNESCAPED_UNICODE)),//模板配置信息
+ 'aid' => $_W['aid'],
+ 'uniacid' => $_W['uniacid']
+ );
+ #3、进行数据的添加
+ pdo_insert(PDO_NAME . 'diypage_temp', $temp);
+ $id = pdo_insertid();
+ #4、返回最终的结果
+ wl_json(1, '操作成功');
+ }
+ /**
+ * Comment: 删除一个模板
+ * Author: zzw
+ */
+ public function delTemp() {
+ global $_W, $_GPC;
+ $id = intval($_GPC['id']);
+ $result = pdo_delete(PDO_NAME . "diypage_temp", array('id' => $id));
+ if ($result) {
+ show_json(0);
+ } else {
+ show_json(1, '删除失败');
+ }
+ }
+
+
+ /**
+ * Comment: 保存模板分类信息
+ * Author: zzw
+ */
+ public function saveCate() {
+ global $_W, $_GPC;
+ $name = trim($_GPC['name']);
+ $cateClass = $_GPC['cateClass'];
+ if (empty($name)) {
+ show_json(0, '分类名称为空!');
+ }
+ $result = pdo_insert(PDO_NAME . 'diypage_temp_cate'
+ , array('name' => $name, 'uniacid' => $_W['uniacid'], 'aid' => intval($_W['aid']), 'cate_class' => $cateClass));
+ if ($result) {
+ show_json(1);
+ } else {
+ show_json(1, '添加失败');
+ }
+ }
+ /**
+ * Comment: 编辑模板分类信息
+ * Author: zzw
+ */
+ public function editCate() {
+ global $_W, $_GPC;
+ $id = intval($_GPC['id']);
+ $name = trim($_GPC['value']);
+ $item = pdo_fetch('SELECT id, name, uniacid FROM ' . tablename(PDO_NAME . 'diypage_temp_cate') . ' WHERE id=:id and aid=:aid and uniacid=:uniacid ', array(':aid' => intval($_W['aid']), ':uniacid' => $_W['uniacid'], ':id' => $id));
+ if (!empty($item)) {
+ pdo_update(PDO_NAME . 'diypage_temp_cate', array('name' => $name), array('id' => $id, 'aid' => intval($_W['aid'])));
+ show_json(1, '分类名称编辑成功!');
+ } else {
+ show_json(0, '分类不存在,请刷新页面重试!');
+ }
+ }
+ /**
+ * Comment: 删除模板分类信息
+ * Author: zzw
+ */
+ public function delCate() {
+ global $_W, $_GPC;
+ $id = intval($_GPC['id']);
+ if (empty($id)) {
+ show_json(0, '参数错误,请刷新重试!');
+ }
+ $item = pdo_fetch('SELECT id, name, uniacid FROM ' . tablename(PDO_NAME . 'diypage_temp_cate') . ' WHERE id=:id and aid=:aid and uniacid=:uniacid ', array(':aid' => intval($_W['aid']), ':uniacid' => $_W['uniacid'], ':id' => $id));
+ if (!empty($item)) {
+ pdo_delete(PDO_NAME . 'diypage_temp_cate', array('id' => $id, 'aid' => intval($_W['aid'])));
+ }
+ show_json(1);
+ }
+
+
+ /**
+ * Comment: 根据图片地址下载当前页面要使用的图片信息
+ * Author: zzw
+ */
+ public function getImgInfo() {
+ global $_W, $_GPC;
+ $imgUrl = $_GPC['img_url'];
+ foreach ($imgUrl as $k => $v) {
+ $imgResources = file_get_contents($v);
+ $setting = $_W['setting']['upload']['image'];
+ $setting['folder'] = "images/" . MODULE_NAME;
+ $imageName = date("Y-m-dHisw") . time() . rand(1000, 9999) . '.png';
+ $imageName = $setting['folder'] . "/" . $imageName;//文件储存路径
+ $fullName = PATH_ATTACHMENT . $imageName;//文件在本地服务器暂存地址
+ file_put_contents($fullName, $imgResources);
+ $image_info = getimagesize($fullName);
+ $image_data = fread(fopen($fullName, 'r'), filesize($fullName));
+ $base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
+ $base64[$k] = $base64_image;
+ unlink($fullName);
+ }
+ wl_json(1, '处理后的图片', $base64);
+ }
+ /**
+ * Comment: 获取对应的商品信息
+ * Author: zzw
+ */
+ public function getGoodsInfo() {
+ global $_W, $_GPC;
+ $plugin = $_GPC['plugin'];//商品类型:0=全部,1=抢购,2=团购,3=拼团,4=大礼包,5=优惠券,6=折扣卡,7=砍价商品,8=积分商品,9=同城活动,10=配送商品
+ $search = $_GPC['search'];//搜索内容 商品名称
+ $page = $_GPC['page'] ? $_GPC['page'] : 1;
+ $pageNum = $_GPC['pageNum'] ? $_GPC['pageNum'] : 8;
+ $geturl = $_GPC['geturl'] ? $_GPC['geturl'] : 0;
+ $start = $page * $pageNum - $pageNum;
+ if ($plugin == 0) {
+ $rush = self::getGoods(1, $search);//抢购商品
+ $groupon = self::getGoods(2, $search);//团购商品
+ $wlfightgroup = self::getGoods(3, $search);//拼团商品
+ $coupon = self::getGoods(5, $search);//优惠券
+ $bargain = self::getGoods(7, $search);//砍价
+ $integral = [];//self::getGoods(8, $search);//积分
+ $activity = self::getGoods(9, $search);//活动
+ $goods = array_merge($rush, $groupon, $wlfightgroup, $coupon, $bargain,$integral,$activity);
+ } else {
+ $goods = self::getGoods($plugin, $search, $start, $pageNum);
+ }
+ if (!$goods) {
+ wl_json(0, '暂无该类型商品!');
+ }
+ //获取总页数 进行分页
+ $data['page_number'] = ceil(count($goods) / $pageNum);//总页数
+ $goods = array_slice($goods, $start, $pageNum);
+ //只有抢购、团购、拼团、优惠券才会进行下面的操作
+ $initPlugin = $plugin;
+ foreach ($goods as $k => &$v) {
+ //查询全部商品时 每个商品从新定义内容
+ if ($initPlugin == 0) {
+ switch ($v['plugin']) {
+ case 'rush':
+ $plugin = 1;
+ break;//抢购商品
+ case 'groupon':
+ $plugin = 2;
+ break;//团购商品
+ case 'wlfightgroup':
+ $plugin = 3;
+ break;//拼团商品
+ case 'coupon':
+ $plugin = 5;
+ break;//优惠券
+ case 'bargain':
+ $plugin = 7;
+ break;//砍价商品
+ case 'integral':
+ $plugin = 8;
+ break;//砍价商品
+ case 'activity':
+ $plugin = 9;
+ break;//同城活动
+ }
+ }
+ $v = WeliamWeChat::getHomeGoods($plugin, $v['id']);
+ //获取商品详情页面的跳转地址
+ if ($geturl == 1) {
+ switch ($plugin) {
+ case 1:
+ $v['detail_url'] = h5_url('pages/subPages/goods/index', ['type' => 1, 'id' => $v['id']]);
+ break;//抢购商品
+ case 2:
+ $v['detail_url'] = h5_url('pages/subPages/goods/index', ['type' => 2, 'id' => $v['id']]);
+ break;//团购商品
+ case 3:
+ $v['detail_url'] = h5_url('pages/subPages/goods/index', ['type' => 3, 'id' => $v['id']]);
+ break;//拼团商品
+ case 5:
+ $v['detail_url'] = h5_url('pages/subPages/goods/index', ['type' => 5, 'id' => $v['id']]);
+ break;//优惠券
+ case 7:
+ $v['detail_url'] = h5_url('pages/subPages/goods/index', ['type' => 7, 'id' => $v['id']]);
+ break;//砍价商品
+ case 8:
+ $v['detail_url'] = h5_url('pages/subPages/goods/index', ['goodsType' => 'integral', 'goods_id' => $v['id']]);
+ break;//砍价商品
+ case 9:
+ $v['detail_url'] = h5_url('pages/subPages2/coursegoods/localindex/localindex');
+ break;//同城活动
+ }
+ }
+ }
+ //信息拼装
+ $data['goods'] = $goods;//商品信息
+ $data['page'] = $page;//当前页
+
+
+ //输出结果
+ if ($goods) {
+ wl_json(1, '获取商品信息', $data);
+ } else {
+ wl_json(0, '获取失败');
+ }
+ }
+ /**
+ * Comment: 获取头条信息
+ * Author: zzw
+ */
+ public function getHeadline() {
+ global $_W, $_GPC;
+ $search = $_GPC['search'];//搜索内容 头条标题/作者名称
+ $page = $_GPC['page'] ? $_GPC['page'] : 1;
+ $pageNum = $_GPC['pageNum'] ? $_GPC['pageNum'] : 10;
+ $start = $page * $pageNum - $pageNum;
+ $where = " uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} ";
+ if ($search) {
+ $where .= " AND (title LIKE '%{$search}%' || author LIKE '%{$search}%') ";
+ }
+ //获取头条列表
+ $list = pdo_fetchall("SELECT id,title,summary,display_img,author,author_img,browse,one_id,two_id FROM "
+ . tablename(PDO_NAME . "headline_content")
+ . " WHERE {$where} ORDER BY release_time DESC ");
+ $data['page_number'] = ceil(count($list) / $pageNum);//总页数
+ $list = array_slice($list, $start, $pageNum);
+ foreach ($list as $k => &$v) {
+ $v['display_img'] = tomedia($v['display_img']);
+ $v['author_img'] = tomedia($v['author_img']);
+ $v['one_name'] = implode(pdo_get(PDO_NAME . 'headline_class', array('id' => $v['one_id']), array('name')));
+ $v['two_name'] = implode(pdo_get(PDO_NAME . 'headline_class', array('id' => $v['two_id']), array('name')));
+ unset($v['one_id']);
+ unset($v['two_id']);
+ }
+ $data['list'] = $list;//头条信息
+ $data['page'] = $page;//当前页
+ if ($list) {
+ wl_json(1, '获取商品信息', $data);
+ } else {
+ wl_json(0, '获取失败');
+ }
+ }
+ /**
+ * Comment: 获取商户信息
+ * Author: zzw
+ */
+ public function getShop() {
+ global $_W, $_GPC;
+ $search = $_GPC['search'];//搜索内容 店铺名称
+ $page = $_GPC['page'] ? $_GPC['page'] : 1;
+ $pageNum = $_GPC['pageNum'] ? $_GPC['pageNum'] : 10;
+ $start = $page * $pageNum - $pageNum;
+ $where = " uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND status = 2 AND enabled = 1 ";
+ if ($search) {
+ $where .= " AND storename LIKE '%{$search}%' ";
+ }
+ $shopList = pdo_fetchall("SELECT id,storename,logo,address,location,storehours,pv,score,tag FROM "
+ . tablename(PDO_NAME . "merchantdata")
+ . " WHERE {$where}");
+ foreach ($shopList as $shop_key => &$shop_val) {
+ $shop_val['salesVolume'] = Store::getShopSales($shop_val['id'], 1, 0);
+ $shop_val['score'] = sprintf("%.1f", $shop_val['score']);
+ //标签信息处理
+ $tag = unserialize($shop_val['tag']);
+ if(is_array($tag) && count($tag) > 0){
+ $tags = pdo_getall(PDO_NAME.'tags' , ['id' => $tag] , ['title']);
+ $shop_val['tag'] = is_array($tag) && count($tag) > 0 ? array_column($tags , 'title') : [];
+ }else{
+ $shop_val['tag'] = [];
+ }
+ }
+ $shopList = Store::getstores($shopList, 0, 0, 4);
+ $data['page_number'] = ceil(count($shopList) / $pageNum);//总页数
+ $shopList = array_slice($shopList, $start, $pageNum);
+ //获取店铺商品活动信息
+ $shopList = WeliamWeChat::getStoreList($shopList);
+ $data['list'] = $shopList;//店铺信息
+ $data['page'] = $page;//当前页
+
+ if ($shopList) {
+ wl_json(1, '获取商品信息', $data);
+ } else {
+ wl_json(0, '获取失败');
+ }
+ }
+ /**
+ * Comment: 预览页面内容
+ * Author: zzw
+ */
+ public function previewPage() {
+ global $_W, $_GPC;
+ $id = intval($_GPC['id']);
+ $url = h5_url('pages/mainPages/index/diypage?type=1', ['id' => $id]);
+ $path = 'pages/mainPages/index/diypage?type=1&id='.$id;
+ $imageUrl = tomedia(WeApp::getQrCode($path,'system_url'.md5($path).'.png'));
+
+
+ include wl_template('diy/preview');
+ }
+ /**
+ * Comment: 根据状态获取商品信息
+ * Author: zzw
+ * @param $plugin int 商品类型 1=抢购 2=团购 3=拼团 5=优惠券
+ * @param $search string 搜索内容
+ * @return array
+ */
+ protected function getGoods($plugin, $search) {
+ global $_W;
+ $where = " AND a.uniacid = {$_W['uniacid']} AND a.aid = {$_W['aid']} ";
+ switch ($plugin) {
+ case 1:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','rush') as `plugin` FROM "
+ . tablename(PDO_NAME . "rush_activity")
+ . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata")
+ . " b ON a.sid = b.id WHERE a.status IN (1,2,3) {$where} AND a.name LIKE '%{$search}%'");//
+ break;//抢购商品
+ case 2:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','groupon') as `plugin` FROM "
+ . tablename(PDO_NAME . "groupon_activity")
+ . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata")
+ . " b ON a.sid = b.id WHERE a.status IN (1,2,3) {$where} AND a.name LIKE '%{$search}%'");
+ break;//团购商品
+ case 3:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','wlfightgroup') as `plugin` FROM "
+ . tablename(PDO_NAME . "fightgroup_goods")
+ . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata")
+ . " b ON a.merchantid = b.id WHERE a.status IN (1,2,3) {$where} AND b.storename != '' AND a.name LIKE '%{$search}%'");
+ break;//拼团商品
+ case 4:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','package') as `plugin` FROM "
+ . tablename(PDO_NAME . "package")
+ . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata")
+ . " b ON a.merchantid = b.id WHERE a.status = 1 {$where} AND b.storename != '' AND a.title LIKE '%{$search}%'");
+ break;//大礼包
+ case 5:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','coupon') as `plugin` FROM "
+ . tablename(PDO_NAME . "couponlist")
+ . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata")
+ . " b ON a.merchantid = b.id WHERE a.status IN (1,2,3) {$where} AND b.storename != '' AND a.title LIKE '%{$search}%'");
+ break;//优惠券
+ case 6:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','halfcard') as `plugin` FROM "
+ . tablename(PDO_NAME . "halfcardlist")
+ . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata")
+ . " b ON a.merchantid = b.id WHERE a.status = 1 {$where} AND b.storename != '' AND a.title LIKE '%{$search}%'");
+ break;//折扣卡
+ case 7:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','bargain') as `plugin` FROM "
+ . tablename(PDO_NAME . "bargain_activity")
+ . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata")
+ . " b ON a.sid = b.id WHERE a.status IN (1,2,3) {$where} AND b.storename != '' AND a.name LIKE '%{$search}%'");
+ break;//砍价
+ case 8:
+ $goods = pdo_fetchall("SELECT id,REPLACE('table','table','integral') as `plugin` FROM "
+ . tablename(PDO_NAME . "consumption_goods")
+ . " WHERE status = 1 AND uniacid = {$_W['uniacid']} AND title LIKE '%{$search}%'");
+ break;//砍价
+ case 9:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','activity') as `plugin` FROM "
+ . tablename(PDO_NAME . "activitylist")
+ . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata")
+ . " b ON a.sid = b.id WHERE a.status IN (1,2) {$where} AND b.storename != '' AND a.title LIKE '%{$search}%'");
+ break;//同城活动
+ case 10:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','citydelivery') as `plugin` FROM "
+ . tablename(PDO_NAME . "delivery_activity")
+ . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata")
+ . " b ON a.sid = b.id WHERE a.status = 2 {$where} AND b.storename != '' AND a.name LIKE '%{$search}%'");
+ break;//配送商品
+ }
+ return $goods;
+ }
+ /**
+ * Comment: 在这里配置diy编辑页面中选项卡组件的详细信息
+ * Author: zzw
+ */
+ public function getOption() {
+ //商家sotre;抢购rush;卡券coupon;特权halfcard;拼团fight;同城pocket;活动activity;团购groupon;砍价bargain;积分consumption;礼包package
+ $configInfo = [
+ ['status' => 1 , 'name' => '商家' , 'plugin' => '' , 'nickname' => '商家' , 'type' => 'store'] ,
+ ['status' => 1 , 'name' => '抢购' , 'plugin' => 'rush' , 'nickname' => '抢购' , 'type' => 'rush'] ,
+ ['status' => 1 , 'name' => '卡券' , 'plugin' => 'wlcoupon' , 'nickname' => '卡券' , 'type' => 'coupon'] ,
+ ['status' => 1 , 'name' => '特权' , 'plugin' => 'halfcard' , 'nickname' => '特权' , 'type' => 'halfcard'] ,
+ ['status' => 1 , 'name' => '拼团' , 'plugin' => 'wlfightgroup' , 'nickname' => '拼团' , 'type' => 'fight'] ,
+ ['status' => 1 , 'name' => '同城' , 'plugin' => 'pocket' , 'nickname' => '同城' , 'type' => 'pocket'] ,
+ ['status' => 1 , 'name' => '团购' , 'plugin' => 'groupon' , 'nickname' => '团购' , 'type' => 'groupon'] ,
+ ['status' => 1 , 'name' => '砍价' , 'plugin' => 'bargain' , 'nickname' => '砍价' , 'type' => 'bargain'] ,
+ ['status' => 1 , 'name' => '积分' , 'plugin' => '' , 'nickname' => '积分' , 'type' => 'consumption'] ,
+ ['status' => 1 , 'name' => '礼包' , 'plugin' => 'halfcard' , 'nickname' => '礼包' , 'type' => 'package'] ,
+ ['status' => 1 , 'name' => '活动' , 'plugin' => 'activity' , 'nickname' => '活动' , 'type' => 'activity'] ,
+ ['status' => 1 , 'name' => '招聘' , 'plugin' => 'recruit' , 'nickname' => '招聘' , 'type' => 'recruit'] ,
+ ];
+ $data = array();
+ foreach ($configInfo as $k => &$v) {
+ if ($v['plugin']) {
+ if (!p($v['plugin'])) {
+ unset($configInfo[$k]);
+ continue;
+ }
+ }
+ unset($v['plugin']);
+ $name = 'C012345678910' . (count($data) + 1);
+ $v['sort'] = (count($data) + 1);
+ $data[$name] = $v;
+ }
+
+ echo json_encode($data, JSON_UNESCAPED_UNICODE);
+ }
+ /**
+ * Comment: 获取社群信息
+ * Author: zzw
+ * Date: 2019/11/21 14:52
+ */
+ public function getCommunityInfo() {
+ global $_W, $_GPC;
+ #1、参数获取
+ $id = $_GPC['id'] OR Commons::sRenderError('id错误,请刷新重试!');
+ #2、获取社群信息
+ $info = pdo_get(PDO_NAME . "community", ['id' => $id], ['communname', 'commundesc', 'communimg', 'communqrcode']);
+ $info['communimg'] = tomedia($info['communimg']);
+ $info['communqrcode'] = tomedia($info['communqrcode']);
+
+ Commons::sRenderSuccess('社群信息', $info);
+ }
+
+
+}
\ No newline at end of file
diff --git a/addons/weliam_smartcity/web/controller/finace/finaceWithdrawal.ctrl.php b/addons/weliam_smartcity/web/controller/finace/finaceWithdrawal.ctrl.php
new file mode 100644
index 0000000..fea99cb
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/finace/finaceWithdrawal.ctrl.php
@@ -0,0 +1,169 @@
+ $_W['aid']));
+ //提现账号
+ if(!empty($a['cashopenid'])){
+ if(intval($a['cashopenid']) > 0){
+ $user = pdo_get(PDO_NAME.'member', ['id' => $a['cashopenid']], ['avatar', 'id', 'realname', 'nickname','openid','wechat_openid']);
+ }else{
+ $user = pdo_get(PDO_NAME.'member', ['openid' => $a['cashopenid']], ['avatar', 'id', 'realname', 'nickname','openid','wechat_openid']);
+ }
+ }else{
+ $user = [];
+ }
+ //提现申请
+ $p = unserialize($a['percent']);
+ $cashsets = Setting::wlsetting_read('cashset');
+ $agentpercent = $p['agentpercent'] ? $p['agentpercent'] : $cashsets['agentpercent'];
+ $cashsets['lowsetmoney'] = $cashsets['lowsetmoney'] ? $cashsets['lowsetmoney'] : 0;
+ $money = $num = 0;
+
+ /*提现申请*/
+ if ($_GPC['money'] > 0) {
+ $money = $_GPC['money'];
+ $num = $_GPC['num'];
+ if ($num < $cashsets['lowsetmoney']) {
+ Commons::sRenderError('申请金额小于最低结算金额!');
+ } else if ($num > $a['nowmoney']) {
+ Commons::sRenderError('申请金额大于账户现有金额!');
+ } else {
+ $data = array(
+ 'uniacid' => $_W['uniacid'] ,
+ 'sid' => 0 , 'aid' => $_W['aid'] ,
+ 'status' => 2 , 'type' => 2 ,
+ 'sapplymoney' => $num ,
+ 'sgetmoney' => sprintf("%.2f" , $num - $agentpercent * $num / 100) ,
+ 'spercentmoney' => sprintf("%.2f" , $agentpercent * $num / 100) ,
+ 'spercent' => $agentpercent ,
+ 'applytime' => TIMESTAMP ,
+ 'updatetime' => TIMESTAMP ,
+ 'sopenid' => $user['openid']?$user['openid']:$user['wechat_openid'],
+ 'source' => $user['openid']?1:3
+ );
+ if ($a['payment_type'] == 1) {
+ //支付宝
+ if ($a['alipay']) {
+ $data['payment_type'] = 1;
+ } else {
+ Commons::sRenderError('请填写支付宝账号信息!');
+ }
+ } else if ($a['payment_type'] == 2) {
+ //微信
+ $data['payment_type'] = 2;
+ if(empty($user['openid']) && empty($user['wechat_openid'])){
+ Commons::sRenderError('打款账号无微信账户信息,无法提现');
+ }
+ } else if ($a['payment_type'] == 3) {
+ //银行卡
+ if ($a['card_number']) {
+ $data['payment_type'] = 3;
+ } else {
+ Commons::sRenderError('请填写银行卡账号信息!');
+ }
+ } else {
+ Commons::sRenderError('请选择收款方式!');
+ }
+ if ($cashsets['noaudit']) {
+ $data['status'] = 3;
+ $trade_no = time() . random(4, true);
+ $data['trade_no'] = $trade_no;
+ $data['updatetime'] = time();
+ }
+ if (pdo_insert(PDO_NAME . 'settlement_record', $data)) {
+ $settid = pdo_insertid();
+ $res = Store::settlement($settid, 0, 0, -$num, 0, 0, 7);
+ if ($cashsets['agentautocash']) {
+ Queue::addTask(4, $settid, time(), $settid);
+ }
+ if ($res) {
+ if (!empty($_W['wlsetting']['adminmid'])) {
+ $storename = pdo_getcolumn(PDO_NAME . 'agentusers', array('id' => $_W['aid']), 'agentname');
+ $first = '您好,有一个代理提现申请待审核。';
+ $type = '代理[' . $storename . ']申请提现';
+ $status = '待审核';
+ $remark = '请尽快前往系统后台审核';
+ $content = '申请金额:¥' . $num;
+ News::jobNotice($_W['wlsetting']['adminmid'], $first, $type, $content, $status, $remark,$data['applytime']);
+ }
+ Commons::sRenderSuccess('申请成功!');
+ } else {
+ Commons::sRenderError('申请失败!');
+ }
+ }
+ }
+ Commons::sRenderError('申请失败!');
+ }
+ if ($_GPC['num']) {
+ $num = $_GPC['num'];
+ if ($num > $a['nowmoney']) {
+ Commons::sRenderError('申请金额大于账户现有金额!');
+ }
+ $percentMoney = sprintf("%.2f", $agentpercent * $num / 100);
+ $money = sprintf("%.2f", $num - $agentpercent * $num / 100);
+
+ Commons::sRenderSuccess('申请成功!',['num' => $num, 'percentMoney' => $percentMoney, 'money' => $money]);
+ }
+ include wl_template('finace/agentApply');
+ }
+ //代理商提现账户设置
+ public function account() {
+ global $_W, $_GPC;
+ $a = Util::getSingelData('cashopenid,bank_username,payment_type,bank_name,card_number,alipay', PDO_NAME . 'agentusers', array('id' => $_W['aid']));
+ //提现账号
+ if ($a['cashopenid']) {
+ $user = Member::wl_member_get($a['cashopenid']);
+ }
+ if (checksubmit('submit')) {
+ $cashmid = $_GPC['openid'];
+ $realname = $_GPC['realname'];
+ $data = $_GPC['data'];
+ $data['cashopenid'] = $cashmid;
+ pdo_update(PDO_NAME . 'agentusers', $data, array('id' => $_W['aid']));
+ $upwhere = empty(intval($cashmid)) ? array('openid' => $cashmid) : array('id' => $cashmid);
+ pdo_update(PDO_NAME . 'member', array('realname' => $realname), $upwhere);
+ wl_message('保存成功!', referer(), 'success');
+ }
+ //获取平台开通的打款方式
+ $cashset = Setting::wlsetting_read('cashset')['payment_type'];
+
+ include wl_template('finace/useraccount');
+ }
+ //代理商提现记录
+ public function cashApplyAgentRecord() {
+ global $_W, $_GPC;
+ $pindex = max(1, intval($_GPC['page']));
+ $psize = 10;
+
+ $where = array('uniacid' => $_W['uniacid'], 'type' => array(1, 2), 'aid' => $_W['aid']);
+ if ($_GPC['orderid']) {
+ $where['id'] = $_GPC['orderid'];
+ }
+
+ $list = pdo_getslice(PDO_NAME . 'settlement_record', $where, array($pindex, $psize), $total, array(), '', 'id DESC');
+ foreach ($list as $key => &$value) {
+ if ($value['type'] == 1) {
+ $value['aName'] = pdo_getcolumn(PDO_NAME . 'merchantdata', array('id' => $value['sid']), 'storename');
+ } else {
+ $value['aName'] = Util::idSwitch('aid', 'aName', $value['aid']);
+ $value['spercent'] = sprintf("%.2f", $value['spercent']);
+ }
+
+ }
+ $pager = wl_pagination($total, $pindex, $psize);
+
+ include wl_template('finace/cashApplyAgentRecord');
+ }
+
+}
diff --git a/addons/weliam_smartcity/web/controller/finace/wlCash.ctrl.php b/addons/weliam_smartcity/web/controller/finace/wlCash.ctrl.php
new file mode 100644
index 0000000..3403dbe
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/finace/wlCash.ctrl.php
@@ -0,0 +1,389 @@
+ $_W['aid']));
+
+ $data = Merchant::agentCashSurvey($refresh, $timetype, $starttime, $endtime, $merchantid);
+ $agents = $data[0];
+ $children = $data[1];
+ $max = $data[2];
+ $allMoney = $data[3];
+ $time = $data[4];
+ $newdata = $data[5];
+
+ // wl_debug($merchantid);
+ include wl_template('finace/cashSurvey');
+ }
+
+ public function cashset() {
+ global $_W, $_GPC;
+ $cashset = Setting::agentsetting_read('cashset');
+ if (checksubmit('submit')) {
+ $set = $_GPC['cashset'];
+ $res1 = Setting::agentsetting_save($set, 'cashset');
+ if ($res1) {
+ wl_message('保存设置成功!', referer(), 'success');
+ } else {
+ wl_message('保存设置失败!', referer(), 'error');
+ }
+ }
+
+ include wl_template('finace/cashset');
+ }
+
+ public function cashApply() {
+ global $_W, $_GPC;
+ //提现申请
+ if ($_GPC['type'] == 'submit' && !empty($_GPC['id'])) {
+ pdo_update(PDO_NAME . 'settlement_record', array('status' => 2, 'updatetime' => TIMESTAMP), array('id' => $_GPC['id']));
+ wl_message('提交成功!', web_url('finace/finaceWithdrawalApply/cashApply', array('status' => 2)), 'success');
+ } else if ($_GPC['type'] == 'reject' && !empty($_GPC['id'])) {
+ pdo_update(PDO_NAME . 'settlement_record', array('status' => '-2', 'updatetime' => TIMESTAMP), array('id' => $_GPC['id']));
+ $record = pdo_get(PDO_NAME . 'settlement_record', array('id' => $_GPC['id']), array('type', 'sid', 'aid', 'sapplymoney', 'id'));
+ // wl_debug($record);
+ if ($record['type'] == 1) {
+ Store::settlement($record['id'], 0, $record['sid'], $record['sapplymoney'], 0, $record['sapplymoney'], 7, 0);
+ } else if ($record['type'] == 2) {
+ Store::settlement($record['id'], 0, $record['sid'], $record['sapplymoney'], 0, 0, 7, 0);
+ }
+ wl_message('驳回成功!', web_url('finace/finaceWithdrawalApply/cashApply', array('status' => 6)), 'success');
+ } else {
+ $where = array();
+ $status = $_GPC['status'] ? $_GPC['status'] : 1;
+ if ($status == 1)
+ $where['status'] = 1;
+ if ($status == 2)
+ $where['status'] = 2;
+ if ($status == 3)
+ $where['status'] = 3;
+ if ($status == 4)
+ $where['status'] = 4;
+ if ($status == 5)
+ $where['status'] = 5;
+ if ($status == 6)
+ $where['#status#'] = '(-1,-2)';
+ $where['type'] = 1;
+ $where['aid'] = $_W['aid'];
+ $list = Util::getNumData('*', PDO_NAME . 'settlement_record', $where);
+ $list = $list[0];
+ foreach ($list as $key => &$value) {
+ $value['sName'] = Util::idSwitch('sid', 'sName', $value['sid']);
+ $value['aName'] = Util::idSwitch('aid', 'aName', $value['aid']);
+ }
+ }
+ include wl_template('finace/cashConfirm');
+ }
+
+ /**
+ * Comment: 编辑代理商分账信息
+ */
+ public function allidset(){
+ global $_W, $_GPC;
+ $cashset = Util::getSingelData('wxpaysetid,apppaysetid', PDO_NAME . 'agentusers', array('id' => $_W['aid']));
+ //支付信息列表
+ if($_W['wlsetting']['cashset']['allocationtype'] == 1){
+ $paylist = pdo_getall(PDO_NAME."payment",['uniacid'=>$_W['uniacid'],'type'=>1],['id','name']);
+ }
+ if (checksubmit('submit')) {
+ $set = $_GPC['cashset'];
+// if ($set['wxsysalltype'] == 1) {
+// if (empty($set['wxmerchantid'])) {
+// show_json(0, '请设置公众号代理分账商户号');
+// }
+// if (empty($set['wxmerchantname'])) {
+// show_json(0, '请设置公众号代理分账商户名称');
+// }
+// } else if ($set['wxsysalltype'] == 2) {
+// if (empty($set['wxallmid'])) {
+// show_json(0, '请设置公众号代理分账个人微信号');
+// } else {
+// $member = pdo_get('wlmerchant_member', array('id' => $set['wxallmid']), array('openid'));
+// if (empty($member['openid'])) {
+// show_json(0, '所选用户无微信公众号账户信息,请重选');
+// }
+// }
+// }
+// if ($set['appsysalltype'] == 1) {
+// if (empty($set['appmerchantid'])) {
+// show_json(0, '请设置小程序代理分账商户号');
+// }
+// if (empty($set['appmerchantname'])) {
+// show_json(0, '请设置小程序代理分账商户名称');
+// }
+// } else if ($set['appsysalltype'] == 2) {
+// if (empty($set['appallmid'])) {
+// show_json(0, '请设置小程序代理分账个人微信号');
+// } else {
+// $member = pdo_get('wlmerchant_member', array('id' => $set['appallmid']), array('wechat_openid'));
+// if (empty($member['wechat_openid'])) {
+// show_json(0, '所选用户无微信小程序账户信息,请重选');
+// }
+// }
+// }
+ $res1 = pdo_update(PDO_NAME . 'agentusers', $set, array('id' => $_W['aid']));
+
+ if ($res1) {
+ show_json(1);
+ } else {
+ show_json(0,'保存设置失败,请重试');
+ }
+ }
+ include wl_template('finace/allidset');
+ }
+
+
+
+
+ public function detail() {
+ global $_W, $_GPC;
+ //提现申请详情
+ $id = $_GPC['id'];
+ $where = array();
+ $where['id'] = $id;
+ $settlementRecord = Util::getSingelData('*', PDO_NAME . 'settlement_record', $where);
+ $settlementRecord['sName'] = Util::idSwitch('sid', 'sName', $settlementRecord['sid']);
+ $settlementRecord['aName'] = Util::idSwitch('aid', 'aName', $settlementRecord['aid']);
+ $orders = unserialize($settlementRecord['ids']);
+ $list = array();
+ foreach ($orders as $id) {
+ if ($settlementRecord['type'] == 1) {
+ if ($settlementRecord['type2'] == 1) {
+ $v = Util::getSingelData('*', PDO_NAME . 'order', array('id' => $id));
+ $coupon = pdo_get('wlmerchant_couponlist', array('id' => $v['fkid']), array('title', 'logo'));
+ $merchant = pdo_get('wlmerchant_merchantdata', array('id' => $v['sid']), array('storename'));
+ $member = pdo_get('wlmerchant_member', array('id' => $v['mid']), array('nickname', 'avatar', 'mobile'));
+ $v['gname'] = $coupon['title'];
+ $v['gimg'] = tomedia($coupon['logo']);
+ $v['storename'] = $merchant['storename'];
+ $v['nickname'] = $member['nickname'];
+ $v['headimg'] = $member['avatar'];
+ $v['mobile'] = $member['mobile'];
+ $list[] = $v;
+ } else if ($settlementRecord['type2'] == 2) {
+ $v = Util::getSingelData('*', PDO_NAME . 'order', array('id' => $id));
+ $fightgoods = pdo_get('wlmerchant_fightgroup_goods', array('id' => $v['fkid']), array('name', 'logo'));
+ $merchant = pdo_get('wlmerchant_merchantdata', array('id' => $v['sid']), array('storename'));
+ $member = pdo_get('wlmerchant_member', array('id' => $v['mid']), array('nickname', 'avatar', 'mobile'));
+ $v['gname'] = $fightgoods['name'];
+ $v['gimg'] = tomedia($fightgoods['logo']);
+ $v['storename'] = $merchant['storename'];
+ $v['nickname'] = $member['nickname'];
+ $v['headimg'] = $member['avatar'];
+ $v['mobile'] = $member['mobile'];
+ $list[] = $v;
+ } else {
+ $list[] = Rush::getSingleOrder($id, "*");
+ }
+ }
+
+ if ($settlementRecord['type'] == 2)
+ $list[] = Util::getSingelData("*", PDO_NAME . 'vip_record', array('id' => $id));
+ if ($settlementRecord['type'] == 3)
+ $list[] = Util::getSingelData("*", PDO_NAME . 'halfcard_record', array('id' => $id));
+ }
+ if ($settlementRecord['type'] == 2) {
+ foreach ($list as $key => &$value) {
+ $value['areaName'] = Util::idSwitch('areaid', 'areaName', $value['areaid']);
+ $value['member'] = Member::wl_member_get($value['mid']);
+ }
+ }
+ if ($settlementRecord['type'] == 3) {
+ foreach ($list as $key => &$v) {
+ $user = pdo_get('wlmerchant_member', array('id' => $v['mid']));
+ $v['nickname'] = $user['nickname'];
+ $v['avatar'] = $user['avatar'];
+ $v['mobile'] = $user['mobile'];
+ }
+ }
+ include wl_template('finace/cashDetail');
+ }
+
+ public function settlement() {
+ global $_W, $_GPC;
+ $id = $_GPC['id'];
+ $where = array();
+ $where['id'] = $id;
+ $settlementRecord = Util::getSingelData('*', PDO_NAME . 'settlement_record', $where);
+ $settlementRecord['sName'] = Util::idSwitch('sid', 'sName', $settlementRecord['sid']);
+ $settlementRecord['aName'] = Util::idSwitch('aid', 'aName', $settlementRecord['aid']);
+ $_GPC['type'] = $_GPC['type'] ? $_GPC['type'] : 'settlement';
+ if ($_GPC['type'] == 'money_record') {
+ $pindex = max(1, intval($_GPC['page']));
+ $psize = 15;
+ $moneyRecordData = SingleMerchant::getMoneyRecord($id, $pindex, $psize, 1);
+ $moneyRecord = $moneyRecordData[0];
+
+ $pager = $moneyRecordData[1];
+ foreach ($moneyRecord as &$item) {
+ if ($item['orderid'])
+ $item['order'] = Rush::getSingleOrder($item['orderid'], '*');
+ }
+ }
+ if ($_GPC['type'] == 'settlement_record') {
+ //结算记录
+ $id = $_GPC['id'];
+ $merchant = Store::getSingleStore($id);
+ $account = pdo_fetch("SELECT * FROM " . tablename('tg_merchant_account') . " WHERE uniacid = {$_W['uniacid']} and merchantid={$id}");
+ $merchant['amount'] = $account['amount'];
+ $merchant['no_money'] = $account['no_money'];
+ $merchant['no_money_doing'] = $account['no_money_doing'];
+ $list = pdo_fetchall("select * from" . tablename('tg_merchant_record') . "where merchantid='{$id}' and uniacid={$_W['uniacid']} ");
+
+ }
+ if ($_GPC['type'] == 'settlement') {
+ //结算操作
+ $merchant = Store::getSingleStore($settlementRecord['sid']);
+ $_GPC['accountType'] = $_GPC['accountType'] ? $_GPC['accountType'] : 'f2f';
+ if (checksubmit('submit') && $_GPC['accountType'] == 'weixin') {
+ }
+ if (checksubmit('submit') && $_GPC['accountType'] == 'f2f') {
+ if ($settlementRecord['status'] != 4)
+ wl_message('结算状态错误!', web_url('finace/finaceWithdrawalApply/cashApply'), 'error');
+ $money = $_GPC['money'];
+ //实际结算给商家
+ $spercent = $_GPC['spercent'] ? $_GPC['spercent'] : $settlementRecord['spercent'];
+ //佣金百分比
+ $spercentMoney = $_GPC['spercentMoney'];
+ //佣金
+ if (is_numeric($money)) {
+ if (pdo_update(PDO_NAME . 'settlement_record', array('status' => 5, 'updatetime' => TIMESTAMP, 'spercentmoney' => $spercentMoney, 'spercent' => $spercent, 'sgetmoney' => $money), array('id' => $_GPC['id']))) {
+ $orders = unserialize($settlementRecord['ids']);
+ foreach ($orders as $iid) {
+ if ($settlementRecord['type2']) {
+ pdo_update(PDO_NAME . 'order', array('issettlement' => 2), array('id' => $iid));
+ } else {
+ pdo_update(PDO_NAME . 'rush_order', array('issettlement' => 2), array('id' => $iid));
+ }
+ }
+ }
+ wl_message('已结算给商家!', web_url('finace/finaceWithdrawalApply/cashApply', array('status' => 5)), 'success');
+ } else {
+ wl_message('结算金额输入错误!', referer(), 'error');
+ }
+ wl_message('操作成功!', referer(), 'success');
+ }
+ }
+ include wl_template('finace/account');
+ }
+
+ public function output() {
+ global $_W, $_GPC;
+
+ $where['id'] = $_GPC['id'];
+ $settlementRecord = Util::getSingelData('*', PDO_NAME . 'settlement_record', $where);
+ $orders = unserialize($settlementRecord['ids']);
+ $list = array();
+ if ($settlementRecord['type'] == 1) {
+ foreach ($orders as $id) {
+ if ($settlementRecord['type2'] == 1) {
+ $v = Util::getSingelData('*', PDO_NAME . 'order', array('id' => $id));
+ $coupon = pdo_get('wlmerchant_couponlist', array('id' => $v['fkid']), array('title', 'logo'));
+ $merchant = pdo_get('wlmerchant_merchantdata', array('id' => $v['sid']), array('storename'));
+ $member = pdo_get('wlmerchant_member', array('id' => $v['mid']), array('nickname', 'avatar', 'mobile'));
+ $v['title'] = $coupon['title'];
+ $v['gimg'] = tomedia($coupon['logo']);
+ $v['storename'] = $merchant['storename'];
+ $v['nickname'] = $member['nickname'];
+ $v['headimg'] = $member['avatar'];
+ $v['mobile'] = $member['mobile'];
+ $v['actualprice'] = $v['price'];
+ $v['gname'] = $v['title'];
+ $list[] = $v;
+ } else {
+ $list[] = Rush::getSingleOrder($id, "*");
+ }
+ }
+ }
+ if ($settlementRecord['type'] == 2) {
+ foreach ($orders as $id) {
+ $order = Util::getSingelData("*", PDO_NAME . 'vip_record', array('id' => $id));
+ $member = Member::wl_member_get($order['mid']);
+ $order['nickname'] = $member['nickname'];
+ $order['actualprice'] = $order['price'];
+ $order['mobile'] = $member['mobile'];
+ $order['gname'] = 'VIP充值';
+ $list[] = $order;
+ }
+ }
+ if ($settlementRecord['type'] == 3) {
+ foreach ($orders as $id) {
+ $order = Util::getSingelData("*", PDO_NAME . 'halfcard_record', array('id' => $id));
+ $member = Member::wl_member_get($order['mid']);
+ $order['nickname'] = $member['nickname'];
+ $order['actualprice'] = $order['price'];
+ $order['mobile'] = $member['mobile'];
+ $order['gname'] = '一卡通充值';
+ $list[] = $order;
+ }
+ }
+ $orders = $list;
+ if ($settlementRecord['status'] == 1)
+ $settleStatus = '代理审核中';
+ if ($settlementRecord['status'] == 2)
+ $settleStatus = '系统审核中';
+ if ($settlementRecord['status'] == 3)
+ $settleStatus = '系统审核通过,待结算';
+ if ($settlementRecord['status'] == 4)
+ $settleStatus = '已结算到代理';
+ if ($settlementRecord['status'] == 5)
+ $settleStatus = '已结算到商家';
+ if ($settlementRecord['status'] == -1)
+ $settleStatus = '系统审核不通过';
+ if ($settlementRecord['status'] == -2)
+ $settleStatus = '代理审核不通过';
+ $html = "\xEF\xBB\xBF";
+ $filter = array('aa' => '商户单号', 'bb' => '昵称', 'cc' => '电话', 'dd' => '支付金额', 'ee' => '订单状态', 'jj' => '结算状态', 'ff' => '支付时间', 'gg' => '商品名称', 'hh' => '微信订单号');
+ foreach ($filter as $key => $title) {
+ $html .= $title . "\t,";
+ }
+ $html .= "\n";
+ foreach ($orders as $k => $v) {
+ if ($v['status'] == '0')
+ $thisstatus = '未支付';
+ if ($v['status'] == '1')
+ $thisstatus = '已支付';
+ if ($v['status'] == '2')
+ $thisstatus = '已消费';
+ $time = date('Y-m-d H:i:s', $v['paytime']);
+ $orders[$k]['aa'] = $v['orderno'];
+ $orders[$k]['bb'] = $v['nickname'];
+ $orders[$k]['cc'] = $v['mobile'];
+ $orders[$k]['dd'] = $v['actualprice'];
+ $orders[$k]['ee'] = $thisstatus;
+ $orders[$k]['jj'] = $settleStatus;
+ $orders[$k]['ff'] = $time;
+ $orders[$k]['gg'] = $v['gname'];
+ $orders[$k]['hh'] = $v['transid'];
+ foreach ($filter as $key => $title) {
+ $html .= $orders[$k][$key] . "\t,";
+ }
+ $html .= "\n";
+ }
+ header("Content-type:text/csv");
+ header("Content-Disposition:attachment; filename=未结算订单.csv");
+ echo $html;
+ exit();
+
+ }
+
+
+
+
+}
diff --git a/addons/weliam_smartcity/web/controller/goodshouse/category.ctrl.php b/addons/weliam_smartcity/web/controller/goodshouse/category.ctrl.php
new file mode 100644
index 0000000..25edff4
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/goodshouse/category.ctrl.php
@@ -0,0 +1,216 @@
+$value],['id'=>$id]);
+ if($res) show_json(1,'修改成功');
+ else show_json(0,'修改失败,请刷新重试!');
+ }
+ /**
+ * Comment: 调取分类编辑页面
+ * Author: zzw
+ * Date: 2019/12/20 14:35
+ */
+ public function cateModel(){
+ global $_W,$_GPC;
+ #1、参数获取
+ $plugin = $_GPC['plugin'] OR show_json(0,'参数错误,请刷新重试!');
+ $id = $_GPC['id'];
+ #1、参数获取
+ if($id){
+ switch ($plugin) {
+ case 'rush':
+ $tableName = PDO_NAME."rush_category";
+ break;//抢购
+ case 'groupon':
+ $tableName = PDO_NAME."groupon_category";
+ break;//团购
+ case 'wlfightgroup':
+ $tableName = PDO_NAME."fightgroup_category";
+ break;//拼团
+ case 'bargain':
+ $tableName = PDO_NAME."bargain_category";
+ break;//砍价
+ }
+ $info = pdo_get($tableName,['id'=>$id]);
+ if(!$info) show_json(0,'分类不存在,请刷新重试!');
+ if($plugin == 'wlfightgroup'){
+ $info['sort'] = $info['listorder'];
+ $info['thumb'] = $info['logo'];
+ unset($info['listorder']);
+ unset($info['logo']);
+ }
+ }
+
+ include wl_template('goodshouse/cate_model');
+ }
+ /**
+ * Comment: 商品分类添加/编辑
+ * Author: zzw
+ * Date: 2019/12/20 14:48
+ */
+ public function cateEdit(){
+ global $_W,$_GPC;
+ #1、参数获取
+ $plugin = $_GPC['plugin'] OR show_json(0,'参数错误,请刷新重试!');
+ $id = $_GPC['id'];
+ $data = $_GPC['data'];
+ #2、表获取
+ switch ($plugin) {
+ case 'rush':
+ $tableName = PDO_NAME."rush_category";
+ break;//抢购
+ case 'groupon':
+ $tableName = PDO_NAME."groupon_category";
+ break;//团购
+ case 'wlfightgroup':
+ $tableName = PDO_NAME."fightgroup_category";
+ $data['listorder'] = $data['sort'];
+ $data['logo'] = $data['thumb'];
+ unset($data['sort']);
+ unset($data['thumb']);
+ break;//拼团
+ case 'bargain':
+ $tableName = PDO_NAME."bargain_category";
+ break;//砍价
+ }
+ #3、添加/修改 操作
+ if($id > 0){
+ //修改操作
+ $res = pdo_update($tableName,$data,['id'=>$id]);
+ }else{
+ //添加操作
+ if(empty($data['name'])) show_json(0,'分类名称不能为空!');
+ $data['aid'] = $_W['aid'];
+ $data['uniacid'] = $_W['uniacid'];
+ $res = pdo_insert($tableName,$data);
+ }
+ #4、判断操作是否超过
+ if($res) show_json(1, '操作成功');
+ else show_json(0, '操作失败,请刷新页面重试!');
+ }
+ /**
+ * Comment: 删除分类
+ * Author: zzw
+ * Date: 2019/12/20 14:54
+ */
+ public function cateDelete(){
+ global $_W,$_GPC;
+ #1、参数获取
+ $plugin = $_GPC['plugin'] OR show_json(0,'参数错误,请刷新重试!');
+ $id = $_GPC['id'];
+ #2、表获取
+ switch ($plugin) {
+ case 'rush':
+ $tableName = PDO_NAME."rush_category";
+ break;//抢购
+ case 'groupon':
+ $tableName = PDO_NAME."groupon_category";
+ break;//团购
+ case 'wlfightgroup':
+ $tableName = PDO_NAME."fightgroup_category";
+ break;//拼团
+ case 'bargain':
+ $tableName = PDO_NAME."bargain_category";
+ break;//砍价
+ }
+ #3、删除分类
+ $res = pdo_delete($tableName,['id'=>$id]);
+ #4、判断操作是否超过
+ if($res) show_json(1, '操作成功');
+ else show_json(0, '操作失败,请刷新页面重试!');
+ }
+ /**
+ * Comment: 导入商家分类信息
+ * Author: zzw
+ * Date: 2019/12/20 15:27
+ */
+ public function cateImportShop(){
+ global $_W,$_GPC;
+ global $_W,$_GPC;
+ #1、参数获取
+ $plugin = $_GPC['plugin'] OR show_json(0,'参数错误,请刷新重试!');
+ #2、表获取
+ switch ($plugin) {
+ case 'rush':
+ $tableName = PDO_NAME."rush_category";
+ break;//抢购
+ case 'groupon':
+ $tableName = PDO_NAME."groupon_category";
+ break;//团购
+ case 'wlfightgroup':
+ $tableName = PDO_NAME."fightgroup_category";
+ break;//拼团
+ case 'bargain':
+ $tableName = PDO_NAME."bargain_category";
+ break;//砍价
+ case 'activity':
+ $tableName = PDO_NAME."activity_category";
+ break;//活动
+ }
+ #3、商家分类获取(仅获取一级)
+ $shopList = pdo_fetchall("SELECT `name`,thumb FROM ".tablename(PDO_NAME."category_store")
+ ." WHERE aid = {$_W['aid']} AND uniacid = {$_W['uniacid']} AND parentid = 0 AND state = 0 ORDER BY displayorder ASC ");
+ #4、获取当前分类列表最大排序
+ $where = " WHERE aid = {$_W['aid']} AND uniacid = {$_W['uniacid']} ";
+ if($plugin == 'wlfightgroup'){
+ $max = pdo_fetchcolumn("SELECT MAX(listorder) FROM ".tablename($tableName).$where);
+ }else{
+ $max = pdo_fetchcolumn("SELECT MAX(sort) FROM ".tablename($tableName).$where);
+ }
+ #4、循环进行导入操作
+ foreach ($shopList as $key => $val) {
+ $max++;
+ $data = [
+ 'aid' => $_W['aid'] ,
+ 'uniacid' => $_W['uniacid'] ,
+ 'name' => $val['name'] ,
+ ];
+ //根据类型 进行排序和图片的定义
+ if($plugin == 'wlfightgroup'){
+ $data['logo'] = $val['thumb'];
+ $data['listorder'] = $max;
+ }else if($plugin == 'activity'){
+ $data['logo'] = $val['thumb'];
+ $data['sort'] = $max;
+ $data['status'] = 1;
+ } else{
+ $data['thumb'] = $val['thumb'];
+ $data['sort'] = $max;
+ }
+ //判断是否已经存在同名称的分类 不存在则添加 存在则跳过
+ if(!pdo_get($tableName,['name'=>$data['name'],'uniacid'=>$_W['uniacid'],'aid'=>$_W['aid']])){
+ pdo_insert($tableName,$data);
+ }
+ }
+
+ show_json(1, '操作成功');
+ }
+
+}
\ No newline at end of file
diff --git a/addons/weliam_smartcity/web/controller/goodshouse/goodshouse.ctrl.php b/addons/weliam_smartcity/web/controller/goodshouse/goodshouse.ctrl.php
new file mode 100644
index 0000000..1876572
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/goodshouse/goodshouse.ctrl.php
@@ -0,0 +1,1113 @@
+$goods['sid']),'aid');
+ }
+ empty($goods['name']) && wl_message('请填写商品名称');
+ empty($goods['num']) && wl_message('请填写商品数量');
+ if($goods['creditmoney'] > $goods['price'] && $goods['creditmoney'] > 0) wl_message('积分抵扣金额不能大于商品金额');
+ //判断开启多规格时 是否添加了多规格信息
+ if ($_GPC['optionstatus'] == 1 && count($_GPC['spec_id']) <= 0) wl_message('请设置多规格信息');
+ $goods['cutoffstatus'] = $_GPC['cutoffstatus'];
+ $goods['optionstatus'] = $_GPC['optionstatus'];
+ $goods['independent'] = $_GPC['independent'];
+ $goods['isdistri'] = $_GPC['isdistri'];
+ $goods['isdistristatus']= $_GPC['isdistristatus'];
+ $goods['vipstatus'] = $_GPC['vipstatus'];
+ $goods['detail'] = base64_encode(htmlspecialchars_decode($goods['detail']));
+ $goods['describe'] = base64_encode(htmlspecialchars_decode($goods['describe']));
+ $goods['thumbs'] = serialize($goods['thumbs']);
+ $goods['extension_img'] = serialize($goods['extension_img']);
+ $tag = $_GPC['tag'];
+ $goods['tag'] = serialize($tag);
+ $userlabel = $_GPC['userlabel'];
+ $goods['userlabel'] = serialize($userlabel);
+ $level = $_GPC['level'];
+ $goods['level'] = serialize($level);
+ $goods['name'] = htmlspecialchars_decode($goods['name']);
+ $time = $_GPC['time'];
+ $goods['starttime'] = strtotime($time['start']);
+ $goods['endtime'] = strtotime($time['end']);
+ $goods['cutofftime'] = strtotime($_GPC['cutofftime']);
+ $goods['cateid'] = intval($_GPC['cateid']);
+ $goods['pay_type'] = serialize($_GPC['pay_type']);
+ $goods['cash_back'] = $_GPC['cash_back'] ? : 0;
+ $goods['return_proportion'] = $_GPC['return_proportion'] ? : 0;
+ $goods['yuecashback'] = sprintf("%.2f",$goods['yuecashback']);
+ $goods['vipyuecashback'] = sprintf("%.2f",$goods['vipyuecashback']);
+
+ if ($goods['cash_back'] == 1 && $goods['return_proportion'] < 1) wl_message('请填写返现比例');
+ if(!$id){
+ $goods['aid'] = pdo_getcolumn(PDO_NAME.'merchantdata',array('id'=>$goods['sid']),'aid');
+ }
+ //抢购状态通过抢购时间判断
+ if (is_store()) {
+ $audits = pdo_getcolumn(PDO_NAME . 'merchantdata' , ['id' => $_W['storeid']] , 'audits');
+ if (empty($audits)) {
+ $goods['status'] = 5;
+ }
+ }
+ if ($goods['status'] != 5) {
+ if(!empty($_GPC['tostatus'])){
+ if ($goods['starttime'] > time()) {
+ $goods['status'] = 1;
+ }
+ else if ($goods['starttime'] < time() && time() < $goods['endtime']) {
+ $goods['status'] = 2;
+ }
+ else if ($goods['endtime'] < time()) {
+ $goods['status'] = 3;
+ }
+ }else{
+ $goods['status'] = 4;
+ }
+ }
+ //使用类型
+ if($goods['usestatus'] == 3){
+ $goods['optionstatus'] = 0;
+ $goods['appointstatus'] = 0;
+ $goods['allowapplyre'] = 1;
+ $goods['overrefund'] = 0;
+ }
+
+ //定时购买
+ if ($goods['usedatestatus'] == 1) {
+ $goods['week'] = serialize($goods['week']);
+ $goods['day'] = '';
+ }else if ($goods['usedatestatus'] == 2) {
+ $goods['day'] = serialize($goods['day']);
+ $goods['week'] = '';
+ }else{
+ $goods['usedatestatus'] = 0;
+ $goods['week'] = '';
+ $goods['day'] = '';
+ }
+ //会员减免
+ if($goods['vipstatus'] == 1){
+ $viparray = [];
+ $vipleid = $_GPC['vipleid'];
+ $vipprice = $_GPC['vipprice'];
+ $storeset = $_GPC['storeset'];
+ foreach($vipleid as $key => $vle){
+ $vipa['vipprice'] = sprintf("%.2f",$vipprice[$key]);
+ $vipa['storeset'] = sprintf("%.2f",$storeset[$key]);
+ $viparray[$vle] = $vipa;
+ }
+ $goods['viparray'] = serialize($viparray);
+ }
+ //分销商分佣数组
+ if(empty($goods['isdistri'])){
+ $disarray = [];
+ $disleid = $_GPC['disleid'];
+ $onedismoney = $_GPC['onedismoney'];
+ $twodismoney = $_GPC['twodismoney'];
+ foreach($disleid as $dkey => $dle){
+ $dlea['onedismoney'] = sprintf("%.2f",$onedismoney[$dkey]);
+ $dlea['twodismoney'] = sprintf("%.2f",$twodismoney[$dkey]);
+ $disarray[$dle] = $dlea;
+ }
+ $goods['disarray'] = serialize($disarray);
+ }
+ //预约数组
+ if($goods['appointstatus']>0){
+ $appointarray = [];
+ $appstartTime = $_GPC['appstartTime'];
+ $appendTime = $_GPC['appendTime'];
+ $peoplenums = $_GPC['peoplenums'];
+ if(!is_array($appstartTime)){
+ wl_message('请设置预约时间段信息!');
+ }
+ foreach($appstartTime as $appkey => $appoint){
+ $appinta['startTime'] = $appstartTime[$appkey];
+ $appinta['endTime'] = $appendTime[$appkey];
+ $appinta['peoplenums'] = $peoplenums[$appkey];
+ $appointarray[] = $appinta;
+ }
+ $goods['appointarray'] = serialize($appointarray);
+ }
+
+ if ($plugin == 'rush') {
+ //商品阶梯价操作
+ $goods['lp_status'] = $_GPC['lp_status'] ? : 0;
+ $goods['lp_set'] = is_array($_GPC['ld']) ? serialize(array_values($_GPC['ld'])) : '';
+ // 特定商品类型参数
+ if (empty($_GPC['cc_id']) || !is_numeric($_GPC['cc_id'])) wl_message('请选择商品类型,若显示为空,请联系管理员');
+ if (empty($_GPC['cc_child_id']) || !is_numeric($_GPC['cc_child_id'])) wl_message('请选择商品分类');
+ $goods['cc_id'] = $_GPC['cc_id'];
+ $goods['cc_child_id'] = $_GPC['cc_child_id'];
+ if ($goods['lp_status'] == 1 && is_array($_GPC['ld'])) {
+ $lpSet = array_values($_GPC['ld']);
+ $maxMax = max(array_column($lpSet , 'max'));
+ if ($maxMax > $goods['num']) {
+ wl_message('阶梯价上限不可超过最大库存!');
+ }
+ }
+
+ if (!empty($id)) {
+ Rush::updateActive($goods , ['id' => $id]);
+ }
+ else {
+ $id = Rush::saveRushActive($goods);
+ }
+ }
+ else if ($plugin == 'groupon') {
+
+ if (!empty($id)) {
+ Groupon::updateActive($goods , ['id' => $id]);
+ }
+ else {
+ $id = Groupon::savegrouponActive($goods);
+ }
+ }
+ else if ($plugin == 'fightgroup') {
+ if($goods['peoplenum'] <= 1) wl_message('成团人数最小为2');
+ if($goods['grouptime'] <= 0) wl_message('请填写组团时间');
+ $goods['merchantid'] = $goods['sid'];
+ unset($goods['sid']);
+ $goods['listorder'] = $goods['sort'];
+ unset($goods['sort']);
+ $goods['limitstarttime'] = $goods['starttime'];
+ unset($goods['starttime']);
+ $goods['limitendtime'] = $goods['endtime'];
+ unset($goods['endtime']);
+ $goods['logo'] = $goods['thumb'];
+ unset($goods['thumb']);
+ $goods['adv'] = $goods['thumbs'];
+ unset($goods['thumbs']);
+ $goods['stock'] = $goods['num'];
+ unset($goods['num']);
+ $goods['falsesalenum'] = $goods['allsalenum'];
+ unset($goods['allsalenum']);
+ $goods['vipdiscount'] = $goods['vipprice'];
+ unset($goods['vipprice']);
+ $goods['specstatus'] = $goods['optionstatus'];
+ unset($goods['optionstatus']);
+ $goods['categoryid'] = $goods['cateid'];
+ unset($goods['cateid']);
+ unset($goods['pftid']);
+ if($goods['is_lucky'] > 0){
+ $goods['luckynum'] = floor($goods['luckynum']);
+ if($goods['luckynum'] <= 1) {
+ $goods['luckynum'] = 1;
+ }
+ if($goods['luckynum'] > $goods['peoplenum']){
+ wl_message('幸运人数不能超过组团人数:'.$goods['peoplenum'].'人');
+ }
+ $goods['luckymoney'] = sprintf("%.2f",$goods['luckymoney']);
+ }
+ if (!empty($id)) {
+ Wlfightgroup::updateGoods($goods , $id);
+ }
+ else {
+ $id = Wlfightgroup::saveGoods($goods);
+ }
+ }
+ else if ($plugin == 'bargain') {
+ //砍价规则
+ $rule_pice = $_GPC['rule_pice'];
+ $rule_start = $_GPC['rule_start'];
+ $rule_end = $_GPC['rule_end'];
+ $len = count($rule_pice);
+ $bargainrule = [];
+ for ($k = 0 ; $k < $len ; $k++) {
+ $bargainrule[$k]['rule_pice'] = $rule_pice[$k];
+ $bargainrule[$k]['rule_start'] = $rule_start[$k];
+ $bargainrule[$k]['rule_end'] = $rule_end[$k];
+ }
+ $bargainrule = serialize($bargainrule);
+ $goods['rules'] = $bargainrule;
+ $goods['bar_image'] = $_GPC['bar_image'];
+ $goods['bar_bgc'] = $_GPC['bar_bgc'];
+
+ $goods['stock'] = $goods['num'];
+ unset($goods['num']);
+ $goods['falsejoinnum'] = $goods['allsalenum'];
+ unset($goods['allsalenum']);
+ unset($goods['optionstatus']);
+ unset($goods['pftid']);
+
+ if (!empty($id)) {
+ Bargain::updateActive($goods , ['id' => $id]);
+ }
+ else {
+ $id = Bargain::saveActive($goods);
+ }
+ }
+
+ //清理海报缓存
+ Tools::clearposter();
+
+ //保存规格
+ if ($goods['optionstatus'] || $goods['specstatus']) {
+ $this->spec_save($id , $plugin);
+ if($plugin == 'rush'){
+ $optionList = pdo_getall(PDO_NAME."goods_option",['type'=>1,'goodsid'=>$id],['stock']);
+ $totalnum = array_sum(array_column($optionList,'stock'));
+ pdo_update('wlmerchant_rush_activity',array('num' => $totalnum),array('id' => $id));
+ }else if($plugin == 'groupon'){
+ $optionList = pdo_getall(PDO_NAME."goods_option",['type'=>3,'goodsid'=>$id],['stock']);
+ $totalnum = array_sum(array_column($optionList,'stock'));
+ pdo_update('wlmerchant_groupon_activity',array('num' => $totalnum),array('id' => $id));
+ }else if($plugin == 'fightgroup'){
+ $optionList = pdo_getall(PDO_NAME."goods_option",['type'=>2,'goodsid'=>$id],['stock']);
+ $totalnum = array_sum(array_column($optionList,'stock'));
+ pdo_update('wlmerchant_fightgroup_goods',array('stock' => $totalnum),array('id' => $id));
+ }
+ }
+ $page = $_GPC['page'];
+ //编辑商品成功
+ $this->save_success($goods , $plugin,$page);
+ }
+ /*************************************************************************************************************/
+ //商品分类
+ $cate = pdo_getall('wlmerchant_' . $plugin . '_category' , [
+ 'uniacid' => $_W['uniacid'] ,
+ 'aid' => $_W['aid'] ,
+ 'is_show' => 0
+ ]);
+ if ($plugin == 'rush') {
+ //专题分类
+ $specials = pdo_getall('wlmerchant_rush_special' , ['uniacid' => $_W['uniacid'] , 'aid' => $_W['aid']]);
+ }
+ //运费模板
+ if(is_store()){
+ $express = pdo_fetchall("SELECT * FROM ".tablename('wlmerchant_express_template')."WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND sid IN (0,{$_W['storeid']}) ORDER BY id DESC");
+ }else{
+ $express = pdo_fetchall("SELECT * FROM ".tablename('wlmerchant_express_template')."WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} ORDER BY id DESC");
+ }
+ //社群
+ $communitylist = pdo_getall('wlmerchant_community' , [
+ 'uniacid' => $_W['uniacid'] ,
+ 'aid' => $_W['aid']
+ ] , ['id' , 'communname']);
+ //分销设置
+ $distriset = p('distribution') ? Setting::wlsetting_read('distribution') : [];
+ //分销商等级
+ if($distriset['switch'] > 0){
+ $dislevel = pdo_getall('wlmerchant_dislevel', array('uniacid' => $_W['uniacid']),['id','name']);
+ }
+ //用户标签
+ $labels = pdo_getall('wlmerchant_userlabel' , ['uniacid' => $_W['uniacid']] , [
+ 'id' ,
+ 'name'
+ ] , '' , 'sort DESC');
+ //一卡通等级
+ $levels = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_halflevel') . "WHERE uniacid = {$_W['uniacid']} AND status = 1 ORDER BY sort DESC");
+
+ //商品标签
+ $tag_type = ['rush' => 1 , 'groupon' => 3 , 'bargain' => 4 , 'fightgroup' => 2];
+ $presettags = pdo_getall('wlmerchant_tags' , [
+ 'uniacid' => $_W['uniacid'] ,
+ 'aid' => $_W['aid'] ,
+ 'type' => $tag_type[$plugin]
+ ] , ['id' , 'title'] , '' , 'sort DESC');
+ //自定义海报
+ if (p('diyposter')) {
+ $poster_type = ['rush' => 2 , 'groupon' => 5 , 'bargain' => 7 , 'fightgroup' => 6];
+ $posters = pdo_getall(PDO_NAME . 'poster' , [
+ 'uniacid' => $_W['uniacid'] ,
+ 'type' => $poster_type[$plugin]
+ ] , ['id' , 'title']);
+ }
+ //支付有礼
+ if(p('paidpromotion')){
+ $paidlist = pdo_getall('wlmerchant_payactive',array('uniacid' => $_W['uniacid'],'aid' => $_W['aid'],'status' => 1),array('id','title'));
+ }
+ //锦鲤抽奖
+ if(agent_p('luckydraw')){
+ $drawlist = pdo_getall('wlmerchant_luckydraw',array('uniacid' => $_W['uniacid'],'aid' => $_W['aid'],'status' => 1),array('id','title'));
+ }
+
+ if ($id > 0) {
+ if ($plugin == 'rush') {
+ $goods = Rush::getSingleActive($id , '*');
+ $goods['lp_set'] = unserialize($goods['lp_set']);
+
+ }
+ else if ($plugin == 'groupon') {
+ $goods = Groupon::getSingleActive($id , '*');
+ }
+ else if ($plugin == 'bargain') {
+ $goods = Bargain::getSingleActive($id , '*');
+ $goods['rules'] = unserialize($goods['rules']);
+ $goods['num'] = $goods['stock'];
+ $goods['allsalenum'] = $goods['falsejoinnum'];
+ if(empty($goods['bar_bgc'])){
+ $goods['bar_bgc'] = '#68d3ff';
+ }
+
+ }
+ else if ($plugin == 'fightgroup') {
+ $goods = Wlfightgroup::getSingleGood($id , '*');
+ $goods['sid'] = $goods['merchantid'];
+ $goods['sort'] = $goods['listorder'];
+ $goods['starttime'] = $goods['limitstarttime'];
+ $goods['endtime'] = $goods['limitendtime'];
+ $goods['thumb'] = $goods['logo'];
+ $goods['thumbs'] = $goods['adv'];
+ $goods['num'] = $goods['stock'];
+ $goods['allsalenum'] = $goods['falsesalenum'];
+ $goods['vipprice'] = $goods['vipdiscount'];
+ $goods['optionstatus'] = $goods['specstatus'];
+ $goods['cateid'] = $goods['categoryid'];
+ }
+
+ $merchant = Rush::getSingleMerchant($goods['sid'] , 'id,storename,logo,groupid');
+ $goods['thumbs'] = unserialize($goods['thumbs']);
+ $tags = unserialize($goods['tag']);
+ $orderinfo = unserialize($goods['orderinfo']);
+ $userlabel = unserialize($goods['userlabel']);
+ $goods['level'] = unserialize($goods['level']);
+ //规格
+ $data = $this->spec_html($id , $plugin);
+ $html = $data['html'];
+ $allspecs = $data['allspecs'];
+ $options = $data['options'];
+ if(!empty($options)){
+ foreach($options as &$option){
+ $option['viparray'] = unserialize($option['viparray']);
+ $option['disarray'] = unserialize($option['disarray']);
+ }
+ }
+
+ if ($goods['usedatestatus'] == 1) {
+ $goods['week'] = unserialize($goods['week']);
+ }
+ if ($goods['usedatestatus'] == 2) {
+ $goods['day'] = unserialize($goods['day']);
+ }
+ if($goods['vipstatus'] == 1){
+ $viparray = unserialize($goods['viparray']);
+ }
+ if(empty($goods['isdistri'])){
+ $disarray = unserialize($goods['disarray']);
+ }
+ if(!empty($goods['appointarray'])){
+ $goods['appointarray'] = unserialize($goods['appointarray']);
+ }
+ }
+
+ if (empty($goods['starttime']) || empty($goods['endtime'])) {//初始化时间
+ $goods['starttime'] = time();
+ $goods['endtime'] = strtotime('+1 month');
+ $goods['cutofftime'] = strtotime('+2 month');
+ }
+ //推广图片反序列化
+ $goods['extension_img'] = unserialize($goods['extension_img']);
+ //支付方式
+ $goods['pay_type'] = unserialize($goods['pay_type']);
+ //满减活动
+ if(p('fullreduce')){
+ $fullreducelist = pdo_getall('wlmerchant_fullreduce_list',array('aid' => $_W['aid'],'uniacid' => $_W['uniacid']),array('id','title'));
+ }
+ //获取自定义表单信息
+ $formWhere = ['uniacid'=>$_W['uniacid'],'aid'=>$_W['aid']];
+ if(is_store()) $formWhere['sid'] = $_W['storeid'];
+ $diyFormList = pdo_getall(PDO_NAME."diyform",$formWhere,['id','title'],'','create_time DESC,id DESC');
+ //富文本处理
+ if(is_base64($goods['detail'])) $goods['detail'] = htmlspecialchars_decode(base64_decode($goods['detail']));
+ if(is_base64($goods['describe'])) $goods['describe'] = htmlspecialchars_decode(base64_decode($goods['describe']));
+ // 获取特殊商品类型
+ if (!is_store() && empty($goods['pftid'])) {
+ $cc_data = Category::getStoreCategory();
+ } else {
+ $cc_data = Category::getStoreCategoryAll($_W['storeid']);
+ }
+
+ include wl_template('goodshouse/createactive');
+ }
+
+ /**
+ * 添加规格子项
+ */
+ public function spec()
+ {
+ global $_W , $_GPC;
+ $spec = ['id' => random(32) , 'title' => $_GPC['title']];
+ include wl_template('goodshouse/spec');
+ }
+
+ /**
+ * 添加规格项
+ */
+ public function spec_item()
+ {
+ global $_W , $_GPC;
+ $spec = ['id' => $_GPC['specid']];
+ $specitem = ['id' => random(32) , 'title' => $_GPC['title'] , 'show' => 1];
+ include wl_template('goodshouse/spec_item');
+ }
+ /**
+ * 完善图片链接
+ */
+ public function jstomedia(){
+ global $_W , $_GPC;
+ $thumb = tomedia($_GPC['thumb']);
+ die($thumb);
+ }
+
+ /**
+ * 根据规格生成html
+ * @param $id
+ * @param $plugin
+ * @param $distriset
+ * @return string
+ */
+ private function spec_html($id , $plugin)
+ {
+ global $_W;
+ $html = '';
+ if ($plugin == 'bargain') {
+ return $html;
+ }
+ $type = $this->spec_type($plugin);
+
+ $allspecs = pdo_fetchall('select * from ' . tablename('wlmerchant_goods_spec') . ' where goodsid=:id AND type = :type order by displayorder asc' , [
+ ':id' => $id ,
+ ':type' => $type
+ ]);
+ foreach ($allspecs as &$s) {
+ $s['items'] = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_goods_spec_item') . "WHERE uniacid = {$_W['uniacid']} AND specid = {$s['id']} ORDER BY displayorder ASC");
+ }
+ unset($s);
+ $options = pdo_fetchall('select * from ' . tablename('wlmerchant_goods_option') . ' where goodsid=:id and type = :type order by id asc' , [
+ ':id' => $id ,
+ ':type' => $type
+ ]);
+ $specs = [];
+ if (0 < count($options)) {
+ $specitemids = explode('_' , $options[0]['specs']);
+ foreach ($specitemids as $itemid) {
+ foreach ($allspecs as $ss) {
+ $items = $ss['items'];
+ foreach ($items as $it) {
+ while ($it['id'] == $itemid) {
+ $specs[] = $ss;
+ break;
+ }
+ }
+ }
+ }
+ $html = '';
+ $html .= '
';
+ $html .= '';
+ $html .= '';
+ $len = count($specs);
+ $newlen = 1;
+ $h = [];
+ $rowspans = [];
+ $i = 0;
+ while ($i < $len) {
+ $html .= '| ' . $specs[$i]['title'] . ' | ';
+ $itemlen = count($specs[$i]['items']);
+ if ($itemlen <= 0) {
+ $itemlen = 1;
+ }
+ $newlen *= $itemlen;
+ $h = [];
+ $j = 0;
+ while ($j < $newlen) {
+ $h[$i][$j] = [];
+ ++$j;
+ }
+ $l = count($specs[$i]['items']);
+ $rowspans[$i] = 1;
+ $j = $i + 1;
+ while ($j < $len) {
+ $rowspans[$i] *= count($specs[$j]['items']);
+ ++$j;
+ }
+ ++$i;
+ }
+ //已售
+ $html .= ' | ';
+ //缩略图
+ $html .= ' | ';
+
+ if ($plugin == 'fightgroup') {
+ $html .= ' | ';
+ $html .= ' | ';
+ $html .= ' | ';
+ if(!is_store()){
+ $html .= ' | ';
+ }
+ //$html .= ' | ';
+ //if(!is_store()) $html .= ' | ';
+ }
+ else {
+ $html .= ' | ';
+ $html .= ' | ';
+ //$html .= ' | ';
+ if(!is_store()) {
+ $html .= ' | ';
+ }
+ //$html .= ' | ';
+ //if(!is_store()) $html .= ' | ';
+ }
+
+// if ($distriset['ranknum'] > 1) {
+// if(!is_store()) $html .= ' | ';
+// }
+// if ($distriset['ranknum'] > 2) {
+// if(!is_store()) $html .= ' | ';
+// }
+ $html .= '
';
+ $m = 0;
+ while ($m < $len) {
+ $k = 0;
+ $kid = 0;
+ $n = 0;
+ $j = 0;
+ while ($j < $newlen) {
+ $rowspan = $rowspans[$m];
+ if (($j % $rowspan) == 0) {
+ $h[$m][$j] = [
+ 'html' => '' . $specs[$m]['items'][$kid]['title'] . ' | ' ,
+ 'id' => $specs[$m]['items'][$kid]['id']
+ ];
+ }
+ else {
+ $h[$m][$j] = ['html' => '' , 'id' => $specs[$m]['items'][$kid]['id']];
+ }
+ ++$n;
+ if ($n == $rowspan) {
+ ++$kid;
+ if ((count($specs[$m]['items']) - 1) < $kid) {
+ $kid = 0;
+ }
+ $n = 0;
+ }
+ ++$j;
+ }
+ ++$m;
+ }
+ $hh = '';
+ $i = 0;
+ while ($i < $newlen) {
+ $hh .= '';
+ $ids = [];
+ $j = 0;
+ while ($j < $len) {
+ $hh .= $h[$j][$i]['html'];
+
+ $ids[] = $h[$j][$i]['id'];
+ ++$j;
+ }
+ $ids = implode('_' , $ids);
+ $val = [
+ 'id' => '' ,
+ 'title' => '' ,
+ 'stock' => '' ,
+ 'price' => '' ,
+ 'vipprice' => '' ,
+ 'settlementmoney' => '' ,
+ 'vipsettlementmoney' => '' ,
+ 'onedismoney' => '' ,
+ 'twodismoney' => '' ,
+ 'threedismoney' => ''
+ ];
+ foreach ($options as $o) {
+ while ($ids === $o['specs']) {
+ if ($type == 1) {
+ //抢购商品的销量
+ $stopBuyNum = WeliamWeChat::getSalesNum(1,$id,$o['id'],1,0);
+ }else if($type == 2){
+ $stopBuyNum = WeliamWeChat::getSalesNum(3,$id,$o['id'],1,0);
+ }else if($type == 3){
+ $stopBuyNum = WeliamWeChat::getSalesNum(2,$id,$o['id'],1,0);
+ }
+ $stopBuyNum = !empty($stopBuyNum) ? $stopBuyNum : 0;
+ $val = [
+ 'id' => $o['id'] ,
+ 'title' => $o['title'] ,
+ 'stock' => $o['stock'] ,
+ 'price' => $o['price'] ,
+ 'vipprice' => $o['vipprice'] ,
+ 'settlementmoney' => $o['settlementmoney'] ,
+ 'vipsettlementmoney' => $o['vipsettlementmoney'] ,
+ 'onedismoney' => $o['onedismoney'] ,
+ 'twodismoney' => $o['twodismoney'] ,
+ 'threedismoney' => $o['threedismoney'],
+ 'thumb' => $o['thumb'],
+ 'salenum' => $stopBuyNum
+ ];
+ break;
+ }
+ }
+ //已售
+ $hh .= '| ';
+ $hh .= '';
+ $hh .= ' | ';
+ //图片
+ $hh .= '';
+ $hh .= '';
+ $hh .= ' ';
+ $hh .= ' | ';
+
+
+ $hh .= '';
+ $hh .= '';
+ $hh .= ' | ';
+ $hh .= '';
+ $hh .= '';
+ $hh .= '';
+ $hh .= ' | ';
+ if($plugin == 'fightgroup'){
+ $hh .= ' | ';
+ }
+ if(!is_store()) {
+ $hh .= ' | ';
+ }
+ //$hh .= ' | ';
+// if(!is_store()) $hh .= ' | ';
+// if ($distriset['ranknum'] > 1) {
+// if(!is_store()) $hh .= ' | ';
+// }
+// if ($distriset['ranknum'] > 2) {
+// if(!is_store()) $hh .= ' | ';
+// }
+ $hh .= '
';
+ ++$i;
+ }
+ $html .= $hh;
+ $html .= '
';
+ }
+ $data['html'] = $html;
+ $data['allspecs'] = $allspecs;
+ $data['options'] = $options;
+ return $data;
+ }
+
+ /**
+ * 插件规格对应的类型
+ * @param $plugin
+ * @return mixed
+ */
+ private function spec_type($plugin)
+ {
+ $spec_types = ['rush' => 1 , 'groupon' => 3 , 'fightgroup' => 2];
+ return $spec_types[$plugin];
+ }
+
+ /**
+ * 规格保存
+ * @param $id
+ * @param $plugin
+ */
+ private function spec_save($id , $plugin)
+ {
+ global $_W,$_GPC;
+ $type = $this->spec_type($plugin);
+ $totalstocks = 0;
+ $spec_ids = $_POST['spec_id'];
+ $spec_titles = $_POST['spec_title'];
+ $specids = [];
+ $len = count($spec_ids);
+ $specids = [];
+ $spec_items = [];
+ $k = 0;
+ while ($k < $len) {
+ $spec_id = '';
+ $get_spec_id = $spec_ids[$k];
+ $a = [
+ 'uniacid' => $_W['uniacid'] ,
+ 'goodsid' => $id ,
+ 'displayorder' => $k ,
+ 'title' => $spec_titles[$get_spec_id]
+ ];
+ if (is_numeric($get_spec_id)) { //判断是否是数字或字符串
+ pdo_update('wlmerchant_goods_spec' , $a , ['id' => $get_spec_id]);
+ $spec_id = $get_spec_id;
+ }
+ else {
+ $a['type'] = $type;
+ pdo_insert('wlmerchant_goods_spec' , $a);
+ $spec_id = pdo_insertid();
+ }
+ $spec_item_ids = $_POST['spec_item_id_' . $get_spec_id];
+ $spec_item_titles = $_POST['spec_item_title_' . $get_spec_id];
+ $spec_item_shows = $_POST['spec_item_show_' . $get_spec_id];
+ $spec_item_virtuals = $_POST['spec_item_virtual_' . $get_spec_id];
+ $itemlen = count($spec_item_ids);
+ $itemids = [];
+ $n = 0;
+ while ($n < $itemlen) {
+ $item_id = '';
+ $get_item_id = $spec_item_ids[$n];
+ $d = [
+ 'uniacid' => $_W['uniacid'] ,
+ 'specid' => $spec_id ,
+ 'displayorder' => $n ,
+ 'title' => $spec_item_titles[$n] ,
+ 'show' => $spec_item_shows[$n] ,
+ ];
+ if (is_numeric($get_item_id)) {
+ pdo_update('wlmerchant_goods_spec_item' , $d , ['id' => $get_item_id]);
+ $item_id = $get_item_id;
+ }
+ else {
+ pdo_insert('wlmerchant_goods_spec_item' , $d);
+ $item_id = pdo_insertid();
+ }
+ $itemids[] = $item_id;
+ $d['get_id'] = $get_item_id;
+ $d['id'] = $item_id;
+ $spec_items[] = $d;
+ ++$n;
+ }
+ if (0 < count($itemids)) {
+ pdo_query('delete from ' . tablename('wlmerchant_goods_spec_item') . ' where specid=' . $spec_id . ' and id not in (' . implode(',' , $itemids) . ')');
+ }
+ else {
+ pdo_query('delete from ' . tablename('wlmerchant_goods_spec_item') . ' where specid=' . $spec_id);
+ }
+ pdo_update('wlmerchant_goods_spec' , ['content' => serialize($itemids)] , ['id' => $spec_id]);
+ $specids[] = $spec_id;
+ ++$k;
+ }
+ if (0 < count($specids)) {
+ pdo_query('delete from ' . tablename('wlmerchant_goods_spec') . ' where type = ' . $type . ' and goodsid=' . $id . ' and id not in (' . implode(',' , $specids) . ')');
+ }
+ else {
+ pdo_query('delete from ' . tablename('wlmerchant_goods_spec') . ' where type = ' . $type . ' and goodsid=' . $id);
+ }
+
+ $optionArray = json_decode($_POST['optionArray'] , true);
+ $option_idss = $optionArray['option_ids'];
+ $len = count($option_idss);
+ $optionids = [];
+ $k = 0;
+ while ($k < $len) {
+ $option_id = '';
+ $ids = $option_idss[$k];
+ $get_option_id = $optionArray['option_id'][$k];
+ $idsarr = explode('_' , $ids);
+ $newids = [];
+ foreach ($idsarr as $key => $ida) {
+ foreach ($spec_items as $it) {
+ while ($it['get_id'] == $ida) {
+ $newids[] = $it['id'];
+ break;
+ }
+ }
+ }
+ $newids = implode('_' , $newids);
+ $a = [
+ 'uniacid' => $_W['uniacid'] ,
+ 'thumb' => $optionArray['option_thumb'][$k] ,
+ 'stock' => $optionArray['option_stock'][$k] ,
+ 'title' => $optionArray['option_title'][$k] ,
+ 'price' => $optionArray['option_price'][$k] ,
+ 'vipprice' => $optionArray['option_vipprice'][$k] ,
+// 'settlementmoney' => $optionArray['option_settlementmoney'][$k] ,
+// 'vipsettlementmoney' => $optionArray['option_vipsettlementmoney'][$k] ,
+// 'onedismoney' => $optionArray['option_onedismoney'][$k] ,
+// 'twodismoney' => $optionArray['option_twodismoney'][$k] ,
+// 'threedismoney' => $optionArray['option_threedismoney'][$k] ,
+ 'goodsid' => $id ,
+ 'specs' => $newids ,
+ 'type' => $type
+ ];
+ if(!is_store()){
+ $a['settlementmoney'] = $optionArray['option_settlementmoney'][$k];
+ }
+ //会员减免
+ $viparray = [];
+ $vipleidkword = 'vipleid'.$get_option_id;
+ $vippricekword = 'vipprice'.$get_option_id;
+ $storesetkword = 'storeset'.$get_option_id;
+ $vipleid = $_GPC[$vipleidkword];
+ $vipprice = $_GPC[$vippricekword];
+ $storeset = $_GPC[$storesetkword];
+ foreach($vipleid as $key => $vle){
+ $vipa['vipprice'] = sprintf("%.2f",$vipprice[$key]);
+ $vipa['storeset'] = sprintf("%.2f",$storeset[$key]);
+ $viparray[$vle] = $vipa;
+ }
+ $a['viparray'] = serialize($viparray);
+ //分销佣金
+ $disarray = [];
+ $disleidkword = 'disleid'.$get_option_id;
+ $onedismoneykword = 'onedismoney'.$get_option_id;
+ $twodismoneykword = 'twodismoney'.$get_option_id;
+ $disleid = $_GPC[$disleidkword];
+ $onedismoney = $_GPC[$onedismoneykword];
+ $twodismoney = $_GPC[$twodismoneykword];
+ foreach($disleid as $keyy => $dddle){
+ $dddleaa['onedismoney'] = sprintf("%.2f",$onedismoney[$keyy]);
+ $dddleaa['twodismoney'] = sprintf("%.2f",$twodismoney[$keyy]);
+ $disarray[$dddle] = $dddleaa;
+ }
+ $a['disarray'] = serialize($disarray);
+ $totalstocks += $a['stock'];
+ if (empty($get_option_id)) {
+ pdo_insert('wlmerchant_goods_option' , $a);
+ $option_id = pdo_insertid();
+ }
+ else {
+ pdo_update('wlmerchant_goods_option' , $a , ['id' => $get_option_id]);
+ $option_id = $get_option_id;
+ }
+ $optionids[] = $option_id;
+ ++$k;
+ }
+ if (0 < count($optionids)) {
+ pdo_query('delete from ' . tablename('wlmerchant_goods_option') . ' where type = ' . $type . ' AND goodsid=' . $id . ' and id not in ( ' . implode(',' , $optionids) . ')');
+ }
+ else {
+ pdo_query('delete from ' . tablename('wlmerchant_goods_option') . ' where type = ' . $type . ' AND goodsid=' . $id);
+ }
+ }
+
+ private function save_success($goods , $plugin,$page = 1)
+ {
+ global $_W;
+ $plugins = [
+ 'rush' => ['name' => '抢购' , 'url' => web_url('rush/active/activelist',array('page'=>$page))] ,
+ 'groupon' => ['name' => '团购' , 'url' => web_url('groupon/active/activelist',array('page'=>$page))] ,
+ 'fightgroup' => ['name' => '拼团' , 'url' => web_url('wlfightgroup/fightgoods/ptgoodslist',array('page'=>$page))] ,
+ 'bargain' => ['name' => '砍价' , 'url' => web_url('bargain/bargain_web/activitylist',array('page'=>$page))] ,
+ ];
+
+ if ($goods['status'] == 5) {
+ $storename = pdo_getcolumn(PDO_NAME . 'merchantdata' , ['id' => $_W['storeid']] , 'storename');
+ //审核通知代理
+ $first = '您好,您有一个待审核任务需要处理';
+ $type = '审核商品';
+ $content = $plugins[$plugin]['name'] . '商品:' . $goods['name'];
+ $status = '待审核';
+ $remark = '商户[' . $storename . ']上传了一个' . $plugins[$plugin]['name'] . '商品待审核,请管理员尽快前往后台审核';
+ News::noticeAgent('storegood' , $_W['aid'] , $first , $type , $content , $status , $remark , time() , '');
+
+ }
+ wl_message('保存成功!' , $plugins[$plugin]['url'] , 'success');
+ }
+
+ public function selectMerchant()
+ {
+ global $_W , $_GPC;
+ $where = [];
+ $where['uniacid'] = $_W['uniacid'];
+ $where['aid'] = $_W['aid'];
+ $where['status'] = 2;
+ $where['enabled'] = 1;
+ $where['merchant_type'] = 2;# 新增逻辑必须是商户才可以添加商品
+ if ($_GPC['keyword']) $where['@storename@'] = $_GPC['keyword'];
+ if ($_GPC['enabled']) $where['enabled'] = $_GPC['enabled'];
+ $merchants = Rush::getNumMerchant('id,storename,logo' , $where , 'ID DESC' , 0 , 0 , 0);
+ $merchants = $merchants[0];
+ foreach ($merchants as $key => &$va) {
+ $va['logo'] = tomedia($va['logo']);
+ }
+ include wl_template('goodshouse/selectMerchant');
+ }
+
+ public function rules(){
+ include wl_template('goodshouse/rules');
+ }
+
+ public function appointarray(){
+ global $_W,$_GPC;
+ $houseflag = $_GPC['house'];
+ include wl_template('goodshouse/appointhtml');
+ }
+
+ /**
+ * 核销码列表
+ */
+ public function checklist(){
+ global $_W , $_GPC;
+ $id = $_GPC['id'];
+ $plugin = $_GPC['plugin'];
+ $status = $_GPC['status']; //0全部 1已使用 2未使用
+ $pindex = max(1,intval($_GPC['page']));
+ if(empty($id) || empty($plugin)){
+ wl_message('无商品信息', referer(),'error');
+ }
+ //商品信息
+ if($plugin == 'rush'){
+ $goodinfo = pdo_get('wlmerchant_rush_activity',array('id' => $id),array('name','thumb','sid'));
+ $goodinfo['thumb'] = tomedia($goodinfo['thumb']);
+ }else if($plugin == 'groupon'){
+ $goodinfo = pdo_get('wlmerchant_groupon_activity',array('id' => $id),array('name','thumb','sid'));
+ $goodinfo['thumb'] = tomedia($goodinfo['thumb']);
+ }else if($plugin == 'wlfightgroup'){
+ $goodinfo = pdo_get('wlmerchant_fightgroup_goods',array('id' => $id),array('name','logo','merchantid'));
+ $goodinfo['sid'] = $goodinfo['merchantid'];
+ $goodinfo['thumb'] = tomedia($goodinfo['logo']);
+ }else if($plugin == 'bargain'){
+ $goodinfo = pdo_get('wlmerchant_bargain_activity',array('id' => $id),array('name','thumb','sid'));
+ $goodinfo['thumb'] = tomedia($goodinfo['thumb']);
+ }else if($plugin == 'coupon'){
+ $goodinfo = pdo_get('wlmerchant_couponlist',array('id' => $id),array('title','logo','merchantid'));
+ $goodinfo['name'] = $goodinfo['title'];
+ $goodinfo['sid'] = $goodinfo['merchantid'];
+ $goodinfo['thumb'] = tomedia($goodinfo['logo']);
+ }else if($plugin == 'activity'){
+ $goodinfo = pdo_get('wlmerchant_activitylist',array('id' => $id),array('title','thumb','sid'));
+ $goodinfo['name'] = $goodinfo['title'];
+ $goodinfo['thumb'] = tomedia($goodinfo['thumb']);
+ }
+ //商户信息
+ $merchant = pdo_get('wlmerchant_merchantdata',array('id' => $goodinfo['sid']),array('storename','logo'));
+ $merchant['logo'] = tomedia($merchant['logo']);
+ //条件筛选
+ $where = [
+ 'uniacid' => $_W['uniacid'],
+ 'goodsid' => $id,
+ 'plugin' => $plugin
+ ];
+ if($status == 1){
+ $where['status'] = 1;
+ }else if($status == 2){
+ $where['status'] = 0;
+ }
+ $lists = Util::getNumData('*','wlmerchant_checkcodelist',$where,'id DESC',$pindex,25,1);
+ $list = $lists[0];
+ $pager = $lists[1];
+ $tatal = $lists[2];
+ $typeList = [
+ 'rush' => 1,
+ 'groupon' => 10,
+ 'wlfightgroup' => 2,
+ 'bargain' => 12
+ ];
+ foreach ($list as &$li){
+ $li['type'] = $typeList[$li['plugin']];
+ }
+
+ include wl_template('goodshouse/checklist');
+ }
+ /**
+ * 核销码导入
+ */
+ public function importCode(){
+ global $_W , $_GPC;
+ $gid = $_GPC['gid'];
+ $plugin = $_GPC['plugin'];
+ if(empty($gid) || empty($plugin)){
+ wl_json(0, '缺少商品数据,请刷新重试');
+ }
+ $filename = $_FILES['file']['name'];
+ $filename = substr($filename, -4, 4);
+ if (empty ($filename)) {
+ wl_json(0, '请选择要导入的CSV文件');
+ }
+ if ($filename !== '.csv') {
+ wl_json(0, '请选择CSV文件');
+ }
+ $file_path = $_FILES['file']['tmp_name'];
+ $file_size = filesize($file_path); //文件大小
+ if ($file_size == 0) {
+ wl_json(0, '没有任何数据');
+ }
+ $info = util_csv::read_csv_lines($file_path, 9999, 0);
+ foreach ($info as $k => $v) {
+ $checkcode = trim($v[0]);
+ if(!empty($checkcode)){
+ $flag = pdo_getcolumn(PDO_NAME.'checkcodelist',array('uniacid'=>$_W['uniacid'],'checkcode'=>$checkcode),'id');
+ if(empty($flag)){
+ $data = [
+ 'uniacid' => $_W['uniacid'],
+ 'checkcode' => $checkcode,
+ 'goodsid' => $gid,
+ 'plugin' => $plugin,
+ 'status' => 0
+ ];
+ pdo_insert(PDO_NAME . 'checkcodelist', $data);
+ }
+ }
+ }
+ if($plugin == 'rush'){
+ pdo_update('wlmerchant_rush_activity',array('checkcodeflag' => 1),array('id' => $gid));
+ }else if($plugin == 'groupon'){
+ pdo_update('wlmerchant_groupon_activity',array('checkcodeflag' => 1),array('id' => $gid));
+ }else if($plugin == 'wlfightgroup'){
+ pdo_update('wlmerchant_fightgroup_goods',array('checkcodeflag' => 1),array('id' => $gid));
+ }else if($plugin == 'bargain'){
+ pdo_update('wlmerchant_bargain_activity',array('checkcodeflag' => 1),array('id' => $gid));
+ }else if($plugin == 'coupon'){
+ pdo_update('wlmerchant_couponlist',array('checkcodeflag' => 1),array('id' => $gid));
+ }else if($plugin == 'activity'){
+ pdo_update('wlmerchant_activitylist',array('checkcodeflag' => 1),array('id' => $gid));
+ }
+ wl_json(1, '导入成功');
+ }
+
+ public function deletecheckcode(){
+ global $_W , $_GPC;
+ $ids = $_GPC['ids'];
+ $id = $_GPC['id'];
+ if(!empty($ids)){
+ foreach ($ids as $v) {
+ pdo_delete('wlmerchant_checkcodelist',array('id'=>$v));
+ }
+ }else{
+ pdo_delete('wlmerchant_checkcodelist',array('id'=>$id));
+ }
+ show_json(1, '操作成功');
+ }
+
+ public function emptycheckcode(){
+ global $_W , $_GPC;
+ $id = $_GPC['gid'];
+ $plugin = $_GPC['plugin'];
+ if(empty($id) || empty($plugin)){
+ show_json(0, '无关键参数,请刷新页面重试');
+ }
+ $res = pdo_delete('wlmerchant_checkcodelist',array('goodsid'=>$id,'plugin'=>$plugin,'uniacid' => $_W['uniacid']));
+ if($res){
+ //修改商品状态
+ if($plugin == 'rush'){
+ pdo_update('wlmerchant_rush_activity',array('checkcodeflag' => 0),array('id' => $id));
+ }else if($plugin == 'groupon'){
+ pdo_update('wlmerchant_groupon_activity',array('checkcodeflag' => 0),array('id' => $id));
+ }else if($plugin == 'wlfightgroup'){
+ pdo_update('wlmerchant_fightgroup_goods',array('checkcodeflag' => 0),array('id' => $id));
+ }else if($plugin == 'bargain'){
+ pdo_update('wlmerchant_bargain_activity',array('checkcodeflag' => 0),array('id' => $id));
+ }else if($plugin == 'coupon'){
+ pdo_update('wlmerchant_couponlist',array('checkcodeflag' => 0),array('id' => $id));
+ }else if($plugin == 'activity'){
+ pdo_update('wlmerchant_activitylist',array('checkcodeflag' => 0),array('id' => $id));
+ }
+ show_json(1, '操作成功');
+ }else{
+ show_json(0, '操作失败,请刷新页面重试');
+ }
+ }
+
+ public function getClassAll()
+ {
+ global $_W , $_GPC;
+ $cc_id = $_GPC['cc_id'];
+ $list = Category::getChildCategoryAll($cc_id,['id','name']);
+ if ($list) show_json(1, ['list' => $list]);
+ else show_json(2, '数据为空');
+ }
+}
\ No newline at end of file
diff --git a/addons/weliam_smartcity/web/controller/store/category.ctrl.php b/addons/weliam_smartcity/web/controller/store/category.ctrl.php
new file mode 100644
index 0000000..ffbbbe0
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/store/category.ctrl.php
@@ -0,0 +1,129 @@
+$value){
+ $childrens = Store::getAllCategory(0,100,$value['id']);
+ $categorys[$key]['children'] = $childrens['data'];
+ }
+ }
+ include wl_template('store/categoryIndex');
+ }
+ /**
+ * Comment: 编辑商户
+ */
+ public function Edit(){
+ global $_W,$_GPC;
+ if(checksubmit('submit')){
+ $category = $_GPC['category'];
+ if(!empty($_GPC['parentid'])){
+ $category['parentid'] =intval($_GPC['parentid']);
+ $category['visible_level']=2;
+ }else{
+ $category['parentid'] =0;
+ $category['visible_level']=1;
+ }
+ $category['name'] = trim($category['name']);
+ $category['displayorder'] = intval($category['displayorder']);
+ $category['enabled'] = intval($_GPC['enabled']);
+ //判断时候有值进行改状态
+ if(!empty($category['abroad'])) {
+ $category['abroad'] = $category['abroad'];
+ $category['state'] = 1;
+ }
+ else {
+ $category['abroad'] = $category['abroad'];
+ $category['state'] = 0;
+ }
+
+ if(Customized::init('storecate1520') > 0){
+ $advlogo = $_GPC['advlogo'];
+ $advlink = $_GPC['advlink'];
+ $advarray = [];
+ foreach($advlogo as $dkey => $dle){
+ $dlea['thumb'] = $advlogo[$dkey];
+ $dlea['link'] = $advlink[$dkey];
+ $advarray[] = $dlea;
+ }
+ $category['advs'] = serialize($advarray);
+ }
+
+ if(!empty($_GPC['id'])){
+ if(Store::categoryEdit($category,$_GPC['id'])) wl_message('保存成功',web_url('store/category/index'),'success');
+ }else{
+ if(Store::categoryEdit($category)) wl_message('保存成功',web_url('store/category/index'),'success');
+ }
+ wl_message('保存失败',referer(),'error');
+ }
+ if(!empty($_GPC['id']))
+ $category = Store::getSingleCategory($_GPC['id']);
+ $category['adv'] = unserialize($category['advs']);
+
+ include wl_template('store/categoryEdit');
+ }
+ /**
+ * Comment: 删除商户
+ */
+ public function Delete(){
+ global $_W,$_GPC;
+ if(Store::categoryDelete($_GPC['id'])) wl_message('删除成功',web_url('store/category/index'),'success');
+ wl_message('删除失败',referer(),'error');
+
+ }
+ /**
+ * Comment: 商户分类获取
+ */
+ public function getCategory(){
+ global $_W,$_GPC;
+ if(!empty($_GPC['parentid'])){
+ $categoryes = Store::getAllCategory(0,100,$_GPC['parentid']);
+ }else{
+ $categoryes = Store::getAllCategory();
+ }
+ $categorys = $categoryes['data'];
+ die(json_encode(array('status'=>1,'data'=>$categorys,'msg'=>'')));
+ }
+ /**
+ * Comment: 修改状态
+ * Author: zzw
+ * Date: 2019/9/18 16:44
+ */
+ public function changeStatus (){
+ global $_W , $_GPC;
+ #1、获取参数信息
+ $id = $_GPC['id'] OR Commons::sRenderError('缺少参数:导航id');
+ $status = $_GPC['status'] ? : 0;
+ #1、修改操作
+ $res = pdo_update(PDO_NAME."category_store",['enabled'=>$status],['id'=>$id]);
+ if($res) Commons::sRenderSuccess('修改成功');
+ else Commons::sRenderError('修改失败,请刷新重试!');
+ }
+
+ /**
+ * Comment: 1520定制一级分类幻灯片页面
+ * Author: wlf
+ * Date: 2021/12/22 15:34
+ */
+ public function advinfo(){
+ global $_W, $_GPC;
+ $kw = $_GPC['kw'];
+ include wl_template('store/advinfo');
+ }
+
+
+
+
+}
diff --git a/addons/weliam_smartcity/web/controller/store/comment.ctrl.php b/addons/weliam_smartcity/web/controller/store/comment.ctrl.php
new file mode 100644
index 0000000..91dcbd1
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/store/comment.ctrl.php
@@ -0,0 +1,55 @@
+ 8,
+ 'spstatus' => 1,
+ 'xqorder' => 7,
+ 'xqstatus' => 1,
+ 'dtorder' => 6,
+ 'dtstatus' => 1,
+ 'plorder' => 5,
+ 'plstatus' => 1,
+ 'xcorder' => 4,
+ 'xcstatus' => 1,
+ 'xcxmorder' => 3,
+ 'xcxmstatus' => 1,
+ 'sjzzorder' => 2,
+ 'sjzzstatus' => 1,
+ 'zporder' => 1,
+ 'zpstatus' => 1,
+ ];
+ }else{
+ $order = unserialize($storeSet['order']);
+ }
+
+ include wl_template('store/storeSet');
+ }
+}
diff --git a/addons/weliam_smartcity/web/controller/store/group.ctrl.php b/addons/weliam_smartcity/web/controller/store/group.ctrl.php
new file mode 100644
index 0000000..6e70a87
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/store/group.ctrl.php
@@ -0,0 +1,58 @@
+ $_W['uniacid'],'status'=>1),array('id','name'));
+ $agentgroupid = pdo_getcolumn(PDO_NAME.'agentusers',array('id'=>$_W['aid']),'groupid');
+ $pluginswitch = pdo_getcolumn(PDO_NAME.'agentusers_group',array('id'=>$agentgroupid),'package');
+ $pluginswitch = unserialize($pluginswitch);
+ if(checksubmit('submit')){
+ $group = $_GPC['group'];
+ $group['createtime'] = time();
+ $group['name'] = trim($group['name']);
+ $group['enabled'] = $_GPC['enabled'];
+ $group['isdefault'] = $_GPC['isdefault'];
+ $group['package'] = $group['package'];
+ $group['authority'] = serialize($_GPC['authority']);
+ if(!empty($_GPC['id'])){
+ if(Store::editGroup($group,$_GPC['id'])) wl_message('保存成功',web_url('store/group/index'),'success');
+ }else{
+ if(Store::editGroup($group)) wl_message('保存成功',web_url('store/group/index'),'success');
+ }
+ wl_message('保存失败',referer(),'error');
+ }
+ if(!empty($_GPC['id'])){
+ $group = Store::getSingleGroup($_GPC['id']);
+ $group['authority'] = unserialize($group['authority']);
+ }
+ include wl_template('store/sgroupEdit');
+ }
+ /**
+ * 删除分组
+ */
+ public function delete(){
+ global $_W,$_GPC;
+ if(Store::deleteGroup($_GPC['id'])) wl_message('删除成功',web_url('store/group/index'),'success');
+ wl_message('删除失败',referer(),'error');
+
+ }
+
+
+}
diff --git a/addons/weliam_smartcity/web/controller/store/merchant.ctrl.php b/addons/weliam_smartcity/web/controller/store/merchant.ctrl.php
new file mode 100644
index 0000000..acc3bb4
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/store/merchant.ctrl.php
@@ -0,0 +1,970 @@
+ $_W['uniacid'], 'status' => 2, 'aid' => $_W['aid']);
+ $deliverystatus = $_GPC['deliverystatus'] ? : 0;
+ $isExport = $_GPC['export'] ? : 0;
+ if($_W['aid'] > 0){
+ $groups = pdo_fetchall("SELECT id,name FROM " . tablename('wlmerchant_chargelist') . "WHERE uniacid = {$_W['uniacid']} AND aid IN (0,{$_W['aid']}) AND status = 1 ORDER BY sort DESC,id DESC", [], 'id');
+ }else{
+ $groups = pdo_fetchall("SELECT id,name FROM " . tablename('wlmerchant_chargelist') . "WHERE uniacid = {$_W['uniacid']} AND aid = 0 AND status = 1 ORDER BY sort DESC,id DESC", [], 'id');
+ }
+ if ($_GPC['keyword']) {
+ if ($_GPC['keywordtype'] == 1) {
+ $where['id'] = trim($_GPC['keyword']);
+ } else if ($_GPC['keywordtype'] == 2) {
+ $where['@storename@'] = trim($_GPC['keyword']);
+ } else if ($_GPC['keywordtype'] == 3) {
+ $where['@realname@'] = trim($_GPC['keyword']);
+ } else if ($_GPC['keywordtype'] == 4) {
+ $where['mobile^tel'] = trim($_GPC['keyword']);
+ } else if ($_GPC['keywordtype'] == 5) {
+ $sid = pdo_getcolumn(PDO_NAME.'merchantuser',array('id'=>trim($_GPC['keyword'])),'storeid');
+ $where['id'] = trim($sid);
+ }
+ }
+ if ($_GPC['groupid']) {
+ $where['groupid'] = $_GPC['groupid'];
+ }
+ if ($_GPC['enabled'] == 5) {
+ $where['enabled'] = 0;
+ $where['status'] = 1;
+ } elseif ($_GPC['enabled'] == 6) {
+ $where['enabled'] = 0;
+ } else {
+ $where['enabled'] = $_GPC['enabled'] = $_GPC['enabled'] != '' ? $_GPC['enabled'] : 1;
+ }
+
+ if (!empty($_GPC['time_limit']) && $_GPC['timetype'] ) {
+ $starttime = strtotime($_GPC['time_limit']['start']);
+ $endtime = strtotime($_GPC['time_limit']['end']);
+ if($_GPC['timetype'] == 1){
+ $where['createtime>'] = $starttime;
+ $where['createtime<'] = $endtime + 86400;
+ }else{
+ $where['endtime>'] = $starttime;
+ $where['endtime<'] = $endtime + 86400;
+ }
+ }
+ if (empty($starttime) || empty($endtime)) {
+ $starttime = strtotime('-1 month');
+ $endtime = time();
+ }
+
+ if($deliverystatus > 0) $where['deliverystatus'] = $deliverystatus == 2 ? 0 : $deliverystatus;
+ if (!empty($_GPC['merchant_type'])) $where['merchant_type'] = $_GPC['merchant_type'];
+ //判断是否为导出操作
+ if($isExport == 1){
+ $whereData = Util::createStandardWhereString($where);
+ foreach($whereData[1] as $key => $icon){
+ $whereData[0] = str_replace($key,"'{$icon}'",$whereData[0]);
+ }
+ Store::exportShop($whereData[0]);
+ die;
+ }
+ $field = "id,logo,storename,mobile,nowmoney,realname,tel,createtime,endtime,enabled,nowmoney,groupid,merchant_type";
+ $storesData = Util::getNumData($field, PDO_NAME . 'merchantdata', $where, 'listorder desc,id desc', $pindex, $psize, 1);
+ $stores = $storesData[0];
+ foreach ($stores as $key => &$value) {
+ $value['logo'] = tomedia($value['logo']);
+ //店铺过期操作
+ if ($_GPC['enabled'] != 4) {
+ if ($value['endtime'] < time() && !empty($value['endtime'])) {
+ $res = pdo_update(PDO_NAME . 'merchantdata', array('enabled' => 3), array('uniacid' => $_W['uniacid'], 'id' => $value['id']));
+ if ($res) { //下架商品
+ //抢购商品
+ pdo_update('wlmerchant_rush_activity', array('status' => 4), array('uniacid' => $_W['uniacid'], 'sid' => $value['id']));
+ //拼团商品
+ pdo_update('wlmerchant_fightgroup_goods', array('status' => 0), array('uniacid' => $_W['uniacid'], 'merchantid' => $value['id']));
+ //卡券
+ pdo_update('wlmerchant_couponlist', array('status' => 0), array('uniacid' => $_W['uniacid'], 'merchantid' => $value['id']));
+ //特权
+ pdo_update('wlmerchant_halfcardlist', array('status' => 0), array('uniacid' => $_W['uniacid'], 'merchantid' => $value['id']));
+ //礼包
+ pdo_update('wlmerchant_package', array('status' => 0), array('uniacid' => $_W['uniacid'], 'merchantid' => $value['id']));
+ }
+ }
+ }
+ //查询店员
+ $value['clerknum'] = pdo_fetchcolumn('SELECT count(id) FROM ' . tablename('wlmerchant_merchantuser') . " WHERE storeid = {$value['id']} AND ismain != 1");
+ $value['groupname'] = $value['groupid'] ? pdo_getcolumn('wlmerchant_chargelist', array('id' => $value['groupid']), 'name') : '';
+ }
+ $pager = $storesData[1];
+ $status0 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'merchantdata') . " WHERE enabled = 0 and uniacid={$_W['uniacid']} and status=2 and aid={$_W['aid']}");
+ $status1 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'merchantdata') . " WHERE enabled = 1 and uniacid={$_W['uniacid']} and status=2 and aid={$_W['aid']}");
+ $status2 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'merchantdata') . " WHERE enabled = 2 and uniacid={$_W['uniacid']} and status=2 and aid={$_W['aid']}");
+ $status3 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'merchantdata') . " WHERE enabled = 3 and uniacid={$_W['uniacid']} and status=2 and aid={$_W['aid']}");
+ $status4 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'merchantdata') . " WHERE enabled = 4 and uniacid={$_W['uniacid']} and status=2 and aid={$_W['aid']}");
+ $status5 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'merchantdata') . " WHERE enabled = 0 and uniacid={$_W['uniacid']} and status=1 and aid={$_W['aid']}");
+
+ include wl_template('store/userIndex');
+ }
+
+ public function edit() {
+ global $_W, $_GPC;
+ $isAuth = Customized::init('printing');
+ $id = intval($_GPC['id']);
+ if (is_store()) {
+ $id = $_W['storeid'];
+ }
+ $page = $_GPC['page'];
+ $allgroup = pdo_fetchall("SELECT name,id FROM " . tablename('wlmerchant_chargelist') . "WHERE uniacid = {$_W['uniacid']} AND aid IN (0,{$_W['aid']}) AND status = 1 ORDER BY sort DESC");
+ //海报获取
+ if(p('diyposter')){
+ $posters = pdo_getall(PDO_NAME . 'poster',array('uniacid' => $_W['uniacid'],'type' => 1),array('id','title'));
+ }
+ //社群获取
+ $community = pdo_fetchall("SELECT communname,id FROM " . tablename('wlmerchant_community') . "WHERE uniacid = {$_W['uniacid']} AND storeid IN (0,{$id}) AND aid = {$_W['aid']} ORDER BY id DESC");
+
+// $categoryes = pdo_getall(PDO_NAME . 'category_store', array('uniacid' => $_W['uniacid'], 'aid' => $_W['aid'], 'state' => '0')); //商家分类
+// if (empty($categoryes)) wl_message("请先添加商家类别!", web_url('store/category/Edit'));
+// $moduels = uni_modules();
+// if (!empty($categoryes)) {
+// $parents = $childrens = array();
+// foreach ($categoryes as $cid => $cate) {
+// if (!empty($cate['parentid'])) {
+// $childrens[$cate['parentid']][] = $cate;
+// } else {
+// $parents[$cate['id']] = $cate;
+// }
+// }
+// }
+ //一级分类获取
+ $categoryes = pdo_getall(PDO_NAME . 'category_store' , [
+ 'uniacid' => $_W['uniacid'] ,
+ 'aid' => $_W['aid'] ,
+ 'enabled' => 1,
+ 'parentid'=> 0,
+ 'state' => '0'
+ ],['id','name'],'','displayorder DESC');
+ //二级分类信息获取
+ foreach($categoryes as $key => &$val){
+ $val['list'] = pdo_getall(PDO_NAME . 'category_store' , [
+ 'uniacid' => $_W['uniacid'] ,
+ 'aid' => $_W['aid'] ,
+ 'enabled' => 1,
+ 'parentid'=> $val['id'],
+ 'state' => '0'
+ ],['id','name'],'','displayorder DESC');
+ //兼容 删除没有二级分类的一级分类信息
+ if(!$val['list']){
+ unset($categoryes[$key]);
+ }
+ }
+ //商户分类
+ $levelids = pdo_getall('wlmerchant_merchant_cate', array('sid' => $id), 'twolevel');
+ if (!empty($levelids)) {
+ $cateids = array_column($levelids, 'twolevel');
+ }
+ //家政服务分类
+ $keeplevelids = pdo_getall('wlmerchant_housekeep_relation', array('objid' => $id,'type' => 3), 'twolevelid');
+ if (!empty($keeplevelids)) {
+ $keepcateids = array_column($keeplevelids, 'twolevelid');
+ }
+ if ($id) {
+ $register = Store::getSingleStore($id);
+ $proportion = unserialize($register['proportion']);
+ }else{
+ $register['aid'] = $_W['aid'];
+ $register['recruit_switch'] = 1;# 默认开启求职招聘
+ }
+ //获取云喇叭设置信息
+ if ($register['cloudspeaker']) {
+ $cloudspeaker = unserialize($register['cloudspeaker']);
+ }
+ //获取推送设置信息
+ if ($register['printing']) {
+ $printing = unserialize($register['printing']);
+ }
+
+ if ($id) {
+ $register['member'] = Store::getSingleRegister(array('uniacid' => $_W['uniacid'], 'storeid' => $id, 'ismain' => 1));
+ }
+ $member = Member::wl_member_get($register['member']['mid'], array('id', 'nickname', 'openid'));
+ $register['location'] = unserialize($register['location']);
+ //$register['location'] = Util::Convert_GCJ02_To_BD09($register['location']['lat'], $register['location']['lng']);
+ $register['endtime'] = $register['endtime'] ? $register['endtime'] : time() + 31536000;
+ $register['adv'] = unserialize($register['adv']);
+ $register['recruit_adv'] = unserialize($register['recruit_adv']);
+ $register['recruit_long_img'] = $register['recruit_long_img'] ? explode('||',$register['recruit_long_img']) : '';
+ $register['delivery_adv'] = unserialize($register['delivery_adv']);
+ $register['album'] = unserialize($register['album']);
+ $register['examineimg'] = unserialize($register['examineimg']);
+ $register['videourl'] = tomedia($register['videourl']);
+ $deliverytype = unserialize($register['deliverytype']);
+ $allArea = json_encode(Area::get_all_in_use());
+ $sett = unserialize($register['settlementtext']);
+ $payback = unserialize($register['payback']);
+ //活动时间处理
+ $storehours = unserialize($register['storehours']);
+ if(!empty($storehours['startTime'])){
+ $newstorehours = [];
+ $houreinfo['startTime'] = $storehours['startTime'];
+ $houreinfo['endTime'] = $storehours['endTime'];
+ $newstorehours[] = $houreinfo;
+ $storehours = $newstorehours;
+ }
+
+ //评分等级
+ $on_array = array();
+ $off_array = array();
+ if (empty($register['score'])) $register['score'] = 5;
+ if ($register['score'] == 1) {
+ $html = '非常差';
+ } else if ($register['score'] == 2) {
+ $html = '不太好';
+ } else if ($register['score'] == 3) {
+ $html = '一般';
+ } else if ($register['score'] == 4) {
+ $html = '很好!';
+ } else if ($register['score'] == 5) {
+ $html = '非常棒!!';
+ }
+ for ($i = 1; $i <= $register['score']; $i++) {
+ $on_array[$i] = $i;
+ }
+ for ($j = $register['score']; $j < 5; $j++) {
+ $off_array[$j] = $j + 1;
+ }
+ //标签
+ $presettags = pdo_getall('wlmerchant_tags', array('uniacid' => $_W['uniacid'], 'aid' => $_W['aid'], 'type' => 0), array('id', 'title'), '', 'sort DESC');
+ $tags = unserialize($register['tag']);
+ //店员
+ if ($id) {
+ $mains = pdo_getall('wlmerchant_merchantuser', array('uniacid' => $_W['uniacid'], 'storeid' => $id));
+ foreach ($mains as $key => &$main) {
+ $main['avatar'] = pdo_getcolumn(PDO_NAME . 'member', array('id' => $main['mid']), 'avatar');
+ }
+ }
+ //满减活动
+ if(p('fullreduce')){
+ $fullreducelist = pdo_getall('wlmerchant_fullreduce_list',array('aid' => $_W['aid'],'uniacid' => $_W['uniacid'],'status' => 1),array('id','title'));
+ }
+ //支付有礼
+ if(p('paidpromotion')){
+ $paidlist = pdo_getall('wlmerchant_payactive',array('uniacid' => $_W['uniacid'],'aid' => $_W['aid'],'status' => 1),array('id','title'));
+ }
+ if(agent_p('luckydraw')){
+ $drawlist = pdo_getall('wlmerchant_luckydraw',array('uniacid' => $_W['uniacid'],'aid' => $_W['aid'],'status' => 1),array('id','title'));
+ }
+ //支付信息列表
+ if($_W['wlsetting']['cashset']['allocationtype'] == 1){
+ $paylist = pdo_getall(PDO_NAME."payment",['uniacid'=>$_W['uniacid'],'type'=>1],['id','name']);
+ }
+
+ $logo = $register['logo'];
+ if (checksubmit('submit')) {
+ //表单提交
+ //判断是否修改了店长
+ $noticeflag = '';
+ $oldMid = $member['id'];
+ if ($member['id'] != $_GPC['storemid']) {
+ $noticeflag = 1;
+ }
+ $uid = intval($_GPC['uid']);
+ if (!empty($_GPC['storemid'])) {
+ $member['id'] = $_GPC['storemid'];
+ }
+ $register = $_GPC['register'];
+ if(empty($register['groupid']) && !is_store()){
+ wl_message('请设置商户所属套餐');
+ }
+ $count = preg_match_all("/[\x{4e00}-\x{9fa5}]/u", $register['recruit_brighten']);
+ if ($count > 20) wl_message('企业亮点最多填写20个汉字');
+ if (empty($register['business_license'])) wl_message('请上传营业执照');
+
+ $register['wxappswitch'] = intval($_GPC['wxappswitch']);
+ $register['iscommon'] = intval($_GPC['iscommon']);
+ //$register['location'] = Util::Convert_BD09_To_GCJ02($register['location']['lat'], $register['location']['lng']);
+ $register['lng'] = $register['location']['lng'];
+ $register['lat'] = $register['location']['lat'];
+ $register['location'] = serialize($register['location']);
+ $register['adv'] = serialize($register['adv']);
+ $register['recruit_adv'] = serialize($register['recruit_adv']);
+ $register['recruit_long_img'] = empty($register['recruit_long_img']) ? array() : implode('||',$register['recruit_long_img']);
+ $register['delivery_adv'] = serialize($register['delivery_adv']);
+ $register['album'] = serialize($register['album']);
+ $register['tag'] = serialize($register['tag']);
+ $register['storename'] = trim($register['storename']);
+ if (!empty($register['endtime'])) {
+ $register['endtime'] = strtotime($register['endtime']);
+ }
+ $register['introduction'] = htmlspecialchars_decode($register['introduction']);
+ $register['uniacid'] = $_W['uniacid'];
+ if(empty($register['aid']) && is_store()){
+ $register['aid'] = $_W['aid'];
+ }
+ $user['name'] = $register['realname'];
+ $user['mobile'] = $register['tel'];
+ if (!empty($_GPC['storemid'])) {
+ $user['mid'] = $member['id'];
+ if (empty($id)) {
+ $validate = Member::validateMemberIdentity($user['mid']);
+ if (!$validate['status']) wl_message('当前店长微信已是'.$validate['identity']);
+ }
+ }
+ $user['enabled'] = 1;
+ $user['uniacid'] = $_W['uniacid'];
+ $user['aid'] = $register['aid'];
+ //轮播图大小数组
+ $register['proportion'] = serialize($_GPC['proportion']);
+ //营业时间段
+ $startTime = $_GPC['startTime'];
+ $endTime = $_GPC['endTime'];
+ if(empty($startTime)){
+ wl_message('请设置营业时间');
+ }
+ foreach($startTime as $tk => $stime){
+ $sdate = [];
+ $sdate['startTime'] = $startTime[$tk];
+ $sdate['endTime'] = $endTime[$tk];
+ $registerdate[] = $sdate;
+ }
+ $register['storehours'] = serialize($registerdate);
+ //达达和UU城市列表
+ if($_W['wlsetting']['api']['citydelivery']['type'] == 1){
+ //达达设置
+ $third_city_info = $_GPC['third_city_info'];
+ $third_city_info = explode( ",",$third_city_info);
+ $register['third_city_code'] = $third_city_info[0];
+ $register['third_city_name'] = $third_city_info[1];
+ }else if($_W['wlsetting']['api']['citydelivery']['type'] == 2){
+ //UU设置
+ $register['third_city_name'] = $_GPC['third_city_name'];
+ }
+ //结算设置
+ $sett = $_GPC['sett'];
+ foreach ($sett as $key => &$se) {
+ if ($se > 100) {
+ $se = 100;
+ }
+ if ($se > 0.01) {
+ $se = sprintf("%.2f", $se);
+ }
+ }
+ $register['settlementtext'] = serialize($sett);
+ //支付返现(L304定制)
+ if($register['paybackstatus'] > 0){
+ $payback = $_GPC['payback'];
+ foreach ($payback as $key => &$pa) {
+ if ($pa > 100) {
+ $pa = 100;
+ }
+ if ($pa > 0.01) {
+ $pa = sprintf("%.2f", $pa);
+ }
+ }
+ $register['payback'] = serialize($payback);
+ }
+ $register['yuecashback'] = $register['yuecashback'] > 100 ? 100 : sprintf("%.2f", $register['yuecashback']);
+ $register['vipyuecashback'] = $register['vipyuecashback'] > 100 ? 100 : sprintf("%.2f", $register['vipyuecashback']);
+ //同城配送
+ if(empty($register['deliverytype'])){
+ $register['deliverytype'][] = 'own';
+ }
+ $register['deliverytype'] = serialize($register['deliverytype']);
+ //云喇叭设置信息
+ $cloudspeaker = $_GPC['cloudspeaker'];
+ if ($cloudspeaker) {
+ $cloudspeaker['volume'] = $cloudspeaker['volume'] ? $cloudspeaker['volume'] : 50;
+ }
+ $register['cloudspeaker'] = serialize($cloudspeaker);
+ //消息推送设置
+ $register['printing'] = serialize($_GPC['printing']);
+
+ if ($id) {
+ //修改店铺信息
+ $result = Store::registerEditData($register, $id);
+ if (empty($uid)) {
+ $user['storeid'] = $id;
+ $user['ismain'] = 1;
+ $user['status'] = 2;
+ $user['createtime'] = time();
+ }
+ $result2 = Store::registerEditUser($user, $uid);
+ //修改店铺信息 判断是否修改aid 并且进行对应的操作
+ self::updateGoodsAid($id,$register['aid']);//aid被改变 修改对应信息
+ } else {
+ $register['aid'] = $_W['aid'];
+ $register['status'] = 2;
+ $register['createtime'] = time();
+ $uid = Store::registerEditData($register);
+ $user['storeid'] = $uid;
+ $user['ismain'] = 1;
+ $user['status'] = 2;
+ $user['createtime'] = time();
+ $result = Store::registerEditUser($user);
+ $id = $uid;
+ }
+ # 店长变更后回退为 游客
+ if ($noticeflag) {
+ Member::returnIdentity($oldMid);
+ }
+ if ($result) {
+ if (!empty($id)) {
+ //处理分类
+ pdo_delete('wlmerchant_merchant_cate', array('sid' => $id));
+ foreach ($_GPC['category'] as $item) {
+ $scate = pdo_get(PDO_NAME . 'category_store', array('id' => $item), array('parentid'));
+ pdo_insert('wlmerchant_merchant_cate', ['sid' => $id, 'onelevel' => $scate['parentid'], 'twolevel' => $item]);
+ }
+ //处理家政服务分类
+ if($register['housekeepstatus'] > 0){
+ $housekeepcate = $_GPC['housekeepcate'];
+ pdo_delete('wlmerchant_housekeep_relation', array('type' => 3,'objid' => $id));
+ foreach ($housekeepcate as $keepitem) {
+ $keepscate = pdo_get(PDO_NAME . 'housekeep_type', array('id' => $keepitem), array('onelevelid'));
+ pdo_insert('wlmerchant_housekeep_relation', ['type' => 3,'objid' => $id, 'onelevelid' => $keepscate['onelevelid'], 'twolevelid' => $keepitem]);
+ }
+ }
+
+ $enabled = pdo_getcolumn(PDO_NAME . 'merchantdata', array('id' => $id), 'enabled');
+ if ($enabled != 1) {
+ //抢购商品
+ pdo_update('wlmerchant_rush_activity', array('status' => 4), array('uniacid' => $_W['uniacid'], 'sid' => $id));
+ //拼团商品
+ pdo_update('wlmerchant_fightgroup_goods', array('status' => 5), array('uniacid' => $_W['uniacid'], 'merchantid' => $id));
+ //卡券
+ pdo_update('wlmerchant_couponlist', array('status' => 3), array('uniacid' => $_W['uniacid'], 'merchantid' => $id));
+ //特权
+ pdo_update('wlmerchant_halfcardlist', array('status' => 0), array('uniacid' => $_W['uniacid'], 'merchantid' => $id));
+ //礼包
+ pdo_update('wlmerchant_package', array('status' => 0), array('uniacid' => $_W['uniacid'], 'merchantid' => $id));
+ //砍价
+ pdo_update('wlmerchant_bargain_activity', array('status' => 0), array('sid' => $id));
+ //同城配送
+ pdo_update('wlmerchant_delivery_activity', array('status' => 4), array('sid' => $id));
+ }
+ }
+ if ($noticeflag) {
+ $usermid = $_GPC['storemid'];
+ $firse = '您已被管理员设置为[' . $register['storename'] . ']的店长';
+ $content = '商户名:' . $register['storename'];
+ $link = h5_url('pages/subPages/merchant/merchantChangeShop/merchantChangeShop');
+ News::jobNotice($usermid, $firse, '绑定店长通知', $content, '已绑定', '点击链接进入商户管理页面', time(),$link);
+ }
+ if ($register['logo'] != $logo) {
+ Tools::clearwxapp();
+ Tools::clearposter();
+ }
+
+ Member::updateStoreUserIdentity($id);
+
+ if (is_store()) {
+ wl_message('商家信息保存成功', web_url('store/merchant/edit'), 'success');
+ } else {
+ if($_GPC['houseflag'] > 0){
+ wl_message('商家信息保存成功', web_url('housekeep/KeepWeb/storelist'), 'success');
+ }else{
+ wl_message('商家信息保存成功', web_url('store/merchant/index', array('enabled' => $register['enabled'], 'page' => $page)), 'success');
+ }
+ }
+ } else {
+ if (is_store()) {
+ wl_message('商家信息保存失败,请重试', web_url('store/merchant/edit'), 'error');
+ } else {
+ wl_message('商家信息保存失败,请重试', web_url('store/merchant/edit', array('id' => $id)), 'error');
+ }
+ }
+ }
+ //获取代理商列表
+ $default[] = ['id' => 0,'agentname' => '总后台'];
+ $agentList = pdo_getall(PDO_NAME."agentusers",['uniacid'=>$_W['uniacid']],['id','agentname']);
+ $agentList = array_merge($default,$agentList);
+ //同城配送权限判断
+ if(p('citydelivery')){
+ $apps = App::get_account_perm();
+ if(!empty($apps['plugins'])){
+ if(in_array('citydelivery',$apps['plugins'])){
+ $citydefl = 1;
+ }
+ }else{
+ $citydefl = 1;
+ }
+ }
+ //求职招聘相关信息
+ if(p('recruit')){
+ $nature = Recruit::getLabelList(5);//企业性质标签
+ $scale = Recruit::getLabelList(4);//企业规模标签
+ $industry = Recruit::getIndustryList(['pid'=>0],['id','title']);//上级行业列表
+ }
+ //达达和UU城市列表
+ if($_W['wlsetting']['api']['citydelivery']['type'] == 1){
+ $city_code_list = Citydelivery::postDadaApi('',8);
+ $city_code_list = $city_code_list['result'];
+ }else if($_W['wlsetting']['api']['citydelivery']['type'] == 2){
+ $city_code_list = Citydelivery::postUUApi([],8);
+ $city_code_list = $city_code_list['CityList'];
+ }
+ //家政服务相关信息
+ if(p('housekeep')){
+ $housekeepcate = Housekeep::getCategory();
+ }
+
+ include wl_template('store/userEdit');
+ }
+
+ public function detelemain() {
+ global $_W, $_GPC;
+ $id = $_GPC['id'];
+ $ismain = pdo_getcolumn(PDO_NAME . 'merchantuser', array('id' => $id), 'ismain');
+ if ($ismain == 1) {
+ show_json(0, '不能删除店长');
+ } else {
+ $res = pdo_delete('wlmerchant_merchantuser', array('id' => $id));
+ }
+ if ($res) {
+ show_json(1, '删除成功');
+ } else {
+ show_json(0, '删除失败,请重试');
+ }
+ }
+
+ public function urlindex() {
+ global $_W, $_GPC;
+ $id = intval($_GPC['id']);
+ $pindex = max(1, intval($_GPC['page']));
+ $psize = 10;
+ $register = Store::getSingleStore($id);
+ $naves = Dashboard::getAllNav($pindex - 1, $psize, '', $id);
+ $navs = $naves['data'];
+ $pager = wl_pagination($naves['count'], $pindex, $psize);
+
+ include wl_template('store/userEdit');
+ }
+
+ public function addurl() {
+ global $_W, $_GPC;
+ $id = intval($_GPC['id']);
+ $register = Store::getSingleStore($id);
+
+ if (!empty($_GPC['navid'])) $nav = Dashboard::getSingleNav($_GPC['navid']);
+ if (checksubmit('submit')) {
+ $nav = $_GPC['nav'];
+ $nav['name'] = trim($nav['name']);
+ $nav['displayorder'] = intval($nav['displayorder']);
+ $nav['enabled'] = intval($_GPC['enabled']);
+ if (!empty($_GPC['navid'])) {
+ if (Dashboard::editNav($nav, $_GPC['navid'])) wl_message('保存成功', web_url('store/merchant/urlindex', array('id' => $nav['merchantid'])), 'success');
+ } else {
+ if (Dashboard::editNav($nav)) wl_message('保存成功', web_url('store/merchant/urlindex', array('id' => $nav['merchantid'])), 'success');
+ }
+ wl_message('保存失败', referer(), 'error');
+ }
+
+ include wl_template('store/userEdit');
+ }
+
+ public function delete() {
+ global $_W, $_GPC;
+ if (pdo_update(PDO_NAME . 'merchantdata', array('enabled' => 4), array('id' => $_GPC['id']))) {
+ pdo_delete('wlmerchant_storefans', array('sid' => $_GPC['id']));
+ //抢购商品
+ pdo_update('wlmerchant_rush_activity', array('status' => 4), array('uniacid' => $_W['uniacid'], 'sid' => $_GPC['id']));
+ //拼团商品
+ pdo_update('wlmerchant_fightgroup_goods', array('status' => 0), array('uniacid' => $_W['uniacid'], 'merchantid' => $_GPC['id']));
+ //卡券
+ pdo_update('wlmerchant_couponlist', array('status' => 0), array('uniacid' => $_W['uniacid'], 'merchantid' => $_GPC['id']));
+ //特权
+ pdo_update('wlmerchant_halfcardlist', array('status' => 0), array('uniacid' => $_W['uniacid'], 'merchantid' => $_GPC['id']));
+ //礼包
+ pdo_update('wlmerchant_package', array('status' => 0), array('uniacid' => $_W['uniacid'], 'merchantid' => $_GPC['id']));
+ show_json(1, '删除成功');
+ } else {
+ show_json(0, '删除失败,请重试');
+ }
+ }
+
+ function deletes() {
+ global $_W, $_GPC;
+ $ids = $_GPC['ids'];
+ $type = $_GPC['type'];
+ if ($type == 1) {
+ foreach ($ids as $key => $id) {
+ pdo_update(PDO_NAME . 'merchantdata', array('enabled' => 4), array('id' => $id));
+ pdo_delete('wlmerchant_storefans', array('sid' => $id));
+ }
+ } else {
+ foreach ($ids as $key => $id) {
+ pdo_delete(PDO_NAME . 'merchantdata', array('id' => $id));
+ $userData = pdo_getall(PDO_NAME . 'merchantuser',array('uniacid' => $_W['uniacid'], 'storeid' => $id));
+ pdo_delete(PDO_NAME . 'merchantuser', array('uniacid' => $_W['uniacid'], 'storeid' => $id));
+ foreach ($userData as $userRow) {
+ Member::returnIdentity($userRow['mid']);
+ }
+ }
+ }
+
+ die(json_encode(array('errno' => 0, 'message' => '', 'id' => '')));
+ }
+
+ public function sureDelete() {
+ global $_W, $_GPC;
+ if (pdo_delete(PDO_NAME . 'merchantdata', array('id' => $_GPC['id']))) {
+ $userData = pdo_getall(PDO_NAME . 'merchantuser',array('uniacid' => $_W['uniacid'], 'storeid' => $_GPC['id']));
+ pdo_delete(PDO_NAME . 'merchantuser', array('uniacid' => $_W['uniacid'], 'storeid' => $_GPC['id']));
+ foreach ($userData as $userRow) {
+ Member::returnIdentity($userRow['mid']);
+ }
+ show_json(1, '删除成功');
+ }
+ show_json(0, '删除失败,请重试');
+ }
+
+ /**
+ * 函数的含义说明
+ *
+ * @access public
+ * @name 方法名称
+ * @param mixed 参数一的说明
+ * @return array
+ */
+ function keeper() {
+ global $_W, $_GPC;
+ $id = intval($_GPC['id']);
+ $register = Store::getSingleStore($id);
+ $register['onelevel'] = Util::idSwitch('cateParentId', 'cateParentName', $register['onelevel']);
+ $register['twolevel'] = Util::idSwitch('cateChildId', 'cateChildName', $register['twolevel']);
+
+ $where['storeid'] = $id;
+ $keeperData = Util::getNumData("*", PDO_NAME . 'merchantuser', $where, 'ismain asc');
+ $keeper = $keeperData[0];
+ foreach ($keeper as $key => &$value) {
+ $value['member'] = Member::wl_member_get($value['mid']);
+ }
+ include wl_template('store/userEdit');
+ }
+
+ /**
+ * Comment: 代理后台进行店铺余额提现申请的操作
+ * Author: zzw
+ */
+ public function cash() {
+ global $_W, $_GPC;
+ #1、获取基本参数信息
+ $sid = $_GPC['sid'];//商户id
+ $money = $_GPC['money'];//提现金额
+ $cashsets = Setting::wlsetting_read('cashset');//提现设置
+ $agent = Area::getSingleAgent($_W['aid']);
+ $syssalepercent = $agent['percent']['syssalepercent'];//系统抽成比例
+ if (empty($syssalepercent)) {
+ $syssalepercent = sprintf("%.2f" , $_W['wlsetting']['cashset']['syssalepercent']);
+ }else {
+ $syssalepercent = sprintf("%.2f" , $syssalepercent);
+ }
+ $userInfo = Store::getShopOwnerInfo($sid, $_W['aid']);//收款人信息
+ if(!empty($userInfo['openid'])){
+ $sopenid = $userInfo['openid'];
+ $source = 1;
+ }else if(!empty($userInfo['wechat_openid'])){
+ $sopenid = $userInfo['wechat_openid'];
+ $source = 3;
+ }else{
+ wl_json(0, '店长无微信打款信息,无法结算');
+ }
+ #2、判断商家的提现时间限制
+ $shopIntervalTime = $cashsets['shopIntervalTime'];
+ if ($shopIntervalTime > 0) {
+ //获取上次提现申请时间
+ $startTime = pdo_fetchcolumn("SELECT applytime FROM "
+ . tablename(PDO_NAME . "settlement_record")
+ . " WHERE sid = {$sid} AND uniacid = {$_W['uniacid']} ORDER BY applytime DESC ");
+ $interval = time() - $startTime;
+ $intervalDay = $interval / 3600 / 24;
+ //判断间隔时间
+ $intercalRes = ceil($shopIntervalTime - $intervalDay);
+ if ($intercalRes > 0) {
+ wl_json(0, '请等' . $intercalRes . '天后再申请!');
+ }
+ }
+ #3、判断提现金额限制
+ if ($money < $cashsets['lowsetmoney']) {
+ wl_json(0, '申请失败,最低提现金额为' . $cashsets['lowsetmoney'] . '元。');
+ }
+ #4、拼装提现信息
+ $data = array(
+ 'uniacid' => $_W['uniacid'],
+ 'sid' => $sid,
+ 'aid' => $_W['aid'],
+ 'status' => 2,
+ 'type' => 1,
+ 'sapplymoney' => $money,
+ 'sgetmoney' => sprintf("%.2f", $money - $syssalepercent * $money / 100),
+ 'spercentmoney' => sprintf("%.2f", $syssalepercent * $money / 100),
+ 'spercent' => $syssalepercent,
+ 'applytime' => TIMESTAMP,
+ 'updatetime' => TIMESTAMP,
+ 'sopenid' => $sopenid,
+ 'payment_type' => 5,
+ 'source' => $source
+ );
+ #5、保存提现信息
+ if (pdo_insert(PDO_NAME . 'settlement_record', $data)) {
+ $orderid = pdo_insertid();
+ $res = Store::settlement($orderid, 0, $data['sid'], -$money, 0, -$money, 7, 0, 0, $_W['aid']);
+ if ($res) {
+ if (!empty($_W['wlsetting']['adminmid'])) {
+ $storename = pdo_getcolumn(PDO_NAME . 'merchantdata', array('id' => $sid), 'storename');
+ $first = '您好,有一个商户提现申请待审核。';
+ $content = '商户[' . $storename . ']申请提现' . $money . '元';
+ News::jobNotice($_W['wlsetting']['adminmid'], $first, '商户提现审核通知', $content, '待审核', '请尽快前往系统后台审核', time());
+ }
+ wl_json(1, '申请成功');
+ } else {
+ wl_json(0, '申请失败,请重试');
+ }
+ } else {
+ wl_json(0, '申请失败,请重试');
+ }
+ }
+
+ public function moneychange() {
+ global $_W, $_GPC;
+ $id = intval($_GPC['id']);
+ $balance = trim($_GPC['balance']);
+
+ if ($_W['ispost']) {
+ $moneychange = trim($_GPC['moneychange']);
+ $moneynum = sprintf("%.2f", trim($_GPC['moneynum']));
+ $remark = trim($_GPC['remark']);
+ if ($moneynum < 0) {
+ show_json(0, '变更金额错误');
+ }
+ if ($moneychange == 1) {
+ $settlementmoney = $moneynum;
+ } else {
+ $settlementmoney = -$moneynum;
+ }
+ pdo_fetch("update" . tablename('wlmerchant_merchantdata') . "SET nowmoney = nowmoney + {$settlementmoney},allmoney = allmoney + {$settlementmoney} WHERE id = {$id}");
+ $merchantnowmoney = pdo_getcolumn(PDO_NAME . 'merchantdata', array('id' => $id), 'nowmoney');
+ Store::addcurrent(1, -1, $id, $settlementmoney, $merchantnowmoney, 0, $remark);
+ show_json(1, '商户余额变更成功');
+ }
+
+ include wl_template('store/moneychange');
+ }
+
+ /**
+ * Comment: 商户二维码生成
+ * Author: zzw
+ * Date: 2019/11/28 11:51
+ */
+ public function storeQrCode() {
+ global $_W, $_GPC;
+ #1、参数获取
+ $id = $_GPC['id'] ? $_GPC['id'] : 0;
+ #2、基本链接生成
+ $shopLink = h5_url('pages/mainPages/store/index', ['sid' => $id]);
+ if(Customized::init('customized336')){
+ $buyLink = h5_url('pages/mainPages/store/newBuyOrder/newBuyOrder', ['sid' => $id]);
+ }else{
+ $buyLink = h5_url('pages/subPages2/newBuyOrder/buyOrder', ['sid' => $id]);
+ }
+ $followLink = Storeqr::get_storeqr($id);//获取关注二维码
+ #3、获取小程序码信息
+ if (p('wxapp')) {
+ $logo = pdo_getcolumn(PDO_NAME . "merchantdata", ['id' => $id], 'logo');
+ $wxappShopLink = Store::getShopWxAppQrCode($id, tomedia($logo));
+ if(Customized::init('customized336')){
+ $wxappBuyLink = Store::getShopWxAppQrCode($id, tomedia($logo), 'pages/mainPages/store/newBuyOrder/newBuyOrder');
+ }else{
+ $wxappBuyLink = Store::getShopWxAppQrCode($id, tomedia($logo), 'pages/subPages2/newBuyOrder/buyOrder');
+ }
+ //同城配送二维码
+ $link = "pages/subPages2/businessCenter/foodList/foodList?id={$id}&storeid={$id}";
+ $wxappDistributionLink = Store::getShopWxAppQrCode('', tomedia($logo),$link);
+ }
+ //同城配送信息
+ $distributionLink = h5_url('pages/subPages2/businessCenter/foodList/foodList' , ['id' => $id,'storeid' => $id]);
+
+
+ include wl_template('store/qrcode_store');
+ }
+ /**
+ * Comment: 修改店铺商品信息
+ * Author: zzw
+ * Date: 2020/3/9 11:22
+ * @param $sid
+ * @param $aid
+ */
+ public static function updateGoodsAid($sid,$aid){
+ #1、商品信息修改
+ pdo_update(PDO_NAME."rush_activity",['aid'=>$aid],['sid'=>$sid]);//修改抢购商品
+ pdo_update(PDO_NAME."groupon_activity",['aid'=>$aid],['sid'=>$sid]);//修改团购商品
+ pdo_update(PDO_NAME."bargain_activity",['aid'=>$aid],['sid'=>$sid]);//修改砍价商品
+ pdo_update(PDO_NAME."fightgroup_goods",['aid'=>$aid],['merchantid'=>$sid]);//修改拼团商品
+ pdo_update(PDO_NAME."couponlist",['aid'=>$aid],['merchantid'=>$sid]);//修改卡卷商品
+ pdo_update(PDO_NAME."activitylist",['aid'=>$aid],['sid'=>$sid]);//修改活动商品
+ pdo_update(PDO_NAME."delivery_activity",['aid'=>$aid],['sid'=>$sid]);//修改活动商品
+ #1、商品信息修改
+ pdo_update(PDO_NAME."merchantuser",['aid'=>$aid],['storeid'=>$sid]);//修改店员信息
+ }
+
+ //店员列表
+ public function clerkindex() {
+ global $_W, $_GPC;
+ $storeid = $_GPC['storeid'];
+ if (is_store()) {
+ $storeid = $_W['storeid'];
+ }
+ $storename = pdo_getcolumn(PDO_NAME . 'merchantdata', array('id' => $storeid), 'storename');
+ $pindex = max(1, intval($_GPC['page']));
+ $psize = 10;
+ $where = array('storeid' => $storeid, 'ismain!=' => 1);
+ if (!empty($_GPC['keyword'])) {
+ if ($_GPC['keywordtype'] == 1) {
+ $where['name@'] .= trim($_GPC['keyword']);
+ } else if ($_GPC['keywordtype'] == 2) {
+ $where['mobile@'] .= trim($_GPC['keyword']);
+ }
+ }
+
+ $clerkData = Util::getNumData("*", PDO_NAME . 'merchantuser', $where, 'id desc', $pindex, $psize, 1);
+ $clerklist = $clerkData[0];
+ $pager = $clerkData[1];
+
+ foreach ($clerklist as &$li) {
+ $member = pdo_get('wlmerchant_member', array('id' => $li['mid']), array('nickname', 'avatar'));
+ $li['nickname'] = $member['nickname'];
+ $li['avatar'] = tomedia($member['avatar']);
+ }
+ include wl_template('store/clerklist');
+ }
+ //店员编辑
+ public function editclerk() {
+ global $_W, $_GPC;
+ $id = $_GPC['id'];
+ $storeid = $_GPC['storeid'];
+ $store = pdo_get('wlmerchant_merchantdata',array('id' => $storeid),array('aid'));
+ if ($id) {
+ $clerk = pdo_get('wlmerchant_merchantuser', array('id' => $id));
+ $member = pdo_get('wlmerchant_member', array('id' => $clerk['mid']), array('nickname', 'avatar'));
+ $clerk['nickname'] = $member['nickname'];
+ $clerk['avatar'] = $member['avatar'];
+ }
+
+ if ($_W['ispost']) {
+ $data = array(
+ 'mid' => $_GPC['memberid'],
+ 'name' => $_GPC['name'],
+ 'mobile' => $_GPC['mobile'],
+ 'ismain' => $_GPC['ismain'],
+ 'orderwrite' => $_GPC['orderwrite'],
+ 'viewdata' => $_GPC['viewdata'],
+ 'enabled' => $_GPC['enabled']
+ );
+ if ($id) {
+ $res = pdo_update('wlmerchant_merchantuser', $data, array('id' => $id));
+ } else {
+ $data['uniacid'] = $_W['uniacid'];
+ $data['storeid'] = $_GPC['storeid'];
+ $data['aid'] = $store['aid'];
+ $data['createtime'] = time();
+ //$data['enabled'] = $store['enabled'];
+ $res = pdo_insert(PDO_NAME . 'merchantuser', $data);
+ }
+ if ($res) {
+ show_json(1, '操作成功');
+ } else {
+ show_json(0, '操作失败,请重试');
+ }
+ }
+
+
+ include wl_template('store/clerkedit');
+ }
+ //删除店员
+ public function deleteclerk() {
+ global $_W, $_GPC;
+ $id = $_GPC['id'];
+ $ids = $_GPC['ids'];
+ if (!empty($id)) {
+ $res = pdo_delete('wlmerchant_merchantuser', array('id' => $id));
+ }
+ if (!empty($ids)) {
+ foreach ($ids as $key => $id) {
+ $res = pdo_delete('wlmerchant_merchantuser', array('id' => $id));
+ }
+ }
+ if ($res) {
+ show_json(1, '操作成功');
+ } else {
+ show_json(0, '操作失败,请重试');
+ }
+ }
+
+ //时间段引入方法
+ public function storehours() {
+ include wl_template('store/storehours');
+ }
+
+ //获取可用店铺列表
+ public function getstorelist(){
+ global $_W, $_GPC;
+ $where = "uniacid = {$_W['uniacid']} AND status = 2 AND enabled = 1 AND aid = {$_W['aid']}";
+ $data = [];
+ if (!empty($_GPC['search'])) {
+ $where .= " AND (storename LIKE '%".trim($_GPC['search'])."%' or id LIKE '%".trim($_GPC['search'])."%')";
+ }else{
+ $data[] = ['id' => 0, 'text' => '无关联商户'];
+ }
+ $members = pdo_fetchall("SELECT id,storename FROM ".tablename('wlmerchant_merchantdata')."WHERE {$where} ORDER BY id DESC LIMIT 100");
+
+ foreach ($members as &$member) {
+ $data[] = ['id' => $member['id'], 'text' => $member['storename'].'(SID:'.$member['id'].')'];
+ }
+ die(json_encode($data));
+ }
+
+ // 编辑商户分类
+ public function editStoreCategory()
+ {
+ global $_W,$_GPC;
+ $storeId = $_GPC['storeId'];
+ $categoryList = Category::getTreeCategory(0,'*',1);
+ $categoryIdArr = [];
+ $queryRes = pdo_getall(PDO_NAME . 'merchant_class',['storeid' => $storeId],['cc_id']);
+ foreach ($queryRes as $queryRow) $categoryIdArr[] = $queryRow['cc_id'];
+ include wl_template('store/editStoreCategory');
+ }
+
+ // 保存商户分类
+ public function saveStoreCategory()
+ {
+ global $_W,$_GPC;
+
+ $storeId = $_GPC['storeId'];
+ $id_arr = $_GPC['id_arr'];
+ if (empty($storeId) || !is_numeric($storeId)) show_json(0, '缺少商户id');
+
+ $queryRes = pdo_getall(PDO_NAME . 'merchant_class',['storeid' => $storeId],['id']);
+ $deleteIdAll = [];
+ foreach ($queryRes as $queryRow) $deleteIdAll[] = $queryRow['id'];
+ if ($deleteIdAll) pdo_delete(PDO_NAME . 'merchant_class',['id' => $deleteIdAll]);
+
+ if (!empty($id_arr)) {
+ foreach ($id_arr as $cate_id) {
+ $insert_data = [
+ 'storeid' => $storeId,
+ 'cc_id' => $cate_id,
+ 'create_time' => time()
+ ];
+ pdo_insert(PDO_NAME . 'merchant_class',$insert_data);
+ }
+ }
+ show_json(1, '保存成功');
+ }
+}
+
diff --git a/addons/weliam_smartcity/web/controller/store/register.ctrl.php b/addons/weliam_smartcity/web/controller/store/register.ctrl.php
new file mode 100644
index 0000000..cf741ac
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/store/register.ctrl.php
@@ -0,0 +1,88 @@
+ &$v) {
+ $v['nickname'] = str_replace("'", '', $v['nickname']);
+ }
+ }
+ include wl_template('store/registerQueryNickname');
+ exit;
+ }
+ }
+ /*
+ * 入驻设置
+ */
+ public function set() {
+ global $_W, $_GPC;
+ if ($_GPC['set']) {
+ $_GPC['set']['detail'] = htmlspecialchars_decode($_GPC['set']['detail']);
+ $res1 = Setting::agentsetting_save($_GPC['set'], 'register');
+ wl_message('保存成功!', referer(), 'succuss');
+ }
+ $set = Setting::agentsetting_read('register');
+ include wl_template('store/registerSet');
+ exit;
+ }
+ //付费记录
+ public function chargerecode() {
+ global $_W, $_GPC;
+ $pindex = max(1, intval($_GPC['page']));
+ $psize = 10;
+ $where = array(
+ 'uniacid' => $_W['uniacid'],
+ 'status' => 3,
+ 'plugin' => 'store'
+ );
+
+ if (is_agent()) {
+ $where['aid'] = $_W['aid'];
+ }
+
+ if ($_GPC['orderid']) {
+ $where['id'] = $_GPC['orderid'];
+ }
+
+ $records = pdo_getslice('wlmerchant_order', $where, array($pindex, $psize), $total, array(), '', "id DESC");
+ $pager = wl_pagination($total, $pindex, $psize);
+
+ foreach ($records as $key => &$re) {
+ $merchant = pdo_get('wlmerchant_merchantdata', array('id' => $re['sid']), array('logo', 'storename'));
+ $re['logo'] = $merchant['logo'];
+ $re['storename'] = $merchant['storename'];
+ $re['typename'] = pdo_getcolumn(PDO_NAME . 'chargelist', array('id' => $re['fkid']), 'name');
+ }
+
+
+ include wl_template('store/chargerecode');
+ exit;
+ }
+ //搜索用户
+ public function searchmember() {
+ global $_W, $_GPC;
+ $con = $con2 = "uniacid='{$_W['uniacid']}' ";
+ $keyword = $_GPC['keyword'];
+ if ($keyword != '') {
+ $con .= " and nickname LIKE '%{$keyword}%' or uid LIKE '%{$keyword}%' or openid LIKE '%{$keyword}%'";
+ $con2 .= " and nickname LIKE '%{$keyword}%' or uid LIKE '%{$keyword}%'";
+ }
+ $ds = pdo_fetchall("select * from" . tablename('wlmerchant_member') . "where $con");
+
+ include wl_template('store/searchmember');
+ }
+
+}
diff --git a/addons/weliam_smartcity/web/controller/store/settled.ctrl.php b/addons/weliam_smartcity/web/controller/store/settled.ctrl.php
new file mode 100644
index 0000000..9c109fd
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/store/settled.ctrl.php
@@ -0,0 +1,18 @@
+ $value) {
+ $registers[$key]['member'] = Member::wl_member_get($value['mid'], array('id', 'nickname','encodename'));
+ $registers[$key]['storedata'] = Store::getSingleStore($value['storeid']);
+ }
+
+ include wl_template('store/registerIndex');
+ }
+ //对申请信息进行 审核、删除操作
+ public function edit() {
+ global $_W, $_GPC;
+ if ($_GPC['op'] == 'reject') {
+ if (pdo_update(PDO_NAME . 'merchantdata', array('status' => 3), array('id' => $_GPC['id']))) {
+ Store::editSingleRegister($_GPC['uid'], array('status' => 3, 'reject' => $_GPC['reject']));
+ $mid = pdo_getcolumn(PDO_NAME . 'merchantuser', array('id' => $_GPC['uid']), 'mid');
+ $store = pdo_get(PDO_NAME . 'merchantdata', array('id' => $_GPC['id']), array('storename'));
+ $storename = $store['storename'];
+ $content = '企业名:' . $storename;
+ $link = h5_url('pages/mainPages/Settled/Settled',['storeid' => $_GPC['id']]);
+ News::jobNotice($mid, '您好,您的企业入驻审核已完成', '企业入驻审核通知', $content, '未通过', '点击查看未通过原因', time(), $link);
+// $content = '商户名:' . $storename;
+// $link = h5_url('pages/subPages/merchant/merchantChangeShop/merchantChangeShop');
+// News::jobNotice($mid, '您好,您的商家入驻审核已完成', '商户入驻审核通知', $content, '未通过', '点击查看未通过原因', time(), $link);
+ wl_message('驳回成功', referer(), 'succuss');
+ } else {
+ wl_message('驳回失败', referer(), 'error');
+ }
+ }
+ if ($_GPC['op'] == 'pass') {
+ $status = pdo_getcolumn(PDO_NAME . 'merchantdata',array('id' => $_GPC['id']),'status');
+ if (pdo_update(PDO_NAME . 'merchantdata', array('status' => 2, 'enabled' => 1), array('id' => $_GPC['id']))) {
+ if($status == 0){
+ //修改过期时间
+ $chargeid = pdo_getcolumn(PDO_NAME . 'order',array('sid' => $_GPC['id'],'status' => 0,'plugin' => 'store','payfor'=>'merchant'),'fkid');
+ $day = pdo_getcolumn(PDO_NAME . 'chargelist',array('id' => $chargeid),'days');
+ $endtime = time() + 86400*$day;
+ pdo_update(PDO_NAME . 'merchantdata', array('groupid' => $chargeid, 'endtime' => $endtime), array('id' => $_GPC['id']));
+ pdo_update('wlmerchant_order',array('status' => 3,'paytype' => 6 ,'paytime' => time(), 'issettlement' => 1,'price' => 0),array('sid' => $_GPC['id'],'plugin' => 'store'));
+ }
+ Store::editSingleRegister($_GPC['uid'], array('status' => 2, 'reject' => $_GPC['reject']));
+ $member = pdo_get('wlmerchant_merchantuser', array('id' => $_GPC['uid']), array('mid'));
+ $store = pdo_get('wlmerchant_merchantdata', array('id' => $_GPC['id']), array('storename'));
+ $storename = $store['storename'];
+ $content = '商户名:' . $storename;
+ News::jobNotice($member['mid'], '您好,您的商家入驻审核已完成', '商户入驻审核通知', $content, '已通过', '请您尽快完善商家信息', time());
+ Member::updateStoreUserIdentity($_GPC['id'],1);
+ wl_message('通过操作成功', web_url('store/merchant/index', array('enabled' => 1)), 'succuss');
+ } else {
+ wl_message('通过操作失败', referer(), 'error');
+ }
+ }
+ if ($_GPC['op'] == 'del') {
+ if (pdo_delete(PDO_NAME . 'merchantuser', array('id' => $_GPC['uid']))) {
+ pdo_delete(PDO_NAME . 'merchantdata', array('id' => $_GPC['id']));
+ wl_message('删除申请成功', referer(), 'succuss');
+ } else {
+ wl_message('删除申请失败', referer(), 'error');
+ }
+ }
+ }
+
+
+}
diff --git a/addons/weliam_smartcity/web/controller/store/storeCertified.ctrl.php b/addons/weliam_smartcity/web/controller/store/storeCertified.ctrl.php
new file mode 100644
index 0000000..f8143a5
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/store/storeCertified.ctrl.php
@@ -0,0 +1,100 @@
+ '%'.trim($_GPC['keyword']).'%'],'id');
+ foreach ($storeAll as $storeRow) $storeIdArr[] = $storeRow['id'];
+ $where['storeid#'] = $storeIdArr ? implode(",",$storeIdArr) : '0';
+ } else if ($_GPC['keywordtype'] == 3) {
+ $where['@name@'] = trim($_GPC['keyword']);
+ } else if ($_GPC['keywordtype'] == 4) {
+ $where['mobile'] = trim($_GPC['keyword']);
+ }
+ }
+
+ if (is_numeric($_GPC['status'])) $where['status'] = trim($_GPC['status']);
+
+ $memberData = Util::getNumData("*", PDO_NAME . 'merchant_certified', $where, 'id desc', $pindex, $psize, 1);
+ $list = $memberData[0];
+ $pager = $memberData[1];
+ foreach ($list as &$item) {
+ $storeData = pdo_get(PDO_NAME . 'merchantdata',['id' => $item['storeid']],['storename','logo']);
+ $item['storename'] = $storeData['storename'];
+ $item['logo'] = tomedia($storeData['logo']);
+ $item['create_time'] = date("Y-m-d H:i:s",$item['create_time']);
+ }
+
+ include wl_template('store/certified/index');
+ }
+
+ /*
+ * 认证审核
+ */
+ public function check() {
+ global $_W, $_GPC;
+
+ if ($_W['ispost']) {
+
+ try {
+
+ $id = $_GPC['data']['id'];
+ $check_result = $_GPC['data']['result'];
+ $reason = $_GPC['data']['reason']?:'';
+ if (empty($id) || !is_numeric($id)) show_json('缺少id参数');
+ if (!in_array($check_result,['reject','pass'])) show_json(0,'参数错误');
+ if ($check_result == 'reject' && empty($reason)) show_json(0,'请填写不通过的原因');
+
+ $query_res = pdo_get(PDO_NAME . 'merchant_certified',['id' => $id, 'status' => 0]);
+ if (!$query_res) show_json(0,'已审核,请勿重复审核');
+
+ $status = $check_result == 'pass' ? 1 : 2;
+ $update_arr = [
+ 'status' => $status,
+ 'remark' => $reason,
+ 'check_userid' => $_W['uid'],
+ 'check_time' => time()
+ ];
+
+ pdo_begin(); // 开始事务
+ $up_res = pdo_update(PDO_NAME . 'merchant_certified',$update_arr,['id' => $id]);
+
+ if (!$up_res) throw new Exception('失败');
+
+ // 通过修改为商家身份
+ if ($status == 1) {
+ $up_res2 = pdo_update(PDO_NAME . 'merchantdata',['merchant_type' => 2],['id' => $query_res['storeid']]);
+ if (!$up_res2) throw new Exception('失败');
+ Member::updateStoreUserIdentity($query_res['storeid'],2);
+ } else {
+ $mid = pdo_getcolumn(PDO_NAME . 'merchantuser',['storeid' => $query_res['storeid'],'ismain' => [1,3]],'mid');
+ $content = '驳回原因:' . truncate_chinese_string($reason) . '...';
+ $link = h5_url('pagesA/businessCooperation/index',['sid' => $query_res['storeid']]);
+ News::jobNotice($mid, '您好,您的商户认证审核已完成', '商户认证审核通知', $content, '未通过', '点击重新申请', time(), $link);
+ }
+
+ pdo_commit(); // 提交事务
+
+ show_json(1,['message' => '成功', 'span' => $check_result == 'pass' ? '认证成功' : '认证失败']);
+ } catch (Exception $e) {
+ pdo_rollback(); // 回滚
+ show_json(0,$e->getMessage());
+ }
+
+ }
+ show_json(0,'请求失败');
+ }
+}
diff --git a/addons/weliam_smartcity/web/controller/store/storeComment.ctrl.php b/addons/weliam_smartcity/web/controller/store/storeComment.ctrl.php
new file mode 100644
index 0000000..8a2341c
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/store/storeComment.ctrl.php
@@ -0,0 +1,185 @@
+ $_W['uniacid'],'aid'=>$_W['aid']),array('id'));
+ if(is_store()){
+ $where['sid'] = $_W['storeid'];
+ }
+ if (empty($starttime) || empty($endtime)) {//初始化时间
+ $starttime = strtotime('-1 month');
+ $endtime = time();
+ }
+ if (!empty($_GPC['time'])) {
+ $starttime = strtotime($_GPC['time']['start']);
+ $endtime = strtotime($_GPC['time']['end']);
+ switch($_GPC['timetype']){
+ case 1:$where['createtime>'] = $starttime;
+ $where['createtime<'] = $endtime;break;
+ }
+ }
+ if (!empty($_GPC['type'])) $where['true'] = $_GPC['type'];
+ if (!empty($_GPC['keyword'])) $where['sid'] = $_GPC['keyword'];
+ if (!empty($_GPC['checkone'])) $where['checkone'] = $_GPC['checkone'];
+ $data = Util::getNumData("*", PDO_NAME.'comment', $where, 'createtime desc', $pindex, $psize, 1);
+ $lists = $data[0];
+ $pager = $data[1];
+ foreach($lists as $key=>&$value){
+ $starNum = array();
+ for($i=0;$i<$value['star'];$i++){
+ $starNum[$i] = $i;
+ }
+ $value['star'] = $starNum;
+ $value['sName'] = Util::idSwitch('sid', 'sName', $value['sid']);
+ }
+ include wl_template('store/comment');
+ }
+ //商户评论审核
+ public function check(){
+ global $_W,$_GPC;
+ $id = $_GPC['id'];
+ $pindex = $_GPC['pindex'];
+ $page = $_GPC['page'];
+ $data = Util::getSingelData("*", PDO_NAME.'comment', array('id'=>$id));
+ $starNum = array();
+ for($i=0;$i<$data['star'];$i++){
+ $starNum[$i] = $i;
+ }
+ $data['star'] = $starNum;
+ $data['pic'] = unserialize($data['pic']);
+ $data['sName'] = Util::idSwitch('sid', 'sName', $data['sid']);
+ if($_GPC['checkone']){
+ $update = array(
+ 'checkone'=>$_GPC['checkone'],
+ 'pic'=>serialize($_GPC['pic']),
+ );
+ //送积分
+ if($_W['wlsetting']['creditset']['commentcredit'] && $update['checkone'] == 2){
+ Member::credit_update_credit1($data['mid'], $_W['wlsetting']['creditset']['commentcredit'], '评价赠送积分');
+ }
+ pdo_update(PDO_NAME.'comment',$update,array('id'=>$id));
+ wl_message("操作成功!",web_url('store/storeComment/index',array('page'=>$page)),'success');
+ }
+ if($_GPC['ids']){
+ $ids = explode(",", $_GPC['ids']);;
+ foreach($ids as$k=>$v){
+ pdo_update(PDO_NAME.'comment',array('checkone'=>$_GPC['check']),array('id'=>$v));
+ if($_W['wlsetting']['creditset']['commentcredit'] && $_GPC['check'] == 2){
+ $mid = pdo_getcolumn(PDO_NAME.'comment',array('id'=>$v),'mid');
+ Member::credit_update_credit1($mid, $_W['wlsetting']['creditset']['commentcredit'], '评价赠送积分');
+ }
+ }
+ wl_message("操作成功!",web_url('store/storeComment/index'),'success');
+ }
+
+
+ include wl_template('store/comment_check');
+ }
+ //商户评论回复
+ public function reply(){
+ global $_W,$_GPC;
+ $id = $_GPC['id'];
+ $pindex = $_GPC['pindex'];
+ $page = $_GPC['page'];
+ $data = Util::getSingelData("*", PDO_NAME.'comment', array('id'=>$id));
+ $starNum = array();
+ for($i=0;$i<$data['star'];$i++){
+ $starNum[$i] = $i;
+ }
+ $data['star'] = $starNum;
+ $data['pic'] = unserialize($data['pic']);
+ $data['sName'] = Util::idSwitch('sid', 'sName', $data['sid']);
+ $data['replypicone'] = unserialize($data['replypicone']);
+
+
+ if($_GPC['replytextone']){
+ $replyone = $_GPC['replytextone']?2:1;
+ $update = array(
+ 'replytextone'=>$_GPC['replytextone'],
+ 'replypicone'=>serialize($_GPC['replypicone']),
+ 'replyone'=>$replyone,
+ );
+ pdo_update(PDO_NAME.'comment',$update,array('id'=>$id));
+ //发送模板消息
+ $comment = pdo_get('wlmerchant_comment',array('id' => $id),array('mid','replytextone','sid'));
+ $storename = pdo_getcolumn(PDO_NAME.'merchantdata',array('id'=>$comment['sid']),'storename');
+ $openid = pdo_getcolumn(PDO_NAME.'member',array('id'=>$comment['mid']),'openid');
+ $first = '商家回复了您的评论';
+ $type = '商家评论回复';
+ $status = '已回复';
+ $remark = '回复内容:'.$comment['replytextone'];
+ $content = '商家名:['.$storename.']';
+ News::jobNotice($comment['mid'],$first,$type,$content,$status,$remark,time());
+ wl_message("操作成功!",web_url('store/storeComment/index',array('page'=>$page)),'success');
+ }
+ include wl_template('store/comment_reply');
+
+ }
+ //添加商户评论
+ public function add(){
+ global $_W,$_GPC;
+ $id = $_GPC['id'];
+ $pindex = $_GPC['pindex'];
+ $page = $_GPC['page'];
+ if(empty($id) && !is_store()){
+ $storeList = pdo_getall('wlmerchant_merchantdata',array('uniacid' => $_W['uniacid'],'aid' => $_W['aid'],'status' => 2,'enabled' => 1),array('id','storename'));
+ }else{
+ if($id) $data = Util::getSingelData("*", PDO_NAME.'comment', array('id'=>$id));
+ }
+ if($_GPC['data']){
+ unset($data['id']);
+ $update = $_GPC['data'];
+ if(empty($id)){
+ $data['sid'] = $update['sid'];
+ $data['gid'] = $update['gid'];
+ $data['plugin'] = $update['plugin'];
+ $data['uniacid'] = $_W['uniacid'];
+ $data['aid'] = $_W['aid'];
+ $data['status'] = 1;
+ }
+ $data['star'] = $update['star'];
+ if($data['star'] > 3){
+ $data['level'] = 1;
+ }else if($data['star'] == 3){
+ $data['level'] = 2;
+ }else{
+ $data['level'] = 3;
+ }
+ $data['headimg'] = tomedia($update['headimg']);
+ $data['nickname'] = $update['nickname'];
+ $data['text'] = $update['text'];
+ $data['createtime'] = strtotime($update['time']);
+ $data['replytextone'] = $update['replytextone'];
+ if(!empty($data['replytextone'])){
+ $data['replyone'] = 2;
+ }
+ $data['true'] = 2;
+ $data['checkone'] = 2;
+ $data['pic']=serialize($_GPC['pic']);
+ $data['replypicone']=serialize($_GPC['replypicone']);
+ pdo_insert(PDO_NAME.'comment',$data);
+ wl_message("操作成功!",web_url('store/storeComment/index',array('page'=>$page)),'success');
+ }
+ include wl_template('store/comment_add');
+ }
+ //删除商户评论
+ public function delete(){
+ global $_W,$_GPC;
+ $pindex = $_GPC['pindex'];
+ if($_GPC['id']){
+ $ids = explode(",", $_GPC['id']);;
+ foreach($ids as$k=>$v){
+ pdo_delete(PDO_NAME.'comment',array('id'=>$v));
+ }
+ }
+ show_json(1);
+ }
+}
diff --git a/addons/weliam_smartcity/web/controller/store/storeDynamic.ctrl.php b/addons/weliam_smartcity/web/controller/store/storeDynamic.ctrl.php
new file mode 100644
index 0000000..42ad41e
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/store/storeDynamic.ctrl.php
@@ -0,0 +1,191 @@
+$v){
+ pdo_update(PDO_NAME.'store_dynamic',array('status'=>$_GPC['check']),array('id'=>$v));
+ }
+ wl_message("操作成功!",web_url('store/storeDynamic/dynamic'),'success');
+ }
+ }
+ //动态详情
+ public function checkdyn(){
+ global $_W,$_GPC;
+ $id = $_GPC['id'];
+ $data = pdo_get(PDO_NAME.'store_dynamic',array('id' => $id));
+ $data['pic'] = unserialize($data['imgs']);
+ $data['sName'] = Util::idSwitch('sid', 'sName', $data['sid']);
+ if($_GPC['token']){
+ $update = array(
+ 'content' => $_GPC['content'],
+ 'status' => $_GPC['checkone'],
+ 'imgs' => serialize($_GPC['pic']),
+ );
+ pdo_update(PDO_NAME.'store_dynamic',$update,array('id'=>$id));
+ wl_message("操作成功!",web_url('store/storeDynamic/dynamic'),'success');
+ }
+ include wl_template('store/dynamic_check');
+ }
+ //批量删除动态
+ public function dyndelete(){
+ global $_W,$_GPC;
+ if($_GPC['ids']){
+ $ids = explode(",", $_GPC['ids']);;
+ foreach($ids as$k=>$v){
+ pdo_delete(PDO_NAME.'store_dynamic',array('id'=>$v));
+ }
+ }
+ wl_message("操作成功!",web_url('store/storeDynamic/dynamic'),'success');
+ }
+ //动态列表
+ public function dynamic(){
+ global $_W,$_GPC;
+ $pindex = max(1, intval($_GPC['page']));
+ $psize = 10;
+ $where=array();
+ $where['uniacid'] = $_W['uniacid'];
+ $where['aid'] = $_W['aid'];
+ if(is_store()){
+ $where['sid'] = $_W['storeid'];
+ }
+ if (empty($starttime) || empty($endtime)) {//初始化时间
+ $starttime = strtotime('-1 month');
+ $endtime = time();
+ }
+ if (!empty($_GPC['time'])) {
+ $starttime = strtotime($_GPC['time']['start']);
+ $endtime = strtotime($_GPC['time']['end']);
+ switch($_GPC['timetype']){
+ case 1:$where['createtime>'] = $starttime;
+ $where['createtime<'] = $endtime;break;
+ case 2:$where['passtime>'] = $starttime;
+ $where['passtime<'] = $endtime;break;
+ case 3:$where['sendtime>'] = $starttime;
+ $where['sendtime<'] = $endtime;break;
+ }
+ }
+ if (!empty($_GPC['type'])){
+ if($_GPC['type'] == 4){
+ $where['status'] = 0;
+ }else {
+ $where['status'] = $_GPC['type'];
+ }
+ }
+ if (!empty($_GPC['keyword'])) $where['sid'] = $_GPC['keyword'];
+ $data = Util::getNumData("*",PDO_NAME.'store_dynamic',$where,'createtime desc',$pindex,$psize,1);
+ $lists = $data[0];
+ $pager = $data[1];
+ foreach($lists as $key=>&$dyn){
+ $dyn['sName'] = pdo_getcolumn(PDO_NAME.'merchantdata',array('id'=>$dyn['sid']),'storename');
+ $member = pdo_get(PDO_NAME.'member',array('id'=>$dyn['mid']),array('avatar','nickname'));
+ $dyn['headimg'] = tomedia($member['avatar']);
+ $dyn['nickname'] = $member['nickname'];
+ }
+ include wl_template('store/dynamic');
+ }
+ //删除动态
+ public function deletedyn() {
+ global $_W,$_GPC;
+ if ($_W['ispost']) {
+ $id = intval($_GPC['id']);
+ if (empty($id)) {
+ show_json(0, '参数错误,请刷新重试!');
+ }else {
+ $res = pdo_delete('wlmerchant_store_dynamic', array('id' => $id,'aid' => intval($_W['aid'])));
+ }
+ if($res){
+ show_json(1);
+ }else {
+ show_json(0, '删除失败,请刷新页面重试!');
+ }
+ }
+ }
+ //动态审核
+ public function passdyn() {
+ global $_W,$_GPC;
+ if ($_W['ispost']) {
+ $id = intval($_GPC['id']);
+ if (empty($id)) {
+ show_json(0, '参数错误,请刷新重试!');
+ }else {
+ $type = $_GPC['type'];
+ if($type == 'pass'){
+ $res = pdo_update('wlmerchant_store_dynamic',array('status' => 1,'passtime'=>time()),array('id' => $id));
+ }else if($type == 'reject'){
+ $res = pdo_update('wlmerchant_store_dynamic',array('status' => 3,'passtime'=>time()),array('id' => $id));
+ }
+ }
+ if($res){
+ show_json(1,'审核成功');
+ }else {
+ show_json(0, '删除失败,请刷新页面重试!');
+ }
+ }
+ }
+ //推送动态
+ public function senddyn(){
+ global $_W,$_GPC;
+ $id = intval($_GPC['id']);
+ $dynamic = pdo_get('wlmerchant_store_dynamic',array('id' => $id,'status'=>1));
+ if(empty($dynamic)){
+ wl_message('此动态已删除或已推送');
+ }
+ $fans = pdo_getall('wlmerchant_storefans',array('uniacid'=>$_W['uniacid'],'sid' => $dynamic['sid']),array('mid'));
+ $fannum = count($fans);
+ if(checksubmit('submit')){
+ $firsttext = $_GPC['firsttext'];
+ $remark = $_GPC['remark'];
+ $content = $_GPC['content'];
+ $source = $_GPC['source'] ? : 1;
+
+ include wl_template('store/dyn-process');
+ exit;
+ }
+
+ include wl_template('store/dynamicmodel');
+ }
+ //批量推送
+ public function senddyning(){
+ global $_W,$_GPC;
+ $id = intval($_GPC['id']);
+ $firsttext = $_GPC['firsttext'];
+ $remark = $_GPC['remark'];
+ $content = $_GPC['content'];
+ $source = $_GPC['source'] ? : 1;
+ $psize = 50;
+ $request_body = file_get_contents('php://input');
+ $data = json_decode($request_body, true);
+ $pindex = $data['pindex'];
+ $success = $data['success'];
+
+ $dynamic = pdo_get('wlmerchant_store_dynamic',array('id' => $id,'status'=>1));
+ $fans = pdo_fetchall("SELECT mid FROM ".tablename('wlmerchant_storefans')."WHERE sid = {$dynamic['sid']} AND uniacid = {$_W['uniacid']} ORDER BY id DESC LIMIT ".$pindex * $psize . ',' . $psize);
+ if($fans){
+ $url = h5_url('pages/mainPages/store/index',['sid'=>$dynamic['sid']]);
+ foreach($fans as $key => $fan) {
+ //模板消息
+ News::jobNotice($fan['mid'],$firsttext,'商家动态推送',$content,'已完成',$remark,time(),$url,$source);
+ //站内私信
+ pdo_insert(PDO_NAME.'im', array('uniacid' => $_W['uniacid'],'send_id'=> $dynamic['sid'],'send_type'=> 2,'receive_id'=>$fan['mid'],'receive_type'=>1,'create_time'=>time(),'content'=>$content));
+ $success++;
+ }
+ $return = array('result' => 1,'success' => $success);
+ }else{
+ pdo_update('wlmerchant_store_dynamic',array('status' => 2,'sendtime'=>time(),'successnum'=>$success),array('id' => $id));
+ $return = array('result' => 3,'success' => $success);
+ }
+ die(json_encode($return));
+ }
+}
diff --git a/addons/weliam_smartcity/web/controller/store/storeSetMeal.ctrl.php b/addons/weliam_smartcity/web/controller/store/storeSetMeal.ctrl.php
new file mode 100644
index 0000000..8e76d49
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/store/storeSetMeal.ctrl.php
@@ -0,0 +1,94 @@
+ &$v) {
+ if($v['aid']){
+ $v['agentname'] = pdo_getcolumn(PDO_NAME.'agentusers',array('id'=>$v['aid']),'agentname');
+ }else{
+ $v['agentname'] = '平台通用';
+ }
+ }
+ include wl_template('store/chargelist');
+ }
+ /**
+ * Comment: 商户套餐添加、修改操作
+ * Author: zzw
+ * Date: 2020/4/13 11:04
+ */
+ public function add() {
+ global $_W, $_GPC;
+ #1、参数获取
+ $id = $_GPC['id'] ? : '';
+ if (checksubmit('submit')) {
+ //添加、修改操作
+ $memberType = $_GPC['data'] ? : [];
+ $memberType['authority'] = serialize($_GPC['authority']);
+ //根据是否存在id 判断是添加信息还是修改信息
+ if ($id) {
+ //判断是否修改信息
+ $isUpdate = pdo_get(PDO_NAME."chargelist",$memberType);
+ if($isUpdate) wl_message('请修改后提交!' , web_url('store/storeSetMeal/add',['id'=>$id]) , 'error');
+ $res = pdo_update(PDO_NAME . 'chargelist' , $memberType , ['id' => $_GPC['id']]);
+ }else {
+ $memberType['aid'] = $_W['aid'];
+ $memberType['uniacid'] = $_W['uniacid'];
+ $res = pdo_insert(PDO_NAME . 'chargelist' , $memberType);
+ }
+ //判断操作是否成功
+ if ($res) wl_message('操作成功!' , web_url('store/storeSetMeal/chargelist') , 'success');
+ else wl_message('操作失败!' , web_url('store/storeSetMeal/chargelist') , 'error');
+ }
+ #2、获取基本信息
+ if ($id) {
+ $data = Util::getSingelData("*", PDO_NAME . 'chargelist', ['id' => $id]);
+ $data['authority'] = unserialize($data['authority']);
+ }
+ $agents = pdo_getall(PDO_NAME.'agentusers',['uniacid' => $_W['uniacid'],'status'=>1],['id','agentname']);
+
+ include wl_template('store/chargeadd');
+ }
+ //删除套餐
+ public function delete() {
+ global $_W, $_GPC;
+ $res = pdo_delete(PDO_NAME . 'chargelist', array('id' => $_GPC['id']));
+ if($res){
+ show_json(1);
+ }else{
+ show_json(0,'删除失败,请刷新重试');
+ }
+ }
+ /**
+ * Comment: 修改状态
+ * Author: zzw
+ * Date: 2019/9/18 16:33
+ */
+ public function changeStatus (){
+ global $_W , $_GPC;
+ #1、获取参数信息
+ $id = $_GPC['id'] OR Commons::sRenderError('缺少参数:id');
+ $status = $_GPC['status'] ? : 0;
+ #1、修改操作
+ $res = pdo_update(PDO_NAME."chargelist",['status'=>$status],['id'=>$id]);
+ if($res) Commons::sRenderSuccess('修改成功');
+ else Commons::sRenderError('修改失败,请刷新重试!');
+ }
+}
\ No newline at end of file
diff --git a/addons/weliam_smartcity/web/controller/user/login.ctrl.php b/addons/weliam_smartcity/web/controller/user/login.ctrl.php
new file mode 100644
index 0000000..a29781a
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/user/login.ctrl.php
@@ -0,0 +1,207 @@
+$_GPC['aid']),'uniacid');
+ $_W['aid'] = $_GPC['aid'];
+ }
+ $set = Setting::wlsetting_read('base');
+ if(checksubmit() || $_W['isajax']) {
+ if($_GPC['aid']){
+ $this->staffLogin($_GPC);//代理商员工登录
+ }else{
+ isetcookie('__wlagent_staff_session', '', -10000);//删除员工登录信息
+ $this->_login($_GPC['referer']);//代理商登陆
+ }
+ }
+ include wl_template('user/agent_login');
+ }
+ /**
+ * Comment: 代理商/员工退出登录
+ */
+ public function logout(){
+ global $_W,$_GPC;
+ if($_GPC['__wlagent_staff_session']){
+ isetcookie('__wlagent_session', '', -10000);//删除代理商登录信息
+ isetcookie('__wlagent_staff_session', '', -10000);//删除员工登录信息
+ header('Location:' . web_url('user/login/agent_login',array('aid'=>$_W['aid'])));
+ }else if($_GPC['__wlagent_session']){
+ isetcookie('__wlagent_session', '', -10000);//删除代理商登录信息
+ isetcookie('__wlagent_staff_session', '', -10000);//删除员工登录信息
+ header('Location:' . web_url('user/login/agent_login'));
+ }
+ }
+ /**
+ * Comment: 代理商登陆操作
+ * @param string $forward
+ */
+ public function _login($forward = '') {
+ global $_GPC, $_W;
+ $member = array();
+ $username = trim($_GPC['username']);
+
+ pdo_query('DELETE FROM'.tablename('users_failed_login'). ' WHERE lastupdate < :timestamp', array(':timestamp' => TIMESTAMP-300));
+ $failed = pdo_get('users_failed_login', array('username' => $username, 'ip' => CLIENT_IP));
+ if ($failed['count'] >= 5) {
+ wl_message('输入密码错误次数超过5次,请在5分钟后再登录',referer(), 'info');
+ }
+ if(empty($username)) {
+ wl_message('请输入要登录的用户名');
+ }
+ $member['uniacid'] = $_GPC['i'];
+ $member['username'] = $username;
+ $member['password'] = $_GPC['password'];
+ if(empty($member['password'])) {
+ wl_message('请输入密码');
+ }
+ $record = User::agentuser_single($member);
+ if(!empty($record)) {
+ if($record['status'] != 1) {
+ wl_message('您的账号正在审核或是已经被系统禁止,请联系网站管理员解决!');
+ }
+ if (!empty($record['endtime']) && $record['endtime'] < TIMESTAMP) {
+ wl_message('您的账号有效期限已过,请联系网站管理员解决!');
+ }
+ $cookie = array();
+ $cookie['id'] = $record['id'];
+ $cookie['uniacid'] = $record['uniacid'];
+ $cookie['hash'] = md5($record['password'] . $record['salt']);
+ $session = base64_encode(json_encode($cookie));
+ isetcookie('__wlagent_session', $session, 7 * 86400, true);
+
+ $status = array();
+ $status['id'] = $record['id'];
+ $status['lastvisit'] = TIMESTAMP;
+ $status['lastip'] = CLIENT_IP;
+ User::agentuser_update($status);
+
+ pdo_delete('users_failed_login', array('id' => $failed['id']));
+ wl_message("欢迎回来,{$record['username']}。", web_url('dashboard/dashboard'));
+ } else {
+ if (empty($failed)) {
+ pdo_insert('users_failed_login', array('ip' => CLIENT_IP, 'username' => $username, 'count' => '1', 'lastupdate' => TIMESTAMP));
+ } else {
+ pdo_update('users_failed_login', array('count' => $failed['count'] + 1, 'lastupdate' => TIMESTAMP), array('id' => $failed['id']));
+ }
+ wl_message('登录失败,请检查您输入的用户名和密码!');
+ }
+ }
+ /**
+ * Comment: 代理商员工登录
+ * Author: zzw
+ * @param $info 登录信息
+ */
+ protected function staffLogin($info){
+ global $_W;
+ #1、接收参数信息
+ $aid = $info['aid'];
+ $account = $info['username'];
+ $password = $info['password'];
+ #2、判断信息是否完整
+ if(!$account){
+ wl_message('登录失败!请填写账号信息。');
+ }else if (!$password){
+ wl_message('登录失败!请填写账号密码。');
+ }
+ #3、判断代理商是否存在
+ $agent = pdo_get(PDO_NAME."agentusers",array('id'=>$aid));
+ if(!$agent){
+ wl_message('登录失败!代理商信息不存在。');
+ }else if ($agent['status'] != 1){
+ wl_message('登录失败!该代理商正在审核或是已经被禁用,请联系网站管理员解决。');
+ }else if(!empty($agent['endtime']) && $agent['endtime'] < TIMESTAMP){
+ wl_message('登录失败!该代理商运营有效期已过,请联系网站管理员解决。');
+ }
+ #4、判断是否存在该账号
+ $existence = pdo_get(PDO_NAME."agentadmin",array('account'=>$account));
+ if(!$existence){
+ wl_message('登录失败!账号不存在。');
+ }
+ #5、判断账号密码是否正确
+ $userInfo = pdo_get(PDO_NAME."agentadmin",array('account'=>$account,'password'=>md5($password)));
+ if(!$userInfo){
+ wl_message('登录失败!密码错误。');
+ }
+ #6、登录成功后的操作 - 模拟代理商登录成功
+ $cookie['id'] = $agent['id'];
+ $cookie['uniacid'] = $agent['uniacid'];
+ $cookie['hash'] = md5($agent['password'] . $agent['salt']);
+ $session = base64_encode(json_encode($cookie));
+ isetcookie('__wlagent_session', $session, 7 * 86400, true);
+ #7、登录成功后的操作 - 员工登录成功,储存员工登录信息
+ $userCookie['aid'] = $aid;
+ $userCookie['uniacid'] = $_W['uniacid'];
+ $userCookie['account'] = $account;
+ $userCookie['password'] = md5($password);
+ $userSession = base64_encode(json_encode($userCookie));
+ isetcookie('__wlagent_staff_session', $userSession, 7 * 86400, true);
+ #8、获取该管理员的昵称信息
+ $mid = $userInfo['mid'];
+ $nickname = pdo_getcolumn(PDO_NAME."member",array('id'=>$mid),'nickname');
+ wl_message("欢迎回来,{$nickname}。", web_url('dashboard/dashboard'));
+ }
+
+
+ //平台员工登录
+ public function adminStaffLogin(){
+ global $_W,$_GPC;
+ //参数信息获取
+ $account = $_GPC['username'] ? : '';
+ $password = $_GPC['password'] ? : '';
+ $uniacid = $_GPC['i'] ? : $_W['uniacid'];
+ $set = Setting::wlsetting_read('base');
+ if($account) {
+ if(!$account || !$password) wl_message('请完善账号密码!');
+ //判断账号密码是否正确
+ $where = [
+ 'account' => $account,
+ 'password' => md5($password),
+ 'uniacid' => $uniacid,
+ 'aid' => 0,//平台员工aid固定为1
+ ];
+ $existence = pdo_get(PDO_NAME."agentadmin",$where);
+ if(!$existence) wl_message('账号密码错误!');
+ //模拟后台登录
+ $_W['highest_role'] = 'founder';
+ //记录员工登录信息
+ $user = [
+ 'uniacid' => $uniacid,
+ 'account' => $account,
+ 'password' => md5($password)
+ ];
+ $userSession = base64_encode(json_encode($user));
+ isetcookie('__wlsystem_staff_session', $userSession, 7 * 86400, true);
+ //获取该管理员的昵称信息
+ $nickname = pdo_getcolumn(PDO_NAME."member",['id' => $existence['mid']],'nickname');
+
+ $url = web_url('dashboard/dashboard/index');
+ wl_message("欢迎回来,{$nickname}。", $url);
+ }
+
+ include wl_template('user/agent_login');
+ }
+ //平台员工退出登录
+ public function adminStaffLogout(){
+ global $_W,$_GPC;
+ //删除员工登录信息
+ if($_GPC['__wlsystem_staff_session'] || $_GPC['__session']){
+ isetcookie('__session', '', -10000);//删除模拟的管理员登录信息
+ isetcookie('__wlsystem_staff_session', '', -10000);//删除员工登录信息
+ }
+
+ $loginUrl = $_W['siteroot']."web/citysys.php?p=user&ac=login&do=adminStaffLogin&i={$_W['uniacid']}";//平台员工登录
+ header('Location:' . $loginUrl);
+ }
+
+
+}
diff --git a/addons/weliam_smartcity/web/controller/user/storelogin.ctrl.php b/addons/weliam_smartcity/web/controller/user/storelogin.ctrl.php
new file mode 100644
index 0000000..67b2862
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/user/storelogin.ctrl.php
@@ -0,0 +1,153 @@
+ -1,
+ 'end_time' => $endTime
+ ];
+ Cache::setCache('storeLoginInfo', $onlyKey, json_encode($data));
+ #2、判断公众号是否存在
+ if(p('wxplatform')) {
+ $wechat = 1;
+ //获取微信公众号二维码信息
+ $path = h5_url('pages/subPages/merchant/storePcLogin/storePcLogin', ['only_key' => $onlyKey]);
+ } else {
+ $wechat = 0;
+ }
+ #3、判断小程序是否存在
+ $weapp = 0;
+ if(p('wxapp')) {
+ //获取小程序二维码信息
+ $weAppPath = WeApp::getQrCode('pages/subPages/merchant/storePcLogin/storePcLogin?only_key='.$onlyKey,'store_login_'.$onlyKey.'.png');//保存名称));
+ if(is_string($weAppPath) && $weAppPath){
+ $weapp = 1;
+ $weAppPath = tomedia($weAppPath);
+ }
+ }
+
+ include wl_template('user/store_login');
+ }
+ /**
+ * Comment: 更新二维码过期时间
+ * Author: zzw
+ * Date: 2019/11/7 14:57
+ */
+ public function changeEndTime(){
+ global $_W,$_GPC;
+ #1、参数获取
+ $onlyKey = $_GPC['only_key'] OR Commons::sRenderError('请刷新重试');
+ #2、修改过期时间
+ $loginInfo = json_decode(Cache::getCache('storeLoginInfo', $onlyKey), true);
+ #3、更新到期时间
+ $time = intval(180);//3分钟过期
+ $endTime = time() + $time;//到期时间
+ $data = [
+ 'status' => -1,
+ 'end_time' => $endTime
+ ];
+ Cache::setCache('storeLoginInfo', $onlyKey, json_encode($data));
+
+ Commons::sRenderSuccess('新的过期信息',$data);
+ }
+ /**
+ * Comment: 获取商户登录状态
+ * Author: zzw
+ * Date: 2019/10/30 17:08
+ */
+ public function getLoginStatus() {
+ global $_W, $_GPC;
+ #1、参数获取
+ $onlyKey = $_GPC['only_key'] OR Commons::sRenderError('请刷新重试');
+ #2、获取当前用户的扫描状态
+ $loginInfo = json_decode(Cache::getCache('storeLoginInfo', $onlyKey), true);
+ #3、判断储存内容是否正确
+ if (!is_array($loginInfo)) Commons::sRenderSuccess('登录状态', ['status' => intval(-3)]);
+ #4、判断是否过期
+ if ($loginInfo['end_time'] <= time()) Commons::sRenderSuccess('登录状态', ['status' => intval(-3)]);
+
+ if ($loginInfo['status'] == 2) {
+ $cookie = array();
+ $cookie['mid'] = $loginInfo['mid'];
+ $cookie['uniacid'] = $_W['uniacid'];
+ $session = base64_encode(json_encode($cookie));
+ isetcookie('__wlstore_session', $session, 7 * 86400, true);
+ }
+
+ Commons::sRenderSuccess('登录状态', ['status' => intval($loginInfo['status']), 'mid' => intval($loginInfo['mid'])]);
+ }
+ /**
+ * Comment: 通过用户mid获取用户名下的所有店铺
+ * Author: zzw
+ * Date: 2019/10/31 14:43
+ */
+ public function storeLogin() {
+ global $_W, $_GPC;
+ #1、获取当前用户的所有店铺列表
+ $list = pdo_fetchall("SELECT a.name,b.id,b.storename,b.logo,b.endtime,a.ismain FROM "
+ . tablename(PDO_NAME . "merchantuser") . " as a RIGHT JOIN " . tablename(PDO_NAME . "merchantdata")
+ . " as b ON a.storeid = b.id WHERE a.mid = {$_W['mid']} AND a.enabled = 1 AND b.enabled = 1 AND a.ismain != 2 GROUP BY a.storeid ORDER BY a.createtime ASC ");
+ #1、循环处理商户信息
+ if (empty($list)) {
+ wl_message("您没有可管理商户", web_url('user/storelogin/storeLogin', ['mid' => $_W['mid']]), 'fixed');
+ }
+ //检测认证功能
+ if(p('attestation')){
+ $attset = Setting::wlsetting_read('attestation');
+ }else{
+ $attset = [];
+ }
+
+ foreach ($list as $key => &$val) {
+ //处理logo图
+ $val['logo'] = tomedia($val['logo']);
+ //处理店铺到期时间
+ $val['endtime'] = $val['endtime'] > time() ? floor(($val['endtime']-time())/86400) . '天后到期' : '已到期';
+ //处理店员类型
+ if ($val['ismain'] == 1) {
+ $val['ismain'] = '店长';
+ } else if ($val['ismain'] == 3) {
+ $val['ismain'] = '管理员';
+ } else if ($val['ismain'] == 4) {
+ $val['ismain'] = '业务员';
+ }
+ //认证
+ if($attset['attmanage'] == 1){
+ $attestation = Attestation::checkAttestation(2,$val['id']);
+ if($attestation['attestation'] != 2){
+ $val['noatt'] = 1;
+ }
+ }
+
+ }
+
+ include wl_template('user/select_shop');
+ }
+
+ public function on_store() {
+ global $_W, $_GPC;
+ $this->select_store(intval($_GPC['sid']));
+ }
+
+ public function logout() {
+ isetcookie('__wlstore_session', '', -10000);
+ isetcookie('__wlstoreid_session', '', -10000);
+ header('Location:' . web_url('user/storelogin/store_login'));
+ }
+
+ private function select_store($storeid) {
+ isetcookie('__wlstoreid_session', $storeid, 7 * 86400, true);
+ header('Location:' . web_url('dashboard/dashboard'));
+ }
+}
diff --git a/addons/weliam_smartcity/web/controller/utility/attachment.ctrl.php b/addons/weliam_smartcity/web/controller/utility/attachment.ctrl.php
new file mode 100644
index 0000000..3c7c617
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/utility/attachment.ctrl.php
@@ -0,0 +1,372 @@
+ $uniacid ,
+ 'mimetype like' => "%{$mimeType}%" ,
+ ];
+ if ($group_id > 0) $where['group_id'] = $group_id;
+ if ($shop_id > 0) $where['shop_id'] = $shop_id;
+ if ($shop_id < 0) $where['shop_id'] = 0;
+ if ($aid > 0) $where['aid'] = $aid;
+ //分页操作
+ $limit = [$page,$pageIndex];
+ //列表信息获取
+ $field = ['id','aid','shop_id','url','imagewidth','imageheight','filesize','uploadtime','storage','name'];
+ $list = pdo_getall(PDO_NAME.'attachment',$where,$field,'','id DESC',$limit);
+ foreach($list as $key => &$val){
+ //获取上传方信息
+ if($val['aid'] > 0) $val['upload_user'] = pdo_getcolumn(PDO_NAME."agentusers",['id'=>$val['aid']],'agentname');
+ if($val['shop_id'] > 0) $val['upload_user'] = pdo_getcolumn(PDO_NAME."merchantdata",['id'=>$val['shop_id']],'storename');
+ //处理基本信息
+ $val['http_url'] = tomedia($val['url']);//附件地址
+ $val['filesize'] = sprintf("%.2f",$val['filesize'] / 1024);//附件大小 精确到M
+ $val['uploadtime'] = date("Y-m-d H:i:s",$val['uploadtime']);//附件大小 精确到M
+ //删除多余的信息
+ unset($val['aid'],$val['shop_id']);
+ }
+ //生成分页数据
+ $total = pdo_count(PDO_NAME.'attachment',$where);
+ $totalPage = ceil($total / $pageIndex);
+
+
+ Commons::sRenderSuccess('附件信息列表',['list'=>$list,'total_page'=>$totalPage]);
+ }
+
+ include wl_template('utility/attachment_index');
+ }
+ /**
+ * Comment: 文件上传
+ * Author: zzw
+ * Date: 2020/8/28 16:44
+ * @throws Exception
+ */
+ public function uploadFile(){
+ global $_W,$_GPC;
+ //基本参数信息获取
+ $params = [
+ 'uniacid' => $_W['uniacid'] ,
+ 'aid' => $_W['aid'] ? : 0 ,
+ 'shop_id' => $_W['storeid'] ? : 0 ,
+ 'group_id' => intval($_GPC['group_id']) ? : 0 ,
+ 'filesize' => $_FILES['file']['size'] ,
+ 'mimetype' => $_FILES['file']['type'] ,
+ 'name' => $_FILES['file']['name'] ,
+ ];
+
+ UploadFile::uploadIndex($_FILES,1,0,$params);
+ }
+ /**
+ * Comment: 删除附件信息
+ * Author: zzw
+ * Date: 2020/8/31 13:51
+ */
+ public function delAttachment(){
+ global $_W,$_GPC;
+ //基本参数信息获取
+ $ids = $_GPC['ids'] OR Commons::sRenderError('参数错误,请刷新重试!');
+ //循环处理判断图片信息
+ if(is_array($ids)){
+ foreach($ids as $id){
+ $this->delAttachmentFile($id);
+ }
+ }else{
+ $this->delAttachmentFile($ids);
+ }
+ //删除信息
+ if(pdo_delete(PDO_NAME."attachment",['id IN'=>$ids])) Commons::sRenderSuccess('删除成功');
+ else Commons::sRenderError('删除失败,请刷新重试!');
+ }
+ /**
+ * Comment: 删除附件信息的同时删除本地文件信息
+ * Author: zzw
+ * Date: 2020/12/7 14:54
+ * @param $id
+ */
+ public function delAttachmentFile($id){
+ global $_W;
+ //判断附件是否储存在本地
+ $info = pdo_get(PDO_NAME."attachment",['id'=>$id],['storage','url']);
+ if($info['storage'] == 0){
+ $fullName = PATH_ATTACHMENT . $info['url'];//文件在本地服务器暂存地址
+
+ unlink($fullName);
+ }
+ }
+ /**
+ * Comment: 移动附件到其他分组
+ * Author: zzw
+ * Date: 2020/9/1 11:06
+ */
+ public function moveAttachment(){
+ global $_W,$_GPC;
+ //参数信息获取
+ $ids = $_GPC['ids'] OR Commons::sRenderError("未选择附件,请重试!");
+ $group_id = $_GPC['group_id'] OR Commons::sRenderError("不存在的分组!");
+ //移动操作
+ pdo_update(PDO_NAME."attachment",['group_id'=>$group_id],['id IN'=>$ids]);
+
+ Commons::sRenderSuccess("操作成功");
+ }
+ /**
+ * Comment: 获取分组列表信息
+ * Author: zzw
+ * Date: 2020/8/28 17:31
+ */
+ public function groupIndex(){
+ global $_W,$_GPC;
+ //基本参数信息获取
+ $mimeType = $_GPC['mime_type'] ? : 'image';//附件类型:image、video、application
+ $shop_id = intval($_W['storeid']) ? : 0;
+ $aid = intval($_W['aid']) ? : 0;
+ $uniacid = $_W['uniacid'];
+ //条件生成 总后可以查看所有图片但是只能查看总后台的分组
+ $type = $this->groupValueTransformation($mimeType);
+ $where = [
+ 'uniacid' => $uniacid ,
+ 'type' => $type ,
+ 'shop_id' => $shop_id ,
+ 'aid' => $aid ,
+ ];
+// if ($shop_id > 0) $where['shop_id'] = $shop_id;
+// if ($aid > 0) $where['aid'] = $aid;
+ //列表信息获取
+ $list = pdo_getall(PDO_NAME."attachment_group",$where,['id','name'],'','id DESC');
+
+ Commons::sRenderSuccess('分组信息',$list);
+ }
+ /**
+ * Comment: 添加分组
+ * Author: zzw
+ * Date: 2020/8/28 16:57
+ */
+ public function groupAdd(){
+ global $_W , $_GPC;
+ //信息获取
+ $name = $_GPC['name'] OR Commons::sRenderError('请输入组名称!');
+ $mimeType = $_GPC['mime_type'] ? : 'image';//附件类型:image、video、application
+ $shop_id = $_W['storeid'];
+ $aid = $_W['aid'];
+ $uniacid = $_W['uniacid'];
+ //条件生成 分组类型:1=图片,2=视频,3=文件
+ $type = $this->groupValueTransformation($mimeType);
+ $where = [
+ 'name' => $name,
+ 'uniacid' => $uniacid ,
+ 'type' => $type ,
+ ];
+ if ($shop_id > 0) $where['shop_id'] = $shop_id;
+ if ($aid > 0) $where['aid'] = $aid;
+ //判断是否已经存在
+ $isHave = pdo_get(PDO_NAME . "attachment_group" , $where);
+ if ($isHave) Commons::sRenderError('分组已存在!');
+ //添加操作
+ $data = [
+ 'uniacid' => $uniacid ,
+ 'aid' => $aid ,
+ 'shop_id' => $shop_id ,
+ 'type' => $type ,
+ 'name' => $name ,
+ ];
+ pdo_insert(PDO_NAME."attachment_group",$data);
+
+ Commons::sRenderSuccess('添加成功');
+ }
+ /**
+ * Comment: 编辑组信息
+ * Author: zzw
+ * Date: 2020/8/28 18:35
+ */
+ public function groupEdit(){
+ global $_W , $_GPC;
+ //信息获取
+ $id = $_GPC['id'] OR Commons::sRenderError('参数错误,请刷新重试!');
+ $name = $_GPC['name'] OR Commons::sRenderError('请输入组名称!');
+ $mimeType = $_GPC['mime_type'] ? : 'image';//附件类型:image、video、application
+ $shop_id = $_W['storeid'];
+ $aid = $_W['aid'];
+ $uniacid = $_W['uniacid'];
+ //条件生成 分组类型:1=图片,2=视频,3=文件
+ $type = $this->groupValueTransformation($mimeType);
+ $where = [
+ 'name' => $name,
+ 'uniacid' => $uniacid ,
+ 'type' => $type ,
+ ];
+ if ($shop_id > 0) $where['shop_id'] = $shop_id;
+ if ($aid > 0) $where['aid'] = $aid;
+ //判断是否已经存在
+ $isHave = pdo_get(PDO_NAME . "attachment_group" , $where);
+ if ($isHave) Commons::sRenderError('分组已存在!');
+ //修改操作
+ pdo_update(PDO_NAME."attachment_group",['name'=>$name],['id'=>$id]);
+
+ Commons::sRenderSuccess('修改成功');
+ }
+ /**
+ * Comment: 删除分组
+ * Author: zzw
+ * Date: 2020/8/28 18:08
+ */
+ public function groupDelete(){
+ global $_W,$_GPC;
+ //参数信息获取
+ $id = $_GPC['id'] OR Commons::sRenderError('参数错误,请刷新重试!');
+ //删除信息
+ pdo_delete(PDO_NAME."attachment_group",['id'=>$id]);
+
+ Commons::sRenderSuccess('删除成功');
+ }
+ /**
+ * Comment: 导入微擎图片信息
+ * Author: zzw
+ * Date: 2020/8/31 16:49
+ */
+ public function importAttachment(){
+ global $_W,$_GPC;
+ //获取微擎图片信息
+ $list = Cache::getCache('import_attachment','list');
+ if(!$list){
+ $field = ['filename','attachment','type','createtime','module_upload_dir','group_id'];
+ $where = ['uniacid'=>$_W['uniacid'],'type'=>1];
+ $list = table('core_attachment')
+ ->select($field)
+ ->where($where)
+ ->getall();
+ Cache::setCache('import_attachment','list',json_encode($list));
+ }else{
+ $list = json_decode($list,true);
+ }
+ //循环储存附件信息 一次最多50条
+ $index = 0;
+ $tips = true;
+ (new MysqlFunction())->startTrans();//开启事务
+ foreach($list as $key => $value){
+ //到达限制 跳出循环
+ if(++$index > 50) break;
+ //判断附件是否已经存在
+ $isHave = pdo_get(PDO_NAME."attachment",['url'=>$value['attachment']]);
+ if($isHave) {
+ //已经存在当前图片 跳出当前循环
+ unset($list[$key]);
+ continue;
+ }
+ //获取图片基本信息
+ $params = [
+ 'uniacid' => $_W['uniacid'] ,
+ 'aid' => $_W['aid'] ,
+ 'url' => $value['attachment'] ,
+ 'name' => $value['filename'] ,
+ 'uploadtime' => $value['createtime'] ,
+ 'mimetype' => 'image' ,
+ ];
+ $url = tomedia($value['attachment']);
+ list($params['imagewidth'] , $params['imageheight']) = getimagesize($url);//基本参数获取
+ $nameArr = explode('.' , $value['attachment']);
+ $params['suffix'] = $nameArr[count($nameArr) - 1];
+ //储存图片信息
+ $res = pdo_insert(PDO_NAME."attachment",$params);
+ if(!$res){
+ (new MysqlFunction())->rollback();
+ $tips = false;
+ break;
+ }else{
+ unset($list[$key]);
+ }
+ }
+ //步骤完成 进行其他操作
+ if($tips){
+ //操作成功
+ (new MysqlFunction())->commit();
+ if(count($list) > 0){
+ $list = array_values($list);
+ Cache::setCache('import_attachment','list',json_encode($list));
+ }else{
+ Cache::deleteCache('import_attachment','list');
+ }
+
+ Commons::sRenderSuccess('操作成功',['surplus'=>count($list)]);
+ }else{
+ //操作失败
+ Commons::sRenderSuccess('操作失败');
+ }
+ }
+ /**
+ * Comment: 文件mimetype信息转换 字符串转code
+ * Author: zzw
+ * Date: 2020/8/28 17:03
+ * @param $mimeType
+ * @return int
+ */
+ protected function groupValueTransformation($mimeType){
+ $type = 1;
+ switch ($mimeType) {
+ case 'image':
+ $type = 1;
+ break;
+ case 'video':
+ $type = 2;
+ break;
+ case 'application':
+ $type = 3;
+ break;
+ }
+
+ return $type;
+ }
+ /**
+ * Comment: 获取代理商列表
+ * Author: zzw
+ * Date: 2020/9/23 11:05
+ */
+ public function getAgentList(){
+ global $_W,$_GPC;
+ $field = ['id','agentname'];
+ $list = pdo_getall(PDO_NAME."agentusers",['uniacid'=>$_W['uniacid']],$field);
+
+ Commons::sRenderSuccess('代理商列表',['list'=>$list]);
+ }
+ /**
+ * Comment: 获取店铺信息列表
+ * Author: zzw
+ * Date: 2020/9/23 11:16
+ */
+ public function getShopList(){
+ global $_W,$_GPC;
+ $aid = $_GPC['aid'] ? : $_W['aid'];
+ $field = ['id','storename'];
+ $list = pdo_getall(PDO_NAME."merchantdata",['uniacid'=>$_W['uniacid'],'aid'=>$aid],$field);
+
+ Commons::sRenderSuccess('店铺信息列表',['list'=>$list]);
+ }
+
+
+
+
+}
diff --git a/addons/weliam_smartcity/web/controller/utility/member.ctrl.php b/addons/weliam_smartcity/web/controller/utility/member.ctrl.php
new file mode 100644
index 0000000..6396970
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/utility/member.ctrl.php
@@ -0,0 +1,21 @@
+ $member['id'], 'text' => $member['nickname'].'(MID:'. $member['id'].')'.($member['mobile'] ? ' - ' . $member['mobile'] : '')];
+ }
+ die(json_encode($data));
+ }
+}
\ No newline at end of file
diff --git a/addons/weliam_smartcity/web/controller/utility/qrcode.ctrl.php b/addons/weliam_smartcity/web/controller/utility/qrcode.ctrl.php
new file mode 100644
index 0000000..f25bb7b
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/utility/qrcode.ctrl.php
@@ -0,0 +1,21 @@
+png($url, false, QR_ECLEVEL_H, 4);
+ }
+
+}
\ No newline at end of file
diff --git a/addons/weliam_smartcity/web/controller/utility/select.ctrl.php b/addons/weliam_smartcity/web/controller/utility/select.ctrl.php
new file mode 100644
index 0000000..f633332
--- /dev/null
+++ b/addons/weliam_smartcity/web/controller/utility/select.ctrl.php
@@ -0,0 +1,721 @@
+ &$v) {
+ $v['url'] = h5_url('pages/mainPages/store/index' , ['sid' => $v['id']]);
+ $v['page_path'] = 'pages/mainPages/store/list';
+ $v['logo'] = tomedia($v['logo']);
+ $storehours = unserialize($v['storehours']);
+ $v['storehours'] = $storehours['startTime'] . '-' . $storehours['endTime'];
+ unset($v['id']);
+ }
+ $data['page'] = $page;
+ $data['pageNum'] = $pageNum;
+ $data['total'] = $shop_total;
+ $data['list'] = $shop;
+ $data['search'] = $search;
+
+ //获取将要规避的url字符串信息
+ $string = 'h5/#/';
+ $urlStr = trim(json_encode(explode($string , h5_url(''))[0] . $string) , '"');
+ //将要规避的ulr字符串替换为空
+ $data = json_decode(str_replace($urlStr , '' , json_encode($data)) , true);
+
+ wl_json(1 , '商户分页信息' , $data);
+ }
+ /**
+ * Comment: 获取商品信息
+ * Author: zzw
+ */
+ public function getGoods()
+ {
+ global $_W , $_GPC;
+ $search = $_GPC['search'] ? $_GPC['search'] : '';
+ $page = $_GPC['page'];
+ $pageNum = $_GPC['pageNum'];
+ $limit = ' LIMIT ' . ($page * $pageNum - $pageNum) . ',' . $pageNum;
+ $type = $_GPC['type'];
+ $where = " aid = {$_W['aid']} AND uniacid = {$_W['uniacid']} ";
+ switch ($type) {
+ case 1:
+ if ($search) {
+ $where .= " AND name LIKE '%{$search}%' ";
+ }
+ $info = pdo_fetchall(" SELECT id,name,thumb FROM " . tablename(PDO_NAME . "rush_activity") . " WHERE status IN (1,2) AND {$where} {$limit}");
+ $infoTotal = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename(PDO_NAME . 'rush_activity') . " WHERE status IN (1,2) AND {$where}");
+ foreach ($info as $k => &$v) {
+ $v['url'] = h5_url('pages/subPages/goods/index' , ['id' => $v['id'] , 'type' => 1]);
+ $v['page_path'] = 'pages/subPages/goods/index?type=1';
+ $v['logo'] = tomedia($v['thumb']);
+ unset($v['id']);
+ }
+ break;//抢购商品
+ case 2:
+ if ($search) {
+ $where .= " AND name LIKE '%{$search}%' ";
+ }
+ $info = pdo_fetchall(" SELECT id,name,thumb FROM " . tablename(PDO_NAME . "groupon_activity") . " WHERE status IN (1,2) AND {$where} {$limit}");
+ $infoTotal = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename(PDO_NAME . 'groupon_activity') . " WHERE status IN (1,2) AND {$where}");
+ foreach ($info as $k => &$v) {
+ $v['url'] = h5_url('pages/subPages/goods/index' , ['id' => $v['id'] , 'type' => 2]);
+ $v['page_path'] = 'pages/subPages/goods/index?type=2';
+ $v['logo'] = tomedia($v['thumb']);
+ unset($v['id']);
+ }
+ break;//团购商品
+ case 3:
+ if ($search) {
+ $where .= " AND name LIKE '%{$search}%' ";
+ }
+ $info = pdo_fetchall(" SELECT id,name,logo FROM " . tablename(PDO_NAME . "fightgroup_goods") . " WHERE status IN (1,2) AND {$where} {$limit}");
+ $infoTotal = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename(PDO_NAME . 'fightgroup_goods') . " WHERE status IN (1,2) AND {$where}");
+ foreach ($info as $k => &$v) {
+ $v['url'] = h5_url('pages/subPages/goods/index' , ['id' => $v['id'] , 'type' => 3]);
+ $v['page_path'] = 'pages/subPages/goods/index?type=3';
+ $v['logo'] = tomedia($v['logo']);
+ unset($v['id']);
+ }
+ break;//拼团商品
+ case 5:
+ $where .= " AND status IN (1,2) ";
+ if ($search) {
+ $where .= " AND title LIKE '%{$search}%' ";
+ }
+ $info = pdo_fetchall(" SELECT id,title,logo FROM " . tablename(PDO_NAME . "couponlist") . " WHERE {$where} {$limit}");
+ $infoTotal = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename(PDO_NAME . 'couponlist') . " WHERE {$where}");
+ foreach ($info as $k => &$v) {
+ $v['url'] = h5_url('pages/subPages/goods/index' , ['id' => $v['id'] , 'type' => 5]);
+ $v['page_path'] = 'pages/subPages/goods/index?type=5';
+ $v['name'] = $v['title'];
+ $v['logo'] = tomedia($v['logo']);
+ unset($v['id']);
+ unset($v['title']);
+ }
+ break;//卡券信息
+ case 6:
+ if ($search) {
+ $where .= " AND name LIKE '%{$search}%' ";
+ }
+ $info = pdo_fetchall(" SELECT id,name,thumb FROM " . tablename(PDO_NAME . "bargain_activity") . " WHERE status IN (1,2) AND {$where} {$limit}");
+ $infoTotal = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE status IN (1,2) AND {$where}");
+ foreach ($info as $k => &$v) {
+ $v['url'] = h5_url('pages/subPages/goods/index' , ['id' => $v['id'] , 'type' => 7]);
+ $v['page_path'] = 'pages/subPages/goods/index?type=7';
+ $v['logo'] = tomedia($v['thumb']);
+ unset($v['id']);
+ unset($v['title']);
+ }
+ break;//砍价信息
+ }
+
+ $data['page'] = $page;
+ $data['pageNum'] = $pageNum;
+ $data['total'] = $infoTotal;
+ $data['list'] = $info;
+ $data['search'] = $search;
+
+ //获取将要规避的url字符串信息
+ $string = 'h5/#/';
+ $urlStr = trim(json_encode(explode($string , h5_url(''))[0] . $string) , '"');
+ //将要规避的ulr字符串替换为空
+ $data = json_decode(str_replace($urlStr , '' , json_encode($data)) , true);
+
+ wl_json(1 , '商品信息' , $data);
+ }
+ /**
+ * Comment: 获取小图标信息
+ * Author: zzw
+ */
+ public function comicon()
+ {
+ global $_W , $_GPC;
+
+
+ include wl_template('utility/selecticon');
+ }
+ /**
+ * Comment: 根据状态获取商品信息
+ * Author: zzw
+ * @param $plugin 商品类型1=抢购 2=团购 3=拼团 5=优惠券
+ * @param $search 搜索内容
+ * @return array
+ */
+ protected function getGoodsReturn($plugin , $search,$sid = 0,$addWhere = [])
+ {
+ global $_W;
+ $where = " AND a.uniacid = {$_W['uniacid']} AND a.aid = {$_W['aid']} ";
+ if($sid > 0) $where .= " AND b.id = {$sid} ";
+ if($addWhere['is_optionstatus'] == 1) $where .= " AND a.optionstatus = 0 ";
+ if($addWhere['is_specstatus'] == 1) $where .= " AND a.specstatus = 0 ";
+ switch ($plugin) {
+ case 1:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','rush') as `plugin` FROM "
+ . tablename(PDO_NAME . "rush_activity")
+ . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata")
+ . " b ON a.sid = b.id WHERE a.status IN (1,2,3) {$where} AND b.storename != '' AND a.name LIKE '%{$search}%'");//
+ break;//抢购商品
+ case 2:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','groupon') as `plugin` FROM " . tablename(PDO_NAME . "groupon_activity") . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata") . " b ON a.sid = b.id WHERE a.status IN (1,2,3) {$where} AND b.storename != '' AND a.name LIKE '%{$search}%'");
+ break;//团购商品
+ case 3:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','wlfightgroup') as `plugin` FROM " . tablename(PDO_NAME . "fightgroup_goods") . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata") . " b ON a.merchantid = b.id WHERE a.status IN (1,2) {$where} AND b.storename != '' AND a.name LIKE '%{$search}%'");
+ break;//拼团商品
+ case 4:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','package') as `plugin` FROM " . tablename(PDO_NAME . "package") . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata") . " b ON a.merchantid = b.id WHERE a.status = 1 {$where} AND b.storename != '' AND a.title LIKE '%{$search}%'");
+ break;//大礼包
+ case 5:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','coupon') as `plugin` FROM " . tablename(PDO_NAME . "couponlist") . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata") . " b ON a.merchantid = b.id WHERE a.status IN (1,2) {$where} AND b.storename != '' AND a.title LIKE '%{$search}%'");
+ break;//优惠券
+ case 6:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','halfcard') as `plugin` FROM " . tablename(PDO_NAME . "halfcardlist") . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata") . " b ON a.merchantid = b.id WHERE a.status = 1 {$where} AND b.storename != '' AND a.title LIKE '%{$search}%'");
+ break;//折扣卡
+ case 7:
+ $goods = pdo_fetchall("SELECT a.id,REPLACE('table','table','bargain') as `plugin` FROM " . tablename(PDO_NAME . "bargain_activity") . " a LEFT JOIN " . tablename(PDO_NAME . "merchantdata") . " b ON a.sid = b.id WHERE a.status IN (1,2,3) {$where} AND b.storename != '' AND a.name LIKE '%{$search}%'");
+ break;//砍价
+ }
+ return $goods;
+ }
+ /**
+ * Comment: 获取全部商品信息
+ * Author: zzw
+ * Date: 2019/7/9 17:50
+ */
+ public function getWholeGoods()
+ {
+ global $_W , $_GPC;
+ $plugin = 0;//商品类型 0=全部 1=抢购 2=团购 3=拼团 4=大礼包 5=优惠券 6=折扣卡 7=砍价商品
+ $search = $_GPC['search'];//搜索内容 商品名称
+ $isOptionstatus = intval($_GPC['is_optionstatus']) ? intval($_GPC["is_optionstatus"]) : 0;//是否只获取单规格商品0=不,1=是
+ $page = $_GPC['page'] ? $_GPC['page'] : 1;
+ $pageNum = $_GPC['pageNum'] ? $_GPC['pageNum'] : 7;
+ $geturl = $_GPC['geturl'] ? $_GPC['geturl'] : 0;
+ $sid = $_GPC['sid']? $_GPC['sid'] : 0;
+ $start = $page * $pageNum - $pageNum;
+ //获取商品信息
+ $rush = self::getGoodsReturn(1 , $search , $sid,['is_optionstatus' => $isOptionstatus]);//抢购商品
+ $groupon = self::getGoodsReturn(2 , $search , $sid,['is_optionstatus' => $isOptionstatus]);//团购商品
+ $wlfightgroup = self::getGoodsReturn(3 , $search , $sid,['is_specstatus' => $isOptionstatus]);//拼团商品
+ $coupon = self::getGoodsReturn(5 , $search , $sid);//优惠券
+ $bargain = self::getGoodsReturn(7 , $search , $sid);//砍价
+ $goods = array_merge($rush , $groupon , $wlfightgroup , $coupon , $bargain);
+ if (!$goods) {
+ $popup = '暂无该类型商品';
+ include wl_template('utility/selecetgoods');
+ die;
+ }
+ //获取总页数 进行分页
+ $totalPgae = ceil(count($goods) / $pageNum);
+ $goods = array_slice($goods , $start , $pageNum);
+ //只有抢购、团购、拼团、优惠券才会进行下面的操作
+ $initPlugin = $plugin;
+ foreach ($goods as $k => &$v) {
+ //查询全部商品时 每个商品从新定义内容
+ if ($initPlugin == 0) {
+ switch ($v['plugin']) {
+ case 'rush':
+ $plugin = 1;
+ break;//抢购商品
+ case 'groupon':
+ $plugin = 2;
+ break;//团购商品
+ case 'wlfightgroup':
+ $plugin = 3;
+ break;//拼团商品
+ case 'coupon':
+ $plugin = 5;
+ break;//优惠券
+ case 'bargain':
+ $plugin = 7;
+ break;//砍价商品
+ }
+ }
+ $v = WeliamWeChat::getHomeGoods($plugin , $v['id']);
+ //获取商品详情页面的跳转地址
+ if ($geturl == 1) {
+ switch ($plugin) {
+ case 1:
+ $v['detail_url'] = h5_url('pages/subPages/goods/index' , ['id' => $v['id'] , 'type' => 1]);
+ $v['page_path'] = 'pages/subPages/goods/index?type=1';
+ break;//抢购商品
+ case 2:
+ $v['detail_url'] = h5_url('pages/subPages/goods/index' , ['id' => $v['id'] , 'type' => 2]);
+ $v['page_path'] = 'pages/subPages/goods/index?type=2';
+ break;//团购商品
+ case 3:
+ $v['detail_url'] = h5_url('pages/subPages/goods/index' , ['id' => $v['id'] , 'type' => 3]);
+ $v['page_path'] = 'pages/subPages/goods/index?type=3';
+ break;//拼团商品
+ case 5:
+ $v['detail_url'] = h5_url('pages/subPages/goods/index' , ['id' => $v['id'] , 'type' => 5]);
+ $v['page_path'] = 'pages/subPages/goods/index?type=5';
+ break;//优惠券
+ case 7:
+ $v['detail_url'] = h5_url('pages/subPages/goods/index' , ['id' => $v['id'] , 'type' => 7]);
+ $v['page_path'] = 'pages/subPages/goods/index?type=7';
+ break;//砍价商品
+ }
+ }
+ }
+
+ include wl_template('utility/selecetgoods');
+ }
+ /**
+ * Comment: 用户选择器
+ * Author: zzw
+ * Date: 2019/11/29 17:30
+ */
+ public function selectUserInfo(){
+ global $_W , $_GPC;
+ #1、参数获取
+ $getType = $_GPC['get_type'] ? : 'main';//main=主要信息;list=仅列表信息
+ $search = $_GPC['search'] ? : '';
+ $params = $_GPC['params'] ? : '';// data-params='{"is_salesman":1}'>
+ $list = [];
+ if (!empty($search)) {
+ #1、条件生成
+ $where = " WHERE uniacid = {$_W['uniacid']} and identity_id = 1";
+ $where .= " AND ( nickname LIKE '%{$search}%' OR id = '{$search}' OR realname LIKE '%{$search}%' OR mobile LIKE '%{$search}%' )";
+ $params = json_decode(base64_decode($params),true);
+ if($params){
+ //获取业务员信息
+ if($params['is_salesman'] == 1){
+ $members = pdo_getall(PDO_NAME.'distributor', ['uniacid' => $_W['uniacid'], 'disflag' => 1], ['mid']);
+ $ids = implode(array_column($members,'mid'),',');
+ $where .= " AND id IN ($ids) ";
+ }
+ }
+ # 限制用户申请企业变更过程中的用户,不得申请
+ $midArr = Member::applyChangeInentityUser();
+ if ($midArr) $where .= " AND id not in (".implode(",",$midArr).") ";
+ #2、获取用户信息
+ $field = " id,nickname,avatar,realname,mobile,openid,wechat_openid,webapp_openid ";
+ $list = pdo_fetchall(" SELECT {$field} FROM " . tablename(PDO_NAME . "member") . $where . " ORDER BY createtime ASC LIMIT 0,30 ");
+ }
+
+ $params = base64_encode(json_encode($_GPC['params']));
+
+
+ include wl_template($getType == 'main' ? 'utility/select_user' : 'utility/select_user_tpl');
+ }
+ /**
+ * Comment: 商户选择器
+ * Author: zzw
+ * Date: 2020/12/1 17:14
+ */
+ public function selectShopInfo(){
+ global $_W , $_GPC;
+ #1、参数获取
+ $getType = $_GPC['get_type'] ? : 'main';//main=主要信息;list=仅列表信息
+ $search = $_GPC['search'] ? : '';
+ $params = $_GPC['params'] ? : '';// data-params='{"is_salesman":1}'>
+ if (!empty($search)) {
+ #1、条件生成
+ $where = " WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} ";
+ $where .= " AND ( storename LIKE '%{$search}%' OR id = '{$search}' OR mobile LIKE '%{$search}%' )";
+ $params = json_decode(base64_decode($params),true);
+ if($params){
+
+
+ }
+ #2、获取商户信息
+ $field = " id,storename,mobile,logo,address";
+ $order = " ORDER BY createtime ASC LIMIT 0,30 ";
+ $sql = " SELECT {$field} FROM " . tablename(PDO_NAME . "merchantdata");
+ $list = pdo_fetchall($sql.$where.$order);
+ }
+ $params = base64_encode(json_encode($_GPC['params']));
+
+
+ include wl_template($getType == 'main' ? 'utility/select_shop' : 'utility/select_shop_tpl');
+ }
+ /**
+ * Comment: 获取图文抓取模板
+ * Author: zzw
+ * Date: 2019/12/24 16:08
+ */
+ public function importTextModel(){
+ global $_W,$_GPC;
+
+ include wl_template('utility/import');
+ }
+ /**
+ * Comment: 通过链接获取商品详情
+ * Author: zzw
+ * Date: 2019/12/24 14:51
+ */
+ public function importTextInfo(){
+ global $_W , $_GPC;
+ #1、参数获取
+ $url = $_GPC['url'] OR Commons::sRenderError("url错误!");
+ #2、抓取内容
+ $result = file_get_contents($url);
+ if (empty($result['contents'])) {
+ $result = (new GatherArticle())->get_caiji($url);
+ }
+ #2、抓取内容
+ if (!empty($result['contents'])) {
+ $result['contents'] = htmlspecialchars_decode($result['contents']);
+ Commons::sRenderSuccess('内容' , $result);
+ } else {
+ Commons::sRenderError('获取失败,请检查链接是否可用!');
+ }
+ }
+ /**
+ * Comment: 地图定位选择坐标
+ * Author: zzw
+ * Date: 2020/9/8 16:22
+ */
+ public function mapPositioning(){
+ global $_W,$_GPC;
+ //基本信息获取
+ $address = $_GPC['address'] ? : '';
+ $lat = $_GPC['lat'] ? : '39.90960456049752';
+ $lng = $_GPC['lng'] ? : '116.3972282409668';
+ $zoom = 12;
+ $tencentkey = $_W['wlsetting']['api']['txmapkey'];
+ if(!$address || !$lat || !$lng){
+ //未传递默认信息 则根据ip自动获取
+ $area = MapService::guide_ip($_W['clientip']);
+ if (!is_error($area)) {
+ $lat = $area['result']['location']['lat'];
+ $lng = $area['result']['location']['lng'];
+ $location = $area['result']['ad_info']['city'];
+ }
+ }else{
+ //通过经纬度获取城市信息
+ $area = MapService::guide_gcoder($lat . ',' . $lng , 0);
+ $location = $area['result']['ad_info']['city'];
+ }
+
+ include wl_template('utility/select_address');
+ }
+ /**
+ * Comment: 红包选择器 —— 红包列表
+ * Author: zzw
+ * Date: 2020/9/14 14:58
+ */
+ public function selectRedPack(){
+ global $_W,$_GPC;
+ //基本参数信息获取
+ $page = max(1 , intval($_GPC['page']));
+ $pageIndex = 10;
+ $pageStart = $page * $pageIndex - $pageIndex;
+ $title = trim($_GPC['name']) ? : '';
+ //获取红包列表信息
+ if($_W['ispost']){
+ //条件生成
+ $where = " WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND
+ CASE WHEN usetime_type = 0 AND use_end_time <= unix_timestamp(now()) THEN 2
+ ELSE status
+ END = 1";
+ if ($title) $where .= " AND title LIKE '%" . $title . "%'";
+ //sql语句生成
+ $field = "id,title,use_start_time,use_end_time,usetime_day1,usetime_day2,usetime_type,all_count,limit_count,full_money,cut_money";
+ $sql = "SELECT {$field} FROM ".tablename(PDO_NAME."redpacks");
+ $order = " ORDER BY createtime DESC ";
+ $limit = " LIMIT {$pageStart},{$pageIndex} ";
+ //信息获取
+ $list = pdo_fetchall($sql.$where.$order.$limit);
+ foreach ($list as $key => &$val) {
+ $usetimes = [
+ date('Y-m-d' , $val['use_start_time']) . ' ~ ' . date('Y-m-d' , $val['use_end_time']) ,
+ '领取当日起' . $val['usetime_day1'] . '天内有效' ,
+ '领取次日起' . $val['usetime_day2'] . '天内有效'
+ ];
+ $val['usetime_text'] = $usetimes[$val['usetime_type']];
+ $val['all_count'] = $val['all_count'] ? $val['all_count'] . '个' : '无限';
+ $val['limit_count'] = $val['limit_count'] ? $val['limit_count'] . '个' : '无限';
+ $val['get_count'] = pdo_getcolumn(PDO_NAME.'redpack_records' , ['packid' => $val['id']] , 'COUNT(id)');
+ //删除多余的信息
+ unset($val['use_start_time'],$val['use_end_time'],$val['usetime_day1'],$val['usetime_day2'],$val['usetime_type']);
+ }
+ //获取红包信息总数
+ $totalSql = str_replace($field,'count(*)',$sql);
+ $total = pdo_fetchcolumn($totalSql.$where);
+
+ Commons::sRenderSuccess('红包列表',['list'=>$list,'total'=>ceil($total / $pageIndex)]);
+ }
+
+ include wl_template('utility/select_red_pack');
+ }
+ /**
+ * Comment: 获取抽奖奖品信息列表
+ * Author: zzw
+ * Date: 2020/9/16 11:05
+ */
+ public function selectDrawPrize(){
+ global $_W,$_GPC;
+ if($_W['ispost']){
+ //基本参数信息获取
+ $page = max(1 , intval($_GPC['page']));
+ $pageIndex = 10;
+ $pageStart = $page * $pageIndex - $pageIndex;
+ $title = trim($_GPC['name']) ? : '';
+ //条件生成
+ $where = " WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']}";
+ if ($title) $where .= " AND title LIKE '%{$title}%'";
+ //基本sql语句生成 列表信息获取及处理
+ $field = "id,type,title,image,probability,status,day_number,total_number,create_time";
+ $sql = "SELECT {$field} FROM ".tablename(PDO_NAME."draw_goods");
+ $order = " ORDER BY create_time DESC,id DESC ";
+ $limit = " LIMIT {$pageStart},{$pageIndex} ";
+ $list = pdo_fetchall($sql.$where.$order.$limit);
+ foreach($list as $key => &$val){
+ //基本信息处理
+ $val['image'] = tomedia($val['image']);
+ $val['create_time'] = date("Y-m-d H:i:s",$val['create_time']);
+ //提供数量处理
+ $val['day_number'] = ($val['day_number'] == 0) ? '无限制' : $val['day_number']."份" ;
+ $val['total_number'] = ($val['total_number'] == 0) ? '无限制' : $val['total_number']."份" ;
+ }
+ //获取总数信息 数据分页信息获取
+ $totalSql = str_replace($field,'count(*)',$sql);
+ $total = pdo_fetchcolumn($totalSql.$where);
+
+ Commons::sRenderSuccess('抽奖奖品列表' , ['list' => $list , 'total' => ceil($total / $pageIndex)]);
+ }
+
+ include wl_template('utility/select_draw_prize');
+ }
+ /**
+ * Comment: 求职招聘 - 获取企业信息列表(企业选择器)
+ * Author: zzw
+ * Date: 2020/12/8 17:28
+ */
+ public function selectEnterprise(){
+ global $_W,$_GPC;
+ //参数信息获取
+ $search = $_GPC['search'];
+ $returnType = $_GPC['return_type'] ? : 'html';
+ //条件生成
+ $where = '';
+ if($search) $where = " AND (storename LIKE '%{$search}%' OR id LIKE '%{$search}%' OR mobile LIKE '%{$search}%') ";
+ $field = "id,logo,storename,recruit_nature_id,recruit_scale_id,recruit_industry_id,provinceid,areaid,distid";
+ $limit = " limit 0,30 ";
+ [$list,$total] = Recruit::getEnterpriseList($where,$field,'',$limit);
+ //信息返回
+ if($returnType == 'json') wl_json(1,'企业列表',$list);
+ //else wl_template('');
+ }
+ /**
+ * Comment: 求职招聘 - 获取招聘信息列表(招聘选择器)
+ * Author: zzw
+ * Date: 2020/12/9 15:36
+ */
+ public function selectRecruit(){
+ global $_W,$_GPC;
+ //参数信息获取
+ $page = $_GPC['page'] ? : 1;
+ $pageIndex = 10;
+ $pageStart = $page * $pageIndex - $pageIndex;
+ $search = $_GPC['search'];
+ $returnType = $_GPC['return_type'] ? : 'html';
+ //条件生成
+ $where = " AND status IN (4,5) ";
+ if($search) $where .= " AND title LIKE '%{$search}%' ";
+ $field = "id,title,recruitment_type,release_mid,release_sid,job_type,full_type,full_salary_min,full_salary_max,
+ welfare,part_type,part_salary,part_settlement,work_province,work_city,work_area,status,create_time,is_top";
+ $limit = " limit {$pageStart},{$pageIndex} ";
+ [$list,$total] = Recruit::getRecruitList($where,$field,'',$limit);
+ foreach($list as &$del){
+ unset($del['position_id'] , $del['release_mid'] , $del['release_sid'] , $del['full_type'] , $del['full_salary_min'] , $del['full_salary_max'] , $del['welfare'] , $del['part_type'] , $del['part_salary'] , $del['part_settlement'] , $del['work_province'] , $del['work_city'] , $del['work_area'] , $del['create_time']);
+ }
+ //信息返回
+ if($returnType == 'json') wl_json(1,'招聘列表',['list'=>$list,'page'=>$page,'page_number'=>ceil($total / $pageIndex)]);
+ //else wl_template('');
+ }
+ /**
+ * Comment: 求职招聘 - 获取简历信息列表(简历选择器)
+ * Author: zzw
+ * Date: 2020/12/10 11:07
+ */
+ public function selectResume(){
+ global $_W,$_GPC;
+ //参数信息获取
+ $page = $_GPC['page'] ? : 1;
+ $pageIndex = 10;
+ $search = $_GPC['search'];
+ $returnType = $_GPC['return_type'] ? : 'html';
+ //条件生成
+ $where = [];
+ if($search) $where['name LIKE'] .= "%{$search}%";
+ $field = [
+ 'id' ,
+ 'name' ,
+ 'phone' ,
+ 'avatar' ,
+ 'gender' ,
+ 'work_status' ,
+ 'experience_label_id' ,
+ 'education_label_id' ,
+ 'birth_time' ,
+ 'expect_position' ,
+ 'job_type' ,
+ 'expect_salary_min' ,
+ 'expect_salary_max' ,
+ 'expect_work_province',
+ 'expect_work_city',
+ 'expect_work_area'
+ ];
+ [$list,$total] = Recruit::getResumeList($where,$field,'id DESC',[$page,$pageIndex]);
+ foreach($list as &$del){
+ unset($del['work_status'],$del['experience_label_id'],$del['education_label_id'],$del['birth_time'],$del['expect_salary_min'],$del['expect_salary_max'], $del['expect_work_province'],$del['expect_work_city'],$del['expect_work_area'],$del['expect_position']);
+ }
+ //信息返回
+ if($returnType == 'json') wl_json(1,'招聘列表',['list'=>$list,'page'=>$page,'page_number'=>ceil($total / $pageIndex)]);
+ //else wl_template('');
+ }
+ /**
+ * Comment: 相亲交友 - 获取会员信息列表
+ * Author: zzw
+ * Date: 2021/3/17 17:05
+ */
+ public function selectDating(){
+ global $_W,$_GPC;
+ //参数信息获取
+ $page = $_GPC['page'] ? : 1;
+ $pageIndex = 10;
+ $pageStart = $page * $pageIndex - $pageIndex;
+ $search = $_GPC['search'];
+ //条件生成
+ $where = " WHERE a.uniacid = {$_W['uniacid']} ";
+ if($search) $where .= " AND (b.nickname LIKE '%{$search}%' OR a.real_name LIKE '%{$search}%')";
+ //列表信息获取
+ $field = "a.id,a.mid,a.gneder,a.birth,a.current_province,a.current_city,a.current_area,a.live,a.travel,a.pv,a.is_top,a.cover";
+ $order = " ORDER BY create_time DESC ";
+ $limit = " LIMIT {$pageStart},{$pageIndex} ";
+ $sql = "SELECT {$field} FROM ".tablename(PDO_NAME."dating_member")
+ ." as a LEFT JOIN ".tablename(PDO_NAME."member")
+ ." as b ON a.mid = b.id ";
+ $list = pdo_fetchall($sql.$where.$order.$limit);
+ foreach($list as &$item){
+ //获取用户信息
+ [$item['nickname'],$item['avatar']] = Dating::handleUserInfo($item['mid']);
+ //处理区域信息 只取最小一级
+ if ($item['current_area']) $item['area'] = pdo_getcolumn(PDO_NAME."area",['id' => $item['current_area']],'name');
+ else if ($item['current_city']) $item['area'] = pdo_getcolumn(PDO_NAME."area",['id' => $item['current_city']],'name');
+ else if ($item['current_province']) $item['area'] = pdo_getcolumn(PDO_NAME."area",['id' => $item['current_province']],'name');
+ //判断是否为vip
+ [$item['is_vip'],$numTime] = Dating::isVip($item['mid']);
+ //封面图
+ $item['cover'] = tomedia($item['cover']);
+ //年龄获取
+ $item['age'] = Dating::getAge(date("Y-m-d",$item['birth']));
+ //删除多余的信息
+ unset($item['birth'],$item['current_province'],$item['current_city'],$item['current_area']);
+ }
+ //总数获取
+ //获取总数信息 数据分页信息获取
+ $totalSql = str_replace($field,'count(*)',$sql);
+ $total = pdo_fetchcolumn($totalSql.$where);
+
+ //信息返回
+ wl_json(1,'招聘列表',['list'=>$list,'page'=>$page,'page_number'=>ceil($total / $pageIndex)]);
+ }
+ /**
+ * Comment: 家政服务选择器
+ * Author: zzw
+ * Date: 2021/4/30 17:47
+ */
+ public function selectHouseKeep(){
+ global $_W,$_GPC;
+ //参数信息获取
+ $page = $_GPC['page'] ? : 1;
+ $pageIndex = 10;
+ $search = $_GPC['search'];
+ //基本信息生成
+ $shopWhere = " AND enabled = 1 AND housekeepstatus = 1 ";
+ $artificerWhere = $demandWhere = $serviceWhere = " AND status = 1 ";
+ if($search){
+ //商户名称
+ $shopWhere .= " AND storename LIKE '%{$search}%' ";
+ //师傅姓名
+ $artificerWhere .= " AND name LIKE '%{$search}%' ";
+ //需求类型
+ $typeListSql = "SELECT id FROM ".tablename(PDO_NAME."housekeep_type")
+ ." WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND title LIKE '%{$search}%' ";
+ $typeList = pdo_fetchall($typeListSql);
+ if(count($typeList) > 0) {
+ $typeIds = array_column($typeList,'id');
+ $typeIds = implode($typeIds,',');
+ $demandWhere .= " AND type IN ({$typeIds}) ";
+ }else{
+ //无分类被查询出来 强制查询为空
+ $demandWhere .= " AND type = -1 ";
+ }
+ //服务标题
+ $serviceWhere .= " AND title LIKE '%{$search}%' ";
+ }
+ //获取列表信息
+ $data = Housekeep::getList(0,$page,$pageIndex,$shopWhere,$artificerWhere,$demandWhere,$serviceWhere);
+
+ //信息返回
+ wl_json(1,'服务列表',$data);
+ }
+
+
+
+
+
+
+
+}
diff --git a/addons/weliam_smartcity/web/resource/address/bootstrap.css b/addons/weliam_smartcity/web/resource/address/bootstrap.css
new file mode 100644
index 0000000..e26ae02
--- /dev/null
+++ b/addons/weliam_smartcity/web/resource/address/bootstrap.css
@@ -0,0 +1,6727 @@
+/*!
+ * Bootstrap v3.3.6 (http://getbootstrap.com)
+ * Copyright 2011-2015 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;
+ -ms-text-size-adjust: 100%;
+ -webkit-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 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+mark {
+ background: #ff0;
+ color: #000;
+}
+small {
+ font-size: 80%;
+}
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+sup {
+ top: -0.5em;
+}
+sub {
+ bottom: -0.25em;
+}
+img {
+ border: 0;
+}
+svg:not(:root) {
+ overflow: hidden;
+}
+figure {
+ margin: 1em 40px;
+}
+hr {
+ box-sizing: content-box;
+ height: 0;
+}
+pre {
+ overflow: auto;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit;
+ font: inherit;
+ margin: 0;
+}
+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 {
+ border: 0;
+ padding: 0;
+}
+input {
+ line-height: normal;
+}
+input[type="checkbox"],
+input[type="radio"] {
+ 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-appearance: textfield;
+ box-sizing: content-box;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+legend {
+ border: 0;
+ padding: 0;
+}
+textarea {
+ overflow: auto;
+}
+optgroup {
+ font-weight: bold;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+td,
+th {
+ padding: 0;
+}
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print {
+ *,
+ *:before,
+ *:after {
+ background: transparent !important;
+ color: #000 !important;
+ box-shadow: none !important;
+ text-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: 12px;
+ line-height: 1.42857143;
+ color: #333333;
+ background-color: #fff;
+}
+input,
+button,
+select,
+textarea {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+a {
+ color: #2c3e50;
+ text-decoration: none;
+}
+a:hover,
+a:focus {
+ color: #11181f;
+ text-decoration: underline;
+}
+a:focus {
+ outline: thin dotted;
+ 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: 5px;
+}
+.img-thumbnail {
+ padding: 4px;
+ line-height: 1.42857143;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 3px;
+ -webkit-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+ display: inline-block;
+ max-width: 100%;
+ height: auto;
+}
+.img-circle {
+ border-radius: 50%;
+}
+hr {
+ margin-top: 17px;
+ margin-bottom: 17px;
+ border: 0;
+ border-top: 1px solid #eeeeee;
+}
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ margin: -1px;
+ padding: 0;
+ 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: #777777;
+}
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3 {
+ margin-top: 17px;
+ margin-bottom: 8.5px;
+}
+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: 8.5px;
+ margin-bottom: 8.5px;
+}
+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: 31px;
+}
+h2,
+.h2 {
+ font-size: 25px;
+}
+h3,
+.h3 {
+ font-size: 21px;
+}
+h4,
+.h4 {
+ font-size: 15px;
+}
+h5,
+.h5 {
+ font-size: 12px;
+}
+h6,
+.h6 {
+ font-size: 11px;
+}
+p {
+ margin: 0 0 8.5px;
+}
+.lead {
+ margin-bottom: 17px;
+ font-size: 13px;
+ font-weight: 300;
+ line-height: 1.4;
+}
+@media (min-width: 768px) {
+ .lead {
+ font-size: 18px;
+ }
+}
+small,
+.small {
+ font-size: 91%;
+}
+mark,
+.mark {
+ background-color: #fcf8e3;
+ padding: .2em;
+}
+.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: #777777;
+}
+.text-primary {
+ color: #2c3e50;
+}
+a.text-primary:hover,
+a.text-primary:focus {
+ color: #1a242f;
+}
+.text-success {
+ color: #18bc9c;
+}
+a.text-success:hover,
+a.text-success:focus {
+ color: #128f76;
+}
+.text-info {
+ color: #3498db;
+}
+a.text-info:hover,
+a.text-info:focus {
+ color: #217dbb;
+}
+.text-warning {
+ color: #f39c12;
+}
+a.text-warning:hover,
+a.text-warning:focus {
+ color: #c87f0a;
+}
+.text-danger {
+ color: #e74c3c;
+}
+a.text-danger:hover,
+a.text-danger:focus {
+ color: #d62c1a;
+}
+.bg-primary {
+ color: #fff;
+ background-color: #2c3e50;
+}
+a.bg-primary:hover,
+a.bg-primary:focus {
+ background-color: #1a242f;
+}
+.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: 7.5px;
+ margin: 34px 0 17px;
+ border-bottom: 1px solid #eeeeee;
+}
+ul,
+ol {
+ margin-top: 0;
+ margin-bottom: 8.5px;
+}
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+ margin-bottom: 0;
+}
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+.list-inline {
+ padding-left: 0;
+ list-style: none;
+ margin-left: -5px;
+}
+.list-inline > li {
+ display: inline-block;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+dl {
+ margin-top: 0;
+ margin-bottom: 17px;
+}
+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;
+ clear: left;
+ text-align: right;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ .dl-horizontal dd {
+ margin-left: 180px;
+ }
+}
+abbr[title],
+abbr[data-original-title] {
+ cursor: help;
+ border-bottom: 1px dotted #777777;
+}
+.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+blockquote {
+ padding: 8.5px 17px;
+ margin: 0 0 17px;
+ font-size: 15px;
+ border-left: 5px solid #eeeeee;
+}
+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: #777777;
+}
+blockquote footer:before,
+blockquote small:before,
+blockquote .small:before {
+ content: '\2014 \00A0';
+}
+.blockquote-reverse,
+blockquote.pull-right {
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid #eeeeee;
+ border-left: 0;
+ text-align: right;
+}
+.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: 17px;
+ 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: 3px;
+}
+kbd {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #fff;
+ background-color: #333;
+ border-radius: 2px;
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+kbd kbd {
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+ box-shadow: none;
+}
+pre {
+ display: block;
+ padding: 8px;
+ margin: 0 0 8.5px;
+ font-size: 11px;
+ line-height: 1.42857143;
+ word-break: break-all;
+ word-wrap: break-word;
+ color: #333333;
+ background-color: #f5f5f5;
+ border: 1px solid #ccc;
+ border-radius: 3px;
+}
+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 {
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+@media (min-width: 768px) {
+ .container {
+ width: 750px;
+ }
+}
+@media (min-width: 992px) {
+ .container {
+ width: 970px;
+ }
+}
+@media (min-width: 1200px) {
+ .container {
+ width: 1170px;
+ }
+}
+.container-fluid {
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+.row {
+ margin-left: -15px;
+ margin-right: -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-left: 15px;
+ padding-right: 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: #777777;
+ text-align: left;
+}
+th {
+ text-align: left;
+}
+.table {
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: 17px;
+}
+.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;
+ float: none;
+ display: table-column;
+}
+table td[class*="col-"],
+table th[class*="col-"] {
+ position: static;
+ float: none;
+ display: table-cell;
+}
+.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 {
+ overflow-x: auto;
+ min-height: 0.01%;
+}
+@media screen and (max-width: 767px) {
+ .table-responsive {
+ width: 100%;
+ margin-bottom: 12.75px;
+ 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 {
+ padding: 0;
+ margin: 0;
+ border: 0;
+ min-width: 0;
+}
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 17px;
+ font-size: 18px;
+ line-height: inherit;
+ color: #333333;
+ 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: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+output {
+ display: block;
+ padding-top: 7px;
+ font-size: 12px;
+ line-height: 1.42857143;
+ color: #555555;
+}
+.form-control {
+ display: block;
+ width: 100%;
+ height: 31px;
+ padding: 6px 12px;
+ font-size: 12px;
+ line-height: 1.42857143;
+ color: #555555;
+ background-color: #fff;
+ background-image: none;
+ border: 1px solid #ccc;
+ border-radius: 3px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -webkit-transition: border-color ease-in-out .15s, 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, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.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 {
+ border: 0;
+ background-color: transparent;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+ background-color: #eeeeee;
+ 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: 31px;
+ }
+ 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: 28px;
+ }
+ 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: 42px;
+ }
+}
+.form-group {
+ margin-bottom: 15px;
+}
+.radio,
+.checkbox {
+ position: relative;
+ display: block;
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+.radio label,
+.checkbox label {
+ min-height: 17px;
+ 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-left: -20px;
+ margin-top: 4px \9;
+}
+.radio + .radio,
+.checkbox + .checkbox {
+ margin-top: -5px;
+}
+.radio-inline,
+.checkbox-inline {
+ position: relative;
+ display: inline-block;
+ padding-left: 20px;
+ margin-bottom: 0;
+ vertical-align: middle;
+ font-weight: normal;
+ 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 {
+ padding-top: 7px;
+ padding-bottom: 7px;
+ margin-bottom: 0;
+ min-height: 29px;
+}
+.form-control-static.input-lg,
+.form-control-static.input-sm {
+ padding-left: 0;
+ padding-right: 0;
+}
+.input-sm {
+ height: 28px;
+ padding: 5px 10px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 2px;
+}
+select.input-sm {
+ height: 28px;
+ line-height: 28px;
+}
+textarea.input-sm,
+select[multiple].input-sm {
+ height: auto;
+}
+.form-group-sm .form-control {
+ height: 28px;
+ padding: 5px 10px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 2px;
+}
+.form-group-sm select.form-control {
+ height: 28px;
+ line-height: 28px;
+}
+.form-group-sm textarea.form-control,
+.form-group-sm select[multiple].form-control {
+ height: auto;
+}
+.form-group-sm .form-control-static {
+ height: 28px;
+ min-height: 28px;
+ padding: 6px 10px;
+ font-size: 11px;
+ line-height: 1.5;
+}
+.input-lg {
+ height: 42px;
+ padding: 10px 16px;
+ font-size: 15px;
+ line-height: 1.3333333;
+ border-radius: 5px;
+}
+select.input-lg {
+ height: 42px;
+ line-height: 42px;
+}
+textarea.input-lg,
+select[multiple].input-lg {
+ height: auto;
+}
+.form-group-lg .form-control {
+ height: 42px;
+ padding: 10px 16px;
+ font-size: 15px;
+ line-height: 1.3333333;
+ border-radius: 5px;
+}
+.form-group-lg select.form-control {
+ height: 42px;
+ line-height: 42px;
+}
+.form-group-lg textarea.form-control,
+.form-group-lg select[multiple].form-control {
+ height: auto;
+}
+.form-group-lg .form-control-static {
+ height: 42px;
+ min-height: 32px;
+ padding: 11px 16px;
+ font-size: 15px;
+ line-height: 1.3333333;
+}
+.has-feedback {
+ position: relative;
+}
+.has-feedback .form-control {
+ padding-right: 38.75px;
+}
+.form-control-feedback {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ display: block;
+ width: 31px;
+ height: 31px;
+ line-height: 31px;
+ 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: 42px;
+ height: 42px;
+ line-height: 42px;
+}
+.input-sm + .form-control-feedback,
+.input-group-sm + .form-control-feedback,
+.form-group-sm .form-control + .form-control-feedback {
+ width: 28px;
+ height: 28px;
+ line-height: 28px;
+}
+.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: #18bc9c;
+}
+.has-success .form-control {
+ border-color: #18bc9c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.has-success .form-control:focus {
+ border-color: #128f76;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #51e9cb;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #51e9cb;
+}
+.has-success .input-group-addon {
+ color: #18bc9c;
+ border-color: #18bc9c;
+ background-color: #dff0d8;
+}
+.has-success .form-control-feedback {
+ color: #18bc9c;
+}
+.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: #f39c12;
+}
+.has-warning .form-control {
+ border-color: #f39c12;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.has-warning .form-control:focus {
+ border-color: #c87f0a;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f8c573;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f8c573;
+}
+.has-warning .input-group-addon {
+ color: #f39c12;
+ border-color: #f39c12;
+ background-color: #fcf8e3;
+}
+.has-warning .form-control-feedback {
+ color: #f39c12;
+}
+.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: #e74c3c;
+}
+.has-error .form-control {
+ border-color: #e74c3c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.has-error .form-control:focus {
+ border-color: #d62c1a;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f29f97;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f29f97;
+}
+.has-error .input-group-addon {
+ color: #e74c3c;
+ border-color: #e74c3c;
+ background-color: #f2dede;
+}
+.has-error .form-control-feedback {
+ color: #e74c3c;
+}
+.has-feedback label ~ .form-control-feedback {
+ top: 22px;
+}
+.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 {
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-top: 7px;
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+ min-height: 24px;
+}
+.form-horizontal .form-group {
+ margin-left: -15px;
+ margin-right: -15px;
+}
+@media (min-width: 768px) {
+ .form-horizontal .control-label {
+ text-align: right;
+ margin-bottom: 0;
+ padding-top: 7px;
+ }
+}
+.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: 15px;
+ }
+}
+@media (min-width: 768px) {
+ .form-horizontal .form-group-sm .control-label {
+ padding-top: 6px;
+ font-size: 11px;
+ }
+}
+.btn {
+ display: inline-block;
+ margin-bottom: 0;
+ font-weight: normal;
+ text-align: center;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ background-image: none;
+ border: 1px solid transparent;
+ white-space: nowrap;
+ padding: 6px 12px;
+ font-size: 12px;
+ line-height: 1.42857143;
+ border-radius: 3px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
+ outline: thin dotted;
+ 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 {
+ outline: 0;
+ background-image: none;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+ cursor: not-allowed;
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+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: #2c3e50;
+ border-color: #2c3e50;
+}
+.btn-primary:focus,
+.btn-primary.focus {
+ color: #fff;
+ background-color: #1a242f;
+ border-color: #000000;
+}
+.btn-primary:hover {
+ color: #fff;
+ background-color: #1a242f;
+ border-color: #161f29;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ color: #fff;
+ background-color: #1a242f;
+ border-color: #161f29;
+}
+.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: #0d1318;
+ border-color: #000000;
+}
+.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: #2c3e50;
+ border-color: #2c3e50;
+}
+.btn-primary .badge {
+ color: #2c3e50;
+ background-color: #fff;
+}
+.btn-success {
+ color: #fff;
+ background-color: #18bc9c;
+ border-color: #18bc9c;
+}
+.btn-success:focus,
+.btn-success.focus {
+ color: #fff;
+ background-color: #128f76;
+ border-color: #0a4b3e;
+}
+.btn-success:hover {
+ color: #fff;
+ background-color: #128f76;
+ border-color: #11866f;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ color: #fff;
+ background-color: #128f76;
+ border-color: #11866f;
+}
+.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: #0e6f5c;
+ border-color: #0a4b3e;
+}
+.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: #18bc9c;
+ border-color: #18bc9c;
+}
+.btn-success .badge {
+ color: #18bc9c;
+ background-color: #fff;
+}
+.btn-info {
+ color: #fff;
+ background-color: #3498db;
+ border-color: #3498db;
+}
+.btn-info:focus,
+.btn-info.focus {
+ color: #fff;
+ background-color: #217dbb;
+ border-color: #16527a;
+}
+.btn-info:hover {
+ color: #fff;
+ background-color: #217dbb;
+ border-color: #2077b2;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ color: #fff;
+ background-color: #217dbb;
+ border-color: #2077b2;
+}
+.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: #1c699d;
+ border-color: #16527a;
+}
+.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: #3498db;
+ border-color: #3498db;
+}
+.btn-info .badge {
+ color: #3498db;
+ background-color: #fff;
+}
+.btn-warning {
+ color: #fff;
+ background-color: #f39c12;
+ border-color: #f39c12;
+}
+.btn-warning:focus,
+.btn-warning.focus {
+ color: #fff;
+ background-color: #c87f0a;
+ border-color: #7f5006;
+}
+.btn-warning:hover {
+ color: #fff;
+ background-color: #c87f0a;
+ border-color: #be780a;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ color: #fff;
+ background-color: #c87f0a;
+ border-color: #be780a;
+}
+.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: #a66908;
+ border-color: #7f5006;
+}
+.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: #f39c12;
+ border-color: #f39c12;
+}
+.btn-warning .badge {
+ color: #f39c12;
+ background-color: #fff;
+}
+.btn-danger {
+ color: #fff;
+ background-color: #e74c3c;
+ border-color: #e74c3c;
+}
+.btn-danger:focus,
+.btn-danger.focus {
+ color: #fff;
+ background-color: #d62c1a;
+ border-color: #921e12;
+}
+.btn-danger:hover {
+ color: #fff;
+ background-color: #d62c1a;
+ border-color: #cd2a19;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ color: #fff;
+ background-color: #d62c1a;
+ border-color: #cd2a19;
+}
+.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: #b62516;
+ border-color: #921e12;
+}
+.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: #e74c3c;
+ border-color: #e74c3c;
+}
+.btn-danger .badge {
+ color: #e74c3c;
+ background-color: #fff;
+}
+.btn-link {
+ color: #2c3e50;
+ font-weight: normal;
+ 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: #11181f;
+ 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: #777777;
+ text-decoration: none;
+}
+.btn-lg,
+.btn-group-lg > .btn {
+ padding: 10px 16px;
+ font-size: 15px;
+ line-height: 1.3333333;
+ border-radius: 5px;
+}
+.btn-sm,
+.btn-group-sm > .btn {
+ padding: 5px 10px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 2px;
+}
+.btn-xs,
+.btn-group-xs > .btn {
+ padding: 1px 5px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 2px;
+}
+.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 0.15s linear;
+ -o-transition: opacity 0.15s linear;
+ transition: opacity 0.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-property: height, visibility;
+ transition-property: height, visibility;
+ -webkit-transition-duration: 0.35s;
+ transition-duration: 0.35s;
+ -webkit-transition-timing-function: ease;
+ transition-timing-function: ease;
+}
+.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: 85px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ list-style: none;
+ font-size: 12px;
+ text-align: left;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ border-radius: 3px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ background-clip: padding-box;
+}
+.dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+.dropdown-menu .divider {
+ height: 1px;
+ margin: 7.5px 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: #333333;
+ white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ text-decoration: none;
+ color: #262626;
+ background-color: #f5f5f5;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ color: #fff;
+ text-decoration: none;
+ outline: 0;
+ background-color: #2c3e50;
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ color: #777777;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ text-decoration: none;
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ cursor: not-allowed;
+}
+.open > .dropdown-menu {
+ display: block;
+}
+.open > a {
+ outline: 0;
+}
+.dropdown-menu-right {
+ left: auto;
+ right: 0;
+}
+.dropdown-menu-left {
+ left: 0;
+ right: auto;
+}
+.dropdown-header {
+ display: block;
+ padding: 3px 20px;
+ font-size: 11px;
+ line-height: 1.42857143;
+ color: #777777;
+ white-space: nowrap;
+}
+.dropdown-backdrop {
+ position: fixed;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ top: 0;
+ z-index: 990;
+}
+.pull-right > .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+ border-top: 0;
+ border-bottom: 4px dashed;
+ border-bottom: 4px solid \9;
+ content: "";
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 2px;
+}
+@media (min-width: 768px) {
+ .navbar-right .dropdown-menu {
+ left: auto;
+ right: 0;
+ }
+ .navbar-right .dropdown-menu-left {
+ left: 0;
+ right: auto;
+ }
+}
+.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-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group > .btn-group {
+ float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+ padding-left: 8px;
+ padding-right: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+ padding-left: 12px;
+ padding-right: 12px;
+}
+.btn-group.open .dropdown-toggle {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn .caret {
+ margin-left: 0;
+}
+.btn-lg .caret {
+ border-width: 5px 5px 0;
+ border-bottom-width: 0;
+}
+.dropup .btn-lg .caret {
+ border-width: 0 5px 5px;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group,
+.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-right-radius: 3px;
+ border-top-left-radius: 3px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.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-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group-justified {
+ display: table;
+ width: 100%;
+ table-layout: fixed;
+ border-collapse: separate;
+}
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
+ float: none;
+ display: table-cell;
+ 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-left: 0;
+ padding-right: 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: 42px;
+ padding: 10px 16px;
+ font-size: 15px;
+ line-height: 1.3333333;
+ border-radius: 5px;
+}
+select.input-group-lg > .form-control,
+select.input-group-lg > .input-group-addon,
+select.input-group-lg > .input-group-btn > .btn {
+ height: 42px;
+ line-height: 42px;
+}
+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: 28px;
+ padding: 5px 10px;
+ font-size: 11px;
+ line-height: 1.5;
+ border-radius: 2px;
+}
+select.input-group-sm > .form-control,
+select.input-group-sm > .input-group-addon,
+select.input-group-sm > .input-group-btn > .btn {
+ height: 28px;
+ line-height: 28px;
+}
+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: 12px;
+ font-weight: normal;
+ line-height: 1;
+ color: #555555;
+ text-align: center;
+ background-color: #eeeeee;
+ border: 1px solid #ccc;
+ border-radius: 3px;
+}
+.input-group-addon.input-sm {
+ padding: 5px 10px;
+ font-size: 11px;
+ border-radius: 2px;
+}
+.input-group-addon.input-lg {
+ padding: 10px 16px;
+ font-size: 15px;
+ border-radius: 5px;
+}
+.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-bottom-right-radius: 0;
+ border-top-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-bottom-left-radius: 0;
+ border-top-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 {
+ margin-bottom: 0;
+ padding-left: 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: #eeeeee;
+}
+.nav > li.disabled > a {
+ color: #777777;
+}
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+ color: #777777;
+ text-decoration: none;
+ background-color: transparent;
+ cursor: not-allowed;
+}
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+ background-color: #eeeeee;
+ border-color: #2c3e50;
+}
+.nav .nav-divider {
+ height: 1px;
+ margin: 7.5px 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: 3px 3px 0 0;
+}
+.nav-tabs > li > a:hover {
+ border-color: #eeeeee #eeeeee #ddd;
+}
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+ color: #555555;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-bottom-color: transparent;
+ cursor: default;
+}
+.nav-tabs.nav-justified {
+ width: 100%;
+ border-bottom: 0;
+}
+.nav-tabs.nav-justified > li {
+ float: none;
+}
+.nav-tabs.nav-justified > li > a {
+ text-align: center;
+ margin-bottom: 5px;
+}
+.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: 3px;
+}
+.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: 3px 3px 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: 3px;
+}
+.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: #2c3e50;
+}
+.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 {
+ text-align: center;
+ margin-bottom: 5px;
+}
+.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: 3px;
+}
+.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: 3px 3px 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-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.navbar {
+ position: relative;
+ min-height: 50px;
+ margin-bottom: 17px;
+ border: 1px solid transparent;
+}
+@media (min-width: 768px) {
+ .navbar {
+ border-radius: 3px;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-header {
+ float: left;
+ }
+}
+.navbar-collapse {
+ overflow-x: visible;
+ padding-right: 15px;
+ padding-left: 15px;
+ border-top: 1px solid transparent;
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
+ -webkit-overflow-scrolling: touch;
+}
+.navbar-collapse.in {
+ overflow-y: auto;
+}
+@media (min-width: 768px) {
+ .navbar-collapse {
+ width: auto;
+ border-top: 0;
+ box-shadow: none;
+ }
+ .navbar-collapse.collapse {
+ display: block !important;
+ height: auto !important;
+ padding-bottom: 0;
+ overflow: visible !important;
+ }
+ .navbar-collapse.in {
+ overflow-y: visible;
+ }
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-static-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ padding-left: 0;
+ padding-right: 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;
+ padding: 16.5px 15px;
+ font-size: 15px;
+ line-height: 17px;
+ height: 50px;
+}
+.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;
+ margin-right: 15px;
+ padding: 9px 10px;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ background-color: transparent;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 3px;
+}
+.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: 8.25px -15px;
+}
+.navbar-nav > li > a {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ line-height: 17px;
+}
+@media (max-width: 767px) {
+ .navbar-nav .open .dropdown-menu {
+ position: static;
+ float: none;
+ width: auto;
+ margin-top: 0;
+ background-color: transparent;
+ border: 0;
+ box-shadow: none;
+ }
+ .navbar-nav .open .dropdown-menu > li > a,
+ .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding: 5px 15px 5px 25px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a {
+ line-height: 17px;
+ }
+ .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: 16.5px;
+ padding-bottom: 16.5px;
+ }
+}
+.navbar-form {
+ margin-left: -15px;
+ margin-right: -15px;
+ padding: 10px 15px;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ margin-top: 9.5px;
+ margin-bottom: 9.5px;
+}
+@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;
+ border: 0;
+ margin-left: 0;
+ margin-right: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+}
+.navbar-nav > li > .dropdown-menu {
+ margin-top: 0;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+ margin-bottom: 0;
+ border-top-right-radius: 3px;
+ border-top-left-radius: 3px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.navbar-btn {
+ margin-top: 9.5px;
+ margin-bottom: 9.5px;
+}
+.navbar-btn.btn-sm {
+ margin-top: 11px;
+ margin-bottom: 11px;
+}
+.navbar-btn.btn-xs {
+ margin-top: 14px;
+ margin-bottom: 14px;
+}
+.navbar-text {
+ margin-top: 16.5px;
+ margin-bottom: 16.5px;
+}
+@media (min-width: 768px) {
+ .navbar-text {
+ float: left;
+ margin-left: 15px;
+ margin-right: 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 {
+ background-color: #e7e7e7;
+ color: #555;
+}
+@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 {
+ background-color: #080808;
+ color: #fff;
+}
+@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: 17px;
+ list-style: none;
+ background-color: #f5f5f5;
+ border-radius: 3px;
+}
+.breadcrumb > li {
+ display: inline-block;
+}
+.breadcrumb > li + li:before {
+ content: "/\00a0";
+ padding: 0 5px;
+ color: #ccc;
+}
+.breadcrumb > .active {
+ color: #777777;
+}
+.pagination {
+ display: inline-block;
+ padding-left: 0;
+ margin: 17px 0;
+ border-radius: 3px;
+}
+.pagination > li {
+ display: inline;
+}
+.pagination > li > a,
+.pagination > li > span {
+ position: relative;
+ float: left;
+ padding: 6px 12px;
+ line-height: 1.42857143;
+ text-decoration: none;
+ color: #2c3e50;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ margin-left: -1px;
+}
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+ margin-left: 0;
+ border-bottom-left-radius: 3px;
+ border-top-left-radius: 3px;
+}
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+ border-bottom-right-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+ z-index: 2;
+ color: #11181f;
+ background-color: #eeeeee;
+ 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;
+ background-color: #2c3e50;
+ border-color: #2c3e50;
+ cursor: default;
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+ color: #777777;
+ background-color: #fff;
+ border-color: #ddd;
+ cursor: not-allowed;
+}
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+ padding: 10px 16px;
+ font-size: 15px;
+ line-height: 1.3333333;
+}
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+ border-bottom-left-radius: 5px;
+ border-top-left-radius: 5px;
+}
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+ border-bottom-right-radius: 5px;
+ border-top-right-radius: 5px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ padding: 5px 10px;
+ font-size: 11px;
+ line-height: 1.5;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+ border-bottom-left-radius: 2px;
+ border-top-left-radius: 2px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+ border-bottom-right-radius: 2px;
+ border-top-right-radius: 2px;
+}
+.pager {
+ padding-left: 0;
+ margin: 17px 0;
+ list-style: none;
+ text-align: center;
+}
+.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: #eeeeee;
+}
+.pager .next > a,
+.pager .next > span {
+ float: right;
+}
+.pager .previous > a,
+.pager .previous > span {
+ float: left;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+ color: #777777;
+ background-color: #fff;
+ cursor: not-allowed;
+}
+.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: #777777;
+}
+.label-default[href]:hover,
+.label-default[href]:focus {
+ background-color: #5e5e5e;
+}
+.label-primary {
+ background-color: #2c3e50;
+}
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+ background-color: #1a242f;
+}
+.label-success {
+ background-color: #18bc9c;
+}
+.label-success[href]:hover,
+.label-success[href]:focus {
+ background-color: #128f76;
+}
+.label-info {
+ background-color: #3498db;
+}
+.label-info[href]:hover,
+.label-info[href]:focus {
+ background-color: #217dbb;
+}
+.label-warning {
+ background-color: #f39c12;
+}
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+ background-color: #c87f0a;
+}
+.label-danger {
+ background-color: #e74c3c;
+}
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+ background-color: #d62c1a;
+}
+.badge {
+ display: inline-block;
+ min-width: 10px;
+ padding: 3px 7px;
+ font-size: 11px;
+ font-weight: bold;
+ color: #fff;
+ line-height: 1;
+ vertical-align: middle;
+ white-space: nowrap;
+ text-align: center;
+ background-color: #777777;
+ 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: #2c3e50;
+ 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: #eeeeee;
+}
+.jumbotron h1,
+.jumbotron .h1 {
+ color: inherit;
+}
+.jumbotron p {
+ margin-bottom: 15px;
+ font-size: 18px;
+ font-weight: 200;
+}
+.jumbotron > hr {
+ border-top-color: #d5d5d5;
+}
+.container .jumbotron,
+.container-fluid .jumbotron {
+ border-radius: 5px;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+.jumbotron .container {
+ max-width: 100%;
+}
+@media screen and (min-width: 768px) {
+ .jumbotron {
+ padding-top: 48px;
+ padding-bottom: 48px;
+ }
+ .container .jumbotron,
+ .container-fluid .jumbotron {
+ padding-left: 60px;
+ padding-right: 60px;
+ }
+ .jumbotron h1,
+ .jumbotron .h1 {
+ font-size: 54px;
+ }
+}
+.thumbnail {
+ display: block;
+ padding: 4px;
+ margin-bottom: 17px;
+ line-height: 1.42857143;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 3px;
+ -webkit-transition: border 0.2s ease-in-out;
+ -o-transition: border 0.2s ease-in-out;
+ transition: border 0.2s ease-in-out;
+}
+.thumbnail > img,
+.thumbnail a > img {
+ margin-left: auto;
+ margin-right: auto;
+}
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+ border-color: #2c3e50;
+}
+.thumbnail .caption {
+ padding: 9px;
+ color: #333333;
+}
+.alert {
+ padding: 15px;
+ margin-bottom: 17px;
+ border: 1px solid transparent;
+ border-radius: 3px;
+}
+.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 {
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+ color: #18bc9c;
+}
+.alert-success hr {
+ border-top-color: #c9e2b3;
+}
+.alert-success .alert-link {
+ color: #128f76;
+}
+.alert-info {
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+ color: #3498db;
+}
+.alert-info hr {
+ border-top-color: #a6e1ec;
+}
+.alert-info .alert-link {
+ color: #217dbb;
+}
+.alert-warning {
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+ color: #f39c12;
+}
+.alert-warning hr {
+ border-top-color: #f7e1b5;
+}
+.alert-warning .alert-link {
+ color: #c87f0a;
+}
+.alert-danger {
+ background-color: #f2dede;
+ border-color: #ebccd1;
+ color: #e74c3c;
+}
+.alert-danger hr {
+ border-top-color: #e4b9c0;
+}
+.alert-danger .alert-link {
+ color: #d62c1a;
+}
+@-webkit-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 {
+ overflow: hidden;
+ height: 17px;
+ margin-bottom: 17px;
+ background-color: #f5f5f5;
+ border-radius: 3px;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+.progress-bar {
+ float: left;
+ width: 0%;
+ height: 100%;
+ font-size: 11px;
+ line-height: 17px;
+ color: #fff;
+ text-align: center;
+ background-color: #2c3e50;
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -webkit-transition: width 0.6s ease;
+ -o-transition: width 0.6s ease;
+ transition: width 0.6s ease;
+}
+.progress-striped .progress-bar,
+.progress-bar-striped {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-size: 40px 40px;
+}
+.progress.active .progress-bar,
+.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: #18bc9c;
+}
+.progress-striped .progress-bar-success {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-info {
+ background-color: #3498db;
+}
+.progress-striped .progress-bar-info {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-warning {
+ background-color: #f39c12;
+}
+.progress-striped .progress-bar-warning {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-danger {
+ background-color: #e74c3c;
+}
+.progress-striped .progress-bar-danger {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.media {
+ margin-top: 15px;
+}
+.media:first-child {
+ margin-top: 0;
+}
+.media,
+.media-body {
+ zoom: 1;
+ overflow: hidden;
+}
+.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 {
+ margin-bottom: 20px;
+ padding-left: 0;
+}
+.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-right-radius: 3px;
+ border-top-left-radius: 3px;
+}
+.list-group-item:last-child {
+ margin-bottom: 0;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+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 {
+ text-decoration: none;
+ color: #555;
+ 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 {
+ background-color: #eeeeee;
+ color: #777777;
+ cursor: not-allowed;
+}
+.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: #777777;
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+ z-index: 2;
+ color: #fff;
+ background-color: #2c3e50;
+ border-color: #2c3e50;
+}
+.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: #8aa4be;
+}
+.list-group-item-success {
+ color: #18bc9c;
+ background-color: #dff0d8;
+}
+a.list-group-item-success,
+button.list-group-item-success {
+ color: #18bc9c;
+}
+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: #18bc9c;
+ 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: #18bc9c;
+ border-color: #18bc9c;
+}
+.list-group-item-info {
+ color: #3498db;
+ background-color: #d9edf7;
+}
+a.list-group-item-info,
+button.list-group-item-info {
+ color: #3498db;
+}
+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: #3498db;
+ 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: #3498db;
+ border-color: #3498db;
+}
+.list-group-item-warning {
+ color: #f39c12;
+ background-color: #fcf8e3;
+}
+a.list-group-item-warning,
+button.list-group-item-warning {
+ color: #f39c12;
+}
+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: #f39c12;
+ 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: #f39c12;
+ border-color: #f39c12;
+}
+.list-group-item-danger {
+ color: #e74c3c;
+ background-color: #f2dede;
+}
+a.list-group-item-danger,
+button.list-group-item-danger {
+ color: #e74c3c;
+}
+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: #e74c3c;
+ 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: #e74c3c;
+ border-color: #e74c3c;
+}
+.list-group-item-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+.list-group-item-text {
+ margin-bottom: 0;
+ line-height: 1.3;
+}
+.panel {
+ margin-bottom: 17px;
+ background-color: #fff;
+ border: 1px solid transparent;
+ border-radius: 3px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.panel-body {
+ padding: 15px;
+}
+.panel-heading {
+ padding: 10px 15px;
+ border-bottom: 1px solid transparent;
+ border-top-right-radius: 2px;
+ border-top-left-radius: 2px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+ color: inherit;
+}
+.panel-title {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: 14px;
+ 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: 2px;
+ border-bottom-left-radius: 2px;
+}
+.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-right-radius: 2px;
+ border-top-left-radius: 2px;
+}
+.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: 2px;
+ border-bottom-left-radius: 2px;
+}
+.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
+ border-top-right-radius: 0;
+ border-top-left-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-left: 15px;
+ padding-right: 15px;
+}
+.panel > .table:first-child,
+.panel > .table-responsive:first-child > .table:first-child {
+ border-top-right-radius: 2px;
+ border-top-left-radius: 2px;
+}
+.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: 2px;
+ border-top-right-radius: 2px;
+}
+.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: 2px;
+}
+.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: 2px;
+}
+.panel > .table:last-child,
+.panel > .table-responsive:last-child > .table:last-child {
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 2px;
+}
+.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-left-radius: 2px;
+ border-bottom-right-radius: 2px;
+}
+.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: 2px;
+}
+.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: 2px;
+}
+.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 {
+ border: 0;
+ margin-bottom: 0;
+}
+.panel-group {
+ margin-bottom: 17px;
+}
+.panel-group .panel {
+ margin-bottom: 0;
+ border-radius: 3px;
+}
+.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: #333333;
+ 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: #333333;
+}
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #ddd;
+}
+.panel-primary {
+ border-color: #2c3e50;
+}
+.panel-primary > .panel-heading {
+ color: #fff;
+ background-color: #2c3e50;
+ border-color: #2c3e50;
+}
+.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #2c3e50;
+}
+.panel-primary > .panel-heading .badge {
+ color: #2c3e50;
+ background-color: #fff;
+}
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #2c3e50;
+}
+.panel-success {
+ border-color: #d6e9c6;
+}
+.panel-success > .panel-heading {
+ color: #18bc9c;
+ 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: #18bc9c;
+}
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #d6e9c6;
+}
+.panel-info {
+ border-color: #bce8f1;
+}
+.panel-info > .panel-heading {
+ color: #3498db;
+ 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: #3498db;
+}
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #bce8f1;
+}
+.panel-warning {
+ border-color: #faebcc;
+}
+.panel-warning > .panel-heading {
+ color: #f39c12;
+ 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: #f39c12;
+}
+.panel-warning > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #faebcc;
+}
+.panel-danger {
+ border-color: #ebccd1;
+}
+.panel-danger > .panel-heading {
+ color: #e74c3c;
+ 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: #e74c3c;
+}
+.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;
+ left: 0;
+ bottom: 0;
+ height: 100%;
+ width: 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: 3px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.well blockquote {
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, 0.15);
+}
+.well-lg {
+ padding: 24px;
+ border-radius: 5px;
+}
+.well-sm {
+ padding: 9px;
+ border-radius: 2px;
+}
+.close {
+ float: right;
+ font-size: 18px;
+ font-weight: bold;
+ line-height: 1;
+ color: #000;
+ text-shadow: 0 1px 0 #fff;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+}
+.close:hover,
+.close:focus {
+ color: #000;
+ text-decoration: none;
+ cursor: pointer;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+button.close {
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
+}
+.modal-open {
+ overflow: hidden;
+}
+.modal {
+ display: none;
+ overflow: hidden;
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1050;
+ -webkit-overflow-scrolling: touch;
+ outline: 0;
+}
+.modal.fade .modal-dialog {
+ -webkit-transform: translate(0, -25%);
+ -ms-transform: translate(0, -25%);
+ -o-transform: translate(0, -25%);
+ transform: translate(0, -25%);
+ -webkit-transition: -webkit-transform 0.3s ease-out;
+ -moz-transition: -moz-transform 0.3s ease-out;
+ -o-transition: -o-transform 0.3s ease-out;
+ transition: transform 0.3s ease-out;
+}
+.modal.in .modal-dialog {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -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;
+ border: 1px solid #999;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 5px;
+ -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ background-clip: padding-box;
+ outline: 0;
+}
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ background-color: #000;
+}
+.modal-backdrop.fade {
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+.modal-backdrop.in {
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+.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-left: 5px;
+ margin-bottom: 0;
+}
+.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, 0.5);
+ box-shadow: 0 5px 15px rgba(0, 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-style: normal;
+ font-weight: normal;
+ letter-spacing: normal;
+ line-break: auto;
+ line-height: 1.42857143;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ white-space: normal;
+ word-break: normal;
+ word-spacing: normal;
+ word-wrap: normal;
+ font-size: 11px;
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+.tooltip.in {
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.tooltip.top {
+ margin-top: -3px;
+ padding: 5px 0;
+}
+.tooltip.right {
+ margin-left: 3px;
+ padding: 0 5px;
+}
+.tooltip.bottom {
+ margin-top: 3px;
+ padding: 5px 0;
+}
+.tooltip.left {
+ margin-left: -3px;
+ padding: 0 5px;
+}
+.tooltip-inner {
+ max-width: 200px;
+ padding: 3px 8px;
+ color: #fff;
+ text-align: center;
+ background-color: #000;
+ border-radius: 3px;
+}
+.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 {
+ bottom: 0;
+ right: 5px;
+ 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-style: normal;
+ font-weight: normal;
+ letter-spacing: normal;
+ line-break: auto;
+ line-height: 1.42857143;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ white-space: normal;
+ word-break: normal;
+ word-spacing: normal;
+ word-wrap: normal;
+ font-size: 12px;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 5px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+}
+.popover.top {
+ margin-top: -10px;
+}
+.popover.right {
+ margin-left: 10px;
+}
+.popover.bottom {
+ margin-top: 10px;
+}
+.popover.left {
+ margin-left: -10px;
+}
+.popover-title {
+ margin: 0;
+ padding: 8px 14px;
+ font-size: 12px;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ border-radius: 4px 4px 0 0;
+}
+.popover-content {
+ padding: 9px 14px;
+}
+.popover > .arrow,
+.popover > .arrow:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.popover > .arrow {
+ border-width: 11px;
+}
+.popover > .arrow:after {
+ border-width: 10px;
+ content: "";
+}
+.popover.top > .arrow {
+ left: 50%;
+ margin-left: -11px;
+ border-bottom-width: 0;
+ border-top-color: #999999;
+ border-top-color: rgba(0, 0, 0, 0.25);
+ bottom: -11px;
+}
+.popover.top > .arrow:after {
+ content: " ";
+ bottom: 1px;
+ margin-left: -10px;
+ border-bottom-width: 0;
+ border-top-color: #fff;
+}
+.popover.right > .arrow {
+ top: 50%;
+ left: -11px;
+ margin-top: -11px;
+ border-left-width: 0;
+ border-right-color: #999999;
+ border-right-color: rgba(0, 0, 0, 0.25);
+}
+.popover.right > .arrow:after {
+ content: " ";
+ left: 1px;
+ bottom: -10px;
+ border-left-width: 0;
+ border-right-color: #fff;
+}
+.popover.bottom > .arrow {
+ left: 50%;
+ margin-left: -11px;
+ border-top-width: 0;
+ border-bottom-color: #999999;
+ border-bottom-color: rgba(0, 0, 0, 0.25);
+ top: -11px;
+}
+.popover.bottom > .arrow:after {
+ content: " ";
+ top: 1px;
+ margin-left: -10px;
+ 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: #999999;
+ border-left-color: rgba(0, 0, 0, 0.25);
+}
+.popover.left > .arrow:after {
+ content: " ";
+ right: 1px;
+ border-right-width: 0;
+ border-left-color: #fff;
+ bottom: -10px;
+}
+.carousel {
+ position: relative;
+}
+.carousel-inner {
+ position: relative;
+ overflow: hidden;
+ width: 100%;
+}
+.carousel-inner > .item {
+ display: none;
+ position: relative;
+ -webkit-transition: 0.6s ease-in-out left;
+ -o-transition: 0.6s ease-in-out left;
+ transition: 0.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 0.6s ease-in-out;
+ -moz-transition: -moz-transform 0.6s ease-in-out;
+ -o-transition: -o-transform 0.6s ease-in-out;
+ transition: transform 0.6s ease-in-out;
+ -webkit-backface-visibility: hidden;
+ -moz-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-perspective: 1000px;
+ -moz-perspective: 1000px;
+ perspective: 1000px;
+ }
+ .carousel-inner > .item.next,
+ .carousel-inner > .item.active.right {
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ left: 0;
+ }
+ .carousel-inner > .item.prev,
+ .carousel-inner > .item.active.left {
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ left: 0;
+ }
+ .carousel-inner > .item.next.left,
+ .carousel-inner > .item.prev.right,
+ .carousel-inner > .item.active {
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ left: 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;
+ left: 0;
+ bottom: 0;
+ width: 15%;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+ font-size: 20px;
+ color: #fff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+ background-color: rgba(0, 0, 0, 0);
+}
+.carousel-control.left {
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+}
+.carousel-control.right {
+ left: auto;
+ right: 0;
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+}
+.carousel-control:hover,
+.carousel-control:focus {
+ outline: 0;
+ color: #fff;
+ text-decoration: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+ position: absolute;
+ top: 50%;
+ margin-top: -10px;
+ z-index: 5;
+ display: inline-block;
+}
+.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;
+ line-height: 1;
+ font-family: serif;
+}
+.carousel-control .icon-prev:before {
+ content: '\2039';
+}
+.carousel-control .icon-next:before {
+ content: '\203a';
+}
+.carousel-indicators {
+ position: absolute;
+ bottom: 10px;
+ left: 50%;
+ z-index: 15;
+ width: 60%;
+ margin-left: -30%;
+ padding-left: 0;
+ list-style: none;
+ text-align: center;
+}
+.carousel-indicators li {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin: 1px;
+ text-indent: -999px;
+ border: 1px solid #fff;
+ border-radius: 10px;
+ cursor: pointer;
+ background-color: #000 \9;
+ background-color: rgba(0, 0, 0, 0);
+}
+.carousel-indicators .active {
+ margin: 0;
+ width: 12px;
+ height: 12px;
+ background-color: #fff;
+}
+.carousel-caption {
+ position: absolute;
+ left: 15%;
+ right: 15%;
+ bottom: 20px;
+ z-index: 10;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ color: #fff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+}
+.carousel-caption .btn {
+ text-shadow: none;
+}
+@media screen and (min-width: 768px) {
+ .carousel-control .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 {
+ left: 20%;
+ right: 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 {
+ content: " ";
+ display: table;
+}
+.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-left: auto;
+ margin-right: 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=../css/bootstrap.css.map */
\ No newline at end of file
diff --git a/addons/weliam_smartcity/web/resource/address/bootstrap.min.css b/addons/weliam_smartcity/web/resource/address/bootstrap.min.css
new file mode 100644
index 0000000..0d2ec72
--- /dev/null
+++ b/addons/weliam_smartcity/web/resource/address/bootstrap.min.css
@@ -0,0 +1 @@
+/*! * Bootstrap v3.3.6 (http://getbootstrap.com) * Copyright 2011-2015 Twitter,Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-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{font-size:2em;margin:0.67em 0;}mark{background:#ff0;color:#000;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}figure{margin:1em 40px;}hr{box-sizing:content-box;height:0;}pre{overflow:auto;}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}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{border:0;padding:0;}input{line-height:normal;}input[type="checkbox"],input[type="radio"]{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-appearance:textfield;box-sizing:content-box;}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;}textarea{overflow:auto;}optgroup{font-weight:bold;}table{border-collapse:collapse;border-spacing:0;}td,th{padding:0;}@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-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:12px;line-height:1.42857143;color:#333333;background-color:#fff;}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;}a{color:#2c3e50;text-decoration:none;}a:hover,a:focus{color:#11181f;text-decoration:underline;}a:focus{outline:thin dotted;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:5px;}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:3px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto;}.img-circle{border-radius:50%;}hr{margin-top:17px;margin-bottom:17px;border:0;border-top:1px solid #eeeeee;}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;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:#777777;}h1,.h1,h2,.h2,h3,.h3{margin-top:17px;margin-bottom:8.5px;}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:8.5px;margin-bottom:8.5px;}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:31px;}h2,.h2{font-size:25px;}h3,.h3{font-size:21px;}h4,.h4{font-size:15px;}h5,.h5{font-size:12px;}h6,.h6{font-size:11px;}p{margin:0 0 8.5px;}.lead{margin-bottom:17px;font-size:13px;font-weight:300;line-height:1.4;}@media (min-width:768px){.lead{font-size:18px;}}small,.small{font-size:91%;}mark,.mark{background-color:#fcf8e3;padding:.2em;}.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:#777777;}.text-primary{color:#2c3e50;}a.text-primary:hover,a.text-primary:focus{color:#1a242f;}.text-success{color:#18bc9c;}a.text-success:hover,a.text-success:focus{color:#128f76;}.text-info{color:#3498db;}a.text-info:hover,a.text-info:focus{color:#217dbb;}.text-warning{color:#f39c12;}a.text-warning:hover,a.text-warning:focus{color:#c87f0a;}.text-danger{color:#e74c3c;}a.text-danger:hover,a.text-danger:focus{color:#d62c1a;}.bg-primary{color:#fff;background-color:#2c3e50;}a.bg-primary:hover,a.bg-primary:focus{background-color:#1a242f;}.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:7.5px;margin:34px 0 17px;border-bottom:1px solid #eeeeee;}ul,ol{margin-top:0;margin-bottom:8.5px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:0;}.list-unstyled{padding-left:0;list-style:none;}.list-inline{padding-left:0;list-style:none;margin-left:-5px;}.list-inline > li{display:inline-block;padding-left:5px;padding-right:5px;}dl{margin-top:0;margin-bottom:17px;}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;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.dl-horizontal dd{margin-left:180px;}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777777;}.initialism{font-size:90%;text-transform:uppercase;}blockquote{padding:8.5px 17px;margin:0 0 17px;font-size:15px;border-left:5px solid #eeeeee;}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:#777777;}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0';}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right;}.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:17px;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:3px;}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none;}pre{display:block;padding:8px;margin:0 0 8.5px;font-size:11px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px;}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{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}@media (min-width:768px){.container{width:750px;}}@media (min-width:992px){.container{width:970px;}}@media (min-width:1200px){.container{width:1170px;}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}.row{margin-left:-15px;margin-right:-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-left:15px;padding-right: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:#777777;text-align:left;}th{text-align:left;}.table{width:100%;max-width:100%;margin-bottom:17px;}.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;float:none;display:table-column;}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell;}.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{overflow-x:auto;min-height:0.01%;}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:12.75px;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{padding:0;margin:0;border:0;min-width:0;}legend{display:block;width:100%;padding:0;margin-bottom:17px;font-size:18px;line-height:inherit;color:#333333;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:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}output{display:block;padding-top:7px;font-size:12px;line-height:1.42857143;color:#555555;}.form-control{display:block;width:100%;height:31px;padding:6px 12px;font-size:12px;line-height:1.42857143;color:#555555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,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,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.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{border:0;background-color:transparent;}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;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:31px;}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:28px;}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:42px;}}.form-group{margin-bottom:15px;}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px;}.radio label,.checkbox label{min-height:17px;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-left:-20px;margin-top:4px \9;}.radio + .radio,.checkbox + .checkbox{margin-top:-5px;}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;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{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:29px;}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0;}.input-sm{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}select.input-sm{height:28px;line-height:28px;}textarea.input-sm,select[multiple].input-sm{height:auto;}.form-group-sm .form-control{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}.form-group-sm select.form-control{height:28px;line-height:28px;}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto;}.form-group-sm .form-control-static{height:28px;min-height:28px;padding:6px 10px;font-size:11px;line-height:1.5;}.input-lg{height:42px;padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}select.input-lg{height:42px;line-height:42px;}textarea.input-lg,select[multiple].input-lg{height:auto;}.form-group-lg .form-control{height:42px;padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}.form-group-lg select.form-control{height:42px;line-height:42px;}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto;}.form-group-lg .form-control-static{height:42px;min-height:32px;padding:11px 16px;font-size:15px;line-height:1.3333333;}.has-feedback{position:relative;}.has-feedback .form-control{padding-right:38.75px;}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:31px;height:31px;line-height:31px;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:42px;height:42px;line-height:42px;}.input-sm + .form-control-feedback,.input-group-sm + .form-control-feedback,.form-group-sm .form-control + .form-control-feedback{width:28px;height:28px;line-height:28px;}.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:#18bc9c;}.has-success .form-control{border-color:#18bc9c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.has-success .form-control:focus{border-color:#128f76;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #51e9cb;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #51e9cb;}.has-success .input-group-addon{color:#18bc9c;border-color:#18bc9c;background-color:#dff0d8;}.has-success .form-control-feedback{color:#18bc9c;}.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:#f39c12;}.has-warning .form-control{border-color:#f39c12;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.has-warning .form-control:focus{border-color:#c87f0a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f8c573;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f8c573;}.has-warning .input-group-addon{color:#f39c12;border-color:#f39c12;background-color:#fcf8e3;}.has-warning .form-control-feedback{color:#f39c12;}.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:#e74c3c;}.has-error .form-control{border-color:#e74c3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.has-error .form-control:focus{border-color:#d62c1a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f29f97;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f29f97;}.has-error .input-group-addon{color:#e74c3c;border-color:#e74c3c;background-color:#f2dede;}.has-error .form-control-feedback{color:#e74c3c;}.has-feedback label ~ .form-control-feedback{top:22px;}.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{margin-top:0;margin-bottom:0;padding-top:7px;}.form-horizontal .radio,.form-horizontal .checkbox{min-height:24px;}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px;}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px;}}.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:15px;}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:11px;}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:12px;line-height:1.42857143;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;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{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;}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:#2c3e50;border-color:#2c3e50;}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#1a242f;border-color:#000000;}.btn-primary:hover{color:#fff;background-color:#1a242f;border-color:#161f29;}.btn-primary:active,.btn-primary.active,.open > .dropdown-toggle.btn-primary{color:#fff;background-color:#1a242f;border-color:#161f29;}.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:#0d1318;border-color:#000000;}.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:#2c3e50;border-color:#2c3e50;}.btn-primary .badge{color:#2c3e50;background-color:#fff;}.btn-success{color:#fff;background-color:#18bc9c;border-color:#18bc9c;}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#128f76;border-color:#0a4b3e;}.btn-success:hover{color:#fff;background-color:#128f76;border-color:#11866f;}.btn-success:active,.btn-success.active,.open > .dropdown-toggle.btn-success{color:#fff;background-color:#128f76;border-color:#11866f;}.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:#0e6f5c;border-color:#0a4b3e;}.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:#18bc9c;border-color:#18bc9c;}.btn-success .badge{color:#18bc9c;background-color:#fff;}.btn-info{color:#fff;background-color:#3498db;border-color:#3498db;}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#217dbb;border-color:#16527a;}.btn-info:hover{color:#fff;background-color:#217dbb;border-color:#2077b2;}.btn-info:active,.btn-info.active,.open > .dropdown-toggle.btn-info{color:#fff;background-color:#217dbb;border-color:#2077b2;}.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:#1c699d;border-color:#16527a;}.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:#3498db;border-color:#3498db;}.btn-info .badge{color:#3498db;background-color:#fff;}.btn-warning{color:#fff;background-color:#f39c12;border-color:#f39c12;}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#c87f0a;border-color:#7f5006;}.btn-warning:hover{color:#fff;background-color:#c87f0a;border-color:#be780a;}.btn-warning:active,.btn-warning.active,.open > .dropdown-toggle.btn-warning{color:#fff;background-color:#c87f0a;border-color:#be780a;}.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:#a66908;border-color:#7f5006;}.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:#f39c12;border-color:#f39c12;}.btn-warning .badge{color:#f39c12;background-color:#fff;}.btn-danger{color:#fff;background-color:#e74c3c;border-color:#e74c3c;}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#d62c1a;border-color:#921e12;}.btn-danger:hover{color:#fff;background-color:#d62c1a;border-color:#cd2a19;}.btn-danger:active,.btn-danger.active,.open > .dropdown-toggle.btn-danger{color:#fff;background-color:#d62c1a;border-color:#cd2a19;}.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:#b62516;border-color:#921e12;}.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:#e74c3c;border-color:#e74c3c;}.btn-danger .badge{color:#e74c3c;background-color:#fff;}.btn-link{color:#2c3e50;font-weight:normal;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:#11181f;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:#777777;text-decoration:none;}.btn-lg,.btn-group-lg > .btn{padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}.btn-sm,.btn-group-sm > .btn{padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}.btn-xs,.btn-group-xs > .btn{padding:1px 5px;font-size:11px;line-height:1.5;border-radius:2px;}.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 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.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-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease;}.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;list-style:none;font-size:12px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:3px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;}.dropdown-menu .divider{height:1px;margin:7.5px 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:#333333;white-space:nowrap;}.dropdown-menu > li > a:hover,.dropdown-menu > li > a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5;}.dropdown-menu > .active > a,.dropdown-menu > .active > a:hover,.dropdown-menu > .active > a:focus{color:#fff;text-decoration:none;outline:0;background-color:#2c3e50;}.dropdown-menu > .disabled > a,.dropdown-menu > .disabled > a:hover,.dropdown-menu > .disabled > a:focus{color:#777777;}.dropdown-menu > .disabled > a:hover,.dropdown-menu > .disabled > a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed;}.open > .dropdown-menu{display:block;}.open > a{outline:0;}.dropdown-menu-right{left:auto;right:0;}.dropdown-menu-left{left:0;right:auto;}.dropdown-header{display:block;padding:3px 20px;font-size:11px;line-height:1.42857143;color:#777777;white-space:nowrap;}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990;}.pull-right > .dropdown-menu{right:0;left:auto;}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:"";}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px;}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0;}.navbar-right .dropdown-menu-left{left:0;right:auto;}}.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-bottom-right-radius:0;border-top-right-radius:0;}.btn-group > .btn:last-child:not(:first-child),.btn-group > .dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;}.btn-group > .btn-group{float:left;}.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn{border-radius:0;}.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0;}.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0;}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}.btn-group > .btn + .dropdown-toggle{padding-left:8px;padding-right:8px;}.btn-group > .btn-lg + .dropdown-toggle{padding-left:12px;padding-right:12px;}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none;}.btn .caret{margin-left:0;}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0;}.dropup .btn-lg .caret{border-width:0 5px 5px;}.btn-group-vertical > .btn,.btn-group-vertical > .btn-group,.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-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0;}.btn-group-vertical > .btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.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-right-radius:0;border-top-left-radius:0;}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate;}.btn-group-justified > .btn,.btn-group-justified > .btn-group{float:none;display:table-cell;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-left:0;padding-right: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:42px;padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}select.input-group-lg > .form-control,select.input-group-lg > .input-group-addon,select.input-group-lg > .input-group-btn > .btn{height:42px;line-height:42px;}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:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}select.input-group-sm > .form-control,select.input-group-sm > .input-group-addon,select.input-group-sm > .input-group-btn > .btn{height:28px;line-height:28px;}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:12px;font-weight:normal;line-height:1;color:#555555;text-align:center;background-color:#eeeeee;border:1px solid #ccc;border-radius:3px;}.input-group-addon.input-sm{padding:5px 10px;font-size:11px;border-radius:2px;}.input-group-addon.input-lg{padding:10px 16px;font-size:15px;border-radius:5px;}.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-bottom-right-radius:0;border-top-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-bottom-left-radius:0;border-top-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{margin-bottom:0;padding-left: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:#eeeeee;}.nav > li.disabled > a{color:#777777;}.nav > li.disabled > a:hover,.nav > li.disabled > a:focus{color:#777777;text-decoration:none;background-color:transparent;cursor:not-allowed;}.nav .open > a,.nav .open > a:hover,.nav .open > a:focus{background-color:#eeeeee;border-color:#2c3e50;}.nav .nav-divider{height:1px;margin:7.5px 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:3px 3px 0 0;}.nav-tabs > li > a:hover{border-color:#eeeeee #eeeeee #ddd;}.nav-tabs > li.active > a,.nav-tabs > li.active > a:hover,.nav-tabs > li.active > a:focus{color:#555555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}.nav-tabs.nav-justified{width:100%;border-bottom:0;}.nav-tabs.nav-justified > li{float:none;}.nav-tabs.nav-justified > li > a{text-align:center;margin-bottom:5px;}.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:3px;}.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:3px 3px 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:3px;}.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:#2c3e50;}.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{text-align:center;margin-bottom:5px;}.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:3px;}.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:3px 3px 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-right-radius:0;border-top-left-radius:0;}.navbar{position:relative;min-height:50px;margin-bottom:17px;border:1px solid transparent;}@media (min-width:768px){.navbar{border-radius:3px;}}@media (min-width:768px){.navbar-header{float:left;}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch;}.navbar-collapse.in{overflow-y:auto;}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none;}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important;}.navbar-collapse.in{overflow-y:visible;}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right: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;padding:16.5px 15px;font-size:15px;line-height:17px;height:50px;}.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;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:3px;}.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:8.25px -15px;}.navbar-nav > li > a{padding-top:10px;padding-bottom:10px;line-height:17px;}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none;}.navbar-nav .open .dropdown-menu > li > a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px;}.navbar-nav .open .dropdown-menu > li > a{line-height:17px;}.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:16.5px;padding-bottom:16.5px;}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:9.5px;margin-bottom:9.5px;}@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;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none;}}.navbar-nav > li > .dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0;}.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu{margin-bottom:0;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0;}.navbar-btn{margin-top:9.5px;margin-bottom:9.5px;}.navbar-btn.btn-sm{margin-top:11px;margin-bottom:11px;}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px;}.navbar-text{margin-top:16.5px;margin-bottom:16.5px;}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right: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{background-color:#e7e7e7;color:#555;}@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{background-color:#080808;color:#fff;}@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:17px;list-style:none;background-color:#f5f5f5;border-radius:3px;}.breadcrumb > li{display:inline-block;}.breadcrumb > li + li:before{content:"/\00a0";padding:0 5px;color:#ccc;}.breadcrumb > .active{color:#777777;}.pagination{display:inline-block;padding-left:0;margin:17px 0;border-radius:3px;}.pagination > li{display:inline;}.pagination > li > a,.pagination > li > span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#2c3e50;background-color:#fff;border:1px solid #ddd;margin-left:-1px;}.pagination > li:first-child > a,.pagination > li:first-child > span{margin-left:0;border-bottom-left-radius:3px;border-top-left-radius:3px;}.pagination > li:last-child > a,.pagination > li:last-child > span{border-bottom-right-radius:3px;border-top-right-radius:3px;}.pagination > li > a:hover,.pagination > li > span:hover,.pagination > li > a:focus,.pagination > li > span:focus{z-index:2;color:#11181f;background-color:#eeeeee;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;background-color:#2c3e50;border-color:#2c3e50;cursor:default;}.pagination > .disabled > span,.pagination > .disabled > span:hover,.pagination > .disabled > span:focus,.pagination > .disabled > a,.pagination > .disabled > a:hover,.pagination > .disabled > a:focus{color:#777777;background-color:#fff;border-color:#ddd;cursor:not-allowed;}.pagination-lg > li > a,.pagination-lg > li > span{padding:10px 16px;font-size:15px;line-height:1.3333333;}.pagination-lg > li:first-child > a,.pagination-lg > li:first-child > span{border-bottom-left-radius:5px;border-top-left-radius:5px;}.pagination-lg > li:last-child > a,.pagination-lg > li:last-child > span{border-bottom-right-radius:5px;border-top-right-radius:5px;}.pagination-sm > li > a,.pagination-sm > li > span{padding:5px 10px;font-size:11px;line-height:1.5;}.pagination-sm > li:first-child > a,.pagination-sm > li:first-child > span{border-bottom-left-radius:2px;border-top-left-radius:2px;}.pagination-sm > li:last-child > a,.pagination-sm > li:last-child > span{border-bottom-right-radius:2px;border-top-right-radius:2px;}.pager{padding-left:0;margin:17px 0;list-style:none;text-align:center;}.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:#eeeeee;}.pager .next > a,.pager .next > span{float:right;}.pager .previous > a,.pager .previous > span{float:left;}.pager .disabled > a,.pager .disabled > a:hover,.pager .disabled > a:focus,.pager .disabled > span{color:#777777;background-color:#fff;cursor:not-allowed;}.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:#777777;}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e;}.label-primary{background-color:#2c3e50;}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1a242f;}.label-success{background-color:#18bc9c;}.label-success[href]:hover,.label-success[href]:focus{background-color:#128f76;}.label-info{background-color:#3498db;}.label-info[href]:hover,.label-info[href]:focus{background-color:#217dbb;}.label-warning{background-color:#f39c12;}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#c87f0a;}.label-danger{background-color:#e74c3c;}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d62c1a;}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:11px;font-weight:bold;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#777777;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:#2c3e50;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:#eeeeee;}.jumbotron h1,.jumbotron .h1{color:inherit;}.jumbotron p{margin-bottom:15px;font-size:18px;font-weight:200;}.jumbotron > hr{border-top-color:#d5d5d5;}.container .jumbotron,.container-fluid .jumbotron{border-radius:5px;padding-left:15px;padding-right:15px;}.jumbotron .container{max-width:100%;}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px;}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px;}.jumbotron h1,.jumbotron .h1{font-size:54px;}}.thumbnail{display:block;padding:4px;margin-bottom:17px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:3px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out;}.thumbnail > img,.thumbnail a > img{margin-left:auto;margin-right:auto;}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2c3e50;}.thumbnail .caption{padding:9px;color:#333333;}.alert{padding:15px;margin-bottom:17px;border:1px solid transparent;border-radius:3px;}.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{background-color:#dff0d8;border-color:#d6e9c6;color:#18bc9c;}.alert-success hr{border-top-color:#c9e2b3;}.alert-success .alert-link{color:#128f76;}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3498db;}.alert-info hr{border-top-color:#a6e1ec;}.alert-info .alert-link{color:#217dbb;}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#f39c12;}.alert-warning hr{border-top-color:#f7e1b5;}.alert-warning .alert-link{color:#c87f0a;}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#e74c3c;}.alert-danger hr{border-top-color:#e4b9c0;}.alert-danger .alert-link{color:#d62c1a;}@-webkit-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{overflow:hidden;height:17px;margin-bottom:17px;background-color:#f5f5f5;border-radius:3px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);}.progress-bar{float:left;width:0%;height:100%;font-size:11px;line-height:17px;color:#fff;text-align:center;background-color:#2c3e50;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px;}.progress.active .progress-bar,.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:#18bc9c;}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-info{background-color:#3498db;}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-warning{background-color:#f39c12;}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-danger{background-color:#e74c3c;}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.media{margin-top:15px;}.media:first-child{margin-top:0;}.media,.media-body{zoom:1;overflow:hidden;}.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{margin-bottom:20px;padding-left:0;}.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-right-radius:3px;border-top-left-radius:3px;}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}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{text-decoration:none;color:#555;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{background-color:#eeeeee;color:#777777;cursor:not-allowed;}.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:#777777;}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#2c3e50;border-color:#2c3e50;}.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:#8aa4be;}.list-group-item-success{color:#18bc9c;background-color:#dff0d8;}a.list-group-item-success,button.list-group-item-success{color:#18bc9c;}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:#18bc9c;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:#18bc9c;border-color:#18bc9c;}.list-group-item-info{color:#3498db;background-color:#d9edf7;}a.list-group-item-info,button.list-group-item-info{color:#3498db;}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:#3498db;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:#3498db;border-color:#3498db;}.list-group-item-warning{color:#f39c12;background-color:#fcf8e3;}a.list-group-item-warning,button.list-group-item-warning{color:#f39c12;}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:#f39c12;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:#f39c12;border-color:#f39c12;}.list-group-item-danger{color:#e74c3c;background-color:#f2dede;}a.list-group-item-danger,button.list-group-item-danger{color:#e74c3c;}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:#e74c3c;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:#e74c3c;border-color:#e74c3c;}.list-group-item-heading{margin-top:0;margin-bottom:5px;}.list-group-item-text{margin-bottom:0;line-height:1.3;}.panel{margin-bottom:17px;background-color:#fff;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05);}.panel-body{padding:15px;}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:2px;border-top-left-radius:2px;}.panel-heading > .dropdown .dropdown-toggle{color:inherit;}.panel-title{margin-top:0;margin-bottom:0;font-size:14px;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:2px;border-bottom-left-radius:2px;}.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-right-radius:2px;border-top-left-radius:2px;}.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:2px;border-bottom-left-radius:2px;}.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-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-left:15px;padding-right:15px;}.panel > .table:first-child,.panel > .table-responsive:first-child > .table:first-child{border-top-right-radius:2px;border-top-left-radius:2px;}.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:2px;border-top-right-radius:2px;}.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:2px;}.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:2px;}.panel > .table:last-child,.panel > .table-responsive:last-child > .table:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px;}.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-left-radius:2px;border-bottom-right-radius:2px;}.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:2px;}.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:2px;}.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{border:0;margin-bottom:0;}.panel-group{margin-bottom:17px;}.panel-group .panel{margin-bottom:0;border-radius:3px;}.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:#333333;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:#333333;}.panel-default > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#ddd;}.panel-primary{border-color:#2c3e50;}.panel-primary > .panel-heading{color:#fff;background-color:#2c3e50;border-color:#2c3e50;}.panel-primary > .panel-heading + .panel-collapse > .panel-body{border-top-color:#2c3e50;}.panel-primary > .panel-heading .badge{color:#2c3e50;background-color:#fff;}.panel-primary > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#2c3e50;}.panel-success{border-color:#d6e9c6;}.panel-success > .panel-heading{color:#18bc9c;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:#18bc9c;}.panel-success > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#d6e9c6;}.panel-info{border-color:#bce8f1;}.panel-info > .panel-heading{color:#3498db;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:#3498db;}.panel-info > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#bce8f1;}.panel-warning{border-color:#faebcc;}.panel-warning > .panel-heading{color:#f39c12;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:#f39c12;}.panel-warning > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#faebcc;}.panel-danger{border-color:#ebccd1;}.panel-danger > .panel-heading{color:#e74c3c;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:#e74c3c;}.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;left:0;bottom:0;height:100%;width: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:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15);}.well-lg{padding:24px;border-radius:5px;}.well-sm{padding:9px;border-radius:2px;}.close{float:right;font-size:18px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50);}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}.modal-open{overflow:hidden;}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0;}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out;}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-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;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:5px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0;}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000;}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0);}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50);}.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-left:5px;margin-bottom:0;}.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,0.5);box-shadow:0 5px 15px rgba(0,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-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.9;filter:alpha(opacity=90);}.tooltip.top{margin-top:-3px;padding:5px 0;}.tooltip.right{margin-left:3px;padding:0 5px;}.tooltip.bottom{margin-top:3px;padding:5px 0;}.tooltip.left{margin-left:-3px;padding:0 5px;}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:3px;}.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{bottom:0;right:5px;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-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);}.popover.top{margin-top:-10px;}.popover.right{margin-left:10px;}.popover.bottom{margin-top:10px;}.popover.left{margin-left:-10px;}.popover-title{margin:0;padding:8px 14px;font-size:12px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0;}.popover-content{padding:9px 14px;}.popover > .arrow,.popover > .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;}.popover > .arrow{border-width:11px;}.popover > .arrow:after{border-width:10px;content:"";}.popover.top > .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px;}.popover.top > .arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff;}.popover.right > .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25);}.popover.right > .arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff;}.popover.bottom > .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px;}.popover.bottom > .arrow:after{content:" ";top:1px;margin-left:-10px;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:#999999;border-left-color:rgba(0,0,0,0.25);}.popover.left > .arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px;}.carousel{position:relative;}.carousel-inner{position:relative;overflow:hidden;width:100%;}.carousel-inner > .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.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 0.6s ease-in-out;-moz-transition:-moz-transform 0.6s ease-in-out;-o-transition:-o-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px;}.carousel-inner > .item.next,.carousel-inner > .item.active.right{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0;}.carousel-inner > .item.prev,.carousel-inner > .item.active.left{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0;}.carousel-inner > .item.next.left,.carousel-inner > .item.prev.right,.carousel-inner > .item.active{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left: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;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0);}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1);}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1);}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block;}.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;line-height:1;font-family:serif;}.carousel-control .icon-prev:before{content:'\2039';}.carousel-control .icon-next:before{content:'\203a';}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center;}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff;}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);}.carousel-caption .btn{text-shadow:none;}@media screen and (min-width:768px){.carousel-control .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{left:20%;right: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{content:" ";display:table;}.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-left:auto;margin-right: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;}}
\ No newline at end of file
diff --git a/addons/weliam_smartcity/web/resource/address/fastadmin.css b/addons/weliam_smartcity/web/resource/address/fastadmin.css
new file mode 100644
index 0000000..9f9cc8b
--- /dev/null
+++ b/addons/weliam_smartcity/web/resource/address/fastadmin.css
@@ -0,0 +1,5832 @@
+/*!
+ * AdminLTE v2.3.7
+ * Author: Almsaeed Studio
+ * Website: Almsaeed Studio
+ * License: Open source - MIT
+ * Please visit http://opensource.org/licenses/MIT for more information
+!*/
+/*
+ * Core: General Layout Style
+ * -------------------------
+ */
+html,
+body {
+ min-height: 100%;
+}
+.layout-boxed html,
+.layout-boxed body {
+ height: 100%;
+}
+body {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+ font-weight: 400;
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+/* Layout */
+.wrapper {
+ min-height: 100%;
+ position: relative;
+ overflow: hidden;
+}
+.wrapper:before,
+.wrapper:after {
+ content: " ";
+ display: table;
+}
+.wrapper:after {
+ clear: both;
+}
+.wrapper:before,
+.wrapper:after {
+ content: " ";
+ display: table;
+}
+.wrapper:after {
+ clear: both;
+}
+.layout-boxed .wrapper {
+ max-width: 1250px;
+ margin: 0 auto;
+ min-height: 100%;
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.5);
+ position: relative;
+}
+.layout-boxed {
+ background: url('../img/boxed-bg.jpg') repeat fixed;
+}
+/*
+ * Content Wrapper - contains the main content
+ * ```.right-side has been deprecated as of v2.0.0 in favor of .content-wrapper ```
+ */
+.content-wrapper,
+.right-side,
+.main-footer {
+ -webkit-transition: -webkit-transform 0.3s ease-in-out, margin 0.3s ease-in-out;
+ -moz-transition: -moz-transform 0.3s ease-in-out, margin 0.3s ease-in-out;
+ -o-transition: -o-transform 0.3s ease-in-out, margin 0.3s ease-in-out;
+ transition: transform 0.3s ease-in-out, margin 0.3s ease-in-out;
+ margin-left: 230px;
+ z-index: 820;
+}
+.layout-top-nav .content-wrapper,
+.layout-top-nav .right-side,
+.layout-top-nav .main-footer {
+ margin-left: 0;
+}
+@media (max-width: 767px) {
+ .content-wrapper,
+ .right-side,
+ .main-footer {
+ margin-left: 0;
+ }
+}
+@media (min-width: 768px) {
+ .sidebar-collapse .content-wrapper,
+ .sidebar-collapse .right-side,
+ .sidebar-collapse .main-footer {
+ margin-left: 0;
+ }
+}
+@media (max-width: 767px) {
+ .sidebar-open .content-wrapper,
+ .sidebar-open .right-side,
+ .sidebar-open .main-footer {
+ -webkit-transform: translate(230px, 0);
+ -ms-transform: translate(230px, 0);
+ -o-transform: translate(230px, 0);
+ transform: translate(230px, 0);
+ }
+}
+.content-wrapper,
+.right-side {
+ min-height: 100%;
+ background-color: #ecf0f5;
+ z-index: 800;
+}
+.main-footer {
+ background: #fff;
+ padding: 15px;
+ color: #444;
+ border-top: 1px solid #d2d6de;
+}
+/* Fixed layout */
+.fixed .main-header,
+.fixed .main-sidebar,
+.fixed .left-side {
+ position: fixed;
+}
+.fixed .main-header {
+ top: 0;
+ right: 0;
+ left: 0;
+}
+.fixed .content-wrapper,
+.fixed .right-side {
+ padding-top: 50px;
+}
+@media (max-width: 767px) {
+ .fixed .content-wrapper,
+ .fixed .right-side {
+ padding-top: 100px;
+ }
+}
+.fixed.layout-boxed .wrapper {
+ max-width: 100%;
+}
+body.hold-transition .content-wrapper,
+body.hold-transition .right-side,
+body.hold-transition .main-footer,
+body.hold-transition .main-sidebar,
+body.hold-transition .left-side,
+body.hold-transition .main-header .navbar,
+body.hold-transition .main-header .logo {
+ /* Fix for IE */
+ -webkit-transition: none;
+ -o-transition: none;
+ transition: none;
+}
+/* Content */
+.content {
+ min-height: 250px;
+ padding: 15px;
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+/* H1 - H6 font */
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+ font-family: 'Source Sans Pro', sans-serif;
+}
+/* General Links */
+a {
+ color: #3c8dbc;
+}
+a:hover,
+a:active,
+a:focus {
+ outline: none;
+ text-decoration: none;
+ color: #72afd2;
+}
+/* Page Header */
+.page-header {
+ margin: 10px 0 20px 0;
+ font-size: 22px;
+}
+.page-header > small {
+ color: #666;
+ display: block;
+ margin-top: 5px;
+}
+/*
+ * Component: Main Header
+ * ----------------------
+ */
+.main-header {
+ position: relative;
+ max-height: 100px;
+ z-index: 1030;
+}
+.main-header .navbar {
+ -webkit-transition: margin-left 0.3s ease-in-out;
+ -o-transition: margin-left 0.3s ease-in-out;
+ transition: margin-left 0.3s ease-in-out;
+ margin-bottom: 0;
+ margin-left: 230px;
+ border: none;
+ min-height: 50px;
+ border-radius: 0;
+}
+.layout-top-nav .main-header .navbar {
+ margin-left: 0;
+}
+.main-header #navbar-search-input.form-control {
+ background: rgba(255, 255, 255, 0.2);
+ border-color: transparent;
+}
+.main-header #navbar-search-input.form-control:focus,
+.main-header #navbar-search-input.form-control:active {
+ border-color: rgba(0, 0, 0, 0.1);
+ background: rgba(255, 255, 255, 0.9);
+}
+.main-header #navbar-search-input.form-control::-moz-placeholder {
+ color: #ccc;
+ opacity: 1;
+}
+.main-header #navbar-search-input.form-control:-ms-input-placeholder {
+ color: #ccc;
+}
+.main-header #navbar-search-input.form-control::-webkit-input-placeholder {
+ color: #ccc;
+}
+.main-header .navbar-custom-menu,
+.main-header .navbar-right {
+ float: right;
+}
+@media (max-width: 991px) {
+ .main-header .navbar-custom-menu a,
+ .main-header .navbar-right a {
+ color: inherit;
+ background: transparent;
+ }
+}
+@media (max-width: 767px) {
+ .main-header .navbar-right {
+ float: none;
+ }
+ .navbar-collapse .main-header .navbar-right {
+ margin: 7.5px -15px;
+ }
+ .main-header .navbar-right > li {
+ color: inherit;
+ border: 0;
+ }
+}
+.main-header .sidebar-toggle {
+ float: left;
+ background-color: transparent;
+ background-image: none;
+ padding: 16.5px 15px;
+ font-family: fontAwesome;
+}
+.main-header .sidebar-toggle:before {
+ content: "\f0c9";
+}
+.main-header .sidebar-toggle:hover {
+ color: #fff;
+}
+.main-header .sidebar-toggle:focus,
+.main-header .sidebar-toggle:active {
+ background: transparent;
+}
+.main-header .sidebar-toggle .icon-bar {
+ display: none;
+}
+.main-header .navbar .nav > li.user > a > .fa,
+.main-header .navbar .nav > li.user > a > .glyphicon,
+.main-header .navbar .nav > li.user > a > .ion {
+ margin-right: 5px;
+}
+.main-header .navbar .nav > li > a > .label {
+ position: absolute;
+ top: 9px;
+ right: 7px;
+ text-align: center;
+ font-size: 9px;
+ padding: 2px 3px;
+ line-height: .9;
+}
+.main-header .logo {
+ -webkit-transition: width 0.3s ease-in-out;
+ -o-transition: width 0.3s ease-in-out;
+ transition: width 0.3s ease-in-out;
+ display: block;
+ float: left;
+ height: 50px;
+ font-size: 20px;
+ line-height: 50px;
+ text-align: center;
+ width: 230px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ padding: 0 15px;
+ font-weight: 300;
+ overflow: hidden;
+}
+.main-header .logo .logo-lg {
+ display: block;
+}
+.main-header .logo .logo-mini {
+ display: none;
+}
+.main-header .navbar-brand {
+ color: #fff;
+}
+.content-header {
+ position: relative;
+ padding: 15px 15px 0 15px;
+}
+.content-header > h1 {
+ margin: 0;
+ font-size: 24px;
+}
+.content-header > h1 > small {
+ font-size: 15px;
+ display: inline-block;
+ padding-left: 4px;
+ font-weight: 300;
+}
+.content-header > .breadcrumb {
+ float: right;
+ background: transparent;
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: 12px;
+ padding: 7px 5px;
+ position: absolute;
+ top: 15px;
+ right: 10px;
+ border-radius: 2px;
+}
+.content-header > .breadcrumb > li > a {
+ color: #444;
+ text-decoration: none;
+ display: inline-block;
+}
+.content-header > .breadcrumb > li > a > .fa,
+.content-header > .breadcrumb > li > a > .glyphicon,
+.content-header > .breadcrumb > li > a > .ion {
+ margin-right: 5px;
+}
+.content-header > .breadcrumb > li + li:before {
+ content: '>\00a0';
+}
+@media (max-width: 991px) {
+ .content-header > .breadcrumb {
+ position: relative;
+ margin-top: 5px;
+ top: 0;
+ right: 0;
+ float: none;
+ background: #d2d6de;
+ padding-left: 10px;
+ }
+ .content-header > .breadcrumb li:before {
+ color: #97a0b3;
+ }
+}
+.navbar-toggle {
+ color: #fff;
+ border: 0;
+ margin: 0;
+ padding: 16.5px 15px;
+}
+@media (max-width: 991px) {
+ .navbar-custom-menu .navbar-nav > li {
+ float: left;
+ }
+ .navbar-custom-menu .navbar-nav {
+ margin: 0;
+ float: left;
+ }
+ .navbar-custom-menu .navbar-nav > li > a {
+ padding-top: 15px;
+ padding-bottom: 15px;
+ line-height: 20px;
+ }
+}
+@media (max-width: 767px) {
+ .main-header {
+ position: relative;
+ }
+ .main-header .logo,
+ .main-header .navbar {
+ width: 100%;
+ float: none;
+ }
+ .main-header .navbar {
+ margin: 0;
+ }
+ .main-header .navbar-custom-menu {
+ float: right;
+ }
+}
+@media (max-width: 991px) {
+ .navbar-collapse.pull-left {
+ float: none !important;
+ }
+ .navbar-collapse.pull-left + .navbar-custom-menu {
+ display: block;
+ position: absolute;
+ top: 0;
+ right: 40px;
+ }
+}
+/*
+ * Component: Sidebar
+ * ------------------
+ */
+.main-sidebar,
+.left-side {
+ position: absolute;
+ top: 0;
+ left: 0;
+ padding-top: 50px;
+ min-height: 100%;
+ width: 230px;
+ z-index: 810;
+ -webkit-transition: -webkit-transform 0.3s ease-in-out, width 0.3s ease-in-out;
+ -moz-transition: -moz-transform 0.3s ease-in-out, width 0.3s ease-in-out;
+ -o-transition: -o-transform 0.3s ease-in-out, width 0.3s ease-in-out;
+ transition: transform 0.3s ease-in-out, width 0.3s ease-in-out;
+}
+@media (max-width: 767px) {
+ .main-sidebar,
+ .left-side {
+ padding-top: 100px;
+ }
+}
+@media (max-width: 767px) {
+ .main-sidebar,
+ .left-side {
+ -webkit-transform: translate(-230px, 0);
+ -ms-transform: translate(-230px, 0);
+ -o-transform: translate(-230px, 0);
+ transform: translate(-230px, 0);
+ }
+}
+@media (min-width: 768px) {
+ .sidebar-collapse .main-sidebar,
+ .sidebar-collapse .left-side {
+ -webkit-transform: translate(-230px, 0);
+ -ms-transform: translate(-230px, 0);
+ -o-transform: translate(-230px, 0);
+ transform: translate(-230px, 0);
+ }
+}
+@media (max-width: 767px) {
+ .sidebar-open .main-sidebar,
+ .sidebar-open .left-side {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+ }
+}
+.sidebar {
+ padding-bottom: 10px;
+}
+.sidebar-form input:focus {
+ border-color: transparent;
+}
+.user-panel {
+ position: relative;
+ width: 100%;
+ padding: 10px;
+ overflow: hidden;
+}
+.user-panel:before,
+.user-panel:after {
+ content: " ";
+ display: table;
+}
+.user-panel:after {
+ clear: both;
+}
+.user-panel:before,
+.user-panel:after {
+ content: " ";
+ display: table;
+}
+.user-panel:after {
+ clear: both;
+}
+.user-panel > .image > img {
+ width: 100%;
+ max-width: 45px;
+ height: auto;
+}
+.user-panel > .info {
+ padding: 5px 5px 5px 15px;
+ line-height: 1;
+ position: absolute;
+ left: 55px;
+}
+.user-panel > .info > p {
+ font-weight: 600;
+ margin-bottom: 9px;
+}
+.user-panel > .info > a {
+ text-decoration: none;
+ padding-right: 5px;
+ margin-top: 3px;
+ font-size: 11px;
+}
+.user-panel > .info > a > .fa,
+.user-panel > .info > a > .ion,
+.user-panel > .info > a > .glyphicon {
+ margin-right: 3px;
+}
+.sidebar-menu {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+.sidebar-menu > li {
+ position: relative;
+ margin: 0;
+ padding: 0;
+}
+.sidebar-menu > li > a {
+ padding: 12px 5px 12px 15px;
+ display: block;
+}
+.sidebar-menu > li > a > .fa,
+.sidebar-menu > li > a > .glyphicon,
+.sidebar-menu > li > a > .ion {
+ width: 20px;
+}
+.sidebar-menu > li .label,
+.sidebar-menu > li .badge {
+ margin-right: 5px;
+}
+.sidebar-menu > li .badge {
+ margin-top: 3px;
+}
+.sidebar-menu li.header {
+ padding: 10px 25px 10px 15px;
+ font-size: 12px;
+}
+.sidebar-menu li > a > .fa-angle-left,
+.sidebar-menu li > a > .pull-right-container > .fa-angle-left {
+ width: auto;
+ height: auto;
+ padding: 0;
+ margin-right: 10px;
+}
+.sidebar-menu li.active > a > .fa-angle-left,
+.sidebar-menu li.active > a > .pull-right-container > .fa-angle-left {
+ -webkit-transform: rotate(-90deg);
+ -ms-transform: rotate(-90deg);
+ -o-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+}
+.sidebar-menu li.active > .treeview-menu {
+ display: block;
+}
+.sidebar-menu .treeview-menu {
+ display: none;
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ padding-left: 5px;
+}
+.sidebar-menu .treeview-menu .treeview-menu {
+ padding-left: 20px;
+}
+.sidebar-menu .treeview-menu > li {
+ margin: 0;
+}
+.sidebar-menu .treeview-menu > li > a {
+ padding: 12px 5px 12px 15px;
+ display: block;
+ font-size: 12px;
+}
+.sidebar-menu .treeview-menu > li > a > .fa,
+.sidebar-menu .treeview-menu > li > a > .glyphicon,
+.sidebar-menu .treeview-menu > li > a > .ion {
+ width: 20px;
+}
+.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-left,
+.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-down,
+.sidebar-menu .treeview-menu > li > a > .fa-angle-left,
+.sidebar-menu .treeview-menu > li > a > .fa-angle-down {
+ width: auto;
+}
+/*
+ * Component: Sidebar Mini
+ */
+@media (min-width: 768px) {
+ .sidebar-mini.sidebar-collapse .content-wrapper,
+ .sidebar-mini.sidebar-collapse .right-side,
+ .sidebar-mini.sidebar-collapse .main-footer {
+ margin-left: 50px !important;
+ z-index: 840;
+ }
+ .sidebar-mini.sidebar-collapse .main-sidebar {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+ width: 50px !important;
+ z-index: 850;
+ }
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li {
+ position: relative;
+ }
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li > a {
+ margin-right: 0;
+ }
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span {
+ border-top-right-radius: 4px;
+ }
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span {
+ border-bottom-right-radius: 4px;
+ }
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
+ padding-top: 5px;
+ padding-bottom: 5px;
+ border-bottom-right-radius: 4px;
+ }
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right),
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu {
+ display: block !important;
+ position: absolute;
+ width: 180px;
+ left: 50px;
+ }
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span {
+ top: 0;
+ margin-left: -3px;
+ padding: 12px 5px 12px 20px;
+ background-color: inherit;
+ }
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container {
+ float: right;
+ width: auto!important;
+ left: 200px!important;
+ top: 10px!important;
+ }
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container > .label:not(:first-of-type) {
+ display: none;
+ }
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu {
+ top: 44px;
+ margin-left: 0;
+ }
+ .sidebar-mini.sidebar-collapse .main-sidebar .user-panel > .info,
+ .sidebar-mini.sidebar-collapse .sidebar-form,
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span,
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu,
+ .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > .pull-right,
+ .sidebar-mini.sidebar-collapse .sidebar-menu li.header {
+ display: none !important;
+ -webkit-transform: translateZ(0);
+ }
+ .sidebar-mini.sidebar-collapse .main-header .logo {
+ width: 50px;
+ }
+ .sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini {
+ display: block;
+ margin-left: -15px;
+ margin-right: -15px;
+ font-size: 18px;
+ }
+ .sidebar-mini.sidebar-collapse .main-header .logo > .logo-lg {
+ display: none;
+ }
+ .sidebar-mini.sidebar-collapse .main-header .navbar {
+ margin-left: 50px;
+ }
+}
+.sidebar-menu,
+.main-sidebar .user-panel,
+.sidebar-menu > li.header {
+ white-space: nowrap;
+ overflow: hidden;
+}
+.sidebar-menu:hover {
+ overflow: visible;
+}
+.sidebar-form,
+.sidebar-menu > li.header {
+ overflow: hidden;
+ text-overflow: clip;
+}
+.sidebar-menu li > a {
+ position: relative;
+}
+.sidebar-menu li > a > .pull-right-container {
+ position: absolute;
+ right: 10px;
+ top: 50%;
+ margin-top: -7px;
+}
+/*
+ * Component: Control sidebar. By default, this is the right sidebar.
+ */
+.control-sidebar-bg {
+ position: fixed;
+ z-index: 1000;
+ bottom: 0;
+}
+.control-sidebar-bg,
+.control-sidebar {
+ top: 0;
+ right: -230px;
+ width: 230px;
+ -webkit-transition: right 0.3s ease-in-out;
+ -o-transition: right 0.3s ease-in-out;
+ transition: right 0.3s ease-in-out;
+}
+.control-sidebar {
+ position: absolute;
+ padding-top: 50px;
+ z-index: 1010;
+}
+@media (max-width: 768px) {
+ .control-sidebar {
+ padding-top: 100px;
+ }
+}
+.control-sidebar > .tab-content {
+ padding: 10px 15px;
+}
+.control-sidebar.control-sidebar-open,
+.control-sidebar.control-sidebar-open + .control-sidebar-bg {
+ right: 0;
+}
+.control-sidebar-open .control-sidebar-bg,
+.control-sidebar-open .control-sidebar {
+ right: 0;
+}
+@media (min-width: 768px) {
+ .control-sidebar-open .content-wrapper,
+ .control-sidebar-open .right-side,
+ .control-sidebar-open .main-footer {
+ margin-right: 230px;
+ }
+}
+.nav-tabs.control-sidebar-tabs > li:first-of-type > a,
+.nav-tabs.control-sidebar-tabs > li:first-of-type > a:hover,
+.nav-tabs.control-sidebar-tabs > li:first-of-type > a:focus {
+ border-left-width: 0;
+}
+.nav-tabs.control-sidebar-tabs > li > a {
+ border-radius: 0;
+}
+.nav-tabs.control-sidebar-tabs > li > a,
+.nav-tabs.control-sidebar-tabs > li > a:hover {
+ border-top: none;
+ border-right: none;
+ border-left: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+}
+.nav-tabs.control-sidebar-tabs > li > a .icon {
+ font-size: 16px;
+}
+.nav-tabs.control-sidebar-tabs > li.active > a,
+.nav-tabs.control-sidebar-tabs > li.active > a:hover,
+.nav-tabs.control-sidebar-tabs > li.active > a:focus,
+.nav-tabs.control-sidebar-tabs > li.active > a:active {
+ border-top: none;
+ border-right: none;
+ border-bottom: none;
+}
+@media (max-width: 768px) {
+ .nav-tabs.control-sidebar-tabs {
+ display: table;
+ }
+ .nav-tabs.control-sidebar-tabs > li {
+ display: table-cell;
+ }
+}
+.control-sidebar-heading {
+ font-weight: 400;
+ font-size: 16px;
+ padding: 10px 0;
+ margin-bottom: 10px;
+}
+.control-sidebar-subheading {
+ display: block;
+ font-weight: 400;
+ font-size: 14px;
+}
+.control-sidebar-menu {
+ list-style: none;
+ padding: 0;
+ margin: 0 -15px;
+}
+.control-sidebar-menu > li > a {
+ display: block;
+ padding: 10px 15px;
+}
+.control-sidebar-menu > li > a:before,
+.control-sidebar-menu > li > a:after {
+ content: " ";
+ display: table;
+}
+.control-sidebar-menu > li > a:after {
+ clear: both;
+}
+.control-sidebar-menu > li > a:before,
+.control-sidebar-menu > li > a:after {
+ content: " ";
+ display: table;
+}
+.control-sidebar-menu > li > a:after {
+ clear: both;
+}
+.control-sidebar-menu > li > a > .control-sidebar-subheading {
+ margin-top: 0;
+}
+.control-sidebar-menu .menu-icon {
+ float: left;
+ width: 35px;
+ height: 35px;
+ border-radius: 50%;
+ text-align: center;
+ line-height: 35px;
+}
+.control-sidebar-menu .menu-info {
+ margin-left: 45px;
+ margin-top: 3px;
+}
+.control-sidebar-menu .menu-info > .control-sidebar-subheading {
+ margin: 0;
+}
+.control-sidebar-menu .menu-info > p {
+ margin: 0;
+ font-size: 11px;
+}
+.control-sidebar-menu .progress {
+ margin: 0;
+}
+.control-sidebar-dark {
+ color: #b8c7ce;
+}
+.control-sidebar-dark,
+.control-sidebar-dark + .control-sidebar-bg {
+ background: #222d32;
+}
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs {
+ border-bottom: #1c2529;
+}
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a {
+ background: #181f23;
+ color: #b8c7ce;
+}
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a,
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus {
+ border-left-color: #141a1d;
+ border-bottom-color: #141a1d;
+}
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus,
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:active {
+ background: #1c2529;
+}
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover {
+ color: #fff;
+}
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a,
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:hover,
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:focus,
+.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:active {
+ background: #222d32;
+ color: #fff;
+}
+.control-sidebar-dark .control-sidebar-heading,
+.control-sidebar-dark .control-sidebar-subheading {
+ color: #fff;
+}
+.control-sidebar-dark .control-sidebar-menu > li > a:hover {
+ background: #1e282c;
+}
+.control-sidebar-dark .control-sidebar-menu > li > a .menu-info > p {
+ color: #b8c7ce;
+}
+.control-sidebar-light {
+ color: #5e5e5e;
+}
+.control-sidebar-light,
+.control-sidebar-light + .control-sidebar-bg {
+ background: #f9fafc;
+ border-left: 1px solid #d2d6de;
+}
+.control-sidebar-light .nav-tabs.control-sidebar-tabs {
+ border-bottom: #d2d6de;
+}
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a {
+ background: #e8ecf4;
+ color: #444;
+}
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a,
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus {
+ border-left-color: #d2d6de;
+ border-bottom-color: #d2d6de;
+}
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus,
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:active {
+ background: #eff1f7;
+}
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a,
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:hover,
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:focus,
+.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:active {
+ background: #f9fafc;
+ color: #111;
+}
+.control-sidebar-light .control-sidebar-heading,
+.control-sidebar-light .control-sidebar-subheading {
+ color: #111;
+}
+.control-sidebar-light .control-sidebar-menu {
+ margin-left: -14px;
+}
+.control-sidebar-light .control-sidebar-menu > li > a:hover {
+ background: #f4f4f5;
+}
+.control-sidebar-light .control-sidebar-menu > li > a .menu-info > p {
+ color: #5e5e5e;
+}
+/*
+ * Component: Dropdown menus
+ * -------------------------
+ */
+/*Dropdowns in general*/
+.dropdown-menu {
+ box-shadow: none;
+ border-color: #eee;
+}
+.dropdown-menu > li > a {
+ /*color: #777;*/
+}
+.dropdown-menu > li > a > .glyphicon,
+.dropdown-menu > li > a > .fa,
+.dropdown-menu > li > a > .ion {
+ margin-right: 10px;
+}
+.dropdown-menu > li > a:hover {
+ background-color: #e1e3e9;
+ color: #333;
+}
+.dropdown-menu > .divider {
+ background-color: #eee;
+}
+.navbar-nav > .notifications-menu > .dropdown-menu,
+.navbar-nav > .messages-menu > .dropdown-menu,
+.navbar-nav > .tasks-menu > .dropdown-menu {
+ width: 280px;
+ padding: 0 0 0 0;
+ margin: 0;
+ top: 100%;
+}
+.navbar-nav > .notifications-menu > .dropdown-menu > li,
+.navbar-nav > .messages-menu > .dropdown-menu > li,
+.navbar-nav > .tasks-menu > .dropdown-menu > li {
+ position: relative;
+}
+.navbar-nav > .notifications-menu > .dropdown-menu > li.header,
+.navbar-nav > .messages-menu > .dropdown-menu > li.header,
+.navbar-nav > .tasks-menu > .dropdown-menu > li.header {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+ background-color: #ffffff;
+ padding: 7px 10px;
+ border-bottom: 1px solid #f4f4f4;
+ color: #444444;
+ font-size: 14px;
+}
+.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,
+.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,
+.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 4px;
+ border-bottom-left-radius: 4px;
+ font-size: 12px;
+ background-color: #fff;
+ padding: 7px 10px;
+ border-bottom: 1px solid #eeeeee;
+ color: #444 !important;
+ text-align: center;
+}
+@media (max-width: 991px) {
+ .navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,
+ .navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,
+ .navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a {
+ background: #fff !important;
+ color: #444 !important;
+ }
+}
+.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover,
+.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover,
+.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover {
+ text-decoration: none;
+ font-weight: normal;
+}
+.navbar-nav > .notifications-menu > .dropdown-menu > li .menu,
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu,
+.navbar-nav > .tasks-menu > .dropdown-menu > li .menu {
+ max-height: 200px;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ overflow-x: hidden;
+}
+.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a,
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a,
+.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a {
+ display: block;
+ white-space: nowrap;
+ /* Prevent text from breaking */
+ border-bottom: 1px solid #f4f4f4;
+}
+.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover,
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover,
+.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover {
+ background: #f4f4f4;
+ text-decoration: none;
+}
+.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a {
+ color: #444444;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ padding: 10px;
+}
+.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon,
+.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa,
+.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion {
+ width: 20px;
+}
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a {
+ margin: 0;
+ padding: 10px 10px;
+}
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img {
+ margin: auto 10px auto auto;
+ width: 40px;
+ height: 40px;
+}
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 {
+ padding: 0;
+ margin: 0 0 0 45px;
+ color: #444444;
+ font-size: 15px;
+ position: relative;
+}
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small {
+ color: #999999;
+ font-size: 10px;
+ position: absolute;
+ top: 0;
+ right: 0;
+}
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p {
+ margin: 0 0 0 45px;
+ font-size: 12px;
+ color: #888888;
+}
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before,
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after {
+ content: " ";
+ display: table;
+}
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after {
+ clear: both;
+}
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before,
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after {
+ content: " ";
+ display: table;
+}
+.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after {
+ clear: both;
+}
+.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a {
+ padding: 10px;
+}
+.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3 {
+ font-size: 14px;
+ padding: 0;
+ margin: 0 0 10px 0;
+ color: #666666;
+}
+.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress {
+ padding: 0;
+ margin: 0;
+}
+.navbar-nav > .user-menu > .dropdown-menu {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+ padding: 1px 0 0 0;
+ border-top-width: 0;
+ width: 280px;
+}
+.navbar-nav > .user-menu > .dropdown-menu,
+.navbar-nav > .user-menu > .dropdown-menu > .user-body {
+ border-bottom-right-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+.navbar-nav > .user-menu > .dropdown-menu > li.user-header {
+ height: 175px;
+ padding: 10px;
+ text-align: center;
+}
+.navbar-nav > .user-menu > .dropdown-menu > li.user-header > img {
+ z-index: 5;
+ height: 90px;
+ width: 90px;
+ border: 3px solid;
+ border-color: transparent;
+ border-color: rgba(255, 255, 255, 0.2);
+}
+.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p {
+ z-index: 5;
+ color: #fff;
+ color: rgba(255, 255, 255, 0.8);
+ font-size: 17px;
+ margin-top: 10px;
+}
+.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small {
+ display: block;
+ font-size: 12px;
+}
+.navbar-nav > .user-menu > .dropdown-menu > .user-body {
+ padding: 15px;
+ border-bottom: 1px solid #f4f4f4;
+ border-top: 1px solid #dddddd;
+}
+.navbar-nav > .user-menu > .dropdown-menu > .user-body:before,
+.navbar-nav > .user-menu > .dropdown-menu > .user-body:after {
+ content: " ";
+ display: table;
+}
+.navbar-nav > .user-menu > .dropdown-menu > .user-body:after {
+ clear: both;
+}
+.navbar-nav > .user-menu > .dropdown-menu > .user-body:before,
+.navbar-nav > .user-menu > .dropdown-menu > .user-body:after {
+ content: " ";
+ display: table;
+}
+.navbar-nav > .user-menu > .dropdown-menu > .user-body:after {
+ clear: both;
+}
+.navbar-nav > .user-menu > .dropdown-menu > .user-body a {
+ color: #444 !important;
+}
+@media (max-width: 991px) {
+ .navbar-nav > .user-menu > .dropdown-menu > .user-body a {
+ background: #fff !important;
+ color: #444 !important;
+ }
+}
+.navbar-nav > .user-menu > .dropdown-menu > .user-footer {
+ background-color: #f9f9f9;
+ padding: 10px;
+}
+.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before,
+.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after {
+ content: " ";
+ display: table;
+}
+.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after {
+ clear: both;
+}
+.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before,
+.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after {
+ content: " ";
+ display: table;
+}
+.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after {
+ clear: both;
+}
+.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default {
+ color: #666666;
+}
+@media (max-width: 991px) {
+ .navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default:hover {
+ background-color: #f9f9f9;
+ }
+}
+.navbar-nav > .user-menu .user-image {
+ float: left;
+ width: 25px;
+ height: 25px;
+ border-radius: 50%;
+ margin-right: 10px;
+ margin-top: -2px;
+}
+@media (max-width: 767px) {
+ .navbar-nav > .user-menu .user-image {
+ float: none;
+ margin-right: 0;
+ margin-top: -8px;
+ line-height: 10px;
+ }
+}
+/* Add fade animation to dropdown menus by appending
+ the class .animated-dropdown-menu to the .dropdown-menu ul (or ol)*/
+.open:not(.dropup) > .animated-dropdown-menu {
+ backface-visibility: visible !important;
+ -webkit-animation: flipInX 0.7s both;
+ -o-animation: flipInX 0.7s both;
+ animation: flipInX 0.7s both;
+}
+@keyframes flipInX {
+ 0% {
+ transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+ transition-timing-function: ease-in;
+ opacity: 0;
+ }
+ 40% {
+ transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+ transition-timing-function: ease-in;
+ }
+ 60% {
+ transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+ opacity: 1;
+ }
+ 80% {
+ transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+ }
+ 100% {
+ transform: perspective(400px);
+ }
+}
+@-webkit-keyframes flipInX {
+ 0% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+ -webkit-transition-timing-function: ease-in;
+ opacity: 0;
+ }
+ 40% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+ -webkit-transition-timing-function: ease-in;
+ }
+ 60% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+ opacity: 1;
+ }
+ 80% {
+ -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+ }
+ 100% {
+ -webkit-transform: perspective(400px);
+ }
+}
+/* Fix dropdown menu in navbars */
+.navbar-custom-menu > .navbar-nav > li {
+ position: relative;
+}
+.navbar-custom-menu > .navbar-nav > li > .dropdown-menu {
+ position: absolute;
+ right: 0;
+ left: auto;
+}
+@media (max-width: 991px) {
+ .navbar-custom-menu > .navbar-nav {
+ float: right;
+ }
+ .navbar-custom-menu > .navbar-nav > li {
+ position: static;
+ }
+ .navbar-custom-menu > .navbar-nav > li > .dropdown-menu {
+ position: absolute;
+ right: 5%;
+ left: auto;
+ border: 1px solid #ddd;
+ background: #fff;
+ }
+}
+.dropdown-submenu {
+ position: relative;
+}
+.dropdown-submenu > .dropdown-menu {
+ top: 0;
+ left: 100%;
+ margin-top: -6px;
+ margin-left: -1px;
+ border-radius: 3px 0 3px 3px;
+}
+.dropdown-submenu:hover > .dropdown-menu {
+ display: block;
+}
+.dropdown-submenu:hover > a:after {
+ border-left-color: #fff;
+}
+.dropdown-submenu > a:after {
+ display: block;
+ content: " ";
+ float: right;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+ border-width: 5px 0 5px 5px;
+ border-left-color: #ccc;
+ margin-top: 5px;
+ margin-right: -10px;
+}
+.dropdown-submenu.pull-left {
+ float: none;
+}
+.dropdown-submenu.pull-left > .dropdown-menu {
+ left: -100%;
+ margin-left: 10px;
+ border-radius: 3px 0 3px 3px;
+}
+/*
+ * Component: Form
+ * ---------------
+ */
+.form-control {
+ border-radius: 0;
+ box-shadow: none;
+ border-color: #d2d6de;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+.form-control:focus {
+ border-color: #3c8dbc;
+ box-shadow: none;
+}
+.form-control::-moz-placeholder,
+.form-control:-ms-input-placeholder,
+.form-control::-webkit-input-placeholder {
+ color: #bbb;
+ opacity: 1;
+}
+.form-control .btn {
+ border-radius: 0;
+}
+select.form-control {
+ -webkit-appearance: none;
+ -webkit-border-radius: 0px;
+ background-position: right 50%;
+ background-repeat: no-repeat;
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAMCAYAAABSgIzaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZFNDEwNjlGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZFNDEwNkFGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkU0MTA2N0Y3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkU0MTA2OEY3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuGsgwQAAAA5SURBVHjaYvz//z8DOYCJgUxAf42MQIzTk0D/M+KzkRGPoQSdykiKJrBGpOhgJFYTWNEIiEeAAAMAzNENEOH+do8AAAAASUVORK5CYII=);
+}
+.form-group.has-success label {
+ color: #18bc9c;
+}
+.form-group.has-success .form-control,
+.form-group.has-success .input-group-addon {
+ border-color: #18bc9c;
+ box-shadow: none;
+}
+.form-group.has-success .help-block {
+ color: #18bc9c;
+}
+.form-group.has-warning label {
+ color: #f39c12;
+}
+.form-group.has-warning .form-control,
+.form-group.has-warning .input-group-addon {
+ border-color: #f39c12;
+ box-shadow: none;
+}
+.form-group.has-warning .help-block {
+ color: #f39c12;
+}
+.form-group.has-error label {
+ color: #e74c3c;
+}
+.form-group.has-error .form-control,
+.form-group.has-error .input-group-addon {
+ border-color: #e74c3c;
+ box-shadow: none;
+}
+.form-group.has-error .help-block {
+ color: #e74c3c;
+}
+/* Input group */
+.input-group .input-group-addon {
+ border-radius: 0;
+ border-color: #d2d6de;
+ background-color: #fff;
+}
+/* button groups */
+.btn-group-vertical .btn.btn-flat:first-of-type,
+.btn-group-vertical .btn.btn-flat:last-of-type {
+ border-radius: 0;
+}
+.icheck > label {
+ padding-left: 0;
+}
+/* support Font Awesome icons in form-control */
+.form-control-feedback.fa {
+ line-height: 31px;
+}
+.input-lg + .form-control-feedback.fa,
+.input-group-lg + .form-control-feedback.fa,
+.form-group-lg .form-control + .form-control-feedback.fa {
+ line-height: 42px;
+}
+.input-sm + .form-control-feedback.fa,
+.input-group-sm + .form-control-feedback.fa,
+.form-group-sm .form-control + .form-control-feedback.fa {
+ line-height: 28px;
+}
+/*
+ * Component: Progress Bar
+ * -----------------------
+ */
+.progress,
+.progress > .progress-bar {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.progress,
+.progress > .progress-bar,
+.progress .progress-bar,
+.progress > .progress-bar .progress-bar {
+ border-radius: 1px;
+}
+/* size variation */
+.progress.sm,
+.progress-sm {
+ height: 10px;
+}
+.progress.sm,
+.progress-sm,
+.progress.sm .progress-bar,
+.progress-sm .progress-bar {
+ border-radius: 1px;
+}
+.progress.xs,
+.progress-xs {
+ height: 7px;
+}
+.progress.xs,
+.progress-xs,
+.progress.xs .progress-bar,
+.progress-xs .progress-bar {
+ border-radius: 1px;
+}
+.progress.xxs,
+.progress-xxs {
+ height: 3px;
+}
+.progress.xxs,
+.progress-xxs,
+.progress.xxs .progress-bar,
+.progress-xxs .progress-bar {
+ border-radius: 1px;
+}
+/* Vertical bars */
+.progress.vertical {
+ position: relative;
+ width: 30px;
+ height: 200px;
+ display: inline-block;
+ margin-right: 10px;
+}
+.progress.vertical > .progress-bar {
+ width: 100%;
+ position: absolute;
+ bottom: 0;
+}
+.progress.vertical.sm,
+.progress.vertical.progress-sm {
+ width: 20px;
+}
+.progress.vertical.xs,
+.progress.vertical.progress-xs {
+ width: 10px;
+}
+.progress.vertical.xxs,
+.progress.vertical.progress-xxs {
+ width: 3px;
+}
+.progress-group .progress-text {
+ font-weight: 600;
+}
+.progress-group .progress-number {
+ float: right;
+}
+/* Remove margins from progress bars when put in a table */
+.table tr > td .progress {
+ margin: 0;
+}
+.progress-bar-light-blue,
+.progress-bar-primary {
+ background-color: #3c8dbc;
+}
+.progress-striped .progress-bar-light-blue,
+.progress-striped .progress-bar-primary {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-green,
+.progress-bar-success {
+ background-color: #18bc9c;
+}
+.progress-striped .progress-bar-green,
+.progress-striped .progress-bar-success {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-aqua,
+.progress-bar-info {
+ background-color: #3498db;
+}
+.progress-striped .progress-bar-aqua,
+.progress-striped .progress-bar-info {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-yellow,
+.progress-bar-warning {
+ background-color: #f39c12;
+}
+.progress-striped .progress-bar-yellow,
+.progress-striped .progress-bar-warning {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-red,
+.progress-bar-danger {
+ background-color: #e74c3c;
+}
+.progress-striped .progress-bar-red,
+.progress-striped .progress-bar-danger {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+/*
+ * Component: Small Box
+ * --------------------
+ */
+.small-box {
+ border-radius: 2px;
+ position: relative;
+ display: block;
+ margin-bottom: 20px;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+}
+.small-box > .inner {
+ padding: 10px;
+}
+.small-box > .small-box-footer {
+ position: relative;
+ text-align: center;
+ padding: 3px 0;
+ color: #fff;
+ color: rgba(255, 255, 255, 0.8);
+ display: block;
+ z-index: 10;
+ background: rgba(0, 0, 0, 0.1);
+ text-decoration: none;
+}
+.small-box > .small-box-footer:hover {
+ color: #fff;
+ background: rgba(0, 0, 0, 0.15);
+}
+.small-box h3 {
+ font-size: 38px;
+ font-weight: bold;
+ margin: 0 0 10px 0;
+ white-space: nowrap;
+ padding: 0;
+}
+.small-box p {
+ font-size: 15px;
+}
+.small-box p > small {
+ display: block;
+ color: #f9f9f9;
+ font-size: 13px;
+ margin-top: 5px;
+}
+.small-box h3,
+.small-box p {
+ z-index: 5;
+}
+.small-box .icon {
+ -webkit-transition: all 0.3s linear;
+ -o-transition: all 0.3s linear;
+ transition: all 0.3s linear;
+ position: absolute;
+ top: -10px;
+ right: 10px;
+ z-index: 0;
+ font-size: 90px;
+ color: rgba(0, 0, 0, 0.15);
+}
+.small-box:hover {
+ text-decoration: none;
+ color: #f9f9f9;
+}
+.small-box:hover .icon {
+ font-size: 95px;
+}
+@media (max-width: 767px) {
+ .small-box {
+ text-align: center;
+ }
+ .small-box .icon {
+ display: none;
+ }
+ .small-box p {
+ font-size: 12px;
+ }
+}
+/*
+ * Component: Box
+ * --------------
+ */
+.box {
+ position: relative;
+ border-radius: 3px;
+ background: #ffffff;
+ border-top: 3px solid #d2d6de;
+ margin-bottom: 20px;
+ width: 100%;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+}
+.box.box-primary {
+ border-top-color: #3c8dbc;
+}
+.box.box-info {
+ border-top-color: #3498db;
+}
+.box.box-danger {
+ border-top-color: #e74c3c;
+}
+.box.box-warning {
+ border-top-color: #f39c12;
+}
+.box.box-success {
+ border-top-color: #18bc9c;
+}
+.box.box-default {
+ border-top-color: #d2d6de;
+}
+.box.collapsed-box .box-body,
+.box.collapsed-box .box-footer {
+ display: none;
+}
+.box .nav-stacked > li {
+ border-bottom: 1px solid #f4f4f4;
+ margin: 0;
+}
+.box .nav-stacked > li:last-of-type {
+ border-bottom: none;
+}
+.box.height-control .box-body {
+ max-height: 300px;
+ overflow: auto;
+}
+.box .border-right {
+ border-right: 1px solid #f4f4f4;
+}
+.box .border-left {
+ border-left: 1px solid #f4f4f4;
+}
+.box.box-solid {
+ border-top: 0;
+}
+.box.box-solid > .box-header .btn.btn-default {
+ background: transparent;
+}
+.box.box-solid > .box-header .btn:hover,
+.box.box-solid > .box-header a:hover {
+ background: rgba(0, 0, 0, 0.1);
+}
+.box.box-solid.box-default {
+ border: 1px solid #d2d6de;
+}
+.box.box-solid.box-default > .box-header {
+ color: #444;
+ background: #d2d6de;
+ background-color: #d2d6de;
+}
+.box.box-solid.box-default > .box-header a,
+.box.box-solid.box-default > .box-header .btn {
+ color: #444;
+}
+.box.box-solid.box-primary {
+ border: 1px solid #3c8dbc;
+}
+.box.box-solid.box-primary > .box-header {
+ color: #fff;
+ background: #3c8dbc;
+ background-color: #3c8dbc;
+}
+.box.box-solid.box-primary > .box-header a,
+.box.box-solid.box-primary > .box-header .btn {
+ color: #fff;
+}
+.box.box-solid.box-info {
+ border: 1px solid #3498db;
+}
+.box.box-solid.box-info > .box-header {
+ color: #fff;
+ background: #3498db;
+ background-color: #3498db;
+}
+.box.box-solid.box-info > .box-header a,
+.box.box-solid.box-info > .box-header .btn {
+ color: #fff;
+}
+.box.box-solid.box-danger {
+ border: 1px solid #e74c3c;
+}
+.box.box-solid.box-danger > .box-header {
+ color: #fff;
+ background: #e74c3c;
+ background-color: #e74c3c;
+}
+.box.box-solid.box-danger > .box-header a,
+.box.box-solid.box-danger > .box-header .btn {
+ color: #fff;
+}
+.box.box-solid.box-warning {
+ border: 1px solid #f39c12;
+}
+.box.box-solid.box-warning > .box-header {
+ color: #fff;
+ background: #f39c12;
+ background-color: #f39c12;
+}
+.box.box-solid.box-warning > .box-header a,
+.box.box-solid.box-warning > .box-header .btn {
+ color: #fff;
+}
+.box.box-solid.box-success {
+ border: 1px solid #18bc9c;
+}
+.box.box-solid.box-success > .box-header {
+ color: #fff;
+ background: #18bc9c;
+ background-color: #18bc9c;
+}
+.box.box-solid.box-success > .box-header a,
+.box.box-solid.box-success > .box-header .btn {
+ color: #fff;
+}
+.box.box-solid > .box-header > .box-tools .btn {
+ border: 0;
+ box-shadow: none;
+}
+.box.box-solid[class*='bg'] > .box-header {
+ color: #fff;
+}
+.box .box-group > .box {
+ margin-bottom: 5px;
+}
+.box .knob-label {
+ text-align: center;
+ color: #333;
+ font-weight: 100;
+ font-size: 12px;
+ margin-bottom: 0.3em;
+}
+.box > .overlay,
+.overlay-wrapper > .overlay,
+.box > .loading-img,
+.overlay-wrapper > .loading-img {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+.box .overlay,
+.overlay-wrapper .overlay {
+ z-index: 50;
+ background: rgba(255, 255, 255, 0.7);
+ border-radius: 3px;
+}
+.box .overlay > .fa,
+.overlay-wrapper .overlay > .fa {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin-left: -15px;
+ margin-top: -15px;
+ color: #000;
+ font-size: 30px;
+}
+.box .overlay.dark,
+.overlay-wrapper .overlay.dark {
+ background: rgba(0, 0, 0, 0.5);
+}
+.box-header:before,
+.box-body:before,
+.box-footer:before,
+.box-header:after,
+.box-body:after,
+.box-footer:after {
+ content: " ";
+ display: table;
+}
+.box-header:after,
+.box-body:after,
+.box-footer:after {
+ clear: both;
+}
+.box-header:before,
+.box-body:before,
+.box-footer:before,
+.box-header:after,
+.box-body:after,
+.box-footer:after {
+ content: " ";
+ display: table;
+}
+.box-header:after,
+.box-body:after,
+.box-footer:after {
+ clear: both;
+}
+.box-header {
+ color: #444;
+ display: block;
+ padding: 10px;
+ position: relative;
+}
+.box-header.with-border {
+ border-bottom: 1px solid #f4f4f4;
+}
+.collapsed-box .box-header.with-border {
+ border-bottom: none;
+}
+.box-header > .fa,
+.box-header > .glyphicon,
+.box-header > .ion,
+.box-header .box-title {
+ display: inline-block;
+ font-size: 18px;
+ margin: 0;
+ line-height: 1;
+}
+.box-header > .fa,
+.box-header > .glyphicon,
+.box-header > .ion {
+ margin-right: 5px;
+}
+.box-header > .box-tools {
+ position: absolute;
+ right: 10px;
+ top: 5px;
+}
+.box-header > .box-tools [data-toggle="tooltip"] {
+ position: relative;
+}
+.box-header > .box-tools.pull-right .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+.btn-box-tool {
+ padding: 5px;
+ font-size: 12px;
+ background: transparent;
+ color: #97a0b3;
+}
+.open .btn-box-tool,
+.btn-box-tool:hover {
+ color: #606c84;
+}
+.btn-box-tool.btn:active {
+ box-shadow: none;
+}
+.box-body {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+ padding: 10px;
+}
+.no-header .box-body {
+ border-top-right-radius: 3px;
+ border-top-left-radius: 3px;
+}
+.box-body > .table {
+ margin-bottom: 0;
+}
+.box-body .fc {
+ margin-top: 5px;
+}
+.box-body .full-width-chart {
+ margin: -19px;
+}
+.box-body.no-padding .full-width-chart {
+ margin: -9px;
+}
+.box-body .box-pane {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 3px;
+}
+.box-body .box-pane-right {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 0;
+}
+.box-footer {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+ border-top: 1px solid #f4f4f4;
+ padding: 10px;
+ background-color: #fff;
+}
+.chart-legend {
+ margin: 10px 0;
+}
+@media (max-width: 991px) {
+ .chart-legend > li {
+ float: left;
+ margin-right: 10px;
+ }
+}
+.box-comments {
+ background: #f7f7f7;
+}
+.box-comments .box-comment {
+ padding: 8px 0;
+ border-bottom: 1px solid #eee;
+}
+.box-comments .box-comment:before,
+.box-comments .box-comment:after {
+ content: " ";
+ display: table;
+}
+.box-comments .box-comment:after {
+ clear: both;
+}
+.box-comments .box-comment:before,
+.box-comments .box-comment:after {
+ content: " ";
+ display: table;
+}
+.box-comments .box-comment:after {
+ clear: both;
+}
+.box-comments .box-comment:last-of-type {
+ border-bottom: 0;
+}
+.box-comments .box-comment:first-of-type {
+ padding-top: 0;
+}
+.box-comments .box-comment img {
+ float: left;
+}
+.box-comments .comment-text {
+ margin-left: 40px;
+ color: #555;
+}
+.box-comments .username {
+ color: #444;
+ display: block;
+ font-weight: 600;
+}
+.box-comments .text-muted {
+ font-weight: 400;
+ font-size: 12px;
+}
+/* Widget: TODO LIST */
+.todo-list {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ overflow: auto;
+}
+.todo-list > li {
+ border-radius: 2px;
+ padding: 10px;
+ background: #f4f4f4;
+ margin-bottom: 2px;
+ border-left: 2px solid #e6e7e8;
+ color: #444;
+}
+.todo-list > li:last-of-type {
+ margin-bottom: 0;
+}
+.todo-list > li > input[type='checkbox'] {
+ margin: 0 10px 0 5px;
+}
+.todo-list > li .text {
+ display: inline-block;
+ margin-left: 5px;
+ font-weight: 600;
+}
+.todo-list > li .label {
+ margin-left: 10px;
+ font-size: 9px;
+}
+.todo-list > li .tools {
+ display: none;
+ float: right;
+ color: #e74c3c;
+}
+.todo-list > li .tools > .fa,
+.todo-list > li .tools > .glyphicon,
+.todo-list > li .tools > .ion {
+ margin-right: 5px;
+ cursor: pointer;
+}
+.todo-list > li:hover .tools {
+ display: inline-block;
+}
+.todo-list > li.done {
+ color: #999;
+}
+.todo-list > li.done .text {
+ text-decoration: line-through;
+ font-weight: 500;
+}
+.todo-list > li.done .label {
+ background: #d2d6de !important;
+}
+.todo-list .danger {
+ border-left-color: #e74c3c;
+}
+.todo-list .warning {
+ border-left-color: #f39c12;
+}
+.todo-list .info {
+ border-left-color: #3498db;
+}
+.todo-list .success {
+ border-left-color: #18bc9c;
+}
+.todo-list .primary {
+ border-left-color: #3c8dbc;
+}
+.todo-list .handle {
+ display: inline-block;
+ cursor: move;
+ margin: 0 5px;
+}
+/* Chat widget (DEPRECATED - this will be removed in the next major release. Use Direct Chat instead)*/
+.chat {
+ padding: 5px 20px 5px 10px;
+}
+.chat .item {
+ margin-bottom: 10px;
+}
+.chat .item:before,
+.chat .item:after {
+ content: " ";
+ display: table;
+}
+.chat .item:after {
+ clear: both;
+}
+.chat .item:before,
+.chat .item:after {
+ content: " ";
+ display: table;
+}
+.chat .item:after {
+ clear: both;
+}
+.chat .item > img {
+ width: 40px;
+ height: 40px;
+ border: 2px solid transparent;
+ border-radius: 50%;
+}
+.chat .item > .online {
+ border: 2px solid #18bc9c;
+}
+.chat .item > .offline {
+ border: 2px solid #e74c3c;
+}
+.chat .item > .message {
+ margin-left: 55px;
+ margin-top: -40px;
+}
+.chat .item > .message > .name {
+ display: block;
+ font-weight: 600;
+}
+.chat .item > .attachment {
+ border-radius: 3px;
+ background: #f4f4f4;
+ margin-left: 65px;
+ margin-right: 15px;
+ padding: 10px;
+}
+.chat .item > .attachment > h4 {
+ margin: 0 0 5px 0;
+ font-weight: 600;
+ font-size: 14px;
+}
+.chat .item > .attachment > p,
+.chat .item > .attachment > .filename {
+ font-weight: 600;
+ font-size: 13px;
+ font-style: italic;
+ margin: 0;
+}
+.chat .item > .attachment:before,
+.chat .item > .attachment:after {
+ content: " ";
+ display: table;
+}
+.chat .item > .attachment:after {
+ clear: both;
+}
+.chat .item > .attachment:before,
+.chat .item > .attachment:after {
+ content: " ";
+ display: table;
+}
+.chat .item > .attachment:after {
+ clear: both;
+}
+.box-input {
+ max-width: 200px;
+}
+.modal .panel-body {
+ color: #444;
+}
+/*
+ * Component: Info Box
+ * -------------------
+ */
+.info-box {
+ display: block;
+ min-height: 90px;
+ background: #fff;
+ width: 100%;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ border-radius: 2px;
+ margin-bottom: 15px;
+}
+.info-box small {
+ font-size: 14px;
+}
+.info-box .progress {
+ background: rgba(0, 0, 0, 0.2);
+ margin: 5px -10px 5px -10px;
+ height: 2px;
+}
+.info-box .progress,
+.info-box .progress .progress-bar {
+ border-radius: 0;
+}
+.info-box .progress .progress-bar {
+ background: #fff;
+}
+.info-box-icon {
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+ display: block;
+ float: left;
+ height: 90px;
+ width: 90px;
+ text-align: center;
+ font-size: 45px;
+ line-height: 90px;
+ background: rgba(0, 0, 0, 0.2);
+}
+.info-box-icon > img {
+ max-width: 100%;
+}
+.info-box-content {
+ padding: 5px 10px;
+ margin-left: 90px;
+}
+.info-box-number {
+ display: block;
+ font-weight: bold;
+ font-size: 18px;
+}
+.progress-description,
+.info-box-text {
+ display: block;
+ font-size: 14px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.info-box-text {
+ text-transform: uppercase;
+}
+.info-box-more {
+ display: block;
+}
+.progress-description {
+ margin: 0;
+}
+/*
+ * Component: Timeline
+ * -------------------
+ */
+.timeline {
+ position: relative;
+ margin: 0 0 30px 0;
+ padding: 0;
+ list-style: none;
+}
+.timeline:before {
+ content: '';
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ width: 4px;
+ background: #ddd;
+ left: 31px;
+ margin: 0;
+ border-radius: 2px;
+}
+.timeline > li {
+ position: relative;
+ margin-right: 10px;
+ margin-bottom: 15px;
+}
+.timeline > li:before,
+.timeline > li:after {
+ content: " ";
+ display: table;
+}
+.timeline > li:after {
+ clear: both;
+}
+.timeline > li:before,
+.timeline > li:after {
+ content: " ";
+ display: table;
+}
+.timeline > li:after {
+ clear: both;
+}
+.timeline > li > .timeline-item {
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ border-radius: 3px;
+ margin-top: 0;
+ background: #fff;
+ color: #444;
+ margin-left: 60px;
+ margin-right: 15px;
+ padding: 0;
+ position: relative;
+}
+.timeline > li > .timeline-item > .time {
+ color: #999;
+ float: right;
+ padding: 10px;
+ font-size: 12px;
+}
+.timeline > li > .timeline-item > .timeline-header {
+ margin: 0;
+ color: #555;
+ border-bottom: 1px solid #f4f4f4;
+ padding: 10px;
+ font-size: 16px;
+ line-height: 1.1;
+}
+.timeline > li > .timeline-item > .timeline-header > a {
+ font-weight: 600;
+}
+.timeline > li > .timeline-item > .timeline-body,
+.timeline > li > .timeline-item > .timeline-footer {
+ padding: 10px;
+}
+.timeline > li > .fa,
+.timeline > li > .glyphicon,
+.timeline > li > .ion {
+ width: 30px;
+ height: 30px;
+ font-size: 15px;
+ line-height: 30px;
+ position: absolute;
+ color: #666;
+ background: #d2d6de;
+ border-radius: 50%;
+ text-align: center;
+ left: 18px;
+ top: 0;
+}
+.timeline > .time-label > span {
+ font-weight: 600;
+ padding: 5px;
+ display: inline-block;
+ background-color: #fff;
+ border-radius: 4px;
+}
+.timeline-inverse > li > .timeline-item {
+ background: #f0f0f0;
+ border: 1px solid #ddd;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.timeline-inverse > li > .timeline-item > .timeline-header {
+ border-bottom-color: #ddd;
+}
+/*
+ * Component: Button
+ * -----------------
+ */
+.btn {
+ /*.border-radius(@btn-border-radius);*/
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border: 1px solid transparent;
+}
+.btn.uppercase {
+ text-transform: uppercase;
+}
+.btn.btn-flat {
+ border-radius: 0;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ border-width: 1px;
+}
+.btn:active {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.btn:focus {
+ outline: none;
+}
+.btn.btn-file {
+ position: relative;
+ overflow: hidden;
+}
+.btn.btn-file > input[type='file'] {
+ position: absolute;
+ top: 0;
+ right: 0;
+ min-width: 100%;
+ min-height: 100%;
+ font-size: 100px;
+ text-align: right;
+ opacity: 0;
+ filter: alpha(opacity=0);
+ outline: none;
+ background: white;
+ cursor: inherit;
+ display: block;
+}
+.btn-default {
+ background-color: #f4f4f4;
+ color: #444;
+ border-color: #ddd;
+}
+.btn-default:hover,
+.btn-default:active,
+.btn-default.hover {
+ background-color: #e7e7e7;
+}
+.btn-outline {
+ border: 1px solid #fff;
+ background: transparent;
+ color: #fff;
+}
+.btn-outline:hover,
+.btn-outline:focus,
+.btn-outline:active {
+ color: rgba(255, 255, 255, 0.7);
+ border-color: rgba(255, 255, 255, 0.7);
+}
+.btn-link {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn[class*='bg-']:hover {
+ -webkit-box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2);
+}
+.btn-app {
+ border-radius: 3px;
+ position: relative;
+ padding: 15px 5px;
+ margin: 0 0 10px 10px;
+ min-width: 80px;
+ height: 60px;
+ text-align: center;
+ color: #666;
+ border: 1px solid #ddd;
+ background-color: #f4f4f4;
+ font-size: 12px;
+}
+.btn-app > .fa,
+.btn-app > .glyphicon,
+.btn-app > .ion {
+ font-size: 20px;
+ display: block;
+}
+.btn-app:hover {
+ background: #f4f4f4;
+ color: #444;
+ border-color: #aaa;
+}
+.btn-app:active,
+.btn-app:focus {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.btn-app > .badge {
+ position: absolute;
+ top: -3px;
+ right: -10px;
+ font-size: 10px;
+ font-weight: 400;
+}
+/*
+ * Component: Callout
+ * ------------------
+ */
+.callout {
+ border-radius: 3px;
+ margin: 0 0 20px 0;
+ padding: 15px 30px 15px 15px;
+ border-left: 5px solid #eee;
+}
+.callout a {
+ color: #fff;
+ text-decoration: underline;
+}
+.callout a:hover {
+ color: #eee;
+}
+.callout h4 {
+ margin-top: 0;
+ font-weight: 600;
+}
+.callout p:last-child {
+ margin-bottom: 0;
+}
+.callout code,
+.callout .highlight {
+ background-color: #fff;
+}
+.callout.callout-danger {
+ border-color: #d62c1a;
+}
+.callout.callout-warning {
+ border-color: #c87f0a;
+}
+.callout.callout-info {
+ border-color: #217dbb;
+}
+.callout.callout-success {
+ border-color: #128f76;
+}
+/*
+ * Component: alert
+ * ----------------
+ */
+.alert {
+ border-radius: 3px;
+}
+.alert h4 {
+ font-weight: 600;
+}
+.alert .icon {
+ margin-right: 10px;
+}
+.alert .close {
+ color: #000;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+}
+.alert .close:hover {
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+.alert a {
+ color: #fff;
+ text-decoration: underline;
+}
+.alert-success {
+ border-color: #15a589;
+}
+.alert-danger,
+.alert-error {
+ border-color: #e43725;
+}
+.alert-warning {
+ border-color: #e08e0b;
+}
+.alert-info {
+ border-color: #258cd1;
+}
+.alert-primary-light {
+ background-color: #E2E5E8;
+ border-color: #D0D4D8;
+ color: #85878A;
+}
+.alert-primary-light a {
+ color: #787a7d;
+}
+.alert-success-light {
+ background-color: #dff0d8;
+ border-color: #d1eac8;
+ color: #468847;
+}
+.alert-success-light a {
+ color: #3d773e;
+}
+.alert-danger-light,
+.alert-error-light {
+ background-color: #f2dede;
+ border-color: #ebcdcd;
+ color: #b94a48;
+}
+.alert-danger-light a,
+.alert-error-light a {
+ color: #a74240;
+}
+.alert-warning-light {
+ background-color: #fcf8e3;
+ border-color: #faf3cd;
+ color: #c09853;
+}
+.alert-warning-light a {
+ color: #b78c43;
+}
+.alert-info-light {
+ background-color: #d9edf7;
+ border-color: #c6e4f3;
+ color: #3a87ad;
+}
+.alert-info-light a {
+ color: #34789a;
+}
+/*
+ * Component: Nav
+ * --------------
+ */
+.nav > li > a:hover,
+.nav > li > a:active,
+.nav > li > a:focus {
+ color: #444;
+ background: #f7f7f7;
+}
+/* NAV PILLS */
+.nav-pills > li > a {
+ border-radius: 0;
+ border-top: 3px solid transparent;
+ color: #444;
+}
+.nav-pills > li > a > .fa,
+.nav-pills > li > a > .glyphicon,
+.nav-pills > li > a > .ion {
+ margin-right: 5px;
+}
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+ border-top-color: #3c8dbc;
+}
+.nav-pills > li.active > a {
+ font-weight: 600;
+}
+/* NAV STACKED */
+.nav-stacked > li > a {
+ border-radius: 0;
+ border-top: 0;
+ border-left: 3px solid transparent;
+ color: #444;
+}
+.nav-stacked > li.active > a,
+.nav-stacked > li.active > a:hover {
+ background: transparent;
+ color: #444;
+ border-top: 0;
+ border-left-color: #3c8dbc;
+}
+.nav-stacked > li.header {
+ border-bottom: 1px solid #ddd;
+ color: #777;
+ margin-bottom: 10px;
+ padding: 5px 10px;
+ text-transform: uppercase;
+}
+/* NAV TABS */
+.nav-tabs-custom {
+ margin-bottom: 20px;
+ background: #fff;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ border-radius: 3px;
+}
+.nav-tabs-custom > .nav-tabs {
+ margin: 0;
+ border-bottom-color: #f4f4f4;
+ border-top-right-radius: 3px;
+ border-top-left-radius: 3px;
+}
+.nav-tabs-custom > .nav-tabs > li {
+ border-top: 3px solid transparent;
+ margin-bottom: -2px;
+ margin-right: 5px;
+}
+.nav-tabs-custom > .nav-tabs > li > a {
+ color: #444;
+ border-radius: 0;
+}
+.nav-tabs-custom > .nav-tabs > li > a.text-muted {
+ color: #999;
+}
+.nav-tabs-custom > .nav-tabs > li > a,
+.nav-tabs-custom > .nav-tabs > li > a:hover {
+ background: transparent;
+ margin: 0;
+}
+.nav-tabs-custom > .nav-tabs > li > a:hover {
+ color: #999;
+}
+.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover,
+.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus,
+.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active {
+ border-color: transparent;
+}
+.nav-tabs-custom > .nav-tabs > li.active {
+ border-top-color: #3c8dbc;
+}
+.nav-tabs-custom > .nav-tabs > li.active > a,
+.nav-tabs-custom > .nav-tabs > li.active:hover > a {
+ background-color: #fff;
+ color: #444;
+}
+.nav-tabs-custom > .nav-tabs > li.active > a {
+ border-top-color: transparent;
+ border-left-color: #f4f4f4;
+ border-right-color: #f4f4f4;
+}
+.nav-tabs-custom > .nav-tabs > li:first-of-type {
+ margin-left: 0;
+}
+.nav-tabs-custom > .nav-tabs > li:first-of-type.active > a {
+ border-left-color: transparent;
+}
+.nav-tabs-custom > .nav-tabs.pull-right {
+ float: none !important;
+}
+.nav-tabs-custom > .nav-tabs.pull-right > li {
+ float: right;
+}
+.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type {
+ margin-right: 0;
+}
+.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a {
+ border-left-width: 1px;
+}
+.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a {
+ border-left-color: #f4f4f4;
+ border-right-color: transparent;
+}
+.nav-tabs-custom > .nav-tabs > li.header {
+ line-height: 35px;
+ padding: 0 10px;
+ font-size: 20px;
+ color: #444;
+}
+.nav-tabs-custom > .nav-tabs > li.header > .fa,
+.nav-tabs-custom > .nav-tabs > li.header > .glyphicon,
+.nav-tabs-custom > .nav-tabs > li.header > .ion {
+ margin-right: 5px;
+}
+.nav-tabs-custom > .tab-content {
+ background: #fff;
+ padding: 10px;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.nav-tabs-custom .dropdown.open > a:active,
+.nav-tabs-custom .dropdown.open > a:focus {
+ background: transparent;
+ color: #999;
+}
+.nav-tabs-custom.tab-primary > .nav-tabs > li.active {
+ border-top-color: #3c8dbc;
+}
+.nav-tabs-custom.tab-info > .nav-tabs > li.active {
+ border-top-color: #3498db;
+}
+.nav-tabs-custom.tab-danger > .nav-tabs > li.active {
+ border-top-color: #e74c3c;
+}
+.nav-tabs-custom.tab-warning > .nav-tabs > li.active {
+ border-top-color: #f39c12;
+}
+.nav-tabs-custom.tab-success > .nav-tabs > li.active {
+ border-top-color: #18bc9c;
+}
+.nav-tabs-custom.tab-default > .nav-tabs > li.active {
+ border-top-color: #d2d6de;
+}
+/* PAGINATION */
+.pagination > li > a {
+ background: #fafafa;
+ color: #666;
+}
+.pagination.pagination-flat > li > a {
+ border-radius: 0 !important;
+}
+/*
+ * Component: Products List
+ * ------------------------
+ */
+.products-list {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+.products-list > .item {
+ border-radius: 3px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ padding: 10px 0;
+ background: #fff;
+}
+.products-list > .item:before,
+.products-list > .item:after {
+ content: " ";
+ display: table;
+}
+.products-list > .item:after {
+ clear: both;
+}
+.products-list > .item:before,
+.products-list > .item:after {
+ content: " ";
+ display: table;
+}
+.products-list > .item:after {
+ clear: both;
+}
+.products-list .product-img {
+ float: left;
+}
+.products-list .product-img img {
+ width: 50px;
+ height: 50px;
+}
+.products-list .product-info {
+ margin-left: 60px;
+}
+.products-list .product-title {
+ font-weight: 600;
+}
+.products-list .product-description {
+ display: block;
+ color: #999;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.product-list-in-box > .item {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border-radius: 0;
+ border-bottom: 1px solid #f4f4f4;
+}
+.product-list-in-box > .item:last-of-type {
+ border-bottom-width: 0;
+}
+/*
+ * Component: Table
+ * ----------------
+ */
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ border-top: 1px solid #f4f4f4;
+}
+.table > thead > tr > th {
+ border-bottom: 2px solid #f4f4f4;
+}
+.table tr td .progress {
+ margin-top: 5px;
+}
+.table-bordered {
+ border: 1px solid #f4f4f4;
+}
+.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 #f4f4f4;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ border-bottom-width: 2px;
+}
+.table.no-border,
+.table.no-border td,
+.table.no-border th {
+ border: 0;
+}
+/* .text-center in tables */
+table.text-center,
+table.text-center td,
+table.text-center th {
+ text-align: center;
+}
+.table.align th {
+ text-align: left;
+}
+.table.align td {
+ text-align: right;
+}
+/*
+ * Component: Direct Chat
+ * ----------------------
+ */
+.direct-chat .box-body {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+ position: relative;
+ overflow-x: hidden;
+ padding: 0;
+}
+.direct-chat.chat-pane-open .direct-chat-contacts {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+}
+.direct-chat-messages {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+ padding: 10px;
+ height: 250px;
+ overflow: auto;
+}
+.direct-chat-msg,
+.direct-chat-text {
+ display: block;
+}
+.direct-chat-msg {
+ margin-bottom: 10px;
+}
+.direct-chat-msg:before,
+.direct-chat-msg:after {
+ content: " ";
+ display: table;
+}
+.direct-chat-msg:after {
+ clear: both;
+}
+.direct-chat-msg:before,
+.direct-chat-msg:after {
+ content: " ";
+ display: table;
+}
+.direct-chat-msg:after {
+ clear: both;
+}
+.direct-chat-messages,
+.direct-chat-contacts {
+ -webkit-transition: -webkit-transform 0.5s ease-in-out;
+ -moz-transition: -moz-transform 0.5s ease-in-out;
+ -o-transition: -o-transform 0.5s ease-in-out;
+ transition: transform 0.5s ease-in-out;
+}
+.direct-chat-text {
+ border-radius: 5px;
+ position: relative;
+ padding: 5px 10px;
+ background: #d2d6de;
+ border: 1px solid #d2d6de;
+ margin: 5px 0 0 50px;
+ color: #444;
+}
+.direct-chat-text:after,
+.direct-chat-text:before {
+ position: absolute;
+ right: 100%;
+ top: 15px;
+ border: solid transparent;
+ border-right-color: #d2d6de;
+ content: ' ';
+ height: 0;
+ width: 0;
+ pointer-events: none;
+}
+.direct-chat-text:after {
+ border-width: 5px;
+ margin-top: -5px;
+}
+.direct-chat-text:before {
+ border-width: 6px;
+ margin-top: -6px;
+}
+.right .direct-chat-text {
+ margin-right: 50px;
+ margin-left: 0;
+}
+.right .direct-chat-text:after,
+.right .direct-chat-text:before {
+ right: auto;
+ left: 100%;
+ border-right-color: transparent;
+ border-left-color: #d2d6de;
+}
+.direct-chat-img {
+ border-radius: 50%;
+ float: left;
+ width: 40px;
+ height: 40px;
+}
+.right .direct-chat-img {
+ float: right;
+}
+.direct-chat-info {
+ display: block;
+ margin-bottom: 2px;
+ font-size: 12px;
+}
+.direct-chat-name {
+ font-weight: 600;
+}
+.direct-chat-timestamp {
+ color: #999;
+}
+.direct-chat-contacts-open .direct-chat-contacts {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+}
+.direct-chat-contacts {
+ -webkit-transform: translate(101%, 0);
+ -ms-transform: translate(101%, 0);
+ -o-transform: translate(101%, 0);
+ transform: translate(101%, 0);
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ height: 250px;
+ width: 100%;
+ background: #222d32;
+ color: #fff;
+ overflow: auto;
+}
+.contacts-list > li {
+ border-bottom: 1px solid rgba(0, 0, 0, 0.2);
+ padding: 10px;
+ margin: 0;
+}
+.contacts-list > li:before,
+.contacts-list > li:after {
+ content: " ";
+ display: table;
+}
+.contacts-list > li:after {
+ clear: both;
+}
+.contacts-list > li:before,
+.contacts-list > li:after {
+ content: " ";
+ display: table;
+}
+.contacts-list > li:after {
+ clear: both;
+}
+.contacts-list > li:last-of-type {
+ border-bottom: none;
+}
+.contacts-list-img {
+ border-radius: 50%;
+ width: 40px;
+ float: left;
+}
+.contacts-list-info {
+ margin-left: 45px;
+ color: #fff;
+}
+.contacts-list-name,
+.contacts-list-status {
+ display: block;
+}
+.contacts-list-name {
+ font-weight: 600;
+}
+.contacts-list-status {
+ font-size: 12px;
+}
+.contacts-list-date {
+ color: #aaa;
+ font-weight: normal;
+}
+.contacts-list-msg {
+ color: #999;
+}
+.direct-chat-danger .right > .direct-chat-text {
+ background: #e74c3c;
+ border-color: #e74c3c;
+ color: #fff;
+}
+.direct-chat-danger .right > .direct-chat-text:after,
+.direct-chat-danger .right > .direct-chat-text:before {
+ border-left-color: #e74c3c;
+}
+.direct-chat-primary .right > .direct-chat-text {
+ background: #3c8dbc;
+ border-color: #3c8dbc;
+ color: #fff;
+}
+.direct-chat-primary .right > .direct-chat-text:after,
+.direct-chat-primary .right > .direct-chat-text:before {
+ border-left-color: #3c8dbc;
+}
+.direct-chat-warning .right > .direct-chat-text {
+ background: #f39c12;
+ border-color: #f39c12;
+ color: #fff;
+}
+.direct-chat-warning .right > .direct-chat-text:after,
+.direct-chat-warning .right > .direct-chat-text:before {
+ border-left-color: #f39c12;
+}
+.direct-chat-info .right > .direct-chat-text {
+ background: #3498db;
+ border-color: #3498db;
+ color: #fff;
+}
+.direct-chat-info .right > .direct-chat-text:after,
+.direct-chat-info .right > .direct-chat-text:before {
+ border-left-color: #3498db;
+}
+.direct-chat-success .right > .direct-chat-text {
+ background: #18bc9c;
+ border-color: #18bc9c;
+ color: #fff;
+}
+.direct-chat-success .right > .direct-chat-text:after,
+.direct-chat-success .right > .direct-chat-text:before {
+ border-left-color: #18bc9c;
+}
+/*
+ * Component: Users List
+ * ---------------------
+ */
+.users-list > li {
+ width: 25%;
+ float: left;
+ padding: 10px;
+ text-align: center;
+}
+.users-list > li img {
+ border-radius: 50%;
+ max-width: 100%;
+ height: auto;
+}
+.users-list > li > a:hover,
+.users-list > li > a:hover .users-list-name {
+ color: #999;
+}
+.users-list-name,
+.users-list-date {
+ display: block;
+}
+.users-list-name {
+ font-weight: 600;
+ color: #444;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.users-list-date {
+ color: #999;
+ font-size: 12px;
+}
+/*
+ * Component: Carousel
+ * -------------------
+ */
+.carousel-control.left,
+.carousel-control.right {
+ background-image: none;
+}
+.carousel-control > .fa {
+ font-size: 40px;
+ position: absolute;
+ top: 50%;
+ z-index: 5;
+ display: inline-block;
+ margin-top: -20px;
+}
+/*
+ * Component: modal
+ * ----------------
+ */
+.modal {
+ background: rgba(0, 0, 0, 0.3);
+}
+.modal-content {
+ border-radius: 0;
+ -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125);
+ box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125);
+ border: 0;
+}
+@media (min-width: 768px) {
+ .modal-content {
+ -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125);
+ box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125);
+ }
+}
+.modal-header {
+ border-bottom-color: #f4f4f4;
+}
+.modal-footer {
+ border-top-color: #f4f4f4;
+}
+.modal-primary .modal-header,
+.modal-primary .modal-footer {
+ border-color: #307095;
+}
+.modal-warning .modal-header,
+.modal-warning .modal-footer {
+ border-color: #c87f0a;
+}
+.modal-info .modal-header,
+.modal-info .modal-footer {
+ border-color: #217dbb;
+}
+.modal-success .modal-header,
+.modal-success .modal-footer {
+ border-color: #128f76;
+}
+.modal-danger .modal-header,
+.modal-danger .modal-footer {
+ border-color: #d62c1a;
+}
+/*
+ * Component: Social Widgets
+ * -------------------------
+ */
+.box-widget {
+ border: none;
+ position: relative;
+}
+.widget-user .widget-user-header {
+ padding: 20px;
+ height: 120px;
+ border-top-right-radius: 3px;
+ border-top-left-radius: 3px;
+}
+.widget-user .widget-user-username {
+ margin-top: 0;
+ margin-bottom: 5px;
+ font-size: 25px;
+ font-weight: 300;
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
+}
+.widget-user .widget-user-desc {
+ margin-top: 0;
+}
+.widget-user .widget-user-image {
+ position: absolute;
+ top: 65px;
+ left: 50%;
+ margin-left: -45px;
+}
+.widget-user .widget-user-image > img {
+ width: 90px;
+ height: auto;
+ border: 3px solid #fff;
+}
+.widget-user .box-footer {
+ padding-top: 30px;
+}
+.widget-user-2 .widget-user-header {
+ padding: 20px;
+ border-top-right-radius: 3px;
+ border-top-left-radius: 3px;
+}
+.widget-user-2 .widget-user-username {
+ margin-top: 5px;
+ margin-bottom: 5px;
+ font-size: 25px;
+ font-weight: 300;
+}
+.widget-user-2 .widget-user-desc {
+ margin-top: 0;
+}
+.widget-user-2 .widget-user-username,
+.widget-user-2 .widget-user-desc {
+ margin-left: 75px;
+}
+.widget-user-2 .widget-user-image > img {
+ width: 65px;
+ height: auto;
+ float: left;
+}
+.close,
+.mailbox-attachment-close {
+ float: right;
+ font-size: 18px;
+ font-weight: bold;
+ line-height: 1;
+ color: #000;
+ text-shadow: 0 1px 0 #fff;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+}
+.close:hover,
+.close:focus {
+ color: #000;
+ text-decoration: none;
+ cursor: pointer;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+button.close {
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
+}
+.clearfix:before,
+.clearfix:after,
+.content:before,
+.content:after {
+ content: " ";
+ display: table;
+}
+.clearfix:after,
+.content:after {
+ clear: both;
+}
+.center-block {
+ display: block;
+ margin-left: auto;
+ margin-right: 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;
+}
+/*
+ * Page: Mailbox
+ * -------------
+ */
+.mailbox-messages > .table {
+ margin: 0;
+}
+.mailbox-controls {
+ padding: 5px;
+}
+.mailbox-controls.with-border {
+ border-bottom: 1px solid #f4f4f4;
+}
+.mailbox-read-info {
+ border-bottom: 1px solid #f4f4f4;
+ padding: 10px;
+}
+.mailbox-read-info h3 {
+ font-size: 20px;
+ margin: 0;
+}
+.mailbox-read-info h5 {
+ margin: 0;
+ padding: 5px 0 0 0;
+}
+.mailbox-read-time {
+ color: #999;
+ font-size: 13px;
+}
+.mailbox-read-message {
+ padding: 10px;
+}
+.mailbox-attachments li {
+ float: left;
+ width: 200px;
+ border: 1px solid #eee;
+ margin-bottom: 10px;
+ margin-right: 10px;
+}
+.mailbox-attachment-name {
+ font-weight: bold;
+ color: #666;
+}
+.mailbox-attachment-icon,
+.mailbox-attachment-info,
+.mailbox-attachment-size {
+ display: block;
+}
+.mailbox-attachment-info {
+ padding: 10px;
+ background: #f4f4f4;
+}
+.mailbox-attachment-size {
+ color: #999;
+ font-size: 12px;
+}
+.mailbox-attachment-icon {
+ text-align: center;
+ font-size: 65px;
+ color: #666;
+ padding: 20px 10px;
+}
+.mailbox-attachment-icon.has-img {
+ padding: 0;
+}
+.mailbox-attachment-icon.has-img > img {
+ max-width: 100%;
+ height: auto;
+}
+/*
+ * Page: Lock Screen
+ * -----------------
+ */
+/* ADD THIS CLASS TO THE TAG */
+.lockscreen {
+ background: #d2d6de;
+}
+.lockscreen-logo {
+ font-size: 35px;
+ text-align: center;
+ margin-bottom: 25px;
+ font-weight: 300;
+}
+.lockscreen-logo a {
+ color: #444;
+}
+.lockscreen-wrapper {
+ max-width: 400px;
+ margin: 0 auto;
+ margin-top: 10%;
+}
+/* User name [optional] */
+.lockscreen .lockscreen-name {
+ text-align: center;
+ font-weight: 600;
+}
+/* Will contain the image and the sign in form */
+.lockscreen-item {
+ border-radius: 4px;
+ padding: 0;
+ background: #fff;
+ position: relative;
+ margin: 10px auto 30px auto;
+ width: 290px;
+}
+/* User image */
+.lockscreen-image {
+ border-radius: 50%;
+ position: absolute;
+ left: -10px;
+ top: -25px;
+ background: #fff;
+ padding: 5px;
+ z-index: 10;
+}
+.lockscreen-image > img {
+ border-radius: 50%;
+ width: 70px;
+ height: 70px;
+}
+/* Contains the password input and the login button */
+.lockscreen-credentials {
+ margin-left: 70px;
+}
+.lockscreen-credentials .form-control {
+ border: 0;
+}
+.lockscreen-credentials .btn {
+ background-color: #fff;
+ border: 0;
+ padding: 0 10px;
+}
+.lockscreen-footer {
+ margin-top: 10px;
+}
+/*
+ * Page: Login & Register
+ * ----------------------
+ */
+.login-logo,
+.register-logo {
+ font-size: 35px;
+ text-align: center;
+ margin-bottom: 25px;
+ font-weight: 300;
+}
+.login-logo a,
+.register-logo a {
+ color: #444;
+}
+.login-page,
+.register-page {
+ background: #d2d6de;
+}
+.login-box,
+.register-box {
+ width: 360px;
+ margin: 7% auto;
+}
+@media (max-width: 768px) {
+ .login-box,
+ .register-box {
+ width: 90%;
+ margin-top: 20px;
+ }
+}
+.login-box-body,
+.register-box-body {
+ background: #fff;
+ padding: 20px;
+ border-top: 0;
+ color: #666;
+}
+.login-box-body .form-control-feedback,
+.register-box-body .form-control-feedback {
+ color: #777;
+}
+.login-box-msg,
+.register-box-msg {
+ margin: 0;
+ text-align: center;
+ padding: 0 20px 20px 20px;
+}
+.social-auth-links {
+ margin: 10px 0;
+}
+/*
+ * Page: 400 and 500 error pages
+ * ------------------------------
+ */
+.error-page {
+ width: 600px;
+ margin: 20px auto 0 auto;
+}
+@media (max-width: 991px) {
+ .error-page {
+ width: 100%;
+ }
+}
+.error-page > .headline {
+ float: left;
+ font-size: 100px;
+ font-weight: 300;
+}
+@media (max-width: 991px) {
+ .error-page > .headline {
+ float: none;
+ text-align: center;
+ }
+}
+.error-page > .error-content {
+ margin-left: 190px;
+ display: block;
+}
+@media (max-width: 991px) {
+ .error-page > .error-content {
+ margin-left: 0;
+ }
+}
+.error-page > .error-content > h3 {
+ font-weight: 300;
+ font-size: 25px;
+}
+@media (max-width: 991px) {
+ .error-page > .error-content > h3 {
+ text-align: center;
+ }
+}
+/*
+ * Page: Invoice
+ * -------------
+ */
+.invoice {
+ position: relative;
+ background: #fff;
+ border: 1px solid #f4f4f4;
+ padding: 20px;
+ margin: 10px 25px;
+}
+.invoice-title {
+ margin-top: 0;
+}
+/*
+ * Page: Profile
+ * -------------
+ */
+.profile-user-img {
+ margin: 0 auto;
+ width: 100px;
+ padding: 3px;
+ border: 3px solid #d2d6de;
+}
+.profile-username {
+ font-size: 21px;
+ margin-top: 5px;
+}
+.post {
+ border-bottom: 1px solid #d2d6de;
+ margin-bottom: 15px;
+ padding-bottom: 15px;
+ color: #666;
+}
+.post:last-of-type {
+ border-bottom: 0;
+ margin-bottom: 0;
+ padding-bottom: 0;
+}
+.post .user-block {
+ margin-bottom: 15px;
+}
+/*
+ * Social Buttons for Bootstrap
+ *
+ * Copyright 2013-2015 Panayiotis Lipiridis
+ * Licensed under the MIT License
+ *
+ * https://github.com/lipis/bootstrap-social
+ */
+.btn-social {
+ position: relative;
+ padding-left: 41px;
+ text-align: left;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.btn-social > :first-child {
+ position: absolute;
+ left: 0;
+ top: 0;
+ bottom: 0;
+ width: 29px;
+ line-height: 31px;
+ font-size: 1.6em;
+ text-align: center;
+ border-right: 1px solid rgba(0, 0, 0, 0.2);
+}
+.btn-social.btn-lg {
+ padding-left: 57px;
+}
+.btn-social.btn-lg > :first-child {
+ line-height: 41px;
+ width: 41px;
+ font-size: 1.8em;
+}
+.btn-social.btn-sm {
+ padding-left: 36px;
+}
+.btn-social.btn-sm > :first-child {
+ line-height: 26px;
+ width: 26px;
+ font-size: 1.4em;
+}
+.btn-social.btn-xs {
+ padding-left: 29px;
+}
+.btn-social.btn-xs > :first-child {
+ line-height: 19px;
+ width: 19px;
+ font-size: 1.2em;
+}
+.btn-social-icon {
+ position: relative;
+ padding-left: 41px;
+ text-align: left;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ height: 31px;
+ width: 31px;
+ padding: 0;
+}
+.btn-social-icon > :first-child {
+ position: absolute;
+ left: 0;
+ top: 0;
+ bottom: 0;
+ width: 29px;
+ line-height: 31px;
+ font-size: 1.6em;
+ text-align: center;
+ border-right: 1px solid rgba(0, 0, 0, 0.2);
+}
+.btn-social-icon.btn-lg {
+ padding-left: 57px;
+}
+.btn-social-icon.btn-lg > :first-child {
+ line-height: 41px;
+ width: 41px;
+ font-size: 1.8em;
+}
+.btn-social-icon.btn-sm {
+ padding-left: 36px;
+}
+.btn-social-icon.btn-sm > :first-child {
+ line-height: 26px;
+ width: 26px;
+ font-size: 1.4em;
+}
+.btn-social-icon.btn-xs {
+ padding-left: 29px;
+}
+.btn-social-icon.btn-xs > :first-child {
+ line-height: 19px;
+ width: 19px;
+ font-size: 1.2em;
+}
+.btn-social-icon > :first-child {
+ border: none;
+ text-align: center;
+ width: 100%;
+}
+.btn-social-icon.btn-lg {
+ height: 41px;
+ width: 41px;
+ padding-left: 0;
+ padding-right: 0;
+}
+.btn-social-icon.btn-sm {
+ height: 28px;
+ width: 28px;
+ padding-left: 0;
+ padding-right: 0;
+}
+.btn-social-icon.btn-xs {
+ height: 21px;
+ width: 21px;
+ padding-left: 0;
+ padding-right: 0;
+}
+.btn-adn {
+ color: #fff;
+ background-color: #d87a68;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-adn:focus,
+.btn-adn.focus {
+ color: #fff;
+ background-color: #ce563f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-adn:hover {
+ color: #fff;
+ background-color: #ce563f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-adn:active,
+.btn-adn.active,
+.open > .dropdown-toggle.btn-adn {
+ color: #fff;
+ background-color: #ce563f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-adn:active:hover,
+.btn-adn.active:hover,
+.open > .dropdown-toggle.btn-adn:hover,
+.btn-adn:active:focus,
+.btn-adn.active:focus,
+.open > .dropdown-toggle.btn-adn:focus,
+.btn-adn:active.focus,
+.btn-adn.active.focus,
+.open > .dropdown-toggle.btn-adn.focus {
+ color: #fff;
+ background-color: #b94630;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-adn:active,
+.btn-adn.active,
+.open > .dropdown-toggle.btn-adn {
+ background-image: none;
+}
+.btn-adn.disabled,
+.btn-adn[disabled],
+fieldset[disabled] .btn-adn,
+.btn-adn.disabled:hover,
+.btn-adn[disabled]:hover,
+fieldset[disabled] .btn-adn:hover,
+.btn-adn.disabled:focus,
+.btn-adn[disabled]:focus,
+fieldset[disabled] .btn-adn:focus,
+.btn-adn.disabled.focus,
+.btn-adn[disabled].focus,
+fieldset[disabled] .btn-adn.focus,
+.btn-adn.disabled:active,
+.btn-adn[disabled]:active,
+fieldset[disabled] .btn-adn:active,
+.btn-adn.disabled.active,
+.btn-adn[disabled].active,
+fieldset[disabled] .btn-adn.active {
+ background-color: #d87a68;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-adn .badge {
+ color: #d87a68;
+ background-color: #fff;
+}
+.btn-bitbucket {
+ color: #fff;
+ background-color: #205081;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-bitbucket:focus,
+.btn-bitbucket.focus {
+ color: #fff;
+ background-color: #163758;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-bitbucket:hover {
+ color: #fff;
+ background-color: #163758;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-bitbucket:active,
+.btn-bitbucket.active,
+.open > .dropdown-toggle.btn-bitbucket {
+ color: #fff;
+ background-color: #163758;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-bitbucket:active:hover,
+.btn-bitbucket.active:hover,
+.open > .dropdown-toggle.btn-bitbucket:hover,
+.btn-bitbucket:active:focus,
+.btn-bitbucket.active:focus,
+.open > .dropdown-toggle.btn-bitbucket:focus,
+.btn-bitbucket:active.focus,
+.btn-bitbucket.active.focus,
+.open > .dropdown-toggle.btn-bitbucket.focus {
+ color: #fff;
+ background-color: #0f253c;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-bitbucket:active,
+.btn-bitbucket.active,
+.open > .dropdown-toggle.btn-bitbucket {
+ background-image: none;
+}
+.btn-bitbucket.disabled,
+.btn-bitbucket[disabled],
+fieldset[disabled] .btn-bitbucket,
+.btn-bitbucket.disabled:hover,
+.btn-bitbucket[disabled]:hover,
+fieldset[disabled] .btn-bitbucket:hover,
+.btn-bitbucket.disabled:focus,
+.btn-bitbucket[disabled]:focus,
+fieldset[disabled] .btn-bitbucket:focus,
+.btn-bitbucket.disabled.focus,
+.btn-bitbucket[disabled].focus,
+fieldset[disabled] .btn-bitbucket.focus,
+.btn-bitbucket.disabled:active,
+.btn-bitbucket[disabled]:active,
+fieldset[disabled] .btn-bitbucket:active,
+.btn-bitbucket.disabled.active,
+.btn-bitbucket[disabled].active,
+fieldset[disabled] .btn-bitbucket.active {
+ background-color: #205081;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-bitbucket .badge {
+ color: #205081;
+ background-color: #fff;
+}
+.btn-dropbox {
+ color: #fff;
+ background-color: #1087dd;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-dropbox:focus,
+.btn-dropbox.focus {
+ color: #fff;
+ background-color: #0d6aad;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-dropbox:hover {
+ color: #fff;
+ background-color: #0d6aad;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-dropbox:active,
+.btn-dropbox.active,
+.open > .dropdown-toggle.btn-dropbox {
+ color: #fff;
+ background-color: #0d6aad;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-dropbox:active:hover,
+.btn-dropbox.active:hover,
+.open > .dropdown-toggle.btn-dropbox:hover,
+.btn-dropbox:active:focus,
+.btn-dropbox.active:focus,
+.open > .dropdown-toggle.btn-dropbox:focus,
+.btn-dropbox:active.focus,
+.btn-dropbox.active.focus,
+.open > .dropdown-toggle.btn-dropbox.focus {
+ color: #fff;
+ background-color: #0a568c;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-dropbox:active,
+.btn-dropbox.active,
+.open > .dropdown-toggle.btn-dropbox {
+ background-image: none;
+}
+.btn-dropbox.disabled,
+.btn-dropbox[disabled],
+fieldset[disabled] .btn-dropbox,
+.btn-dropbox.disabled:hover,
+.btn-dropbox[disabled]:hover,
+fieldset[disabled] .btn-dropbox:hover,
+.btn-dropbox.disabled:focus,
+.btn-dropbox[disabled]:focus,
+fieldset[disabled] .btn-dropbox:focus,
+.btn-dropbox.disabled.focus,
+.btn-dropbox[disabled].focus,
+fieldset[disabled] .btn-dropbox.focus,
+.btn-dropbox.disabled:active,
+.btn-dropbox[disabled]:active,
+fieldset[disabled] .btn-dropbox:active,
+.btn-dropbox.disabled.active,
+.btn-dropbox[disabled].active,
+fieldset[disabled] .btn-dropbox.active {
+ background-color: #1087dd;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-dropbox .badge {
+ color: #1087dd;
+ background-color: #fff;
+}
+.btn-facebook {
+ color: #fff;
+ background-color: #3b5998;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-facebook:focus,
+.btn-facebook.focus {
+ color: #fff;
+ background-color: #2d4373;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-facebook:hover {
+ color: #fff;
+ background-color: #2d4373;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-facebook:active,
+.btn-facebook.active,
+.open > .dropdown-toggle.btn-facebook {
+ color: #fff;
+ background-color: #2d4373;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-facebook:active:hover,
+.btn-facebook.active:hover,
+.open > .dropdown-toggle.btn-facebook:hover,
+.btn-facebook:active:focus,
+.btn-facebook.active:focus,
+.open > .dropdown-toggle.btn-facebook:focus,
+.btn-facebook:active.focus,
+.btn-facebook.active.focus,
+.open > .dropdown-toggle.btn-facebook.focus {
+ color: #fff;
+ background-color: #23345a;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-facebook:active,
+.btn-facebook.active,
+.open > .dropdown-toggle.btn-facebook {
+ background-image: none;
+}
+.btn-facebook.disabled,
+.btn-facebook[disabled],
+fieldset[disabled] .btn-facebook,
+.btn-facebook.disabled:hover,
+.btn-facebook[disabled]:hover,
+fieldset[disabled] .btn-facebook:hover,
+.btn-facebook.disabled:focus,
+.btn-facebook[disabled]:focus,
+fieldset[disabled] .btn-facebook:focus,
+.btn-facebook.disabled.focus,
+.btn-facebook[disabled].focus,
+fieldset[disabled] .btn-facebook.focus,
+.btn-facebook.disabled:active,
+.btn-facebook[disabled]:active,
+fieldset[disabled] .btn-facebook:active,
+.btn-facebook.disabled.active,
+.btn-facebook[disabled].active,
+fieldset[disabled] .btn-facebook.active {
+ background-color: #3b5998;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-facebook .badge {
+ color: #3b5998;
+ background-color: #fff;
+}
+.btn-flickr {
+ color: #fff;
+ background-color: #ff0084;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-flickr:focus,
+.btn-flickr.focus {
+ color: #fff;
+ background-color: #cc006a;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-flickr:hover {
+ color: #fff;
+ background-color: #cc006a;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-flickr:active,
+.btn-flickr.active,
+.open > .dropdown-toggle.btn-flickr {
+ color: #fff;
+ background-color: #cc006a;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-flickr:active:hover,
+.btn-flickr.active:hover,
+.open > .dropdown-toggle.btn-flickr:hover,
+.btn-flickr:active:focus,
+.btn-flickr.active:focus,
+.open > .dropdown-toggle.btn-flickr:focus,
+.btn-flickr:active.focus,
+.btn-flickr.active.focus,
+.open > .dropdown-toggle.btn-flickr.focus {
+ color: #fff;
+ background-color: #a80057;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-flickr:active,
+.btn-flickr.active,
+.open > .dropdown-toggle.btn-flickr {
+ background-image: none;
+}
+.btn-flickr.disabled,
+.btn-flickr[disabled],
+fieldset[disabled] .btn-flickr,
+.btn-flickr.disabled:hover,
+.btn-flickr[disabled]:hover,
+fieldset[disabled] .btn-flickr:hover,
+.btn-flickr.disabled:focus,
+.btn-flickr[disabled]:focus,
+fieldset[disabled] .btn-flickr:focus,
+.btn-flickr.disabled.focus,
+.btn-flickr[disabled].focus,
+fieldset[disabled] .btn-flickr.focus,
+.btn-flickr.disabled:active,
+.btn-flickr[disabled]:active,
+fieldset[disabled] .btn-flickr:active,
+.btn-flickr.disabled.active,
+.btn-flickr[disabled].active,
+fieldset[disabled] .btn-flickr.active {
+ background-color: #ff0084;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-flickr .badge {
+ color: #ff0084;
+ background-color: #fff;
+}
+.btn-foursquare {
+ color: #fff;
+ background-color: #f94877;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-foursquare:focus,
+.btn-foursquare.focus {
+ color: #fff;
+ background-color: #f71752;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-foursquare:hover {
+ color: #fff;
+ background-color: #f71752;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-foursquare:active,
+.btn-foursquare.active,
+.open > .dropdown-toggle.btn-foursquare {
+ color: #fff;
+ background-color: #f71752;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-foursquare:active:hover,
+.btn-foursquare.active:hover,
+.open > .dropdown-toggle.btn-foursquare:hover,
+.btn-foursquare:active:focus,
+.btn-foursquare.active:focus,
+.open > .dropdown-toggle.btn-foursquare:focus,
+.btn-foursquare:active.focus,
+.btn-foursquare.active.focus,
+.open > .dropdown-toggle.btn-foursquare.focus {
+ color: #fff;
+ background-color: #e30742;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-foursquare:active,
+.btn-foursquare.active,
+.open > .dropdown-toggle.btn-foursquare {
+ background-image: none;
+}
+.btn-foursquare.disabled,
+.btn-foursquare[disabled],
+fieldset[disabled] .btn-foursquare,
+.btn-foursquare.disabled:hover,
+.btn-foursquare[disabled]:hover,
+fieldset[disabled] .btn-foursquare:hover,
+.btn-foursquare.disabled:focus,
+.btn-foursquare[disabled]:focus,
+fieldset[disabled] .btn-foursquare:focus,
+.btn-foursquare.disabled.focus,
+.btn-foursquare[disabled].focus,
+fieldset[disabled] .btn-foursquare.focus,
+.btn-foursquare.disabled:active,
+.btn-foursquare[disabled]:active,
+fieldset[disabled] .btn-foursquare:active,
+.btn-foursquare.disabled.active,
+.btn-foursquare[disabled].active,
+fieldset[disabled] .btn-foursquare.active {
+ background-color: #f94877;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-foursquare .badge {
+ color: #f94877;
+ background-color: #fff;
+}
+.btn-github {
+ color: #fff;
+ background-color: #444444;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-github:focus,
+.btn-github.focus {
+ color: #fff;
+ background-color: #2b2b2b;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-github:hover {
+ color: #fff;
+ background-color: #2b2b2b;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-github:active,
+.btn-github.active,
+.open > .dropdown-toggle.btn-github {
+ color: #fff;
+ background-color: #2b2b2b;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-github:active:hover,
+.btn-github.active:hover,
+.open > .dropdown-toggle.btn-github:hover,
+.btn-github:active:focus,
+.btn-github.active:focus,
+.open > .dropdown-toggle.btn-github:focus,
+.btn-github:active.focus,
+.btn-github.active.focus,
+.open > .dropdown-toggle.btn-github.focus {
+ color: #fff;
+ background-color: #191919;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-github:active,
+.btn-github.active,
+.open > .dropdown-toggle.btn-github {
+ background-image: none;
+}
+.btn-github.disabled,
+.btn-github[disabled],
+fieldset[disabled] .btn-github,
+.btn-github.disabled:hover,
+.btn-github[disabled]:hover,
+fieldset[disabled] .btn-github:hover,
+.btn-github.disabled:focus,
+.btn-github[disabled]:focus,
+fieldset[disabled] .btn-github:focus,
+.btn-github.disabled.focus,
+.btn-github[disabled].focus,
+fieldset[disabled] .btn-github.focus,
+.btn-github.disabled:active,
+.btn-github[disabled]:active,
+fieldset[disabled] .btn-github:active,
+.btn-github.disabled.active,
+.btn-github[disabled].active,
+fieldset[disabled] .btn-github.active {
+ background-color: #444444;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-github .badge {
+ color: #444444;
+ background-color: #fff;
+}
+.btn-google {
+ color: #fff;
+ background-color: #dd4b39;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-google:focus,
+.btn-google.focus {
+ color: #fff;
+ background-color: #c23321;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-google:hover {
+ color: #fff;
+ background-color: #c23321;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-google:active,
+.btn-google.active,
+.open > .dropdown-toggle.btn-google {
+ color: #fff;
+ background-color: #c23321;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-google:active:hover,
+.btn-google.active:hover,
+.open > .dropdown-toggle.btn-google:hover,
+.btn-google:active:focus,
+.btn-google.active:focus,
+.open > .dropdown-toggle.btn-google:focus,
+.btn-google:active.focus,
+.btn-google.active.focus,
+.open > .dropdown-toggle.btn-google.focus {
+ color: #fff;
+ background-color: #a32b1c;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-google:active,
+.btn-google.active,
+.open > .dropdown-toggle.btn-google {
+ background-image: none;
+}
+.btn-google.disabled,
+.btn-google[disabled],
+fieldset[disabled] .btn-google,
+.btn-google.disabled:hover,
+.btn-google[disabled]:hover,
+fieldset[disabled] .btn-google:hover,
+.btn-google.disabled:focus,
+.btn-google[disabled]:focus,
+fieldset[disabled] .btn-google:focus,
+.btn-google.disabled.focus,
+.btn-google[disabled].focus,
+fieldset[disabled] .btn-google.focus,
+.btn-google.disabled:active,
+.btn-google[disabled]:active,
+fieldset[disabled] .btn-google:active,
+.btn-google.disabled.active,
+.btn-google[disabled].active,
+fieldset[disabled] .btn-google.active {
+ background-color: #dd4b39;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-google .badge {
+ color: #dd4b39;
+ background-color: #fff;
+}
+.btn-instagram {
+ color: #fff;
+ background-color: #3f729b;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-instagram:focus,
+.btn-instagram.focus {
+ color: #fff;
+ background-color: #305777;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-instagram:hover {
+ color: #fff;
+ background-color: #305777;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-instagram:active,
+.btn-instagram.active,
+.open > .dropdown-toggle.btn-instagram {
+ color: #fff;
+ background-color: #305777;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-instagram:active:hover,
+.btn-instagram.active:hover,
+.open > .dropdown-toggle.btn-instagram:hover,
+.btn-instagram:active:focus,
+.btn-instagram.active:focus,
+.open > .dropdown-toggle.btn-instagram:focus,
+.btn-instagram:active.focus,
+.btn-instagram.active.focus,
+.open > .dropdown-toggle.btn-instagram.focus {
+ color: #fff;
+ background-color: #26455d;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-instagram:active,
+.btn-instagram.active,
+.open > .dropdown-toggle.btn-instagram {
+ background-image: none;
+}
+.btn-instagram.disabled,
+.btn-instagram[disabled],
+fieldset[disabled] .btn-instagram,
+.btn-instagram.disabled:hover,
+.btn-instagram[disabled]:hover,
+fieldset[disabled] .btn-instagram:hover,
+.btn-instagram.disabled:focus,
+.btn-instagram[disabled]:focus,
+fieldset[disabled] .btn-instagram:focus,
+.btn-instagram.disabled.focus,
+.btn-instagram[disabled].focus,
+fieldset[disabled] .btn-instagram.focus,
+.btn-instagram.disabled:active,
+.btn-instagram[disabled]:active,
+fieldset[disabled] .btn-instagram:active,
+.btn-instagram.disabled.active,
+.btn-instagram[disabled].active,
+fieldset[disabled] .btn-instagram.active {
+ background-color: #3f729b;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-instagram .badge {
+ color: #3f729b;
+ background-color: #fff;
+}
+.btn-linkedin {
+ color: #fff;
+ background-color: #007bb6;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-linkedin:focus,
+.btn-linkedin.focus {
+ color: #fff;
+ background-color: #005983;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-linkedin:hover {
+ color: #fff;
+ background-color: #005983;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-linkedin:active,
+.btn-linkedin.active,
+.open > .dropdown-toggle.btn-linkedin {
+ color: #fff;
+ background-color: #005983;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-linkedin:active:hover,
+.btn-linkedin.active:hover,
+.open > .dropdown-toggle.btn-linkedin:hover,
+.btn-linkedin:active:focus,
+.btn-linkedin.active:focus,
+.open > .dropdown-toggle.btn-linkedin:focus,
+.btn-linkedin:active.focus,
+.btn-linkedin.active.focus,
+.open > .dropdown-toggle.btn-linkedin.focus {
+ color: #fff;
+ background-color: #00405f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-linkedin:active,
+.btn-linkedin.active,
+.open > .dropdown-toggle.btn-linkedin {
+ background-image: none;
+}
+.btn-linkedin.disabled,
+.btn-linkedin[disabled],
+fieldset[disabled] .btn-linkedin,
+.btn-linkedin.disabled:hover,
+.btn-linkedin[disabled]:hover,
+fieldset[disabled] .btn-linkedin:hover,
+.btn-linkedin.disabled:focus,
+.btn-linkedin[disabled]:focus,
+fieldset[disabled] .btn-linkedin:focus,
+.btn-linkedin.disabled.focus,
+.btn-linkedin[disabled].focus,
+fieldset[disabled] .btn-linkedin.focus,
+.btn-linkedin.disabled:active,
+.btn-linkedin[disabled]:active,
+fieldset[disabled] .btn-linkedin:active,
+.btn-linkedin.disabled.active,
+.btn-linkedin[disabled].active,
+fieldset[disabled] .btn-linkedin.active {
+ background-color: #007bb6;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-linkedin .badge {
+ color: #007bb6;
+ background-color: #fff;
+}
+.btn-microsoft {
+ color: #fff;
+ background-color: #2672ec;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-microsoft:focus,
+.btn-microsoft.focus {
+ color: #fff;
+ background-color: #125acd;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-microsoft:hover {
+ color: #fff;
+ background-color: #125acd;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-microsoft:active,
+.btn-microsoft.active,
+.open > .dropdown-toggle.btn-microsoft {
+ color: #fff;
+ background-color: #125acd;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-microsoft:active:hover,
+.btn-microsoft.active:hover,
+.open > .dropdown-toggle.btn-microsoft:hover,
+.btn-microsoft:active:focus,
+.btn-microsoft.active:focus,
+.open > .dropdown-toggle.btn-microsoft:focus,
+.btn-microsoft:active.focus,
+.btn-microsoft.active.focus,
+.open > .dropdown-toggle.btn-microsoft.focus {
+ color: #fff;
+ background-color: #0f4bac;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-microsoft:active,
+.btn-microsoft.active,
+.open > .dropdown-toggle.btn-microsoft {
+ background-image: none;
+}
+.btn-microsoft.disabled,
+.btn-microsoft[disabled],
+fieldset[disabled] .btn-microsoft,
+.btn-microsoft.disabled:hover,
+.btn-microsoft[disabled]:hover,
+fieldset[disabled] .btn-microsoft:hover,
+.btn-microsoft.disabled:focus,
+.btn-microsoft[disabled]:focus,
+fieldset[disabled] .btn-microsoft:focus,
+.btn-microsoft.disabled.focus,
+.btn-microsoft[disabled].focus,
+fieldset[disabled] .btn-microsoft.focus,
+.btn-microsoft.disabled:active,
+.btn-microsoft[disabled]:active,
+fieldset[disabled] .btn-microsoft:active,
+.btn-microsoft.disabled.active,
+.btn-microsoft[disabled].active,
+fieldset[disabled] .btn-microsoft.active {
+ background-color: #2672ec;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-microsoft .badge {
+ color: #2672ec;
+ background-color: #fff;
+}
+.btn-openid {
+ color: #fff;
+ background-color: #f7931e;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-openid:focus,
+.btn-openid.focus {
+ color: #fff;
+ background-color: #da7908;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-openid:hover {
+ color: #fff;
+ background-color: #da7908;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-openid:active,
+.btn-openid.active,
+.open > .dropdown-toggle.btn-openid {
+ color: #fff;
+ background-color: #da7908;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-openid:active:hover,
+.btn-openid.active:hover,
+.open > .dropdown-toggle.btn-openid:hover,
+.btn-openid:active:focus,
+.btn-openid.active:focus,
+.open > .dropdown-toggle.btn-openid:focus,
+.btn-openid:active.focus,
+.btn-openid.active.focus,
+.open > .dropdown-toggle.btn-openid.focus {
+ color: #fff;
+ background-color: #b86607;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-openid:active,
+.btn-openid.active,
+.open > .dropdown-toggle.btn-openid {
+ background-image: none;
+}
+.btn-openid.disabled,
+.btn-openid[disabled],
+fieldset[disabled] .btn-openid,
+.btn-openid.disabled:hover,
+.btn-openid[disabled]:hover,
+fieldset[disabled] .btn-openid:hover,
+.btn-openid.disabled:focus,
+.btn-openid[disabled]:focus,
+fieldset[disabled] .btn-openid:focus,
+.btn-openid.disabled.focus,
+.btn-openid[disabled].focus,
+fieldset[disabled] .btn-openid.focus,
+.btn-openid.disabled:active,
+.btn-openid[disabled]:active,
+fieldset[disabled] .btn-openid:active,
+.btn-openid.disabled.active,
+.btn-openid[disabled].active,
+fieldset[disabled] .btn-openid.active {
+ background-color: #f7931e;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-openid .badge {
+ color: #f7931e;
+ background-color: #fff;
+}
+.btn-pinterest {
+ color: #fff;
+ background-color: #cb2027;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-pinterest:focus,
+.btn-pinterest.focus {
+ color: #fff;
+ background-color: #9f191f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-pinterest:hover {
+ color: #fff;
+ background-color: #9f191f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-pinterest:active,
+.btn-pinterest.active,
+.open > .dropdown-toggle.btn-pinterest {
+ color: #fff;
+ background-color: #9f191f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-pinterest:active:hover,
+.btn-pinterest.active:hover,
+.open > .dropdown-toggle.btn-pinterest:hover,
+.btn-pinterest:active:focus,
+.btn-pinterest.active:focus,
+.open > .dropdown-toggle.btn-pinterest:focus,
+.btn-pinterest:active.focus,
+.btn-pinterest.active.focus,
+.open > .dropdown-toggle.btn-pinterest.focus {
+ color: #fff;
+ background-color: #801419;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-pinterest:active,
+.btn-pinterest.active,
+.open > .dropdown-toggle.btn-pinterest {
+ background-image: none;
+}
+.btn-pinterest.disabled,
+.btn-pinterest[disabled],
+fieldset[disabled] .btn-pinterest,
+.btn-pinterest.disabled:hover,
+.btn-pinterest[disabled]:hover,
+fieldset[disabled] .btn-pinterest:hover,
+.btn-pinterest.disabled:focus,
+.btn-pinterest[disabled]:focus,
+fieldset[disabled] .btn-pinterest:focus,
+.btn-pinterest.disabled.focus,
+.btn-pinterest[disabled].focus,
+fieldset[disabled] .btn-pinterest.focus,
+.btn-pinterest.disabled:active,
+.btn-pinterest[disabled]:active,
+fieldset[disabled] .btn-pinterest:active,
+.btn-pinterest.disabled.active,
+.btn-pinterest[disabled].active,
+fieldset[disabled] .btn-pinterest.active {
+ background-color: #cb2027;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-pinterest .badge {
+ color: #cb2027;
+ background-color: #fff;
+}
+.btn-reddit {
+ color: #000;
+ background-color: #eff7ff;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-reddit:focus,
+.btn-reddit.focus {
+ color: #000;
+ background-color: #bcddff;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-reddit:hover {
+ color: #000;
+ background-color: #bcddff;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-reddit:active,
+.btn-reddit.active,
+.open > .dropdown-toggle.btn-reddit {
+ color: #000;
+ background-color: #bcddff;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-reddit:active:hover,
+.btn-reddit.active:hover,
+.open > .dropdown-toggle.btn-reddit:hover,
+.btn-reddit:active:focus,
+.btn-reddit.active:focus,
+.open > .dropdown-toggle.btn-reddit:focus,
+.btn-reddit:active.focus,
+.btn-reddit.active.focus,
+.open > .dropdown-toggle.btn-reddit.focus {
+ color: #000;
+ background-color: #98ccff;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-reddit:active,
+.btn-reddit.active,
+.open > .dropdown-toggle.btn-reddit {
+ background-image: none;
+}
+.btn-reddit.disabled,
+.btn-reddit[disabled],
+fieldset[disabled] .btn-reddit,
+.btn-reddit.disabled:hover,
+.btn-reddit[disabled]:hover,
+fieldset[disabled] .btn-reddit:hover,
+.btn-reddit.disabled:focus,
+.btn-reddit[disabled]:focus,
+fieldset[disabled] .btn-reddit:focus,
+.btn-reddit.disabled.focus,
+.btn-reddit[disabled].focus,
+fieldset[disabled] .btn-reddit.focus,
+.btn-reddit.disabled:active,
+.btn-reddit[disabled]:active,
+fieldset[disabled] .btn-reddit:active,
+.btn-reddit.disabled.active,
+.btn-reddit[disabled].active,
+fieldset[disabled] .btn-reddit.active {
+ background-color: #eff7ff;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-reddit .badge {
+ color: #eff7ff;
+ background-color: #000;
+}
+.btn-soundcloud {
+ color: #fff;
+ background-color: #ff5500;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-soundcloud:focus,
+.btn-soundcloud.focus {
+ color: #fff;
+ background-color: #cc4400;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-soundcloud:hover {
+ color: #fff;
+ background-color: #cc4400;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-soundcloud:active,
+.btn-soundcloud.active,
+.open > .dropdown-toggle.btn-soundcloud {
+ color: #fff;
+ background-color: #cc4400;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-soundcloud:active:hover,
+.btn-soundcloud.active:hover,
+.open > .dropdown-toggle.btn-soundcloud:hover,
+.btn-soundcloud:active:focus,
+.btn-soundcloud.active:focus,
+.open > .dropdown-toggle.btn-soundcloud:focus,
+.btn-soundcloud:active.focus,
+.btn-soundcloud.active.focus,
+.open > .dropdown-toggle.btn-soundcloud.focus {
+ color: #fff;
+ background-color: #a83800;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-soundcloud:active,
+.btn-soundcloud.active,
+.open > .dropdown-toggle.btn-soundcloud {
+ background-image: none;
+}
+.btn-soundcloud.disabled,
+.btn-soundcloud[disabled],
+fieldset[disabled] .btn-soundcloud,
+.btn-soundcloud.disabled:hover,
+.btn-soundcloud[disabled]:hover,
+fieldset[disabled] .btn-soundcloud:hover,
+.btn-soundcloud.disabled:focus,
+.btn-soundcloud[disabled]:focus,
+fieldset[disabled] .btn-soundcloud:focus,
+.btn-soundcloud.disabled.focus,
+.btn-soundcloud[disabled].focus,
+fieldset[disabled] .btn-soundcloud.focus,
+.btn-soundcloud.disabled:active,
+.btn-soundcloud[disabled]:active,
+fieldset[disabled] .btn-soundcloud:active,
+.btn-soundcloud.disabled.active,
+.btn-soundcloud[disabled].active,
+fieldset[disabled] .btn-soundcloud.active {
+ background-color: #ff5500;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-soundcloud .badge {
+ color: #ff5500;
+ background-color: #fff;
+}
+.btn-tumblr {
+ color: #fff;
+ background-color: #2c4762;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-tumblr:focus,
+.btn-tumblr.focus {
+ color: #fff;
+ background-color: #1c2d3f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-tumblr:hover {
+ color: #fff;
+ background-color: #1c2d3f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-tumblr:active,
+.btn-tumblr.active,
+.open > .dropdown-toggle.btn-tumblr {
+ color: #fff;
+ background-color: #1c2d3f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-tumblr:active:hover,
+.btn-tumblr.active:hover,
+.open > .dropdown-toggle.btn-tumblr:hover,
+.btn-tumblr:active:focus,
+.btn-tumblr.active:focus,
+.open > .dropdown-toggle.btn-tumblr:focus,
+.btn-tumblr:active.focus,
+.btn-tumblr.active.focus,
+.open > .dropdown-toggle.btn-tumblr.focus {
+ color: #fff;
+ background-color: #111c26;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-tumblr:active,
+.btn-tumblr.active,
+.open > .dropdown-toggle.btn-tumblr {
+ background-image: none;
+}
+.btn-tumblr.disabled,
+.btn-tumblr[disabled],
+fieldset[disabled] .btn-tumblr,
+.btn-tumblr.disabled:hover,
+.btn-tumblr[disabled]:hover,
+fieldset[disabled] .btn-tumblr:hover,
+.btn-tumblr.disabled:focus,
+.btn-tumblr[disabled]:focus,
+fieldset[disabled] .btn-tumblr:focus,
+.btn-tumblr.disabled.focus,
+.btn-tumblr[disabled].focus,
+fieldset[disabled] .btn-tumblr.focus,
+.btn-tumblr.disabled:active,
+.btn-tumblr[disabled]:active,
+fieldset[disabled] .btn-tumblr:active,
+.btn-tumblr.disabled.active,
+.btn-tumblr[disabled].active,
+fieldset[disabled] .btn-tumblr.active {
+ background-color: #2c4762;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-tumblr .badge {
+ color: #2c4762;
+ background-color: #fff;
+}
+.btn-twitter {
+ color: #fff;
+ background-color: #55acee;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-twitter:focus,
+.btn-twitter.focus {
+ color: #fff;
+ background-color: #2795e9;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-twitter:hover {
+ color: #fff;
+ background-color: #2795e9;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-twitter:active,
+.btn-twitter.active,
+.open > .dropdown-toggle.btn-twitter {
+ color: #fff;
+ background-color: #2795e9;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-twitter:active:hover,
+.btn-twitter.active:hover,
+.open > .dropdown-toggle.btn-twitter:hover,
+.btn-twitter:active:focus,
+.btn-twitter.active:focus,
+.open > .dropdown-toggle.btn-twitter:focus,
+.btn-twitter:active.focus,
+.btn-twitter.active.focus,
+.open > .dropdown-toggle.btn-twitter.focus {
+ color: #fff;
+ background-color: #1583d7;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-twitter:active,
+.btn-twitter.active,
+.open > .dropdown-toggle.btn-twitter {
+ background-image: none;
+}
+.btn-twitter.disabled,
+.btn-twitter[disabled],
+fieldset[disabled] .btn-twitter,
+.btn-twitter.disabled:hover,
+.btn-twitter[disabled]:hover,
+fieldset[disabled] .btn-twitter:hover,
+.btn-twitter.disabled:focus,
+.btn-twitter[disabled]:focus,
+fieldset[disabled] .btn-twitter:focus,
+.btn-twitter.disabled.focus,
+.btn-twitter[disabled].focus,
+fieldset[disabled] .btn-twitter.focus,
+.btn-twitter.disabled:active,
+.btn-twitter[disabled]:active,
+fieldset[disabled] .btn-twitter:active,
+.btn-twitter.disabled.active,
+.btn-twitter[disabled].active,
+fieldset[disabled] .btn-twitter.active {
+ background-color: #55acee;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-twitter .badge {
+ color: #55acee;
+ background-color: #fff;
+}
+.btn-vimeo {
+ color: #fff;
+ background-color: #1ab7ea;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-vimeo:focus,
+.btn-vimeo.focus {
+ color: #fff;
+ background-color: #1295bf;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-vimeo:hover {
+ color: #fff;
+ background-color: #1295bf;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-vimeo:active,
+.btn-vimeo.active,
+.open > .dropdown-toggle.btn-vimeo {
+ color: #fff;
+ background-color: #1295bf;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-vimeo:active:hover,
+.btn-vimeo.active:hover,
+.open > .dropdown-toggle.btn-vimeo:hover,
+.btn-vimeo:active:focus,
+.btn-vimeo.active:focus,
+.open > .dropdown-toggle.btn-vimeo:focus,
+.btn-vimeo:active.focus,
+.btn-vimeo.active.focus,
+.open > .dropdown-toggle.btn-vimeo.focus {
+ color: #fff;
+ background-color: #0f7b9f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-vimeo:active,
+.btn-vimeo.active,
+.open > .dropdown-toggle.btn-vimeo {
+ background-image: none;
+}
+.btn-vimeo.disabled,
+.btn-vimeo[disabled],
+fieldset[disabled] .btn-vimeo,
+.btn-vimeo.disabled:hover,
+.btn-vimeo[disabled]:hover,
+fieldset[disabled] .btn-vimeo:hover,
+.btn-vimeo.disabled:focus,
+.btn-vimeo[disabled]:focus,
+fieldset[disabled] .btn-vimeo:focus,
+.btn-vimeo.disabled.focus,
+.btn-vimeo[disabled].focus,
+fieldset[disabled] .btn-vimeo.focus,
+.btn-vimeo.disabled:active,
+.btn-vimeo[disabled]:active,
+fieldset[disabled] .btn-vimeo:active,
+.btn-vimeo.disabled.active,
+.btn-vimeo[disabled].active,
+fieldset[disabled] .btn-vimeo.active {
+ background-color: #1ab7ea;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-vimeo .badge {
+ color: #1ab7ea;
+ background-color: #fff;
+}
+.btn-vk {
+ color: #fff;
+ background-color: #587ea3;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-vk:focus,
+.btn-vk.focus {
+ color: #fff;
+ background-color: #466482;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-vk:hover {
+ color: #fff;
+ background-color: #466482;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-vk:active,
+.btn-vk.active,
+.open > .dropdown-toggle.btn-vk {
+ color: #fff;
+ background-color: #466482;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-vk:active:hover,
+.btn-vk.active:hover,
+.open > .dropdown-toggle.btn-vk:hover,
+.btn-vk:active:focus,
+.btn-vk.active:focus,
+.open > .dropdown-toggle.btn-vk:focus,
+.btn-vk:active.focus,
+.btn-vk.active.focus,
+.open > .dropdown-toggle.btn-vk.focus {
+ color: #fff;
+ background-color: #3a526b;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-vk:active,
+.btn-vk.active,
+.open > .dropdown-toggle.btn-vk {
+ background-image: none;
+}
+.btn-vk.disabled,
+.btn-vk[disabled],
+fieldset[disabled] .btn-vk,
+.btn-vk.disabled:hover,
+.btn-vk[disabled]:hover,
+fieldset[disabled] .btn-vk:hover,
+.btn-vk.disabled:focus,
+.btn-vk[disabled]:focus,
+fieldset[disabled] .btn-vk:focus,
+.btn-vk.disabled.focus,
+.btn-vk[disabled].focus,
+fieldset[disabled] .btn-vk.focus,
+.btn-vk.disabled:active,
+.btn-vk[disabled]:active,
+fieldset[disabled] .btn-vk:active,
+.btn-vk.disabled.active,
+.btn-vk[disabled].active,
+fieldset[disabled] .btn-vk.active {
+ background-color: #587ea3;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-vk .badge {
+ color: #587ea3;
+ background-color: #fff;
+}
+.btn-yahoo {
+ color: #fff;
+ background-color: #720e9e;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-yahoo:focus,
+.btn-yahoo.focus {
+ color: #fff;
+ background-color: #500a6f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-yahoo:hover {
+ color: #fff;
+ background-color: #500a6f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-yahoo:active,
+.btn-yahoo.active,
+.open > .dropdown-toggle.btn-yahoo {
+ color: #fff;
+ background-color: #500a6f;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-yahoo:active:hover,
+.btn-yahoo.active:hover,
+.open > .dropdown-toggle.btn-yahoo:hover,
+.btn-yahoo:active:focus,
+.btn-yahoo.active:focus,
+.open > .dropdown-toggle.btn-yahoo:focus,
+.btn-yahoo:active.focus,
+.btn-yahoo.active.focus,
+.open > .dropdown-toggle.btn-yahoo.focus {
+ color: #fff;
+ background-color: #39074e;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-yahoo:active,
+.btn-yahoo.active,
+.open > .dropdown-toggle.btn-yahoo {
+ background-image: none;
+}
+.btn-yahoo.disabled,
+.btn-yahoo[disabled],
+fieldset[disabled] .btn-yahoo,
+.btn-yahoo.disabled:hover,
+.btn-yahoo[disabled]:hover,
+fieldset[disabled] .btn-yahoo:hover,
+.btn-yahoo.disabled:focus,
+.btn-yahoo[disabled]:focus,
+fieldset[disabled] .btn-yahoo:focus,
+.btn-yahoo.disabled.focus,
+.btn-yahoo[disabled].focus,
+fieldset[disabled] .btn-yahoo.focus,
+.btn-yahoo.disabled:active,
+.btn-yahoo[disabled]:active,
+fieldset[disabled] .btn-yahoo:active,
+.btn-yahoo.disabled.active,
+.btn-yahoo[disabled].active,
+fieldset[disabled] .btn-yahoo.active {
+ background-color: #720e9e;
+ border-color: rgba(0, 0, 0, 0.2);
+}
+.btn-yahoo .badge {
+ color: #720e9e;
+ background-color: #fff;
+}
+/*
+ * Plugin: Full Calendar
+ * ---------------------
+ */
+.fc-button {
+ background: #f4f4f4;
+ background-image: none;
+ color: #444;
+ border-color: #ddd;
+ border-bottom-color: #ddd;
+}
+.fc-button:hover,
+.fc-button:active,
+.fc-button.hover {
+ background-color: #e9e9e9;
+}
+.fc-header-title h2 {
+ font-size: 15px;
+ line-height: 1.6em;
+ color: #666;
+ margin-left: 10px;
+}
+.fc-header-right {
+ padding-right: 10px;
+}
+.fc-header-left {
+ padding-left: 10px;
+}
+.fc-widget-header {
+ background: #fafafa;
+}
+.fc-grid {
+ width: 100%;
+ border: 0;
+}
+.fc-widget-header:first-of-type,
+.fc-widget-content:first-of-type {
+ border-left: 0;
+ border-right: 0;
+}
+.fc-widget-header:last-of-type,
+.fc-widget-content:last-of-type {
+ border-right: 0;
+}
+.fc-toolbar {
+ padding: 10px;
+ margin: 0;
+}
+.fc-day-number {
+ font-size: 20px;
+ font-weight: 300;
+ padding-right: 10px;
+}
+.fc-color-picker {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+.fc-color-picker > li {
+ float: left;
+ font-size: 30px;
+ margin-right: 5px;
+ line-height: 30px;
+}
+.fc-color-picker > li .fa {
+ -webkit-transition: -webkit-transform linear 0.3s;
+ -moz-transition: -moz-transform linear 0.3s;
+ -o-transition: -o-transform linear 0.3s;
+ transition: transform linear 0.3s;
+}
+.fc-color-picker > li .fa:hover {
+ -webkit-transform: rotate(30deg);
+ -ms-transform: rotate(30deg);
+ -o-transform: rotate(30deg);
+ transform: rotate(30deg);
+}
+#add-new-event {
+ -webkit-transition: all linear 0.3s;
+ -o-transition: all linear 0.3s;
+ transition: all linear 0.3s;
+}
+.external-event {
+ padding: 5px 10px;
+ font-weight: bold;
+ margin-bottom: 4px;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+ border-radius: 3px;
+ cursor: move;
+}
+.external-event:hover {
+ box-shadow: inset 0 0 90px rgba(0, 0, 0, 0.2);
+}
+/*
+ * Plugin: Select2
+ * ---------------
+ */
+.select2-container--default.select2-container--focus,
+.select2-selection.select2-container--focus,
+.select2-container--default:focus,
+.select2-selection:focus,
+.select2-container--default:active,
+.select2-selection:active {
+ outline: none;
+}
+.select2-container--default .select2-selection--single,
+.select2-selection .select2-selection--single {
+ border: 1px solid #d2d6de;
+ border-radius: 0;
+ padding: 6px 12px;
+ height: 34px;
+}
+.select2-container--default.select2-container--open {
+ border-color: #3c8dbc;
+}
+.select2-dropdown {
+ border: 1px solid #d2d6de;
+ border-radius: 0;
+}
+.select2-container--default .select2-results__option--highlighted[aria-selected] {
+ background-color: #3c8dbc;
+ color: white;
+}
+.select2-results__option {
+ padding: 6px 12px;
+ user-select: none;
+ -webkit-user-select: none;
+}
+.select2-container .select2-selection--single .select2-selection__rendered {
+ padding-left: 0;
+ padding-right: 0;
+ height: auto;
+ margin-top: -4px;
+}
+.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
+ padding-right: 6px;
+ padding-left: 20px;
+}
+.select2-container--default .select2-selection--single .select2-selection__arrow {
+ height: 28px;
+ right: 3px;
+}
+.select2-container--default .select2-selection--single .select2-selection__arrow b {
+ margin-top: 0;
+}
+.select2-dropdown .select2-search__field,
+.select2-search--inline .select2-search__field {
+ border: 1px solid #d2d6de;
+}
+.select2-dropdown .select2-search__field:focus,
+.select2-search--inline .select2-search__field:focus {
+ outline: none;
+ border: 1px solid #3c8dbc;
+}
+.select2-container--default .select2-results__option[aria-disabled=true] {
+ color: #999;
+}
+.select2-container--default .select2-results__option[aria-selected=true] {
+ background-color: #ddd;
+}
+.select2-container--default .select2-results__option[aria-selected=true],
+.select2-container--default .select2-results__option[aria-selected=true]:hover {
+ color: #444;
+}
+.select2-container--default .select2-selection--multiple {
+ border: 1px solid #d2d6de;
+ border-radius: 0;
+}
+.select2-container--default .select2-selection--multiple:focus {
+ border-color: #3c8dbc;
+}
+.select2-container--default.select2-container--focus .select2-selection--multiple {
+ border-color: #d2d6de;
+}
+.select2-container--default .select2-selection--multiple .select2-selection__choice {
+ background-color: #3c8dbc;
+ border-color: #367fa9;
+ padding: 1px 10px;
+ color: #fff;
+}
+.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
+ margin-right: 5px;
+ color: rgba(255, 255, 255, 0.7);
+}
+.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
+ color: #fff;
+}
+.select2-container .select2-selection--single .select2-selection__rendered {
+ padding-right: 10px;
+}
+/*
+ * General: Miscellaneous
+ * ----------------------
+ */
+.pad {
+ padding: 10px;
+}
+.margin {
+ margin: 10px;
+}
+.margin-bottom {
+ margin-bottom: 20px;
+}
+.margin-bottom-none {
+ margin-bottom: 0;
+}
+.margin-r-5 {
+ margin-right: 5px;
+}
+.inline {
+ display: inline;
+}
+.description-block {
+ display: block;
+ margin: 10px 0;
+ text-align: center;
+}
+.description-block.margin-bottom {
+ margin-bottom: 25px;
+}
+.description-block > .description-header {
+ margin: 0;
+ padding: 0;
+ font-weight: 600;
+ font-size: 16px;
+}
+.description-block > .description-text {
+ text-transform: uppercase;
+}
+.bg-red,
+.bg-yellow,
+.bg-aqua,
+.bg-blue,
+.bg-light-blue,
+.bg-green,
+.bg-navy,
+.bg-teal,
+.bg-olive,
+.bg-lime,
+.bg-orange,
+.bg-fuchsia,
+.bg-purple,
+.bg-maroon,
+.bg-black,
+.bg-red-active,
+.bg-yellow-active,
+.bg-aqua-active,
+.bg-blue-active,
+.bg-light-blue-active,
+.bg-green-active,
+.bg-navy-active,
+.bg-teal-active,
+.bg-olive-active,
+.bg-lime-active,
+.bg-orange-active,
+.bg-fuchsia-active,
+.bg-purple-active,
+.bg-maroon-active,
+.bg-black-active,
+.callout.callout-danger,
+.callout.callout-warning,
+.callout.callout-info,
+.callout.callout-success,
+.alert-success,
+.alert-danger,
+.alert-error,
+.alert-warning,
+.alert-info,
+.modal-primary .modal-body,
+.modal-primary .modal-header,
+.modal-primary .modal-footer,
+.modal-warning .modal-body,
+.modal-warning .modal-header,
+.modal-warning .modal-footer,
+.modal-info .modal-body,
+.modal-info .modal-header,
+.modal-info .modal-footer,
+.modal-success .modal-body,
+.modal-success .modal-header,
+.modal-success .modal-footer,
+.modal-danger .modal-body,
+.modal-danger .modal-header,
+.modal-danger .modal-footer {
+ color: #fff !important;
+}
+.bg-gray {
+ color: #000;
+ background-color: #d2d6de !important;
+}
+.bg-gray-light {
+ background-color: #f7f7f7;
+}
+.bg-black {
+ background-color: #111 !important;
+}
+.bg-red,
+.callout.callout-danger,
+.alert-danger,
+.alert-error,
+.modal-danger .modal-body {
+ background-color: #e74c3c !important;
+}
+.bg-yellow,
+.callout.callout-warning,
+.alert-warning,
+.modal-warning .modal-body {
+ background-color: #f39c12 !important;
+}
+.bg-aqua,
+.callout.callout-info,
+.alert-info,
+.modal-info .modal-body {
+ background-color: #3498db !important;
+}
+.bg-blue {
+ background-color: #0073b7 !important;
+}
+.bg-light-blue,
+.modal-primary .modal-body {
+ background-color: #3c8dbc !important;
+}
+.bg-green,
+.callout.callout-success,
+.alert-success,
+.modal-success .modal-body {
+ background-color: #18bc9c !important;
+}
+.bg-navy {
+ background-color: #001F3F !important;
+}
+.bg-teal {
+ background-color: #39CCCC !important;
+}
+.bg-olive {
+ background-color: #3D9970 !important;
+}
+.bg-lime {
+ background-color: #01FF70 !important;
+}
+.bg-orange {
+ background-color: #FF851B !important;
+}
+.bg-fuchsia {
+ background-color: #F012BE !important;
+}
+.bg-purple {
+ background-color: #605ca8 !important;
+}
+.bg-maroon {
+ background-color: #D81B60 !important;
+}
+.bg-gray-active {
+ color: #000;
+ background-color: #b5bbc8 !important;
+}
+.bg-black-active {
+ background-color: #000000 !important;
+}
+.bg-red-active,
+.modal-danger .modal-header,
+.modal-danger .modal-footer {
+ background-color: #e43321 !important;
+}
+.bg-yellow-active,
+.modal-warning .modal-header,
+.modal-warning .modal-footer {
+ background-color: #db8b0b !important;
+}
+.bg-aqua-active,
+.modal-info .modal-header,
+.modal-info .modal-footer {
+ background-color: #2489cc !important;
+}
+.bg-blue-active {
+ background-color: #005384 !important;
+}
+.bg-light-blue-active,
+.modal-primary .modal-header,
+.modal-primary .modal-footer {
+ background-color: #357ca5 !important;
+}
+.bg-green-active,
+.modal-success .modal-header,
+.modal-success .modal-footer {
+ background-color: #15a589 !important;
+}
+.bg-navy-active {
+ background-color: #001a35 !important;
+}
+.bg-teal-active {
+ background-color: #30bbbb !important;
+}
+.bg-olive-active {
+ background-color: #368763 !important;
+}
+.bg-lime-active {
+ background-color: #00e765 !important;
+}
+.bg-orange-active {
+ background-color: #ff7701 !important;
+}
+.bg-fuchsia-active {
+ background-color: #db0ead !important;
+}
+.bg-purple-active {
+ background-color: #555299 !important;
+}
+.bg-maroon-active {
+ background-color: #ca195a !important;
+}
+[class^="bg-"].disabled {
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+}
+.text-red {
+ color: #e74c3c !important;
+}
+.text-yellow {
+ color: #f39c12 !important;
+}
+.text-aqua {
+ color: #3498db !important;
+}
+.text-blue {
+ color: #0073b7 !important;
+}
+.text-black {
+ color: #111 !important;
+}
+.text-light-blue {
+ color: #3c8dbc !important;
+}
+.text-green {
+ color: #18bc9c !important;
+}
+.text-gray {
+ color: #d2d6de !important;
+}
+.text-navy {
+ color: #001F3F !important;
+}
+.text-teal {
+ color: #39CCCC !important;
+}
+.text-olive {
+ color: #3D9970 !important;
+}
+.text-lime {
+ color: #01FF70 !important;
+}
+.text-orange {
+ color: #FF851B !important;
+}
+.text-fuchsia {
+ color: #F012BE !important;
+}
+.text-purple {
+ color: #605ca8 !important;
+}
+.text-maroon {
+ color: #D81B60 !important;
+}
+.link-muted {
+ color: #7a869d;
+}
+.link-muted:hover,
+.link-muted:focus {
+ color: #606c84;
+}
+.link-black {
+ color: #666;
+}
+.link-black:hover,
+.link-black:focus {
+ color: #999;
+}
+.hide {
+ display: none !important;
+}
+.no-border {
+ border: 0 !important;
+}
+.no-padding {
+ padding: 0 !important;
+}
+.no-margin {
+ margin: 0 !important;
+}
+.no-shadow {
+ box-shadow: none !important;
+}
+.list-unstyled,
+.chart-legend,
+.contacts-list,
+.users-list,
+.mailbox-attachments {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+.list-group-unbordered > .list-group-item {
+ border-left: 0;
+ border-right: 0;
+ border-radius: 0;
+ padding-left: 0;
+ padding-right: 0;
+}
+.flat {
+ border-radius: 0 !important;
+}
+.text-bold,
+.text-bold.table td,
+.text-bold.table th {
+ font-weight: 700;
+}
+.text-sm {
+ font-size: 12px;
+}
+.jqstooltip {
+ padding: 5px !important;
+ width: auto !important;
+ height: auto !important;
+}
+.bg-teal-gradient {
+ background: #39CCCC !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #39CCCC), color-stop(1, #7adddd)) !important;
+ background: -ms-linear-gradient(bottom, #39CCCC, #7adddd) !important;
+ background: -moz-linear-gradient(center bottom, #39CCCC 0%, #7adddd 100%) !important;
+ background: -o-linear-gradient(#7adddd, #39CCCC) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd', endColorstr='#39CCCC', GradientType=0) !important;
+ color: #fff;
+}
+.bg-light-blue-gradient {
+ background: #3c8dbc !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #3c8dbc), color-stop(1, #67a8ce)) !important;
+ background: -ms-linear-gradient(bottom, #3c8dbc, #67a8ce) !important;
+ background: -moz-linear-gradient(center bottom, #3c8dbc 0%, #67a8ce 100%) !important;
+ background: -o-linear-gradient(#67a8ce, #3c8dbc) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce', endColorstr='#3c8dbc', GradientType=0) !important;
+ color: #fff;
+}
+.bg-blue-gradient {
+ background: #0073b7 !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #0073b7), color-stop(1, #0089db)) !important;
+ background: -ms-linear-gradient(bottom, #0073b7, #0089db) !important;
+ background: -moz-linear-gradient(center bottom, #0073b7 0%, #0089db 100%) !important;
+ background: -o-linear-gradient(#0089db, #0073b7) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db', endColorstr='#0073b7', GradientType=0) !important;
+ color: #fff;
+}
+.bg-aqua-gradient {
+ background: #3498db !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #3498db), color-stop(1, #52a7e0)) !important;
+ background: -ms-linear-gradient(bottom, #3498db, #52a7e0) !important;
+ background: -moz-linear-gradient(center bottom, #3498db 0%, #52a7e0 100%) !important;
+ background: -o-linear-gradient(#52a7e0, #3498db) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#52a7e0', endColorstr='#3498db', GradientType=0) !important;
+ color: #fff;
+}
+.bg-yellow-gradient {
+ background: #f39c12 !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f39c12), color-stop(1, #f7bc60)) !important;
+ background: -ms-linear-gradient(bottom, #f39c12, #f7bc60) !important;
+ background: -moz-linear-gradient(center bottom, #f39c12 0%, #f7bc60 100%) !important;
+ background: -o-linear-gradient(#f7bc60, #f39c12) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60', endColorstr='#f39c12', GradientType=0) !important;
+ color: #fff;
+}
+.bg-purple-gradient {
+ background: #605ca8 !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #605ca8), color-stop(1, #9491c4)) !important;
+ background: -ms-linear-gradient(bottom, #605ca8, #9491c4) !important;
+ background: -moz-linear-gradient(center bottom, #605ca8 0%, #9491c4 100%) !important;
+ background: -o-linear-gradient(#9491c4, #605ca8) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4', endColorstr='#605ca8', GradientType=0) !important;
+ color: #fff;
+}
+.bg-green-gradient {
+ background: #18bc9c !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #18bc9c), color-stop(1, #1cdcb6)) !important;
+ background: -ms-linear-gradient(bottom, #18bc9c, #1cdcb6) !important;
+ background: -moz-linear-gradient(center bottom, #18bc9c 0%, #1cdcb6 100%) !important;
+ background: -o-linear-gradient(#1cdcb6, #18bc9c) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1cdcb6', endColorstr='#18bc9c', GradientType=0) !important;
+ color: #fff;
+}
+.bg-red-gradient {
+ background: #e74c3c !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #e74c3c), color-stop(1, #ed7669)) !important;
+ background: -ms-linear-gradient(bottom, #e74c3c, #ed7669) !important;
+ background: -moz-linear-gradient(center bottom, #e74c3c 0%, #ed7669 100%) !important;
+ background: -o-linear-gradient(#ed7669, #e74c3c) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ed7669', endColorstr='#e74c3c', GradientType=0) !important;
+ color: #fff;
+}
+.bg-black-gradient {
+ background: #111 !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #111), color-stop(1, #2b2b2b)) !important;
+ background: -ms-linear-gradient(bottom, #111, #2b2b2b) !important;
+ background: -moz-linear-gradient(center bottom, #111 0%, #2b2b2b 100%) !important;
+ background: -o-linear-gradient(#2b2b2b, #111) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b', endColorstr='#111', GradientType=0) !important;
+ color: #fff;
+}
+.bg-maroon-gradient {
+ background: #D81B60 !important;
+ background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #D81B60), color-stop(1, #e73f7c)) !important;
+ background: -ms-linear-gradient(bottom, #D81B60, #e73f7c) !important;
+ background: -moz-linear-gradient(center bottom, #D81B60 0%, #e73f7c 100%) !important;
+ background: -o-linear-gradient(#e73f7c, #D81B60) !important;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c', endColorstr='#D81B60', GradientType=0) !important;
+ color: #fff;
+}
+.description-block .description-icon {
+ font-size: 16px;
+}
+.no-pad-top {
+ padding-top: 0;
+}
+.position-static {
+ position: static !important;
+}
+.list-header {
+ font-size: 15px;
+ padding: 10px 4px;
+ font-weight: bold;
+ color: #666;
+}
+.list-seperator {
+ height: 1px;
+ background: #f4f4f4;
+ margin: 15px 0 9px 0;
+}
+.list-link > a {
+ padding: 4px;
+ color: #777;
+}
+.list-link > a:hover {
+ color: #222;
+}
+.font-light {
+ font-weight: 300;
+}
+.user-block:before,
+.user-block:after {
+ content: " ";
+ display: table;
+}
+.user-block:after {
+ clear: both;
+}
+.user-block:before,
+.user-block:after {
+ content: " ";
+ display: table;
+}
+.user-block:after {
+ clear: both;
+}
+.user-block img {
+ width: 40px;
+ height: 40px;
+ float: left;
+}
+.user-block .username,
+.user-block .description,
+.user-block .comment {
+ display: block;
+ margin-left: 50px;
+}
+.user-block .username {
+ font-size: 16px;
+ font-weight: 600;
+}
+.user-block .description {
+ color: #999;
+ font-size: 13px;
+}
+.user-block.user-block-sm .username,
+.user-block.user-block-sm .description,
+.user-block.user-block-sm .comment {
+ margin-left: 40px;
+}
+.user-block.user-block-sm .username {
+ font-size: 14px;
+}
+.img-sm,
+.img-md,
+.img-lg,
+.box-comments .box-comment img,
+.user-block.user-block-sm img {
+ float: left;
+}
+.img-sm,
+.box-comments .box-comment img,
+.user-block.user-block-sm img {
+ width: 30px !important;
+ height: 30px !important;
+}
+.img-sm + .img-push {
+ margin-left: 40px;
+}
+.img-md {
+ width: 60px;
+ height: 60px;
+}
+.img-md + .img-push {
+ margin-left: 70px;
+}
+.img-lg {
+ width: 100px;
+ height: 100px;
+}
+.img-lg + .img-push {
+ margin-left: 110px;
+}
+.img-bordered {
+ border: 3px solid #d2d6de;
+ padding: 3px;
+}
+.img-bordered-sm {
+ border: 2px solid #d2d6de;
+ padding: 2px;
+}
+.attachment-block {
+ border: 1px solid #f4f4f4;
+ padding: 5px;
+ margin-bottom: 10px;
+ background: #f7f7f7;
+}
+.attachment-block .attachment-img {
+ max-width: 100px;
+ max-height: 100px;
+ height: auto;
+ float: left;
+}
+.attachment-block .attachment-pushed {
+ margin-left: 110px;
+}
+.attachment-block .attachment-heading {
+ margin: 0;
+}
+.attachment-block .attachment-text {
+ color: #555;
+}
+.connectedSortable {
+ min-height: 100px;
+}
+.ui-helper-hidden-accessible {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+}
+.sort-highlight {
+ background: #f4f4f4;
+ border: 1px dashed #ddd;
+ margin-bottom: 10px;
+}
+.full-opacity-hover {
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+}
+.full-opacity-hover:hover {
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+.chart {
+ position: relative;
+ overflow: hidden;
+ width: 100%;
+}
+.chart svg,
+.chart canvas {
+ width: 100% !important;
+}
+/*
+ * Misc: print
+ * -----------
+ */
+@media print {
+ .no-print,
+ .main-sidebar,
+ .left-side,
+ .main-header,
+ .content-header {
+ display: none !important;
+ }
+ .content-wrapper,
+ .right-side,
+ .main-footer {
+ margin-left: 0 !important;
+ min-height: 0 !important;
+ -webkit-transform: translate(0, 0) !important;
+ -ms-transform: translate(0, 0) !important;
+ -o-transform: translate(0, 0) !important;
+ transform: translate(0, 0) !important;
+ }
+ .fixed .content-wrapper,
+ .fixed .right-side {
+ padding-top: 0 !important;
+ }
+ .invoice {
+ width: 100%;
+ border: 0;
+ margin: 0;
+ padding: 0;
+ }
+ .invoice-col {
+ float: left;
+ width: 33.3333333%;
+ }
+ .table-responsive {
+ overflow: auto;
+ }
+ .table-responsive > .table tr th,
+ .table-responsive > .table tr td {
+ white-space: normal !important;
+ }
+}
+/*# sourceMappingURL=../css/fastadmin.css.map */
\ No newline at end of file
diff --git a/addons/weliam_smartcity/web/resource/address/fastadmin.min.css b/addons/weliam_smartcity/web/resource/address/fastadmin.min.css
new file mode 100644
index 0000000..d8e6243
--- /dev/null
+++ b/addons/weliam_smartcity/web/resource/address/fastadmin.min.css
@@ -0,0 +1 @@
+/*! * AdminLTE v2.3.7 * Author:Almsaeed Studio * Website:Almsaeed Studio * License:Open source - MIT * Please visit http://opensource.org/licenses/MIT for more information !*/ html,body{min-height:100%;}.layout-boxed html,.layout-boxed body{height:100%;}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:'Source Sans Pro','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;overflow-x:hidden;overflow-y:auto;}.wrapper{min-height:100%;position:relative;overflow:hidden;}.wrapper:before,.wrapper:after{content:" ";display:table;}.wrapper:after{clear:both;}.wrapper:before,.wrapper:after{content:" ";display:table;}.wrapper:after{clear:both;}.layout-boxed .wrapper{max-width:1250px;margin:0 auto;min-height:100%;box-shadow:0 0 8px rgba(0,0,0,0.5);position:relative;}.layout-boxed{background:url('../img/boxed-bg.jpg') repeat fixed;}.content-wrapper,.right-side,.main-footer{-webkit-transition:-webkit-transform 0.3s ease-in-out,margin 0.3s ease-in-out;-moz-transition:-moz-transform 0.3s ease-in-out,margin 0.3s ease-in-out;-o-transition:-o-transform 0.3s ease-in-out,margin 0.3s ease-in-out;transition:transform 0.3s ease-in-out,margin 0.3s ease-in-out;margin-left:230px;z-index:820;}.layout-top-nav .content-wrapper,.layout-top-nav .right-side,.layout-top-nav .main-footer{margin-left:0;}@media (max-width:767px){.content-wrapper,.right-side,.main-footer{margin-left:0;}}@media (min-width:768px){.sidebar-collapse .content-wrapper,.sidebar-collapse .right-side,.sidebar-collapse .main-footer{margin-left:0;}}@media (max-width:767px){.sidebar-open .content-wrapper,.sidebar-open .right-side,.sidebar-open .main-footer{-webkit-transform:translate(230px,0);-ms-transform:translate(230px,0);-o-transform:translate(230px,0);transform:translate(230px,0);}}.content-wrapper,.right-side{min-height:100%;background-color:#ecf0f5;z-index:800;}.main-footer{background:#fff;padding:15px;color:#444;border-top:1px solid #d2d6de;}.fixed .main-header,.fixed .main-sidebar,.fixed .left-side{position:fixed;}.fixed .main-header{top:0;right:0;left:0;}.fixed .content-wrapper,.fixed .right-side{padding-top:50px;}@media (max-width:767px){.fixed .content-wrapper,.fixed .right-side{padding-top:100px;}}.fixed.layout-boxed .wrapper{max-width:100%;}body.hold-transition .content-wrapper,body.hold-transition .right-side,body.hold-transition .main-footer,body.hold-transition .main-sidebar,body.hold-transition .left-side,body.hold-transition .main-header .navbar,body.hold-transition .main-header .logo{-webkit-transition:none;-o-transition:none;transition:none;}.content{min-height:250px;padding:15px;margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:'Source Sans Pro',sans-serif;}a{color:#3c8dbc;}a:hover,a:active,a:focus{outline:none;text-decoration:none;color:#72afd2;}.page-header{margin:10px 0 20px 0;font-size:22px;}.page-header > small{color:#666;display:block;margin-top:5px;}.main-header{position:relative;max-height:100px;z-index:1030;}.main-header .navbar{-webkit-transition:margin-left 0.3s ease-in-out;-o-transition:margin-left 0.3s ease-in-out;transition:margin-left 0.3s ease-in-out;margin-bottom:0;margin-left:230px;border:none;min-height:50px;border-radius:0;}.layout-top-nav .main-header .navbar{margin-left:0;}.main-header #navbar-search-input.form-control{background:rgba(255,255,255,0.2);border-color:transparent;}.main-header #navbar-search-input.form-control:focus,.main-header #navbar-search-input.form-control:active{border-color:rgba(0,0,0,0.1);background:rgba(255,255,255,0.9);}.main-header #navbar-search-input.form-control::-moz-placeholder{color:#ccc;opacity:1;}.main-header #navbar-search-input.form-control:-ms-input-placeholder{color:#ccc;}.main-header #navbar-search-input.form-control::-webkit-input-placeholder{color:#ccc;}.main-header .navbar-custom-menu,.main-header .navbar-right{float:right;}@media (max-width:991px){.main-header .navbar-custom-menu a,.main-header .navbar-right a{color:inherit;background:transparent;}}@media (max-width:767px){.main-header .navbar-right{float:none;}.navbar-collapse .main-header .navbar-right{margin:7.5px -15px;}.main-header .navbar-right > li{color:inherit;border:0;}}.main-header .sidebar-toggle{float:left;background-color:transparent;background-image:none;padding:16.5px 15px;font-family:fontAwesome;}.main-header .sidebar-toggle:before{content:"\f0c9";}.main-header .sidebar-toggle:hover{color:#fff;}.main-header .sidebar-toggle:focus,.main-header .sidebar-toggle:active{background:transparent;}.main-header .sidebar-toggle .icon-bar{display:none;}.main-header .navbar .nav > li.user > a > .fa,.main-header .navbar .nav > li.user > a > .glyphicon,.main-header .navbar .nav > li.user > a > .ion{margin-right:5px;}.main-header .navbar .nav > li > a > .label{position:absolute;top:9px;right:7px;text-align:center;font-size:9px;padding:2px 3px;line-height:.9;}.main-header .logo{-webkit-transition:width 0.3s ease-in-out;-o-transition:width 0.3s ease-in-out;transition:width 0.3s ease-in-out;display:block;float:left;height:50px;font-size:20px;line-height:50px;text-align:center;width:230px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:0 15px;font-weight:300;overflow:hidden;}.main-header .logo .logo-lg{display:block;}.main-header .logo .logo-mini{display:none;}.main-header .navbar-brand{color:#fff;}.content-header{position:relative;padding:15px 15px 0 15px;}.content-header > h1{margin:0;font-size:24px;}.content-header > h1 > small{font-size:15px;display:inline-block;padding-left:4px;font-weight:300;}.content-header > .breadcrumb{float:right;background:transparent;margin-top:0;margin-bottom:0;font-size:12px;padding:7px 5px;position:absolute;top:15px;right:10px;border-radius:2px;}.content-header > .breadcrumb > li > a{color:#444;text-decoration:none;display:inline-block;}.content-header > .breadcrumb > li > a > .fa,.content-header > .breadcrumb > li > a > .glyphicon,.content-header > .breadcrumb > li > a > .ion{margin-right:5px;}.content-header > .breadcrumb > li + li:before{content:'>\00a0';}@media (max-width:991px){.content-header > .breadcrumb{position:relative;margin-top:5px;top:0;right:0;float:none;background:#d2d6de;padding-left:10px;}.content-header > .breadcrumb li:before{color:#97a0b3;}}.navbar-toggle{color:#fff;border:0;margin:0;padding:16.5px 15px;}@media (max-width:991px){.navbar-custom-menu .navbar-nav > li{float:left;}.navbar-custom-menu .navbar-nav{margin:0;float:left;}.navbar-custom-menu .navbar-nav > li > a{padding-top:15px;padding-bottom:15px;line-height:20px;}}@media (max-width:767px){.main-header{position:relative;}.main-header .logo,.main-header .navbar{width:100%;float:none;}.main-header .navbar{margin:0;}.main-header .navbar-custom-menu{float:right;}}@media (max-width:991px){.navbar-collapse.pull-left{float:none !important;}.navbar-collapse.pull-left + .navbar-custom-menu{display:block;position:absolute;top:0;right:40px;}}.main-sidebar,.left-side{position:absolute;top:0;left:0;padding-top:50px;min-height:100%;width:230px;z-index:810;-webkit-transition:-webkit-transform 0.3s ease-in-out,width 0.3s ease-in-out;-moz-transition:-moz-transform 0.3s ease-in-out,width 0.3s ease-in-out;-o-transition:-o-transform 0.3s ease-in-out,width 0.3s ease-in-out;transition:transform 0.3s ease-in-out,width 0.3s ease-in-out;}@media (max-width:767px){.main-sidebar,.left-side{padding-top:100px;}}@media (max-width:767px){.main-sidebar,.left-side{-webkit-transform:translate(-230px,0);-ms-transform:translate(-230px,0);-o-transform:translate(-230px,0);transform:translate(-230px,0);}}@media (min-width:768px){.sidebar-collapse .main-sidebar,.sidebar-collapse .left-side{-webkit-transform:translate(-230px,0);-ms-transform:translate(-230px,0);-o-transform:translate(-230px,0);transform:translate(-230px,0);}}@media (max-width:767px){.sidebar-open .main-sidebar,.sidebar-open .left-side{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}}.sidebar{padding-bottom:10px;}.sidebar-form input:focus{border-color:transparent;}.user-panel{position:relative;width:100%;padding:10px;overflow:hidden;}.user-panel:before,.user-panel:after{content:" ";display:table;}.user-panel:after{clear:both;}.user-panel:before,.user-panel:after{content:" ";display:table;}.user-panel:after{clear:both;}.user-panel > .image > img{width:100%;max-width:45px;height:auto;}.user-panel > .info{padding:5px 5px 5px 15px;line-height:1;position:absolute;left:55px;}.user-panel > .info > p{font-weight:600;margin-bottom:9px;}.user-panel > .info > a{text-decoration:none;padding-right:5px;margin-top:3px;font-size:11px;}.user-panel > .info > a > .fa,.user-panel > .info > a > .ion,.user-panel > .info > a > .glyphicon{margin-right:3px;}.sidebar-menu{list-style:none;margin:0;padding:0;}.sidebar-menu > li{position:relative;margin:0;padding:0;}.sidebar-menu > li > a{padding:12px 5px 12px 15px;display:block;}.sidebar-menu > li > a > .fa,.sidebar-menu > li > a > .glyphicon,.sidebar-menu > li > a > .ion{width:20px;}.sidebar-menu > li .label,.sidebar-menu > li .badge{margin-right:5px;}.sidebar-menu > li .badge{margin-top:3px;}.sidebar-menu li.header{padding:10px 25px 10px 15px;font-size:12px;}.sidebar-menu li > a > .fa-angle-left,.sidebar-menu li > a > .pull-right-container > .fa-angle-left{width:auto;height:auto;padding:0;margin-right:10px;}.sidebar-menu li.active > a > .fa-angle-left,.sidebar-menu li.active > a > .pull-right-container > .fa-angle-left{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg);}.sidebar-menu li.active > .treeview-menu{display:block;}.sidebar-menu .treeview-menu{display:none;list-style:none;padding:0;margin:0;padding-left:5px;}.sidebar-menu .treeview-menu .treeview-menu{padding-left:20px;}.sidebar-menu .treeview-menu > li{margin:0;}.sidebar-menu .treeview-menu > li > a{padding:12px 5px 12px 15px;display:block;font-size:12px;}.sidebar-menu .treeview-menu > li > a > .fa,.sidebar-menu .treeview-menu > li > a > .glyphicon,.sidebar-menu .treeview-menu > li > a > .ion{width:20px;}.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-left,.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-down,.sidebar-menu .treeview-menu > li > a > .fa-angle-left,.sidebar-menu .treeview-menu > li > a > .fa-angle-down{width:auto;}@media (min-width:768px){.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .right-side,.sidebar-mini.sidebar-collapse .main-footer{margin-left:50px !important;z-index:840;}.sidebar-mini.sidebar-collapse .main-sidebar{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);width:50px !important;z-index:850;}.sidebar-mini.sidebar-collapse .sidebar-menu > li{position:relative;}.sidebar-mini.sidebar-collapse .sidebar-menu > li > a{margin-right:0;}.sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span{border-top-right-radius:4px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span{border-bottom-right-radius:4px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu{padding-top:5px;padding-bottom:5px;border-bottom-right-radius:4px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right),.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu{display:block !important;position:absolute;width:180px;left:50px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span{top:0;margin-left:-3px;padding:12px 5px 12px 20px;background-color:inherit;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container{float:right;width:auto!important;left:200px!important;top:10px!important;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container > .label:not(:first-of-type){display:none;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu{top:44px;margin-left:0;}.sidebar-mini.sidebar-collapse .main-sidebar .user-panel > .info,.sidebar-mini.sidebar-collapse .sidebar-form,.sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span,.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu,.sidebar-mini.sidebar-collapse .sidebar-menu > li > a > .pull-right,.sidebar-mini.sidebar-collapse .sidebar-menu li.header{display:none !important;-webkit-transform:translateZ(0);}.sidebar-mini.sidebar-collapse .main-header .logo{width:50px;}.sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini{display:block;margin-left:-15px;margin-right:-15px;font-size:18px;}.sidebar-mini.sidebar-collapse .main-header .logo > .logo-lg{display:none;}.sidebar-mini.sidebar-collapse .main-header .navbar{margin-left:50px;}}.sidebar-menu,.main-sidebar .user-panel,.sidebar-menu > li.header{white-space:nowrap;overflow:hidden;}.sidebar-menu:hover{overflow:visible;}.sidebar-form,.sidebar-menu > li.header{overflow:hidden;text-overflow:clip;}.sidebar-menu li > a{position:relative;}.sidebar-menu li > a > .pull-right-container{position:absolute;right:10px;top:50%;margin-top:-7px;}.control-sidebar-bg{position:fixed;z-index:1000;bottom:0;}.control-sidebar-bg,.control-sidebar{top:0;right:-230px;width:230px;-webkit-transition:right 0.3s ease-in-out;-o-transition:right 0.3s ease-in-out;transition:right 0.3s ease-in-out;}.control-sidebar{position:absolute;padding-top:50px;z-index:1010;}@media (max-width:768px){.control-sidebar{padding-top:100px;}}.control-sidebar > .tab-content{padding:10px 15px;}.control-sidebar.control-sidebar-open,.control-sidebar.control-sidebar-open + .control-sidebar-bg{right:0;}.control-sidebar-open .control-sidebar-bg,.control-sidebar-open .control-sidebar{right:0;}@media (min-width:768px){.control-sidebar-open .content-wrapper,.control-sidebar-open .right-side,.control-sidebar-open .main-footer{margin-right:230px;}}.nav-tabs.control-sidebar-tabs > li:first-of-type > a,.nav-tabs.control-sidebar-tabs > li:first-of-type > a:hover,.nav-tabs.control-sidebar-tabs > li:first-of-type > a:focus{border-left-width:0;}.nav-tabs.control-sidebar-tabs > li > a{border-radius:0;}.nav-tabs.control-sidebar-tabs > li > a,.nav-tabs.control-sidebar-tabs > li > a:hover{border-top:none;border-right:none;border-left:1px solid transparent;border-bottom:1px solid transparent;}.nav-tabs.control-sidebar-tabs > li > a .icon{font-size:16px;}.nav-tabs.control-sidebar-tabs > li.active > a,.nav-tabs.control-sidebar-tabs > li.active > a:hover,.nav-tabs.control-sidebar-tabs > li.active > a:focus,.nav-tabs.control-sidebar-tabs > li.active > a:active{border-top:none;border-right:none;border-bottom:none;}@media (max-width:768px){.nav-tabs.control-sidebar-tabs{display:table;}.nav-tabs.control-sidebar-tabs > li{display:table-cell;}}.control-sidebar-heading{font-weight:400;font-size:16px;padding:10px 0;margin-bottom:10px;}.control-sidebar-subheading{display:block;font-weight:400;font-size:14px;}.control-sidebar-menu{list-style:none;padding:0;margin:0 -15px;}.control-sidebar-menu > li > a{display:block;padding:10px 15px;}.control-sidebar-menu > li > a:before,.control-sidebar-menu > li > a:after{content:" ";display:table;}.control-sidebar-menu > li > a:after{clear:both;}.control-sidebar-menu > li > a:before,.control-sidebar-menu > li > a:after{content:" ";display:table;}.control-sidebar-menu > li > a:after{clear:both;}.control-sidebar-menu > li > a > .control-sidebar-subheading{margin-top:0;}.control-sidebar-menu .menu-icon{float:left;width:35px;height:35px;border-radius:50%;text-align:center;line-height:35px;}.control-sidebar-menu .menu-info{margin-left:45px;margin-top:3px;}.control-sidebar-menu .menu-info > .control-sidebar-subheading{margin:0;}.control-sidebar-menu .menu-info > p{margin:0;font-size:11px;}.control-sidebar-menu .progress{margin:0;}.control-sidebar-dark{color:#b8c7ce;}.control-sidebar-dark,.control-sidebar-dark + .control-sidebar-bg{background:#222d32;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs{border-bottom:#1c2529;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a{background:#181f23;color:#b8c7ce;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus{border-left-color:#141a1d;border-bottom-color:#141a1d;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:active{background:#1c2529;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover{color:#fff;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:active{background:#222d32;color:#fff;}.control-sidebar-dark .control-sidebar-heading,.control-sidebar-dark .control-sidebar-subheading{color:#fff;}.control-sidebar-dark .control-sidebar-menu > li > a:hover{background:#1e282c;}.control-sidebar-dark .control-sidebar-menu > li > a .menu-info > p{color:#b8c7ce;}.control-sidebar-light{color:#5e5e5e;}.control-sidebar-light,.control-sidebar-light + .control-sidebar-bg{background:#f9fafc;border-left:1px solid #d2d6de;}.control-sidebar-light .nav-tabs.control-sidebar-tabs{border-bottom:#d2d6de;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a{background:#e8ecf4;color:#444;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus{border-left-color:#d2d6de;border-bottom-color:#d2d6de;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:active{background:#eff1f7;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:active{background:#f9fafc;color:#111;}.control-sidebar-light .control-sidebar-heading,.control-sidebar-light .control-sidebar-subheading{color:#111;}.control-sidebar-light .control-sidebar-menu{margin-left:-14px;}.control-sidebar-light .control-sidebar-menu > li > a:hover{background:#f4f4f5;}.control-sidebar-light .control-sidebar-menu > li > a .menu-info > p{color:#5e5e5e;}.dropdown-menu{box-shadow:none;border-color:#eee;}.dropdown-menu > li > a{}.dropdown-menu > li > a > .glyphicon,.dropdown-menu > li > a > .fa,.dropdown-menu > li > a > .ion{margin-right:10px;}.dropdown-menu > li > a:hover{background-color:#e1e3e9;color:#333;}.dropdown-menu > .divider{background-color:#eee;}.navbar-nav > .notifications-menu > .dropdown-menu,.navbar-nav > .messages-menu > .dropdown-menu,.navbar-nav > .tasks-menu > .dropdown-menu{width:280px;padding:0 0 0 0;margin:0;top:100%;}.navbar-nav > .notifications-menu > .dropdown-menu > li,.navbar-nav > .messages-menu > .dropdown-menu > li,.navbar-nav > .tasks-menu > .dropdown-menu > li{position:relative;}.navbar-nav > .notifications-menu > .dropdown-menu > li.header,.navbar-nav > .messages-menu > .dropdown-menu > li.header,.navbar-nav > .tasks-menu > .dropdown-menu > li.header{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0;background-color:#ffffff;padding:7px 10px;border-bottom:1px solid #f4f4f4;color:#444444;font-size:14px;}.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px;font-size:12px;background-color:#fff;padding:7px 10px;border-bottom:1px solid #eeeeee;color:#444 !important;text-align:center;}@media (max-width:991px){.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a{background:#fff !important;color:#444 !important;}}.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover,.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover,.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover{text-decoration:none;font-weight:normal;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu,.navbar-nav > .messages-menu > .dropdown-menu > li .menu,.navbar-nav > .tasks-menu > .dropdown-menu > li .menu{max-height:200px;margin:0;padding:0;list-style:none;overflow-x:hidden;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a,.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a{display:block;white-space:nowrap;border-bottom:1px solid #f4f4f4;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover,.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover{background:#f4f4f4;text-decoration:none;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a{color:#444444;overflow:hidden;text-overflow:ellipsis;padding:10px;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon,.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa,.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion{width:20px;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a{margin:0;padding:10px 10px;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img{margin:auto 10px auto auto;width:40px;height:40px;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4{padding:0;margin:0 0 0 45px;color:#444444;font-size:15px;position:relative;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small{color:#999999;font-size:10px;position:absolute;top:0;right:0;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p{margin:0 0 0 45px;font-size:12px;color:#888888;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{content:" ";display:table;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{clear:both;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{content:" ";display:table;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{clear:both;}.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a{padding:10px;}.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3{font-size:14px;padding:0;margin:0 0 10px 0;color:#666666;}.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress{padding:0;margin:0;}.navbar-nav > .user-menu > .dropdown-menu{border-top-right-radius:0;border-top-left-radius:0;padding:1px 0 0 0;border-top-width:0;width:280px;}.navbar-nav > .user-menu > .dropdown-menu,.navbar-nav > .user-menu > .dropdown-menu > .user-body{border-bottom-right-radius:4px;border-bottom-left-radius:4px;}.navbar-nav > .user-menu > .dropdown-menu > li.user-header{height:175px;padding:10px;text-align:center;}.navbar-nav > .user-menu > .dropdown-menu > li.user-header > img{z-index:5;height:90px;width:90px;border:3px solid;border-color:transparent;border-color:rgba(255,255,255,0.2);}.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p{z-index:5;color:#fff;color:rgba(255,255,255,0.8);font-size:17px;margin-top:10px;}.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small{display:block;font-size:12px;}.navbar-nav > .user-menu > .dropdown-menu > .user-body{padding:15px;border-bottom:1px solid #f4f4f4;border-top:1px solid #dddddd;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:before,.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:before,.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-body a{color:#444 !important;}@media (max-width:991px){.navbar-nav > .user-menu > .dropdown-menu > .user-body a{background:#fff !important;color:#444 !important;}}.navbar-nav > .user-menu > .dropdown-menu > .user-footer{background-color:#f9f9f9;padding:10px;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before,.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before,.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default{color:#666666;}@media (max-width:991px){.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default:hover{background-color:#f9f9f9;}}.navbar-nav > .user-menu .user-image{float:left;width:25px;height:25px;border-radius:50%;margin-right:10px;margin-top:-2px;}@media (max-width:767px){.navbar-nav > .user-menu .user-image{float:none;margin-right:0;margin-top:-8px;line-height:10px;}}.open:not(.dropup) > .animated-dropdown-menu{backface-visibility:visible !important;-webkit-animation:flipInX 0.7s both;-o-animation:flipInX 0.7s both;animation:flipInX 0.7s both;}@keyframes flipInX{0%{transform:perspective(400px) rotate3d(1,0,0,90deg);transition-timing-function:ease-in;opacity:0;}40%{transform:perspective(400px) rotate3d(1,0,0,-20deg);transition-timing-function:ease-in;}60%{transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1;}80%{transform:perspective(400px) rotate3d(1,0,0,-5deg);}100%{transform:perspective(400px);}}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;opacity:0;}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1;}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);}100%{-webkit-transform:perspective(400px);}}.navbar-custom-menu > .navbar-nav > li{position:relative;}.navbar-custom-menu > .navbar-nav > li > .dropdown-menu{position:absolute;right:0;left:auto;}@media (max-width:991px){.navbar-custom-menu > .navbar-nav{float:right;}.navbar-custom-menu > .navbar-nav > li{position:static;}.navbar-custom-menu > .navbar-nav > li > .dropdown-menu{position:absolute;right:5%;left:auto;border:1px solid #ddd;background:#fff;}}.dropdown-submenu{position:relative;}.dropdown-submenu > .dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:3px 0 3px 3px;}.dropdown-submenu:hover > .dropdown-menu{display:block;}.dropdown-submenu:hover > a:after{border-left-color:#fff;}.dropdown-submenu > a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px;}.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left > .dropdown-menu{left:-100%;margin-left:10px;border-radius:3px 0 3px 3px;}.form-control{border-radius:0;box-shadow:none;border-color:#d2d6de;-webkit-appearance:none;-moz-appearance:none;appearance:none;}.form-control:focus{border-color:#3c8dbc;box-shadow:none;}.form-control::-moz-placeholder,.form-control:-ms-input-placeholder,.form-control::-webkit-input-placeholder{color:#bbb;opacity:1;}.form-control .btn{border-radius:0;}select.form-control{-webkit-appearance:none;-webkit-border-radius:0px;background-position:right 50%;background-repeat:no-repeat;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAMCAYAAABSgIzaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZFNDEwNjlGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZFNDEwNkFGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkU0MTA2N0Y3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkU0MTA2OEY3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuGsgwQAAAA5SURBVHjaYvz//z8DOYCJgUxAf42MQIzTk0D/M+KzkRGPoQSdykiKJrBGpOhgJFYTWNEIiEeAAAMAzNENEOH+do8AAAAASUVORK5CYII=);}.form-group.has-success label{color:#18bc9c;}.form-group.has-success .form-control,.form-group.has-success .input-group-addon{border-color:#18bc9c;box-shadow:none;}.form-group.has-success .help-block{color:#18bc9c;}.form-group.has-warning label{color:#f39c12;}.form-group.has-warning .form-control,.form-group.has-warning .input-group-addon{border-color:#f39c12;box-shadow:none;}.form-group.has-warning .help-block{color:#f39c12;}.form-group.has-error label{color:#e74c3c;}.form-group.has-error .form-control,.form-group.has-error .input-group-addon{border-color:#e74c3c;box-shadow:none;}.form-group.has-error .help-block{color:#e74c3c;}.input-group .input-group-addon{border-radius:0;border-color:#d2d6de;background-color:#fff;}.btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0;}.icheck > label{padding-left:0;}.form-control-feedback.fa{line-height:31px;}.input-lg + .form-control-feedback.fa,.input-group-lg + .form-control-feedback.fa,.form-group-lg .form-control + .form-control-feedback.fa{line-height:42px;}.input-sm + .form-control-feedback.fa,.input-group-sm + .form-control-feedback.fa,.form-group-sm .form-control + .form-control-feedback.fa{line-height:28px;}.progress,.progress > .progress-bar{-webkit-box-shadow:none;box-shadow:none;}.progress,.progress > .progress-bar,.progress .progress-bar,.progress > .progress-bar .progress-bar{border-radius:1px;}.progress.sm,.progress-sm{height:10px;}.progress.sm,.progress-sm,.progress.sm .progress-bar,.progress-sm .progress-bar{border-radius:1px;}.progress.xs,.progress-xs{height:7px;}.progress.xs,.progress-xs,.progress.xs .progress-bar,.progress-xs .progress-bar{border-radius:1px;}.progress.xxs,.progress-xxs{height:3px;}.progress.xxs,.progress-xxs,.progress.xxs .progress-bar,.progress-xxs .progress-bar{border-radius:1px;}.progress.vertical{position:relative;width:30px;height:200px;display:inline-block;margin-right:10px;}.progress.vertical > .progress-bar{width:100%;position:absolute;bottom:0;}.progress.vertical.sm,.progress.vertical.progress-sm{width:20px;}.progress.vertical.xs,.progress.vertical.progress-xs{width:10px;}.progress.vertical.xxs,.progress.vertical.progress-xxs{width:3px;}.progress-group .progress-text{font-weight:600;}.progress-group .progress-number{float:right;}.table tr > td .progress{margin:0;}.progress-bar-light-blue,.progress-bar-primary{background-color:#3c8dbc;}.progress-striped .progress-bar-light-blue,.progress-striped .progress-bar-primary{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-green,.progress-bar-success{background-color:#18bc9c;}.progress-striped .progress-bar-green,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-aqua,.progress-bar-info{background-color:#3498db;}.progress-striped .progress-bar-aqua,.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-yellow,.progress-bar-warning{background-color:#f39c12;}.progress-striped .progress-bar-yellow,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-red,.progress-bar-danger{background-color:#e74c3c;}.progress-striped .progress-bar-red,.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.small-box{border-radius:2px;position:relative;display:block;margin-bottom:20px;box-shadow:0 1px 1px rgba(0,0,0,0.1);}.small-box > .inner{padding:10px;}.small-box > .small-box-footer{position:relative;text-align:center;padding:3px 0;color:#fff;color:rgba(255,255,255,0.8);display:block;z-index:10;background:rgba(0,0,0,0.1);text-decoration:none;}.small-box > .small-box-footer:hover{color:#fff;background:rgba(0,0,0,0.15);}.small-box h3{font-size:38px;font-weight:bold;margin:0 0 10px 0;white-space:nowrap;padding:0;}.small-box p{font-size:15px;}.small-box p > small{display:block;color:#f9f9f9;font-size:13px;margin-top:5px;}.small-box h3,.small-box p{z-index:5;}.small-box .icon{-webkit-transition:all 0.3s linear;-o-transition:all 0.3s linear;transition:all 0.3s linear;position:absolute;top:-10px;right:10px;z-index:0;font-size:90px;color:rgba(0,0,0,0.15);}.small-box:hover{text-decoration:none;color:#f9f9f9;}.small-box:hover .icon{font-size:95px;}@media (max-width:767px){.small-box{text-align:center;}.small-box .icon{display:none;}.small-box p{font-size:12px;}}.box{position:relative;border-radius:3px;background:#ffffff;border-top:3px solid #d2d6de;margin-bottom:20px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1);}.box.box-primary{border-top-color:#3c8dbc;}.box.box-info{border-top-color:#3498db;}.box.box-danger{border-top-color:#e74c3c;}.box.box-warning{border-top-color:#f39c12;}.box.box-success{border-top-color:#18bc9c;}.box.box-default{border-top-color:#d2d6de;}.box.collapsed-box .box-body,.box.collapsed-box .box-footer{display:none;}.box .nav-stacked > li{border-bottom:1px solid #f4f4f4;margin:0;}.box .nav-stacked > li:last-of-type{border-bottom:none;}.box.height-control .box-body{max-height:300px;overflow:auto;}.box .border-right{border-right:1px solid #f4f4f4;}.box .border-left{border-left:1px solid #f4f4f4;}.box.box-solid{border-top:0;}.box.box-solid > .box-header .btn.btn-default{background:transparent;}.box.box-solid > .box-header .btn:hover,.box.box-solid > .box-header a:hover{background:rgba(0,0,0,0.1);}.box.box-solid.box-default{border:1px solid #d2d6de;}.box.box-solid.box-default > .box-header{color:#444;background:#d2d6de;background-color:#d2d6de;}.box.box-solid.box-default > .box-header a,.box.box-solid.box-default > .box-header .btn{color:#444;}.box.box-solid.box-primary{border:1px solid #3c8dbc;}.box.box-solid.box-primary > .box-header{color:#fff;background:#3c8dbc;background-color:#3c8dbc;}.box.box-solid.box-primary > .box-header a,.box.box-solid.box-primary > .box-header .btn{color:#fff;}.box.box-solid.box-info{border:1px solid #3498db;}.box.box-solid.box-info > .box-header{color:#fff;background:#3498db;background-color:#3498db;}.box.box-solid.box-info > .box-header a,.box.box-solid.box-info > .box-header .btn{color:#fff;}.box.box-solid.box-danger{border:1px solid #e74c3c;}.box.box-solid.box-danger > .box-header{color:#fff;background:#e74c3c;background-color:#e74c3c;}.box.box-solid.box-danger > .box-header a,.box.box-solid.box-danger > .box-header .btn{color:#fff;}.box.box-solid.box-warning{border:1px solid #f39c12;}.box.box-solid.box-warning > .box-header{color:#fff;background:#f39c12;background-color:#f39c12;}.box.box-solid.box-warning > .box-header a,.box.box-solid.box-warning > .box-header .btn{color:#fff;}.box.box-solid.box-success{border:1px solid #18bc9c;}.box.box-solid.box-success > .box-header{color:#fff;background:#18bc9c;background-color:#18bc9c;}.box.box-solid.box-success > .box-header a,.box.box-solid.box-success > .box-header .btn{color:#fff;}.box.box-solid > .box-header > .box-tools .btn{border:0;box-shadow:none;}.box.box-solid[class*='bg'] > .box-header{color:#fff;}.box .box-group > .box{margin-bottom:5px;}.box .knob-label{text-align:center;color:#333;font-weight:100;font-size:12px;margin-bottom:0.3em;}.box > .overlay,.overlay-wrapper > .overlay,.box > .loading-img,.overlay-wrapper > .loading-img{position:absolute;top:0;left:0;width:100%;height:100%;}.box .overlay,.overlay-wrapper .overlay{z-index:50;background:rgba(255,255,255,0.7);border-radius:3px;}.box .overlay > .fa,.overlay-wrapper .overlay > .fa{position:absolute;top:50%;left:50%;margin-left:-15px;margin-top:-15px;color:#000;font-size:30px;}.box .overlay.dark,.overlay-wrapper .overlay.dark{background:rgba(0,0,0,0.5);}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table;}.box-header:after,.box-body:after,.box-footer:after{clear:both;}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table;}.box-header:after,.box-body:after,.box-footer:after{clear:both;}.box-header{color:#444;display:block;padding:10px;position:relative;}.box-header.with-border{border-bottom:1px solid #f4f4f4;}.collapsed-box .box-header.with-border{border-bottom:none;}.box-header > .fa,.box-header > .glyphicon,.box-header > .ion,.box-header .box-title{display:inline-block;font-size:18px;margin:0;line-height:1;}.box-header > .fa,.box-header > .glyphicon,.box-header > .ion{margin-right:5px;}.box-header > .box-tools{position:absolute;right:10px;top:5px;}.box-header > .box-tools [data-toggle="tooltip"]{position:relative;}.box-header > .box-tools.pull-right .dropdown-menu{right:0;left:auto;}.btn-box-tool{padding:5px;font-size:12px;background:transparent;color:#97a0b3;}.open .btn-box-tool,.btn-box-tool:hover{color:#606c84;}.btn-box-tool.btn:active{box-shadow:none;}.box-body{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;padding:10px;}.no-header .box-body{border-top-right-radius:3px;border-top-left-radius:3px;}.box-body > .table{margin-bottom:0;}.box-body .fc{margin-top:5px;}.box-body .full-width-chart{margin:-19px;}.box-body.no-padding .full-width-chart{margin:-9px;}.box-body .box-pane{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:3px;}.box-body .box-pane-right{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0;}.box-footer{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-top:1px solid #f4f4f4;padding:10px;background-color:#fff;}.chart-legend{margin:10px 0;}@media (max-width:991px){.chart-legend > li{float:left;margin-right:10px;}}.box-comments{background:#f7f7f7;}.box-comments .box-comment{padding:8px 0;border-bottom:1px solid #eee;}.box-comments .box-comment:before,.box-comments .box-comment:after{content:" ";display:table;}.box-comments .box-comment:after{clear:both;}.box-comments .box-comment:before,.box-comments .box-comment:after{content:" ";display:table;}.box-comments .box-comment:after{clear:both;}.box-comments .box-comment:last-of-type{border-bottom:0;}.box-comments .box-comment:first-of-type{padding-top:0;}.box-comments .box-comment img{float:left;}.box-comments .comment-text{margin-left:40px;color:#555;}.box-comments .username{color:#444;display:block;font-weight:600;}.box-comments .text-muted{font-weight:400;font-size:12px;}.todo-list{margin:0;padding:0;list-style:none;overflow:auto;}.todo-list > li{border-radius:2px;padding:10px;background:#f4f4f4;margin-bottom:2px;border-left:2px solid #e6e7e8;color:#444;}.todo-list > li:last-of-type{margin-bottom:0;}.todo-list > li > input[type='checkbox']{margin:0 10px 0 5px;}.todo-list > li .text{display:inline-block;margin-left:5px;font-weight:600;}.todo-list > li .label{margin-left:10px;font-size:9px;}.todo-list > li .tools{display:none;float:right;color:#e74c3c;}.todo-list > li .tools > .fa,.todo-list > li .tools > .glyphicon,.todo-list > li .tools > .ion{margin-right:5px;cursor:pointer;}.todo-list > li:hover .tools{display:inline-block;}.todo-list > li.done{color:#999;}.todo-list > li.done .text{text-decoration:line-through;font-weight:500;}.todo-list > li.done .label{background:#d2d6de !important;}.todo-list .danger{border-left-color:#e74c3c;}.todo-list .warning{border-left-color:#f39c12;}.todo-list .info{border-left-color:#3498db;}.todo-list .success{border-left-color:#18bc9c;}.todo-list .primary{border-left-color:#3c8dbc;}.todo-list .handle{display:inline-block;cursor:move;margin:0 5px;}.chat{padding:5px 20px 5px 10px;}.chat .item{margin-bottom:10px;}.chat .item:before,.chat .item:after{content:" ";display:table;}.chat .item:after{clear:both;}.chat .item:before,.chat .item:after{content:" ";display:table;}.chat .item:after{clear:both;}.chat .item > img{width:40px;height:40px;border:2px solid transparent;border-radius:50%;}.chat .item > .online{border:2px solid #18bc9c;}.chat .item > .offline{border:2px solid #e74c3c;}.chat .item > .message{margin-left:55px;margin-top:-40px;}.chat .item > .message > .name{display:block;font-weight:600;}.chat .item > .attachment{border-radius:3px;background:#f4f4f4;margin-left:65px;margin-right:15px;padding:10px;}.chat .item > .attachment > h4{margin:0 0 5px 0;font-weight:600;font-size:14px;}.chat .item > .attachment > p,.chat .item > .attachment > .filename{font-weight:600;font-size:13px;font-style:italic;margin:0;}.chat .item > .attachment:before,.chat .item > .attachment:after{content:" ";display:table;}.chat .item > .attachment:after{clear:both;}.chat .item > .attachment:before,.chat .item > .attachment:after{content:" ";display:table;}.chat .item > .attachment:after{clear:both;}.box-input{max-width:200px;}.modal .panel-body{color:#444;}.info-box{display:block;min-height:90px;background:#fff;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:2px;margin-bottom:15px;}.info-box small{font-size:14px;}.info-box .progress{background:rgba(0,0,0,0.2);margin:5px -10px 5px -10px;height:2px;}.info-box .progress,.info-box .progress .progress-bar{border-radius:0;}.info-box .progress .progress-bar{background:#fff;}.info-box-icon{border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px;display:block;float:left;height:90px;width:90px;text-align:center;font-size:45px;line-height:90px;background:rgba(0,0,0,0.2);}.info-box-icon > img{max-width:100%;}.info-box-content{padding:5px 10px;margin-left:90px;}.info-box-number{display:block;font-weight:bold;font-size:18px;}.progress-description,.info-box-text{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.info-box-text{text-transform:uppercase;}.info-box-more{display:block;}.progress-description{margin:0;}.timeline{position:relative;margin:0 0 30px 0;padding:0;list-style:none;}.timeline:before{content:'';position:absolute;top:0;bottom:0;width:4px;background:#ddd;left:31px;margin:0;border-radius:2px;}.timeline > li{position:relative;margin-right:10px;margin-bottom:15px;}.timeline > li:before,.timeline > li:after{content:" ";display:table;}.timeline > li:after{clear:both;}.timeline > li:before,.timeline > li:after{content:" ";display:table;}.timeline > li:after{clear:both;}.timeline > li > .timeline-item{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;margin-top:0;background:#fff;color:#444;margin-left:60px;margin-right:15px;padding:0;position:relative;}.timeline > li > .timeline-item > .time{color:#999;float:right;padding:10px;font-size:12px;}.timeline > li > .timeline-item > .timeline-header{margin:0;color:#555;border-bottom:1px solid #f4f4f4;padding:10px;font-size:16px;line-height:1.1;}.timeline > li > .timeline-item > .timeline-header > a{font-weight:600;}.timeline > li > .timeline-item > .timeline-body,.timeline > li > .timeline-item > .timeline-footer{padding:10px;}.timeline > li > .fa,.timeline > li > .glyphicon,.timeline > li > .ion{width:30px;height:30px;font-size:15px;line-height:30px;position:absolute;color:#666;background:#d2d6de;border-radius:50%;text-align:center;left:18px;top:0;}.timeline > .time-label > span{font-weight:600;padding:5px;display:inline-block;background-color:#fff;border-radius:4px;}.timeline-inverse > li > .timeline-item{background:#f0f0f0;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;}.timeline-inverse > li > .timeline-item > .timeline-header{border-bottom-color:#ddd;}.btn{-webkit-box-shadow:none;box-shadow:none;border:1px solid transparent;}.btn.uppercase{text-transform:uppercase;}.btn.btn-flat{border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-width:1px;}.btn:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn:focus{outline:none;}.btn.btn-file{position:relative;overflow:hidden;}.btn.btn-file > input[type='file']{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;opacity:0;filter:alpha(opacity=0);outline:none;background:white;cursor:inherit;display:block;}.btn-default{background-color:#f4f4f4;color:#444;border-color:#ddd;}.btn-default:hover,.btn-default:active,.btn-default.hover{background-color:#e7e7e7;}.btn-outline{border:1px solid #fff;background:transparent;color:#fff;}.btn-outline:hover,.btn-outline:focus,.btn-outline:active{color:rgba(255,255,255,0.7);border-color:rgba(255,255,255,0.7);}.btn-link{-webkit-box-shadow:none;box-shadow:none;}.btn[class*='bg-']:hover{-webkit-box-shadow:inset 0 0 100px rgba(0,0,0,0.2);box-shadow:inset 0 0 100px rgba(0,0,0,0.2);}.btn-app{border-radius:3px;position:relative;padding:15px 5px;margin:0 0 10px 10px;min-width:80px;height:60px;text-align:center;color:#666;border:1px solid #ddd;background-color:#f4f4f4;font-size:12px;}.btn-app > .fa,.btn-app > .glyphicon,.btn-app > .ion{font-size:20px;display:block;}.btn-app:hover{background:#f4f4f4;color:#444;border-color:#aaa;}.btn-app:active,.btn-app:focus{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn-app > .badge{position:absolute;top:-3px;right:-10px;font-size:10px;font-weight:400;}.callout{border-radius:3px;margin:0 0 20px 0;padding:15px 30px 15px 15px;border-left:5px solid #eee;}.callout a{color:#fff;text-decoration:underline;}.callout a:hover{color:#eee;}.callout h4{margin-top:0;font-weight:600;}.callout p:last-child{margin-bottom:0;}.callout code,.callout .highlight{background-color:#fff;}.callout.callout-danger{border-color:#d62c1a;}.callout.callout-warning{border-color:#c87f0a;}.callout.callout-info{border-color:#217dbb;}.callout.callout-success{border-color:#128f76;}.alert{border-radius:3px;}.alert h4{font-weight:600;}.alert .icon{margin-right:10px;}.alert .close{color:#000;opacity:0.2;filter:alpha(opacity=20);}.alert .close:hover{opacity:0.5;filter:alpha(opacity=50);}.alert a{color:#fff;text-decoration:underline;}.alert-success{border-color:#15a589;}.alert-danger,.alert-error{border-color:#e43725;}.alert-warning{border-color:#e08e0b;}.alert-info{border-color:#258cd1;}.alert-primary-light{background-color:#E2E5E8;border-color:#D0D4D8;color:#85878A;}.alert-primary-light a{color:#787a7d;}.alert-success-light{background-color:#dff0d8;border-color:#d1eac8;color:#468847;}.alert-success-light a{color:#3d773e;}.alert-danger-light,.alert-error-light{background-color:#f2dede;border-color:#ebcdcd;color:#b94a48;}.alert-danger-light a,.alert-error-light a{color:#a74240;}.alert-warning-light{background-color:#fcf8e3;border-color:#faf3cd;color:#c09853;}.alert-warning-light a{color:#b78c43;}.alert-info-light{background-color:#d9edf7;border-color:#c6e4f3;color:#3a87ad;}.alert-info-light a{color:#34789a;}.nav > li > a:hover,.nav > li > a:active,.nav > li > a:focus{color:#444;background:#f7f7f7;}.nav-pills > li > a{border-radius:0;border-top:3px solid transparent;color:#444;}.nav-pills > li > a > .fa,.nav-pills > li > a > .glyphicon,.nav-pills > li > a > .ion{margin-right:5px;}.nav-pills > li.active > a,.nav-pills > li.active > a:hover,.nav-pills > li.active > a:focus{border-top-color:#3c8dbc;}.nav-pills > li.active > a{font-weight:600;}.nav-stacked > li > a{border-radius:0;border-top:0;border-left:3px solid transparent;color:#444;}.nav-stacked > li.active > a,.nav-stacked > li.active > a:hover{background:transparent;color:#444;border-top:0;border-left-color:#3c8dbc;}.nav-stacked > li.header{border-bottom:1px solid #ddd;color:#777;margin-bottom:10px;padding:5px 10px;text-transform:uppercase;}.nav-tabs-custom{margin-bottom:20px;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;}.nav-tabs-custom > .nav-tabs{margin:0;border-bottom-color:#f4f4f4;border-top-right-radius:3px;border-top-left-radius:3px;}.nav-tabs-custom > .nav-tabs > li{border-top:3px solid transparent;margin-bottom:-2px;margin-right:5px;}.nav-tabs-custom > .nav-tabs > li > a{color:#444;border-radius:0;}.nav-tabs-custom > .nav-tabs > li > a.text-muted{color:#999;}.nav-tabs-custom > .nav-tabs > li > a,.nav-tabs-custom > .nav-tabs > li > a:hover{background:transparent;margin:0;}.nav-tabs-custom > .nav-tabs > li > a:hover{color:#999;}.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover,.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus,.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active{border-color:transparent;}.nav-tabs-custom > .nav-tabs > li.active{border-top-color:#3c8dbc;}.nav-tabs-custom > .nav-tabs > li.active > a,.nav-tabs-custom > .nav-tabs > li.active:hover > a{background-color:#fff;color:#444;}.nav-tabs-custom > .nav-tabs > li.active > a{border-top-color:transparent;border-left-color:#f4f4f4;border-right-color:#f4f4f4;}.nav-tabs-custom > .nav-tabs > li:first-of-type{margin-left:0;}.nav-tabs-custom > .nav-tabs > li:first-of-type.active > a{border-left-color:transparent;}.nav-tabs-custom > .nav-tabs.pull-right{float:none !important;}.nav-tabs-custom > .nav-tabs.pull-right > li{float:right;}.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type{margin-right:0;}.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a{border-left-width:1px;}.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a{border-left-color:#f4f4f4;border-right-color:transparent;}.nav-tabs-custom > .nav-tabs > li.header{line-height:35px;padding:0 10px;font-size:20px;color:#444;}.nav-tabs-custom > .nav-tabs > li.header > .fa,.nav-tabs-custom > .nav-tabs > li.header > .glyphicon,.nav-tabs-custom > .nav-tabs > li.header > .ion{margin-right:5px;}.nav-tabs-custom > .tab-content{background:#fff;padding:10px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.nav-tabs-custom .dropdown.open > a:active,.nav-tabs-custom .dropdown.open > a:focus{background:transparent;color:#999;}.nav-tabs-custom.tab-primary > .nav-tabs > li.active{border-top-color:#3c8dbc;}.nav-tabs-custom.tab-info > .nav-tabs > li.active{border-top-color:#3498db;}.nav-tabs-custom.tab-danger > .nav-tabs > li.active{border-top-color:#e74c3c;}.nav-tabs-custom.tab-warning > .nav-tabs > li.active{border-top-color:#f39c12;}.nav-tabs-custom.tab-success > .nav-tabs > li.active{border-top-color:#18bc9c;}.nav-tabs-custom.tab-default > .nav-tabs > li.active{border-top-color:#d2d6de;}.pagination > li > a{background:#fafafa;color:#666;}.pagination.pagination-flat > li > a{border-radius:0 !important;}.products-list{list-style:none;margin:0;padding:0;}.products-list > .item{border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);padding:10px 0;background:#fff;}.products-list > .item:before,.products-list > .item:after{content:" ";display:table;}.products-list > .item:after{clear:both;}.products-list > .item:before,.products-list > .item:after{content:" ";display:table;}.products-list > .item:after{clear:both;}.products-list .product-img{float:left;}.products-list .product-img img{width:50px;height:50px;}.products-list .product-info{margin-left:60px;}.products-list .product-title{font-weight:600;}.products-list .product-description{display:block;color:#999;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.product-list-in-box > .item{-webkit-box-shadow:none;box-shadow:none;border-radius:0;border-bottom:1px solid #f4f4f4;}.product-list-in-box > .item:last-of-type{border-bottom-width:0;}.table > thead > tr > th,.table > tbody > tr > th,.table > tfoot > tr > th,.table > thead > tr > td,.table > tbody > tr > td,.table > tfoot > tr > td{border-top:1px solid #f4f4f4;}.table > thead > tr > th{border-bottom:2px solid #f4f4f4;}.table tr td .progress{margin-top:5px;}.table-bordered{border:1px solid #f4f4f4;}.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 #f4f4f4;}.table-bordered > thead > tr > th,.table-bordered > thead > tr > td{border-bottom-width:2px;}.table.no-border,.table.no-border td,.table.no-border th{border:0;}table.text-center,table.text-center td,table.text-center th{text-align:center;}.table.align th{text-align:left;}.table.align td{text-align:right;}.direct-chat .box-body{border-bottom-right-radius:0;border-bottom-left-radius:0;position:relative;overflow-x:hidden;padding:0;}.direct-chat.chat-pane-open .direct-chat-contacts{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}.direct-chat-messages{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);padding:10px;height:250px;overflow:auto;}.direct-chat-msg,.direct-chat-text{display:block;}.direct-chat-msg{margin-bottom:10px;}.direct-chat-msg:before,.direct-chat-msg:after{content:" ";display:table;}.direct-chat-msg:after{clear:both;}.direct-chat-msg:before,.direct-chat-msg:after{content:" ";display:table;}.direct-chat-msg:after{clear:both;}.direct-chat-messages,.direct-chat-contacts{-webkit-transition:-webkit-transform 0.5s ease-in-out;-moz-transition:-moz-transform 0.5s ease-in-out;-o-transition:-o-transform 0.5s ease-in-out;transition:transform 0.5s ease-in-out;}.direct-chat-text{border-radius:5px;position:relative;padding:5px 10px;background:#d2d6de;border:1px solid #d2d6de;margin:5px 0 0 50px;color:#444;}.direct-chat-text:after,.direct-chat-text:before{position:absolute;right:100%;top:15px;border:solid transparent;border-right-color:#d2d6de;content:' ';height:0;width:0;pointer-events:none;}.direct-chat-text:after{border-width:5px;margin-top:-5px;}.direct-chat-text:before{border-width:6px;margin-top:-6px;}.right .direct-chat-text{margin-right:50px;margin-left:0;}.right .direct-chat-text:after,.right .direct-chat-text:before{right:auto;left:100%;border-right-color:transparent;border-left-color:#d2d6de;}.direct-chat-img{border-radius:50%;float:left;width:40px;height:40px;}.right .direct-chat-img{float:right;}.direct-chat-info{display:block;margin-bottom:2px;font-size:12px;}.direct-chat-name{font-weight:600;}.direct-chat-timestamp{color:#999;}.direct-chat-contacts-open .direct-chat-contacts{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}.direct-chat-contacts{-webkit-transform:translate(101%,0);-ms-transform:translate(101%,0);-o-transform:translate(101%,0);transform:translate(101%,0);position:absolute;top:0;bottom:0;height:250px;width:100%;background:#222d32;color:#fff;overflow:auto;}.contacts-list > li{border-bottom:1px solid rgba(0,0,0,0.2);padding:10px;margin:0;}.contacts-list > li:before,.contacts-list > li:after{content:" ";display:table;}.contacts-list > li:after{clear:both;}.contacts-list > li:before,.contacts-list > li:after{content:" ";display:table;}.contacts-list > li:after{clear:both;}.contacts-list > li:last-of-type{border-bottom:none;}.contacts-list-img{border-radius:50%;width:40px;float:left;}.contacts-list-info{margin-left:45px;color:#fff;}.contacts-list-name,.contacts-list-status{display:block;}.contacts-list-name{font-weight:600;}.contacts-list-status{font-size:12px;}.contacts-list-date{color:#aaa;font-weight:normal;}.contacts-list-msg{color:#999;}.direct-chat-danger .right > .direct-chat-text{background:#e74c3c;border-color:#e74c3c;color:#fff;}.direct-chat-danger .right > .direct-chat-text:after,.direct-chat-danger .right > .direct-chat-text:before{border-left-color:#e74c3c;}.direct-chat-primary .right > .direct-chat-text{background:#3c8dbc;border-color:#3c8dbc;color:#fff;}.direct-chat-primary .right > .direct-chat-text:after,.direct-chat-primary .right > .direct-chat-text:before{border-left-color:#3c8dbc;}.direct-chat-warning .right > .direct-chat-text{background:#f39c12;border-color:#f39c12;color:#fff;}.direct-chat-warning .right > .direct-chat-text:after,.direct-chat-warning .right > .direct-chat-text:before{border-left-color:#f39c12;}.direct-chat-info .right > .direct-chat-text{background:#3498db;border-color:#3498db;color:#fff;}.direct-chat-info .right > .direct-chat-text:after,.direct-chat-info .right > .direct-chat-text:before{border-left-color:#3498db;}.direct-chat-success .right > .direct-chat-text{background:#18bc9c;border-color:#18bc9c;color:#fff;}.direct-chat-success .right > .direct-chat-text:after,.direct-chat-success .right > .direct-chat-text:before{border-left-color:#18bc9c;}.users-list > li{width:25%;float:left;padding:10px;text-align:center;}.users-list > li img{border-radius:50%;max-width:100%;height:auto;}.users-list > li > a:hover,.users-list > li > a:hover .users-list-name{color:#999;}.users-list-name,.users-list-date{display:block;}.users-list-name{font-weight:600;color:#444;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.users-list-date{color:#999;font-size:12px;}.carousel-control.left,.carousel-control.right{background-image:none;}.carousel-control > .fa{font-size:40px;position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-20px;}.modal{background:rgba(0,0,0,0.3);}.modal-content{border-radius:0;-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125);border:0;}@media (min-width:768px){.modal-content{-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125);}}.modal-header{border-bottom-color:#f4f4f4;}.modal-footer{border-top-color:#f4f4f4;}.modal-primary .modal-header,.modal-primary .modal-footer{border-color:#307095;}.modal-warning .modal-header,.modal-warning .modal-footer{border-color:#c87f0a;}.modal-info .modal-header,.modal-info .modal-footer{border-color:#217dbb;}.modal-success .modal-header,.modal-success .modal-footer{border-color:#128f76;}.modal-danger .modal-header,.modal-danger .modal-footer{border-color:#d62c1a;}.box-widget{border:none;position:relative;}.widget-user .widget-user-header{padding:20px;height:120px;border-top-right-radius:3px;border-top-left-radius:3px;}.widget-user .widget-user-username{margin-top:0;margin-bottom:5px;font-size:25px;font-weight:300;text-shadow:0 1px 1px rgba(0,0,0,0.2);}.widget-user .widget-user-desc{margin-top:0;}.widget-user .widget-user-image{position:absolute;top:65px;left:50%;margin-left:-45px;}.widget-user .widget-user-image > img{width:90px;height:auto;border:3px solid #fff;}.widget-user .box-footer{padding-top:30px;}.widget-user-2 .widget-user-header{padding:20px;border-top-right-radius:3px;border-top-left-radius:3px;}.widget-user-2 .widget-user-username{margin-top:5px;margin-bottom:5px;font-size:25px;font-weight:300;}.widget-user-2 .widget-user-desc{margin-top:0;}.widget-user-2 .widget-user-username,.widget-user-2 .widget-user-desc{margin-left:75px;}.widget-user-2 .widget-user-image > img{width:65px;height:auto;float:left;}.close,.mailbox-attachment-close{float:right;font-size:18px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50);}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}.clearfix:before,.clearfix:after,.content:before,.content:after{content:" ";display:table;}.clearfix:after,.content:after{clear:both;}.center-block{display:block;margin-left:auto;margin-right: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;}.mailbox-messages > .table{margin:0;}.mailbox-controls{padding:5px;}.mailbox-controls.with-border{border-bottom:1px solid #f4f4f4;}.mailbox-read-info{border-bottom:1px solid #f4f4f4;padding:10px;}.mailbox-read-info h3{font-size:20px;margin:0;}.mailbox-read-info h5{margin:0;padding:5px 0 0 0;}.mailbox-read-time{color:#999;font-size:13px;}.mailbox-read-message{padding:10px;}.mailbox-attachments li{float:left;width:200px;border:1px solid #eee;margin-bottom:10px;margin-right:10px;}.mailbox-attachment-name{font-weight:bold;color:#666;}.mailbox-attachment-icon,.mailbox-attachment-info,.mailbox-attachment-size{display:block;}.mailbox-attachment-info{padding:10px;background:#f4f4f4;}.mailbox-attachment-size{color:#999;font-size:12px;}.mailbox-attachment-icon{text-align:center;font-size:65px;color:#666;padding:20px 10px;}.mailbox-attachment-icon.has-img{padding:0;}.mailbox-attachment-icon.has-img > img{max-width:100%;height:auto;}.lockscreen{background:#d2d6de;}.lockscreen-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300;}.lockscreen-logo a{color:#444;}.lockscreen-wrapper{max-width:400px;margin:0 auto;margin-top:10%;}.lockscreen .lockscreen-name{text-align:center;font-weight:600;}.lockscreen-item{border-radius:4px;padding:0;background:#fff;position:relative;margin:10px auto 30px auto;width:290px;}.lockscreen-image{border-radius:50%;position:absolute;left:-10px;top:-25px;background:#fff;padding:5px;z-index:10;}.lockscreen-image > img{border-radius:50%;width:70px;height:70px;}.lockscreen-credentials{margin-left:70px;}.lockscreen-credentials .form-control{border:0;}.lockscreen-credentials .btn{background-color:#fff;border:0;padding:0 10px;}.lockscreen-footer{margin-top:10px;}.login-logo,.register-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300;}.login-logo a,.register-logo a{color:#444;}.login-page,.register-page{background:#d2d6de;}.login-box,.register-box{width:360px;margin:7% auto;}@media (max-width:768px){.login-box,.register-box{width:90%;margin-top:20px;}}.login-box-body,.register-box-body{background:#fff;padding:20px;border-top:0;color:#666;}.login-box-body .form-control-feedback,.register-box-body .form-control-feedback{color:#777;}.login-box-msg,.register-box-msg{margin:0;text-align:center;padding:0 20px 20px 20px;}.social-auth-links{margin:10px 0;}.error-page{width:600px;margin:20px auto 0 auto;}@media (max-width:991px){.error-page{width:100%;}}.error-page > .headline{float:left;font-size:100px;font-weight:300;}@media (max-width:991px){.error-page > .headline{float:none;text-align:center;}}.error-page > .error-content{margin-left:190px;display:block;}@media (max-width:991px){.error-page > .error-content{margin-left:0;}}.error-page > .error-content > h3{font-weight:300;font-size:25px;}@media (max-width:991px){.error-page > .error-content > h3{text-align:center;}}.invoice{position:relative;background:#fff;border:1px solid #f4f4f4;padding:20px;margin:10px 25px;}.invoice-title{margin-top:0;}.profile-user-img{margin:0 auto;width:100px;padding:3px;border:3px solid #d2d6de;}.profile-username{font-size:21px;margin-top:5px;}.post{border-bottom:1px solid #d2d6de;margin-bottom:15px;padding-bottom:15px;color:#666;}.post:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0;}.post .user-block{margin-bottom:15px;}/* * Social Buttons for Bootstrap * * Copyright 2013-2015 Panayiotis Lipiridis * Licensed under the MIT License * * https://github.com/lipis/bootstrap-social */ .btn-social{position:relative;padding-left:41px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.btn-social > :first-child{position:absolute;left:0;top:0;bottom:0;width:29px;line-height:31px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2);}.btn-social.btn-lg{padding-left:57px;}.btn-social.btn-lg > :first-child{line-height:41px;width:41px;font-size:1.8em;}.btn-social.btn-sm{padding-left:36px;}.btn-social.btn-sm > :first-child{line-height:26px;width:26px;font-size:1.4em;}.btn-social.btn-xs{padding-left:29px;}.btn-social.btn-xs > :first-child{line-height:19px;width:19px;font-size:1.2em;}.btn-social-icon{position:relative;padding-left:41px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:31px;width:31px;padding:0;}.btn-social-icon > :first-child{position:absolute;left:0;top:0;bottom:0;width:29px;line-height:31px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2);}.btn-social-icon.btn-lg{padding-left:57px;}.btn-social-icon.btn-lg > :first-child{line-height:41px;width:41px;font-size:1.8em;}.btn-social-icon.btn-sm{padding-left:36px;}.btn-social-icon.btn-sm > :first-child{line-height:26px;width:26px;font-size:1.4em;}.btn-social-icon.btn-xs{padding-left:29px;}.btn-social-icon.btn-xs > :first-child{line-height:19px;width:19px;font-size:1.2em;}.btn-social-icon > :first-child{border:none;text-align:center;width:100%;}.btn-social-icon.btn-lg{height:41px;width:41px;padding-left:0;padding-right:0;}.btn-social-icon.btn-sm{height:28px;width:28px;padding-left:0;padding-right:0;}.btn-social-icon.btn-xs{height:21px;width:21px;padding-left:0;padding-right:0;}.btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2);}.btn-adn:focus,.btn-adn.focus{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2);}.btn-adn:hover{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2);}.btn-adn:active,.btn-adn.active,.open > .dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2);}.btn-adn:active:hover,.btn-adn.active:hover,.open > .dropdown-toggle.btn-adn:hover,.btn-adn:active:focus,.btn-adn.active:focus,.open > .dropdown-toggle.btn-adn:focus,.btn-adn:active.focus,.btn-adn.active.focus,.open > .dropdown-toggle.btn-adn.focus{color:#fff;background-color:#b94630;border-color:rgba(0,0,0,0.2);}.btn-adn:active,.btn-adn.active,.open > .dropdown-toggle.btn-adn{background-image:none;}.btn-adn.disabled,.btn-adn[disabled],fieldset[disabled] .btn-adn,.btn-adn.disabled:hover,.btn-adn[disabled]:hover,fieldset[disabled] .btn-adn:hover,.btn-adn.disabled:focus,.btn-adn[disabled]:focus,fieldset[disabled] .btn-adn:focus,.btn-adn.disabled.focus,.btn-adn[disabled].focus,fieldset[disabled] .btn-adn.focus,.btn-adn.disabled:active,.btn-adn[disabled]:active,fieldset[disabled] .btn-adn:active,.btn-adn.disabled.active,.btn-adn[disabled].active,fieldset[disabled] .btn-adn.active{background-color:#d87a68;border-color:rgba(0,0,0,0.2);}.btn-adn .badge{color:#d87a68;background-color:#fff;}.btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:focus,.btn-bitbucket.focus{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:hover{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:active,.btn-bitbucket.active,.open > .dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:active:hover,.btn-bitbucket.active:hover,.open > .dropdown-toggle.btn-bitbucket:hover,.btn-bitbucket:active:focus,.btn-bitbucket.active:focus,.open > .dropdown-toggle.btn-bitbucket:focus,.btn-bitbucket:active.focus,.btn-bitbucket.active.focus,.open > .dropdown-toggle.btn-bitbucket.focus{color:#fff;background-color:#0f253c;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:active,.btn-bitbucket.active,.open > .dropdown-toggle.btn-bitbucket{background-image:none;}.btn-bitbucket.disabled,.btn-bitbucket[disabled],fieldset[disabled] .btn-bitbucket,.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled.focus,.btn-bitbucket[disabled].focus,fieldset[disabled] .btn-bitbucket.focus,.btn-bitbucket.disabled:active,.btn-bitbucket[disabled]:active,fieldset[disabled] .btn-bitbucket:active,.btn-bitbucket.disabled.active,.btn-bitbucket[disabled].active,fieldset[disabled] .btn-bitbucket.active{background-color:#205081;border-color:rgba(0,0,0,0.2);}.btn-bitbucket .badge{color:#205081;background-color:#fff;}.btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2);}.btn-dropbox:focus,.btn-dropbox.focus{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2);}.btn-dropbox:hover{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2);}.btn-dropbox:active,.btn-dropbox.active,.open > .dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2);}.btn-dropbox:active:hover,.btn-dropbox.active:hover,.open > .dropdown-toggle.btn-dropbox:hover,.btn-dropbox:active:focus,.btn-dropbox.active:focus,.open > .dropdown-toggle.btn-dropbox:focus,.btn-dropbox:active.focus,.btn-dropbox.active.focus,.open > .dropdown-toggle.btn-dropbox.focus{color:#fff;background-color:#0a568c;border-color:rgba(0,0,0,0.2);}.btn-dropbox:active,.btn-dropbox.active,.open > .dropdown-toggle.btn-dropbox{background-image:none;}.btn-dropbox.disabled,.btn-dropbox[disabled],fieldset[disabled] .btn-dropbox,.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled.focus,.btn-dropbox[disabled].focus,fieldset[disabled] .btn-dropbox.focus,.btn-dropbox.disabled:active,.btn-dropbox[disabled]:active,fieldset[disabled] .btn-dropbox:active,.btn-dropbox.disabled.active,.btn-dropbox[disabled].active,fieldset[disabled] .btn-dropbox.active{background-color:#1087dd;border-color:rgba(0,0,0,0.2);}.btn-dropbox .badge{color:#1087dd;background-color:#fff;}.btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2);}.btn-facebook:focus,.btn-facebook.focus{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2);}.btn-facebook:hover{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2);}.btn-facebook:active,.btn-facebook.active,.open > .dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2);}.btn-facebook:active:hover,.btn-facebook.active:hover,.open > .dropdown-toggle.btn-facebook:hover,.btn-facebook:active:focus,.btn-facebook.active:focus,.open > .dropdown-toggle.btn-facebook:focus,.btn-facebook:active.focus,.btn-facebook.active.focus,.open > .dropdown-toggle.btn-facebook.focus{color:#fff;background-color:#23345a;border-color:rgba(0,0,0,0.2);}.btn-facebook:active,.btn-facebook.active,.open > .dropdown-toggle.btn-facebook{background-image:none;}.btn-facebook.disabled,.btn-facebook[disabled],fieldset[disabled] .btn-facebook,.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled.focus,.btn-facebook[disabled].focus,fieldset[disabled] .btn-facebook.focus,.btn-facebook.disabled:active,.btn-facebook[disabled]:active,fieldset[disabled] .btn-facebook:active,.btn-facebook.disabled.active,.btn-facebook[disabled].active,fieldset[disabled] .btn-facebook.active{background-color:#3b5998;border-color:rgba(0,0,0,0.2);}.btn-facebook .badge{color:#3b5998;background-color:#fff;}.btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2);}.btn-flickr:focus,.btn-flickr.focus{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2);}.btn-flickr:hover{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2);}.btn-flickr:active,.btn-flickr.active,.open > .dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2);}.btn-flickr:active:hover,.btn-flickr.active:hover,.open > .dropdown-toggle.btn-flickr:hover,.btn-flickr:active:focus,.btn-flickr.active:focus,.open > .dropdown-toggle.btn-flickr:focus,.btn-flickr:active.focus,.btn-flickr.active.focus,.open > .dropdown-toggle.btn-flickr.focus{color:#fff;background-color:#a80057;border-color:rgba(0,0,0,0.2);}.btn-flickr:active,.btn-flickr.active,.open > .dropdown-toggle.btn-flickr{background-image:none;}.btn-flickr.disabled,.btn-flickr[disabled],fieldset[disabled] .btn-flickr,.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled.focus,.btn-flickr[disabled].focus,fieldset[disabled] .btn-flickr.focus,.btn-flickr.disabled:active,.btn-flickr[disabled]:active,fieldset[disabled] .btn-flickr:active,.btn-flickr.disabled.active,.btn-flickr[disabled].active,fieldset[disabled] .btn-flickr.active{background-color:#ff0084;border-color:rgba(0,0,0,0.2);}.btn-flickr .badge{color:#ff0084;background-color:#fff;}.btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2);}.btn-foursquare:focus,.btn-foursquare.focus{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2);}.btn-foursquare:hover{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2);}.btn-foursquare:active,.btn-foursquare.active,.open > .dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2);}.btn-foursquare:active:hover,.btn-foursquare.active:hover,.open > .dropdown-toggle.btn-foursquare:hover,.btn-foursquare:active:focus,.btn-foursquare.active:focus,.open > .dropdown-toggle.btn-foursquare:focus,.btn-foursquare:active.focus,.btn-foursquare.active.focus,.open > .dropdown-toggle.btn-foursquare.focus{color:#fff;background-color:#e30742;border-color:rgba(0,0,0,0.2);}.btn-foursquare:active,.btn-foursquare.active,.open > .dropdown-toggle.btn-foursquare{background-image:none;}.btn-foursquare.disabled,.btn-foursquare[disabled],fieldset[disabled] .btn-foursquare,.btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled.focus,.btn-foursquare[disabled].focus,fieldset[disabled] .btn-foursquare.focus,.btn-foursquare.disabled:active,.btn-foursquare[disabled]:active,fieldset[disabled] .btn-foursquare:active,.btn-foursquare.disabled.active,.btn-foursquare[disabled].active,fieldset[disabled] .btn-foursquare.active{background-color:#f94877;border-color:rgba(0,0,0,0.2);}.btn-foursquare .badge{color:#f94877;background-color:#fff;}.btn-github{color:#fff;background-color:#444444;border-color:rgba(0,0,0,0.2);}.btn-github:focus,.btn-github.focus{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2);}.btn-github:hover{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2);}.btn-github:active,.btn-github.active,.open > .dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2);}.btn-github:active:hover,.btn-github.active:hover,.open > .dropdown-toggle.btn-github:hover,.btn-github:active:focus,.btn-github.active:focus,.open > .dropdown-toggle.btn-github:focus,.btn-github:active.focus,.btn-github.active.focus,.open > .dropdown-toggle.btn-github.focus{color:#fff;background-color:#191919;border-color:rgba(0,0,0,0.2);}.btn-github:active,.btn-github.active,.open > .dropdown-toggle.btn-github{background-image:none;}.btn-github.disabled,.btn-github[disabled],fieldset[disabled] .btn-github,.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled.focus,.btn-github[disabled].focus,fieldset[disabled] .btn-github.focus,.btn-github.disabled:active,.btn-github[disabled]:active,fieldset[disabled] .btn-github:active,.btn-github.disabled.active,.btn-github[disabled].active,fieldset[disabled] .btn-github.active{background-color:#444444;border-color:rgba(0,0,0,0.2);}.btn-github .badge{color:#444444;background-color:#fff;}.btn-google{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2);}.btn-google:focus,.btn-google.focus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2);}.btn-google:hover{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2);}.btn-google:active,.btn-google.active,.open > .dropdown-toggle.btn-google{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2);}.btn-google:active:hover,.btn-google.active:hover,.open > .dropdown-toggle.btn-google:hover,.btn-google:active:focus,.btn-google.active:focus,.open > .dropdown-toggle.btn-google:focus,.btn-google:active.focus,.btn-google.active.focus,.open > .dropdown-toggle.btn-google.focus{color:#fff;background-color:#a32b1c;border-color:rgba(0,0,0,0.2);}.btn-google:active,.btn-google.active,.open > .dropdown-toggle.btn-google{background-image:none;}.btn-google.disabled,.btn-google[disabled],fieldset[disabled] .btn-google,.btn-google.disabled:hover,.btn-google[disabled]:hover,fieldset[disabled] .btn-google:hover,.btn-google.disabled:focus,.btn-google[disabled]:focus,fieldset[disabled] .btn-google:focus,.btn-google.disabled.focus,.btn-google[disabled].focus,fieldset[disabled] .btn-google.focus,.btn-google.disabled:active,.btn-google[disabled]:active,fieldset[disabled] .btn-google:active,.btn-google.disabled.active,.btn-google[disabled].active,fieldset[disabled] .btn-google.active{background-color:#dd4b39;border-color:rgba(0,0,0,0.2);}.btn-google .badge{color:#dd4b39;background-color:#fff;}.btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2);}.btn-instagram:focus,.btn-instagram.focus{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2);}.btn-instagram:hover{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2);}.btn-instagram:active,.btn-instagram.active,.open > .dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2);}.btn-instagram:active:hover,.btn-instagram.active:hover,.open > .dropdown-toggle.btn-instagram:hover,.btn-instagram:active:focus,.btn-instagram.active:focus,.open > .dropdown-toggle.btn-instagram:focus,.btn-instagram:active.focus,.btn-instagram.active.focus,.open > .dropdown-toggle.btn-instagram.focus{color:#fff;background-color:#26455d;border-color:rgba(0,0,0,0.2);}.btn-instagram:active,.btn-instagram.active,.open > .dropdown-toggle.btn-instagram{background-image:none;}.btn-instagram.disabled,.btn-instagram[disabled],fieldset[disabled] .btn-instagram,.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled.focus,.btn-instagram[disabled].focus,fieldset[disabled] .btn-instagram.focus,.btn-instagram.disabled:active,.btn-instagram[disabled]:active,fieldset[disabled] .btn-instagram:active,.btn-instagram.disabled.active,.btn-instagram[disabled].active,fieldset[disabled] .btn-instagram.active{background-color:#3f729b;border-color:rgba(0,0,0,0.2);}.btn-instagram .badge{color:#3f729b;background-color:#fff;}.btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2);}.btn-linkedin:focus,.btn-linkedin.focus{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2);}.btn-linkedin:hover{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2);}.btn-linkedin:active,.btn-linkedin.active,.open > .dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2);}.btn-linkedin:active:hover,.btn-linkedin.active:hover,.open > .dropdown-toggle.btn-linkedin:hover,.btn-linkedin:active:focus,.btn-linkedin.active:focus,.open > .dropdown-toggle.btn-linkedin:focus,.btn-linkedin:active.focus,.btn-linkedin.active.focus,.open > .dropdown-toggle.btn-linkedin.focus{color:#fff;background-color:#00405f;border-color:rgba(0,0,0,0.2);}.btn-linkedin:active,.btn-linkedin.active,.open > .dropdown-toggle.btn-linkedin{background-image:none;}.btn-linkedin.disabled,.btn-linkedin[disabled],fieldset[disabled] .btn-linkedin,.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled.focus,.btn-linkedin[disabled].focus,fieldset[disabled] .btn-linkedin.focus,.btn-linkedin.disabled:active,.btn-linkedin[disabled]:active,fieldset[disabled] .btn-linkedin:active,.btn-linkedin.disabled.active,.btn-linkedin[disabled].active,fieldset[disabled] .btn-linkedin.active{background-color:#007bb6;border-color:rgba(0,0,0,0.2);}.btn-linkedin .badge{color:#007bb6;background-color:#fff;}.btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2);}.btn-microsoft:focus,.btn-microsoft.focus{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2);}.btn-microsoft:hover{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2);}.btn-microsoft:active,.btn-microsoft.active,.open > .dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2);}.btn-microsoft:active:hover,.btn-microsoft.active:hover,.open > .dropdown-toggle.btn-microsoft:hover,.btn-microsoft:active:focus,.btn-microsoft.active:focus,.open > .dropdown-toggle.btn-microsoft:focus,.btn-microsoft:active.focus,.btn-microsoft.active.focus,.open > .dropdown-toggle.btn-microsoft.focus{color:#fff;background-color:#0f4bac;border-color:rgba(0,0,0,0.2);}.btn-microsoft:active,.btn-microsoft.active,.open > .dropdown-toggle.btn-microsoft{background-image:none;}.btn-microsoft.disabled,.btn-microsoft[disabled],fieldset[disabled] .btn-microsoft,.btn-microsoft.disabled:hover,.btn-microsoft[disabled]:hover,fieldset[disabled] .btn-microsoft:hover,.btn-microsoft.disabled:focus,.btn-microsoft[disabled]:focus,fieldset[disabled] .btn-microsoft:focus,.btn-microsoft.disabled.focus,.btn-microsoft[disabled].focus,fieldset[disabled] .btn-microsoft.focus,.btn-microsoft.disabled:active,.btn-microsoft[disabled]:active,fieldset[disabled] .btn-microsoft:active,.btn-microsoft.disabled.active,.btn-microsoft[disabled].active,fieldset[disabled] .btn-microsoft.active{background-color:#2672ec;border-color:rgba(0,0,0,0.2);}.btn-microsoft .badge{color:#2672ec;background-color:#fff;}.btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2);}.btn-openid:focus,.btn-openid.focus{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2);}.btn-openid:hover{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2);}.btn-openid:active,.btn-openid.active,.open > .dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2);}.btn-openid:active:hover,.btn-openid.active:hover,.open > .dropdown-toggle.btn-openid:hover,.btn-openid:active:focus,.btn-openid.active:focus,.open > .dropdown-toggle.btn-openid:focus,.btn-openid:active.focus,.btn-openid.active.focus,.open > .dropdown-toggle.btn-openid.focus{color:#fff;background-color:#b86607;border-color:rgba(0,0,0,0.2);}.btn-openid:active,.btn-openid.active,.open > .dropdown-toggle.btn-openid{background-image:none;}.btn-openid.disabled,.btn-openid[disabled],fieldset[disabled] .btn-openid,.btn-openid.disabled:hover,.btn-openid[disabled]:hover,fieldset[disabled] .btn-openid:hover,.btn-openid.disabled:focus,.btn-openid[disabled]:focus,fieldset[disabled] .btn-openid:focus,.btn-openid.disabled.focus,.btn-openid[disabled].focus,fieldset[disabled] .btn-openid.focus,.btn-openid.disabled:active,.btn-openid[disabled]:active,fieldset[disabled] .btn-openid:active,.btn-openid.disabled.active,.btn-openid[disabled].active,fieldset[disabled] .btn-openid.active{background-color:#f7931e;border-color:rgba(0,0,0,0.2);}.btn-openid .badge{color:#f7931e;background-color:#fff;}.btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2);}.btn-pinterest:focus,.btn-pinterest.focus{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2);}.btn-pinterest:hover{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2);}.btn-pinterest:active,.btn-pinterest.active,.open > .dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2);}.btn-pinterest:active:hover,.btn-pinterest.active:hover,.open > .dropdown-toggle.btn-pinterest:hover,.btn-pinterest:active:focus,.btn-pinterest.active:focus,.open > .dropdown-toggle.btn-pinterest:focus,.btn-pinterest:active.focus,.btn-pinterest.active.focus,.open > .dropdown-toggle.btn-pinterest.focus{color:#fff;background-color:#801419;border-color:rgba(0,0,0,0.2);}.btn-pinterest:active,.btn-pinterest.active,.open > .dropdown-toggle.btn-pinterest{background-image:none;}.btn-pinterest.disabled,.btn-pinterest[disabled],fieldset[disabled] .btn-pinterest,.btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled.focus,.btn-pinterest[disabled].focus,fieldset[disabled] .btn-pinterest.focus,.btn-pinterest.disabled:active,.btn-pinterest[disabled]:active,fieldset[disabled] .btn-pinterest:active,.btn-pinterest.disabled.active,.btn-pinterest[disabled].active,fieldset[disabled] .btn-pinterest.active{background-color:#cb2027;border-color:rgba(0,0,0,0.2);}.btn-pinterest .badge{color:#cb2027;background-color:#fff;}.btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2);}.btn-reddit:focus,.btn-reddit.focus{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2);}.btn-reddit:hover{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2);}.btn-reddit:active,.btn-reddit.active,.open > .dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2);}.btn-reddit:active:hover,.btn-reddit.active:hover,.open > .dropdown-toggle.btn-reddit:hover,.btn-reddit:active:focus,.btn-reddit.active:focus,.open > .dropdown-toggle.btn-reddit:focus,.btn-reddit:active.focus,.btn-reddit.active.focus,.open > .dropdown-toggle.btn-reddit.focus{color:#000;background-color:#98ccff;border-color:rgba(0,0,0,0.2);}.btn-reddit:active,.btn-reddit.active,.open > .dropdown-toggle.btn-reddit{background-image:none;}.btn-reddit.disabled,.btn-reddit[disabled],fieldset[disabled] .btn-reddit,.btn-reddit.disabled:hover,.btn-reddit[disabled]:hover,fieldset[disabled] .btn-reddit:hover,.btn-reddit.disabled:focus,.btn-reddit[disabled]:focus,fieldset[disabled] .btn-reddit:focus,.btn-reddit.disabled.focus,.btn-reddit[disabled].focus,fieldset[disabled] .btn-reddit.focus,.btn-reddit.disabled:active,.btn-reddit[disabled]:active,fieldset[disabled] .btn-reddit:active,.btn-reddit.disabled.active,.btn-reddit[disabled].active,fieldset[disabled] .btn-reddit.active{background-color:#eff7ff;border-color:rgba(0,0,0,0.2);}.btn-reddit .badge{color:#eff7ff;background-color:#000;}.btn-soundcloud{color:#fff;background-color:#ff5500;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:focus,.btn-soundcloud.focus{color:#fff;background-color:#cc4400;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:hover{color:#fff;background-color:#cc4400;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:active,.btn-soundcloud.active,.open > .dropdown-toggle.btn-soundcloud{color:#fff;background-color:#cc4400;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:active:hover,.btn-soundcloud.active:hover,.open > .dropdown-toggle.btn-soundcloud:hover,.btn-soundcloud:active:focus,.btn-soundcloud.active:focus,.open > .dropdown-toggle.btn-soundcloud:focus,.btn-soundcloud:active.focus,.btn-soundcloud.active.focus,.open > .dropdown-toggle.btn-soundcloud.focus{color:#fff;background-color:#a83800;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:active,.btn-soundcloud.active,.open > .dropdown-toggle.btn-soundcloud{background-image:none;}.btn-soundcloud.disabled,.btn-soundcloud[disabled],fieldset[disabled] .btn-soundcloud,.btn-soundcloud.disabled:hover,.btn-soundcloud[disabled]:hover,fieldset[disabled] .btn-soundcloud:hover,.btn-soundcloud.disabled:focus,.btn-soundcloud[disabled]:focus,fieldset[disabled] .btn-soundcloud:focus,.btn-soundcloud.disabled.focus,.btn-soundcloud[disabled].focus,fieldset[disabled] .btn-soundcloud.focus,.btn-soundcloud.disabled:active,.btn-soundcloud[disabled]:active,fieldset[disabled] .btn-soundcloud:active,.btn-soundcloud.disabled.active,.btn-soundcloud[disabled].active,fieldset[disabled] .btn-soundcloud.active{background-color:#ff5500;border-color:rgba(0,0,0,0.2);}.btn-soundcloud .badge{color:#ff5500;background-color:#fff;}.btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2);}.btn-tumblr:focus,.btn-tumblr.focus{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2);}.btn-tumblr:hover{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2);}.btn-tumblr:active,.btn-tumblr.active,.open > .dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2);}.btn-tumblr:active:hover,.btn-tumblr.active:hover,.open > .dropdown-toggle.btn-tumblr:hover,.btn-tumblr:active:focus,.btn-tumblr.active:focus,.open > .dropdown-toggle.btn-tumblr:focus,.btn-tumblr:active.focus,.btn-tumblr.active.focus,.open > .dropdown-toggle.btn-tumblr.focus{color:#fff;background-color:#111c26;border-color:rgba(0,0,0,0.2);}.btn-tumblr:active,.btn-tumblr.active,.open > .dropdown-toggle.btn-tumblr{background-image:none;}.btn-tumblr.disabled,.btn-tumblr[disabled],fieldset[disabled] .btn-tumblr,.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled.focus,.btn-tumblr[disabled].focus,fieldset[disabled] .btn-tumblr.focus,.btn-tumblr.disabled:active,.btn-tumblr[disabled]:active,fieldset[disabled] .btn-tumblr:active,.btn-tumblr.disabled.active,.btn-tumblr[disabled].active,fieldset[disabled] .btn-tumblr.active{background-color:#2c4762;border-color:rgba(0,0,0,0.2);}.btn-tumblr .badge{color:#2c4762;background-color:#fff;}.btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2);}.btn-twitter:focus,.btn-twitter.focus{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2);}.btn-twitter:hover{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2);}.btn-twitter:active,.btn-twitter.active,.open > .dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2);}.btn-twitter:active:hover,.btn-twitter.active:hover,.open > .dropdown-toggle.btn-twitter:hover,.btn-twitter:active:focus,.btn-twitter.active:focus,.open > .dropdown-toggle.btn-twitter:focus,.btn-twitter:active.focus,.btn-twitter.active.focus,.open > .dropdown-toggle.btn-twitter.focus{color:#fff;background-color:#1583d7;border-color:rgba(0,0,0,0.2);}.btn-twitter:active,.btn-twitter.active,.open > .dropdown-toggle.btn-twitter{background-image:none;}.btn-twitter.disabled,.btn-twitter[disabled],fieldset[disabled] .btn-twitter,.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled.focus,.btn-twitter[disabled].focus,fieldset[disabled] .btn-twitter.focus,.btn-twitter.disabled:active,.btn-twitter[disabled]:active,fieldset[disabled] .btn-twitter:active,.btn-twitter.disabled.active,.btn-twitter[disabled].active,fieldset[disabled] .btn-twitter.active{background-color:#55acee;border-color:rgba(0,0,0,0.2);}.btn-twitter .badge{color:#55acee;background-color:#fff;}.btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2);}.btn-vimeo:focus,.btn-vimeo.focus{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2);}.btn-vimeo:hover{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2);}.btn-vimeo:active,.btn-vimeo.active,.open > .dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2);}.btn-vimeo:active:hover,.btn-vimeo.active:hover,.open > .dropdown-toggle.btn-vimeo:hover,.btn-vimeo:active:focus,.btn-vimeo.active:focus,.open > .dropdown-toggle.btn-vimeo:focus,.btn-vimeo:active.focus,.btn-vimeo.active.focus,.open > .dropdown-toggle.btn-vimeo.focus{color:#fff;background-color:#0f7b9f;border-color:rgba(0,0,0,0.2);}.btn-vimeo:active,.btn-vimeo.active,.open > .dropdown-toggle.btn-vimeo{background-image:none;}.btn-vimeo.disabled,.btn-vimeo[disabled],fieldset[disabled] .btn-vimeo,.btn-vimeo.disabled:hover,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo:hover,.btn-vimeo.disabled:focus,.btn-vimeo[disabled]:focus,fieldset[disabled] .btn-vimeo:focus,.btn-vimeo.disabled.focus,.btn-vimeo[disabled].focus,fieldset[disabled] .btn-vimeo.focus,.btn-vimeo.disabled:active,.btn-vimeo[disabled]:active,fieldset[disabled] .btn-vimeo:active,.btn-vimeo.disabled.active,.btn-vimeo[disabled].active,fieldset[disabled] .btn-vimeo.active{background-color:#1ab7ea;border-color:rgba(0,0,0,0.2);}.btn-vimeo .badge{color:#1ab7ea;background-color:#fff;}.btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2);}.btn-vk:focus,.btn-vk.focus{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2);}.btn-vk:hover{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2);}.btn-vk:active,.btn-vk.active,.open > .dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2);}.btn-vk:active:hover,.btn-vk.active:hover,.open > .dropdown-toggle.btn-vk:hover,.btn-vk:active:focus,.btn-vk.active:focus,.open > .dropdown-toggle.btn-vk:focus,.btn-vk:active.focus,.btn-vk.active.focus,.open > .dropdown-toggle.btn-vk.focus{color:#fff;background-color:#3a526b;border-color:rgba(0,0,0,0.2);}.btn-vk:active,.btn-vk.active,.open > .dropdown-toggle.btn-vk{background-image:none;}.btn-vk.disabled,.btn-vk[disabled],fieldset[disabled] .btn-vk,.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled.focus,.btn-vk[disabled].focus,fieldset[disabled] .btn-vk.focus,.btn-vk.disabled:active,.btn-vk[disabled]:active,fieldset[disabled] .btn-vk:active,.btn-vk.disabled.active,.btn-vk[disabled].active,fieldset[disabled] .btn-vk.active{background-color:#587ea3;border-color:rgba(0,0,0,0.2);}.btn-vk .badge{color:#587ea3;background-color:#fff;}.btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2);}.btn-yahoo:focus,.btn-yahoo.focus{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2);}.btn-yahoo:hover{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2);}.btn-yahoo:active,.btn-yahoo.active,.open > .dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2);}.btn-yahoo:active:hover,.btn-yahoo.active:hover,.open > .dropdown-toggle.btn-yahoo:hover,.btn-yahoo:active:focus,.btn-yahoo.active:focus,.open > .dropdown-toggle.btn-yahoo:focus,.btn-yahoo:active.focus,.btn-yahoo.active.focus,.open > .dropdown-toggle.btn-yahoo.focus{color:#fff;background-color:#39074e;border-color:rgba(0,0,0,0.2);}.btn-yahoo:active,.btn-yahoo.active,.open > .dropdown-toggle.btn-yahoo{background-image:none;}.btn-yahoo.disabled,.btn-yahoo[disabled],fieldset[disabled] .btn-yahoo,.btn-yahoo.disabled:hover,.btn-yahoo[disabled]:hover,fieldset[disabled] .btn-yahoo:hover,.btn-yahoo.disabled:focus,.btn-yahoo[disabled]:focus,fieldset[disabled] .btn-yahoo:focus,.btn-yahoo.disabled.focus,.btn-yahoo[disabled].focus,fieldset[disabled] .btn-yahoo.focus,.btn-yahoo.disabled:active,.btn-yahoo[disabled]:active,fieldset[disabled] .btn-yahoo:active,.btn-yahoo.disabled.active,.btn-yahoo[disabled].active,fieldset[disabled] .btn-yahoo.active{background-color:#720e9e;border-color:rgba(0,0,0,0.2);}.btn-yahoo .badge{color:#720e9e;background-color:#fff;}.fc-button{background:#f4f4f4;background-image:none;color:#444;border-color:#ddd;border-bottom-color:#ddd;}.fc-button:hover,.fc-button:active,.fc-button.hover{background-color:#e9e9e9;}.fc-header-title h2{font-size:15px;line-height:1.6em;color:#666;margin-left:10px;}.fc-header-right{padding-right:10px;}.fc-header-left{padding-left:10px;}.fc-widget-header{background:#fafafa;}.fc-grid{width:100%;border:0;}.fc-widget-header:first-of-type,.fc-widget-content:first-of-type{border-left:0;border-right:0;}.fc-widget-header:last-of-type,.fc-widget-content:last-of-type{border-right:0;}.fc-toolbar{padding:10px;margin:0;}.fc-day-number{font-size:20px;font-weight:300;padding-right:10px;}.fc-color-picker{list-style:none;margin:0;padding:0;}.fc-color-picker > li{float:left;font-size:30px;margin-right:5px;line-height:30px;}.fc-color-picker > li .fa{-webkit-transition:-webkit-transform linear 0.3s;-moz-transition:-moz-transform linear 0.3s;-o-transition:-o-transform linear 0.3s;transition:transform linear 0.3s;}.fc-color-picker > li .fa:hover{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg);}#add-new-event{-webkit-transition:all linear 0.3s;-o-transition:all linear 0.3s;transition:all linear 0.3s;}.external-event{padding:5px 10px;font-weight:bold;margin-bottom:4px;box-shadow:0 1px 1px rgba(0,0,0,0.1);text-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;cursor:move;}.external-event:hover{box-shadow:inset 0 0 90px rgba(0,0,0,0.2);}.select2-container--default.select2-container--focus,.select2-selection.select2-container--focus,.select2-container--default:focus,.select2-selection:focus,.select2-container--default:active,.select2-selection:active{outline:none;}.select2-container--default .select2-selection--single,.select2-selection .select2-selection--single{border:1px solid #d2d6de;border-radius:0;padding:6px 12px;height:34px;}.select2-container--default.select2-container--open{border-color:#3c8dbc;}.select2-dropdown{border:1px solid #d2d6de;border-radius:0;}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#3c8dbc;color:white;}.select2-results__option{padding:6px 12px;user-select:none;-webkit-user-select:none;}.select2-container .select2-selection--single .select2-selection__rendered{padding-left:0;padding-right:0;height:auto;margin-top:-4px;}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px;}.select2-container--default .select2-selection--single .select2-selection__arrow{height:28px;right:3px;}.select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0;}.select2-dropdown .select2-search__field,.select2-search--inline .select2-search__field{border:1px solid #d2d6de;}.select2-dropdown .select2-search__field:focus,.select2-search--inline .select2-search__field:focus{outline:none;border:1px solid #3c8dbc;}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999;}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd;}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#444;}.select2-container--default .select2-selection--multiple{border:1px solid #d2d6de;border-radius:0;}.select2-container--default .select2-selection--multiple:focus{border-color:#3c8dbc;}.select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#d2d6de;}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc;border-color:#367fa9;padding:1px 10px;color:#fff;}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:5px;color:rgba(255,255,255,0.7);}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff;}.select2-container .select2-selection--single .select2-selection__rendered{padding-right:10px;}.pad{padding:10px;}.margin{margin:10px;}.margin-bottom{margin-bottom:20px;}.margin-bottom-none{margin-bottom:0;}.margin-r-5{margin-right:5px;}.inline{display:inline;}.description-block{display:block;margin:10px 0;text-align:center;}.description-block.margin-bottom{margin-bottom:25px;}.description-block > .description-header{margin:0;padding:0;font-weight:600;font-size:16px;}.description-block > .description-text{text-transform:uppercase;}.bg-red,.bg-yellow,.bg-aqua,.bg-blue,.bg-light-blue,.bg-green,.bg-navy,.bg-teal,.bg-olive,.bg-lime,.bg-orange,.bg-fuchsia,.bg-purple,.bg-maroon,.bg-black,.bg-red-active,.bg-yellow-active,.bg-aqua-active,.bg-blue-active,.bg-light-blue-active,.bg-green-active,.bg-navy-active,.bg-teal-active,.bg-olive-active,.bg-lime-active,.bg-orange-active,.bg-fuchsia-active,.bg-purple-active,.bg-maroon-active,.bg-black-active,.callout.callout-danger,.callout.callout-warning,.callout.callout-info,.callout.callout-success,.alert-success,.alert-danger,.alert-error,.alert-warning,.alert-info,.modal-primary .modal-body,.modal-primary .modal-header,.modal-primary .modal-footer,.modal-warning .modal-body,.modal-warning .modal-header,.modal-warning .modal-footer,.modal-info .modal-body,.modal-info .modal-header,.modal-info .modal-footer,.modal-success .modal-body,.modal-success .modal-header,.modal-success .modal-footer,.modal-danger .modal-body,.modal-danger .modal-header,.modal-danger .modal-footer{color:#fff !important;}.bg-gray{color:#000;background-color:#d2d6de !important;}.bg-gray-light{background-color:#f7f7f7;}.bg-black{background-color:#111 !important;}.bg-red,.callout.callout-danger,.alert-danger,.alert-error,.modal-danger .modal-body{background-color:#e74c3c !important;}.bg-yellow,.callout.callout-warning,.alert-warning,.modal-warning .modal-body{background-color:#f39c12 !important;}.bg-aqua,.callout.callout-info,.alert-info,.modal-info .modal-body{background-color:#3498db !important;}.bg-blue{background-color:#0073b7 !important;}.bg-light-blue,.modal-primary .modal-body{background-color:#3c8dbc !important;}.bg-green,.callout.callout-success,.alert-success,.modal-success .modal-body{background-color:#18bc9c !important;}.bg-navy{background-color:#001F3F !important;}.bg-teal{background-color:#39CCCC !important;}.bg-olive{background-color:#3D9970 !important;}.bg-lime{background-color:#01FF70 !important;}.bg-orange{background-color:#FF851B !important;}.bg-fuchsia{background-color:#F012BE !important;}.bg-purple{background-color:#605ca8 !important;}.bg-maroon{background-color:#D81B60 !important;}.bg-gray-active{color:#000;background-color:#b5bbc8 !important;}.bg-black-active{background-color:#000000 !important;}.bg-red-active,.modal-danger .modal-header,.modal-danger .modal-footer{background-color:#e43321 !important;}.bg-yellow-active,.modal-warning .modal-header,.modal-warning .modal-footer{background-color:#db8b0b !important;}.bg-aqua-active,.modal-info .modal-header,.modal-info .modal-footer{background-color:#2489cc !important;}.bg-blue-active{background-color:#005384 !important;}.bg-light-blue-active,.modal-primary .modal-header,.modal-primary .modal-footer{background-color:#357ca5 !important;}.bg-green-active,.modal-success .modal-header,.modal-success .modal-footer{background-color:#15a589 !important;}.bg-navy-active{background-color:#001a35 !important;}.bg-teal-active{background-color:#30bbbb !important;}.bg-olive-active{background-color:#368763 !important;}.bg-lime-active{background-color:#00e765 !important;}.bg-orange-active{background-color:#ff7701 !important;}.bg-fuchsia-active{background-color:#db0ead !important;}.bg-purple-active{background-color:#555299 !important;}.bg-maroon-active{background-color:#ca195a !important;}[class^="bg-"].disabled{opacity:0.65;filter:alpha(opacity=65);}.text-red{color:#e74c3c !important;}.text-yellow{color:#f39c12 !important;}.text-aqua{color:#3498db !important;}.text-blue{color:#0073b7 !important;}.text-black{color:#111 !important;}.text-light-blue{color:#3c8dbc !important;}.text-green{color:#18bc9c !important;}.text-gray{color:#d2d6de !important;}.text-navy{color:#001F3F !important;}.text-teal{color:#39CCCC !important;}.text-olive{color:#3D9970 !important;}.text-lime{color:#01FF70 !important;}.text-orange{color:#FF851B !important;}.text-fuchsia{color:#F012BE !important;}.text-purple{color:#605ca8 !important;}.text-maroon{color:#D81B60 !important;}.link-muted{color:#7a869d;}.link-muted:hover,.link-muted:focus{color:#606c84;}.link-black{color:#666;}.link-black:hover,.link-black:focus{color:#999;}.hide{display:none !important;}.no-border{border:0 !important;}.no-padding{padding:0 !important;}.no-margin{margin:0 !important;}.no-shadow{box-shadow:none !important;}.list-unstyled,.chart-legend,.contacts-list,.users-list,.mailbox-attachments{list-style:none;margin:0;padding:0;}.list-group-unbordered > .list-group-item{border-left:0;border-right:0;border-radius:0;padding-left:0;padding-right:0;}.flat{border-radius:0 !important;}.text-bold,.text-bold.table td,.text-bold.table th{font-weight:700;}.text-sm{font-size:12px;}.jqstooltip{padding:5px !important;width:auto !important;height:auto !important;}.bg-teal-gradient{background:#39CCCC !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#39CCCC),color-stop(1,#7adddd)) !important;background:-ms-linear-gradient(bottom,#39CCCC,#7adddd) !important;background:-moz-linear-gradient(center bottom,#39CCCC 0%,#7adddd 100%) !important;background:-o-linear-gradient(#7adddd,#39CCCC) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd',endColorstr='#39CCCC',GradientType=0) !important;color:#fff;}.bg-light-blue-gradient{background:#3c8dbc !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#3c8dbc),color-stop(1,#67a8ce)) !important;background:-ms-linear-gradient(bottom,#3c8dbc,#67a8ce) !important;background:-moz-linear-gradient(center bottom,#3c8dbc 0%,#67a8ce 100%) !important;background:-o-linear-gradient(#67a8ce,#3c8dbc) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce',endColorstr='#3c8dbc',GradientType=0) !important;color:#fff;}.bg-blue-gradient{background:#0073b7 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#0073b7),color-stop(1,#0089db)) !important;background:-ms-linear-gradient(bottom,#0073b7,#0089db) !important;background:-moz-linear-gradient(center bottom,#0073b7 0%,#0089db 100%) !important;background:-o-linear-gradient(#0089db,#0073b7) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db',endColorstr='#0073b7',GradientType=0) !important;color:#fff;}.bg-aqua-gradient{background:#3498db !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#3498db),color-stop(1,#52a7e0)) !important;background:-ms-linear-gradient(bottom,#3498db,#52a7e0) !important;background:-moz-linear-gradient(center bottom,#3498db 0%,#52a7e0 100%) !important;background:-o-linear-gradient(#52a7e0,#3498db) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#52a7e0',endColorstr='#3498db',GradientType=0) !important;color:#fff;}.bg-yellow-gradient{background:#f39c12 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#f39c12),color-stop(1,#f7bc60)) !important;background:-ms-linear-gradient(bottom,#f39c12,#f7bc60) !important;background:-moz-linear-gradient(center bottom,#f39c12 0%,#f7bc60 100%) !important;background:-o-linear-gradient(#f7bc60,#f39c12) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60',endColorstr='#f39c12',GradientType=0) !important;color:#fff;}.bg-purple-gradient{background:#605ca8 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#605ca8),color-stop(1,#9491c4)) !important;background:-ms-linear-gradient(bottom,#605ca8,#9491c4) !important;background:-moz-linear-gradient(center bottom,#605ca8 0%,#9491c4 100%) !important;background:-o-linear-gradient(#9491c4,#605ca8) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4',endColorstr='#605ca8',GradientType=0) !important;color:#fff;}.bg-green-gradient{background:#18bc9c !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#18bc9c),color-stop(1,#1cdcb6)) !important;background:-ms-linear-gradient(bottom,#18bc9c,#1cdcb6) !important;background:-moz-linear-gradient(center bottom,#18bc9c 0%,#1cdcb6 100%) !important;background:-o-linear-gradient(#1cdcb6,#18bc9c) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1cdcb6',endColorstr='#18bc9c',GradientType=0) !important;color:#fff;}.bg-red-gradient{background:#e74c3c !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#e74c3c),color-stop(1,#ed7669)) !important;background:-ms-linear-gradient(bottom,#e74c3c,#ed7669) !important;background:-moz-linear-gradient(center bottom,#e74c3c 0%,#ed7669 100%) !important;background:-o-linear-gradient(#ed7669,#e74c3c) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ed7669',endColorstr='#e74c3c',GradientType=0) !important;color:#fff;}.bg-black-gradient{background:#111 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#111),color-stop(1,#2b2b2b)) !important;background:-ms-linear-gradient(bottom,#111,#2b2b2b) !important;background:-moz-linear-gradient(center bottom,#111 0%,#2b2b2b 100%) !important;background:-o-linear-gradient(#2b2b2b,#111) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b',endColorstr='#111',GradientType=0) !important;color:#fff;}.bg-maroon-gradient{background:#D81B60 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#D81B60),color-stop(1,#e73f7c)) !important;background:-ms-linear-gradient(bottom,#D81B60,#e73f7c) !important;background:-moz-linear-gradient(center bottom,#D81B60 0%,#e73f7c 100%) !important;background:-o-linear-gradient(#e73f7c,#D81B60) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c',endColorstr='#D81B60',GradientType=0) !important;color:#fff;}.description-block .description-icon{font-size:16px;}.no-pad-top{padding-top:0;}.position-static{position:static !important;}.list-header{font-size:15px;padding:10px 4px;font-weight:bold;color:#666;}.list-seperator{height:1px;background:#f4f4f4;margin:15px 0 9px 0;}.list-link > a{padding:4px;color:#777;}.list-link > a:hover{color:#222;}.font-light{font-weight:300;}.user-block:before,.user-block:after{content:" ";display:table;}.user-block:after{clear:both;}.user-block:before,.user-block:after{content:" ";display:table;}.user-block:after{clear:both;}.user-block img{width:40px;height:40px;float:left;}.user-block .username,.user-block .description,.user-block .comment{display:block;margin-left:50px;}.user-block .username{font-size:16px;font-weight:600;}.user-block .description{color:#999;font-size:13px;}.user-block.user-block-sm .username,.user-block.user-block-sm .description,.user-block.user-block-sm .comment{margin-left:40px;}.user-block.user-block-sm .username{font-size:14px;}.img-sm,.img-md,.img-lg,.box-comments .box-comment img,.user-block.user-block-sm img{float:left;}.img-sm,.box-comments .box-comment img,.user-block.user-block-sm img{width:30px !important;height:30px !important;}.img-sm + .img-push{margin-left:40px;}.img-md{width:60px;height:60px;}.img-md + .img-push{margin-left:70px;}.img-lg{width:100px;height:100px;}.img-lg + .img-push{margin-left:110px;}.img-bordered{border:3px solid #d2d6de;padding:3px;}.img-bordered-sm{border:2px solid #d2d6de;padding:2px;}.attachment-block{border:1px solid #f4f4f4;padding:5px;margin-bottom:10px;background:#f7f7f7;}.attachment-block .attachment-img{max-width:100px;max-height:100px;height:auto;float:left;}.attachment-block .attachment-pushed{margin-left:110px;}.attachment-block .attachment-heading{margin:0;}.attachment-block .attachment-text{color:#555;}.connectedSortable{min-height:100px;}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;}.sort-highlight{background:#f4f4f4;border:1px dashed #ddd;margin-bottom:10px;}.full-opacity-hover{opacity:0.65;filter:alpha(opacity=65);}.full-opacity-hover:hover{opacity:1;filter:alpha(opacity=100);}.chart{position:relative;overflow:hidden;width:100%;}.chart svg,.chart canvas{width:100% !important;}@media print{.no-print,.main-sidebar,.left-side,.main-header,.content-header{display:none !important;}.content-wrapper,.right-side,.main-footer{margin-left:0 !important;min-height:0 !important;-webkit-transform:translate(0,0) !important;-ms-transform:translate(0,0) !important;-o-transform:translate(0,0) !important;transform:translate(0,0) !important;}.fixed .content-wrapper,.fixed .right-side{padding-top:0 !important;}.invoice{width:100%;border:0;margin:0;padding:0;}.invoice-col{float:left;width:33.3333333%;}.table-responsive{overflow:auto;}.table-responsive > .table tr th,.table-responsive > .table tr td{white-space:normal !important;}}
\ No newline at end of file
diff --git a/addons/weliam_smartcity/web/resource/address/jquery.js b/addons/weliam_smartcity/web/resource/address/jquery.js
new file mode 100644
index 0000000..5c3c456
--- /dev/null
+++ b/addons/weliam_smartcity/web/resource/address/jquery.js
@@ -0,0 +1,9814 @@
+/*!
+ * jQuery JavaScript Library v2.2.4
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-05-20T17:23Z
+ */
+
+(function( global, factory ) {
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+ // For CommonJS and CommonJS-like environments where a proper `window`
+ // is present, execute the factory and get jQuery.
+ // For environments that do not have a `window` with a `document`
+ // (such as Node.js), expose a factory as module.exports.
+ // This accentuates the need for the creation of a real `window`.
+ // e.g. var jQuery = require("jquery")(window);
+ // See ticket #14549 for more info.
+ module.exports = global.document ?
+ factory( global, true ) :
+ function( w ) {
+ if ( !w.document ) {
+ throw new Error( "jQuery requires a window with a document" );
+ }
+ return factory( w );
+ };
+ } else {
+ factory( global );
+ }
+
+// Pass this if window is not defined yet
+}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Support: Firefox 18+
+// Can't be in strict mode, several libs including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+//"use strict";
+var arr = [];
+
+var document = window.document;
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var support = {};
+
+
+
+var
+ version = "2.2.4",
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+
+ // The jQuery object is actually just the init constructor 'enhanced'
+ // Need init if jQuery is called (just allow error to be thrown if not included)
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Support: Android<4.1
+ // Make sure we trim BOM and NBSP
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([\da-z])/gi,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn = jQuery.prototype = {
+
+ // The current version of jQuery being used
+ jquery: version,
+
+ constructor: jQuery,
+
+ // Start with an empty selector
+ selector: "",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num != null ?
+
+ // Return just the one element from the set
+ ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+
+ // Return all the elements in a clean array
+ slice.call( this );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+ ret.context = this.context;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ each: function( callback ) {
+ return jQuery.each( this, callback );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map( this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ } ) );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor();
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: arr.sort,
+ splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[ 0 ] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+
+ // Skip the boolean and the target
+ target = arguments[ i ] || {};
+ i++;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
+ target = {};
+ }
+
+ // Extend jQuery itself if only one argument is passed
+ if ( i === length ) {
+ target = this;
+ i--;
+ }
+
+ for ( ; i < length; i++ ) {
+
+ // Only deal with non-null/undefined values
+ if ( ( options = arguments[ i ] ) != null ) {
+
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+ ( copyIsArray = jQuery.isArray( copy ) ) ) ) {
+
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray( src ) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject( src ) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend( {
+
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+ // Assume jQuery is ready without the ready module
+ isReady: true,
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ noop: function() {},
+
+ isFunction: function( obj ) {
+ return jQuery.type( obj ) === "function";
+ },
+
+ isArray: Array.isArray,
+
+ isWindow: function( obj ) {
+ return obj != null && obj === obj.window;
+ },
+
+ isNumeric: function( obj ) {
+
+ // parseFloat NaNs numeric-cast false positives (null|true|false|"")
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+ // subtraction forces infinities to NaN
+ // adding 1 corrects loss of precision from parseFloat (#15100)
+ var realStringObj = obj && obj.toString();
+ return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;
+ },
+
+ isPlainObject: function( obj ) {
+ var key;
+
+ // Not plain objects:
+ // - Any object or value whose internal [[Class]] property is not "[object Object]"
+ // - DOM nodes
+ // - window
+ if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !hasOwn.call( obj, "constructor" ) &&
+ !hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) {
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ var name;
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ type: function( obj ) {
+ if ( obj == null ) {
+ return obj + "";
+ }
+
+ // Support: Android<4.0, iOS<6 (functionish RegExp)
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ toString.call( obj ) ] || "object" :
+ typeof obj;
+ },
+
+ // Evaluates a script in a global context
+ globalEval: function( code ) {
+ var script,
+ indirect = eval;
+
+ code = jQuery.trim( code );
+
+ if ( code ) {
+
+ // If the code includes a valid, prologue position
+ // strict mode pragma, execute code by injecting a
+ // script tag into the document.
+ if ( code.indexOf( "use strict" ) === 1 ) {
+ script = document.createElement( "script" );
+ script.text = code;
+ document.head.appendChild( script ).parentNode.removeChild( script );
+ } else {
+
+ // Otherwise, avoid the DOM node creation, insertion
+ // and removal by using an indirect global eval
+
+ indirect( code );
+ }
+ }
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Support: IE9-11+
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+ },
+
+ each: function( obj, callback ) {
+ var length, i = 0;
+
+ if ( isArrayLike( obj ) ) {
+ length = obj.length;
+ for ( ; i < length; i++ ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Support: Android<4.1
+ trim: function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArrayLike( Object( arr ) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ return arr == null ? -1 : indexOf.call( arr, elem, i );
+ },
+
+ merge: function( first, second ) {
+ var len = +second.length,
+ j = 0,
+ i = first.length;
+
+ for ( ; j < len; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, invert ) {
+ var callbackInverse,
+ matches = [],
+ i = 0,
+ length = elems.length,
+ callbackExpect = !invert;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ callbackInverse = !callback( elems[ i ], i );
+ if ( callbackInverse !== callbackExpect ) {
+ matches.push( elems[ i ] );
+ }
+ }
+
+ return matches;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var length, value,
+ i = 0,
+ ret = [];
+
+ // Go through the array, translating each of the items to their new values
+ if ( isArrayLike( elems ) ) {
+ length = elems.length;
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var tmp, args, proxy;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ now: Date.now,
+
+ // jQuery.support is not used in Core but other projects attach their
+ // properties to it so it needs to exist.
+ support: support
+} );
+
+// JSHint would error on this code due to the Symbol not being defined in ES5.
+// Defining this global in .jshintrc would create a danger of using the global
+// unguarded in another place, it seems safer to just disable JSHint for these
+// three lines.
+/* jshint ignore: start */
+if ( typeof Symbol === "function" ) {
+ jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+/* jshint ignore: end */
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+ // Support: iOS 8.2 (not reproducible in simulator)
+ // `in` check used to prevent JIT error (gh-2145)
+ // hasOwn isn't used here due to false negatives
+ // regarding Nodelist length in IE
+ var length = !!obj && "length" in obj && obj.length,
+ type = jQuery.type( obj );
+
+ if ( type === "function" || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ return type === "array" || length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.2.1
+ * http://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2015-10-17
+ */
+(function( window ) {
+
+var i,
+ support,
+ Expr,
+ getText,
+ isXML,
+ tokenize,
+ compile,
+ select,
+ outermostContext,
+ sortInput,
+ hasDuplicate,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + 1 * new Date(),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ }
+ return 0;
+ },
+
+ // General-purpose constants
+ MAX_NEGATIVE = 1 << 31,
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf as it's faster than native
+ // http://jsperf.com/thor-indexof-vs-for/5
+ indexOf = function( list, elem ) {
+ var i = 0,
+ len = list.length;
+ for ( ; i < len; i++ ) {
+ if ( list[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+
+ // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+ // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+ // Operator (capture 2)
+ "*([*^$|!~]?=)" + whitespace +
+ // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+ "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+ "*\\]",
+
+ pseudos = ":(" + identifier + ")(?:\\((" +
+ // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+ // 1. quoted (capture 3; capture 4 or capture 5)
+ "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+ // 2. simple (capture 6)
+ "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+ // 3. anything else (capture 2)
+ ".*" +
+ ")\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rwhitespace = new RegExp( whitespace + "+", "g" ),
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + identifier + ")" ),
+ "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+ "TAG": new RegExp( "^(" + identifier + "|[*])" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rsibling = /[+~]/,
+ rescape = /'|\\/g,
+
+ // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox<24
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ high < 0 ?
+ // BMP codepoint
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ },
+
+ // Used for iframes
+ // See setDocument()
+ // Removing the function wrapper causes a "Permission Denied"
+ // error in IE
+ unloadHandler = function() {
+ setDocument();
+ };
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var m, i, elem, nid, nidselect, match, groups, newSelector,
+ newContext = context && context.ownerDocument,
+
+ // nodeType defaults to 9, since context defaults to document
+ nodeType = context ? context.nodeType : 9;
+
+ results = results || [];
+
+ // Return early from calls with invalid selector or context
+ if ( typeof selector !== "string" || !selector ||
+ nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+ return results;
+ }
+
+ // Try to shortcut find operations (as opposed to filters) in HTML documents
+ if ( !seed ) {
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+ context = context || document;
+
+ if ( documentIsHTML ) {
+
+ // If the selector is sufficiently simple, try using a "get*By*" DOM method
+ // (excepting DocumentFragment context, where the methods don't exist)
+ if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+ // ID selector
+ if ( (m = match[1]) ) {
+
+ // Document context
+ if ( nodeType === 9 ) {
+ if ( (elem = context.getElementById( m )) ) {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+
+ // Element context
+ } else {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( newContext && (elem = newContext.getElementById( m )) &&
+ contains( context, elem ) &&
+ elem.id === m ) {
+
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Type selector
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Class selector
+ } else if ( (m = match[3]) && support.getElementsByClassName &&
+ context.getElementsByClassName ) {
+
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // Take advantage of querySelectorAll
+ if ( support.qsa &&
+ !compilerCache[ selector + " " ] &&
+ (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+
+ if ( nodeType !== 1 ) {
+ newContext = context;
+ newSelector = selector;
+
+ // qSA looks outside Element context, which is not what we want
+ // Thanks to Andrew Dupont for this workaround technique
+ // Support: IE <=8
+ // Exclude object elements
+ } else if ( context.nodeName.toLowerCase() !== "object" ) {
+
+ // Capture the context ID, setting it first if necessary
+ if ( (nid = context.getAttribute( "id" )) ) {
+ nid = nid.replace( rescape, "\\$&" );
+ } else {
+ context.setAttribute( "id", (nid = expando) );
+ }
+
+ // Prefix every selector in the list
+ groups = tokenize( selector );
+ i = groups.length;
+ nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']";
+ while ( i-- ) {
+ groups[i] = nidselect + " " + toSelector( groups[i] );
+ }
+ newSelector = groups.join( "," );
+
+ // Expand context for sibling selectors
+ newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+ context;
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch ( qsaError ) {
+ } finally {
+ if ( nid === expando ) {
+ context.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key + " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key + " " ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+ var div = document.createElement("div");
+
+ try {
+ return !!fn( div );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( div.parentNode ) {
+ div.parentNode.removeChild( div );
+ }
+ // release memory in IE
+ div = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = arr.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ ( ~b.sourceIndex || MAX_NEGATIVE ) -
+ ( ~a.sourceIndex || MAX_NEGATIVE );
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+ return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var hasCompare, parent,
+ doc = node ? node.ownerDocument || node : preferredDoc;
+
+ // Return early if doc is invalid or already selected
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Update global variables
+ document = doc;
+ docElem = document.documentElement;
+ documentIsHTML = !isXML( document );
+
+ // Support: IE 9-11, Edge
+ // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+ if ( (parent = document.defaultView) && parent.top !== parent ) {
+ // Support: IE 11
+ if ( parent.addEventListener ) {
+ parent.addEventListener( "unload", unloadHandler, false );
+
+ // Support: IE 9 - 10 only
+ } else if ( parent.attachEvent ) {
+ parent.attachEvent( "onunload", unloadHandler );
+ }
+ }
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties
+ // (excepting IE8 booleans)
+ support.attributes = assert(function( div ) {
+ div.className = "i";
+ return !div.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( div ) {
+ div.appendChild( document.createComment("") );
+ return !div.getElementsByTagName("*").length;
+ });
+
+ // Support: IE<9
+ support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( div ) {
+ docElem.appendChild( div ).id = expando;
+ return !document.getElementsByName || !document.getElementsByName( expando ).length;
+ });
+
+ // ID find and filter
+ if ( support.getById ) {
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+ var m = context.getElementById( id );
+ return m ? [ m ] : [];
+ }
+ };
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ } else {
+ // Support: IE6/7
+ // getElementById is not reliable as a find shortcut
+ delete Expr.find["ID"];
+
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== "undefined" &&
+ elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( tag );
+
+ // DocumentFragment nodes don't have gEBTN
+ } else if ( support.qsa ) {
+ return context.querySelectorAll( tag );
+ }
+ } :
+
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See http://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( div ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // http://bugs.jquery.com/ticket/12359
+ docElem.appendChild( div ).innerHTML = "" +
+ "";
+
+ // Support: IE8, Opera 11-12.16
+ // Nothing should be selected when empty strings follow ^= or $= or *=
+ // The test attribute must be unknown in Opera but "safe" for WinRT
+ // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+ if ( div.querySelectorAll("[msallowcapture^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !div.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+ if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+ rbuggyQSA.push("~=");
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+
+ // Support: Safari 8+, iOS 8+
+ // https://bugs.webkit.org/show_bug.cgi?id=136851
+ // In-page `selector#id sibing-combinator selector` fails
+ if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
+ rbuggyQSA.push(".#.+[+~]");
+ }
+ });
+
+ assert(function( div ) {
+ // Support: Windows 8 Native Apps
+ // The type and name attributes are restricted during .innerHTML assignment
+ var input = document.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ div.appendChild( input ).setAttribute( "name", "D" );
+
+ // Support: IE8
+ // Enforce case-sensitivity of name attribute
+ if ( div.querySelectorAll("[name=d]").length ) {
+ rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":enabled").length ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ div.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+ docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( div ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( div, "div" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( div, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+ hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+ // Element contains another
+ // Purposefully self-exclusive
+ // As in, an element does not contain itself
+ contains = hasCompare || rnative.test( docElem.contains ) ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = hasCompare ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ // Sort on method existence if only one input has compareDocumentPosition
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+ if ( compare ) {
+ return compare;
+ }
+
+ // Calculate position if both inputs belong to the same document
+ compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+ a.compareDocumentPosition( b ) :
+
+ // Otherwise we know they are disconnected
+ 1;
+
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ } :
+ function( a, b ) {
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Parentless nodes are either documents or disconnected
+ if ( !aup || !bup ) {
+ return a === document ? -1 :
+ b === document ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ if ( support.matchesSelector && documentIsHTML &&
+ !compilerCache[ expr + " " ] &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch (e) {}
+ }
+
+ return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val !== undefined ?
+ val :
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null;
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ // Clear input after sorting to release objects
+ // See https://github.com/jquery/sizzle/pull/225
+ sortInput = null;
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ while ( (node = elem[i++]) ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (jQuery #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[6] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] ) {
+ match[2] = match[4] || match[5] || "";
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, uniqueCache, outerCache, node, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType,
+ diff = false;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) {
+
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+
+ // Seek `elem` from a previously-cached index
+
+ // ...in a gzip-friendly way
+ node = parent;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex && cache[ 2 ];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ } else {
+ // Use previously-cached element index if available
+ if ( useCache ) {
+ // ...in a gzip-friendly way
+ node = elem;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex;
+ }
+
+ // xml :nth-child(...)
+ // or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ if ( diff === false ) {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) &&
+ ++diff ) {
+
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ uniqueCache[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ // Don't keep the element (issue #299)
+ input[0] = null;
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ text = text.replace( runescape, funescape );
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": function( elem ) {
+ return elem.disabled === false;
+ },
+
+ "disabled": function( elem ) {
+ return elem.disabled === true;
+ },
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+ // but not by others (comment: 8; processing instruction: 7; etc.)
+ // nodeType < 6 works because attributes (2) do not appear as children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeType < 6 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+
+ // Support: IE<8
+ // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( (tokens = []) );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ checkNonElements = base && dir === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var oldCache, uniqueCache, outerCache,
+ newCache = [ dirruns, doneName ];
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+ if ( (oldCache = uniqueCache[ dir ]) &&
+ oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+ // Assign to newCache so results back-propagate to previous elements
+ return (newCache[ 2 ] = oldCache[ 2 ]);
+ } else {
+ // Reuse newcache so results back-propagate to previous elements
+ uniqueCache[ dir ] = newCache;
+
+ // A match means we're done; a fail means we have to keep checking
+ if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ // Avoid hanging onto element (issue #299)
+ checkContext = null;
+ return ret;
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ var bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, outermost ) {
+ var elem, j, matcher,
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ setMatched = [],
+ contextBackup = outermostContext,
+ // We must always have either seed elements or outermost context
+ elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+ len = elems.length;
+
+ if ( outermost ) {
+ outermostContext = context === document || context || outermost;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Support: IE<9, Safari
+ // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id
+ for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ if ( !context && elem.ownerDocument !== document ) {
+ setDocument( elem );
+ xml = !documentIsHTML;
+ }
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context || document, xml) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // `i` is now the count of elements visited above, and adding it to `matchedCount`
+ // makes the latter nonnegative.
+ matchedCount += i;
+
+ // Apply set filters to unmatched elements
+ // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+ // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+ // no element matchers and no seed.
+ // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+ // case, which will result in a "00" `matchedCount` that differs from `i` but is also
+ // numerically zero.
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !match ) {
+ match = tokenize( selector );
+ }
+ i = match.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( match[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+ // Save selector and tokenization
+ cached.selector = selector;
+ }
+ return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ * selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ * selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ compiled = typeof selector === "function" && selector,
+ match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+ results = results || [];
+
+ // Try to minimize operations if there is only one selector in the list and no seed
+ // (the latter of which guarantees us context)
+ if ( match.length === 1 ) {
+
+ // Reduce context if the leading compound selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ support.getById && context.nodeType === 9 && documentIsHTML &&
+ Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+
+ // Precompiled matchers will still verify ancestry, so step up a level
+ } else if ( compiled ) {
+ context = context.parentNode;
+ }
+
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function if one is not provided
+ // Provide `match` to avoid retokenization if we modified the selector above
+ ( compiled || compile( selector, match ) )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+ );
+ return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+ // Should return 1, but returns 4 (following)
+ return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+ div.innerHTML = "";
+ return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+ div.innerHTML = "";
+ div.firstChild.setAttribute( "value", "" );
+ return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+ return div.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return elem[ name ] === true ? name.toLowerCase() :
+ (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ null;
+ }
+ });
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+
+var dir = function( elem, dir, until ) {
+ var matched = [],
+ truncate = until !== undefined;
+
+ while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+ if ( elem.nodeType === 1 ) {
+ if ( truncate && jQuery( elem ).is( until ) ) {
+ break;
+ }
+ matched.push( elem );
+ }
+ }
+ return matched;
+};
+
+
+var siblings = function( n, elem ) {
+ var matched = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ matched.push( n );
+ }
+ }
+
+ return matched;
+};
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ );
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ /* jshint -W018 */
+ return !!qualifier.call( elem, i, elem ) !== not;
+ } );
+
+ }
+
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ } );
+
+ }
+
+ if ( typeof qualifier === "string" ) {
+ if ( risSimple.test( qualifier ) ) {
+ return jQuery.filter( qualifier, elements, not );
+ }
+
+ qualifier = jQuery.filter( qualifier, elements );
+ }
+
+ return jQuery.grep( elements, function( elem ) {
+ return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+ } );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 && elem.nodeType === 1 ?
+ jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+ jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ } ) );
+};
+
+jQuery.fn.extend( {
+ find: function( selector ) {
+ var i,
+ len = this.length,
+ ret = [],
+ self = this;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter( function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ } ) );
+ }
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ // Needed because $( selector, context ) becomes $( context ).find( selector )
+ ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+ ret.selector = this.selector ? this.selector + " " + selector : selector;
+ return ret;
+ },
+ filter: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], false ) );
+ },
+ not: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], true ) );
+ },
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ }
+} );
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+ init = jQuery.fn.init = function( selector, context, root ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Method init() accepts an alternate rootjQuery
+ // so migrate can support jQuery.sub (gh-2101)
+ root = root || rootjQuery;
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector[ 0 ] === "<" &&
+ selector[ selector.length - 1 ] === ">" &&
+ selector.length >= 3 ) {
+
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && ( match[ 1 ] || !context ) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[ 1 ] ) {
+ context = context instanceof jQuery ? context[ 0 ] : context;
+
+ // Option to run scripts is true for back-compat
+ // Intentionally let the error be thrown if parseHTML is not present
+ jQuery.merge( this, jQuery.parseHTML(
+ match[ 1 ],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+
+ // Properties of context are called as methods if possible
+ if ( jQuery.isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[ 2 ] );
+
+ // Support: Blackberry 4.6
+ // gEBID returns nodes no longer in the document (#6963)
+ if ( elem && elem.parentNode ) {
+
+ // Inject the element directly into the jQuery object
+ this.length = 1;
+ this[ 0 ] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || root ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this.context = this[ 0 ] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return root.ready !== undefined ?
+ root.ready( selector ) :
+
+ // Execute immediately if ready is not present
+ selector( jQuery );
+ }
+
+ if ( selector.selector !== undefined ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+ // Methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend( {
+ has: function( target ) {
+ var targets = jQuery( target, this ),
+ l = targets.length;
+
+ return this.filter( function() {
+ var i = 0;
+ for ( ; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[ i ] ) ) {
+ return true;
+ }
+ }
+ } );
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ matched = [],
+ pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( ; i < l; i++ ) {
+ for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && ( pos ?
+ pos.index( cur ) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+ matched.push( cur );
+ break;
+ }
+ }
+ }
+
+ return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+ },
+
+ // Determine the position of an element within the set
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // Index in selector
+ if ( typeof elem === "string" ) {
+ return indexOf.call( jQuery( elem ), this[ 0 ] );
+ }
+
+ // Locate the position of the desired element
+ return indexOf.call( this,
+
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[ 0 ] : elem
+ );
+ },
+
+ add: function( selector, context ) {
+ return this.pushStack(
+ jQuery.uniqueSort(
+ jQuery.merge( this.get(), jQuery( selector, context ) )
+ )
+ );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter( selector )
+ );
+ }
+} );
+
+function sibling( cur, dir ) {
+ while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+ return cur;
+}
+
+jQuery.each( {
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return siblings( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return siblings( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return elem.contentDocument || jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var matched = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ matched = jQuery.filter( selector, matched );
+ }
+
+ if ( this.length > 1 ) {
+
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ jQuery.uniqueSort( matched );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ matched.reverse();
+ }
+ }
+
+ return this.pushStack( matched );
+ };
+} );
+var rnotwhite = ( /\S+/g );
+
+
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+ var object = {};
+ jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ } );
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ createOptions( options ) :
+ jQuery.extend( {}, options );
+
+ var // Flag to know if list is currently firing
+ firing,
+
+ // Last fire value for non-forgettable lists
+ memory,
+
+ // Flag to know if list was already fired
+ fired,
+
+ // Flag to prevent firing
+ locked,
+
+ // Actual callback list
+ list = [],
+
+ // Queue of execution data for repeatable lists
+ queue = [],
+
+ // Index of currently firing callback (modified by add/remove as needed)
+ firingIndex = -1,
+
+ // Fire callbacks
+ fire = function() {
+
+ // Enforce single-firing
+ locked = options.once;
+
+ // Execute callbacks for all pending executions,
+ // respecting firingIndex overrides and runtime changes
+ fired = firing = true;
+ for ( ; queue.length; firingIndex = -1 ) {
+ memory = queue.shift();
+ while ( ++firingIndex < list.length ) {
+
+ // Run callback and check for early termination
+ if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+ options.stopOnFalse ) {
+
+ // Jump to end and forget the data so .add doesn't re-fire
+ firingIndex = list.length;
+ memory = false;
+ }
+ }
+ }
+
+ // Forget the data if we're done with it
+ if ( !options.memory ) {
+ memory = false;
+ }
+
+ firing = false;
+
+ // Clean up if we're done firing for good
+ if ( locked ) {
+
+ // Keep an empty list if we have data for future add calls
+ if ( memory ) {
+ list = [];
+
+ // Otherwise, this object is spent
+ } else {
+ list = "";
+ }
+ }
+ },
+
+ // Actual Callbacks object
+ self = {
+
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+
+ // If we have memory from a past run, we should fire after adding
+ if ( memory && !firing ) {
+ firingIndex = list.length - 1;
+ queue.push( memory );
+ }
+
+ ( function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ if ( jQuery.isFunction( arg ) ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
+
+ // Inspect recursively
+ add( arg );
+ }
+ } );
+ } )( arguments );
+
+ if ( memory && !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Remove a callback from the list
+ remove: function() {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+
+ // Handle firing indexes
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ } );
+ return this;
+ },
+
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ?
+ jQuery.inArray( fn, list ) > -1 :
+ list.length > 0;
+ },
+
+ // Remove all callbacks from the list
+ empty: function() {
+ if ( list ) {
+ list = [];
+ }
+ return this;
+ },
+
+ // Disable .fire and .add
+ // Abort any current/pending executions
+ // Clear all callbacks and values
+ disable: function() {
+ locked = queue = [];
+ list = memory = "";
+ return this;
+ },
+ disabled: function() {
+ return !list;
+ },
+
+ // Disable .fire
+ // Also disable .add unless we have memory (since it would have no effect)
+ // Abort any pending executions
+ lock: function() {
+ locked = queue = [];
+ if ( !memory ) {
+ list = memory = "";
+ }
+ return this;
+ },
+ locked: function() {
+ return !!locked;
+ },
+
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( !locked ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ queue.push( args );
+ if ( !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+
+
+jQuery.extend( {
+
+ Deferred: function( func ) {
+ var tuples = [
+
+ // action, add listener, listener list, final state
+ [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ],
+ [ "notify", "progress", jQuery.Callbacks( "memory" ) ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ then: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+ return jQuery.Deferred( function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+ var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+
+ // deferred[ done | fail | progress ] for forwarding actions to newDefer
+ deferred[ tuple[ 1 ] ]( function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise()
+ .progress( newDefer.notify )
+ .done( newDefer.resolve )
+ .fail( newDefer.reject );
+ } else {
+ newDefer[ tuple[ 0 ] + "With" ](
+ this === promise ? newDefer.promise() : this,
+ fn ? [ returned ] : arguments
+ );
+ }
+ } );
+ } );
+ fns = null;
+ } ).promise();
+ },
+
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Keep pipe for back-compat
+ promise.pipe = promise.then;
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 3 ];
+
+ // promise[ done | fail | progress ] = list.add
+ promise[ tuple[ 1 ] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add( function() {
+
+ // state = [ resolved | rejected ]
+ state = stateString;
+
+ // [ reject_list | resolve_list ].disable; progress_list.lock
+ }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
+ }
+
+ // deferred[ resolve | reject | notify ]
+ deferred[ tuple[ 0 ] ] = function() {
+ deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments );
+ return this;
+ };
+ deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+ } );
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( subordinate /* , ..., subordinateN */ ) {
+ var i = 0,
+ resolveValues = slice.call( arguments ),
+ length = resolveValues.length,
+
+ // the count of uncompleted subordinates
+ remaining = length !== 1 ||
+ ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+ // the master Deferred.
+ // If resolveValues consist of only a single Deferred, just use that.
+ deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+ // Update function for both resolve and progress values
+ updateFunc = function( i, contexts, values ) {
+ return function( value ) {
+ contexts[ i ] = this;
+ values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+ if ( values === progressValues ) {
+ deferred.notifyWith( contexts, values );
+ } else if ( !( --remaining ) ) {
+ deferred.resolveWith( contexts, values );
+ }
+ };
+ },
+
+ progressValues, progressContexts, resolveContexts;
+
+ // Add listeners to Deferred subordinates; treat others as resolved
+ if ( length > 1 ) {
+ progressValues = new Array( length );
+ progressContexts = new Array( length );
+ resolveContexts = new Array( length );
+ for ( ; i < length; i++ ) {
+ if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+ resolveValues[ i ].promise()
+ .progress( updateFunc( i, progressContexts, progressValues ) )
+ .done( updateFunc( i, resolveContexts, resolveValues ) )
+ .fail( deferred.reject );
+ } else {
+ --remaining;
+ }
+ }
+ }
+
+ // If we're not waiting on anything, resolve the master
+ if ( !remaining ) {
+ deferred.resolveWith( resolveContexts, resolveValues );
+ }
+
+ return deferred.promise();
+ }
+} );
+
+
+// The deferred used on DOM ready
+var readyList;
+
+jQuery.fn.ready = function( fn ) {
+
+ // Add the callback
+ jQuery.ready.promise().done( fn );
+
+ return this;
+};
+
+jQuery.extend( {
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.triggerHandler ) {
+ jQuery( document ).triggerHandler( "ready" );
+ jQuery( document ).off( "ready" );
+ }
+ }
+} );
+
+/**
+ * The ready event handler and self cleanup method
+ */
+function completed() {
+ document.removeEventListener( "DOMContentLoaded", completed );
+ window.removeEventListener( "load", completed );
+ jQuery.ready();
+}
+
+jQuery.ready.promise = function( obj ) {
+ if ( !readyList ) {
+
+ readyList = jQuery.Deferred();
+
+ // Catch cases where $(document).ready() is called
+ // after the browser event has already occurred.
+ // Support: IE9-10 only
+ // Older IE sometimes signals "interactive" too soon
+ if ( document.readyState === "complete" ||
+ ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ window.setTimeout( jQuery.ready );
+
+ } else {
+
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed );
+ }
+ }
+ return readyList.promise( obj );
+};
+
+// Kick off the DOM ready check even if the user does not
+jQuery.ready.promise();
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ len = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( jQuery.type( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ access( elems, fn, i, key[ i ], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !jQuery.isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < len; i++ ) {
+ fn(
+ elems[ i ], key, raw ?
+ value :
+ value.call( elems[ i ], i, fn( elems[ i ], key ) )
+ );
+ }
+ }
+ }
+
+ return chainable ?
+ elems :
+
+ // Gets
+ bulk ?
+ fn.call( elems ) :
+ len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+var acceptData = function( owner ) {
+
+ // Accepts only:
+ // - Node
+ // - Node.ELEMENT_NODE
+ // - Node.DOCUMENT_NODE
+ // - Object
+ // - Any
+ /* jshint -W018 */
+ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+
+
+function Data() {
+ this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+ register: function( owner, initial ) {
+ var value = initial || {};
+
+ // If it is a node unlikely to be stringify-ed or looped over
+ // use plain assignment
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = value;
+
+ // Otherwise secure it in a non-enumerable, non-writable property
+ // configurability must be true to allow the property to be
+ // deleted with the delete operator
+ } else {
+ Object.defineProperty( owner, this.expando, {
+ value: value,
+ writable: true,
+ configurable: true
+ } );
+ }
+ return owner[ this.expando ];
+ },
+ cache: function( owner ) {
+
+ // We can accept data for non-element nodes in modern browsers,
+ // but we should not, see #8335.
+ // Always return an empty object.
+ if ( !acceptData( owner ) ) {
+ return {};
+ }
+
+ // Check if the owner object already has a cache
+ var value = owner[ this.expando ];
+
+ // If not, create one
+ if ( !value ) {
+ value = {};
+
+ // We can accept data for non-element nodes in modern browsers,
+ // but we should not, see #8335.
+ // Always return an empty object.
+ if ( acceptData( owner ) ) {
+
+ // If it is a node unlikely to be stringify-ed or looped over
+ // use plain assignment
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = value;
+
+ // Otherwise secure it in a non-enumerable property
+ // configurable must be true to allow the property to be
+ // deleted when data is removed
+ } else {
+ Object.defineProperty( owner, this.expando, {
+ value: value,
+ configurable: true
+ } );
+ }
+ }
+ }
+
+ return value;
+ },
+ set: function( owner, data, value ) {
+ var prop,
+ cache = this.cache( owner );
+
+ // Handle: [ owner, key, value ] args
+ if ( typeof data === "string" ) {
+ cache[ data ] = value;
+
+ // Handle: [ owner, { properties } ] args
+ } else {
+
+ // Copy the properties one-by-one to the cache object
+ for ( prop in data ) {
+ cache[ prop ] = data[ prop ];
+ }
+ }
+ return cache;
+ },
+ get: function( owner, key ) {
+ return key === undefined ?
+ this.cache( owner ) :
+ owner[ this.expando ] && owner[ this.expando ][ key ];
+ },
+ access: function( owner, key, value ) {
+ var stored;
+
+ // In cases where either:
+ //
+ // 1. No key was specified
+ // 2. A string key was specified, but no value provided
+ //
+ // Take the "read" path and allow the get method to determine
+ // which value to return, respectively either:
+ //
+ // 1. The entire cache object
+ // 2. The data stored at the key
+ //
+ if ( key === undefined ||
+ ( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+ stored = this.get( owner, key );
+
+ return stored !== undefined ?
+ stored : this.get( owner, jQuery.camelCase( key ) );
+ }
+
+ // When the key is not a string, or both a key and value
+ // are specified, set or extend (existing objects) with either:
+ //
+ // 1. An object of properties
+ // 2. A key and value
+ //
+ this.set( owner, key, value );
+
+ // Since the "set" path can have two possible entry points
+ // return the expected data based on which path was taken[*]
+ return value !== undefined ? value : key;
+ },
+ remove: function( owner, key ) {
+ var i, name, camel,
+ cache = owner[ this.expando ];
+
+ if ( cache === undefined ) {
+ return;
+ }
+
+ if ( key === undefined ) {
+ this.register( owner );
+
+ } else {
+
+ // Support array or space separated string of keys
+ if ( jQuery.isArray( key ) ) {
+
+ // If "name" is an array of keys...
+ // When data is initially created, via ("key", "val") signature,
+ // keys will be converted to camelCase.
+ // Since there is no way to tell _how_ a key was added, remove
+ // both plain key and camelCase key. #12786
+ // This will only penalize the array argument path.
+ name = key.concat( key.map( jQuery.camelCase ) );
+ } else {
+ camel = jQuery.camelCase( key );
+
+ // Try the string as a key before any manipulation
+ if ( key in cache ) {
+ name = [ key, camel ];
+ } else {
+
+ // If a key with the spaces exists, use it.
+ // Otherwise, create an array by matching non-whitespace
+ name = camel;
+ name = name in cache ?
+ [ name ] : ( name.match( rnotwhite ) || [] );
+ }
+ }
+
+ i = name.length;
+
+ while ( i-- ) {
+ delete cache[ name[ i ] ];
+ }
+ }
+
+ // Remove the expando if there's no more data
+ if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+ // Support: Chrome <= 35-45+
+ // Webkit & Blink performance suffers when deleting properties
+ // from DOM nodes, so set to undefined instead
+ // https://code.google.com/p/chromium/issues/detail?id=378607
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = undefined;
+ } else {
+ delete owner[ this.expando ];
+ }
+ }
+ },
+ hasData: function( owner ) {
+ var cache = owner[ this.expando ];
+ return cache !== undefined && !jQuery.isEmptyObject( cache );
+ }
+};
+var dataPriv = new Data();
+
+var dataUser = new Data();
+
+
+
+// Implementation Summary
+//
+// 1. Enforce API surface and semantic compatibility with 1.9.x branch
+// 2. Improve the module's maintainability by reducing the storage
+// paths to a single mechanism.
+// 3. Use the same single mechanism to support "private" and "user" data.
+// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+// 5. Avoid exposing implementation details on user objects (eg. expando properties)
+// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+ rmultiDash = /[A-Z]/g;
+
+function dataAttr( elem, key, data ) {
+ var name;
+
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+
+ // Only convert to a number if it doesn't change the string
+ +data + "" === data ? +data :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch ( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ dataUser.set( elem, key, data );
+ } else {
+ data = undefined;
+ }
+ }
+ return data;
+}
+
+jQuery.extend( {
+ hasData: function( elem ) {
+ return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+ },
+
+ data: function( elem, name, data ) {
+ return dataUser.access( elem, name, data );
+ },
+
+ removeData: function( elem, name ) {
+ dataUser.remove( elem, name );
+ },
+
+ // TODO: Now that all calls to _data and _removeData have been replaced
+ // with direct calls to dataPriv methods, these can be deprecated.
+ _data: function( elem, name, data ) {
+ return dataPriv.access( elem, name, data );
+ },
+
+ _removeData: function( elem, name ) {
+ dataPriv.remove( elem, name );
+ }
+} );
+
+jQuery.fn.extend( {
+ data: function( key, value ) {
+ var i, name, data,
+ elem = this[ 0 ],
+ attrs = elem && elem.attributes;
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = dataUser.get( elem );
+
+ if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+ i = attrs.length;
+ while ( i-- ) {
+
+ // Support: IE11+
+ // The attrs elements can be null (#14894)
+ if ( attrs[ i ] ) {
+ name = attrs[ i ].name;
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = jQuery.camelCase( name.slice( 5 ) );
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ }
+ dataPriv.set( elem, "hasDataAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each( function() {
+ dataUser.set( this, key );
+ } );
+ }
+
+ return access( this, function( value ) {
+ var data, camelKey;
+
+ // The calling jQuery object (element matches) is not empty
+ // (and therefore has an element appears at this[ 0 ]) and the
+ // `value` parameter was not undefined. An empty jQuery object
+ // will result in `undefined` for elem = this[ 0 ] which will
+ // throw an exception if an attempt to read a data cache is made.
+ if ( elem && value === undefined ) {
+
+ // Attempt to get data from the cache
+ // with the key as-is
+ data = dataUser.get( elem, key ) ||
+
+ // Try to find dashed key if it exists (gh-2779)
+ // This is for 2.2.x only
+ dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() );
+
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ camelKey = jQuery.camelCase( key );
+
+ // Attempt to get data from the cache
+ // with the key camelized
+ data = dataUser.get( elem, camelKey );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // Attempt to "discover" the data in
+ // HTML5 custom data-* attrs
+ data = dataAttr( elem, camelKey, undefined );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // We tried really hard, but the data doesn't exist.
+ return;
+ }
+
+ // Set the data...
+ camelKey = jQuery.camelCase( key );
+ this.each( function() {
+
+ // First, attempt to store a copy or reference of any
+ // data that might've been store with a camelCased key.
+ var data = dataUser.get( this, camelKey );
+
+ // For HTML5 data-* attribute interop, we have to
+ // store property names with dashes in a camelCase form.
+ // This might not apply to all properties...*
+ dataUser.set( this, camelKey, value );
+
+ // *... In the case of properties that might _actually_
+ // have dashes, we need to also store a copy of that
+ // unchanged property.
+ if ( key.indexOf( "-" ) > -1 && data !== undefined ) {
+ dataUser.set( this, key, value );
+ }
+ } );
+ }, null, value, arguments.length > 1, null, true );
+ },
+
+ removeData: function( key ) {
+ return this.each( function() {
+ dataUser.remove( this, key );
+ } );
+ }
+} );
+
+
+jQuery.extend( {
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = dataPriv.get( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || jQuery.isArray( data ) ) {
+ queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // Clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // Not public - generate a queueHooks object, or return the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+ empty: jQuery.Callbacks( "once memory" ).add( function() {
+ dataPriv.remove( elem, [ type + "queue", key ] );
+ } )
+ } );
+ }
+} );
+
+jQuery.fn.extend( {
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[ 0 ], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each( function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // Ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ } );
+ },
+ dequeue: function( type ) {
+ return this.each( function() {
+ jQuery.dequeue( this, type );
+ } );
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while ( i-- ) {
+ tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+} );
+var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+
+var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHidden = function( elem, el ) {
+
+ // isHidden might be called from jQuery#filter function;
+ // in that case, element will be second argument
+ elem = el || elem;
+ return jQuery.css( elem, "display" ) === "none" ||
+ !jQuery.contains( elem.ownerDocument, elem );
+ };
+
+
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+ var adjusted,
+ scale = 1,
+ maxIterations = 20,
+ currentValue = tween ?
+ function() { return tween.cur(); } :
+ function() { return jQuery.css( elem, prop, "" ); },
+ initial = currentValue(),
+ unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+ rcssNum.exec( jQuery.css( elem, prop ) );
+
+ if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+ // Trust units reported by jQuery.css
+ unit = unit || initialInUnit[ 3 ];
+
+ // Make sure we update the tween properties later on
+ valueParts = valueParts || [];
+
+ // Iteratively approximate from a nonzero starting point
+ initialInUnit = +initial || 1;
+
+ do {
+
+ // If previous iteration zeroed out, double until we get *something*.
+ // Use string for doubling so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
+
+ // Adjust and apply
+ initialInUnit = initialInUnit / scale;
+ jQuery.style( elem, prop, initialInUnit + unit );
+
+ // Update scale, tolerating zero or NaN from tween.cur()
+ // Break the loop if scale is unchanged or perfect, or if we've just had enough.
+ } while (
+ scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
+ );
+ }
+
+ if ( valueParts ) {
+ initialInUnit = +initialInUnit || +initial || 0;
+
+ // Apply relative offset (+=/-=) if specified
+ adjusted = valueParts[ 1 ] ?
+ initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+ +valueParts[ 2 ];
+ if ( tween ) {
+ tween.unit = unit;
+ tween.start = initialInUnit;
+ tween.end = adjusted;
+ }
+ }
+ return adjusted;
+}
+var rcheckableType = ( /^(?:checkbox|radio)$/i );
+
+var rtagName = ( /<([\w:-]+)/ );
+
+var rscriptType = ( /^$|\/(?:java|ecma)script/i );
+
+
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+ // Support: IE9
+ option: [ 1, "" ],
+
+ // XHTML parsers do not magically insert elements in the
+ // same way that tag soup parsers do. So we cannot shorten
+ // this by omitting or other required elements.
+ thead: [ 1, "" ],
+ col: [ 2, "" ],
+ tr: [ 2, "" ],
+ td: [ 3, "" ],
+
+ _default: [ 0, "", "" ]
+};
+
+// Support: IE9
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+
+function getAll( context, tag ) {
+
+ // Support: IE9-11+
+ // Use typeof to avoid zero-argument method invocation on host objects (#15151)
+ var ret = typeof context.getElementsByTagName !== "undefined" ?
+ context.getElementsByTagName( tag || "*" ) :
+ typeof context.querySelectorAll !== "undefined" ?
+ context.querySelectorAll( tag || "*" ) :
+ [];
+
+ return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
+ jQuery.merge( [ context ], ret ) :
+ ret;
+}
+
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+ var i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ dataPriv.set(
+ elems[ i ],
+ "globalEval",
+ !refElements || dataPriv.get( refElements[ i ], "globalEval" )
+ );
+ }
+}
+
+
+var rhtml = /<|?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+ var elem, tmp, tag, wrap, contains, j,
+ fragment = context.createDocumentFragment(),
+ nodes = [],
+ i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ elem = elems[ i ];
+
+ if ( elem || elem === 0 ) {
+
+ // Add nodes directly
+ if ( jQuery.type( elem ) === "object" ) {
+
+ // Support: Android<4.1, PhantomJS<2
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+ // Convert non-html into a text node
+ } else if ( !rhtml.test( elem ) ) {
+ nodes.push( context.createTextNode( elem ) );
+
+ // Convert html into DOM nodes
+ } else {
+ tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+ // Deserialize a standard representation
+ tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+ tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+ // Descend through wrappers to the right content
+ j = wrap[ 0 ];
+ while ( j-- ) {
+ tmp = tmp.lastChild;
+ }
+
+ // Support: Android<4.1, PhantomJS<2
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, tmp.childNodes );
+
+ // Remember the top-level container
+ tmp = fragment.firstChild;
+
+ // Ensure the created nodes are orphaned (#12392)
+ tmp.textContent = "";
+ }
+ }
+ }
+
+ // Remove wrapper from fragment
+ fragment.textContent = "";
+
+ i = 0;
+ while ( ( elem = nodes[ i++ ] ) ) {
+
+ // Skip elements already in the context collection (trac-4087)
+ if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+ if ( ignored ) {
+ ignored.push( elem );
+ }
+ continue;
+ }
+
+ contains = jQuery.contains( elem.ownerDocument, elem );
+
+ // Append to fragment
+ tmp = getAll( fragment.appendChild( elem ), "script" );
+
+ // Preserve script evaluation history
+ if ( contains ) {
+ setGlobalEval( tmp );
+ }
+
+ // Capture executables
+ if ( scripts ) {
+ j = 0;
+ while ( ( elem = tmp[ j++ ] ) ) {
+ if ( rscriptType.test( elem.type || "" ) ) {
+ scripts.push( elem );
+ }
+ }
+ }
+ }
+
+ return fragment;
+}
+
+
+( function() {
+ var fragment = document.createDocumentFragment(),
+ div = fragment.appendChild( document.createElement( "div" ) ),
+ input = document.createElement( "input" );
+
+ // Support: Android 4.0-4.3, Safari<=5.1
+ // Check state lost if the name is set (#11217)
+ // Support: Windows Web Apps (WWA)
+ // `name` and `type` must use .setAttribute for WWA (#14901)
+ input.setAttribute( "type", "radio" );
+ input.setAttribute( "checked", "checked" );
+ input.setAttribute( "name", "t" );
+
+ div.appendChild( input );
+
+ // Support: Safari<=5.1, Android<4.2
+ // Older WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Support: IE<=11+
+ // Make sure textarea (and checkbox) defaultValue is properly cloned
+ div.innerHTML = "";
+ support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+} )();
+
+
+var
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+ return true;
+}
+
+function returnFalse() {
+ return false;
+}
+
+// Support: IE9
+// See #13393 for more info
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+ var origFn, type;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ on( elem, type, selector, data, types[ type ], one );
+ }
+ return elem;
+ }
+
+ if ( data == null && fn == null ) {
+
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return elem;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return elem.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ } );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ global: {},
+
+ add: function( elem, types, handler, data, selector ) {
+
+ var handleObjIn, eventHandle, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.get( elem );
+
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ if ( !( events = elemData.events ) ) {
+ events = elemData.events = {};
+ }
+ if ( !( eventHandle = elemData.handle ) ) {
+ eventHandle = elemData.handle = function( e ) {
+
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+ jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+ };
+ }
+
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( rnotwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
+ }
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend( {
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join( "." )
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ if ( !( handlers = events[ type ] ) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener if the special events handler returns false
+ if ( !special.setup ||
+ special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ },
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+
+ var j, origCount, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+ if ( !elemData || !( events = elemData.events ) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( rnotwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[ 2 ] &&
+ new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector ||
+ selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
+
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown ||
+ special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove data and the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ dataPriv.remove( elem, "handle events" );
+ }
+ },
+
+ dispatch: function( event ) {
+
+ // Make a writable jQuery.Event from the native event object
+ event = jQuery.event.fix( event );
+
+ var i, j, ret, matched, handleObj,
+ handlerQueue = [],
+ args = slice.call( arguments ),
+ handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[ 0 ] = event;
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
+
+ j = 0;
+ while ( ( handleObj = matched.handlers[ j++ ] ) &&
+ !event.isImmediatePropagationStopped() ) {
+
+ // Triggered event must either 1) have no namespace, or 2) have namespace(s)
+ // a subset or equal to those in the bound event (both can have no namespace).
+ if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
+
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+
+ ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+ handleObj.handler ).apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ if ( ( event.result = ret ) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ handlers: function( event, handlers ) {
+ var i, matches, sel, handleObj,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
+
+ // Support (at least): Chrome, IE9
+ // Find delegate handlers
+ // Black-hole SVG