├── README.md ├── camera_recognition.py ├── detect_faces.py ├── faceData └── text.txt ├── faceInfoData.db ├── haarcascade_frontalface_default.xml ├── server.py ├── static ├── .travis.yml ├── addface.js ├── css │ ├── cyber-security-background-14.jpg │ ├── simple-sidebar.css │ └── style.css ├── gulpfile.js ├── package-lock.json ├── package.json ├── recorder.js ├── vendor │ ├── bootstrap │ │ ├── css │ │ │ ├── bootstrap-grid.css │ │ │ ├── bootstrap-grid.min.css │ │ │ ├── bootstrap-reboot.css │ │ │ ├── bootstrap-reboot.min.css │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ ├── bootstrap.min.css │ │ │ └── bootstrap.min.css.map │ │ └── js │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.bundle.js.map │ │ │ ├── bootstrap.bundle.min.js │ │ │ ├── bootstrap.bundle.min.js.map │ │ │ ├── bootstrap.js │ │ │ ├── bootstrap.js.map │ │ │ ├── bootstrap.min.js │ │ │ └── bootstrap.min.js.map │ └── jquery │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ ├── jquery.min.map │ │ ├── jquery.slim.js │ │ ├── jquery.slim.min.js │ │ └── jquery.slim.min.map └── video.avi ├── templates ├── add_face.html ├── add_visitor.html ├── home.html ├── index.html ├── index2.html ├── success.html └── visitors_list.html └── trainedData └── trainingData.yml /README.md: -------------------------------------------------------------------------------- 1 | # Computer-Vision-Security-System 2 | A Security System using the face recognition, which can be monitored from anywhere using a HTTP server, coded using Python and Jinja2. 3 |

4 | 5 | # Installation 6 | ## System Requirements 7 | 8 | ### 1. Python3 9 | > Install Python3 for Windows/Linux/Mac OS from https://www.python.org/downloads/release/python-3 10 | 11 | ### 2. SqliteBrowser(for sqlite database) 12 | > Download and Install SQLite Browser , to view/modify the sqlite database from https://sqlitebrowser.org/ 13 | 14 | ### 3. pip 15 | > 1. Download it get-pip.py file from https://bootstrap.pypa.io
16 | > 2. Open terminal and install pip `python get-pip.py` 17 | 18 |

19 | ## Python Packages Requirements 20 | > `pip install numpy pillow flask opencv-python opencv-contrib-python twilio dropbox` 21 | 22 |

23 | ## Hardware Requirements 24 | > 1. 2 cameras, 1 for surveillance and another to take face data for training face recognizer
25 | > 2. A server to host the Web server
26 | > 3. Router (optional) 27 | 28 |

29 | ## Cloning the code from git 30 | > 1. `git clone https://github.com/shangeth/Computer-Vision-Security-System.git` 31 | 32 |

33 | ## Running the program 34 | > 1. `cd server` 35 | > 2. `python server.py` this will open the webserver on `127.0.0.1:5000` 36 | 37 |

38 | ## How does it work 39 | > 1. Home page will show live feed of camera and log of people who visited the facility. 40 | > 2. Add Visitor allows you to enter the details of new visitor who need to be added/permitted into the facility. 41 | > 3. After adding details of the new visitor, `python detect_faces.py`. Before running it make sure the new visitor’s face is in front of the second USB camera. 42 | 43 |

44 | ## Enabling SMS notification(optional) 45 | > 1. Go to `twilio.com` and create an developer account and get the auth token and SID for the application. 46 | > 2. Go to `dropbox.com` and create an developer account and generate auth token for the application in create app section. 47 | > 3. `nano camera_recognition.py` and edit line 40 and 61 to enter your credentials. 48 | -------------------------------------------------------------------------------- /camera_recognition.py: -------------------------------------------------------------------------------- 1 | 2 | import cv2 3 | import threading 4 | import sqlite3 5 | from time import gmtime, strftime,localtime 6 | import pathlib 7 | import dropbox 8 | import re 9 | from twilio.rest import Client 10 | import os 11 | 12 | 13 | recognizer = cv2.face.LBPHFaceRecognizer_create() 14 | recognizer.read('trainedData/trainingData.yml') 15 | global log 16 | 17 | def getProfile(id): 18 | conn = sqlite3.connect("faceInfoData.db") 19 | cur = conn.execute("SELECT * FROM Visitors WHERE ID=(?)",(id,)) 20 | profile = None 21 | for row in cur: 22 | profile = row 23 | conn.close() 24 | return profile 25 | 26 | 27 | def dropbox_sms(filename,msg): 28 | # the source file 29 | # located in this folder 30 | # path object, defining the file 31 | folder = pathlib.Path("MessageLog") # located in this folder 32 | # file name 33 | filepath = folder / filename 34 | 35 | # target location in Dropbox 36 | target = "/Temp/" # the target folder 37 | targetfile = target + filename # the target path and file name 38 | 39 | # Create a dropbox object using an API v2 key 40 | d = dropbox.Dropbox('Enter your Key here!!!') 41 | ''' 42 | CHANGE THE API from your dropbox account : change inside of d = dropbox.Dropbox('Your KEY here!!!!') 43 | 44 | ''' 45 | # open the file and upload it 46 | with filepath.open("rb") as f: 47 | # upload gives you metadata about the file 48 | # we want to overwite any previous version of the file 49 | meta = d.files_upload(f.read(), targetfile, mode=dropbox.files.WriteMode("overwrite")) 50 | 51 | # create a shared link 52 | link = d.sharing_create_shared_link(targetfile) 53 | 54 | # url which can be shared 55 | url = link.url 56 | 57 | # link which directly downloads by replacing ?dl=0 with ?dl=1 58 | dl_url = re.sub(r"\?dl\=0", "?dl=1", url) 59 | 60 | # the following line needs your Twilio Account SID and Auth Token 61 | client = Client("Account SID here!!", "Auth TOken here!!!") 62 | ''' 63 | CHANGE THE SID AND AUTH TOKEN HERE!!!!! 64 | client = Client("YOur SID Here", "your AUTH Token here") 65 | 66 | ''' 67 | # this is the URL to an image file we're going to send in the MMS 68 | media = dl_url 69 | 70 | # change the "from_" number to your Twilio number and the "to" number 71 | # to the phone number you signed up for Twilio with, or upgrade your 72 | # account to send MMS to any phone number that MMS is available 73 | ''' 74 | type your phone number in to="phone numer here" 75 | type your twilio phne number in from="twilio phone number here" 76 | ''' 77 | client.api.account.messages.create(to="your mobile number here", 78 | from_="+19412412342", 79 | body=msg, 80 | media_url=media) 81 | 82 | def visitor_msg(msgcount,frame,visitor_name): 83 | ''' 84 | change the path into the path of the folder MessageLog 85 | ''' 86 | path = '/home/shangeth/Desktop/Detect_face_Final_project/MessageLog/' 87 | filepath = os.path.join(path, str(msgcount) + '.jpg') 88 | filename = str(msgcount) + '.jpg' 89 | cv2.imwrite(filepath, frame) 90 | msgcount += 1 91 | msg = "Admin Alert: \n" + str(visitor_name) + " has visited the facility, at " + strftime("%Y-%m-%|%H:%M:%S",localtime()) 92 | # dropbox_sms(filename, msg) 93 | 94 | 95 | ''' 96 | change the path into the path of the folder MessageLog 97 | ''' 98 | def unknown_msg(msgcount,frame,visitor_name): 99 | path = '/home/shangeth/Desktop/Detect_face_Final_project/MessageLog/' 100 | filepath = os.path.join(path, str(msgcount) + '.jpg') 101 | filename = str(msgcount) + '.jpg' 102 | cv2.imwrite(filepath, frame) 103 | msgcount += 1 104 | msg = "Admin Alert: \n" + str(visitor_name) + " person entered the facility, at " + strftime("%Y-%m-%d|%H:%M:%S",localtime()) 105 | # dropbox_sms(filename, msg) 106 | 107 | 108 | 109 | class RecordingThread(threading.Thread): 110 | def __init__(self, name, camera): 111 | threading.Thread.__init__(self) 112 | self.name = name 113 | self.isRunning = True 114 | 115 | self.cap = camera 116 | fourcc = cv2.VideoWriter_fourcc(*'MJPG') 117 | self.out = cv2.VideoWriter('./static/video.avi', fourcc, 20.0, (640, 480)) 118 | 119 | def run(self): 120 | while self.isRunning: 121 | ret, frame = self.cap.read() 122 | if ret: 123 | self.out.write(frame) 124 | 125 | self.out.release() 126 | 127 | def stop(self): 128 | self.isRunning = False 129 | 130 | def __del__(self): 131 | self.out.release() 132 | 133 | 134 | class VideoCamera(object): 135 | def __init__(self): 136 | # Open a camera 137 | ''' 138 | change camera here 139 | inside VideCapture() put 1 for usb camera 140 | ''' 141 | self.cap = cv2.VideoCapture(0) 142 | 143 | # Initialize video recording environment 144 | self.is_record = False 145 | self.out = None 146 | 147 | # Thread for recording 148 | self.recordingThread = None 149 | 150 | def __del__(self): 151 | self.cap.release() 152 | 153 | def get_frame(self): 154 | ret, frame = self.cap.read() 155 | count=0 156 | log = [] 157 | msgcount = 0 158 | if ret: 159 | detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 160 | font = cv2.FONT_HERSHEY_SIMPLEX 161 | prev_profile = None 162 | gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 163 | faces = detector.detectMultiScale(gray, 1.3, 5) 164 | for (x, y, w, h) in faces: 165 | cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2) 166 | Id, conf = recognizer.predict(gray[y:y + h, x:x + w]) 167 | c = sqlite3.connect("faceInfoData.db") 168 | conn = c.cursor() 169 | cur = conn.execute("SELECT visitor_name FROM log WHERE id = (SELECT MAX(id) FROM log)") 170 | name_q = cur.fetchone() 171 | if name_q != None: 172 | name_q = str(name_q[0]) 173 | else: 174 | name_q = None 175 | conn.close() 176 | c.close() 177 | 178 | cur_time = strftime("%Y-%m-%d %H:%M:%S", localtime()) 179 | if (conf < 70): 180 | profile = getProfile(Id) 181 | cv2.putText(frame, profile[1], (x, y + h), font, 1.0, (0, 255, 0), 2) 182 | cv2.putText(frame, str(profile[2]), (x, y + h + 30), font, 1.0, (0, 255, 0), 2) 183 | cv2.putText(frame, profile[3], (x, y + h + 60), font, 1.0, (0, 255, 0), 2) 184 | 185 | 186 | if prev_profile != profile and name_q != profile[1]: 187 | log.append([profile,cur_time]) 188 | c = sqlite3.connect("faceInfoData.db") 189 | conn = c.cursor() 190 | conn.execute("INSERT INTO log (visitor_name, time) VALUES (?,?)", (profile[1],str(cur_time))) 191 | c.commit() 192 | conn.close() 193 | 194 | thread = threading.Thread(target=visitor_msg, args=(msgcount,frame,profile[1])) 195 | thread.daemon = True # Daemonize thread 196 | thread.start() # Start the execution 197 | 198 | prev_profile = profile 199 | 200 | 201 | 202 | elif conf >=70 : 203 | Id=0 204 | profile=None 205 | if name_q != 'Unknown': 206 | log.append([['Unknown','',''], cur_time]) 207 | c = sqlite3.connect("faceInfoData.db") 208 | conn = c.cursor() 209 | conn.execute("INSERT INTO log (visitor_name, time) VALUES (?,?)", ('Unknown', str(cur_time))) 210 | c.commit() 211 | conn.close() 212 | 213 | thread = threading.Thread(target=unknown_msg, args=(msgcount, frame, 'Unknown')) 214 | thread.daemon = True # Daemonize thread 215 | thread.start() # Start the execution 216 | 217 | cv2.putText(frame, "Unknown", (x, y + h), font, 1.0, (0, 255, 0), 2) 218 | prev_profile = profile 219 | 220 | count +=1 221 | ret, jpeg = cv2.imencode('.jpg', frame) 222 | return jpeg.tobytes() 223 | 224 | else: 225 | return None 226 | 227 | def start_record(self): 228 | self.is_record = True 229 | self.recordingThread = RecordingThread("Video Recording Thread", self.cap) 230 | self.recordingThread.start() 231 | 232 | def stop_record(self): 233 | self.is_record = False 234 | 235 | if self.recordingThread != None: 236 | self.recordingThread.stop() 237 | 238 | 239 | -------------------------------------------------------------------------------- /detect_faces.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import sqlite3 3 | import os 4 | import numpy as np 5 | from PIL import Image 6 | 7 | ''' 8 | To change camera change the 0 to 1 for USB camera. 9 | ''' 10 | cam = cv2.VideoCapture(0) 11 | detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 12 | 13 | def getID(): 14 | conn = sqlite3.connect("faceInfoData.db") 15 | cur = conn.execute('SELECT max(id) FROM Visitors') 16 | id = cur.fetchone()[0] 17 | cur.close() 18 | return int(id) 19 | 20 | 21 | id = getID() 22 | idCount = 0 23 | while (True): 24 | ret, img = cam.read() 25 | gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 26 | faces = detector.detectMultiScale(gray, 1.3, 5) 27 | for (x, y, w, h) in faces: 28 | cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2) 29 | 30 | idCount = idCount + 1 31 | cv2.imwrite("faceData/User." + str(id) + '.' + str(idCount) + ".jpg", gray[y:y + h, x:x + w]) 32 | 33 | cv2.imshow('frame', img) 34 | if cv2.waitKey(200) & 0xFF == ord('q'): 35 | break 36 | elif idCount > 20: 37 | break 38 | cam.release() 39 | cv2.destroyAllWindows() 40 | 41 | 42 | recognizer = cv2.face.LBPHFaceRecognizer_create() 43 | detector= cv2.CascadeClassifier("haarcascade_frontalface_default.xml"); 44 | 45 | def getImagesAndLabels(path): 46 | imagePaths=[os.path.join(path,f) for f in os.listdir(path)] 47 | faceSamples=[] 48 | Ids=[] 49 | 50 | for imagePath in imagePaths: 51 | pilImage=Image.open(imagePath).convert('L') 52 | 53 | imageNp=np.array(pilImage,'uint8') 54 | 55 | Id=int(os.path.split(imagePath)[-1].split(".")[1]) 56 | faces=detector.detectMultiScale(imageNp) 57 | 58 | for (x,y,w,h) in faces: 59 | faceSamples.append(imageNp[y:y+h,x:x+w]) 60 | Ids.append(Id) 61 | return faceSamples,Ids 62 | 63 | 64 | faces,Ids = getImagesAndLabels('faceData') 65 | recognizer.train(faces, np.array(Ids)) 66 | recognizer.save('trainedData/trainingData.yml') 67 | -------------------------------------------------------------------------------- /faceData/text.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shangeth/Computer-Vision-Security-System/a0a320f4c9531409bc61c4401f14cd165d289b23/faceData/text.txt -------------------------------------------------------------------------------- /faceInfoData.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shangeth/Computer-Vision-Security-System/a0a320f4c9531409bc61c4401f14cd165d289b23/faceInfoData.db -------------------------------------------------------------------------------- /server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, Response, jsonify, request,redirect,url_for 2 | from camera_recognition import VideoCamera 3 | import cv2 4 | import sqlite3 5 | import os 6 | import numpy as np 7 | from PIL import Image 8 | 9 | #flask configuration 10 | app = Flask(__name__) 11 | app.config['SECRET_KEY'] = 'you-will-never-guess' 12 | 13 | video_camera = None 14 | global_frame = None 15 | 16 | #Home page for the WebApp 17 | @app.route('/') 18 | def index(): 19 | c = sqlite3.connect("faceInfoData.db") 20 | conn = c.cursor() 21 | cur = conn.execute("SELECT * FROM log ") 22 | logs=cur.fetchall() 23 | c.commit() 24 | conn.close() 25 | return render_template('home.html',logs=logs) 26 | 27 | #Record config route 28 | @app.route('/record_status', methods=['POST']) 29 | def record_status(): 30 | global video_camera 31 | if video_camera == None: 32 | video_camera = VideoCamera() 33 | 34 | json = request.get_json() 35 | 36 | status = json['status'] 37 | 38 | if status == "true": 39 | video_camera.start_record() 40 | return jsonify(result="started") 41 | else: 42 | video_camera.stop_record() 43 | return jsonify(result="stopped") 44 | 45 | # to stream the video 46 | def video_stream(): 47 | global video_camera 48 | global global_frame 49 | 50 | if video_camera == None: 51 | video_camera = VideoCamera() 52 | while True: 53 | frame = video_camera.get_frame() 54 | 55 | if frame != None: 56 | global_frame = frame 57 | yield (b'--frame\r\n' 58 | b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n') 59 | else: 60 | yield (b'--frame\r\n' 61 | b'Content-Type: image/jpeg\r\n\r\n' + global_frame + b'\r\n\r\n') 62 | 63 | #This route shows the video in the html 64 | @app.route('/video_viewer') 65 | def video_viewer(): 66 | return Response(video_stream(),mimetype='multipart/x-mixed-replace; boundary=frame') 67 | 68 | # page to add new visitors 69 | @app.route('/addVisitor') 70 | def add_visitor(): 71 | return render_template("add_visitor.html") 72 | 73 | #page which takes the new visitor details and process it into database 74 | @app.route("/submitVisitor",methods=['POST']) 75 | def submitVisitor(): 76 | if request.method == "POST": 77 | 78 | name = request.form['visitor_name'] 79 | age = request.form['visitor_age'] 80 | sex = request.form['visitor_sex'] 81 | c = sqlite3.connect("faceInfoData.db") 82 | conn=c.cursor() 83 | conn.execute("INSERT INTO Visitors (Name, Age, Sex) VALUES (?,?,?)", (name, age, sex)) 84 | c.commit() 85 | conn.close() 86 | return render_template("add_face.html",name=name,age=age,sex=sex) 87 | 88 | else: 89 | return "

Lol ... GET Method not allowed

" 90 | 91 | 92 | # gets the last id from database to match with the picture takem 93 | def getID(): 94 | conn = sqlite3.connect("faceInfoData.db") 95 | cur = conn.execute('SELECT max(id) FROM Visitors') 96 | id = cur.fetchone()[0] 97 | cur.close() 98 | return int(id) 99 | 100 | def getImagesAndLabels(path): 101 | imagePaths=[os.path.join(path,f) for f in os.listdir(path)] 102 | faceSamples=[] 103 | Ids=[] 104 | detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 105 | 106 | for imagePath in imagePaths: 107 | pilImage=Image.open(imagePath).convert('L') 108 | 109 | imageNp=np.array(pilImage,'uint8') 110 | 111 | Id=int(os.path.split(imagePath)[-1].split(".")[1]) 112 | faces=detector.detectMultiScale(imageNp) 113 | 114 | for (x,y,w,h) in faces: 115 | faceSamples.append(imageNp[y:y+h,x:x+w]) 116 | Ids.append(Id) 117 | return faceSamples,Ids 118 | 119 | 120 | 121 | # this page takes pictures for the face recognition 122 | @app.route("/takepic", methods=['GET']) 123 | def takepic(): 124 | cam = cv2.VideoCapture(1) 125 | detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 126 | 127 | id = getID() 128 | idCount = 0 129 | while (True): 130 | ret, img = cam.read() 131 | gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 132 | faces = detector.detectMultiScale(gray, 1.3, 5) 133 | for (x, y, w, h) in faces: 134 | cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2) 135 | 136 | idCount = idCount + 1 137 | cv2.imwrite("faceData/User." + str(id) + '.' + str(idCount) + ".jpg", gray[y:y + h, x:x + w]) 138 | 139 | cv2.imshow('frame', img) 140 | if cv2.waitKey(100) & 0xFF == ord('q'): 141 | break 142 | elif idCount > 30: 143 | break 144 | cam.release() 145 | cv2.destroyAllWindows() 146 | 147 | recognizer = cv2.face.LBPHFaceRecognizer_create() 148 | detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml"); 149 | 150 | faces, Ids = getImagesAndLabels('faceData') 151 | recognizer.train(faces, np.array(Ids)) 152 | print("Training") 153 | recognizer.save('trainedData/trainingData.yml') 154 | print("saving to yml") 155 | return render_template('success.html') 156 | 157 | 158 | # Shows all the visitors who are allowed 159 | @app.route('/visitorList') 160 | def visitor_list(): 161 | c = sqlite3.connect("faceInfoData.db") 162 | conn = c.cursor() 163 | cur = conn.execute("SELECT * FROM Visitors") 164 | visitors = cur.fetchall() 165 | return render_template("visitors_list.html",visitors = visitors) 166 | 167 | 168 | 169 | #run the server 170 | if __name__ == '__main__': 171 | app.run(host='0.0.0.0', threaded=True, debug=True) 172 | -------------------------------------------------------------------------------- /static/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: node_js 3 | node_js: 4 | - "node" 5 | install: npm install 6 | script: 7 | - npm test 8 | - gulp 9 | cache: 10 | directories: 11 | - node_modules 12 | -------------------------------------------------------------------------------- /static/addface.js: -------------------------------------------------------------------------------- 1 | document.querySelector('#addface').onsubmit = () =>{ 2 | const request = new XMLHttpRequest(); 3 | request.open('POST','/takepic'); 4 | request.onload()=>{ 5 | const data = JSON.parse(request.responseText); 6 | 7 | if(data.success){ 8 | const content = data.msg 9 | document.querySelector('#here').innerHTML = content; 10 | } 11 | } 12 | 13 | } -------------------------------------------------------------------------------- /static/css/cyber-security-background-14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shangeth/Computer-Vision-Security-System/a0a320f4c9531409bc61c4401f14cd165d289b23/static/css/cyber-security-background-14.jpg -------------------------------------------------------------------------------- /static/css/simple-sidebar.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Start Bootstrap - Simple Sidebar (https://startbootstrap.com/template-overviews/simple-sidebar) 3 | * Copyright 2013-2017 Start Bootstrap 4 | * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-simple-sidebar/blob/master/LICENSE) 5 | */ 6 | 7 | body { 8 | overflow-x: hidden; 9 | } 10 | 11 | #wrapper { 12 | padding-left: 0; 13 | -webkit-transition: all 0.5s ease; 14 | -moz-transition: all 0.5s ease; 15 | -o-transition: all 0.5s ease; 16 | transition: all 0.5s ease; 17 | } 18 | 19 | #wrapper.toggled { 20 | padding-left: 250px; 21 | } 22 | 23 | #sidebar-wrapper { 24 | z-index: 1000; 25 | position: fixed; 26 | left: 250px; 27 | width: 0; 28 | height: 100%; 29 | margin-left: -250px; 30 | overflow-y: auto; 31 | background: #000; 32 | -webkit-transition: all 0.5s ease; 33 | -moz-transition: all 0.5s ease; 34 | -o-transition: all 0.5s ease; 35 | transition: all 0.5s ease; 36 | } 37 | 38 | #wrapper.toggled #sidebar-wrapper { 39 | width: 250px; 40 | } 41 | 42 | #page-content-wrapper { 43 | width: 100%; 44 | position: absolute; 45 | padding: 15px; 46 | } 47 | 48 | #wrapper.toggled #page-content-wrapper { 49 | position: absolute; 50 | margin-right: -250px; 51 | } 52 | 53 | 54 | /* Sidebar Styles */ 55 | 56 | .sidebar-nav { 57 | position: absolute; 58 | top: 0; 59 | width: 250px; 60 | margin: 0; 61 | padding: 0; 62 | list-style: none; 63 | } 64 | 65 | .sidebar-nav li { 66 | text-indent: 20px; 67 | line-height: 40px; 68 | } 69 | 70 | .sidebar-nav li a { 71 | display: block; 72 | text-decoration: none; 73 | color: #999999; 74 | } 75 | 76 | .sidebar-nav li a:hover { 77 | text-decoration: none; 78 | color: #fff; 79 | background: rgba(255, 255, 255, 0.2); 80 | } 81 | 82 | .sidebar-nav li a:active, .sidebar-nav li a:focus { 83 | text-decoration: none; 84 | } 85 | 86 | .sidebar-nav>.sidebar-brand { 87 | height: 65px; 88 | font-size: 18px; 89 | line-height: 60px; 90 | } 91 | 92 | .sidebar-nav>.sidebar-brand a { 93 | color: #999999; 94 | } 95 | 96 | .sidebar-nav>.sidebar-brand a:hover { 97 | color: #fff; 98 | background: none; 99 | } 100 | 101 | @media(min-width:768px) { 102 | #wrapper { 103 | padding-left: 0; 104 | } 105 | #wrapper.toggled { 106 | padding-left: 250px; 107 | } 108 | #sidebar-wrapper { 109 | width: 0; 110 | } 111 | #wrapper.toggled #sidebar-wrapper { 112 | width: 250px; 113 | } 114 | #page-content-wrapper { 115 | padding: 20px; 116 | position: relative; 117 | } 118 | #wrapper.toggled #page-content-wrapper { 119 | position: relative; 120 | margin-right: 0; 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /static/css/style.css: -------------------------------------------------------------------------------- 1 | body{ 2 | background: url("cyber-security-background-14.jpg"); 3 | color: white; 4 | } 5 | 6 | 7 | .adminlive{ 8 | background-color: rgba(184, 186, 188,0.3); 9 | 10 | padding: 20px; 11 | align-content: center; 12 | text-align: center; 13 | border-radius: 5px; 14 | display: inline-block; 15 | margin: 0 auto; 16 | width: 100%; 17 | 18 | 19 | 20 | } 21 | 22 | .log{ 23 | 24 | background-color: rgba(184, 186, 188,0.3); 25 | padding: 20px; 26 | align-items: center; 27 | margin: 0 auto; 28 | width: 100%; 29 | ; 30 | border-radius: 5px; 31 | 32 | } 33 | 34 | 35 | .outcol{ 36 | display: inline-block; 37 | position: relative; 38 | top: 30px; 39 | 40 | } 41 | 42 | #list{ 43 | background-color: rgba(184, 186, 188,0.2); 44 | padding: 20px; 45 | border-radius: 5px; 46 | margin: 0 auto; 47 | width: 100%; 48 | position: relative; 49 | top: 50px; 50 | } 51 | 52 | .visitorform{ 53 | background-color: rgba(184, 186, 188,0.2); 54 | padding: 20px; 55 | border-radius: 5px; 56 | margin: 0 auto; 57 | width: 100%; 58 | position: relative; 59 | top: 50px; 60 | } 61 | 62 | .outform{ 63 | 64 | } 65 | 66 | 67 | .centered { 68 | position : relative; 69 | top: 50%; 70 | left: 50%; 71 | transform: translate(-50%, -50%); 72 | } 73 | 74 | .addface { 75 | background-color: rgba(184, 186, 188, 0.2); 76 | padding: 20px; 77 | border-radius: 5px; 78 | text-align: center; 79 | padding: 30px; 80 | } 81 | 82 | img{ 83 | margin: 10px; 84 | } 85 | .suc{ 86 | background-color: rgba(184, 186, 188, 0.2); 87 | padding: 20px; 88 | border-radius: 5px; 89 | text-align: center; 90 | } -------------------------------------------------------------------------------- /static/gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var browserSync = require('browser-sync').create(); 3 | var pkg = require('./package.json'); 4 | 5 | // Copy third party libraries from /node_modules into /vendor 6 | gulp.task('vendor', function() { 7 | 8 | // Bootstrap 9 | gulp.src([ 10 | './node_modules/bootstrap/dist/**/*', 11 | '!./node_modules/bootstrap/dist/css/bootstrap-grid*', 12 | '!./node_modules/bootstrap/dist/css/bootstrap-reboot*' 13 | ]) 14 | .pipe(gulp.dest('./vendor/bootstrap')) 15 | 16 | // jQuery 17 | gulp.src([ 18 | './node_modules/jquery/dist/*', 19 | '!./node_modules/jquery/dist/core.js' 20 | ]) 21 | .pipe(gulp.dest('./vendor/jquery')) 22 | 23 | }) 24 | 25 | // Default task 26 | gulp.task('default', ['vendor']); 27 | 28 | // Configure the browserSync task 29 | gulp.task('browserSync', function() { 30 | browserSync.init({ 31 | server: { 32 | baseDir: "./" 33 | } 34 | }); 35 | }); 36 | 37 | // Dev task 38 | gulp.task('dev', ['browserSync'], function() { 39 | gulp.watch('./css/*.css', browserSync.reload); 40 | gulp.watch('./*.html', browserSync.reload); 41 | }); 42 | -------------------------------------------------------------------------------- /static/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Simple Sidebar", 3 | "name": "startbootstrap-simple-sidebar", 4 | "version": "4.1.1", 5 | "description": "A simple sidbar navigation HTMl template built with Bootstrap", 6 | "keywords": [ 7 | "css", 8 | "sass", 9 | "html", 10 | "responsive", 11 | "theme", 12 | "template" 13 | ], 14 | "homepage": "https://startbootstrap.com/template-overviews/simple-sidebar", 15 | "bugs": { 16 | "url": "https://github.com/BlackrockDigital/startbootstrap-simple-sidebar/issues", 17 | "email": "feedback@startbootstrap.com" 18 | }, 19 | "license": "MIT", 20 | "author": "Start Bootstrap", 21 | "contributors": [ 22 | "David Miller (http://davidmiller.io/)" 23 | ], 24 | "repository": { 25 | "type": "git", 26 | "url": "https://github.com/BlackrockDigital/startbootstrap-simple-sidebar.git" 27 | }, 28 | "dependencies": { 29 | "bootstrap": "4.1.1", 30 | "jquery": "3.3.1" 31 | }, 32 | "devDependencies": { 33 | "browser-sync": "2.24.3", 34 | "gulp": "^3.9.1" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /static/recorder.js: -------------------------------------------------------------------------------- 1 | var buttonRecord = document.getElementById("record"); 2 | var buttonStop = document.getElementById("stop"); 3 | 4 | buttonStop.disabled = true; 5 | 6 | buttonRecord.onclick = function() { 7 | // var url = window.location.href + "record_status"; 8 | buttonRecord.disabled = true; 9 | buttonStop.disabled = false; 10 | 11 | // disable download link 12 | var downloadLink = document.getElementById("download"); 13 | downloadLink.text = ""; 14 | downloadLink.href = ""; 15 | 16 | // XMLHttpRequest 17 | var xhr = new XMLHttpRequest(); 18 | xhr.onreadystatechange = function() { 19 | if (xhr.readyState == 4 && xhr.status == 200) { 20 | // alert(xhr.responseText); 21 | } 22 | } 23 | xhr.open("POST", "/record_status"); 24 | xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); 25 | xhr.send(JSON.stringify({ status: "true" })); 26 | }; 27 | 28 | buttonStop.onclick = function() { 29 | buttonRecord.disabled = false; 30 | buttonStop.disabled = true; 31 | 32 | // XMLHttpRequest 33 | var xhr = new XMLHttpRequest(); 34 | xhr.onreadystatechange = function() { 35 | if (xhr.readyState == 4 && xhr.status == 200) { 36 | // alert(xhr.responseText); 37 | 38 | // enable download link 39 | var downloadLink = document.getElementById("download"); 40 | downloadLink.text = "Download Video"; 41 | downloadLink.href = "/static/video.avi"; 42 | } 43 | } 44 | xhr.open("POST", "/record_status"); 45 | xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); 46 | xhr.send(JSON.stringify({ status: "false" })); 47 | }; 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /static/vendor/bootstrap/css/bootstrap-grid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grid v4.0.0-beta.2 (https://getbootstrap.com) 3 | * Copyright 2011-2017 The Bootstrap Authors 4 | * Copyright 2011-2017 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | */ 7 | @-ms-viewport { 8 | width: device-width; 9 | } 10 | 11 | html { 12 | box-sizing: border-box; 13 | -ms-overflow-style: scrollbar; 14 | } 15 | 16 | *, 17 | *::before, 18 | *::after { 19 | box-sizing: inherit; 20 | } 21 | 22 | .container { 23 | width: 100%; 24 | padding-right: 15px; 25 | padding-left: 15px; 26 | margin-right: auto; 27 | margin-left: auto; 28 | } 29 | 30 | @media (min-width: 576px) { 31 | .container { 32 | max-width: 540px; 33 | } 34 | } 35 | 36 | @media (min-width: 768px) { 37 | .container { 38 | max-width: 720px; 39 | } 40 | } 41 | 42 | @media (min-width: 992px) { 43 | .container { 44 | max-width: 960px; 45 | } 46 | } 47 | 48 | @media (min-width: 1200px) { 49 | .container { 50 | max-width: 1140px; 51 | } 52 | } 53 | 54 | .container-fluid { 55 | width: 100%; 56 | padding-right: 15px; 57 | padding-left: 15px; 58 | margin-right: auto; 59 | margin-left: auto; 60 | } 61 | 62 | .row { 63 | display: -ms-flexbox; 64 | display: flex; 65 | -ms-flex-wrap: wrap; 66 | flex-wrap: wrap; 67 | margin-right: -15px; 68 | margin-left: -15px; 69 | } 70 | 71 | .no-gutters { 72 | margin-right: 0; 73 | margin-left: 0; 74 | } 75 | 76 | .no-gutters > .col, 77 | .no-gutters > [class*="col-"] { 78 | padding-right: 0; 79 | padding-left: 0; 80 | } 81 | 82 | .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, 83 | .col-auto, .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, .col-sm, 84 | .col-sm-auto, .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, .col-md, 85 | .col-md-auto, .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, .col-lg, 86 | .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, 87 | .col-xl-auto { 88 | position: relative; 89 | width: 100%; 90 | min-height: 1px; 91 | padding-right: 15px; 92 | padding-left: 15px; 93 | } 94 | 95 | .col { 96 | -ms-flex-preferred-size: 0; 97 | flex-basis: 0; 98 | -ms-flex-positive: 1; 99 | flex-grow: 1; 100 | max-width: 100%; 101 | } 102 | 103 | .col-auto { 104 | -ms-flex: 0 0 auto; 105 | flex: 0 0 auto; 106 | width: auto; 107 | max-width: none; 108 | } 109 | 110 | .col-1 { 111 | -ms-flex: 0 0 8.333333%; 112 | flex: 0 0 8.333333%; 113 | max-width: 8.333333%; 114 | } 115 | 116 | .col-2 { 117 | -ms-flex: 0 0 16.666667%; 118 | flex: 0 0 16.666667%; 119 | max-width: 16.666667%; 120 | } 121 | 122 | .col-3 { 123 | -ms-flex: 0 0 25%; 124 | flex: 0 0 25%; 125 | max-width: 25%; 126 | } 127 | 128 | .col-4 { 129 | -ms-flex: 0 0 33.333333%; 130 | flex: 0 0 33.333333%; 131 | max-width: 33.333333%; 132 | } 133 | 134 | .col-5 { 135 | -ms-flex: 0 0 41.666667%; 136 | flex: 0 0 41.666667%; 137 | max-width: 41.666667%; 138 | } 139 | 140 | .col-6 { 141 | -ms-flex: 0 0 50%; 142 | flex: 0 0 50%; 143 | max-width: 50%; 144 | } 145 | 146 | .col-7 { 147 | -ms-flex: 0 0 58.333333%; 148 | flex: 0 0 58.333333%; 149 | max-width: 58.333333%; 150 | } 151 | 152 | .col-8 { 153 | -ms-flex: 0 0 66.666667%; 154 | flex: 0 0 66.666667%; 155 | max-width: 66.666667%; 156 | } 157 | 158 | .col-9 { 159 | -ms-flex: 0 0 75%; 160 | flex: 0 0 75%; 161 | max-width: 75%; 162 | } 163 | 164 | .col-10 { 165 | -ms-flex: 0 0 83.333333%; 166 | flex: 0 0 83.333333%; 167 | max-width: 83.333333%; 168 | } 169 | 170 | .col-11 { 171 | -ms-flex: 0 0 91.666667%; 172 | flex: 0 0 91.666667%; 173 | max-width: 91.666667%; 174 | } 175 | 176 | .col-12 { 177 | -ms-flex: 0 0 100%; 178 | flex: 0 0 100%; 179 | max-width: 100%; 180 | } 181 | 182 | .order-first { 183 | -ms-flex-order: -1; 184 | order: -1; 185 | } 186 | 187 | .order-1 { 188 | -ms-flex-order: 1; 189 | order: 1; 190 | } 191 | 192 | .order-2 { 193 | -ms-flex-order: 2; 194 | order: 2; 195 | } 196 | 197 | .order-3 { 198 | -ms-flex-order: 3; 199 | order: 3; 200 | } 201 | 202 | .order-4 { 203 | -ms-flex-order: 4; 204 | order: 4; 205 | } 206 | 207 | .order-5 { 208 | -ms-flex-order: 5; 209 | order: 5; 210 | } 211 | 212 | .order-6 { 213 | -ms-flex-order: 6; 214 | order: 6; 215 | } 216 | 217 | .order-7 { 218 | -ms-flex-order: 7; 219 | order: 7; 220 | } 221 | 222 | .order-8 { 223 | -ms-flex-order: 8; 224 | order: 8; 225 | } 226 | 227 | .order-9 { 228 | -ms-flex-order: 9; 229 | order: 9; 230 | } 231 | 232 | .order-10 { 233 | -ms-flex-order: 10; 234 | order: 10; 235 | } 236 | 237 | .order-11 { 238 | -ms-flex-order: 11; 239 | order: 11; 240 | } 241 | 242 | .order-12 { 243 | -ms-flex-order: 12; 244 | order: 12; 245 | } 246 | 247 | .offset-1 { 248 | margin-left: 8.333333%; 249 | } 250 | 251 | .offset-2 { 252 | margin-left: 16.666667%; 253 | } 254 | 255 | .offset-3 { 256 | margin-left: 25%; 257 | } 258 | 259 | .offset-4 { 260 | margin-left: 33.333333%; 261 | } 262 | 263 | .offset-5 { 264 | margin-left: 41.666667%; 265 | } 266 | 267 | .offset-6 { 268 | margin-left: 50%; 269 | } 270 | 271 | .offset-7 { 272 | margin-left: 58.333333%; 273 | } 274 | 275 | .offset-8 { 276 | margin-left: 66.666667%; 277 | } 278 | 279 | .offset-9 { 280 | margin-left: 75%; 281 | } 282 | 283 | .offset-10 { 284 | margin-left: 83.333333%; 285 | } 286 | 287 | .offset-11 { 288 | margin-left: 91.666667%; 289 | } 290 | 291 | @media (min-width: 576px) { 292 | .col-sm { 293 | -ms-flex-preferred-size: 0; 294 | flex-basis: 0; 295 | -ms-flex-positive: 1; 296 | flex-grow: 1; 297 | max-width: 100%; 298 | } 299 | .col-sm-auto { 300 | -ms-flex: 0 0 auto; 301 | flex: 0 0 auto; 302 | width: auto; 303 | max-width: none; 304 | } 305 | .col-sm-1 { 306 | -ms-flex: 0 0 8.333333%; 307 | flex: 0 0 8.333333%; 308 | max-width: 8.333333%; 309 | } 310 | .col-sm-2 { 311 | -ms-flex: 0 0 16.666667%; 312 | flex: 0 0 16.666667%; 313 | max-width: 16.666667%; 314 | } 315 | .col-sm-3 { 316 | -ms-flex: 0 0 25%; 317 | flex: 0 0 25%; 318 | max-width: 25%; 319 | } 320 | .col-sm-4 { 321 | -ms-flex: 0 0 33.333333%; 322 | flex: 0 0 33.333333%; 323 | max-width: 33.333333%; 324 | } 325 | .col-sm-5 { 326 | -ms-flex: 0 0 41.666667%; 327 | flex: 0 0 41.666667%; 328 | max-width: 41.666667%; 329 | } 330 | .col-sm-6 { 331 | -ms-flex: 0 0 50%; 332 | flex: 0 0 50%; 333 | max-width: 50%; 334 | } 335 | .col-sm-7 { 336 | -ms-flex: 0 0 58.333333%; 337 | flex: 0 0 58.333333%; 338 | max-width: 58.333333%; 339 | } 340 | .col-sm-8 { 341 | -ms-flex: 0 0 66.666667%; 342 | flex: 0 0 66.666667%; 343 | max-width: 66.666667%; 344 | } 345 | .col-sm-9 { 346 | -ms-flex: 0 0 75%; 347 | flex: 0 0 75%; 348 | max-width: 75%; 349 | } 350 | .col-sm-10 { 351 | -ms-flex: 0 0 83.333333%; 352 | flex: 0 0 83.333333%; 353 | max-width: 83.333333%; 354 | } 355 | .col-sm-11 { 356 | -ms-flex: 0 0 91.666667%; 357 | flex: 0 0 91.666667%; 358 | max-width: 91.666667%; 359 | } 360 | .col-sm-12 { 361 | -ms-flex: 0 0 100%; 362 | flex: 0 0 100%; 363 | max-width: 100%; 364 | } 365 | .order-sm-first { 366 | -ms-flex-order: -1; 367 | order: -1; 368 | } 369 | .order-sm-1 { 370 | -ms-flex-order: 1; 371 | order: 1; 372 | } 373 | .order-sm-2 { 374 | -ms-flex-order: 2; 375 | order: 2; 376 | } 377 | .order-sm-3 { 378 | -ms-flex-order: 3; 379 | order: 3; 380 | } 381 | .order-sm-4 { 382 | -ms-flex-order: 4; 383 | order: 4; 384 | } 385 | .order-sm-5 { 386 | -ms-flex-order: 5; 387 | order: 5; 388 | } 389 | .order-sm-6 { 390 | -ms-flex-order: 6; 391 | order: 6; 392 | } 393 | .order-sm-7 { 394 | -ms-flex-order: 7; 395 | order: 7; 396 | } 397 | .order-sm-8 { 398 | -ms-flex-order: 8; 399 | order: 8; 400 | } 401 | .order-sm-9 { 402 | -ms-flex-order: 9; 403 | order: 9; 404 | } 405 | .order-sm-10 { 406 | -ms-flex-order: 10; 407 | order: 10; 408 | } 409 | .order-sm-11 { 410 | -ms-flex-order: 11; 411 | order: 11; 412 | } 413 | .order-sm-12 { 414 | -ms-flex-order: 12; 415 | order: 12; 416 | } 417 | .offset-sm-0 { 418 | margin-left: 0; 419 | } 420 | .offset-sm-1 { 421 | margin-left: 8.333333%; 422 | } 423 | .offset-sm-2 { 424 | margin-left: 16.666667%; 425 | } 426 | .offset-sm-3 { 427 | margin-left: 25%; 428 | } 429 | .offset-sm-4 { 430 | margin-left: 33.333333%; 431 | } 432 | .offset-sm-5 { 433 | margin-left: 41.666667%; 434 | } 435 | .offset-sm-6 { 436 | margin-left: 50%; 437 | } 438 | .offset-sm-7 { 439 | margin-left: 58.333333%; 440 | } 441 | .offset-sm-8 { 442 | margin-left: 66.666667%; 443 | } 444 | .offset-sm-9 { 445 | margin-left: 75%; 446 | } 447 | .offset-sm-10 { 448 | margin-left: 83.333333%; 449 | } 450 | .offset-sm-11 { 451 | margin-left: 91.666667%; 452 | } 453 | } 454 | 455 | @media (min-width: 768px) { 456 | .col-md { 457 | -ms-flex-preferred-size: 0; 458 | flex-basis: 0; 459 | -ms-flex-positive: 1; 460 | flex-grow: 1; 461 | max-width: 100%; 462 | } 463 | .col-md-auto { 464 | -ms-flex: 0 0 auto; 465 | flex: 0 0 auto; 466 | width: auto; 467 | max-width: none; 468 | } 469 | .col-md-1 { 470 | -ms-flex: 0 0 8.333333%; 471 | flex: 0 0 8.333333%; 472 | max-width: 8.333333%; 473 | } 474 | .col-md-2 { 475 | -ms-flex: 0 0 16.666667%; 476 | flex: 0 0 16.666667%; 477 | max-width: 16.666667%; 478 | } 479 | .col-md-3 { 480 | -ms-flex: 0 0 25%; 481 | flex: 0 0 25%; 482 | max-width: 25%; 483 | } 484 | .col-md-4 { 485 | -ms-flex: 0 0 33.333333%; 486 | flex: 0 0 33.333333%; 487 | max-width: 33.333333%; 488 | } 489 | .col-md-5 { 490 | -ms-flex: 0 0 41.666667%; 491 | flex: 0 0 41.666667%; 492 | max-width: 41.666667%; 493 | } 494 | .col-md-6 { 495 | -ms-flex: 0 0 50%; 496 | flex: 0 0 50%; 497 | max-width: 50%; 498 | } 499 | .col-md-7 { 500 | -ms-flex: 0 0 58.333333%; 501 | flex: 0 0 58.333333%; 502 | max-width: 58.333333%; 503 | } 504 | .col-md-8 { 505 | -ms-flex: 0 0 66.666667%; 506 | flex: 0 0 66.666667%; 507 | max-width: 66.666667%; 508 | } 509 | .col-md-9 { 510 | -ms-flex: 0 0 75%; 511 | flex: 0 0 75%; 512 | max-width: 75%; 513 | } 514 | .col-md-10 { 515 | -ms-flex: 0 0 83.333333%; 516 | flex: 0 0 83.333333%; 517 | max-width: 83.333333%; 518 | } 519 | .col-md-11 { 520 | -ms-flex: 0 0 91.666667%; 521 | flex: 0 0 91.666667%; 522 | max-width: 91.666667%; 523 | } 524 | .col-md-12 { 525 | -ms-flex: 0 0 100%; 526 | flex: 0 0 100%; 527 | max-width: 100%; 528 | } 529 | .order-md-first { 530 | -ms-flex-order: -1; 531 | order: -1; 532 | } 533 | .order-md-1 { 534 | -ms-flex-order: 1; 535 | order: 1; 536 | } 537 | .order-md-2 { 538 | -ms-flex-order: 2; 539 | order: 2; 540 | } 541 | .order-md-3 { 542 | -ms-flex-order: 3; 543 | order: 3; 544 | } 545 | .order-md-4 { 546 | -ms-flex-order: 4; 547 | order: 4; 548 | } 549 | .order-md-5 { 550 | -ms-flex-order: 5; 551 | order: 5; 552 | } 553 | .order-md-6 { 554 | -ms-flex-order: 6; 555 | order: 6; 556 | } 557 | .order-md-7 { 558 | -ms-flex-order: 7; 559 | order: 7; 560 | } 561 | .order-md-8 { 562 | -ms-flex-order: 8; 563 | order: 8; 564 | } 565 | .order-md-9 { 566 | -ms-flex-order: 9; 567 | order: 9; 568 | } 569 | .order-md-10 { 570 | -ms-flex-order: 10; 571 | order: 10; 572 | } 573 | .order-md-11 { 574 | -ms-flex-order: 11; 575 | order: 11; 576 | } 577 | .order-md-12 { 578 | -ms-flex-order: 12; 579 | order: 12; 580 | } 581 | .offset-md-0 { 582 | margin-left: 0; 583 | } 584 | .offset-md-1 { 585 | margin-left: 8.333333%; 586 | } 587 | .offset-md-2 { 588 | margin-left: 16.666667%; 589 | } 590 | .offset-md-3 { 591 | margin-left: 25%; 592 | } 593 | .offset-md-4 { 594 | margin-left: 33.333333%; 595 | } 596 | .offset-md-5 { 597 | margin-left: 41.666667%; 598 | } 599 | .offset-md-6 { 600 | margin-left: 50%; 601 | } 602 | .offset-md-7 { 603 | margin-left: 58.333333%; 604 | } 605 | .offset-md-8 { 606 | margin-left: 66.666667%; 607 | } 608 | .offset-md-9 { 609 | margin-left: 75%; 610 | } 611 | .offset-md-10 { 612 | margin-left: 83.333333%; 613 | } 614 | .offset-md-11 { 615 | margin-left: 91.666667%; 616 | } 617 | } 618 | 619 | @media (min-width: 992px) { 620 | .col-lg { 621 | -ms-flex-preferred-size: 0; 622 | flex-basis: 0; 623 | -ms-flex-positive: 1; 624 | flex-grow: 1; 625 | max-width: 100%; 626 | } 627 | .col-lg-auto { 628 | -ms-flex: 0 0 auto; 629 | flex: 0 0 auto; 630 | width: auto; 631 | max-width: none; 632 | } 633 | .col-lg-1 { 634 | -ms-flex: 0 0 8.333333%; 635 | flex: 0 0 8.333333%; 636 | max-width: 8.333333%; 637 | } 638 | .col-lg-2 { 639 | -ms-flex: 0 0 16.666667%; 640 | flex: 0 0 16.666667%; 641 | max-width: 16.666667%; 642 | } 643 | .col-lg-3 { 644 | -ms-flex: 0 0 25%; 645 | flex: 0 0 25%; 646 | max-width: 25%; 647 | } 648 | .col-lg-4 { 649 | -ms-flex: 0 0 33.333333%; 650 | flex: 0 0 33.333333%; 651 | max-width: 33.333333%; 652 | } 653 | .col-lg-5 { 654 | -ms-flex: 0 0 41.666667%; 655 | flex: 0 0 41.666667%; 656 | max-width: 41.666667%; 657 | } 658 | .col-lg-6 { 659 | -ms-flex: 0 0 50%; 660 | flex: 0 0 50%; 661 | max-width: 50%; 662 | } 663 | .col-lg-7 { 664 | -ms-flex: 0 0 58.333333%; 665 | flex: 0 0 58.333333%; 666 | max-width: 58.333333%; 667 | } 668 | .col-lg-8 { 669 | -ms-flex: 0 0 66.666667%; 670 | flex: 0 0 66.666667%; 671 | max-width: 66.666667%; 672 | } 673 | .col-lg-9 { 674 | -ms-flex: 0 0 75%; 675 | flex: 0 0 75%; 676 | max-width: 75%; 677 | } 678 | .col-lg-10 { 679 | -ms-flex: 0 0 83.333333%; 680 | flex: 0 0 83.333333%; 681 | max-width: 83.333333%; 682 | } 683 | .col-lg-11 { 684 | -ms-flex: 0 0 91.666667%; 685 | flex: 0 0 91.666667%; 686 | max-width: 91.666667%; 687 | } 688 | .col-lg-12 { 689 | -ms-flex: 0 0 100%; 690 | flex: 0 0 100%; 691 | max-width: 100%; 692 | } 693 | .order-lg-first { 694 | -ms-flex-order: -1; 695 | order: -1; 696 | } 697 | .order-lg-1 { 698 | -ms-flex-order: 1; 699 | order: 1; 700 | } 701 | .order-lg-2 { 702 | -ms-flex-order: 2; 703 | order: 2; 704 | } 705 | .order-lg-3 { 706 | -ms-flex-order: 3; 707 | order: 3; 708 | } 709 | .order-lg-4 { 710 | -ms-flex-order: 4; 711 | order: 4; 712 | } 713 | .order-lg-5 { 714 | -ms-flex-order: 5; 715 | order: 5; 716 | } 717 | .order-lg-6 { 718 | -ms-flex-order: 6; 719 | order: 6; 720 | } 721 | .order-lg-7 { 722 | -ms-flex-order: 7; 723 | order: 7; 724 | } 725 | .order-lg-8 { 726 | -ms-flex-order: 8; 727 | order: 8; 728 | } 729 | .order-lg-9 { 730 | -ms-flex-order: 9; 731 | order: 9; 732 | } 733 | .order-lg-10 { 734 | -ms-flex-order: 10; 735 | order: 10; 736 | } 737 | .order-lg-11 { 738 | -ms-flex-order: 11; 739 | order: 11; 740 | } 741 | .order-lg-12 { 742 | -ms-flex-order: 12; 743 | order: 12; 744 | } 745 | .offset-lg-0 { 746 | margin-left: 0; 747 | } 748 | .offset-lg-1 { 749 | margin-left: 8.333333%; 750 | } 751 | .offset-lg-2 { 752 | margin-left: 16.666667%; 753 | } 754 | .offset-lg-3 { 755 | margin-left: 25%; 756 | } 757 | .offset-lg-4 { 758 | margin-left: 33.333333%; 759 | } 760 | .offset-lg-5 { 761 | margin-left: 41.666667%; 762 | } 763 | .offset-lg-6 { 764 | margin-left: 50%; 765 | } 766 | .offset-lg-7 { 767 | margin-left: 58.333333%; 768 | } 769 | .offset-lg-8 { 770 | margin-left: 66.666667%; 771 | } 772 | .offset-lg-9 { 773 | margin-left: 75%; 774 | } 775 | .offset-lg-10 { 776 | margin-left: 83.333333%; 777 | } 778 | .offset-lg-11 { 779 | margin-left: 91.666667%; 780 | } 781 | } 782 | 783 | @media (min-width: 1200px) { 784 | .col-xl { 785 | -ms-flex-preferred-size: 0; 786 | flex-basis: 0; 787 | -ms-flex-positive: 1; 788 | flex-grow: 1; 789 | max-width: 100%; 790 | } 791 | .col-xl-auto { 792 | -ms-flex: 0 0 auto; 793 | flex: 0 0 auto; 794 | width: auto; 795 | max-width: none; 796 | } 797 | .col-xl-1 { 798 | -ms-flex: 0 0 8.333333%; 799 | flex: 0 0 8.333333%; 800 | max-width: 8.333333%; 801 | } 802 | .col-xl-2 { 803 | -ms-flex: 0 0 16.666667%; 804 | flex: 0 0 16.666667%; 805 | max-width: 16.666667%; 806 | } 807 | .col-xl-3 { 808 | -ms-flex: 0 0 25%; 809 | flex: 0 0 25%; 810 | max-width: 25%; 811 | } 812 | .col-xl-4 { 813 | -ms-flex: 0 0 33.333333%; 814 | flex: 0 0 33.333333%; 815 | max-width: 33.333333%; 816 | } 817 | .col-xl-5 { 818 | -ms-flex: 0 0 41.666667%; 819 | flex: 0 0 41.666667%; 820 | max-width: 41.666667%; 821 | } 822 | .col-xl-6 { 823 | -ms-flex: 0 0 50%; 824 | flex: 0 0 50%; 825 | max-width: 50%; 826 | } 827 | .col-xl-7 { 828 | -ms-flex: 0 0 58.333333%; 829 | flex: 0 0 58.333333%; 830 | max-width: 58.333333%; 831 | } 832 | .col-xl-8 { 833 | -ms-flex: 0 0 66.666667%; 834 | flex: 0 0 66.666667%; 835 | max-width: 66.666667%; 836 | } 837 | .col-xl-9 { 838 | -ms-flex: 0 0 75%; 839 | flex: 0 0 75%; 840 | max-width: 75%; 841 | } 842 | .col-xl-10 { 843 | -ms-flex: 0 0 83.333333%; 844 | flex: 0 0 83.333333%; 845 | max-width: 83.333333%; 846 | } 847 | .col-xl-11 { 848 | -ms-flex: 0 0 91.666667%; 849 | flex: 0 0 91.666667%; 850 | max-width: 91.666667%; 851 | } 852 | .col-xl-12 { 853 | -ms-flex: 0 0 100%; 854 | flex: 0 0 100%; 855 | max-width: 100%; 856 | } 857 | .order-xl-first { 858 | -ms-flex-order: -1; 859 | order: -1; 860 | } 861 | .order-xl-1 { 862 | -ms-flex-order: 1; 863 | order: 1; 864 | } 865 | .order-xl-2 { 866 | -ms-flex-order: 2; 867 | order: 2; 868 | } 869 | .order-xl-3 { 870 | -ms-flex-order: 3; 871 | order: 3; 872 | } 873 | .order-xl-4 { 874 | -ms-flex-order: 4; 875 | order: 4; 876 | } 877 | .order-xl-5 { 878 | -ms-flex-order: 5; 879 | order: 5; 880 | } 881 | .order-xl-6 { 882 | -ms-flex-order: 6; 883 | order: 6; 884 | } 885 | .order-xl-7 { 886 | -ms-flex-order: 7; 887 | order: 7; 888 | } 889 | .order-xl-8 { 890 | -ms-flex-order: 8; 891 | order: 8; 892 | } 893 | .order-xl-9 { 894 | -ms-flex-order: 9; 895 | order: 9; 896 | } 897 | .order-xl-10 { 898 | -ms-flex-order: 10; 899 | order: 10; 900 | } 901 | .order-xl-11 { 902 | -ms-flex-order: 11; 903 | order: 11; 904 | } 905 | .order-xl-12 { 906 | -ms-flex-order: 12; 907 | order: 12; 908 | } 909 | .offset-xl-0 { 910 | margin-left: 0; 911 | } 912 | .offset-xl-1 { 913 | margin-left: 8.333333%; 914 | } 915 | .offset-xl-2 { 916 | margin-left: 16.666667%; 917 | } 918 | .offset-xl-3 { 919 | margin-left: 25%; 920 | } 921 | .offset-xl-4 { 922 | margin-left: 33.333333%; 923 | } 924 | .offset-xl-5 { 925 | margin-left: 41.666667%; 926 | } 927 | .offset-xl-6 { 928 | margin-left: 50%; 929 | } 930 | .offset-xl-7 { 931 | margin-left: 58.333333%; 932 | } 933 | .offset-xl-8 { 934 | margin-left: 66.666667%; 935 | } 936 | .offset-xl-9 { 937 | margin-left: 75%; 938 | } 939 | .offset-xl-10 { 940 | margin-left: 83.333333%; 941 | } 942 | .offset-xl-11 { 943 | margin-left: 91.666667%; 944 | } 945 | } 946 | 947 | .flex-row { 948 | -ms-flex-direction: row !important; 949 | flex-direction: row !important; 950 | } 951 | 952 | .flex-column { 953 | -ms-flex-direction: column !important; 954 | flex-direction: column !important; 955 | } 956 | 957 | .flex-row-reverse { 958 | -ms-flex-direction: row-reverse !important; 959 | flex-direction: row-reverse !important; 960 | } 961 | 962 | .flex-column-reverse { 963 | -ms-flex-direction: column-reverse !important; 964 | flex-direction: column-reverse !important; 965 | } 966 | 967 | .flex-wrap { 968 | -ms-flex-wrap: wrap !important; 969 | flex-wrap: wrap !important; 970 | } 971 | 972 | .flex-nowrap { 973 | -ms-flex-wrap: nowrap !important; 974 | flex-wrap: nowrap !important; 975 | } 976 | 977 | .flex-wrap-reverse { 978 | -ms-flex-wrap: wrap-reverse !important; 979 | flex-wrap: wrap-reverse !important; 980 | } 981 | 982 | .justify-content-start { 983 | -ms-flex-pack: start !important; 984 | justify-content: flex-start !important; 985 | } 986 | 987 | .justify-content-end { 988 | -ms-flex-pack: end !important; 989 | justify-content: flex-end !important; 990 | } 991 | 992 | .justify-content-center { 993 | -ms-flex-pack: center !important; 994 | justify-content: center !important; 995 | } 996 | 997 | .justify-content-between { 998 | -ms-flex-pack: justify !important; 999 | justify-content: space-between !important; 1000 | } 1001 | 1002 | .justify-content-around { 1003 | -ms-flex-pack: distribute !important; 1004 | justify-content: space-around !important; 1005 | } 1006 | 1007 | .align-items-start { 1008 | -ms-flex-align: start !important; 1009 | align-items: flex-start !important; 1010 | } 1011 | 1012 | .align-items-end { 1013 | -ms-flex-align: end !important; 1014 | align-items: flex-end !important; 1015 | } 1016 | 1017 | .align-items-center { 1018 | -ms-flex-align: center !important; 1019 | align-items: center !important; 1020 | } 1021 | 1022 | .align-items-baseline { 1023 | -ms-flex-align: baseline !important; 1024 | align-items: baseline !important; 1025 | } 1026 | 1027 | .align-items-stretch { 1028 | -ms-flex-align: stretch !important; 1029 | align-items: stretch !important; 1030 | } 1031 | 1032 | .align-content-start { 1033 | -ms-flex-line-pack: start !important; 1034 | align-content: flex-start !important; 1035 | } 1036 | 1037 | .align-content-end { 1038 | -ms-flex-line-pack: end !important; 1039 | align-content: flex-end !important; 1040 | } 1041 | 1042 | .align-content-center { 1043 | -ms-flex-line-pack: center !important; 1044 | align-content: center !important; 1045 | } 1046 | 1047 | .align-content-between { 1048 | -ms-flex-line-pack: justify !important; 1049 | align-content: space-between !important; 1050 | } 1051 | 1052 | .align-content-around { 1053 | -ms-flex-line-pack: distribute !important; 1054 | align-content: space-around !important; 1055 | } 1056 | 1057 | .align-content-stretch { 1058 | -ms-flex-line-pack: stretch !important; 1059 | align-content: stretch !important; 1060 | } 1061 | 1062 | .align-self-auto { 1063 | -ms-flex-item-align: auto !important; 1064 | align-self: auto !important; 1065 | } 1066 | 1067 | .align-self-start { 1068 | -ms-flex-item-align: start !important; 1069 | align-self: flex-start !important; 1070 | } 1071 | 1072 | .align-self-end { 1073 | -ms-flex-item-align: end !important; 1074 | align-self: flex-end !important; 1075 | } 1076 | 1077 | .align-self-center { 1078 | -ms-flex-item-align: center !important; 1079 | align-self: center !important; 1080 | } 1081 | 1082 | .align-self-baseline { 1083 | -ms-flex-item-align: baseline !important; 1084 | align-self: baseline !important; 1085 | } 1086 | 1087 | .align-self-stretch { 1088 | -ms-flex-item-align: stretch !important; 1089 | align-self: stretch !important; 1090 | } 1091 | 1092 | @media (min-width: 576px) { 1093 | .flex-sm-row { 1094 | -ms-flex-direction: row !important; 1095 | flex-direction: row !important; 1096 | } 1097 | .flex-sm-column { 1098 | -ms-flex-direction: column !important; 1099 | flex-direction: column !important; 1100 | } 1101 | .flex-sm-row-reverse { 1102 | -ms-flex-direction: row-reverse !important; 1103 | flex-direction: row-reverse !important; 1104 | } 1105 | .flex-sm-column-reverse { 1106 | -ms-flex-direction: column-reverse !important; 1107 | flex-direction: column-reverse !important; 1108 | } 1109 | .flex-sm-wrap { 1110 | -ms-flex-wrap: wrap !important; 1111 | flex-wrap: wrap !important; 1112 | } 1113 | .flex-sm-nowrap { 1114 | -ms-flex-wrap: nowrap !important; 1115 | flex-wrap: nowrap !important; 1116 | } 1117 | .flex-sm-wrap-reverse { 1118 | -ms-flex-wrap: wrap-reverse !important; 1119 | flex-wrap: wrap-reverse !important; 1120 | } 1121 | .justify-content-sm-start { 1122 | -ms-flex-pack: start !important; 1123 | justify-content: flex-start !important; 1124 | } 1125 | .justify-content-sm-end { 1126 | -ms-flex-pack: end !important; 1127 | justify-content: flex-end !important; 1128 | } 1129 | .justify-content-sm-center { 1130 | -ms-flex-pack: center !important; 1131 | justify-content: center !important; 1132 | } 1133 | .justify-content-sm-between { 1134 | -ms-flex-pack: justify !important; 1135 | justify-content: space-between !important; 1136 | } 1137 | .justify-content-sm-around { 1138 | -ms-flex-pack: distribute !important; 1139 | justify-content: space-around !important; 1140 | } 1141 | .align-items-sm-start { 1142 | -ms-flex-align: start !important; 1143 | align-items: flex-start !important; 1144 | } 1145 | .align-items-sm-end { 1146 | -ms-flex-align: end !important; 1147 | align-items: flex-end !important; 1148 | } 1149 | .align-items-sm-center { 1150 | -ms-flex-align: center !important; 1151 | align-items: center !important; 1152 | } 1153 | .align-items-sm-baseline { 1154 | -ms-flex-align: baseline !important; 1155 | align-items: baseline !important; 1156 | } 1157 | .align-items-sm-stretch { 1158 | -ms-flex-align: stretch !important; 1159 | align-items: stretch !important; 1160 | } 1161 | .align-content-sm-start { 1162 | -ms-flex-line-pack: start !important; 1163 | align-content: flex-start !important; 1164 | } 1165 | .align-content-sm-end { 1166 | -ms-flex-line-pack: end !important; 1167 | align-content: flex-end !important; 1168 | } 1169 | .align-content-sm-center { 1170 | -ms-flex-line-pack: center !important; 1171 | align-content: center !important; 1172 | } 1173 | .align-content-sm-between { 1174 | -ms-flex-line-pack: justify !important; 1175 | align-content: space-between !important; 1176 | } 1177 | .align-content-sm-around { 1178 | -ms-flex-line-pack: distribute !important; 1179 | align-content: space-around !important; 1180 | } 1181 | .align-content-sm-stretch { 1182 | -ms-flex-line-pack: stretch !important; 1183 | align-content: stretch !important; 1184 | } 1185 | .align-self-sm-auto { 1186 | -ms-flex-item-align: auto !important; 1187 | align-self: auto !important; 1188 | } 1189 | .align-self-sm-start { 1190 | -ms-flex-item-align: start !important; 1191 | align-self: flex-start !important; 1192 | } 1193 | .align-self-sm-end { 1194 | -ms-flex-item-align: end !important; 1195 | align-self: flex-end !important; 1196 | } 1197 | .align-self-sm-center { 1198 | -ms-flex-item-align: center !important; 1199 | align-self: center !important; 1200 | } 1201 | .align-self-sm-baseline { 1202 | -ms-flex-item-align: baseline !important; 1203 | align-self: baseline !important; 1204 | } 1205 | .align-self-sm-stretch { 1206 | -ms-flex-item-align: stretch !important; 1207 | align-self: stretch !important; 1208 | } 1209 | } 1210 | 1211 | @media (min-width: 768px) { 1212 | .flex-md-row { 1213 | -ms-flex-direction: row !important; 1214 | flex-direction: row !important; 1215 | } 1216 | .flex-md-column { 1217 | -ms-flex-direction: column !important; 1218 | flex-direction: column !important; 1219 | } 1220 | .flex-md-row-reverse { 1221 | -ms-flex-direction: row-reverse !important; 1222 | flex-direction: row-reverse !important; 1223 | } 1224 | .flex-md-column-reverse { 1225 | -ms-flex-direction: column-reverse !important; 1226 | flex-direction: column-reverse !important; 1227 | } 1228 | .flex-md-wrap { 1229 | -ms-flex-wrap: wrap !important; 1230 | flex-wrap: wrap !important; 1231 | } 1232 | .flex-md-nowrap { 1233 | -ms-flex-wrap: nowrap !important; 1234 | flex-wrap: nowrap !important; 1235 | } 1236 | .flex-md-wrap-reverse { 1237 | -ms-flex-wrap: wrap-reverse !important; 1238 | flex-wrap: wrap-reverse !important; 1239 | } 1240 | .justify-content-md-start { 1241 | -ms-flex-pack: start !important; 1242 | justify-content: flex-start !important; 1243 | } 1244 | .justify-content-md-end { 1245 | -ms-flex-pack: end !important; 1246 | justify-content: flex-end !important; 1247 | } 1248 | .justify-content-md-center { 1249 | -ms-flex-pack: center !important; 1250 | justify-content: center !important; 1251 | } 1252 | .justify-content-md-between { 1253 | -ms-flex-pack: justify !important; 1254 | justify-content: space-between !important; 1255 | } 1256 | .justify-content-md-around { 1257 | -ms-flex-pack: distribute !important; 1258 | justify-content: space-around !important; 1259 | } 1260 | .align-items-md-start { 1261 | -ms-flex-align: start !important; 1262 | align-items: flex-start !important; 1263 | } 1264 | .align-items-md-end { 1265 | -ms-flex-align: end !important; 1266 | align-items: flex-end !important; 1267 | } 1268 | .align-items-md-center { 1269 | -ms-flex-align: center !important; 1270 | align-items: center !important; 1271 | } 1272 | .align-items-md-baseline { 1273 | -ms-flex-align: baseline !important; 1274 | align-items: baseline !important; 1275 | } 1276 | .align-items-md-stretch { 1277 | -ms-flex-align: stretch !important; 1278 | align-items: stretch !important; 1279 | } 1280 | .align-content-md-start { 1281 | -ms-flex-line-pack: start !important; 1282 | align-content: flex-start !important; 1283 | } 1284 | .align-content-md-end { 1285 | -ms-flex-line-pack: end !important; 1286 | align-content: flex-end !important; 1287 | } 1288 | .align-content-md-center { 1289 | -ms-flex-line-pack: center !important; 1290 | align-content: center !important; 1291 | } 1292 | .align-content-md-between { 1293 | -ms-flex-line-pack: justify !important; 1294 | align-content: space-between !important; 1295 | } 1296 | .align-content-md-around { 1297 | -ms-flex-line-pack: distribute !important; 1298 | align-content: space-around !important; 1299 | } 1300 | .align-content-md-stretch { 1301 | -ms-flex-line-pack: stretch !important; 1302 | align-content: stretch !important; 1303 | } 1304 | .align-self-md-auto { 1305 | -ms-flex-item-align: auto !important; 1306 | align-self: auto !important; 1307 | } 1308 | .align-self-md-start { 1309 | -ms-flex-item-align: start !important; 1310 | align-self: flex-start !important; 1311 | } 1312 | .align-self-md-end { 1313 | -ms-flex-item-align: end !important; 1314 | align-self: flex-end !important; 1315 | } 1316 | .align-self-md-center { 1317 | -ms-flex-item-align: center !important; 1318 | align-self: center !important; 1319 | } 1320 | .align-self-md-baseline { 1321 | -ms-flex-item-align: baseline !important; 1322 | align-self: baseline !important; 1323 | } 1324 | .align-self-md-stretch { 1325 | -ms-flex-item-align: stretch !important; 1326 | align-self: stretch !important; 1327 | } 1328 | } 1329 | 1330 | @media (min-width: 992px) { 1331 | .flex-lg-row { 1332 | -ms-flex-direction: row !important; 1333 | flex-direction: row !important; 1334 | } 1335 | .flex-lg-column { 1336 | -ms-flex-direction: column !important; 1337 | flex-direction: column !important; 1338 | } 1339 | .flex-lg-row-reverse { 1340 | -ms-flex-direction: row-reverse !important; 1341 | flex-direction: row-reverse !important; 1342 | } 1343 | .flex-lg-column-reverse { 1344 | -ms-flex-direction: column-reverse !important; 1345 | flex-direction: column-reverse !important; 1346 | } 1347 | .flex-lg-wrap { 1348 | -ms-flex-wrap: wrap !important; 1349 | flex-wrap: wrap !important; 1350 | } 1351 | .flex-lg-nowrap { 1352 | -ms-flex-wrap: nowrap !important; 1353 | flex-wrap: nowrap !important; 1354 | } 1355 | .flex-lg-wrap-reverse { 1356 | -ms-flex-wrap: wrap-reverse !important; 1357 | flex-wrap: wrap-reverse !important; 1358 | } 1359 | .justify-content-lg-start { 1360 | -ms-flex-pack: start !important; 1361 | justify-content: flex-start !important; 1362 | } 1363 | .justify-content-lg-end { 1364 | -ms-flex-pack: end !important; 1365 | justify-content: flex-end !important; 1366 | } 1367 | .justify-content-lg-center { 1368 | -ms-flex-pack: center !important; 1369 | justify-content: center !important; 1370 | } 1371 | .justify-content-lg-between { 1372 | -ms-flex-pack: justify !important; 1373 | justify-content: space-between !important; 1374 | } 1375 | .justify-content-lg-around { 1376 | -ms-flex-pack: distribute !important; 1377 | justify-content: space-around !important; 1378 | } 1379 | .align-items-lg-start { 1380 | -ms-flex-align: start !important; 1381 | align-items: flex-start !important; 1382 | } 1383 | .align-items-lg-end { 1384 | -ms-flex-align: end !important; 1385 | align-items: flex-end !important; 1386 | } 1387 | .align-items-lg-center { 1388 | -ms-flex-align: center !important; 1389 | align-items: center !important; 1390 | } 1391 | .align-items-lg-baseline { 1392 | -ms-flex-align: baseline !important; 1393 | align-items: baseline !important; 1394 | } 1395 | .align-items-lg-stretch { 1396 | -ms-flex-align: stretch !important; 1397 | align-items: stretch !important; 1398 | } 1399 | .align-content-lg-start { 1400 | -ms-flex-line-pack: start !important; 1401 | align-content: flex-start !important; 1402 | } 1403 | .align-content-lg-end { 1404 | -ms-flex-line-pack: end !important; 1405 | align-content: flex-end !important; 1406 | } 1407 | .align-content-lg-center { 1408 | -ms-flex-line-pack: center !important; 1409 | align-content: center !important; 1410 | } 1411 | .align-content-lg-between { 1412 | -ms-flex-line-pack: justify !important; 1413 | align-content: space-between !important; 1414 | } 1415 | .align-content-lg-around { 1416 | -ms-flex-line-pack: distribute !important; 1417 | align-content: space-around !important; 1418 | } 1419 | .align-content-lg-stretch { 1420 | -ms-flex-line-pack: stretch !important; 1421 | align-content: stretch !important; 1422 | } 1423 | .align-self-lg-auto { 1424 | -ms-flex-item-align: auto !important; 1425 | align-self: auto !important; 1426 | } 1427 | .align-self-lg-start { 1428 | -ms-flex-item-align: start !important; 1429 | align-self: flex-start !important; 1430 | } 1431 | .align-self-lg-end { 1432 | -ms-flex-item-align: end !important; 1433 | align-self: flex-end !important; 1434 | } 1435 | .align-self-lg-center { 1436 | -ms-flex-item-align: center !important; 1437 | align-self: center !important; 1438 | } 1439 | .align-self-lg-baseline { 1440 | -ms-flex-item-align: baseline !important; 1441 | align-self: baseline !important; 1442 | } 1443 | .align-self-lg-stretch { 1444 | -ms-flex-item-align: stretch !important; 1445 | align-self: stretch !important; 1446 | } 1447 | } 1448 | 1449 | @media (min-width: 1200px) { 1450 | .flex-xl-row { 1451 | -ms-flex-direction: row !important; 1452 | flex-direction: row !important; 1453 | } 1454 | .flex-xl-column { 1455 | -ms-flex-direction: column !important; 1456 | flex-direction: column !important; 1457 | } 1458 | .flex-xl-row-reverse { 1459 | -ms-flex-direction: row-reverse !important; 1460 | flex-direction: row-reverse !important; 1461 | } 1462 | .flex-xl-column-reverse { 1463 | -ms-flex-direction: column-reverse !important; 1464 | flex-direction: column-reverse !important; 1465 | } 1466 | .flex-xl-wrap { 1467 | -ms-flex-wrap: wrap !important; 1468 | flex-wrap: wrap !important; 1469 | } 1470 | .flex-xl-nowrap { 1471 | -ms-flex-wrap: nowrap !important; 1472 | flex-wrap: nowrap !important; 1473 | } 1474 | .flex-xl-wrap-reverse { 1475 | -ms-flex-wrap: wrap-reverse !important; 1476 | flex-wrap: wrap-reverse !important; 1477 | } 1478 | .justify-content-xl-start { 1479 | -ms-flex-pack: start !important; 1480 | justify-content: flex-start !important; 1481 | } 1482 | .justify-content-xl-end { 1483 | -ms-flex-pack: end !important; 1484 | justify-content: flex-end !important; 1485 | } 1486 | .justify-content-xl-center { 1487 | -ms-flex-pack: center !important; 1488 | justify-content: center !important; 1489 | } 1490 | .justify-content-xl-between { 1491 | -ms-flex-pack: justify !important; 1492 | justify-content: space-between !important; 1493 | } 1494 | .justify-content-xl-around { 1495 | -ms-flex-pack: distribute !important; 1496 | justify-content: space-around !important; 1497 | } 1498 | .align-items-xl-start { 1499 | -ms-flex-align: start !important; 1500 | align-items: flex-start !important; 1501 | } 1502 | .align-items-xl-end { 1503 | -ms-flex-align: end !important; 1504 | align-items: flex-end !important; 1505 | } 1506 | .align-items-xl-center { 1507 | -ms-flex-align: center !important; 1508 | align-items: center !important; 1509 | } 1510 | .align-items-xl-baseline { 1511 | -ms-flex-align: baseline !important; 1512 | align-items: baseline !important; 1513 | } 1514 | .align-items-xl-stretch { 1515 | -ms-flex-align: stretch !important; 1516 | align-items: stretch !important; 1517 | } 1518 | .align-content-xl-start { 1519 | -ms-flex-line-pack: start !important; 1520 | align-content: flex-start !important; 1521 | } 1522 | .align-content-xl-end { 1523 | -ms-flex-line-pack: end !important; 1524 | align-content: flex-end !important; 1525 | } 1526 | .align-content-xl-center { 1527 | -ms-flex-line-pack: center !important; 1528 | align-content: center !important; 1529 | } 1530 | .align-content-xl-between { 1531 | -ms-flex-line-pack: justify !important; 1532 | align-content: space-between !important; 1533 | } 1534 | .align-content-xl-around { 1535 | -ms-flex-line-pack: distribute !important; 1536 | align-content: space-around !important; 1537 | } 1538 | .align-content-xl-stretch { 1539 | -ms-flex-line-pack: stretch !important; 1540 | align-content: stretch !important; 1541 | } 1542 | .align-self-xl-auto { 1543 | -ms-flex-item-align: auto !important; 1544 | align-self: auto !important; 1545 | } 1546 | .align-self-xl-start { 1547 | -ms-flex-item-align: start !important; 1548 | align-self: flex-start !important; 1549 | } 1550 | .align-self-xl-end { 1551 | -ms-flex-item-align: end !important; 1552 | align-self: flex-end !important; 1553 | } 1554 | .align-self-xl-center { 1555 | -ms-flex-item-align: center !important; 1556 | align-self: center !important; 1557 | } 1558 | .align-self-xl-baseline { 1559 | -ms-flex-item-align: baseline !important; 1560 | align-self: baseline !important; 1561 | } 1562 | .align-self-xl-stretch { 1563 | -ms-flex-item-align: stretch !important; 1564 | align-self: stretch !important; 1565 | } 1566 | } 1567 | /*# sourceMappingURL=bootstrap-grid.css.map */ -------------------------------------------------------------------------------- /static/vendor/bootstrap/css/bootstrap-grid.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grid v4.0.0-beta.2 (https://getbootstrap.com) 3 | * Copyright 2011-2017 The Bootstrap Authors 4 | * Copyright 2011-2017 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | */@-ms-viewport{width:device-width}html{box-sizing:border-box;-ms-overflow-style:scrollbar}*,::after,::before{box-sizing:inherit}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.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-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.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-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.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-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}} 7 | /*# sourceMappingURL=bootstrap-grid.min.css.map */ -------------------------------------------------------------------------------- /static/vendor/bootstrap/css/bootstrap-reboot.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.0.0-beta.2 (https://getbootstrap.com) 3 | * Copyright 2011-2017 The Bootstrap Authors 4 | * Copyright 2011-2017 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | *, 9 | *::before, 10 | *::after { 11 | box-sizing: border-box; 12 | } 13 | 14 | html { 15 | font-family: sans-serif; 16 | line-height: 1.15; 17 | -webkit-text-size-adjust: 100%; 18 | -ms-text-size-adjust: 100%; 19 | -ms-overflow-style: scrollbar; 20 | -webkit-tap-highlight-color: transparent; 21 | } 22 | 23 | @-ms-viewport { 24 | width: device-width; 25 | } 26 | 27 | article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section { 28 | display: block; 29 | } 30 | 31 | body { 32 | margin: 0; 33 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; 34 | font-size: 1rem; 35 | font-weight: 400; 36 | line-height: 1.5; 37 | color: #212529; 38 | text-align: left; 39 | background-color: #fff; 40 | } 41 | 42 | [tabindex="-1"]:focus { 43 | outline: none !important; 44 | } 45 | 46 | hr { 47 | box-sizing: content-box; 48 | height: 0; 49 | overflow: visible; 50 | } 51 | 52 | h1, h2, h3, h4, h5, h6 { 53 | margin-top: 0; 54 | margin-bottom: 0.5rem; 55 | } 56 | 57 | p { 58 | margin-top: 0; 59 | margin-bottom: 1rem; 60 | } 61 | 62 | abbr[title], 63 | abbr[data-original-title] { 64 | text-decoration: underline; 65 | -webkit-text-decoration: underline dotted; 66 | text-decoration: underline dotted; 67 | cursor: help; 68 | border-bottom: 0; 69 | } 70 | 71 | address { 72 | margin-bottom: 1rem; 73 | font-style: normal; 74 | line-height: inherit; 75 | } 76 | 77 | ol, 78 | ul, 79 | dl { 80 | margin-top: 0; 81 | margin-bottom: 1rem; 82 | } 83 | 84 | ol ol, 85 | ul ul, 86 | ol ul, 87 | ul ol { 88 | margin-bottom: 0; 89 | } 90 | 91 | dt { 92 | font-weight: 700; 93 | } 94 | 95 | dd { 96 | margin-bottom: .5rem; 97 | margin-left: 0; 98 | } 99 | 100 | blockquote { 101 | margin: 0 0 1rem; 102 | } 103 | 104 | dfn { 105 | font-style: italic; 106 | } 107 | 108 | b, 109 | strong { 110 | font-weight: bolder; 111 | } 112 | 113 | small { 114 | font-size: 80%; 115 | } 116 | 117 | sub, 118 | sup { 119 | position: relative; 120 | font-size: 75%; 121 | line-height: 0; 122 | vertical-align: baseline; 123 | } 124 | 125 | sub { 126 | bottom: -.25em; 127 | } 128 | 129 | sup { 130 | top: -.5em; 131 | } 132 | 133 | a { 134 | color: #007bff; 135 | text-decoration: none; 136 | background-color: transparent; 137 | -webkit-text-decoration-skip: objects; 138 | } 139 | 140 | a:hover { 141 | color: #0056b3; 142 | text-decoration: underline; 143 | } 144 | 145 | a:not([href]):not([tabindex]) { 146 | color: inherit; 147 | text-decoration: none; 148 | } 149 | 150 | a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover { 151 | color: inherit; 152 | text-decoration: none; 153 | } 154 | 155 | a:not([href]):not([tabindex]):focus { 156 | outline: 0; 157 | } 158 | 159 | pre, 160 | code, 161 | kbd, 162 | samp { 163 | font-family: monospace, monospace; 164 | font-size: 1em; 165 | } 166 | 167 | pre { 168 | margin-top: 0; 169 | margin-bottom: 1rem; 170 | overflow: auto; 171 | -ms-overflow-style: scrollbar; 172 | } 173 | 174 | figure { 175 | margin: 0 0 1rem; 176 | } 177 | 178 | img { 179 | vertical-align: middle; 180 | border-style: none; 181 | } 182 | 183 | svg:not(:root) { 184 | overflow: hidden; 185 | } 186 | 187 | a, 188 | area, 189 | button, 190 | [role="button"], 191 | input:not([type="range"]), 192 | label, 193 | select, 194 | summary, 195 | textarea { 196 | -ms-touch-action: manipulation; 197 | touch-action: manipulation; 198 | } 199 | 200 | table { 201 | border-collapse: collapse; 202 | } 203 | 204 | caption { 205 | padding-top: 0.75rem; 206 | padding-bottom: 0.75rem; 207 | color: #868e96; 208 | text-align: left; 209 | caption-side: bottom; 210 | } 211 | 212 | th { 213 | text-align: inherit; 214 | } 215 | 216 | label { 217 | display: inline-block; 218 | margin-bottom: .5rem; 219 | } 220 | 221 | button { 222 | border-radius: 0; 223 | } 224 | 225 | button:focus { 226 | outline: 1px dotted; 227 | outline: 5px auto -webkit-focus-ring-color; 228 | } 229 | 230 | input, 231 | button, 232 | select, 233 | optgroup, 234 | textarea { 235 | margin: 0; 236 | font-family: inherit; 237 | font-size: inherit; 238 | line-height: inherit; 239 | } 240 | 241 | button, 242 | input { 243 | overflow: visible; 244 | } 245 | 246 | button, 247 | select { 248 | text-transform: none; 249 | } 250 | 251 | button, 252 | html [type="button"], 253 | [type="reset"], 254 | [type="submit"] { 255 | -webkit-appearance: button; 256 | } 257 | 258 | button::-moz-focus-inner, 259 | [type="button"]::-moz-focus-inner, 260 | [type="reset"]::-moz-focus-inner, 261 | [type="submit"]::-moz-focus-inner { 262 | padding: 0; 263 | border-style: none; 264 | } 265 | 266 | input[type="radio"], 267 | input[type="checkbox"] { 268 | box-sizing: border-box; 269 | padding: 0; 270 | } 271 | 272 | input[type="date"], 273 | input[type="time"], 274 | input[type="datetime-local"], 275 | input[type="month"] { 276 | -webkit-appearance: listbox; 277 | } 278 | 279 | textarea { 280 | overflow: auto; 281 | resize: vertical; 282 | } 283 | 284 | fieldset { 285 | min-width: 0; 286 | padding: 0; 287 | margin: 0; 288 | border: 0; 289 | } 290 | 291 | legend { 292 | display: block; 293 | width: 100%; 294 | max-width: 100%; 295 | padding: 0; 296 | margin-bottom: .5rem; 297 | font-size: 1.5rem; 298 | line-height: inherit; 299 | color: inherit; 300 | white-space: normal; 301 | } 302 | 303 | progress { 304 | vertical-align: baseline; 305 | } 306 | 307 | [type="number"]::-webkit-inner-spin-button, 308 | [type="number"]::-webkit-outer-spin-button { 309 | height: auto; 310 | } 311 | 312 | [type="search"] { 313 | outline-offset: -2px; 314 | -webkit-appearance: none; 315 | } 316 | 317 | [type="search"]::-webkit-search-cancel-button, 318 | [type="search"]::-webkit-search-decoration { 319 | -webkit-appearance: none; 320 | } 321 | 322 | ::-webkit-file-upload-button { 323 | font: inherit; 324 | -webkit-appearance: button; 325 | } 326 | 327 | output { 328 | display: inline-block; 329 | } 330 | 331 | summary { 332 | display: list-item; 333 | } 334 | 335 | template { 336 | display: none; 337 | } 338 | 339 | [hidden] { 340 | display: none !important; 341 | } 342 | /*# sourceMappingURL=bootstrap-reboot.css.map */ -------------------------------------------------------------------------------- /static/vendor/bootstrap/css/bootstrap-reboot.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.0.0-beta.2 (https://getbootstrap.com) 3 | * Copyright 2011-2017 The Bootstrap Authors 4 | * Copyright 2011-2017 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#868e96;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important} 8 | /*# sourceMappingURL=bootstrap-reboot.min.css.map */ -------------------------------------------------------------------------------- /static/vendor/bootstrap/js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v4.1.1 (https://getbootstrap.com/) 3 | * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e(t.bootstrap={},t.jQuery,t.Popper)}(this,function(t,e,c){"use strict";function i(t,e){for(var n=0;nthis._items.length-1||t<0))if(this._isSliding)P(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=ndocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:"hover focus",title:"",delay:0,html:!(_e={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"}),selector:!(de={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)"}),placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},pe="out",ve={HIDE:"hide"+he,HIDDEN:"hidden"+he,SHOW:(me="show")+he,SHOWN:"shown"+he,INSERTED:"inserted"+he,CLICK:"click"+he,FOCUSIN:"focusin"+he,FOCUSOUT:"focusout"+he,MOUSEENTER:"mouseenter"+he,MOUSELEAVE:"mouseleave"+he},Ee="fade",ye="show",Te=".tooltip-inner",Ce=".arrow",Ie="hover",Ae="focus",De="click",be="manual",Se=function(){function i(t,e){if("undefined"==typeof c)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=oe(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),oe(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(oe(this.getTipElement()).hasClass(ye))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),oe.removeData(this.element,this.constructor.DATA_KEY),oe(this.element).off(this.constructor.EVENT_KEY),oe(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&oe(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===oe(this.element).css("display"))throw new Error("Please use show on visible elements");var t=oe.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){oe(this.element).trigger(t);var n=oe.contains(this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!n)return;var i=this.getTipElement(),r=Cn.getUID(this.constructor.NAME);i.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&oe(i).addClass(Ee);var s="function"==typeof this.config.placement?this.config.placement.call(this,i,this.element):this.config.placement,o=this._getAttachment(s);this.addAttachmentClass(o);var a=!1===this.config.container?document.body:oe(this.config.container);oe(i).data(this.constructor.DATA_KEY,this),oe.contains(this.element.ownerDocument.documentElement,this.tip)||oe(i).appendTo(a),oe(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new c(this.element,i,{placement:o,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:Ce},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),oe(i).addClass(ye),"ontouchstart"in document.documentElement&&oe(document.body).children().on("mouseover",null,oe.noop);var l=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,oe(e.element).trigger(e.constructor.Event.SHOWN),t===pe&&e._leave(null,e)};if(oe(this.tip).hasClass(Ee)){var h=Cn.getTransitionDurationFromElement(this.tip);oe(this.tip).one(Cn.TRANSITION_END,l).emulateTransitionEnd(h)}else l()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=oe.Event(this.constructor.Event.HIDE),r=function(){e._hoverState!==me&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),oe(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(oe(this.element).trigger(i),!i.isDefaultPrevented()){if(oe(n).removeClass(ye),"ontouchstart"in document.documentElement&&oe(document.body).children().off("mouseover",null,oe.noop),this._activeTrigger[De]=!1,this._activeTrigger[Ae]=!1,this._activeTrigger[Ie]=!1,oe(this.tip).hasClass(Ee)){var s=Cn.getTransitionDurationFromElement(n);oe(n).one(Cn.TRANSITION_END,r).emulateTransitionEnd(s)}else r();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){oe(this.getTipElement()).addClass(ue+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||oe(this.config.template)[0],this.tip},t.setContent=function(){var t=oe(this.getTipElement());this.setElementContent(t.find(Te),this.getTitle()),t.removeClass(Ee+" "+ye)},t.setElementContent=function(t,e){var n=this.config.html;"object"==typeof e&&(e.nodeType||e.jquery)?n?oe(e).parent().is(t)||t.empty().append(e):t.text(oe(e).text()):t[n?"html":"text"](e)},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getAttachment=function(t){return _e[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)oe(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==be){var e=t===Ie?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Ie?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;oe(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}oe(i.element).closest(".modal").on("hide.bs.modal",function(){return i.hide()})}),this.config.selector?this.config=h({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||oe(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),oe(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Ae:Ie]=!0),oe(e.getTipElement()).hasClass(ye)||e._hoverState===me?e._hoverState=me:(clearTimeout(e._timeout),e._hoverState=me,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===me&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||oe(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),oe(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Ae:Ie]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=pe,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===pe&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){return"number"==typeof(t=h({},this.constructor.Default,oe(this.element).data(),"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),Cn.typeCheckConfig(ae,t,this.constructor.DefaultType),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=oe(this.getTipElement()),e=t.attr("class").match(fe);null!==e&&0

'}),He=h({},Nn.DefaultType,{content:"(string|element|function)"}),We="fade",xe=".popover-header",Ue=".popover-body",Ke={HIDE:"hide"+ke,HIDDEN:"hidden"+ke,SHOW:(Me="show")+ke,SHOWN:"shown"+ke,INSERTED:"inserted"+ke,CLICK:"click"+ke,FOCUSIN:"focusin"+ke,FOCUSOUT:"focusout"+ke,MOUSEENTER:"mouseenter"+ke,MOUSELEAVE:"mouseleave"+ke},Fe=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var r=i.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(t){we(this.getTipElement()).addClass(Le+"-"+t)},r.getTipElement=function(){return this.tip=this.tip||we(this.config.template)[0],this.tip},r.setContent=function(){var t=we(this.getTipElement());this.setElementContent(t.find(xe),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(Ue),e),t.removeClass(We+" "+Me)},r._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},r._cleanTipClass=function(){var t=we(this.getTipElement()),e=t.attr("class").match(je);null!==e&&0=this._offsets[r]&&("undefined"==typeof this._offsets[r+1]||t=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,u,s,l,c,f,d,p,h,g,v,y,m,b,x="sizzle"+1*new Date,w=e.document,C=0,T=0,E=ae(),N=ae(),k=ae(),A=function(e,t){return e===t&&(f=!0),0},D={}.hasOwnProperty,S=[],L=S.pop,j=S.push,q=S.push,O=S.slice,P=function(e,t){for(var n=0,r=e.length;n+~]|"+I+")"+I+"*"),_=new RegExp("="+I+"*([^\\]'\"]*?)"+I+"*\\]","g"),U=new RegExp(M),V=new RegExp("^"+R+"$"),X={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+B),PSEUDO:new RegExp("^"+M),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+I+"*(even|odd|(([+-]|)(\\d*)n|)"+I+"*(?:([+-]|)"+I+"*(\\d+)|))"+I+"*\\)|)","i"),bool:new RegExp("^(?:"+H+")$","i"),needsContext:new RegExp("^"+I+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+I+"*((?:-\\d)?\\d*)"+I+"*\\)|)(?=[^-]|$)","i")},Q=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,G=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,J=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+I+"?|("+I+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){d()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{q.apply(S=O.call(w.childNodes),w.childNodes),S[w.childNodes.length].nodeType}catch(e){q={apply:S.length?function(e,t){j.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,u,l,c,f,h,y,m=t&&t.ownerDocument,C=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==C&&9!==C&&11!==C)return r;if(!i&&((t?t.ownerDocument||t:w)!==p&&d(t),t=t||p,g)){if(11!==C&&(f=K.exec(e)))if(o=f[1]){if(9===C){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&b(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return q.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return q.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!k[e+" "]&&(!v||!v.test(e))){if(1!==C)m=t,y=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=x),u=(h=a(e)).length;while(u--)h[u]="#"+c+" "+ye(h[u]);y=h.join(","),m=J.test(e)&&ge(t.parentNode)||t}if(y)try{return q.apply(r,m.querySelectorAll(y)),r}catch(e){}finally{c===x&&t.removeAttribute("id")}}}return s(e.replace($,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function ue(e){return e[x]=!0,e}function se(e){var t=p.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function de(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pe(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return ue(function(t){return t=+t,ue(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},d=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==p&&9===a.nodeType&&a.documentElement?(p=a,h=p.documentElement,g=!o(p),w!==p&&(i=p.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=se(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=se(function(e){return e.appendChild(p.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=G.test(p.getElementsByClassName),n.getById=se(function(e){return h.appendChild(e).id=x,!p.getElementsByName||!p.getElementsByName(x).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],v=[],(n.qsa=G.test(p.querySelectorAll))&&(se(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+I+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+I+"*(?:value|"+H+")"),e.querySelectorAll("[id~="+x+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+x+"+*").length||v.push(".#.+[+~]")}),se(function(e){e.innerHTML="";var t=p.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+I+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(n.matchesSelector=G.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&se(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),y.push("!=",M)}),v=v.length&&new RegExp(v.join("|")),y=y.length&&new RegExp(y.join("|")),t=G.test(h.compareDocumentPosition),b=t||G.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===p||e.ownerDocument===w&&b(w,e)?-1:t===p||t.ownerDocument===w&&b(w,t)?1:c?P(c,e)-P(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],u=[t];if(!i||!o)return e===p?-1:t===p?1:i?-1:o?1:c?P(c,e)-P(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)u.unshift(n);while(a[r]===u[r])r++;return r?ce(a[r],u[r]):a[r]===w?-1:u[r]===w?1:0},p):p},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&d(e),t=t.replace(_,"='$1']"),n.matchesSelector&&g&&!k[t+" "]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,p,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==p&&d(e),b(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==p&&d(e);var i=r.attrHandle[t.toLowerCase()],o=i&&D.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(A),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:ue,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return X.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&U.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+I+")"+e+"("+I+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace(W," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),u="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,s){var l,c,f,d,p,h,g=o!==a?"nextSibling":"previousSibling",v=t.parentNode,y=u&&t.nodeName.toLowerCase(),m=!s&&!u,b=!1;if(v){if(o){while(g){d=t;while(d=d[g])if(u?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&m){b=(p=(l=(c=(f=(d=v)[x]||(d[x]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===C&&l[1])&&l[2],d=p&&v.childNodes[p];while(d=++p&&d&&d[g]||(b=p=0)||h.pop())if(1===d.nodeType&&++b&&d===t){c[e]=[C,p,b];break}}else if(m&&(b=p=(l=(c=(f=(d=t)[x]||(d[x]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===C&&l[1]),!1===b)while(d=++p&&d&&d[g]||(b=p=0)||h.pop())if((u?d.nodeName.toLowerCase()===y:1===d.nodeType)&&++b&&(m&&((c=(f=d[x]||(d[x]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]=[C,b]),d===t))break;return(b-=i)===r||b%r==0&&b/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[x]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?ue(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=P(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:ue(function(e){var t=[],n=[],r=u(e.replace($,"$1"));return r[x]?ue(function(e,t,n,i){var o,a=r(e,null,i,[]),u=e.length;while(u--)(o=a[u])&&(e[u]=!(t[u]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:ue(function(e){return function(t){return oe(e,t).length>0}}),contains:ue(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:ue(function(e){return V.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:pe(!1),disabled:pe(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xe(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else y=we(y===a?y.splice(h,y.length):y),i?i(null,a,y,s):q.apply(a,y)})}function Te(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],u=a||r.relative[" "],s=a?1:0,c=me(function(e){return e===t},u,!0),f=me(function(e){return P(t,e)>-1},u,!0),d=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];s1&&be(d),s>1&&ye(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),n,s0,i=e.length>0,o=function(o,a,u,s,c){var f,h,v,y=0,m="0",b=o&&[],x=[],w=l,T=o||i&&r.find.TAG("*",c),E=C+=null==w?1:Math.random()||.1,N=T.length;for(c&&(l=a===p||a||c);m!==N&&null!=(f=T[m]);m++){if(i&&f){h=0,a||f.ownerDocument===p||(d(f),u=!g);while(v=e[h++])if(v(f,a||p,u)){s.push(f);break}c&&(C=E)}n&&((f=!v&&f)&&y--,o&&b.push(f))}if(y+=m,n&&m!==y){h=0;while(v=t[h++])v(b,x,a,u);if(o){if(y>0)while(m--)b[m]||x[m]||(x[m]=L.call(s));x=we(x)}q.apply(s,x),c&&!o&&x.length>0&&y+t.length>1&&oe.uniqueSort(s)}return c&&(C=E,l=w),b};return n?ue(o):o}return u=oe.compile=function(e,t){var n,r=[],i=[],o=k[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Te(t[n]))[x]?r.push(o):i.push(o);(o=k(e,Ee(i,r))).selector=e}return o},s=oe.select=function(e,t,n,i){var o,s,l,c,f,d="function"==typeof e&&e,p=!i&&a(e=d.selector||e);if(n=n||[],1===p.length){if((s=p[0]=p[0].slice(0)).length>2&&"ID"===(l=s[0]).type&&9===t.nodeType&&g&&r.relative[s[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;d&&(t=t.parentNode),e=e.slice(s.shift().value.length)}o=X.needsContext.test(e)?0:s.length;while(o--){if(l=s[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),J.test(s[0].type)&&ge(t.parentNode)||t))){if(s.splice(o,1),!(e=i.length&&ye(s)))return q.apply(n,i),n;break}}}return(d||u(e,p))(i,t,!g,n,!t||J.test(e)&&ge(t.parentNode)||t),n},n.sortStable=x.split("").sort(A).join("")===x,n.detectDuplicates=!!f,d(),n.sortDetached=se(function(e){return 1&e.compareDocumentPosition(p.createElement("fieldset"))}),se(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&se(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),se(function(e){return null==e.getAttribute("disabled")})||le(H,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var N=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},k=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},A=w.expr.match.needsContext;function D(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var S=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function L(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return s.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(L(this,e||[],!1))},not:function(e){return this.pushStack(L(this,e||[],!0))},is:function(e){return!!L(this,"string"==typeof e&&A.test(e)?w(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:q.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),S.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,j=w(r);var O=/^(?:parents|prev(?:Until|All))/,P={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?s.call(w(e),this[0]):s.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function H(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return N(e,"parentNode")},parentsUntil:function(e,t,n){return N(e,"parentNode",n)},next:function(e){return H(e,"nextSibling")},prev:function(e){return H(e,"previousSibling")},nextAll:function(e){return N(e,"nextSibling")},prevAll:function(e){return N(e,"previousSibling")},nextUntil:function(e,t,n){return N(e,"nextSibling",n)},prevUntil:function(e,t,n){return N(e,"previousSibling",n)},siblings:function(e){return k((e.parentNode||{}).firstChild,e)},children:function(e){return k(e.firstChild)},contents:function(e){return D(e,"iframe")?e.contentDocument:(D(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(P[e]||w.uniqueSort(i),O.test(e)&&i.reverse()),this.pushStack(i)}});var I=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(I)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],u=-1,s=function(){for(i=i||e.once,r=t=!0;a.length;u=-1){n=a.shift();while(++u-1)o.splice(n,1),n<=u&&u--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||s()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function B(e){return e}function M(e){throw e}function W(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var u=this,s=arguments,l=function(){var e,l;if(!(t=o&&(r!==M&&(u=void 0,s=[e]),n.rejectWith(u,s))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:B,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:B)),n[2][3].add(a(0,e,g(r)?r:M))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],u=t[5];i[t[1]]=a.add,u&&a.add(function(){r=u},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),u=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&(W(e,a.done(u(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)W(i[n],u(n),a.reject);return a.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&$.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function z(){r.removeEventListener("DOMContentLoaded",z),e.removeEventListener("load",z),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",z),e.addEventListener("load",z));var _=function(e,t,n,r,i,o,a){var u=0,s=e.length,l=null==n;if("object"===b(n)){i=!0;for(u in n)_(e,t,u,n[u],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;u1,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=K.get(e,t),n&&(!r||Array.isArray(n)?r=K.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return K.get(e,n)||K.access(e,n,{empty:w.Callbacks("once memory").add(function(){K.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&D(e,t)?w.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var xe=r.documentElement,we=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function Ne(){return!1}function ke(){try{return r.activeElement}catch(e){}}function Ae(e,t,n,r,i,o){var a,u;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(u in t)Ae(e,u,n,r,t[u],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ne;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,u,s,l,c,f,d,p,h,g,v=K.get(e);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(xe,i),n.guid||(n.guid=w.guid++),(s=v.events)||(s=v.events={}),(a=v.handle)||(a=v.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(I)||[""]).length;while(l--)p=g=(u=Te.exec(t[l])||[])[1],h=(u[2]||"").split(".").sort(),p&&(f=w.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=w.event.special[p]||{},c=w.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=s[p])||((d=s[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(p,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),w.event.global[p]=!0)}},remove:function(e,t,n,r,i){var o,a,u,s,l,c,f,d,p,h,g,v=K.hasData(e)&&K.get(e);if(v&&(s=v.events)){l=(t=(t||"").match(I)||[""]).length;while(l--)if(u=Te.exec(t[l])||[],p=g=u[1],h=(u[2]||"").split(".").sort(),p){f=w.event.special[p]||{},d=s[p=(r?f.delegateType:f.bindType)||p]||[],u=u[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;while(o--)c=d[o],!i&&g!==c.origType||n&&n.guid!==c.guid||u&&!u.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||w.removeEvent(e,p,v.handle),delete s[p])}else for(p in s)w.event.remove(e,p+t[l],n,r,!0);w.isEmptyObject(s)&&K.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,u,s=new Array(arguments.length),l=(K.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(s[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&u.push({elem:l,handlers:o})}return l=this,s\x20\t\r\n\f]*)[^>]*)\/>/gi,Se=/\s*$/g;function qe(e,t){return D(e,"table")&&D(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function Oe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Pe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function He(e,t){var n,r,i,o,a,u,s,l;if(1===t.nodeType){if(K.hasData(e)&&(o=K.access(e),a=K.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof v&&!h.checkClone&&Le.test(v))return e.each(function(i){var o=e.eq(i);y&&(t[0]=v.call(this,i,o.html())),Re(o,t,n,r)});if(d&&(i=be(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=(u=w.map(ve(i,"script"),Oe)).length;f")},clone:function(e,t,n){var r,i,o,a,u=e.cloneNode(!0),s=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ve(u),r=0,i=(o=ve(e)).length;r0&&ye(a,!s&&ve(e,"script")),u},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[K.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[K.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return _(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Se.test(e)&&!ge[(pe.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(s+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-s-u-.5))),s}function et(e,t,n){var r=We(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(Me.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,u=Q(t),s=Ue.test(t),l=e.style;if(s||(t=Ke(u)),a=w.cssHooks[t]||w.cssHooks[u],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[u]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(s?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,u=Q(t);return Ue.test(t)||(t=Ke(u)),(a=w.cssHooks[t]||w.cssHooks[u])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Xe&&(i=Xe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!_e.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):ue(e,Ve,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=We(e),a="border-box"===w.css(e,"boxSizing",!1,o),u=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(u-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),u&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Je(e,n,u)}}}),w.cssHooks.marginLeft=ze(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Je)}),w.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=We(e),i=t.length;a1)}}),w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var tt,nt=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return _(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?tt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&D(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(I);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),tt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=nt[t]||w.find.attr;nt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=nt[a],nt[a]=i,i=null!=n(e,t,r)?a:null,nt[a]=o),i}});var rt=/^(?:input|select|textarea|button)$/i,it=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return _(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):rt.test(e.nodeName)||it.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function ot(e){return(e.match(I)||[]).join(" ")}function at(e){return e.getAttribute&&e.getAttribute("class")||""}function ut(e){return Array.isArray(e)?e:"string"==typeof e?e.match(I)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,u,s=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,at(this)))});if((t=ut(e)).length)while(n=this[s++])if(i=at(n),r=1===n.nodeType&&" "+ot(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(u=ot(r))&&n.setAttribute("class",u)}return this},removeClass:function(e){var t,n,r,i,o,a,u,s=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,at(this)))});if(!arguments.length)return this.attr("class","");if((t=ut(e)).length)while(n=this[s++])if(i=at(n),r=1===n.nodeType&&" "+ot(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(u=ot(r))&&n.setAttribute("class",u)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,at(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=ut(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=at(this))&&K.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":K.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+ot(at(n))+" ").indexOf(t)>-1)return!0;return!1}});var st=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(st,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:ot(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,u=a?null:[],s=a?o+1:i.length;for(r=o<0?s:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var lt=/^(?:focusinfocus|focusoutblur)$/,ct=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,u,s,l,c,d,p,h,y=[i||r],m=f.call(t,"type")?t.type:t,b=f.call(t,"namespace")?t.namespace.split("."):[];if(u=h=s=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!lt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(b=m.split(".")).shift(),b.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=b.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),p=w.event.special[m]||{},o||!p.trigger||!1!==p.trigger.apply(i,n))){if(!o&&!p.noBubble&&!v(i)){for(l=p.delegateType||m,lt.test(l+m)||(u=u.parentNode);u;u=u.parentNode)y.push(u),s=u;s===(i.ownerDocument||r)&&y.push(s.defaultView||s.parentWindow||e)}a=0;while((u=y[a++])&&!t.isPropagationStopped())h=u,t.type=a>1?l:p.bindType||m,(d=(K.get(u,"events")||{})[t.type]&&K.get(u,"handle"))&&d.apply(u,n),(d=c&&u[c])&&d.apply&&Y(u)&&(t.result=d.apply(u,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||p._default&&!1!==p._default.apply(y.pop(),n)||!Y(i)||c&&g(i[m])&&!v(i)&&((s=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,ct),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,ct),w.event.triggered=void 0,s&&(i[c]=s)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=K.access(r,t);i||r.addEventListener(e,n,!0),K.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=K.access(r,t)-1;i?K.access(r,t,i):(r.removeEventListener(e,n,!0),K.remove(r,t))}}});var ft=/\[\]$/,dt=/\r?\n/g,pt=/^(?:submit|button|image|reset|file)$/i,ht=/^(?:input|select|textarea|keygen)/i;function gt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||ft.test(e)?r(e,i):gt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==b(t))r(e,t);else for(i in t)gt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)gt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&ht.test(this.nodeName)&&!pt.test(e)&&(this.checked||!de.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(dt,"\r\n")}}):{name:t.name,value:n.replace(dt,"\r\n")}}).get()}}),w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="
",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=S.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=be([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.offset={setOffset:function(e,t,n){var r,i,o,a,u,s,l,c=w.css(e,"position"),f=w(e),d={};"static"===c&&(e.style.position="relative"),u=f.offset(),o=w.css(e,"top"),s=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+s).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(s)||0),g(t)&&(t=t.call(e,n,w.extend({},u))),null!=t.top&&(d.top=t.top-u.top+a),null!=t.left&&(d.left=t.left-u.left+i),"using"in t?t.using.call(e,d):f.css(d)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||xe})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return _(this,function(e,r,i){var o;if(v(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=ze(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),Me.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),u=n||(!0===i||!0===o?"margin":"border");return _(this,function(t,n,i){var o;return v(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,u):w.style(t,n,i,u)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=D,w.isFunction=g,w.isWindow=v,w.camelCase=Q,w.type=b,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var vt=e.jQuery,yt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=yt),t&&e.jQuery===w&&(e.jQuery=vt),w},t||(e.jQuery=e.$=w),w}); 3 | -------------------------------------------------------------------------------- /static/video.avi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shangeth/Computer-Vision-Security-System/a0a320f4c9531409bc61c4401f14cd165d289b23/static/video.avi -------------------------------------------------------------------------------- /templates/add_face.html: -------------------------------------------------------------------------------- 1 | {% extends "index2.html" %} 2 | {% block content%} 3 |
4 | 5 | 6 |

Added New Visitor {{ name }} , {{ age }}, {{ sex }}

7 |

Add the visitor's face to the database

8 | 9 | 15 | 16 |
17 | Add Face 18 |
19 | {% endblock %} -------------------------------------------------------------------------------- /templates/add_visitor.html: -------------------------------------------------------------------------------- 1 | {% extends "index2.html" %} 2 | {% block content%} 3 |
4 |
5 | 6 |
7 |

Enter the Visitor Details:

8 |
9 | 10 | 11 |
12 |
13 | 14 | 15 |
16 | 17 |
18 | 19 | 20 |
21 | 22 | 23 |

24 | 25 |
26 |
27 |
28 | 29 | 30 | {% endblock %} -------------------------------------------------------------------------------- /templates/home.html: -------------------------------------------------------------------------------- 1 | {% extends "index2.html" %} 2 | {% block content%} 3 |
4 | 5 |
6 | 7 |
8 |
9 |

Admin Page : Streaming Live

10 |
11 | 12 | 13 | 14 | 15 |
16 | 17 |
18 |
19 | 20 | 21 |
22 |
23 |

Admin Entrance Log

24 |
    25 | {% for log in logs %} 26 |
  1.  {{ log[1] }}     {{ log[2] }}  
  2. 27 | {% endfor %} 28 |
29 |
30 |
31 | 32 | 33 |
34 | 35 |
36 | {% endblock %} -------------------------------------------------------------------------------- /templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Streaming Video Recorder 5 | 6 | 7 |

Streaming Video Recorder

8 |
9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /templates/index2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Computer Vision 13 | 14 | 15 | 16 | 17 | 37 | 38 | 39 |
40 | 41 | {% block content %} 42 | {% endblock %} 43 | 44 | 45 | 46 |
47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /templates/success.html: -------------------------------------------------------------------------------- 1 | {% extends "index2.html" %} 2 | {% block content%} 3 |
4 |

Visitor added succesfully!!

5 |

Check the Visitors List Here

6 | 7 |
8 | {% endblock %} -------------------------------------------------------------------------------- /templates/visitors_list.html: -------------------------------------------------------------------------------- 1 | {% extends "index2.html" %} 2 | {% block content%} 3 |
4 | 5 |

Permitted Visitors list

6 |
    7 | {% for visitor in visitors %} 8 |
  1. {{ visitor[1] }} {{ visitor[2] }} {{ visitor[3] }}
  2. 9 | {% endfor %} 10 |
11 | 12 |
13 | 14 | {% endblock %} --------------------------------------------------------------------------------