From 1f1f265ace7d7bb239c39a17da87d7ddf51331ff Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 11 Mar 2017 14:11:18 +0330
Subject: [PATCH 001/104] first site upload

---
 AUTHORS.md               |   4 -
 LICENSE                  |  21 --
 README.md                | 202 --------------
 index.html               | 166 +++++++++++
 orangetool.jpg           | Bin 0 -> 160669 bytes
 orangetool/__init__.py   |   1 -
 orangetool/orangetool.py | 587 ---------------------------------------
 requirements.txt         |   5 -
 setup.py                 |  15 -
 9 files changed, 166 insertions(+), 835 deletions(-)
 delete mode 100644 AUTHORS.md
 delete mode 100644 LICENSE
 delete mode 100644 README.md
 create mode 100644 index.html
 create mode 100644 orangetool.jpg
 delete mode 100644 orangetool/__init__.py
 delete mode 100644 orangetool/orangetool.py
 delete mode 100644 requirements.txt
 delete mode 100644 setup.py

diff --git a/AUTHORS.md b/AUTHORS.md
deleted file mode 100644
index 2d2081c..0000000
--- a/AUTHORS.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# Core Developers #
-
-----------
-- Sepand Haghighi - Sharif University of Technology - ([http://github.com/sepandhaghighi](http://github.com/sepandhaghighi)) ([sepand@qpage.ir](mailto:sepand@qpage.ir))
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 42b5d7c..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2017 Moduland Co
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/README.md b/README.md
deleted file mode 100644
index 3719a9d..0000000
--- a/README.md
+++ /dev/null
@@ -1,202 +0,0 @@
-<div align="center">
-<img src="http://www.shaghighi.ir/photos/orangetool.jpg" height=240px width=320px>
-
-</br>
-<a href="https://scrutinizer-ci.com/g/Moduland/Orangetool/?branch=master"><img src="https://scrutinizer-ci.com/g/Moduland/Orangetool/badges/quality-score.png?b=master"></a>
-<a href="https://scrutinizer-ci.com/g/Moduland/Orangetool/build-status/master"><img src="https://scrutinizer-ci.com/g/Moduland/Orangetool/badges/build.png?b=master"></a>
-<a href="http://www.python.org"><img src="https://img.shields.io/badge/python-3.3%2C3.4%2C3.5%2C3.6-blue.svg"></a>
-<a href="https://badge.fury.io/py/orangetool"><img src="https://badge.fury.io/py/orangetool.svg"></a>
-
-</div>
-
-----------
-
-
-# Orangetool
-	
-Consist of some general and useful scripts that developed for Single-Board Computers (Under Development)					
-
-Tested on Lubuntu 14.04 - Orange Pi-PC
-
-----------
-	
-By [Moduland Co](http://www.moduland.ir)		
-
-----------
-
-- [IP Functions](#ip-functions)
-- [RAM Functions](#ram-functions)
-- [Storage Functions](#storage-functions)	
-- [Display Functions](#display-functions)	
-- [Other Functions](#other-functions)
-- [Issues & Bug Reports](#issues--bug-reports)
-- [Contribution](#contribution)
-- [Authors](https://github.com/Moduland/Orangetool/blob/master/AUTHORS.md)
-- [License](#license)
-</hr>
-</hr>
-
-## Download ##
-
-- [Download](https://github.com/Moduland/Orangetool/archive/master.zip) source from github
-
-## IP Functions
-
-```python
-import orangetool
-
-#1- local_ip
-
-local_ip=orangetool.local_ip() # this function return local ip of board as string
-
-#2- global_ip
-
-global_ip=orangetool.global_ip() # this function return global ip of board as string
-
-#3- internet 
-
-status=orangetool.internet() #this function check internet connection and return True if internet connection is stable
-
-#4- ping
-
-ip_status=orangetool.ping(ip_address) #this function check ip and return True if this ip is available in network and False otherwise
-
-#5- set_ip
-
-set_ip("192.168.1.46","eth0")  #this function set static ip for system
-
-
-
-```
-
-## RAM Functions		
-
-```python
- 
-#6- total ram
-
-ram=orangetool.ram_total() #this function return total ram of the board
-
-#7- free ram
-
-ram=orangetool.ram_free() # this function return how much ram is available in the board
-
-#8- ram percentage
-
-ram=orangetool.ram_percent() # this function return used ram percentage
-
-#9- freeup
-
-orangetool.freeup() # To free pagecache, dentries and inodes and return freeuped amount
-
-```
-
-## Storage Functions				
-
-```python
-#10- mount_status
-
-mount_details=orangetool.mount_status("sda1") # This function return mount addresses of input device
-
-#11- storage_status
-
-mount_details=orangetool.storage_status() # This function return all of the inserted storage and their status
-
-#12- unmount
-
-orangetool.unmount("/mnt/usb1") # This function unmount input device
-
-#13- unmount_all
-
-
-orangetool.unmount_all() #This function unmount all of the mounted devices
-
-#14- mount
-
-orangetool.mount("sda1","/mnt/usb1") # This function mount input device in input addresses
-
-```
-
-## Display Functions				
-
-```python
-#15- hdmi_on
-
-orangetool.hdmi_on() # turn on hdmi port
-
-#16- hdmi_off
-
-orangetool.hdmi_off() # turn off hdmi port
-
-#17- hdmi_size
-
-orangetool.hdmi_size(1280,720) # this function change hdmi display resolution
-
-```
-
-## System Functions				
-
-```python
-#18- sleep
-
-orangetool.sleep() # put system in sleep mode
-
-#19- wakeup
-
-orangetool.wakeup(day=1,hour=0,minute=1) # set rtc wakeuptime
-
-```
-
-## Other Functions			
-
-```python
-
-#20- get_temp
-
-temp=orangetool.get_temp() # this function return cpu temperature as string
-
-#21- uptime
-
-time=orangetool.uptime() # this function return uptime of system
-
-#22- idletime
-
-time=orangetool.idletime() # this function return idle of system ( all cores)
-
-#23- mac
-
-mac_dic=orangetool.mac() # return dict of all system net devices mac addresses
-
-#24- version
-
-orangetool.version() # return orangetool version for test
-
-```
-
-
-
-- All of the functions in error state return `Error` String
-- local_ip() and global_ip() originally are available in ipz package [Link](http://github.com/sepandhaghighi/ipz)
-- RAM Functions in this version need psutil package
-- Some of this funtions need root access so it's better to run ```sudo -s``` before use this tool
-
-
-
-## Issues & Bug Reports			
-
-Just fill an issue and describe it. We'll check it ASAP!							
-or send an email to [info@moduland.ir](mailto:info@moduland.ir "info@moduland.ir"). 
-
-
-## Contribution			
-
-You can fork the repository, improve or fix some part of it and then send the pull requests back if you want to see them here. I really appreciate that. ❤️			
-
-Remember to write a few tests for your code before sending pull requests. 
-
-
-##License
-
-<a href="https://github.com/Moduland/orangetool/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"/></a>
-			
-
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..747bda8
--- /dev/null
+++ b/index.html
@@ -0,0 +1,166 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module orangetool</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+</head><body >
+    <div align="center">
+<img src="orangetool.jpg" height=240px width=320px>
+    <p></p>
+    </div>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#eeaa77">
+<td align="center" colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl><dt><a name="-convert_bytes"><strong>convert_bytes</strong></a>(num)</dt><dd><tt>convert&nbsp;num&nbsp;to&nbsp;idiomatic&nbsp;byte&nbsp;unit<br>
+:param&nbsp;num:&nbsp;the&nbsp;input&nbsp;number.<br>
+:type&nbsp;num:int<br>
+:return:&nbsp;str<br>
+&gt;&gt;&gt;&nbsp;<a href="#-convert_bytes">convert_bytes</a>(200)<br>
+'200.0&nbsp;bytes'<br>
+&gt;&gt;&gt;&nbsp;<a href="#-convert_bytes">convert_bytes</a>(6000)<br>
+'5.9&nbsp;KB'<br>
+&gt;&gt;&gt;&nbsp;<a href="#-convert_bytes">convert_bytes</a>(80000)<br>
+'78.1&nbsp;KB'</tt></dd></dl>
+ <dl><dt><a name="-freeup"><strong>freeup</strong></a>(DEBUG=False)</dt><dd><tt>To&nbsp;free&nbsp;pagecache,&nbsp;dentries&nbsp;and&nbsp;inodes:<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;Amount&nbsp;of&nbsp;freeuped&nbsp;ram&nbsp;as&nbsp;string&nbsp;and&nbsp;converted&nbsp;by&nbsp;<a href="#-convert_bytes">convert_bytes</a>()</tt></dd></dl>
+ <dl><dt><a name="-get_temp"><strong>get_temp</strong></a>(Zone=0, DEBUG=False)</dt><dd><tt>This&nbsp;Function&nbsp;Wrote&nbsp;for&nbsp;Orangepi&nbsp;to&nbsp;read&nbsp;cpu&nbsp;temperature<br>
+:param&nbsp;DEBUG&nbsp;:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:param&nbsp;Zone&nbsp;:&nbsp;Thermal&nbsp;Zone&nbsp;Index<br>
+:type&nbsp;DEBUG:bool<br>
+:type&nbsp;Zone:int<br>
+:return:&nbsp;Board&nbsp;Temp&nbsp;as&nbsp;string&nbsp;in&nbsp;celsius</tt></dd></dl>
+ <dl><dt><a name="-global_ip"><strong>global_ip</strong></a>(DEBUG=False)</dt><dd><tt>return&nbsp;ip&nbsp;with&nbsp;by&nbsp;<a href="http://ipinfo.io/ip">http://ipinfo.io/ip</a>&nbsp;api<br>
+:param&nbsp;DEBUG:Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;global&nbsp;ip&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-hdmi_off"><strong>hdmi_off</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;turn&nbsp;off&nbsp;hdmi&nbsp;port&nbsp;(need&nbsp;sudo&nbsp;-s)<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;bool</tt></dd></dl>
+ <dl><dt><a name="-hdmi_on"><strong>hdmi_on</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;turn&nbsp;on&nbsp;hdmi&nbsp;port&nbsp;(need&nbsp;sudo&nbsp;-s)<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;bool</tt></dd></dl>
+ <dl><dt><a name="-hdmi_size"><strong>hdmi_size</strong></a>(v=None, h=None, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;change&nbsp;hdmi&nbsp;display&nbsp;resolution&nbsp;(need&nbsp;sudo&nbsp;-s)&nbsp;(if&nbsp;call&nbsp;without&nbsp;any&nbsp;argument&nbsp;return&nbsp;current&nbsp;resolution)<br>
+:param&nbsp;v:&nbsp;vertical&nbsp;line<br>
+:param&nbsp;h:&nbsp;horizental&nbsp;line<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;v&nbsp;:&nbsp;int<br>
+:type&nbsp;h:int<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;bool</tt></dd></dl>
+ <dl><dt><a name="-idletime"><strong>idletime</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;system&nbsp;idletime<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;system&nbsp;idle&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-internet"><strong>internet</strong></a>(host='8.8.8.8', port=53, timeout=3)</dt><dd><tt>Check&nbsp;Internet&nbsp;Connections.<br>
+:param&nbsp;&nbsp;host:&nbsp;the&nbsp;host&nbsp;that&nbsp;check&nbsp;connection&nbsp;to<br>
+:param&nbsp;&nbsp;port:&nbsp;port&nbsp;that&nbsp;check&nbsp;connection&nbsp;with<br>
+:param&nbsp;&nbsp;timeout:&nbsp;times&nbsp;that&nbsp;check&nbsp;the&nbsp;connnection<br>
+:type&nbsp;host:str<br>
+:type&nbsp;port:int<br>
+:type&nbsp;timeout:int<br>
+:return&nbsp;bool:&nbsp;True&nbsp;if&nbsp;Connection&nbsp;is&nbsp;Stable<br>
+&gt;&gt;&gt;&nbsp;<a href="#-internet">internet</a>()&nbsp;#&nbsp;if&nbsp;there&nbsp;is&nbsp;stable&nbsp;internet&nbsp;connection<br>
+True<br>
+&gt;&gt;&gt;&nbsp;<a href="#-internet">internet</a>()&nbsp;#&nbsp;if&nbsp;there&nbsp;is&nbsp;no&nbsp;stable&nbsp;internet&nbsp;connection<br>
+False</tt></dd></dl>
+ <dl><dt><a name="-local_ip"><strong>local_ip</strong></a>(DEBUG=False)</dt><dd><tt>return&nbsp;local&nbsp;ip&nbsp;of&nbsp;computer&nbsp;in&nbsp;windows&nbsp;by&nbsp;socket&nbsp;module&nbsp;and&nbsp;in&nbsp;unix&nbsp;with&nbsp;hostname&nbsp;command&nbsp;in&nbsp;shell<br>
+:param&nbsp;DEBUG:Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;Mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;local&nbsp;ip&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-mac"><strong>mac</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;mac&nbsp;addresses&nbsp;of&nbsp;net&nbsp;devices<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;return&nbsp;mac&nbsp;addresses&nbsp;as&nbsp;dict&nbsp;with&nbsp;name&nbsp;as&nbsp;keys&nbsp;and&nbsp;mac&nbsp;addresses&nbsp;as&nbsp;values</tt></dd></dl>
+ <dl><dt><a name="-mount"><strong>mount</strong></a>(device_name, mount_address=None, DEBUG=False)</dt><dd><tt>:param&nbsp;device_name:&nbsp;name&nbsp;of&nbsp;device&nbsp;for&nbsp;mounted&nbsp;example&nbsp;=&nbsp;sda1<br>
+:param&nbsp;mount_address:&nbsp;address&nbsp;for&nbsp;mounting&nbsp;device&nbsp;example&nbsp;=&nbsp;/mnt/usb&nbsp;,&nbsp;default&nbsp;value&nbsp;is&nbsp;None&nbsp;in&nbsp;this&nbsp;case&nbsp;function&nbsp;generate&nbsp;random&nbsp;number&nbsp;for&nbsp;mount&nbsp;folder&nbsp;name<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;device_name:str<br>
+:type&nbsp;mount_address:str<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;True&nbsp;if&nbsp;device&nbsp;mount&nbsp;correctly&nbsp;and&nbsp;False&nbsp;other&nbsp;wise</tt></dd></dl>
+ <dl><dt><a name="-mount_status"><strong>mount_status</strong></a>(device_name, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;addresses&nbsp;of&nbsp;mounted&nbsp;memory&nbsp;devices&nbsp;in&nbsp;dev&nbsp;by&nbsp;device&nbsp;name<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;list&nbsp;of&nbsp;memory&nbsp;devices</tt></dd></dl>
+ <dl><dt><a name="-ping"><strong>ping</strong></a>(ip, packet_number=3, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;ping&nbsp;ip&nbsp;and&nbsp;return&nbsp;True&nbsp;if&nbsp;this&nbsp;ip&nbsp;is&nbsp;available&nbsp;and&nbsp;False&nbsp;otherwise<br>
+:param&nbsp;ip:&nbsp;target&nbsp;ip<br>
+:param&nbsp;packet_number:&nbsp;numer&nbsp;of&nbsp;packet&nbsp;to&nbsp;size<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;ip&nbsp;:str<br>
+:type&nbsp;packet_number:int<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;a&nbsp;boolean&nbsp;value&nbsp;(True&nbsp;if&nbsp;ip&nbsp;is&nbsp;available&nbsp;and&nbsp;False&nbsp;otherwise)</tt></dd></dl>
+ <dl><dt><a name="-ram_free"><strong>ram_free</strong></a>(convert=True)</dt><dd><tt>Return&nbsp;how&nbsp;much&nbsp;ram&nbsp;is&nbsp;available<br>
+:param&nbsp;convert:&nbsp;Flag&nbsp;for&nbsp;convert&nbsp;mode&nbsp;(using&nbsp;of&nbsp;convert_byte&nbsp;function)<br>
+:type&nbsp;convert&nbsp;:&nbsp;bool<br>
+:return:&nbsp;how&nbsp;much&nbsp;ram&nbsp;is&nbsp;available</tt></dd></dl>
+ <dl><dt><a name="-ram_percent"><strong>ram_percent</strong></a>()</dt><dd><tt>Return&nbsp;available&nbsp;ram&nbsp;percentage<br>
+:return:&nbsp;availabe&nbsp;ram&nbsp;percentage&nbsp;as&nbsp;string&nbsp;with&nbsp;%</tt></dd></dl>
+ <dl><dt><a name="-ram_total"><strong>ram_total</strong></a>(convert=True)</dt><dd><tt>Return&nbsp;total&nbsp;ram&nbsp;of&nbsp;board<br>
+:param&nbsp;convert:&nbsp;Flag&nbsp;for&nbsp;convert&nbsp;mode&nbsp;(using&nbsp;of&nbsp;convert_byte&nbsp;function)<br>
+:type&nbsp;convert:bool<br>
+:return:&nbsp;total&nbsp;ram&nbsp;of&nbsp;board&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-ram_used"><strong>ram_used</strong></a>(convert=True)</dt><dd><tt>Return&nbsp;how&nbsp;much&nbsp;ram&nbsp;is&nbsp;using<br>
+:param&nbsp;convert:&nbsp;Flag&nbsp;for&nbsp;convert&nbsp;mode&nbsp;(using&nbsp;of&nbsp;convert_byte&nbsp;function)<br>
+:type&nbsp;convert:bool<br>
+:return:&nbsp;how&nbsp;much&nbsp;ram&nbsp;is&nbsp;using&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-random_generator"><strong>random_generator</strong></a>(number)</dt></dl>
+ <dl><dt><a name="-set_ip"><strong>set_ip</strong></a>(ip, DEVICE='eth0', DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;set&nbsp;static&nbsp;ip&nbsp;in&nbsp;interfaces&nbsp;file&nbsp;(need&nbsp;sudo)<br>
+:param&nbsp;DEVICE:&nbsp;network&nbsp;device&nbsp;name<br>
+:type&nbsp;DEVICE:str<br>
+:param&nbsp;ip:&nbsp;static&nbsp;ip<br>
+:type&nbsp;ip&nbsp;:str<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;True&nbsp;in&nbsp;successful</tt></dd></dl>
+ <dl><dt><a name="-sleep"><strong>sleep</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;is&nbsp;a&nbsp;shortcut&nbsp;for&nbsp;sleep&nbsp;(need&nbsp;sudo)<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;None</tt></dd></dl>
+ <dl><dt><a name="-storage_status"><strong>storage_status</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;all&nbsp;of&nbsp;the&nbsp;inserted&nbsp;memory&nbsp;and&nbsp;their&nbsp;status<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;All&nbsp;of&nbsp;the&nbsp;inserted&nbsp;memory&nbsp;and&nbsp;their&nbsp;status&nbsp;as&nbsp;dictionary&nbsp;(&nbsp;device&nbsp;name&nbsp;as&nbsp;keys&nbsp;and&nbsp;mount&nbsp;status&nbsp;(mounted_addresses&nbsp;as&nbsp;list&nbsp;and&nbsp;u&nbsp;--&gt;&nbsp;unmounted)&nbsp;as&nbsp;values</tt></dd></dl>
+ <dl><dt><a name="-time_convert"><strong>time_convert</strong></a>(input_string)</dt><dd><tt>This&nbsp;function&nbsp;convert&nbsp;input_string&nbsp;from&nbsp;uptime&nbsp;from&nbsp;sec&nbsp;to&nbsp;DD,HH,MM,SS&nbsp;Format<br>
+:param&nbsp;input_string:&nbsp;input&nbsp;time&nbsp;string&nbsp;&nbsp;in&nbsp;sec<br>
+:type&nbsp;input_string:str<br>
+:return:&nbsp;converted&nbsp;time&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-unmount"><strong>unmount</strong></a>(ADDRESS, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;unmount&nbsp;memory&nbsp;devices&nbsp;by&nbsp;addresses<br>
+:param&nbsp;ADDRESS:&nbsp;address&nbsp;of&nbsp;that&nbsp;device&nbsp;mount&nbsp;on<br>
+:type&nbsp;ADDRESS:str<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;True&nbsp;if&nbsp;device&nbsp;unmount&nbsp;correctly&nbsp;and&nbsp;False&nbsp;other&nbsp;wise</tt></dd></dl>
+ <dl><dt><a name="-unmount_all"><strong>unmount_all</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;unmount&nbsp;all&nbsp;of&nbsp;the&nbsp;mounted&nbsp;devices<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;return&nbsp;True&nbsp;if&nbsp;all&nbsp;of&nbsp;the&nbsp;mounted&nbsp;devices&nbsp;unmount&nbsp;correctly</tt></dd></dl>
+ <dl><dt><a name="-uptime"><strong>uptime</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;system&nbsp;uptime<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;system&nbsp;uptime&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-version"><strong>version</strong></a>()</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;orangetool&nbsp;version&nbsp;(for&nbsp;test)<br>
+:return:&nbsp;return&nbsp;orangetool-version&nbsp;number&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-wakeup"><strong>wakeup</strong></a>(day=0, hour=0, minute=0, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;set&nbsp;wakeup&nbsp;time&nbsp;for&nbsp;kernel&nbsp;RTC&nbsp;(need&nbsp;sudo)<br>
+:param&nbsp;day:&nbsp;days&nbsp;for&nbsp;wakeup<br>
+:param&nbsp;hour:&nbsp;hout&nbsp;for&nbsp;wakeup<br>
+:param&nbsp;minute:&nbsp;minute&nbsp;for&nbsp;wakeup<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;day:int<br>
+:type&nbsp;hour:int<br>
+:type&nbsp;minute:int<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;bool</tt></dd></dl>
+ <dl><dt><a name="-zero_insert"><strong>zero_insert</strong></a>(input_string)</dt><dd><tt>This&nbsp;function&nbsp;get&nbsp;a&nbsp;string&nbsp;as&nbsp;input&nbsp;if&nbsp;input&nbsp;is&nbsp;one&nbsp;digit&nbsp;add&nbsp;a&nbsp;zero<br>
+:param&nbsp;input_string:&nbsp;input&nbsp;digit&nbsp;az&nbsp;string<br>
+:type&nbsp;input_string:str<br>
+:return:&nbsp;modified&nbsp;output&nbsp;as&nbsp;str</tt></dd></dl>
+</td></tr></table><p>
+
+</body></html>
\ No newline at end of file
diff --git a/orangetool.jpg b/orangetool.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..bf1448ce036bb15d40a4cf69a67ef305fc4ae223
GIT binary patch
diff --git a/orangetool/__init__.py b/orangetool/__init__.py
deleted file mode 100644
index 3c3dc18..0000000
--- a/orangetool/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from .orangetool import *
\ No newline at end of file
diff --git a/orangetool/orangetool.py b/orangetool/orangetool.py
deleted file mode 100644
index 342de05..0000000
--- a/orangetool/orangetool.py
+++ /dev/null
@@ -1,587 +0,0 @@
-import subprocess as sub
-import socket
-import requests
-import re
-import platform
-import psutil
-import os
-import string
-import random
-import time
-logo='''
-________                                      __                .__
-\_____  \____________    ____    ____   _____/  |_  ____   ____ |  |
- /   |   \_  __ \__  \  /    \  / ___\_/ __ \   __\/  _ \ /  _ \|  |
-/    |    \  | \// __ \|   |  \/ /_/  >  ___/|  | (  <_> |  <_> )  |__
-\_______  /__|  (____  /___|  /\___  / \___  >__|  \____/ \____/|____/
-        \/           \/     \//_____/      \/
-'''
-ip_pattern=r"(?:[0-9]{1,3}\.){3}[0-9]{1,3}"
-api_1="http://ipinfo.io/ip"
-VERSION="orangetool-v0.2"
-def internet(host="8.8.8.8", port=53, timeout=3):
-    """
-    Check Internet Connections.
-    :param  host: the host that check connection to
-    :param  port: port that check connection with
-    :param  timeout: times that check the connnection
-    :type host:str
-    :type port:int
-    :type timeout:int
-    :return bool: True if Connection is Stable
-    >>> internet() # if there is stable internet connection
-    True
-    >>> internet() # if there is no stable internet connection
-    False
-    """
-    try:
-        socket.setdefaulttimeout(timeout)
-        socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((host, port))
-        return True
-    except Exception as ex:
-        print(str(ex))
-        return False
-
-def local_ip(DEBUG=False):
-    '''
-    return local ip of computer in windows by socket module and in unix with hostname command in shell
-    :param DEBUG:Flag for using Debug Mode
-    :type DEBUG:bool
-    :return: local ip as string
-    '''
-    try:
-        ip=socket.gethostbyname(socket.gethostname())
-        if ip!="127.0.0.1":
-            return ip
-        elif platform.system()!="Windows":
-            command=sub.Popen(["hostname","-I"],stdout=sub.PIPE,stderr=sub.PIPE,stdin=sub.PIPE,shell=False)
-            response=list(command.communicate())
-            if len(response[0])>0:
-                return str(response[0])[2:-4]
-            else:
-                return "Error"
-        else:
-            return "Error"
-
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-
-def global_ip(DEBUG=False):
-    '''
-    return ip with by http://ipinfo.io/ip api
-    :param DEBUG:Flag for using Debug mode
-    :type DEBUG:bool
-    :return: global ip as string
-    '''
-    try:
-        new_session=requests.session()
-        response=new_session.get(api_1)
-        ip_list=re.findall(ip_pattern,response.text)
-        new_session.close()
-        return ip_list[0]
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-
-def set_ip(ip,DEVICE="eth0",DEBUG=False):
-    '''
-    This function set static ip in interfaces file (need sudo)
-    :param DEVICE: network device name
-    :type DEVICE:str
-    :param ip: static ip
-    :type ip :str
-    :param DEBUG: Flag for using Debug mode
-    :type DEBUG:bool
-    :return: True in successful
-    '''
-    static_string='''
-    auto lo device
-iface lo inet loopback
-iface device inet static
-        address ip
-        netmask 255.255.255.0
-        gateway 192.168.1.1
-        dns-nameservers 8.8.8.8 8.8.4.4
-    '''
-    try:
-        if bool(re.match(ip_pattern,ip))==False or ip.find("192.168.")==-1 or DEVICE not in mac().keys():
-            raise Exception("IP Formation Error")
-        static_string=static_string.replace("ip",ip)
-        static_string=static_string.replace("device",DEVICE)
-        file=open("/etc/network/interfaces","w")
-        file.write(static_string)
-        file.close()
-        command=sub.Popen(["ifdown",DEVICE,"&&","ifup",DEVICE],stderr=sub.PIPE,stdin=sub.PIPE,stdout=sub.PIPE)
-        return True
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-
-def get_temp(Zone=0,DEBUG=False):
-    '''
-    This Function Wrote for Orangepi to read cpu temperature
-    :param DEBUG : Flag for using Debug mode
-    :param Zone : Thermal Zone Index
-    :type DEBUG:bool
-    :type Zone:int
-    :return: Board Temp as string in celsius
-    '''
-    try:
-        command=open("/sys/class/thermal/thermal_zone"+str(Zone)+"/temp")
-        #command=sub.Popen(["cat","/sys/class/thermal/thermal_zone"+str(Zone)+"/temp"],stderr=sub.PIPE,stdin=sub.PIPE,stdout=sub.PIPE)
-        #response=list(command.communicate())
-        response=command.read()
-        return response[:-1]
-        #if len(response[0])!=0:
-            #return str(response[0])[2:-3]
-        #else:
-            #return "Error"
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-def convert_bytes(num):
-    """
-    convert num to idiomatic byte unit
-    :param num: the input number.
-    :type num:int
-    :return: str
-    >>> convert_bytes(200)
-    '200.0 bytes'
-    >>> convert_bytes(6000)
-    '5.9 KB'
-    >>> convert_bytes(80000)
-    '78.1 KB'
-    """
-    for x in ['bytes', 'KB', 'MB', 'GB', 'TB']:
-        if num < 1024.0:
-            return "%3.1f %s" % (num, x)
-        num /= 1024.0
-def ram_total(convert=True):
-    '''
-    Return total ram of board
-    :param convert: Flag for convert mode (using of convert_byte function)
-    :type convert:bool
-    :return: total ram of board as string
-    '''
-    response=list(psutil.virtual_memory())
-    if convert==True:
-        return convert_bytes(int(response[0]))
-    else:
-        return str(response[0])
-def ram_used(convert=True):
-    '''
-    Return how much ram is using
-    :param convert: Flag for convert mode (using of convert_byte function)
-    :type convert:bool
-    :return: how much ram is using as string
-    '''
-    response=list(psutil.virtual_memory())
-    if convert == True:
-        return convert_bytes(int(response[3]))
-    else:
-        return str(response[3])
-def ram_free(convert=True):
-    '''
-    Return how much ram is available
-    :param convert: Flag for convert mode (using of convert_byte function)
-    :type convert : bool
-    :return: how much ram is available
-    '''
-    response=list(psutil.virtual_memory())
-    if convert == True:
-        return convert_bytes(int(response[1]))
-    else:
-        return str(response[1])
-def ram_percent():
-    '''
-    Return available ram percentage
-    :return: availabe ram percentage as string with %
-    '''
-    response=list(psutil.virtual_memory())
-    return str(response[2])+" %"
-def zero_insert(input_string):
-    '''
-    This function get a string as input if input is one digit add a zero
-    :param input_string: input digit az string
-    :type input_string:str
-    :return: modified output as str
-    '''
-    if len(input_string)==1:
-        return "0"+input_string
-    return input_string
-
-def time_convert(input_string):
-    '''
-    This function convert input_string from uptime from sec to DD,HH,MM,SS Format
-    :param input_string: input time string  in sec
-    :type input_string:str
-    :return: converted time as string
-    '''
-    input_sec=float(input_string)
-    input_minute=input_sec//60
-    input_sec=int(input_sec-input_minute*60)
-    input_hour=input_minute//60
-    input_minute=int(input_minute-input_hour*60)
-    input_day=int(input_hour//24)
-    input_hour=int(input_hour-input_day*24)
-    return zero_insert(str(input_day))+" days, "+zero_insert(str(input_hour))+" hour, "+zero_insert(str(input_minute))+" minutes, "+zero_insert(str(input_sec))+" seconds"
-
-def uptime(DEBUG=False):
-    '''
-    This function return system uptime
-    :param DEBUG: Flag for using Debug mode
-    :type DEBUG:bool
-    :return: system uptime as string
-    '''
-    try:
-        command=open("/proc/uptime")
-        response=command.read()
-        return time_convert(response[:-1].split(" ")[0])
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-def idletime(DEBUG=False):
-    '''
-    This function return system idletime
-    :param DEBUG: Flag for using Debug mode
-    :type DEBUG:bool
-    :return: system idle as string
-    '''
-    try:
-        command=open("/proc/uptime")
-        response=command.read()
-        return time_convert(response[:-1].split(" ")[1])
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-def ping(ip,packet_number=3,DEBUG=False):
-    '''
-    This function ping ip and return True if this ip is available and False otherwise
-    :param ip: target ip
-    :param packet_number: numer of packet to size
-    :param DEBUG: Flag for using Debug mode
-    :type ip :str
-    :type packet_number:int
-    :type DEBUG:bool
-    :return: a boolean value (True if ip is available and False otherwise)
-    '''
-    try:
-        if re.match(ip_pattern,ip)==False:
-            raise Exception("IP Formation Error")
-        output=str(list(sub.Popen(["ping",ip,"-c",str(packet_number)],stdout=sub.PIPE,stderr=sub.PIPE).communicate())[0])
-        if output.find("Unreachable")==-1:
-            return True
-        else:
-            return False
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-def freeup(DEBUG=False):
-    '''
-    To free pagecache, dentries and inodes:
-    :param DEBUG: Flag for using Debug mode
-    :type DEBUG:bool
-    :return: Amount of freeuped ram as string and converted by convert_bytes()
-    '''
-    try:
-        RAM_before=int(ram_free(convert=False))
-        caches_control=open("/proc/sys/vm/drop_caches","w")
-        caches_control.write("3")
-        caches_control.close()
-        RAM_after=int(ram_free(convert=False))
-        freeuped_ram=RAM_after - RAM_before
-        if freeuped_ram>0:
-            return convert_bytes(freeuped_ram)
-        else:
-            return convert_bytes(0)
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-
-def mount_status(device_name,DEBUG=False):
-    '''
-    This function return addresses of mounted memory devices in dev by device name
-    :param DEBUG: Flag for using Debug mode
-    :type DEBUG:bool
-    :return: list of memory devices
-    '''
-    try:
-        file = open("/proc/mounts")
-        output=file.readlines()
-        memory_list=[]
-        for item in output:
-            temp=item.split(" ")
-            if temp[0].find(device_name)!=-1:
-                memory_list.append(temp[1])
-        if len(memory_list)==0:
-            return "u"
-        else:
-            return memory_list
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-
-def storage_status(DEBUG=False):
-    '''
-    This function return all of the inserted memory and their status
-    :param DEBUG: Flag for using Debug mode
-    :type DEBUG:bool
-    :return: All of the inserted memory and their status as dictionary ( device name as keys and mount status (mounted_addresses as list and u --> unmounted) as values
-    '''
-    try:
-        folder_items=os.listdir("/dev/")
-        memory_items=[]
-        memory_status=[]
-        for i in string.ascii_lowercase:
-            if "sd"+i+"1" in folder_items:
-                memory_items.append("sd"+i+"1")
-        for item in memory_items:
-            memory_status.append(mount_status(item))
-        return dict(zip(memory_items,memory_status))
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-
-def unmount(ADDRESS,DEBUG=False):
-    '''
-    This function unmount memory devices by addresses
-    :param ADDRESS: address of that device mount on
-    :type ADDRESS:str
-    :param DEBUG: Flag for using Debug mode
-    :type DEBUG:bool
-    :return: True if device unmount correctly and False other wise
-    '''
-    try:
-        command = sub.Popen(["umount",ADDRESS], stdout=sub.PIPE, stderr=sub.PIPE)
-        output=list(command.communicate())
-        if len(output[0])==0 and len(output[1])==0:
-            return True
-        else:
-            return False
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-
-def unmount_all(DEBUG=False):
-    '''
-    This function unmount all of the mounted devices
-    :param DEBUG: Flag for using Debug mode
-    :type DEBUG:bool
-    :return: return True if all of the mounted devices unmount correctly
-    '''
-    try:
-        storage_output=storage_status()
-        storage_keys=list(storage_output.keys())
-        storage_values=list(storage_output.values())
-        for i,item in enumerate(storage_values):
-            if storage_values[i]!="u":
-                print(item)
-                for j in item:
-                    unmount(j)
-        return True
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-def random_generator(number):
-    response=""
-    i=0
-    while(i<number):
-        i+=1
-        response+=str(random.randint(0,10))
-    return response
-def mount(device_name,mount_address=None,DEBUG=False):
-    '''
-    :param device_name: name of device for mounted example = sda1
-    :param mount_address: address for mounting device example = /mnt/usb , default value is None in this case function generate random number for mount folder name
-    :param DEBUG: Flag for using Debug mode
-    :type device_name:str
-    :type mount_address:str
-    :type DEBUG:bool
-    :return: True if device mount correctly and False other wise
-    '''
-    try:
-        if mount_status(device_name)!="u":
-            raise Exception("Device already mount")
-        if mount_address==None:
-            mount_address="/mnt/"+random_generator(5)
-            command=sub.Popen(["mkdir",mount_address], stdout=sub.PIPE, stderr=sub.PIPE)
-        command = sub.Popen(["mount","/dev/"+device_name,mount_address], stdout=sub.PIPE, stderr=sub.PIPE)
-        output=list(command.communicate())
-        if len(output[0])==0 and len(output[1])==0:
-            return True
-        else:
-            return False
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-def mac(DEBUG=False):
-    '''
-    This function return mac addresses of net devices
-    :param DEBUG: Flag for using Debug mode
-    :type DEBUG:bool
-    :return: return mac addresses as dict with name as keys and mac addresses as values
-    '''
-    try:
-        net_dir="/sys/class/net"
-        mac_list=[]
-        dir_list=os.listdir(net_dir)
-        for item in dir_list:
-            mac_addr=open(net_dir+"/"+item+"/address","r")
-            mac_list.append(mac_addr.read()[:-1])
-            mac_addr.close()
-        return dict(zip(dir_list,mac_list))
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-def version():
-    '''
-    This function return orangetool version (for test)
-    :return: return orangetool-version number as string
-    '''
-    print(logo)
-    return VERSION
-
-def hdmi_on(DEBUG=False):
-    '''
-    This function turn on hdmi port (need sudo -s)
-    :param DEBUG: Flag for using Debug mode
-    :type DEBUG:bool
-    :return: bool
-    '''
-    try:
-        hdmi_control=open("/sys/class/graphics/fb0/blank","w")
-        hdmi_control.write("0")
-        hdmi_control.close()
-        return True
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-
-def hdmi_off(DEBUG=False):
-    '''
-       This function turn off hdmi port (need sudo -s)
-       :param DEBUG: Flag for using Debug mode
-       :type DEBUG:bool
-       :return: bool
-       '''
-    try:
-        hdmi_control=open("/sys/class/graphics/fb0/blank","w")
-        hdmi_control.write("4")
-        hdmi_control.close()
-        return True
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-def hdmi_size(v=None,h=None,DEBUG=False):
-    '''
-    This function change hdmi display resolution (need sudo -s) (if call without any argument return current resolution)
-    :param v: vertical line
-    :param h: horizental line
-    :param DEBUG: Flag for using Debug mode
-    :type v : int
-    :type h:int
-    :type DEBUG:bool
-    :return: bool
-    '''
-    try:
-        if type(v)!=int or type(h)!=int:
-            hdmi_control = open("/sys/class/graphics/fb0/virtual_size", "r")
-            resolution=hdmi_control.read()[:-1].replace(",","x")
-            hdmi_control.close()
-            return resolution
-        hdmi_control = open("/sys/class/graphics/fb0/virtual_size", "w")
-        hdmi_control.write(str(v)+","+str(h))
-        hdmi_control.close()
-        return True
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-def wakeup(day=0,hour=0,minute=0,DEBUG=False):
-    '''
-    This function set wakeup time for kernel RTC (need sudo)
-    :param day: days for wakeup
-    :param hour: hout for wakeup
-    :param minute: minute for wakeup
-    :param DEBUG: Flag for using Debug mode
-    :type day:int
-    :type hour:int
-    :type minute:int
-    :type DEBUG:bool
-    :return: bool
-    '''
-    try:
-        total_time=day*24*60+hour*60+minute
-        epoch=time.time()+total_time*60
-        file=open("/sys/class/rtc/rtc0/wakealarm","w")
-        file.write("0")
-        file.close()
-        file = open("/sys/class/rtc/rtc0/wakealarm", "w")
-        file.write(str(epoch))
-        file.close()
-        return True
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-def sleep(DEBUG=False):
-    '''
-    This function is a shortcut for sleep (need sudo)
-    :param DEBUG: Flag for using Debug mode
-    :type DEBUG:bool
-    :return: None
-    '''
-    try:
-        command=sub.Popen("pm-suspend",stderr=sub.PIPE,stdout=sub.PIPE,stdin=sub.PIPE)
-        response=list(command.communicate())
-        if len(response[1])>0:
-            raise Exception('Root Error')
-    except Exception as e:
-        if DEBUG==True:
-            print(str(e))
-        return "Error"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index 115c94e..0000000
--- a/requirements.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-psutil
-subprocess
-platform
-requests
-
diff --git a/setup.py b/setup.py
deleted file mode 100644
index fb2e268..0000000
--- a/setup.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from distutils.core import setup
-setup(
-  name = 'orangetool',
-  packages = ['orangetool'],
-  version = '0.2',
-  description = 'Some useful script for Orangepi/Raspberrypi boards',
-  long_description="",
-  author = 'Moduland Co',
-  author_email = 'info@moduland.ir',
-  url = 'https://github.com/Moduland/Orangetool',
-  download_url = 'https://github.com/Moduland/Orangetool/tarball/v0.2',
-  keywords = ['orangepi', 'raspberrypi', 'embedded-systems','python'],
-  classifiers = [],
-  license='MIT',
-)

From 32d4453d85191ef515af32b7f150830d5edd43af Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 11 Mar 2017 15:36:22 +0330
Subject: [PATCH 002/104] site updated

---
 404.html            |  22 +++++
 doc/doc.html        | 166 +++++++++++++++++++++++++++++++++++
 images/doc.png      | Bin 0 -> 11490 bytes
 images/github.png   | Bin 0 -> 7982 bytes
 images/moduland.jpg | Bin 0 -> 18100 bytes
 index.html          | 208 ++++++++++----------------------------------
 style.css           |  25 ++++++
 7 files changed, 257 insertions(+), 164 deletions(-)
 create mode 100644 404.html
 create mode 100644 doc/doc.html
 create mode 100644 images/doc.png
 create mode 100644 images/github.png
 create mode 100644 images/moduland.jpg
 create mode 100644 style.css

diff --git a/404.html b/404.html
new file mode 100644
index 0000000..cf12b8f
--- /dev/null
+++ b/404.html
@@ -0,0 +1,22 @@
+<html>
+	<head>
+		<title>Page not found</title>
+        <meta name="description" content="Orangetool By Moduland"/>
+        <meta property="og:title" content="Orangetool" />
+        <meta property="og:site_name" content="http://moduland.github.io/Orangetool"/>
+        <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
+        
+		
+</head>
+	<body >
+		<div style="margin-top:200px;text-align:center;" >
+		<img src="orangetool.jpg" height=240px width=320px alt="orangetool logo">
+        <br/>
+        <p style="font-size:30px; text-decoration:None;">Page not found</p>
+        <a href="http://moduland.github.io/Orangetool" style="font-size:30px;border:2px groove;border-radius:23px;text-decoration:None;padding:5px;background:azure; ">Home</a>
+            
+        </div>
+	</body>
+
+
+</html>
diff --git a/doc/doc.html b/doc/doc.html
new file mode 100644
index 0000000..747bda8
--- /dev/null
+++ b/doc/doc.html
@@ -0,0 +1,166 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module orangetool</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+</head><body >
+    <div align="center">
+<img src="orangetool.jpg" height=240px width=320px>
+    <p></p>
+    </div>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#eeaa77">
+<td align="center" colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl><dt><a name="-convert_bytes"><strong>convert_bytes</strong></a>(num)</dt><dd><tt>convert&nbsp;num&nbsp;to&nbsp;idiomatic&nbsp;byte&nbsp;unit<br>
+:param&nbsp;num:&nbsp;the&nbsp;input&nbsp;number.<br>
+:type&nbsp;num:int<br>
+:return:&nbsp;str<br>
+&gt;&gt;&gt;&nbsp;<a href="#-convert_bytes">convert_bytes</a>(200)<br>
+'200.0&nbsp;bytes'<br>
+&gt;&gt;&gt;&nbsp;<a href="#-convert_bytes">convert_bytes</a>(6000)<br>
+'5.9&nbsp;KB'<br>
+&gt;&gt;&gt;&nbsp;<a href="#-convert_bytes">convert_bytes</a>(80000)<br>
+'78.1&nbsp;KB'</tt></dd></dl>
+ <dl><dt><a name="-freeup"><strong>freeup</strong></a>(DEBUG=False)</dt><dd><tt>To&nbsp;free&nbsp;pagecache,&nbsp;dentries&nbsp;and&nbsp;inodes:<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;Amount&nbsp;of&nbsp;freeuped&nbsp;ram&nbsp;as&nbsp;string&nbsp;and&nbsp;converted&nbsp;by&nbsp;<a href="#-convert_bytes">convert_bytes</a>()</tt></dd></dl>
+ <dl><dt><a name="-get_temp"><strong>get_temp</strong></a>(Zone=0, DEBUG=False)</dt><dd><tt>This&nbsp;Function&nbsp;Wrote&nbsp;for&nbsp;Orangepi&nbsp;to&nbsp;read&nbsp;cpu&nbsp;temperature<br>
+:param&nbsp;DEBUG&nbsp;:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:param&nbsp;Zone&nbsp;:&nbsp;Thermal&nbsp;Zone&nbsp;Index<br>
+:type&nbsp;DEBUG:bool<br>
+:type&nbsp;Zone:int<br>
+:return:&nbsp;Board&nbsp;Temp&nbsp;as&nbsp;string&nbsp;in&nbsp;celsius</tt></dd></dl>
+ <dl><dt><a name="-global_ip"><strong>global_ip</strong></a>(DEBUG=False)</dt><dd><tt>return&nbsp;ip&nbsp;with&nbsp;by&nbsp;<a href="http://ipinfo.io/ip">http://ipinfo.io/ip</a>&nbsp;api<br>
+:param&nbsp;DEBUG:Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;global&nbsp;ip&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-hdmi_off"><strong>hdmi_off</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;turn&nbsp;off&nbsp;hdmi&nbsp;port&nbsp;(need&nbsp;sudo&nbsp;-s)<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;bool</tt></dd></dl>
+ <dl><dt><a name="-hdmi_on"><strong>hdmi_on</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;turn&nbsp;on&nbsp;hdmi&nbsp;port&nbsp;(need&nbsp;sudo&nbsp;-s)<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;bool</tt></dd></dl>
+ <dl><dt><a name="-hdmi_size"><strong>hdmi_size</strong></a>(v=None, h=None, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;change&nbsp;hdmi&nbsp;display&nbsp;resolution&nbsp;(need&nbsp;sudo&nbsp;-s)&nbsp;(if&nbsp;call&nbsp;without&nbsp;any&nbsp;argument&nbsp;return&nbsp;current&nbsp;resolution)<br>
+:param&nbsp;v:&nbsp;vertical&nbsp;line<br>
+:param&nbsp;h:&nbsp;horizental&nbsp;line<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;v&nbsp;:&nbsp;int<br>
+:type&nbsp;h:int<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;bool</tt></dd></dl>
+ <dl><dt><a name="-idletime"><strong>idletime</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;system&nbsp;idletime<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;system&nbsp;idle&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-internet"><strong>internet</strong></a>(host='8.8.8.8', port=53, timeout=3)</dt><dd><tt>Check&nbsp;Internet&nbsp;Connections.<br>
+:param&nbsp;&nbsp;host:&nbsp;the&nbsp;host&nbsp;that&nbsp;check&nbsp;connection&nbsp;to<br>
+:param&nbsp;&nbsp;port:&nbsp;port&nbsp;that&nbsp;check&nbsp;connection&nbsp;with<br>
+:param&nbsp;&nbsp;timeout:&nbsp;times&nbsp;that&nbsp;check&nbsp;the&nbsp;connnection<br>
+:type&nbsp;host:str<br>
+:type&nbsp;port:int<br>
+:type&nbsp;timeout:int<br>
+:return&nbsp;bool:&nbsp;True&nbsp;if&nbsp;Connection&nbsp;is&nbsp;Stable<br>
+&gt;&gt;&gt;&nbsp;<a href="#-internet">internet</a>()&nbsp;#&nbsp;if&nbsp;there&nbsp;is&nbsp;stable&nbsp;internet&nbsp;connection<br>
+True<br>
+&gt;&gt;&gt;&nbsp;<a href="#-internet">internet</a>()&nbsp;#&nbsp;if&nbsp;there&nbsp;is&nbsp;no&nbsp;stable&nbsp;internet&nbsp;connection<br>
+False</tt></dd></dl>
+ <dl><dt><a name="-local_ip"><strong>local_ip</strong></a>(DEBUG=False)</dt><dd><tt>return&nbsp;local&nbsp;ip&nbsp;of&nbsp;computer&nbsp;in&nbsp;windows&nbsp;by&nbsp;socket&nbsp;module&nbsp;and&nbsp;in&nbsp;unix&nbsp;with&nbsp;hostname&nbsp;command&nbsp;in&nbsp;shell<br>
+:param&nbsp;DEBUG:Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;Mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;local&nbsp;ip&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-mac"><strong>mac</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;mac&nbsp;addresses&nbsp;of&nbsp;net&nbsp;devices<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;return&nbsp;mac&nbsp;addresses&nbsp;as&nbsp;dict&nbsp;with&nbsp;name&nbsp;as&nbsp;keys&nbsp;and&nbsp;mac&nbsp;addresses&nbsp;as&nbsp;values</tt></dd></dl>
+ <dl><dt><a name="-mount"><strong>mount</strong></a>(device_name, mount_address=None, DEBUG=False)</dt><dd><tt>:param&nbsp;device_name:&nbsp;name&nbsp;of&nbsp;device&nbsp;for&nbsp;mounted&nbsp;example&nbsp;=&nbsp;sda1<br>
+:param&nbsp;mount_address:&nbsp;address&nbsp;for&nbsp;mounting&nbsp;device&nbsp;example&nbsp;=&nbsp;/mnt/usb&nbsp;,&nbsp;default&nbsp;value&nbsp;is&nbsp;None&nbsp;in&nbsp;this&nbsp;case&nbsp;function&nbsp;generate&nbsp;random&nbsp;number&nbsp;for&nbsp;mount&nbsp;folder&nbsp;name<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;device_name:str<br>
+:type&nbsp;mount_address:str<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;True&nbsp;if&nbsp;device&nbsp;mount&nbsp;correctly&nbsp;and&nbsp;False&nbsp;other&nbsp;wise</tt></dd></dl>
+ <dl><dt><a name="-mount_status"><strong>mount_status</strong></a>(device_name, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;addresses&nbsp;of&nbsp;mounted&nbsp;memory&nbsp;devices&nbsp;in&nbsp;dev&nbsp;by&nbsp;device&nbsp;name<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;list&nbsp;of&nbsp;memory&nbsp;devices</tt></dd></dl>
+ <dl><dt><a name="-ping"><strong>ping</strong></a>(ip, packet_number=3, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;ping&nbsp;ip&nbsp;and&nbsp;return&nbsp;True&nbsp;if&nbsp;this&nbsp;ip&nbsp;is&nbsp;available&nbsp;and&nbsp;False&nbsp;otherwise<br>
+:param&nbsp;ip:&nbsp;target&nbsp;ip<br>
+:param&nbsp;packet_number:&nbsp;numer&nbsp;of&nbsp;packet&nbsp;to&nbsp;size<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;ip&nbsp;:str<br>
+:type&nbsp;packet_number:int<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;a&nbsp;boolean&nbsp;value&nbsp;(True&nbsp;if&nbsp;ip&nbsp;is&nbsp;available&nbsp;and&nbsp;False&nbsp;otherwise)</tt></dd></dl>
+ <dl><dt><a name="-ram_free"><strong>ram_free</strong></a>(convert=True)</dt><dd><tt>Return&nbsp;how&nbsp;much&nbsp;ram&nbsp;is&nbsp;available<br>
+:param&nbsp;convert:&nbsp;Flag&nbsp;for&nbsp;convert&nbsp;mode&nbsp;(using&nbsp;of&nbsp;convert_byte&nbsp;function)<br>
+:type&nbsp;convert&nbsp;:&nbsp;bool<br>
+:return:&nbsp;how&nbsp;much&nbsp;ram&nbsp;is&nbsp;available</tt></dd></dl>
+ <dl><dt><a name="-ram_percent"><strong>ram_percent</strong></a>()</dt><dd><tt>Return&nbsp;available&nbsp;ram&nbsp;percentage<br>
+:return:&nbsp;availabe&nbsp;ram&nbsp;percentage&nbsp;as&nbsp;string&nbsp;with&nbsp;%</tt></dd></dl>
+ <dl><dt><a name="-ram_total"><strong>ram_total</strong></a>(convert=True)</dt><dd><tt>Return&nbsp;total&nbsp;ram&nbsp;of&nbsp;board<br>
+:param&nbsp;convert:&nbsp;Flag&nbsp;for&nbsp;convert&nbsp;mode&nbsp;(using&nbsp;of&nbsp;convert_byte&nbsp;function)<br>
+:type&nbsp;convert:bool<br>
+:return:&nbsp;total&nbsp;ram&nbsp;of&nbsp;board&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-ram_used"><strong>ram_used</strong></a>(convert=True)</dt><dd><tt>Return&nbsp;how&nbsp;much&nbsp;ram&nbsp;is&nbsp;using<br>
+:param&nbsp;convert:&nbsp;Flag&nbsp;for&nbsp;convert&nbsp;mode&nbsp;(using&nbsp;of&nbsp;convert_byte&nbsp;function)<br>
+:type&nbsp;convert:bool<br>
+:return:&nbsp;how&nbsp;much&nbsp;ram&nbsp;is&nbsp;using&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-random_generator"><strong>random_generator</strong></a>(number)</dt></dl>
+ <dl><dt><a name="-set_ip"><strong>set_ip</strong></a>(ip, DEVICE='eth0', DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;set&nbsp;static&nbsp;ip&nbsp;in&nbsp;interfaces&nbsp;file&nbsp;(need&nbsp;sudo)<br>
+:param&nbsp;DEVICE:&nbsp;network&nbsp;device&nbsp;name<br>
+:type&nbsp;DEVICE:str<br>
+:param&nbsp;ip:&nbsp;static&nbsp;ip<br>
+:type&nbsp;ip&nbsp;:str<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;True&nbsp;in&nbsp;successful</tt></dd></dl>
+ <dl><dt><a name="-sleep"><strong>sleep</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;is&nbsp;a&nbsp;shortcut&nbsp;for&nbsp;sleep&nbsp;(need&nbsp;sudo)<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;None</tt></dd></dl>
+ <dl><dt><a name="-storage_status"><strong>storage_status</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;all&nbsp;of&nbsp;the&nbsp;inserted&nbsp;memory&nbsp;and&nbsp;their&nbsp;status<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;All&nbsp;of&nbsp;the&nbsp;inserted&nbsp;memory&nbsp;and&nbsp;their&nbsp;status&nbsp;as&nbsp;dictionary&nbsp;(&nbsp;device&nbsp;name&nbsp;as&nbsp;keys&nbsp;and&nbsp;mount&nbsp;status&nbsp;(mounted_addresses&nbsp;as&nbsp;list&nbsp;and&nbsp;u&nbsp;--&gt;&nbsp;unmounted)&nbsp;as&nbsp;values</tt></dd></dl>
+ <dl><dt><a name="-time_convert"><strong>time_convert</strong></a>(input_string)</dt><dd><tt>This&nbsp;function&nbsp;convert&nbsp;input_string&nbsp;from&nbsp;uptime&nbsp;from&nbsp;sec&nbsp;to&nbsp;DD,HH,MM,SS&nbsp;Format<br>
+:param&nbsp;input_string:&nbsp;input&nbsp;time&nbsp;string&nbsp;&nbsp;in&nbsp;sec<br>
+:type&nbsp;input_string:str<br>
+:return:&nbsp;converted&nbsp;time&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-unmount"><strong>unmount</strong></a>(ADDRESS, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;unmount&nbsp;memory&nbsp;devices&nbsp;by&nbsp;addresses<br>
+:param&nbsp;ADDRESS:&nbsp;address&nbsp;of&nbsp;that&nbsp;device&nbsp;mount&nbsp;on<br>
+:type&nbsp;ADDRESS:str<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;True&nbsp;if&nbsp;device&nbsp;unmount&nbsp;correctly&nbsp;and&nbsp;False&nbsp;other&nbsp;wise</tt></dd></dl>
+ <dl><dt><a name="-unmount_all"><strong>unmount_all</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;unmount&nbsp;all&nbsp;of&nbsp;the&nbsp;mounted&nbsp;devices<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;return&nbsp;True&nbsp;if&nbsp;all&nbsp;of&nbsp;the&nbsp;mounted&nbsp;devices&nbsp;unmount&nbsp;correctly</tt></dd></dl>
+ <dl><dt><a name="-uptime"><strong>uptime</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;system&nbsp;uptime<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;system&nbsp;uptime&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-version"><strong>version</strong></a>()</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;orangetool&nbsp;version&nbsp;(for&nbsp;test)<br>
+:return:&nbsp;return&nbsp;orangetool-version&nbsp;number&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-wakeup"><strong>wakeup</strong></a>(day=0, hour=0, minute=0, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;set&nbsp;wakeup&nbsp;time&nbsp;for&nbsp;kernel&nbsp;RTC&nbsp;(need&nbsp;sudo)<br>
+:param&nbsp;day:&nbsp;days&nbsp;for&nbsp;wakeup<br>
+:param&nbsp;hour:&nbsp;hout&nbsp;for&nbsp;wakeup<br>
+:param&nbsp;minute:&nbsp;minute&nbsp;for&nbsp;wakeup<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;day:int<br>
+:type&nbsp;hour:int<br>
+:type&nbsp;minute:int<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;bool</tt></dd></dl>
+ <dl><dt><a name="-zero_insert"><strong>zero_insert</strong></a>(input_string)</dt><dd><tt>This&nbsp;function&nbsp;get&nbsp;a&nbsp;string&nbsp;as&nbsp;input&nbsp;if&nbsp;input&nbsp;is&nbsp;one&nbsp;digit&nbsp;add&nbsp;a&nbsp;zero<br>
+:param&nbsp;input_string:&nbsp;input&nbsp;digit&nbsp;az&nbsp;string<br>
+:type&nbsp;input_string:str<br>
+:return:&nbsp;modified&nbsp;output&nbsp;as&nbsp;str</tt></dd></dl>
+</td></tr></table><p>
+
+</body></html>
\ No newline at end of file
diff --git a/images/doc.png b/images/doc.png
new file mode 100644
index 0000000000000000000000000000000000000000..af3bdcc17e4567e71132943ed061d861cfdbb7b9
GIT binary patch
diff --git a/images/github.png b/images/github.png
new file mode 100644
index 0000000000000000000000000000000000000000..309247c2a10cf2234ca9e08a0a65146fd7657ec7
GIT binary patch
diff --git a/images/moduland.jpg b/images/moduland.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..4528d00f514d195f30df342ae91cc76550a2df98
GIT binary patch
diff --git a/index.html b/index.html
index 747bda8..db7923b 100644
--- a/index.html
+++ b/index.html
@@ -1,166 +1,46 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head><title>Python: module orangetool</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-</head><body >
-    <div align="center">
-<img src="orangetool.jpg" height=240px width=320px>
-    <p></p>
-    </div>
-<p>
-<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#eeaa77">
-<td align="center" colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
+<html>
+    <head>
+        <title>Orangetool</title>
+        <link href="style.css" rel="stylesheet" type="text/css">
+    </head>
+    <body>
+        <div class="logo"  align="center">
+            <img src="orangetool.jpg" height="400px" width="600px">
+        </div>
+        
+        <div class="badges">
+        
+        </div>
+        <div class="button" align="center">
+        
+        
+            <a href="http://github.com/moduland/orangetool" target="_blank" title="Orangetool Github"><img src="images/github.png" alt="Orangetool Github"></a>
+            <a href="http://moduland.github.io/Orangetool/doc" target="_blank" title="Orangetool Doc"><img src="images/doc.png" alt="Orangetool Doc"></a>
+            <a href="http://www.moduland.ir" target="_blank" title="Moduland Website"><img src="images/moduland.jpg" height="128px" width="128px" alt="Moduland Website"></a>
+        </div>
     
-<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><dl><dt><a name="-convert_bytes"><strong>convert_bytes</strong></a>(num)</dt><dd><tt>convert&nbsp;num&nbsp;to&nbsp;idiomatic&nbsp;byte&nbsp;unit<br>
-:param&nbsp;num:&nbsp;the&nbsp;input&nbsp;number.<br>
-:type&nbsp;num:int<br>
-:return:&nbsp;str<br>
-&gt;&gt;&gt;&nbsp;<a href="#-convert_bytes">convert_bytes</a>(200)<br>
-'200.0&nbsp;bytes'<br>
-&gt;&gt;&gt;&nbsp;<a href="#-convert_bytes">convert_bytes</a>(6000)<br>
-'5.9&nbsp;KB'<br>
-&gt;&gt;&gt;&nbsp;<a href="#-convert_bytes">convert_bytes</a>(80000)<br>
-'78.1&nbsp;KB'</tt></dd></dl>
- <dl><dt><a name="-freeup"><strong>freeup</strong></a>(DEBUG=False)</dt><dd><tt>To&nbsp;free&nbsp;pagecache,&nbsp;dentries&nbsp;and&nbsp;inodes:<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;Amount&nbsp;of&nbsp;freeuped&nbsp;ram&nbsp;as&nbsp;string&nbsp;and&nbsp;converted&nbsp;by&nbsp;<a href="#-convert_bytes">convert_bytes</a>()</tt></dd></dl>
- <dl><dt><a name="-get_temp"><strong>get_temp</strong></a>(Zone=0, DEBUG=False)</dt><dd><tt>This&nbsp;Function&nbsp;Wrote&nbsp;for&nbsp;Orangepi&nbsp;to&nbsp;read&nbsp;cpu&nbsp;temperature<br>
-:param&nbsp;DEBUG&nbsp;:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:param&nbsp;Zone&nbsp;:&nbsp;Thermal&nbsp;Zone&nbsp;Index<br>
-:type&nbsp;DEBUG:bool<br>
-:type&nbsp;Zone:int<br>
-:return:&nbsp;Board&nbsp;Temp&nbsp;as&nbsp;string&nbsp;in&nbsp;celsius</tt></dd></dl>
- <dl><dt><a name="-global_ip"><strong>global_ip</strong></a>(DEBUG=False)</dt><dd><tt>return&nbsp;ip&nbsp;with&nbsp;by&nbsp;<a href="http://ipinfo.io/ip">http://ipinfo.io/ip</a>&nbsp;api<br>
-:param&nbsp;DEBUG:Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;global&nbsp;ip&nbsp;as&nbsp;string</tt></dd></dl>
- <dl><dt><a name="-hdmi_off"><strong>hdmi_off</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;turn&nbsp;off&nbsp;hdmi&nbsp;port&nbsp;(need&nbsp;sudo&nbsp;-s)<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;bool</tt></dd></dl>
- <dl><dt><a name="-hdmi_on"><strong>hdmi_on</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;turn&nbsp;on&nbsp;hdmi&nbsp;port&nbsp;(need&nbsp;sudo&nbsp;-s)<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;bool</tt></dd></dl>
- <dl><dt><a name="-hdmi_size"><strong>hdmi_size</strong></a>(v=None, h=None, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;change&nbsp;hdmi&nbsp;display&nbsp;resolution&nbsp;(need&nbsp;sudo&nbsp;-s)&nbsp;(if&nbsp;call&nbsp;without&nbsp;any&nbsp;argument&nbsp;return&nbsp;current&nbsp;resolution)<br>
-:param&nbsp;v:&nbsp;vertical&nbsp;line<br>
-:param&nbsp;h:&nbsp;horizental&nbsp;line<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;v&nbsp;:&nbsp;int<br>
-:type&nbsp;h:int<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;bool</tt></dd></dl>
- <dl><dt><a name="-idletime"><strong>idletime</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;system&nbsp;idletime<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;system&nbsp;idle&nbsp;as&nbsp;string</tt></dd></dl>
- <dl><dt><a name="-internet"><strong>internet</strong></a>(host='8.8.8.8', port=53, timeout=3)</dt><dd><tt>Check&nbsp;Internet&nbsp;Connections.<br>
-:param&nbsp;&nbsp;host:&nbsp;the&nbsp;host&nbsp;that&nbsp;check&nbsp;connection&nbsp;to<br>
-:param&nbsp;&nbsp;port:&nbsp;port&nbsp;that&nbsp;check&nbsp;connection&nbsp;with<br>
-:param&nbsp;&nbsp;timeout:&nbsp;times&nbsp;that&nbsp;check&nbsp;the&nbsp;connnection<br>
-:type&nbsp;host:str<br>
-:type&nbsp;port:int<br>
-:type&nbsp;timeout:int<br>
-:return&nbsp;bool:&nbsp;True&nbsp;if&nbsp;Connection&nbsp;is&nbsp;Stable<br>
-&gt;&gt;&gt;&nbsp;<a href="#-internet">internet</a>()&nbsp;#&nbsp;if&nbsp;there&nbsp;is&nbsp;stable&nbsp;internet&nbsp;connection<br>
-True<br>
-&gt;&gt;&gt;&nbsp;<a href="#-internet">internet</a>()&nbsp;#&nbsp;if&nbsp;there&nbsp;is&nbsp;no&nbsp;stable&nbsp;internet&nbsp;connection<br>
-False</tt></dd></dl>
- <dl><dt><a name="-local_ip"><strong>local_ip</strong></a>(DEBUG=False)</dt><dd><tt>return&nbsp;local&nbsp;ip&nbsp;of&nbsp;computer&nbsp;in&nbsp;windows&nbsp;by&nbsp;socket&nbsp;module&nbsp;and&nbsp;in&nbsp;unix&nbsp;with&nbsp;hostname&nbsp;command&nbsp;in&nbsp;shell<br>
-:param&nbsp;DEBUG:Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;Mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;local&nbsp;ip&nbsp;as&nbsp;string</tt></dd></dl>
- <dl><dt><a name="-mac"><strong>mac</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;mac&nbsp;addresses&nbsp;of&nbsp;net&nbsp;devices<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;return&nbsp;mac&nbsp;addresses&nbsp;as&nbsp;dict&nbsp;with&nbsp;name&nbsp;as&nbsp;keys&nbsp;and&nbsp;mac&nbsp;addresses&nbsp;as&nbsp;values</tt></dd></dl>
- <dl><dt><a name="-mount"><strong>mount</strong></a>(device_name, mount_address=None, DEBUG=False)</dt><dd><tt>:param&nbsp;device_name:&nbsp;name&nbsp;of&nbsp;device&nbsp;for&nbsp;mounted&nbsp;example&nbsp;=&nbsp;sda1<br>
-:param&nbsp;mount_address:&nbsp;address&nbsp;for&nbsp;mounting&nbsp;device&nbsp;example&nbsp;=&nbsp;/mnt/usb&nbsp;,&nbsp;default&nbsp;value&nbsp;is&nbsp;None&nbsp;in&nbsp;this&nbsp;case&nbsp;function&nbsp;generate&nbsp;random&nbsp;number&nbsp;for&nbsp;mount&nbsp;folder&nbsp;name<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;device_name:str<br>
-:type&nbsp;mount_address:str<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;True&nbsp;if&nbsp;device&nbsp;mount&nbsp;correctly&nbsp;and&nbsp;False&nbsp;other&nbsp;wise</tt></dd></dl>
- <dl><dt><a name="-mount_status"><strong>mount_status</strong></a>(device_name, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;addresses&nbsp;of&nbsp;mounted&nbsp;memory&nbsp;devices&nbsp;in&nbsp;dev&nbsp;by&nbsp;device&nbsp;name<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;list&nbsp;of&nbsp;memory&nbsp;devices</tt></dd></dl>
- <dl><dt><a name="-ping"><strong>ping</strong></a>(ip, packet_number=3, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;ping&nbsp;ip&nbsp;and&nbsp;return&nbsp;True&nbsp;if&nbsp;this&nbsp;ip&nbsp;is&nbsp;available&nbsp;and&nbsp;False&nbsp;otherwise<br>
-:param&nbsp;ip:&nbsp;target&nbsp;ip<br>
-:param&nbsp;packet_number:&nbsp;numer&nbsp;of&nbsp;packet&nbsp;to&nbsp;size<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;ip&nbsp;:str<br>
-:type&nbsp;packet_number:int<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;a&nbsp;boolean&nbsp;value&nbsp;(True&nbsp;if&nbsp;ip&nbsp;is&nbsp;available&nbsp;and&nbsp;False&nbsp;otherwise)</tt></dd></dl>
- <dl><dt><a name="-ram_free"><strong>ram_free</strong></a>(convert=True)</dt><dd><tt>Return&nbsp;how&nbsp;much&nbsp;ram&nbsp;is&nbsp;available<br>
-:param&nbsp;convert:&nbsp;Flag&nbsp;for&nbsp;convert&nbsp;mode&nbsp;(using&nbsp;of&nbsp;convert_byte&nbsp;function)<br>
-:type&nbsp;convert&nbsp;:&nbsp;bool<br>
-:return:&nbsp;how&nbsp;much&nbsp;ram&nbsp;is&nbsp;available</tt></dd></dl>
- <dl><dt><a name="-ram_percent"><strong>ram_percent</strong></a>()</dt><dd><tt>Return&nbsp;available&nbsp;ram&nbsp;percentage<br>
-:return:&nbsp;availabe&nbsp;ram&nbsp;percentage&nbsp;as&nbsp;string&nbsp;with&nbsp;%</tt></dd></dl>
- <dl><dt><a name="-ram_total"><strong>ram_total</strong></a>(convert=True)</dt><dd><tt>Return&nbsp;total&nbsp;ram&nbsp;of&nbsp;board<br>
-:param&nbsp;convert:&nbsp;Flag&nbsp;for&nbsp;convert&nbsp;mode&nbsp;(using&nbsp;of&nbsp;convert_byte&nbsp;function)<br>
-:type&nbsp;convert:bool<br>
-:return:&nbsp;total&nbsp;ram&nbsp;of&nbsp;board&nbsp;as&nbsp;string</tt></dd></dl>
- <dl><dt><a name="-ram_used"><strong>ram_used</strong></a>(convert=True)</dt><dd><tt>Return&nbsp;how&nbsp;much&nbsp;ram&nbsp;is&nbsp;using<br>
-:param&nbsp;convert:&nbsp;Flag&nbsp;for&nbsp;convert&nbsp;mode&nbsp;(using&nbsp;of&nbsp;convert_byte&nbsp;function)<br>
-:type&nbsp;convert:bool<br>
-:return:&nbsp;how&nbsp;much&nbsp;ram&nbsp;is&nbsp;using&nbsp;as&nbsp;string</tt></dd></dl>
- <dl><dt><a name="-random_generator"><strong>random_generator</strong></a>(number)</dt></dl>
- <dl><dt><a name="-set_ip"><strong>set_ip</strong></a>(ip, DEVICE='eth0', DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;set&nbsp;static&nbsp;ip&nbsp;in&nbsp;interfaces&nbsp;file&nbsp;(need&nbsp;sudo)<br>
-:param&nbsp;DEVICE:&nbsp;network&nbsp;device&nbsp;name<br>
-:type&nbsp;DEVICE:str<br>
-:param&nbsp;ip:&nbsp;static&nbsp;ip<br>
-:type&nbsp;ip&nbsp;:str<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;True&nbsp;in&nbsp;successful</tt></dd></dl>
- <dl><dt><a name="-sleep"><strong>sleep</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;is&nbsp;a&nbsp;shortcut&nbsp;for&nbsp;sleep&nbsp;(need&nbsp;sudo)<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;None</tt></dd></dl>
- <dl><dt><a name="-storage_status"><strong>storage_status</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;all&nbsp;of&nbsp;the&nbsp;inserted&nbsp;memory&nbsp;and&nbsp;their&nbsp;status<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;All&nbsp;of&nbsp;the&nbsp;inserted&nbsp;memory&nbsp;and&nbsp;their&nbsp;status&nbsp;as&nbsp;dictionary&nbsp;(&nbsp;device&nbsp;name&nbsp;as&nbsp;keys&nbsp;and&nbsp;mount&nbsp;status&nbsp;(mounted_addresses&nbsp;as&nbsp;list&nbsp;and&nbsp;u&nbsp;--&gt;&nbsp;unmounted)&nbsp;as&nbsp;values</tt></dd></dl>
- <dl><dt><a name="-time_convert"><strong>time_convert</strong></a>(input_string)</dt><dd><tt>This&nbsp;function&nbsp;convert&nbsp;input_string&nbsp;from&nbsp;uptime&nbsp;from&nbsp;sec&nbsp;to&nbsp;DD,HH,MM,SS&nbsp;Format<br>
-:param&nbsp;input_string:&nbsp;input&nbsp;time&nbsp;string&nbsp;&nbsp;in&nbsp;sec<br>
-:type&nbsp;input_string:str<br>
-:return:&nbsp;converted&nbsp;time&nbsp;as&nbsp;string</tt></dd></dl>
- <dl><dt><a name="-unmount"><strong>unmount</strong></a>(ADDRESS, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;unmount&nbsp;memory&nbsp;devices&nbsp;by&nbsp;addresses<br>
-:param&nbsp;ADDRESS:&nbsp;address&nbsp;of&nbsp;that&nbsp;device&nbsp;mount&nbsp;on<br>
-:type&nbsp;ADDRESS:str<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;True&nbsp;if&nbsp;device&nbsp;unmount&nbsp;correctly&nbsp;and&nbsp;False&nbsp;other&nbsp;wise</tt></dd></dl>
- <dl><dt><a name="-unmount_all"><strong>unmount_all</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;unmount&nbsp;all&nbsp;of&nbsp;the&nbsp;mounted&nbsp;devices<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;return&nbsp;True&nbsp;if&nbsp;all&nbsp;of&nbsp;the&nbsp;mounted&nbsp;devices&nbsp;unmount&nbsp;correctly</tt></dd></dl>
- <dl><dt><a name="-uptime"><strong>uptime</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;system&nbsp;uptime<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;system&nbsp;uptime&nbsp;as&nbsp;string</tt></dd></dl>
- <dl><dt><a name="-version"><strong>version</strong></a>()</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;orangetool&nbsp;version&nbsp;(for&nbsp;test)<br>
-:return:&nbsp;return&nbsp;orangetool-version&nbsp;number&nbsp;as&nbsp;string</tt></dd></dl>
- <dl><dt><a name="-wakeup"><strong>wakeup</strong></a>(day=0, hour=0, minute=0, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;set&nbsp;wakeup&nbsp;time&nbsp;for&nbsp;kernel&nbsp;RTC&nbsp;(need&nbsp;sudo)<br>
-:param&nbsp;day:&nbsp;days&nbsp;for&nbsp;wakeup<br>
-:param&nbsp;hour:&nbsp;hout&nbsp;for&nbsp;wakeup<br>
-:param&nbsp;minute:&nbsp;minute&nbsp;for&nbsp;wakeup<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;day:int<br>
-:type&nbsp;hour:int<br>
-:type&nbsp;minute:int<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;bool</tt></dd></dl>
- <dl><dt><a name="-zero_insert"><strong>zero_insert</strong></a>(input_string)</dt><dd><tt>This&nbsp;function&nbsp;get&nbsp;a&nbsp;string&nbsp;as&nbsp;input&nbsp;if&nbsp;input&nbsp;is&nbsp;one&nbsp;digit&nbsp;add&nbsp;a&nbsp;zero<br>
-:param&nbsp;input_string:&nbsp;input&nbsp;digit&nbsp;az&nbsp;string<br>
-:type&nbsp;input_string:str<br>
-:return:&nbsp;modified&nbsp;output&nbsp;as&nbsp;str</tt></dd></dl>
-</td></tr></table><p>
+    
+    
+    
+    
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+    </body>
+
+
+
+
+
+
+
+
 
-</body></html>
\ No newline at end of file
+</html>
\ No newline at end of file
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..30532b1
--- /dev/null
+++ b/style.css
@@ -0,0 +1,25 @@
+.logo{
+    vertical-align: middle;
+    margin: 10 10 10 10;
+    padding: 80 10 10 10;
+}
+
+body{
+    border: 8px;
+    border-style: groove;
+    
+}
+
+.button{
+    padding-top: 50px
+}
+
+a{
+  opacity: 1; 
+  transition: opacity 3s;
+  -webkit-transition: opacity 3s;
+}
+
+a:hover{
+    opacity: 0.3;
+}
\ No newline at end of file

From bf20064557575b17ddfaa7aca6a7ad07c17cf442 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 11 Mar 2017 16:26:24 +0330
Subject: [PATCH 003/104] docs : update in site

---
 404.html                                |   6 +-----
 doc/{doc.html => index.html}            |   2 +-
 orangetool.jpg => images/orangetool.jpg | Bin
 index.html                              |  16 ++++++++++++++--
 style.css                               |   4 ++--
 5 files changed, 18 insertions(+), 10 deletions(-)
 rename doc/{doc.html => index.html} (98%)
 rename orangetool.jpg => images/orangetool.jpg (100%)

diff --git a/404.html b/404.html
index cf12b8f..0a30ede 100644
--- a/404.html
+++ b/404.html
@@ -1,16 +1,12 @@
 <html>
 	<head>
 		<title>Page not found</title>
-        <meta name="description" content="Orangetool By Moduland"/>
-        <meta property="og:title" content="Orangetool" />
-        <meta property="og:site_name" content="http://moduland.github.io/Orangetool"/>
-        <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
         
 		
 </head>
 	<body >
 		<div style="margin-top:200px;text-align:center;" >
-		<img src="orangetool.jpg" height=240px width=320px alt="orangetool logo">
+		<img src="http://moduland.github.io/Orangetool/images/orangetool.jpg" height=240px width=320px alt="orangetool logo">
         <br/>
         <p style="font-size:30px; text-decoration:None;">Page not found</p>
         <a href="http://moduland.github.io/Orangetool" style="font-size:30px;border:2px groove;border-radius:23px;text-decoration:None;padding:5px;background:azure; ">Home</a>
diff --git a/doc/doc.html b/doc/index.html
similarity index 98%
rename from doc/doc.html
rename to doc/index.html
index 747bda8..b95a06c 100644
--- a/doc/doc.html
+++ b/doc/index.html
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head><body >
     <div align="center">
-<img src="orangetool.jpg" height=240px width=320px>
+<a href="http://moduland.github.io/Orangetool"><img src="http://moduland.github.io/Orangetool/images/orangetool.jpg" height=240px width=320px></a>
     <p></p>
     </div>
 <p>
diff --git a/orangetool.jpg b/images/orangetool.jpg
similarity index 100%
rename from orangetool.jpg
rename to images/orangetool.jpg
diff --git a/index.html b/index.html
index db7923b..d1a3023 100644
--- a/index.html
+++ b/index.html
@@ -2,15 +2,27 @@
     <head>
         <title>Orangetool</title>
         <link href="style.css" rel="stylesheet" type="text/css">
+        <meta name="description" content="Orangetool By Moduland"/>
+        <meta property="og:title" content="Orangetool" />
+        <meta property="og:site_name" content="http://moduland.github.io/Orangetool"/>
+        <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
     </head>
     <body>
         <div class="logo"  align="center">
-            <img src="orangetool.jpg" height="400px" width="600px">
+            <img src="images/orangetool.jpg" height="400px" width="600px">
+            <br/>
+            <h2>General and useful scripts that developed for Single-Board Computers (Under Development)</h2>
         </div>
+        <hr/>
         
-        <div class="badges">
+        <div class="badges" align="center">
+            <a href="https://scrutinizer-ci.com/g/Moduland/Orangetool/?branch=master"><img src="https://scrutinizer-ci.com/g/Moduland/Orangetool/badges/quality-score.png?b=master"></a>
+            <a href="https://scrutinizer-ci.com/g/Moduland/Orangetool/build-status/master"><img src="https://scrutinizer-ci.com/g/Moduland/Orangetool/badges/build.png?b=master"></a>
+            <a href="http://www.python.org"><img src="https://img.shields.io/badge/python-3.3%2C3.4%2C3.5%2C3.6-blue.svg"></a>
+            <a href="https://badge.fury.io/py/orangetool"><img src="https://badge.fury.io/py/orangetool.svg"></a>
         
         </div>
+        <hr/>
         <div class="button" align="center">
         
         
diff --git a/style.css b/style.css
index 30532b1..c3ba643 100644
--- a/style.css
+++ b/style.css
@@ -1,7 +1,7 @@
 .logo{
     vertical-align: middle;
     margin: 10 10 10 10;
-    padding: 80 10 10 10;
+    padding: 90 10 10 10;
 }
 
 body{
@@ -11,7 +11,7 @@ body{
 }
 
 .button{
-    padding-top: 50px
+    padding-top: 60px
 }
 
 a{

From 841d5a6084e5c4db4e1e2e0cb5b69a9ab6ad6728 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 11 Mar 2017 16:37:33 +0330
Subject: [PATCH 004/104] minor edit in site

---
 style.css | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/style.css b/style.css
index c3ba643..1c06c6d 100644
--- a/style.css
+++ b/style.css
@@ -6,7 +6,10 @@
 
 body{
     border: 8px;
+    border-color:darkorange;
+    background-color:white;
     border-style: groove;
+    font-family: 'Baloo Bhaina', cursive;
     
 }
 
@@ -22,4 +25,11 @@ a{
 
 a:hover{
     opacity: 0.3;
+}
+hr{
+    border-color: darkorange;
+    border-style:double;
+}
+.badges{
+    padding-top: 4px;
 }
\ No newline at end of file

From e22964faeaa611d49d4a71588493a627624a17f2 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 11 Mar 2017 17:06:12 +0330
Subject: [PATCH 005/104] website update

---
 doc/index.html      |   2 +-
 images/download.png | Bin 0 -> 11844 bytes
 images/fork.png     | Bin 0 -> 6727 bytes
 index.html          |  18 ++++++++----------
 style.css           |   9 +++++++--
 5 files changed, 16 insertions(+), 13 deletions(-)
 create mode 100644 images/download.png
 create mode 100644 images/fork.png

diff --git a/doc/index.html b/doc/index.html
index b95a06c..a7ecfa6 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head><title>Python: module orangetool</title>
+<html><head><title>Orangetool Doc</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head><body >
     <div align="center">
diff --git a/images/download.png b/images/download.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd26a0905c926ac918d122979ba63f5ef02003d5
GIT binary patch
diff --git a/images/fork.png b/images/fork.png
new file mode 100644
index 0000000000000000000000000000000000000000..60c60a6342300f3a0674a805d14d0758fae79114
GIT binary patch
diff --git a/index.html b/index.html
index d1a3023..08084fe 100644
--- a/index.html
+++ b/index.html
@@ -8,26 +8,24 @@
         <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
     </head>
     <body>
+        	<a href="https://github.com/sepandhaghighi/qpage">
+                <img  target="_blank" src="images/fork.png" alt="Fork Orangetool On Github" class="fork">
+            </a>
         <div class="logo"  align="center">
             <img src="images/orangetool.jpg" height="400px" width="600px">
             <br/>
-            <h2>General and useful scripts that developed for Single-Board Computers (Under Development)</h2>
+            <h2>General and useful python-scripts developed for Single-Board Computers (Under Development)</h2>
+            <h3>Tested on Lubuntu 14.04 / Orange Pi-PC</h3>
         </div>
-        <hr/>
-        
-        <div class="badges" align="center">
-            <a href="https://scrutinizer-ci.com/g/Moduland/Orangetool/?branch=master"><img src="https://scrutinizer-ci.com/g/Moduland/Orangetool/badges/quality-score.png?b=master"></a>
-            <a href="https://scrutinizer-ci.com/g/Moduland/Orangetool/build-status/master"><img src="https://scrutinizer-ci.com/g/Moduland/Orangetool/badges/build.png?b=master"></a>
-            <a href="http://www.python.org"><img src="https://img.shields.io/badge/python-3.3%2C3.4%2C3.5%2C3.6-blue.svg"></a>
-            <a href="https://badge.fury.io/py/orangetool"><img src="https://badge.fury.io/py/orangetool.svg"></a>
-        
+        <div align="center">
+        <a href="https://github.com/Moduland/Orangetool/archive/master.zip" title="Download Source"><img src="images/download.png" height="128px" width="128px" alt="Download Source"></a>
         </div>
-        <hr/>
         <div class="button" align="center">
         
         
             <a href="http://github.com/moduland/orangetool" target="_blank" title="Orangetool Github"><img src="images/github.png" alt="Orangetool Github"></a>
             <a href="http://moduland.github.io/Orangetool/doc" target="_blank" title="Orangetool Doc"><img src="images/doc.png" alt="Orangetool Doc"></a>
+            
             <a href="http://www.moduland.ir" target="_blank" title="Moduland Website"><img src="images/moduland.jpg" height="128px" width="128px" alt="Moduland Website"></a>
         </div>
     
diff --git a/style.css b/style.css
index 1c06c6d..bc0ca9f 100644
--- a/style.css
+++ b/style.css
@@ -30,6 +30,11 @@ hr{
     border-color: darkorange;
     border-style:double;
 }
-.badges{
-    padding-top: 4px;
+.fork-pc{
+    top: 0;
+    border: 0;
+    left: 0;
+    position: absolute;
+    animation-duration: 4s;
+    animation-iteration-count: infinite;
 }
\ No newline at end of file

From 44f3390054b711ebaf5856cd6ace01fb60880b0f Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 11 Mar 2017 17:15:58 +0330
Subject: [PATCH 006/104] fix: orangetool link updated

---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index 08084fe..fd00a1f 100644
--- a/index.html
+++ b/index.html
@@ -8,7 +8,7 @@
         <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
     </head>
     <body>
-        	<a href="https://github.com/sepandhaghighi/qpage">
+        	<a href="http://github.com/moduland/orangetool">
                 <img  target="_blank" src="images/fork.png" alt="Fork Orangetool On Github" class="fork">
             </a>
         <div class="logo"  align="center">

From 3bc2829fc21e6654cc098bd2bfb0b87d6c19c74e Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 11 Mar 2017 17:21:36 +0330
Subject: [PATCH 007/104] fix : final update

---
 index.html | 10 ++--------
 style.css  |  3 ++-
 2 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/index.html b/index.html
index fd00a1f..8abaa74 100644
--- a/index.html
+++ b/index.html
@@ -8,24 +8,18 @@
         <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
     </head>
     <body>
-        	<a href="http://github.com/moduland/orangetool">
-                <img  target="_blank" src="images/fork.png" alt="Fork Orangetool On Github" class="fork">
-            </a>
+        	
         <div class="logo"  align="center">
             <img src="images/orangetool.jpg" height="400px" width="600px">
             <br/>
             <h2>General and useful python-scripts developed for Single-Board Computers (Under Development)</h2>
             <h3>Tested on Lubuntu 14.04 / Orange Pi-PC</h3>
         </div>
-        <div align="center">
-        <a href="https://github.com/Moduland/Orangetool/archive/master.zip" title="Download Source"><img src="images/download.png" height="128px" width="128px" alt="Download Source"></a>
-        </div>
         <div class="button" align="center">
         
-        
+            <a href="https://github.com/Moduland/Orangetool/archive/master.zip" title="Download Source"><img src="images/download.png" height="128px" width="128px" alt="Download Source"></a>
             <a href="http://github.com/moduland/orangetool" target="_blank" title="Orangetool Github"><img src="images/github.png" alt="Orangetool Github"></a>
             <a href="http://moduland.github.io/Orangetool/doc" target="_blank" title="Orangetool Doc"><img src="images/doc.png" alt="Orangetool Doc"></a>
-            
             <a href="http://www.moduland.ir" target="_blank" title="Moduland Website"><img src="images/moduland.jpg" height="128px" width="128px" alt="Moduland Website"></a>
         </div>
     
diff --git a/style.css b/style.css
index bc0ca9f..5363030 100644
--- a/style.css
+++ b/style.css
@@ -1,7 +1,7 @@
 .logo{
     vertical-align: middle;
     margin: 10 10 10 10;
-    padding: 90 10 10 10;
+    padding: 40 10 10 10;
 }
 
 body{
@@ -37,4 +37,5 @@ hr{
     position: absolute;
     animation-duration: 4s;
     animation-iteration-count: infinite;
+    position: relative;
 }
\ No newline at end of file

From 6b2d40d075b3dcafeac66d1cf7cd0cd6c60854ae Mon Sep 17 00:00:00 2001
From: Sepand Haghighi <sepand.haghighi@yahoo.com>
Date: Mon, 13 Mar 2017 17:49:08 +0330
Subject: [PATCH 008/104] Add CNAME

---
 CNAME | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 CNAME

diff --git a/CNAME b/CNAME
new file mode 100644
index 0000000..f46234a
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+www.orangetool.ir

From dddf5ea67c9060d803b40e57430b3a2c6aec6e1c Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Wed, 22 Mar 2017 23:26:48 +0430
Subject: [PATCH 009/104] test

---
 site-test/2Gk1898126uyqB44.html | 126 ++++++++++++++++++
 site-test/404.html              |  18 +++
 site-test/9ZOcz6kuM3h3W8mu.html |  29 ++++
 site-test/fonts/Yekan.ttf       | Bin 0 -> 51652 bytes
 site-test/index.html            |  47 +++++++
 site-test/rR6732XLw0Q7805Z.html |  24 ++++
 site-test/script.js             |  27 ++++
 site-test/style.css             | 228 ++++++++++++++++++++++++++++++++
 8 files changed, 499 insertions(+)
 create mode 100644 site-test/2Gk1898126uyqB44.html
 create mode 100644 site-test/404.html
 create mode 100644 site-test/9ZOcz6kuM3h3W8mu.html
 create mode 100644 site-test/fonts/Yekan.ttf
 create mode 100644 site-test/index.html
 create mode 100644 site-test/rR6732XLw0Q7805Z.html
 create mode 100644 site-test/script.js
 create mode 100644 site-test/style.css

diff --git a/site-test/2Gk1898126uyqB44.html b/site-test/2Gk1898126uyqB44.html
new file mode 100644
index 0000000..fd0d0b9
--- /dev/null
+++ b/site-test/2Gk1898126uyqB44.html
@@ -0,0 +1,126 @@
+<html>
+
+    <head>
+        <link href="style.css" rel="stylesheet" type="text/css">
+        <title>راهنمای طبقات</title>
+        <title>راهنمای طبقات</title>
+    </head>
+    <body id="body-screen">
+        <div class="first-class" id="floor-1">
+            <p>طبقه اول</p>
+            <div class="second-class">
+                <p>کلاس 1</p>
+                <p>کلاس 2</p>
+                <p>کلاس 3</p>
+                <p>کلاس 4</p>
+                <p>کلاس 5</p>
+                <p>کلاس 6</p>
+            </div>
+        </div>
+         <div class="first-class" id="floor-2">
+            <p>طبقه دوم</p>
+            <div class="second-class">
+                <p>کلاس 1</p>
+                <p>کلاس 2</p>
+                <p>کلاس 3</p>
+                <p>کلاس 4</p>
+                <p>کلاس 5</p>
+                <p>کلاس 6</p>
+            </div>
+        </div>
+        <div class="first-class" id="floor-3">
+            <p>طبقه سوم</p>
+            <div class="second-class">
+                <p>کلاس 1</p>
+                <p>کلاس 2</p>
+                <p>کلاس 3</p>
+                <p>کلاس 4</p>
+                <p>کلاس 5</p>
+                <p>کلاس 6</p>
+            </div>
+        </div>
+        <div class="first-class" id="floor-4">
+            <p>طبقه چهارم</p>
+            <div class="second-class">
+                <p>کلاس 1</p>
+                <p>کلاس 2</p>
+                <p>کلاس 3</p>
+                <p>کلاس 4</p>
+                <p>کلاس 5</p>
+                <p>کلاس 6</p>
+            </div>
+        </div>
+        <div class="first-class" id="floor-5">
+            <p>طبقه پنجم</p>
+            <div class="second-class">
+                <p>کلاس 1</p>
+                <p>کلاس 2</p>
+                <p>کلاس 3</p>
+                <p>کلاس 4</p>
+                <p>کلاس 5</p>
+                <p>کلاس 6</p>
+            </div>
+        </div>
+        <div class="first-class" id="floor-6">
+            <p>طبقه ششم</p>
+            <div class="second-class">
+                <p>کلاس 1</p>
+                <p>کلاس 2</p>
+                <p>کلاس 3</p>
+                <p>کلاس 4</p>
+                <p>کلاس 5</p>
+                <p>کلاس 6</p>
+            </div>
+        </div>
+        <div class="first-class" id="floor-7">
+            <p>طبقه هفتم</p>
+            <div class="second-class">
+                <p>کلاس 1</p>
+                <p>کلاس 2</p>
+                <p>کلاس 3</p>
+                <p>کلاس 4</p>
+                <p>کلاس 5</p>
+                <p>کلاس 6</p>
+            </div>
+        </div>
+        <div class="first-class" id="floor-8">
+            <p>طبقه هشتم</p>
+            <div class="second-class">
+                <p>کلاس 1</p>
+                <p>کلاس 2</p>
+                <p>کلاس 3</p>
+                <p>کلاس 4</p>
+                <p>کلاس 5</p>
+                <p>کلاس 6</p>
+            </div>
+        </div>
+        <div class="first-class" id="floor-9">
+            <p>طبقه نهم</p>
+            <div class="second-class">
+                <p>کلاس 1</p>
+                <p>کلاس 2</p>
+                <p>کلاس 3</p>
+                <p>کلاس 4</p>
+                <p>کلاس 5</p>
+                <p>کلاس 6</p>
+            </div>
+        </div>
+        <div class="first-class" id="floor-10">
+            <p>طبقه دهم</p>
+            <div class="second-class">
+                <p>کلاس 1</p>
+                <p>کلاس 2</p>
+                <p>کلاس 3</p>
+                <p>کلاس 4</p>
+                <p>کلاس 5</p>
+                <p>کلاس 6</p>
+            </div>
+        </div>
+      
+        <marquee direction="right">لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد</marquee>
+    </body>
+
+
+
+
+</html>
\ No newline at end of file
diff --git a/site-test/404.html b/site-test/404.html
new file mode 100644
index 0000000..0a30ede
--- /dev/null
+++ b/site-test/404.html
@@ -0,0 +1,18 @@
+<html>
+	<head>
+		<title>Page not found</title>
+        
+		
+</head>
+	<body >
+		<div style="margin-top:200px;text-align:center;" >
+		<img src="http://moduland.github.io/Orangetool/images/orangetool.jpg" height=240px width=320px alt="orangetool logo">
+        <br/>
+        <p style="font-size:30px; text-decoration:None;">Page not found</p>
+        <a href="http://moduland.github.io/Orangetool" style="font-size:30px;border:2px groove;border-radius:23px;text-decoration:None;padding:5px;background:azure; ">Home</a>
+            
+        </div>
+	</body>
+
+
+</html>
diff --git a/site-test/9ZOcz6kuM3h3W8mu.html b/site-test/9ZOcz6kuM3h3W8mu.html
new file mode 100644
index 0000000..1ab7bac
--- /dev/null
+++ b/site-test/9ZOcz6kuM3h3W8mu.html
@@ -0,0 +1,29 @@
+<html>
+    <head>
+        <link href="style.css" rel="stylesheet" type="text/css">
+        <script src="script.js"></script>
+        <title>ورود</title>
+    </head>
+<body id="body-login">
+    
+<div class="login-page">
+  <div id="login-head">
+      <p>سامانه اطلاع رسانی <br/> ساختمان ابوریحان</p>
+  </div>
+  <div class="form">
+    <p id="error-message"></p>
+    <form class="login-form" action="">
+      <input type="text" placeholder="نام کاربری" style="text-align:right;"/ id="username">
+      <input type="password" placeholder="کلمه عبور" style="text-align:right;"/ id="password">
+      <div class="checkbox">
+          <label >مرا به خاطر بسپار<input type="checkbox" name="remember" value="rem" checked></label>
+      </div>
+      <input type="button" onclick="login();" id="login-button" value="ورود">
+    </form>
+  </div>
+</div>
+    <div id="login-footer">
+        <p> ایده پردازان فناور ماورا &#169 1395</p>
+    </div>
+</body>
+</html>
\ No newline at end of file
diff --git a/site-test/fonts/Yekan.ttf b/site-test/fonts/Yekan.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..3cd474ab126d5855ff817824fa424e2e92fa8a0f
GIT binary patch
diff --git a/site-test/index.html b/site-test/index.html
new file mode 100644
index 0000000..e719469
--- /dev/null
+++ b/site-test/index.html
@@ -0,0 +1,47 @@
+<html>
+    
+    
+    <head>
+        <title>Pages</title>
+        <link href="style.css" rel="stylesheet" type="text/css">
+    </head>
+    <body>
+    
+        <div id="list-page">
+            <a href="2Gk1898126uyqB44.html" target="_blank">Screen Page</a> 
+            <hr/>
+            <a href="9ZOcz6kuM3h3W8mu.html" target="_blank">Login Page</a>
+            <hr/>
+            <a href="Q340zUxL4o80N5RY.html" target="_blank">Page 1</a> 
+            <hr/>
+            <a href="cz695AF26r2E82b3.html" target="_blank">Page 2</a>
+            <hr/>
+            <a href="70MX4c03212EI40I.html" target="_blank">Page 3</a> 
+            <hr/>
+            <a href="Di6y7X7l90c58EAC.html" target="_blank">Page 4</a> 
+            <hr/>
+            <a href="9589snNj748Pg5nh.html" target="_blank">Page 5</a> 
+            <hr/>
+            <a href="i1HRoR08kG6hJ0VF.html" target="_blank">Page 6</a> 
+            <hr/>
+            <a href="026Pyk1RB9S82dYZ.html" target="_blank">Page 7</a> 
+            <hr/>
+            <a href="0Bz3u9S71z3WXAjF.html" target="_blank">Page 8</a> 
+            <hr/>
+            <a href="124B01SpuRnB0Mew.html" target="_blank">Page 9</a> 
+            
+        
+        
+        
+        
+        </div>
+    
+    
+    
+    </body>
+
+
+
+
+
+</html>
\ No newline at end of file
diff --git a/site-test/rR6732XLw0Q7805Z.html b/site-test/rR6732XLw0Q7805Z.html
new file mode 100644
index 0000000..6dc56c2
--- /dev/null
+++ b/site-test/rR6732XLw0Q7805Z.html
@@ -0,0 +1,24 @@
+<html>
+    <head>
+        <link href="style.css" rel="stylesheet" type="text/css">
+        <script src="script.js"></script>
+    
+    </head>
+    <bodyb id="body-index">
+        <div class="topnav" id="myTopnav">
+            <a href="#home">Home</a>
+            <a href="#news">News</a>
+            <a href="#contact">Contact</a>
+            <a href="#about">About</a>
+            <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
+            </div>
+        
+        <div id="login-footer">
+        <p> ایده پردازان فناور ماورا &#169 1395</p>
+    </div>
+    </body>
+
+
+
+
+</html>
\ No newline at end of file
diff --git a/site-test/script.js b/site-test/script.js
new file mode 100644
index 0000000..dd5ef91
--- /dev/null
+++ b/site-test/script.js
@@ -0,0 +1,27 @@
+function login(){
+    var password;
+    var username;
+    var message;
+    username=document.getElementById("username").value;
+    password=document.getElementById("password").value;
+    message=document.getElementById("error-message")
+    if (username.length==0){
+    message.innerHTML="نام کاربری خود را وارد کنید";
+    }
+    else if (password.length==0){
+       message.innerHTML="کلمه عبور خود را وارد کنید"; 
+    }
+    
+    setTimeout(function(){message.innerHTML=""},"4000");
+}
+
+
+
+function myFunction() {
+    var x = document.getElementById("myTopnav");
+    if (x.className === "topnav") {
+        x.className += " responsive";
+    } else {
+        x.className = "topnav";
+    }
+}
\ No newline at end of file
diff --git a/site-test/style.css b/site-test/style.css
new file mode 100644
index 0000000..cf03a2d
--- /dev/null
+++ b/site-test/style.css
@@ -0,0 +1,228 @@
+@font-face {
+    font-family: "yekan";
+    src:url("fonts/Yekan.eot?#") format("eot"),    
+          url("fonts/Yekan.woff") format("woff"),
+          url("fonts/Yekan.ttf") format("truetype"); 
+}
+
+#body-screen,#body-index{
+    font-family: "yekan";
+}
+
+.first-class{
+    text-align: center;
+    float: left;
+    height: 40%;
+    width: 15%;
+    padding: 10 10 10 10;
+    margin:10 10 10 50;
+    border-radius: 4px;
+    font-size: 24px;
+}
+#floor-1{
+    background-color: red;
+}
+#floor-2{
+    background-color: yellowgreen;
+}
+#floor-3{
+    background-color: red;
+}
+#floor-4{
+    background-color: orange;
+}
+#floor-5{
+    background-color: skyblue;
+}
+#floor-6{
+    background-color: yellow;
+}
+#floor-7{
+    background-color: darkgreen;
+}
+#floor-8{
+    background-color: darkgoldenrod;
+}
+#floor-9{
+    background-color: lightgoldenrodyellow;
+}
+#floor-10{
+    background-color: mediumaquamarine;
+}
+.second-class{
+    background-color: azure;
+    text-align: right;
+    padding: 10 10 10 10;
+    margin: 10 10 10 10;
+    font-size:16px;
+    border-radius: 4px;
+}
+marquee{
+    margin-top: 50px;
+    border-style: groove;
+    border-width: thin;
+    padding-top: 5px;
+    padding-bottom: 5px;
+    font-size: 20px;
+    color: deeppink;
+}
+.login-page {
+  width: 360px;
+  padding: 8% 0 0;
+  margin: auto;
+  z-index: 2;
+}
+.form {
+  position: relative;
+  z-index: 1;
+  background-color: cornflowerblue;
+  max-width: 360px;
+  margin: 0 auto 100px;
+  padding: 45px;
+  text-align: center;
+  box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
+  border-radius: 5px;
+}
+.form #username,#password {
+  font-family: "yekan";
+  outline: 0;
+  background: #f2f2f2;
+  width: 100%;
+  border: 0;
+  margin: 0 0 15px;
+  padding: 15px;
+  box-sizing: border-box;
+  font-size: 14px;
+}
+.form .checkbox{
+    text-align: right;
+    font-size: 13px;
+    margin-top: 8px;
+    margin-bottom: 10px;
+}
+.form #login-button {
+  font-family: "yekan";
+  text-transform: uppercase;
+  outline: 0;
+  background-color:green;
+  width: 100%;
+  border: 0;
+  padding: 15px;
+  color: #FFFFFF;
+  font-size: 14px;
+  -webkit-transition: all 0.3 ease;
+  transition: all 0.3 ease;
+  cursor: pointer;
+    margin: 4px;
+}
+.form button:hover,.form button:active,.form button:focus {
+  background-color: red;
+}
+.form .message {
+  margin: 15px 0 0;
+  color: #b3b3b3;
+  font-size: 12px;
+}
+.form .message a {
+  color: #4CAF50;
+  text-decoration: none;
+}
+#body-login{
+  background-color: whitesmoke;
+  font-family: "yekan";
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;      
+}
+#login-head{
+    text-align: center;
+    background-color:white;
+    width: 360px;
+    font-size: 36px;
+    color: cornflowerblue;
+    border-radius: 5px;
+}
+#login-footer{
+    width: 100%;
+    bottom: 0;
+    text-align: center;
+    background-color: cornflowerblue;
+    position: absolute;
+}
+.form #error-message{
+    color: red;
+}
+
+/* Add a black background color to the top navigation */
+.topnav {
+    background-color: #333;
+    overflow: hidden;
+}
+
+/* Style the links inside the navigation bar */
+.topnav a {
+    float: left;
+    display: block;
+    color: #f2f2f2;
+    text-align: center;
+    padding: 14px 16px;
+    text-decoration: none;
+    font-size: 17px;
+}
+
+/* Change the color of links on hover */
+.topnav a:hover {
+    background-color: #ddd;
+    color: black;
+}
+
+/* Hide the link that should open and close the topnav on small screens */
+.topnav .icon {
+    display: none;
+}
+@media all and (max-width: 1024px) {
+    .login-page{
+        width: 100%;
+    }
+    #login-head{
+        width: 100%;
+    }
+    .form {
+  position: relative;
+  z-index: 1;
+  background-color: cornflowerblue;
+  width: 100%;
+  text-align: center;
+  box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
+  border-radius: 5px;
+}
+}
+#list-page{
+    text-align: center;
+    font-size: 32px;
+}
+#list-page a{
+    text-decoration: none;
+    color:burlywood;
+}
+@media screen and (max-width: 600px) {
+  .topnav a:not(:first-child) {display: none;}
+  .topnav a.icon {
+    float: right;
+    display: block;
+  }
+}
+
+/* The "responsive" class is added to the topnav with JavaScript when the user clicks on the icon. This class makes the topnav look good on small screens (display the links vertically instead of horizontally) */
+@media screen and (max-width: 600px) {
+  .topnav.responsive {position: relative;}
+  .topnav.responsive a.icon {
+    position: absolute;
+    right: 0;
+    top: 0;
+  }
+  .topnav.responsive a {
+    float: none;
+    display: block;
+    text-align: left;
+  }
+}
\ No newline at end of file

From 419a41bc130c2f6cfcf4341dd4d3e28789982d7a Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Wed, 22 Mar 2017 23:39:25 +0430
Subject: [PATCH 010/104] minor edit in login page

---
 site-test/style.css | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/site-test/style.css b/site-test/style.css
index cf03a2d..ce54529 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -185,6 +185,7 @@ marquee{
     }
     #login-head{
         width: 100%;
+        font-size:50px;
     }
     .form {
   position: relative;
@@ -195,6 +196,16 @@ marquee{
   box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
   border-radius: 5px;
 }
+    .form #username,#password {
+  font-size: 28px;
+}
+.form .checkbox{
+    font-size: 26px;
+
+}
+    #login-footer{
+        font-size: 20px;
+    }
 }
 #list-page{
     text-align: center;

From 97847df1c79b586f8b7b5185f4738459fc9a478c Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 23 Mar 2017 00:17:55 +0430
Subject: [PATCH 011/104] mobile view

---
 site-test/9ZOcz6kuM3h3W8mu.html |   1 +
 site-test/style.css             |  22 +++++++++++++++++++---
 site-test/~$6732XLw0Q7805Z.html | Bin 0 -> 162 bytes
 3 files changed, 20 insertions(+), 3 deletions(-)
 create mode 100644 site-test/~$6732XLw0Q7805Z.html

diff --git a/site-test/9ZOcz6kuM3h3W8mu.html b/site-test/9ZOcz6kuM3h3W8mu.html
index 1ab7bac..c3337fd 100644
--- a/site-test/9ZOcz6kuM3h3W8mu.html
+++ b/site-test/9ZOcz6kuM3h3W8mu.html
@@ -18,6 +18,7 @@
       <div class="checkbox">
           <label >مرا به خاطر بسپار<input type="checkbox" name="remember" value="rem" checked></label>
       </div>
+    
       <input type="button" onclick="login();" id="login-button" value="ورود">
     </form>
   </div>
diff --git a/site-test/style.css b/site-test/style.css
index ce54529..df0ca8b 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -194,13 +194,29 @@ marquee{
   width: 100%;
   text-align: center;
   box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
+
   border-radius: 5px;
 }
-    .form #username,#password {
-  font-size: 28px;
+    .form #username,#password{
+  font-size: 30px;
+}
+.form #login-button {
+  font-family: "yekan";
+  text-transform: uppercase;
+  outline: 0;
+  background-color:green;
+  width: 100%;
+  border: 0;
+  padding: 15px;
+  color: #FFFFFF;
+  font-size: 24px;
+  -webkit-transition: all 0.3 ease;
+  transition: all 0.3 ease;
+  cursor: pointer;
+    margin: 4px;
 }
 .form .checkbox{
-    font-size: 26px;
+font-size: 20px;
 
 }
     #login-footer{
diff --git a/site-test/~$6732XLw0Q7805Z.html b/site-test/~$6732XLw0Q7805Z.html
new file mode 100644
index 0000000000000000000000000000000000000000..750bdc25c29a51746c3940c1da3231d6fbee1a3a
GIT binary patch

From e2fb2491d89f797088346060a4536b1159d69cb1 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 23 Mar 2017 00:29:58 +0430
Subject: [PATCH 012/104] style edit

---
 site-test/style.css | 28 +++-------------------------
 1 file changed, 3 insertions(+), 25 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index df0ca8b..b118395 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -179,7 +179,7 @@ marquee{
 .topnav .icon {
     display: none;
 }
-@media all and (max-width: 1024px) {
+@media all and (max-width: 600px) {
     .login-page{
         width: 100%;
     }
@@ -209,11 +209,11 @@ marquee{
   border: 0;
   padding: 15px;
   color: #FFFFFF;
-  font-size: 24px;
+  font-size: 30px;
   -webkit-transition: all 0.3 ease;
   transition: all 0.3 ease;
   cursor: pointer;
-    margin: 4px;
+  margin: 4px;
 }
 .form .checkbox{
 font-size: 20px;
@@ -231,25 +231,3 @@ font-size: 20px;
     text-decoration: none;
     color:burlywood;
 }
-@media screen and (max-width: 600px) {
-  .topnav a:not(:first-child) {display: none;}
-  .topnav a.icon {
-    float: right;
-    display: block;
-  }
-}
-
-/* The "responsive" class is added to the topnav with JavaScript when the user clicks on the icon. This class makes the topnav look good on small screens (display the links vertically instead of horizontally) */
-@media screen and (max-width: 600px) {
-  .topnav.responsive {position: relative;}
-  .topnav.responsive a.icon {
-    position: absolute;
-    right: 0;
-    top: 0;
-  }
-  .topnav.responsive a {
-    float: none;
-    display: block;
-    text-align: left;
-  }
-}
\ No newline at end of file

From 440732dc1d81c563a1f750efd9f25a13dc889376 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 23 Mar 2017 00:32:19 +0430
Subject: [PATCH 013/104] style edit

---
 site-test/style.css | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/site-test/style.css b/site-test/style.css
index b118395..22ef26a 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -179,7 +179,7 @@ marquee{
 .topnav .icon {
     display: none;
 }
-@media all and (max-width: 600px) {
+@media all and (max-width: 1024px) {
     .login-page{
         width: 100%;
     }

From 4d235bad50e22f9767fe3db6985f23f6ef87f87b Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 23 Mar 2017 02:33:03 +0430
Subject: [PATCH 014/104] index page created

---
 site-test/images/1.png          | Bin 0 -> 20457 bytes
 site-test/images/2.gif          | Bin 0 -> 4352 bytes
 site-test/images/image.jpg      | Bin 0 -> 164315 bytes
 site-test/rR6732XLw0Q7805Z.html |  76 +++++++++++++++++++++++---
 site-test/style.css             |  92 ++++++++++++++++++++++++++++++--
 5 files changed, 159 insertions(+), 9 deletions(-)
 create mode 100644 site-test/images/1.png
 create mode 100644 site-test/images/2.gif
 create mode 100644 site-test/images/image.jpg

diff --git a/site-test/images/1.png b/site-test/images/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..270f28c9db199c9641d87c011da6082aae9ff88b
GIT binary patch
diff --git a/site-test/images/2.gif b/site-test/images/2.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c81c7a0e5c3be9892097ef8f1d4864995fa0e039
GIT binary patch
diff --git a/site-test/images/image.jpg b/site-test/images/image.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ec2b3f22eb936f75e5490cf3ec37e13770feff5b
GIT binary patch
diff --git a/site-test/rR6732XLw0Q7805Z.html b/site-test/rR6732XLw0Q7805Z.html
index 6dc56c2..a890dc6 100644
--- a/site-test/rR6732XLw0Q7805Z.html
+++ b/site-test/rR6732XLw0Q7805Z.html
@@ -4,15 +4,79 @@
         <script src="script.js"></script>
     
     </head>
-    <bodyb id="body-index">
+    <body id="body-index">
+        <div class="banner">
+            
+            <div id="right-image">
+                <img src="images/1.png" height="100px" width="100px"/>
+            </div>
+            <div id="topic">
+                <p>سامانه اطلاع رسانی ساختمان ابوریحان</p>
+            </div>
+            <div id="left-image">
+                <img src="images/2.gif" height="100px" width="100px"/>
+            </div>
+             
+        </div>
         <div class="topnav" id="myTopnav">
-            <a href="#home">Home</a>
-            <a href="#news">News</a>
-            <a href="#contact">Contact</a>
-            <a href="#about">About</a>
+            <input type="text" name="search" placeholder="Search..">
+            <a href="#home">جدول راهنمای طبقات</a>
+            <a href="#news">نقشه طبقات</a>
+            <a href="#contact">برنامه هفتگی اساتید</a>
+            <a href="#about">آزمایشگاه ها</a>
+            <a href="#about">اطلاعیه ها</a>
             <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
+        </div>
+        <div id="map">
+                <img src="images/image.jpg" height="400px" width="600px">
+            </div>
+        <div id="page-body">
+            
+            
+            <div id="menu-item">
+                <a href="#"><img src="images/1.png" height="170px" width="200px">
+                <div id="menu-text">
+                    <p>جدول راهنمای طبقات</p>
+                </div>
+                    </a>
+            </div>
+
+            <div id="menu-item">
+                <a href="#"><img src="images/1.png" height="170px" width="200px">
+                <div id="menu-text">
+                    <p>برنامه هفتگی اساتید</p>
+                </div>
+                    </a>
+            </div>
+ 
+
+            <div id="menu-item">
+                <a href="#"><img src="images/1.png" height="170px" width="200px">
+                <div id="menu-text">
+                    <p>آزمایشگاه ها</p>
+                </div>
+                </a>
+            </div>
+
+
+            <div id="menu-item">
+                <a href="#"><img src="images/1.png" height="170px" width="200px">
+                <div id="menu-text">
+                    <p>اطلاعیه ها</p>
+                </div>
+                </a>
+            </div>
+
+
+            <div id="menu-item">
+                <a href="#">
+                <img src="images/1.png" height="170px" width="200px">
+                <div id="menu-text">
+                    <p>نقشه طبقات</p>
+                </div>
+                </a>
             </div>
-        
+        </div>
         <div id="login-footer">
         <p> ایده پردازان فناور ماورا &#169 1395</p>
     </div>
diff --git a/site-test/style.css b/site-test/style.css
index 22ef26a..a107c5d 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -154,13 +154,15 @@ marquee{
 
 /* Add a black background color to the top navigation */
 .topnav {
-    background-color: #333;
+    background-color:blue;
     overflow: hidden;
+    text-align: center;
+    padding-right: 20%;
 }
 
 /* Style the links inside the navigation bar */
 .topnav a {
-    float: left;
+    float: right;
     display: block;
     color: #f2f2f2;
     text-align: center;
@@ -171,7 +173,7 @@ marquee{
 
 /* Change the color of links on hover */
 .topnav a:hover {
-    background-color: #ddd;
+    background-color: cornflowerblue;
     color: black;
 }
 
@@ -231,3 +233,87 @@ font-size: 20px;
     text-decoration: none;
     color:burlywood;
 }
+.banner{
+    text-align: center;
+    background-color: cornflowerblue;
+    height: 120px;
+    width: 100%;
+}
+.banner #topic{
+    font-size: 30px;
+    display: inline-block;
+    margin-bottom: 60px;
+    vertical-align: middle;
+}
+.banner #left-image,#right-image{
+    margin-right: 10%;
+    margin-left: 10%;
+    display: inline-block;
+}
+#body-index #page-body{
+    text-align: center;
+    margin-top: 3%;
+}
+#menu-item{
+    background-color: white;
+    height: 218px;
+    width: 200px;
+    margin-left: 20px;
+    margin-right: 20px;
+    display: inline-block;
+    border-style: solid;
+    border-width:thin;
+    border-radius: 5px;
+    opacity:1;
+    transition: opacity 3s;
+    
+}
+#menu-item:hover{
+    opacity: 0.3;
+}
+#menu-item a{
+    text-decoration: none;
+}
+
+#menu-text{
+    width: 200px;
+    height: 30px;
+    background: azure;
+    text-align: center;
+}
+#map{
+    text-align: center;
+    margin-top: 15px;
+}
+.input[type=text] {
+    width: 130px;
+    -webkit-transition: width 0.4s ease-in-out;
+    transition: width 0.4s ease-in-out;
+}
+
+/* When the input field gets focus, change its width to 100% */
+input[type=text]:focus {
+    width: 100%;
+}
+@media screen and (max-width: 600px) {
+  .topnav a:not(:first-child) {display: none;}
+  .topnav a.icon {
+    float: right;
+    display: block;
+  }
+}
+
+/* The "responsive" class is added to the topnav with JavaScript when the user clicks on the icon. This class makes the topnav look good on small screens (display the links vertically instead of horizontally) */
+@media screen and (max-width: 600px) {
+  .topnav.responsive {position: relative;}
+  .topnav.responsive a.icon {
+    position: absolute;
+    right: 0;
+    top: 0;
+  }
+  .topnav.responsive a {
+    float: none;
+    display: block;
+    text-align: left;
+  }
+}

From a4cc6c3c7a8676a6e38b964d9068d036072dcfda Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 23 Mar 2017 13:30:48 +0430
Subject: [PATCH 015/104] fix : mobile view

---
 site-test/style.css | 35 +++++++++++++++++++++++------------
 1 file changed, 23 insertions(+), 12 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index a107c5d..44af0aa 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -66,12 +66,7 @@ marquee{
     font-size: 20px;
     color: deeppink;
 }
-.login-page {
-  width: 360px;
-  padding: 8% 0 0;
-  margin: auto;
-  z-index: 2;
-}
+
 .form {
   position: relative;
   z-index: 1;
@@ -127,6 +122,13 @@ marquee{
   color: #4CAF50;
   text-decoration: none;
 }
+
+.login-page {
+  width: 360px;
+  padding: 8% 0 0;
+  margin: auto;
+  z-index: 2;
+}
 #body-login{
   background-color: whitesmoke;
   font-family: "yekan";
@@ -141,6 +143,7 @@ marquee{
     color: cornflowerblue;
     border-radius: 5px;
 }
+
 #login-footer{
     width: 100%;
     bottom: 0;
@@ -181,9 +184,13 @@ marquee{
 .topnav .icon {
     display: none;
 }
+
+
 @media all and (max-width: 1024px) {
     .login-page{
         width: 100%;
+        padding: auto;
+        height: 100%;
     }
     #login-head{
         width: 100%;
@@ -191,16 +198,15 @@ marquee{
     }
     .form {
   position: relative;
-  z-index: 1;
   background-color: cornflowerblue;
-  width: 100%;
+  max-width: 100%;
   text-align: center;
-  box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
+  margin: auto;
 
   border-radius: 5px;
 }
     .form #username,#password{
-  font-size: 30px;
+  font-size: 36px;
 }
 .form #login-button {
   font-family: "yekan";
@@ -211,7 +217,7 @@ marquee{
   border: 0;
   padding: 15px;
   color: #FFFFFF;
-  font-size: 30px;
+  font-size: 36px;
   -webkit-transition: all 0.3 ease;
   transition: all 0.3 ease;
   cursor: pointer;
@@ -222,9 +228,14 @@ font-size: 20px;
 
 }
     #login-footer{
-        font-size: 20px;
+        font-size: 30px;
+    }
+    #body-login{
+        background-color: cornflowerblue;
     }
 }
+
+
 #list-page{
     text-align: center;
     font-size: 32px;

From 7f5da7a1952bda388a0756e49a9f9fd69fcdb13d Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 23 Mar 2017 13:38:55 +0430
Subject: [PATCH 016/104] fix:mobile view

---
 site-test/9ZOcz6kuM3h3W8mu.html |  2 +-
 site-test/style.css             | 12 ++++++++----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/site-test/9ZOcz6kuM3h3W8mu.html b/site-test/9ZOcz6kuM3h3W8mu.html
index c3337fd..ddfe80e 100644
--- a/site-test/9ZOcz6kuM3h3W8mu.html
+++ b/site-test/9ZOcz6kuM3h3W8mu.html
@@ -16,7 +16,7 @@
       <input type="text" placeholder="نام کاربری" style="text-align:right;"/ id="username">
       <input type="password" placeholder="کلمه عبور" style="text-align:right;"/ id="password">
       <div class="checkbox">
-          <label >مرا به خاطر بسپار<input type="checkbox" name="remember" value="rem" checked></label>
+          <label >مرا به خاطر بسپار</label> <input type="checkbox" name="remember" value="rem" checked>
       </div>
     
       <input type="button" onclick="login();" id="login-button" value="ورود">
diff --git a/site-test/style.css b/site-test/style.css
index 44af0aa..66dd37b 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -206,7 +206,7 @@ marquee{
   border-radius: 5px;
 }
     .form #username,#password{
-  font-size: 36px;
+  font-size: 42px;
 }
 .form #login-button {
   font-family: "yekan";
@@ -223,10 +223,14 @@ marquee{
   cursor: pointer;
   margin: 4px;
 }
-.form .checkbox{
-font-size: 20px;
+.form .checkbox label{
+font-size: 30px;
+    margin-right: 20px;
 
 }
+    .form .checkbox input{
+        transform: scale(3);
+    }
     #login-footer{
         font-size: 30px;
     }
@@ -238,7 +242,7 @@ font-size: 20px;
 
 #list-page{
     text-align: center;
-    font-size: 32px;
+    font-size: 42px;
 }
 #list-page a{
     text-decoration: none;

From e09162cb6b513322bf9949d41c5ef4b1fe00df16 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 23 Mar 2017 13:44:24 +0430
Subject: [PATCH 017/104] fix : mobile view

---
 site-test/style.css | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/site-test/style.css b/site-test/style.css
index 66dd37b..3f03d4a 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -195,13 +195,14 @@ marquee{
     #login-head{
         width: 100%;
         font-size:50px;
+        text-align: center;
     }
     .form {
   position: relative;
   background-color: cornflowerblue;
   max-width: 100%;
   text-align: center;
-  margin: auto;
+  margin-top: 20%;
 
   border-radius: 5px;
 }

From 026bd01e3f4443a034069cdff71755043e538caf Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 23 Mar 2017 14:43:26 +0430
Subject: [PATCH 018/104] minor edit

---
 site-test/rR6732XLw0Q7805Z.html |  8 ++++++--
 site-test/style.css             | 12 +++++++++---
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/site-test/rR6732XLw0Q7805Z.html b/site-test/rR6732XLw0Q7805Z.html
index a890dc6..244a127 100644
--- a/site-test/rR6732XLw0Q7805Z.html
+++ b/site-test/rR6732XLw0Q7805Z.html
@@ -2,7 +2,7 @@
     <head>
         <link href="style.css" rel="stylesheet" type="text/css">
         <script src="script.js"></script>
-    
+        <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
     </head>
     <body id="body-index">
         <div class="banner">
@@ -18,8 +18,11 @@
             </div>
              
         </div>
+        <div id="menu">
+        <div id="search">
+            <input type="text" name="search" placeholder=&#128270;>
+        </div>
         <div class="topnav" id="myTopnav">
-            <input type="text" name="search" placeholder="Search..">
             <a href="#home">جدول راهنمای طبقات</a>
             <a href="#news">نقشه طبقات</a>
             <a href="#contact">برنامه هفتگی اساتید</a>
@@ -27,6 +30,7 @@
             <a href="#about">اطلاعیه ها</a>
             <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
         </div>
+        </div>
         <div id="map">
                 <img src="images/image.jpg" height="400px" width="600px">
             </div>
diff --git a/site-test/style.css b/site-test/style.css
index 3f03d4a..72c29fb 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -154,10 +154,16 @@ marquee{
 .form #error-message{
     color: red;
 }
-
-/* Add a black background color to the top navigation */
+#menu{
+    background-color: blue;
+    
+}
+#menu #search{
+    float: left;
+    margin-top: 15px;
+    margin-left: 10px;
+}
 .topnav {
-    background-color:blue;
     overflow: hidden;
     text-align: center;
     padding-right: 20%;

From f8e1b73b39f404cc5a83639bfb8dc30b6b7320b1 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 23 Mar 2017 16:48:45 +0430
Subject: [PATCH 019/104] mobile view

---
 site-test/9ZOcz6kuM3h3W8mu.html | 2 +-
 site-test/style.css             | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/site-test/9ZOcz6kuM3h3W8mu.html b/site-test/9ZOcz6kuM3h3W8mu.html
index ddfe80e..75124ea 100644
--- a/site-test/9ZOcz6kuM3h3W8mu.html
+++ b/site-test/9ZOcz6kuM3h3W8mu.html
@@ -11,7 +11,7 @@
       <p>سامانه اطلاع رسانی <br/> ساختمان ابوریحان</p>
   </div>
   <div class="form">
-    <p id="error-message"></p>
+    <p id="error-message">        </p>
     <form class="login-form" action="">
       <input type="text" placeholder="نام کاربری" style="text-align:right;"/ id="username">
       <input type="password" placeholder="کلمه عبور" style="text-align:right;"/ id="password">
diff --git a/site-test/style.css b/site-test/style.css
index 72c29fb..73eedd5 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -153,6 +153,8 @@ marquee{
 }
 .form #error-message{
     color: red;
+    font-size: 14px;
+    height: 14px;
 }
 #menu{
     background-color: blue;
@@ -193,6 +195,10 @@ marquee{
 
 
 @media all and (max-width: 1024px) {
+   .form #error-message{
+    color: red;
+    font-size: 50px;
+        } 
     .login-page{
         width: 100%;
         padding: auto;
@@ -214,6 +220,8 @@ marquee{
 }
     .form #username,#password{
   font-size: 42px;
+  padding: 20px;
+        
 }
 .form #login-button {
   font-family: "yekan";

From ec4537faf11c3e60e8107774e57aad10132d813e Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 23 Mar 2017 16:53:52 +0430
Subject: [PATCH 020/104] mobile view

---
 site-test/style.css | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/site-test/style.css b/site-test/style.css
index 73eedd5..da2f1d5 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -208,6 +208,7 @@ marquee{
         width: 100%;
         font-size:50px;
         text-align: center;
+        transform: scale(2);
     }
     .form {
   position: relative;
@@ -220,7 +221,7 @@ marquee{
 }
     .form #username,#password{
   font-size: 42px;
-  padding: 20px;
+  padding: 27px;
         
 }
 .form #login-button {
@@ -243,6 +244,10 @@ font-size: 30px;
     margin-right: 20px;
 
 }
+    .form #login-button {
+        padding: 30px;
+    }
+    
     .form .checkbox input{
         transform: scale(3);
     }

From 98a9e51c7b12a482fb3cb780630b29368caea13b Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 23 Mar 2017 16:55:30 +0430
Subject: [PATCH 021/104] mobile view

---
 site-test/style.css | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index da2f1d5..45f51db 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -206,9 +206,8 @@ marquee{
     }
     #login-head{
         width: 100%;
-        font-size:50px;
+        font-size:45px;
         text-align: center;
-        transform: scale(2);
     }
     .form {
   position: relative;

From 3fe46b79065173d413fc29ca727dd64d9431ad64 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 23 Mar 2017 16:58:12 +0430
Subject: [PATCH 022/104] mobile view

---
 site-test/style.css | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index 45f51db..bd9f2a4 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -220,7 +220,6 @@ marquee{
 }
     .form #username,#password{
   font-size: 42px;
-  padding: 27px;
         
 }
 .form #login-button {
@@ -243,10 +242,6 @@ font-size: 30px;
     margin-right: 20px;
 
 }
-    .form #login-button {
-        padding: 30px;
-    }
-    
     .form .checkbox input{
         transform: scale(3);
     }

From ed19a49283b2e2d5a20ed7e3c705f71a683d7193 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 23 Mar 2017 17:09:46 +0430
Subject: [PATCH 023/104] mobile view

---
 site-test/script.js | 12 +++++++-----
 site-test/style.css |  5 +++--
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/site-test/script.js b/site-test/script.js
index dd5ef91..6e7155c 100644
--- a/site-test/script.js
+++ b/site-test/script.js
@@ -2,17 +2,19 @@ function login(){
     var password;
     var username;
     var message;
-    username=document.getElementById("username").value;
-    password=document.getElementById("password").value;
+    username=document.getElementById("username");
+    password=document.getElementById("password");
     message=document.getElementById("error-message")
-    if (username.length==0){
+    if (username.value.length==0){
     message.innerHTML="نام کاربری خود را وارد کنید";
+    username.style.backgroundColor="pink";
     }
-    else if (password.length==0){
+    else if (password.value.length==0){
        message.innerHTML="کلمه عبور خود را وارد کنید"; 
+       password.style.backgroundColor="pink";
     }
     
-    setTimeout(function(){message.innerHTML=""},"4000");
+    setTimeout(function(){message.innerHTML="";password.style.backgroundColor="white";username.style.backgroundColor="white";},"4000");
 }
 
 
diff --git a/site-test/style.css b/site-test/style.css
index bd9f2a4..192e584 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -220,6 +220,7 @@ marquee{
 }
     .form #username,#password{
   font-size: 42px;
+  padding:27px;
         
 }
 .form #login-button {
@@ -229,7 +230,7 @@ marquee{
   background-color:green;
   width: 100%;
   border: 0;
-  padding: 15px;
+  padding: 30px;
   color: #FFFFFF;
   font-size: 36px;
   -webkit-transition: all 0.3 ease;
@@ -246,7 +247,7 @@ font-size: 30px;
         transform: scale(3);
     }
     #login-footer{
-        font-size: 30px;
+        font-size: 45px;
     }
     #body-login{
         background-color: cornflowerblue;

From 67b031d7019e71481f94f2e6ba616f43ffb3cebe Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 23 Mar 2017 17:14:22 +0430
Subject: [PATCH 024/104] fix:edit in fonts

---
 site-test/style.css | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/site-test/style.css b/site-test/style.css
index 192e584..6bd20f1 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -206,7 +206,7 @@ marquee{
     }
     #login-head{
         width: 100%;
-        font-size:45px;
+        font-size:60px;
         text-align: center;
     }
     .form {

From 6588d8483dc9b9cd61ae5eb6c707b4f39d7637d6 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Fri, 24 Mar 2017 22:40:59 +0430
Subject: [PATCH 025/104] fix: mobie view

---
 site-test/style.css | 47 ++++++++++++++++++++++++---------------------
 1 file changed, 25 insertions(+), 22 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index 6bd20f1..333de74 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -195,6 +195,31 @@ marquee{
 
 
 @media all and (max-width: 1024px) {
+    #body-index .banner{
+        width: 100%;
+    }
+    #body-index #menu{
+        width: 100%;
+    }
+    #body-index #map{
+        width: 100%;
+    }
+  .topnav a:not(:first-child) {display: none;}
+  .topnav a.icon {
+    float: right;
+    display: block;
+  }
+  .topnav.responsive {position: relative;}
+  .topnav.responsive a.icon {
+    position: absolute;
+    right: 0;
+    top: 0;
+  }
+  .topnav.responsive a {
+    float: none;
+    display: block;
+    text-align: left;
+  }
    .form #error-message{
     color: red;
     font-size: 50px;
@@ -325,25 +350,3 @@ font-size: 30px;
 input[type=text]:focus {
     width: 100%;
 }
-@media screen and (max-width: 600px) {
-  .topnav a:not(:first-child) {display: none;}
-  .topnav a.icon {
-    float: right;
-    display: block;
-  }
-}
-
-/* The "responsive" class is added to the topnav with JavaScript when the user clicks on the icon. This class makes the topnav look good on small screens (display the links vertically instead of horizontally) */
-@media screen and (max-width: 600px) {
-  .topnav.responsive {position: relative;}
-  .topnav.responsive a.icon {
-    position: absolute;
-    right: 0;
-    top: 0;
-  }
-  .topnav.responsive a {
-    float: none;
-    display: block;
-    text-align: left;
-  }
-}

From d7c72b5df60c3fe29ffe4dd982f20e795b3e4d6d Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 25 Mar 2017 00:05:51 +0430
Subject: [PATCH 026/104] mobile view

---
 site-test/style.css | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/site-test/style.css b/site-test/style.css
index 333de74..c199f8b 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -195,6 +195,12 @@ marquee{
 
 
 @media all and (max-width: 1024px) {
+    .banner #left-image{
+        left: 0;
+    }
+    .banner #right-image{
+        right: 0;
+    }
     #body-index .banner{
         width: 100%;
     }

From a01993489e14caf006848af6e38ed787d9ac0f9b Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 25 Mar 2017 00:23:56 +0430
Subject: [PATCH 027/104] mobile view

---
 site-test/rR6732XLw0Q7805Z.html | 10 +++++-----
 site-test/style.css             | 11 ++++++++++-
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/site-test/rR6732XLw0Q7805Z.html b/site-test/rR6732XLw0Q7805Z.html
index 244a127..5ab5169 100644
--- a/site-test/rR6732XLw0Q7805Z.html
+++ b/site-test/rR6732XLw0Q7805Z.html
@@ -23,11 +23,11 @@
             <input type="text" name="search" placeholder=&#128270;>
         </div>
         <div class="topnav" id="myTopnav">
-            <a href="#home">جدول راهنمای طبقات</a>
-            <a href="#news">نقشه طبقات</a>
-            <a href="#contact">برنامه هفتگی اساتید</a>
-            <a href="#about">آزمایشگاه ها</a>
-            <a href="#about">اطلاعیه ها</a>
+            <a href="#table">جدول راهنمای طبقات</a>
+            <a href="#map">نقشه طبقات</a>
+            <a href="#masters">برنامه هفتگی اساتید</a>
+            <a href="#labs">آزمایشگاه ها</a>
+            <a href="#messages">اطلاعیه ها</a>
             <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
         </div>
         </div>
diff --git a/site-test/style.css b/site-test/style.css
index c199f8b..6403059 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -197,12 +197,20 @@ marquee{
 @media all and (max-width: 1024px) {
     .banner #left-image{
         left: 0;
+        margin: 0;
+        transform: scale(2);
     }
     .banner #right-image{
         right: 0;
+        margin: 0;
+        transform: scale(2);
     }
     #body-index .banner{
         width: 100%;
+        height: 240px;
+    }
+    #body-index .banner #topic{
+        font-size: 35px;
     }
     #body-index #menu{
         width: 100%;
@@ -210,10 +218,11 @@ marquee{
     #body-index #map{
         width: 100%;
     }
-  .topnav a:not(:first-child) {display: none;}
+  .topnav a {display: none;}
   .topnav a.icon {
     float: right;
     display: block;
+    transform: scale(3);
   }
   .topnav.responsive {position: relative;}
   .topnav.responsive a.icon {

From 7bf459b927b2ff3f1d747f132a82f6f5277ee503 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 25 Mar 2017 00:24:59 +0430
Subject: [PATCH 028/104] mobile view

---
 site-test/style.css | 2 --
 1 file changed, 2 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index 6403059..28ae4a1 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -198,12 +198,10 @@ marquee{
     .banner #left-image{
         left: 0;
         margin: 0;
-        transform: scale(2);
     }
     .banner #right-image{
         right: 0;
         margin: 0;
-        transform: scale(2);
     }
     #body-index .banner{
         width: 100%;

From 0f00597d596f946481784876130f6618340582b4 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 25 Mar 2017 01:08:08 +0430
Subject: [PATCH 029/104] mobile view

---
 site-test/rR6732XLw0Q7805Z.html |  2 +-
 site-test/style.css             | 44 ++++++++++++++++++++++-----------
 2 files changed, 30 insertions(+), 16 deletions(-)

diff --git a/site-test/rR6732XLw0Q7805Z.html b/site-test/rR6732XLw0Q7805Z.html
index 5ab5169..f65c3eb 100644
--- a/site-test/rR6732XLw0Q7805Z.html
+++ b/site-test/rR6732XLw0Q7805Z.html
@@ -32,7 +32,7 @@
         </div>
         </div>
         <div id="map">
-                <img src="images/image.jpg" height="400px" width="600px">
+                <img src="images/image.jpg" >
             </div>
         <div id="page-body">
             
diff --git a/site-test/style.css b/site-test/style.css
index 28ae4a1..36b29ed 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -168,7 +168,6 @@ marquee{
 .topnav {
     overflow: hidden;
     text-align: center;
-    padding-right: 20%;
 }
 
 /* Style the links inside the navigation bar */
@@ -189,38 +188,49 @@ marquee{
 }
 
 /* Hide the link that should open and close the topnav on small screens */
-.topnav .icon {
-    display: none;
-}
 
 
 @media all and (max-width: 1024px) {
-    .banner #left-image{
-        left: 0;
-        margin: 0;
+    #body-index #menu-item img{
+        display: none;
     }
-    .banner #right-image{
-        right: 0;
+    #body-index #menu-item{
+        width: 100%;
+        height: auto;
         margin: 0;
+        text-align: center;
+    }
+    #body-index #menu-text{
+        text-align: center;
+        background-color: white;
+    }
+    
+    .banner #left-image img{
+        display: none;
+    }
+    .banner #right-image img{
+        display: none;
     }
     #body-index .banner{
         width: 100%;
-        height: 240px;
+        height: auto;
     }
     #body-index .banner #topic{
-        font-size: 35px;
+        font-size: 70px;
+        margin-bottom: 20px;
     }
     #body-index #menu{
         width: 100%;
     }
     #body-index #map{
         width: 100%;
+        height: auto;
     }
   .topnav a {display: none;}
   .topnav a.icon {
     float: right;
     display: block;
-    transform: scale(3);
+    font-size: 45px;
   }
   .topnav.responsive {position: relative;}
   .topnav.responsive a.icon {
@@ -228,11 +238,14 @@ marquee{
     right: 0;
     top: 0;
   }
-  .topnav.responsive a {
+  .topnav.responsive a:not(:last-child) {
     float: none;
     display: block;
-    text-align: left;
+    text-align: right;
+    font-size: 45px;
+      margin-right: 60px;
   }
+
    .form #error-message{
     color: red;
     font-size: 50px;
@@ -311,7 +324,6 @@ font-size: 30px;
     font-size: 30px;
     display: inline-block;
     margin-bottom: 60px;
-    vertical-align: middle;
 }
 .banner #left-image,#right-image{
     margin-right: 10%;
@@ -352,6 +364,8 @@ font-size: 30px;
 #map{
     text-align: center;
     margin-top: 15px;
+    height="400px";
+    width="600px";
 }
 .input[type=text] {
     width: 130px;

From 2265ec1f3076617eca6424408fdc43170124aca0 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 25 Mar 2017 01:30:15 +0430
Subject: [PATCH 030/104] mobile view

---
 site-test/style.css | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index 36b29ed..6de8a94 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -196,13 +196,17 @@ marquee{
     }
     #body-index #menu-item{
         width: 100%;
-        height: auto;
-        margin: 0;
+        height: 120px;
+        margin: 0px;;
+        font-size: 30px;
         text-align: center;
+        display:block;
     }
     #body-index #menu-text{
         text-align: center;
         background-color: white;
+        display: block;
+        margin: 0px;
     }
     
     .banner #left-image img{
@@ -223,7 +227,6 @@ marquee{
         width: 100%;
     }
     #body-index #map{
-        width: 100%;
         height: auto;
     }
   .topnav a {display: none;}
@@ -364,8 +367,12 @@ font-size: 30px;
 #map{
     text-align: center;
     margin-top: 15px;
-    height="400px";
-    width="600px";
+ 
+}
+#map img{
+    height: 400px;
+    width: 600px;
+    
 }
 .input[type=text] {
     width: 130px;

From 31a6603f2ccee4b974bdec2d243c8f9a670c8435 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 25 Mar 2017 01:49:21 +0430
Subject: [PATCH 031/104] mobile view

---
 site-test/style.css | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index 6de8a94..05f36a9 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -168,6 +168,7 @@ marquee{
 .topnav {
     overflow: hidden;
     text-align: center;
+    margin-right: 8%;
 }
 
 /* Style the links inside the navigation bar */
@@ -186,18 +187,24 @@ marquee{
     background-color: cornflowerblue;
     color: black;
 }
+.topnav a.icon{
+    display: none;
+}
 
 /* Hide the link that should open and close the topnav on small screens */
 
 
 @media all and (max-width: 1024px) {
+    #body-index{
+        margin: 0px;
+    }
     #body-index #menu-item img{
         display: none;
     }
     #body-index #menu-item{
         width: 100%;
-        height: 120px;
-        margin: 0px;;
+        height:120px;
+        margin: 0px;
         font-size: 30px;
         text-align: center;
         display:block;
@@ -208,7 +215,6 @@ marquee{
         display: block;
         margin: 0px;
     }
-    
     .banner #left-image img{
         display: none;
     }
@@ -246,7 +252,7 @@ marquee{
     display: block;
     text-align: right;
     font-size: 45px;
-      margin-right: 60px;
+    margin-right: 60px;
   }
 
    .form #error-message{
@@ -327,6 +333,7 @@ font-size: 30px;
     font-size: 30px;
     display: inline-block;
     margin-bottom: 60px;
+    vertical-align: middle;
 }
 .banner #left-image,#right-image{
     margin-right: 10%;

From 87da33a0901002086c6006222b772979febec431 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 25 Mar 2017 02:01:31 +0430
Subject: [PATCH 032/104] mobile view

---
 site-test/style.css | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index 05f36a9..99b5e3a 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -197,6 +197,11 @@ marquee{
 @media all and (max-width: 1024px) {
     #body-index{
         margin: 0px;
+        overflow: scroll;
+    }
+    #page-body{
+        overflow: scroll;
+        text-align: center;
     }
     #body-index #menu-item img{
         display: none;
@@ -204,16 +209,17 @@ marquee{
     #body-index #menu-item{
         width: 100%;
         height:120px;
-        margin: 0px;
+        margin: auto;
         font-size: 30px;
         text-align: center;
         display:block;
+
     }
     #body-index #menu-text{
         text-align: center;
         background-color: white;
         display: block;
-        margin: 0px;
+        margin: auto;
     }
     .banner #left-image img{
         display: none;

From 86b40a28ef259e304869a9a1d0cf6f278d6da880 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 25 Mar 2017 02:05:14 +0430
Subject: [PATCH 033/104] edit in footer size

---
 site-test/style.css | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index 99b5e3a..8ee9030 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -196,12 +196,10 @@ marquee{
 
 @media all and (max-width: 1024px) {
     #body-index{
-        margin: 0px;
-        overflow: scroll;
+        margin: auto;
     }
     #page-body{
-        overflow: scroll;
-        text-align: center;
+        overflow:scroll;
     }
     #body-index #menu-item img{
         display: none;
@@ -314,6 +312,7 @@ font-size: 30px;
     }
     #login-footer{
         font-size: 45px;
+        position: relative;
     }
     #body-login{
         background-color: cornflowerblue;

From 032abf2ba64955b0ba26ca1f097c89fda63cdc2e Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 25 Mar 2017 02:24:25 +0430
Subject: [PATCH 034/104] fix : search bar fixed

---
 site-test/style.css | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index 8ee9030..a00f9ce 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -160,10 +160,13 @@ marquee{
     background-color: blue;
     
 }
-#menu #search{
+#menu #search input{
     float: left;
     margin-top: 15px;
     margin-left: 10px;
+    font-size: 16px;
+    background-color: blue;
+    border-style: none;
 }
 .topnav {
     overflow: hidden;
@@ -195,6 +198,12 @@ marquee{
 
 
 @media all and (max-width: 1024px) {
+    #menu #search input{
+        margin-top: 8px;
+        background-color: blue;
+        font-size: 40px;
+        border-style: none;
+    }
     #body-index{
         margin: auto;
     }
@@ -245,7 +254,7 @@ marquee{
     display: block;
     font-size: 45px;
   }
-  .topnav.responsive {position: relative;}
+  .topnav.responsive {position:relative;}
   .topnav.responsive a.icon {
     position: absolute;
     right: 0;
@@ -386,11 +395,7 @@ font-size: 30px;
     width: 600px;
     
 }
-.input[type=text] {
-    width: 130px;
-    -webkit-transition: width 0.4s ease-in-out;
-    transition: width 0.4s ease-in-out;
-}
+
 
 /* When the input field gets focus, change its width to 100% */
 input[type=text]:focus {

From ea1b33432feee501422b0b676dda242fa5c6081f Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 25 Mar 2017 02:35:56 +0430
Subject: [PATCH 035/104] minor js code added

---
 site-test/rR6732XLw0Q7805Z.html |  2 +-
 site-test/script.js             | 12 ++++++++++++
 site-test/style.css             | 10 ++++++----
 3 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/site-test/rR6732XLw0Q7805Z.html b/site-test/rR6732XLw0Q7805Z.html
index f65c3eb..5d21cd6 100644
--- a/site-test/rR6732XLw0Q7805Z.html
+++ b/site-test/rR6732XLw0Q7805Z.html
@@ -20,7 +20,7 @@
         </div>
         <div id="menu">
         <div id="search">
-            <input type="text" name="search" placeholder=&#128270;>
+            <input type="text" name="search" placeholder=&#128270; onclick="search_hide();" onmouseout="search_view();">
         </div>
         <div class="topnav" id="myTopnav">
             <a href="#table">جدول راهنمای طبقات</a>
diff --git a/site-test/script.js b/site-test/script.js
index 6e7155c..0a517d0 100644
--- a/site-test/script.js
+++ b/site-test/script.js
@@ -26,4 +26,16 @@ function myFunction() {
     } else {
         x.className = "topnav";
     }
+}
+
+
+function search_hide(){
+    var menu
+    menu=document.getElementById("myTopnav");
+    menu.style.display="none";
+}
+function search_view(){
+    var menu
+    menu=document.getElementById("myTopnav");
+    menu.style.display="block";
 }
\ No newline at end of file
diff --git a/site-test/style.css b/site-test/style.css
index a00f9ce..d9fb57c 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -4,7 +4,9 @@
           url("fonts/Yekan.woff") format("woff"),
           url("fonts/Yekan.ttf") format("truetype"); 
 }
-
+#body-index{
+        margin: auto;
+    }
 #body-screen,#body-index{
     font-family: "yekan";
 }
@@ -158,6 +160,8 @@ marquee{
 }
 #menu{
     background-color: blue;
+    width: 100%;
+    height: 60px;
     
 }
 #menu #search input{
@@ -204,9 +208,7 @@ marquee{
         font-size: 40px;
         border-style: none;
     }
-    #body-index{
-        margin: auto;
-    }
+    
     #page-body{
         overflow:scroll;
     }

From 121540aedf5cc054563f1111f35b9f3516a182e3 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 25 Mar 2017 11:19:27 +0430
Subject: [PATCH 036/104] fix : style modify

---
 site-test/script.js |  3 +++
 site-test/style.css | 17 +++++++++++------
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/site-test/script.js b/site-test/script.js
index 0a517d0..e30a582 100644
--- a/site-test/script.js
+++ b/site-test/script.js
@@ -21,10 +21,13 @@ function login(){
 
 function myFunction() {
     var x = document.getElementById("myTopnav");
+    var menu=document.getElementById("menu");
     if (x.className === "topnav") {
         x.className += " responsive";
+        menu.style.height="auto";
     } else {
         x.className = "topnav";
+        menu.style.height="100px";
     }
 }
 
diff --git a/site-test/style.css b/site-test/style.css
index d9fb57c..c8f71cf 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -161,13 +161,12 @@ marquee{
 #menu{
     background-color: blue;
     width: 100%;
-    height: 60px;
+    height: 58px;
     
 }
 #menu #search input{
     float: left;
     margin-top: 15px;
-    margin-left: 10px;
     font-size: 16px;
     background-color: blue;
     border-style: none;
@@ -190,7 +189,7 @@ marquee{
 }
 
 /* Change the color of links on hover */
-.topnav a:hover {
+.topnav a:not(:last-child):hover {
     background-color: cornflowerblue;
     color: black;
 }
@@ -202,11 +201,16 @@ marquee{
 
 
 @media all and (max-width: 1024px) {
+    #menu{
+        height: 100px;
+ 
+    }
     #menu #search input{
-        margin-top: 8px;
+        margin-top: 23px;
         background-color: blue;
-        font-size: 40px;
+        font-size: 45px;
         border-style: none;
+        margin-left: 25px;
     }
     
     #page-body{
@@ -262,6 +266,7 @@ marquee{
     right: 0;
     top: 0;
   }
+  
   .topnav.responsive a:not(:last-child) {
     float: none;
     display: block;
@@ -401,5 +406,5 @@ font-size: 30px;
 
 /* When the input field gets focus, change its width to 100% */
 input[type=text]:focus {
-    width: 100%;
+    width: 90%;
 }

From 605e9eabfed34c7125ec51aa3b7a774bed428b5a Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 25 Mar 2017 17:01:17 +0430
Subject: [PATCH 037/104] fix : mobile view

---
 site-test/script.js |  2 ++
 site-test/style.css | 12 ++++++++----
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/site-test/script.js b/site-test/script.js
index e30a582..284d0a1 100644
--- a/site-test/script.js
+++ b/site-test/script.js
@@ -25,9 +25,11 @@ function myFunction() {
     if (x.className === "topnav") {
         x.className += " responsive";
         menu.style.height="auto";
+        document.getElementById("search").style.display="none";
     } else {
         x.className = "topnav";
         menu.style.height="100px";
+        document.getElementById("search").style.display="block";
     }
 }
 
diff --git a/site-test/style.css b/site-test/style.css
index c8f71cf..81a4ca3 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -221,18 +221,21 @@ marquee{
     }
     #body-index #menu-item{
         width: 100%;
-        height:120px;
         margin: auto;
-        font-size: 30px;
         text-align: center;
         display:block;
-
+        font-size: 45px;
+        margin-top: 8px;
+        border-radius: 8px;
     }
     #body-index #menu-text{
         text-align: center;
         background-color: white;
-        display: block;
+        display: inline;
         margin: auto;
+    }
+     #body-index p{
+        margin-top: 70px;
     }
     .banner #left-image img{
         display: none;
@@ -329,6 +332,7 @@ font-size: 30px;
     #login-footer{
         font-size: 45px;
         position: relative;
+        height:100px;
     }
     #body-login{
         background-color: cornflowerblue;

From 6d7571284bd0b3ddcb873bd76c16f2b9c43a22e8 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 25 Mar 2017 19:39:37 +0430
Subject: [PATCH 038/104] new page added

---
 site-test/42450HMl8U8kl0xI.html | 164 ++++++++++++++++++++++++++++++++
 site-test/style.css             |  42 +++++++-
 2 files changed, 204 insertions(+), 2 deletions(-)
 create mode 100644 site-test/42450HMl8U8kl0xI.html

diff --git a/site-test/42450HMl8U8kl0xI.html b/site-test/42450HMl8U8kl0xI.html
new file mode 100644
index 0000000..a836089
--- /dev/null
+++ b/site-test/42450HMl8U8kl0xI.html
@@ -0,0 +1,164 @@
+<html>
+    <head>
+        <link href="style.css" rel="stylesheet" type="text/css">
+        <script src="script.js"></script>
+        <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
+    </head>
+    <body id="body-index">
+        <div class="banner">
+            
+            <div id="right-image">
+                <img src="images/1.png" height="100px" width="100px"/>
+            </div>
+            <div id="topic">
+                <p>سامانه اطلاع رسانی ساختمان ابوریحان</p>
+            </div>
+            <div id="left-image">
+                <img src="images/2.gif" height="100px" width="100px"/>
+            </div>
+             
+        </div>
+        <div id="menu">
+        <div id="search">
+            <input type="text" name="search" placeholder=&#128270; onclick="search_hide();" onmouseout="search_view();">
+        </div>
+        <div class="topnav" id="myTopnav">
+            <a href="#table">جدول راهنمای طبقات</a>
+            <a href="#map">نقشه طبقات</a>
+            <a href="#masters">برنامه هفتگی اساتید</a>
+            <a href="#labs">آزمایشگاه ها</a>
+            <a href="#messages">اطلاعیه ها</a>
+            <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
+        </div>
+        </div>
+        <div id="page-body">
+            <div id="table-banner">
+                &nbsp;
+                <p>برنامه هفتگی نیمسال اول  ۹۶-۹۵آقای  دکتر  فلانی</p>
+            </div>
+            <div id="week-table">
+                <table>
+                    <tr class="fix">
+                        <td>18:00-16:30  </td>
+                        <td>16:30-15:00</td>
+                        <td>15:00-13:30</td>
+                        <td>13:30-12:00</td>
+                        <td>12:00-10:45</td>
+                        <td>10:45-9:15</td>
+                        <td>9:15-7:45</td>
+                        <td>ساعات</td>
+                    </tr>
+                     <tr class="hour">
+
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>شنبه</td>
+                    </tr >
+                     <tr class="place">
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>مکان حضور</td>
+                    </tr>
+                     <tr class="hour">
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>یکشنبه</td>
+                    </tr>
+                     <tr class="place">
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>مکان حضور</td>
+                    </tr>
+                     <tr class="hour">
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>دوشنبه</td>
+                    </tr>
+                     <tr class="place">
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>مکان حضور</td>
+                    </tr>
+                     <tr class="hour">
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>سه شنبه</td>
+                    </tr>
+                     <tr class="place">
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>مکان حضور</td>
+                    </tr>
+                     <tr class="hour">
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>چهارشنبه</td>
+                    </tr>
+                     <tr class="place">
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>مکان حضور</td>
+                    </tr>
+                </table>
+            </div>
+            
+        </div>
+        <div id="login-footer">
+        <p> ایده پردازان فناور ماورا &#169 1395</p>
+    </div>
+    </body>
+
+
+
+
+</html>
\ No newline at end of file
diff --git a/site-test/style.css b/site-test/style.css
index 81a4ca3..ccec664 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -166,10 +166,12 @@ marquee{
 }
 #menu #search input{
     float: left;
-    margin-top: 15px;
-    font-size: 16px;
+    margin-top: 17px;
+    font-size: 20px;
     background-color: blue;
     border-style: none;
+    margin-left: 50px;
+    color: white;
 }
 .topnav {
     overflow: hidden;
@@ -409,6 +411,42 @@ font-size: 30px;
 
 
 /* When the input field gets focus, change its width to 100% */
+
+#page-body #table-banner{
+    border:1px solid black;
+    border-radius: 6px;
+    margin-left: 5%;
+    margin-right: 5%;
+    margin-bottom: 2%;
+    
+}
+#page-body #table-banner p{
+    margin-top:2px;
+    vertical-align: middle;
+}
 input[type=text]:focus {
     width: 90%;
 }
+
+#week-table table,tr,td{
+    border: 1px solid black;
+    border-collapse: collapse;
+    text-align: center;
+}
+#week-table td{
+    width: 120px;
+}
+#week-table{
+    text-align: center;
+    margin-left: 24%;
+}
+
+#week-table .fix td{
+    height: 20px;
+}
+#week-table .place td{
+    height: 40px;
+}
+#week-table .hour td{
+    height: 50px;
+}
\ No newline at end of file

From 8e1fa43632f46574eaf9075af96f35fe8ae4d21a Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 25 Mar 2017 23:44:18 +0430
Subject: [PATCH 039/104] table mobile view added

---
 site-test/42450HMl8U8kl0xI.html | 116 ++++++++++++++++++++++++++++++++
 site-test/style.css             |   7 ++
 2 files changed, 123 insertions(+)

diff --git a/site-test/42450HMl8U8kl0xI.html b/site-test/42450HMl8U8kl0xI.html
index a836089..6a4b1b1 100644
--- a/site-test/42450HMl8U8kl0xI.html
+++ b/site-test/42450HMl8U8kl0xI.html
@@ -151,6 +151,122 @@
                     </tr>
                 </table>
             </div>
+            <div id="mobile-table">
+                <table>
+                    <tr>
+                        <td>چهارشنبه</td>
+                        <td>سه شنبه</td>
+                        <td>دو شنبه</td>
+                        <td>یکشنبه</td>
+                        <td>شنبه</td>
+                        <td></td>
+                    </tr>
+                    <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>9:15-7:45</td>
+                    </tr>
+                    <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>10:45-9:15</td>
+                    </tr>
+                    <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>12:00-10:45</td>
+                    </tr>
+                    <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>13:30-12:00</td>
+                    </tr>
+                    <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>15:00-13:30</td>
+                    </tr>
+                    <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td>16:30-15:00</td>
+                    </tr>
+                    <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                    </tr>
+                    <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                    </tr>
+                    <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                    </tr>
+                    <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                    </tr>
+                    <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                    </tr>
+                    <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                    </tr>
+                    <tr>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                        <td></td>
+                    </tr>
+                </table>
+            </div>
             
         </div>
         <div id="login-footer">
diff --git a/site-test/style.css b/site-test/style.css
index ccec664..84a0e32 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -203,6 +203,13 @@ marquee{
 
 
 @media all and (max-width: 1024px) {
+    #page-body #table-banner{
+    font-size: 35px;
+    
+    }
+    #page-body #week-table{
+        display: none;
+    }
     #menu{
         height: 100px;
  

From 1190312ade01ec0eec7cb238851244efa02745dd Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sun, 26 Mar 2017 14:45:29 +0430
Subject: [PATCH 040/104] mobile-table

---
 site-test/42450HMl8U8kl0xI.html | 136 +++++++++++---------------------
 site-test/style.css             |  35 ++++++++
 2 files changed, 79 insertions(+), 92 deletions(-)

diff --git a/site-test/42450HMl8U8kl0xI.html b/site-test/42450HMl8U8kl0xI.html
index 6a4b1b1..fe993a0 100644
--- a/site-test/42450HMl8U8kl0xI.html
+++ b/site-test/42450HMl8U8kl0xI.html
@@ -153,117 +153,69 @@
             </div>
             <div id="mobile-table">
                 <table>
-                    <tr>
+                    <tr class="fix">
                         <td>چهارشنبه</td>
                         <td>سه شنبه</td>
                         <td>دو شنبه</td>
                         <td>یکشنبه</td>
                         <td>شنبه</td>
-                        <td></td>
+                        <td class="rotate-hour"></td>
                     </tr>
                     <tr>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td>9:15-7:45</td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td  class="rotate-hour" ><div>9:15-7:45</div></td>
                     </tr>
                     <tr>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td>10:45-9:15</td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td  class="rotate-hour"><div>10:45-9:15</div></td>
                     </tr>
                     <tr>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td>12:00-10:45</td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td class="rotate-hour"> <div >12:00-10:45</div></td>
                     </tr>
                     <tr>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td>13:30-12:00</td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td class="rotate-hour" ><div>13:30-12:00</div></td>
                     </tr>
                     <tr>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td>15:00-13:30</td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td class="rotate-hour"><div>15:00-13:30</div></td>
                     </tr>
                     <tr>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td>16:30-15:00</td>
-                    </tr>
-                    <tr>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td  class="rotate-hour"><div>16:30-15:00</div></td>
                     </tr>
                     <tr>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                    </tr>
-                    <tr>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                    </tr>
-                    <tr>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                    </tr>
-                    <tr>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                    </tr>
-                    <tr>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                    </tr>
-                    <tr>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td  class="rotate-hour"><div>18:00-16:30</div></td>
                     </tr>
                 </table>
             </div>
diff --git a/site-test/style.css b/site-test/style.css
index 84a0e32..72a5b99 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -206,6 +206,11 @@ marquee{
     #page-body #table-banner{
     font-size: 35px;
     
+    }
+    #page-body #mobile-table{
+        display: block;
+        margin-left: 2%;
+        margin-right:2%;
     }
     #page-body #week-table{
         display: none;
@@ -456,4 +461,34 @@ input[type=text]:focus {
 }
 #week-table .hour td{
     height: 50px;
+}
+#mobile-table{
+    display: none;
+    text-align: center;
+}
+#mobile-table table,tr,td{
+    border:1px solid black;
+    border-collapse: collapse;
+    text-align: center;
+}
+.rotate-hour div{
+    transform: rotate(90deg);
+}
+
+#mobile-table td{
+    height: 200px;
+    width: 170px;
+}
+#mobile-table .rotate-hour{
+    width: 30px;
+}
+#mobile-table .rotate-hour {
+    width: 1px;
+}
+#mobile-table .place{
+    border-top: 1px dashed black;
+    height: 5px;
+}
+#mobile-table .fix td{
+    height: 10px;
 }
\ No newline at end of file

From f620695887eb958a72a9887fd81794b289e2d622 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sun, 26 Mar 2017 15:12:02 +0430
Subject: [PATCH 041/104] table mobile view added

---
 site-test/42450HMl8U8kl0xI.html | 16 ++++++++--------
 site-test/style.css             | 18 ++++++++++--------
 2 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/site-test/42450HMl8U8kl0xI.html b/site-test/42450HMl8U8kl0xI.html
index fe993a0..01eb9f0 100644
--- a/site-test/42450HMl8U8kl0xI.html
+++ b/site-test/42450HMl8U8kl0xI.html
@@ -167,7 +167,7 @@
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td  class="rotate-hour" ><div>9:15-7:45</div></td>
+                        <td  class="rotate-hour" ><div>7:45 9:15</div></td>
                     </tr>
                     <tr>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
@@ -175,7 +175,7 @@
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td  class="rotate-hour"><div>10:45-9:15</div></td>
+                        <td  class="rotate-hour"><div>9:15 10:45</div></td>
                     </tr>
                     <tr>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
@@ -183,7 +183,7 @@
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td class="rotate-hour"> <div >12:00-10:45</div></td>
+                        <td class="rotate-hour"> <div >10:45 12:00</div></td>
                     </tr>
                     <tr>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
@@ -191,7 +191,7 @@
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td class="rotate-hour" ><div>13:30-12:00</div></td>
+                        <td class="rotate-hour" ><div>12:00 13:30</div></td>
                     </tr>
                     <tr>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
@@ -199,15 +199,15 @@
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td class="rotate-hour"><div>15:00-13:30</div></td>
+                        <td class="rotate-hour"><div>13:30 15:00</div></td>
                     </tr>
                     <tr>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
-                        <td  class="rotate-hour"><div>16:30-15:00</div></td>
+                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td  class="rotate-hour"><div>15:00 16:30</div></td>
                     </tr>
                     <tr>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
@@ -215,7 +215,7 @@
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
                         <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td  class="rotate-hour"><div>18:00-16:30</div></td>
+                        <td  class="rotate-hour"><div>16:30 18:00 </div></td>
                     </tr>
                 </table>
             </div>
diff --git a/site-test/style.css b/site-test/style.css
index 72a5b99..b27979d 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -209,8 +209,6 @@ marquee{
     }
     #page-body #mobile-table{
         display: block;
-        margin-left: 2%;
-        margin-right:2%;
     }
     #page-body #week-table{
         display: none;
@@ -464,30 +462,34 @@ input[type=text]:focus {
 }
 #mobile-table{
     display: none;
+    vertical-align: middle;
     text-align: center;
+    margin-left: 5%;
+    margin-right: 4%;
 }
 #mobile-table table,tr,td{
     border:1px solid black;
     border-collapse: collapse;
-    text-align: center;
+
 }
 .rotate-hour div{
     transform: rotate(90deg);
+    text-align: center;
 }
 
 #mobile-table td{
     height: 200px;
     width: 170px;
+    margin: auto;
+    display: table-cell;
+    vertical-align: middle;
 }
 #mobile-table .rotate-hour{
-    width: 30px;
-}
-#mobile-table .rotate-hour {
-    width: 1px;
+    width: 37px;
 }
 #mobile-table .place{
     border-top: 1px dashed black;
-    height: 5px;
+    height: 5%;
 }
 #mobile-table .fix td{
     height: 10px;

From adca88f5d4678d79ef141e4538651e0f98350621 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sun, 26 Mar 2017 15:29:30 +0430
Subject: [PATCH 042/104] table mobile view added

---
 site-test/42450HMl8U8kl0xI.html | 70 ++++++++++++++++-----------------
 site-test/style.css             |  6 ++-
 2 files changed, 40 insertions(+), 36 deletions(-)

diff --git a/site-test/42450HMl8U8kl0xI.html b/site-test/42450HMl8U8kl0xI.html
index 01eb9f0..f007626 100644
--- a/site-test/42450HMl8U8kl0xI.html
+++ b/site-test/42450HMl8U8kl0xI.html
@@ -162,59 +162,59 @@
                         <td class="rotate-hour"></td>
                     </tr>
                     <tr>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
                         <td  class="rotate-hour" ><div>7:45 9:15</div></td>
                     </tr>
                     <tr>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
                         <td  class="rotate-hour"><div>9:15 10:45</div></td>
                     </tr>
                     <tr>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
                         <td class="rotate-hour"> <div >10:45 12:00</div></td>
                     </tr>
                     <tr>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
                         <td class="rotate-hour" ><div>12:00 13:30</div></td>
                     </tr>
                     <tr>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
                         <td class="rotate-hour"><div>13:30 15:00</div></td>
                     </tr>
                     <tr>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
                         <td  class="rotate-hour"><div>15:00 16:30</div></td>
                     </tr>
                     <tr>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
-                        <td><p>الکترونیک 1</p><div class="place">کلاس 402</div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
+                        <td><p>الکترونیک 1</p><div class="place"><p>کلاس 402</p></div></td>
                         <td  class="rotate-hour"><div>16:30 18:00 </div></td>
                     </tr>
                 </table>
diff --git a/site-test/style.css b/site-test/style.css
index b27979d..d174eb4 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -226,7 +226,6 @@ marquee{
     }
     
     #page-body{
-        overflow:scroll;
     }
     #body-index #menu-item img{
         display: none;
@@ -466,6 +465,7 @@ input[type=text]:focus {
     text-align: center;
     margin-left: 5%;
     margin-right: 4%;
+    font-size:40px;
 }
 #mobile-table table,tr,td{
     border:1px solid black;
@@ -483,6 +483,7 @@ input[type=text]:focus {
     margin: auto;
     display: table-cell;
     vertical-align: middle;
+    font-size: 24px
 }
 #mobile-table .rotate-hour{
     width: 37px;
@@ -493,4 +494,7 @@ input[type=text]:focus {
 }
 #mobile-table .fix td{
     height: 10px;
+}
+#mobile-table .place p{
+    margin-top: 5%;
 }
\ No newline at end of file

From 6d89526576b17480eb5d4d2b9bdf4c55305ab581 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sun, 26 Mar 2017 15:35:51 +0430
Subject: [PATCH 043/104] hover in mobile view canceled

---
 site-test/style.css | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index d174eb4..4b48a45 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -272,7 +272,7 @@ marquee{
   .topnav a.icon {
     float: right;
     display: block;
-    font-size: 45px;
+    font-size: 60px;
   }
   .topnav.responsive {position:relative;}
   .topnav.responsive a.icon {
@@ -348,6 +348,9 @@ font-size: 30px;
     #body-login{
         background-color: cornflowerblue;
     }
+    #menu-item:hover{
+    opacity: 1;
+}
 }
 
 
@@ -479,18 +482,18 @@ input[type=text]:focus {
 
 #mobile-table td{
     height: 200px;
-    width: 170px;
+    width: 200px;
     margin: auto;
     display: table-cell;
     vertical-align: middle;
-    font-size: 24px
+    font-size: 31px
 }
 #mobile-table .rotate-hour{
     width: 37px;
 }
 #mobile-table .place{
     border-top: 1px dashed black;
-    height: 5%;
+    height: 30%;
 }
 #mobile-table .fix td{
     height: 10px;

From ddb7a00b583bdda52a1a4289ed674b0b8f95379a Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sun, 26 Mar 2017 15:37:52 +0430
Subject: [PATCH 044/104] minor edit in table time

---
 site-test/42450HMl8U8kl0xI.html | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/site-test/42450HMl8U8kl0xI.html b/site-test/42450HMl8U8kl0xI.html
index f007626..f930ef3 100644
--- a/site-test/42450HMl8U8kl0xI.html
+++ b/site-test/42450HMl8U8kl0xI.html
@@ -39,13 +39,13 @@
             <div id="week-table">
                 <table>
                     <tr class="fix">
-                        <td>18:00-16:30  </td>
-                        <td>16:30-15:00</td>
-                        <td>15:00-13:30</td>
-                        <td>13:30-12:00</td>
-                        <td>12:00-10:45</td>
-                        <td>10:45-9:15</td>
-                        <td>9:15-7:45</td>
+                        <td>16:30-18:00  </td>
+                        <td>15:00-16:30</td>
+                        <td>13:30-15:00</td>
+                        <td>12:00-13:30</td>
+                        <td>10:45-12:00</td>
+                        <td>9:15-10:45</td>
+                        <td>7:45-9:15</td>
                         <td>ساعات</td>
                     </tr>
                      <tr class="hour">

From e4ae9e06d9c6b63967f50fcc1dd5343094eb3cec Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sun, 26 Mar 2017 19:22:18 +0430
Subject: [PATCH 045/104] map page added

---
 site-test/M191478tW1DbJ755.html | 51 +++++++++++++++++++++++++++++++++
 site-test/rR6732XLw0Q7805Z.html |  2 +-
 site-test/style.css             | 23 +++++++++------
 3 files changed, 67 insertions(+), 9 deletions(-)
 create mode 100644 site-test/M191478tW1DbJ755.html

diff --git a/site-test/M191478tW1DbJ755.html b/site-test/M191478tW1DbJ755.html
new file mode 100644
index 0000000..537499c
--- /dev/null
+++ b/site-test/M191478tW1DbJ755.html
@@ -0,0 +1,51 @@
+<html>
+    <head>
+        <link href="style.css" rel="stylesheet" type="text/css">
+        <script src="script.js"></script>
+        <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
+    </head>
+    <body id="body-index">
+        <div class="banner">
+            
+            <div id="right-image">
+                <img src="images/1.png" height="100px" width="100px"/>
+            </div>
+            <div id="topic">
+                <p>سامانه اطلاع رسانی ساختمان ابوریحان</p>
+            </div>
+            <div id="left-image">
+                <img src="images/2.gif" height="100px" width="100px"/>
+            </div>
+             
+        </div>
+        <div id="menu">
+        <div id="search">
+            <input type="text" name="search" placeholder=&#128270; onclick="search_hide();" onmouseout="search_view();">
+        </div>
+        <div class="topnav" id="myTopnav">
+            <a href="#table">جدول راهنمای طبقات</a>
+            <a href="#map">نقشه طبقات</a>
+            <a href="#masters">برنامه هفتگی اساتید</a>
+            <a href="#labs">آزمایشگاه ها</a>
+            <a href="#messages">اطلاعیه ها</a>
+            <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
+        </div>
+        </div>
+        <div id="page-body">
+            <div id="map-banner">
+                &nbsp;
+                <p>نقشه طبقه چهارم</p>
+            </div>
+            <div id="map">
+                <img src="images/image.jpg">
+            </div>
+        </div>
+        <div id="login-footer">
+        <p> ایده پردازان فناور ماورا &#169 1395</p>
+    </div>
+    </body>
+
+
+
+
+</html>
\ No newline at end of file
diff --git a/site-test/rR6732XLw0Q7805Z.html b/site-test/rR6732XLw0Q7805Z.html
index 5d21cd6..ab091a3 100644
--- a/site-test/rR6732XLw0Q7805Z.html
+++ b/site-test/rR6732XLw0Q7805Z.html
@@ -31,7 +31,7 @@
             <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
         </div>
         </div>
-        <div id="map">
+        <div id="map-prev">
                 <img src="images/image.jpg" >
             </div>
         <div id="page-body">
diff --git a/site-test/style.css b/site-test/style.css
index 4b48a45..633f13d 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -151,7 +151,8 @@ marquee{
     bottom: 0;
     text-align: center;
     background-color: cornflowerblue;
-    position: absolute;
+    position: relative;
+    font-size: 22px;
 }
 .form #error-message{
     color: red;
@@ -203,7 +204,7 @@ marquee{
 
 
 @media all and (max-width: 1024px) {
-    #page-body #table-banner{
+    #page-body #table-banner,#map-banner{
     font-size: 35px;
     
     }
@@ -265,9 +266,12 @@ marquee{
     #body-index #menu{
         width: 100%;
     }
-    #body-index #map{
+    #body-index #map,#map-prev{
         height: auto;
     }
+    #body-index #map img{
+        width: 90%;
+    }
   .topnav a {display: none;}
   .topnav a.icon {
     float: right;
@@ -410,21 +414,24 @@ font-size: 30px;
     background: azure;
     text-align: center;
 }
-#map{
+#map,#map-prev{
     text-align: center;
     margin-top: 15px;
  
 }
-#map img{
+#map-prev img{
     height: 400px;
     width: 600px;
     
 }
-
+#map img{
+   height: 800px;
+    width: 60%;
+}
 
 /* When the input field gets focus, change its width to 100% */
 
-#page-body #table-banner{
+#page-body #table-banner,#map-banner{
     border:1px solid black;
     border-radius: 6px;
     margin-left: 5%;
@@ -432,7 +439,7 @@ font-size: 30px;
     margin-bottom: 2%;
     
 }
-#page-body #table-banner p{
+#page-body #table-banner,#map-banner p{
     margin-top:2px;
     vertical-align: middle;
 }

From ad8676a6e6f34744158379410aae75720c757a0e Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sun, 26 Mar 2017 19:32:07 +0430
Subject: [PATCH 046/104] fix : minor edit in map height

---
 site-test/style.css | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index 633f13d..24f8da0 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -151,7 +151,7 @@ marquee{
     bottom: 0;
     text-align: center;
     background-color: cornflowerblue;
-    position: relative;
+    position: absolute;
     font-size: 22px;
 }
 .form #error-message{
@@ -425,7 +425,7 @@ font-size: 30px;
     
 }
 #map img{
-   height: 800px;
+   height: 55%;
     width: 60%;
 }
 

From a2a177844f3264ad00a11f37e5c78dcedd05fce9 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sun, 26 Mar 2017 19:41:31 +0430
Subject: [PATCH 047/104] footer font fixed

---
 site-test/style.css | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index 24f8da0..74a5df1 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -152,7 +152,7 @@ marquee{
     text-align: center;
     background-color: cornflowerblue;
     position: absolute;
-    font-size: 22px;
+    font-size: 16px;
 }
 .form #error-message{
     color: red;
@@ -425,7 +425,8 @@ font-size: 30px;
     
 }
 #map img{
-   height: 55%;
+
+    height: 55%;
     width: 60%;
 }
 

From c3bd9a31503ce985871e67d60f1ebd6400236f09 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sun, 26 Mar 2017 21:08:38 +0430
Subject: [PATCH 048/104] fix : footer position fixed

---
 site-test/style.css | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/site-test/style.css b/site-test/style.css
index 74a5df1..971f516 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -151,7 +151,7 @@ marquee{
     bottom: 0;
     text-align: center;
     background-color: cornflowerblue;
-    position: absolute;
+    position: fixed;
     font-size: 16px;
 }
 .form #error-message{

From 636e2501fb566509648e5373ec5bb654cf0622ec Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sun, 26 Mar 2017 21:23:50 +0430
Subject: [PATCH 049/104] fix : floor-table page added

---
 site-test/E275H47jQ88B0XxV.html | 59 +++++++++++++++++++++++++++++++++
 site-test/style.css             | 16 ++++++++-
 2 files changed, 74 insertions(+), 1 deletion(-)
 create mode 100644 site-test/E275H47jQ88B0XxV.html

diff --git a/site-test/E275H47jQ88B0XxV.html b/site-test/E275H47jQ88B0XxV.html
new file mode 100644
index 0000000..b29bf6d
--- /dev/null
+++ b/site-test/E275H47jQ88B0XxV.html
@@ -0,0 +1,59 @@
+<html>
+    <head>
+        <link href="style.css" rel="stylesheet" type="text/css">
+        <script src="script.js"></script>
+        <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
+    </head>
+    <body id="body-index">
+        <div class="banner">
+            
+            <div id="right-image">
+                <img src="images/1.png" height="100px" width="100px"/>
+            </div>
+            <div id="topic">
+                <p>سامانه اطلاع رسانی ساختمان ابوریحان</p>
+            </div>
+            <div id="left-image">
+                <img src="images/2.gif" height="100px" width="100px"/>
+            </div>
+             
+        </div>
+        <div id="menu">
+        <div id="search">
+            <input type="text" name="search" placeholder=&#128270; onclick="search_hide();" onmouseout="search_view();">
+        </div>
+        <div class="topnav" id="myTopnav">
+            <a href="#table">جدول راهنمای طبقات</a>
+            <a href="#map">نقشه طبقات</a>
+            <a href="#masters">برنامه هفتگی اساتید</a>
+            <a href="#labs">آزمایشگاه ها</a>
+            <a href="#messages">اطلاعیه ها</a>
+            <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
+        </div>
+        </div>
+        <div id="page-body">
+            <div class="table-search">
+                <input type="text" name="table-search" placeholder="" >
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+        </div>
+        <div id="login-footer">
+        <p> ایده پردازان فناور ماورا &#169 1395</p>
+    </div>
+    </body>
+
+
+
+
+</html>
\ No newline at end of file
diff --git a/site-test/style.css b/site-test/style.css
index 971f516..dd0d4a4 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -508,4 +508,18 @@ input[type=text]:focus {
 }
 #mobile-table .place p{
     margin-top: 5%;
-}
\ No newline at end of file
+}
+#page-body .floor-table table,tr,td{
+    border:1px solid black;
+    border-collapse: collapse;
+    text-align: right;
+    border-radius: 10px;
+}
+#page-body .floor-table th{
+    text-align: center;
+}
+#page-body .floor-table td{
+    font-size: 13;
+    height: 40px;
+    width: 270px;
+}

From f171b161ad450fac1f2de8502a4590985cff1130 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Mon, 27 Mar 2017 02:05:39 +0430
Subject: [PATCH 050/104] fix : mobile version

---
 site-test/E275H47jQ88B0XxV.html | 89 ++++++++++++++++++++++++++++++++-
 site-test/style.css             | 29 ++++++++++-
 2 files changed, 115 insertions(+), 3 deletions(-)

diff --git a/site-test/E275H47jQ88B0XxV.html b/site-test/E275H47jQ88B0XxV.html
index b29bf6d..785e433 100644
--- a/site-test/E275H47jQ88B0XxV.html
+++ b/site-test/E275H47jQ88B0XxV.html
@@ -33,8 +33,10 @@
         </div>
         <div id="page-body">
             <div class="table-search">
-                <input type="text" name="table-search" placeholder="" >
+                <input type="text" name="table-search" placeholder="جستجو در جدول" >
             </div>
+            <div class="floor-tables">
+            
             <div class="floor-table">
                 <table>
                     <tr><th>طبقه چهارم</th></tr>
@@ -47,6 +49,91 @@
                     <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
                 </table>
             </div>
+              <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            </div>
         </div>
         <div id="login-footer">
         <p> ایده پردازان فناور ماورا &#169 1395</p>
diff --git a/site-test/style.css b/site-test/style.css
index dd0d4a4..a68c1a0 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -204,6 +204,11 @@ marquee{
 
 
 @media all and (max-width: 1024px) {
+    .table-search input{
+        font-size: 60px;
+        margin-left: 10px;
+        margin-right: 10px;
+    }
     #page-body #table-banner,#map-banner{
     font-size: 35px;
     
@@ -517,9 +522,29 @@ input[type=text]:focus {
 }
 #page-body .floor-table th{
     text-align: center;
+    font-size: 20px;
 }
 #page-body .floor-table td{
-    font-size: 13;
+    font-size: 20px;
     height: 40px;
-    width: 270px;
+    width: 380px;
+    padding-right: 9px;
+}
+#page-body .floor-table{
+    display: inline-block;
+    margin-top: 10px;
+    margin-left: 12px;
+    margin-bottom: 10px;
 }
+#page-body .floor-tables{
+    margin-left: 18.05%;
+    margin-right:18.5%;
+}
+.table-search input{
+    font-size: 20px;
+    width: 794px;
+    text-align: right;
+    padding-right: 10px;
+    font-family: "yekan";
+    margin-bottom: 10px;
+}
\ No newline at end of file

From c18e7ddcef24ec63d06ea465aa61472c7b8f6b55 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Mon, 27 Mar 2017 02:19:30 +0430
Subject: [PATCH 051/104] fix : set footer to sticky mode

---
 site-test/style.css | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index a68c1a0..4e32f3e 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -151,8 +151,8 @@ marquee{
     bottom: 0;
     text-align: center;
     background-color: cornflowerblue;
-    position: fixed;
-    font-size: 16px;
+    position:sticky;
+    font-size: 22px;
 }
 .form #error-message{
     color: red;

From 58a7929d49d40d67336adc3cb3f0c2b582fbb714 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Mon, 27 Mar 2017 11:04:29 +0430
Subject: [PATCH 052/104] table-search mobile view

---
 site-test/style.css | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/site-test/style.css b/site-test/style.css
index 4e32f3e..f74463a 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -204,10 +204,17 @@ marquee{
 
 
 @media all and (max-width: 1024px) {
-    .table-search input{
-        font-size: 60px;
-        margin-left: 10px;
-        margin-right: 10px;
+    #page-body .table-search input{
+        font-size: 40;
+        width: 80%;
+        padding-right: 20px;
+        margin-top: 10px;
+       
+    }
+    #page-body .floor-table td{
+        width: 100%;
+        height: 400px;
+        font-size: 30;
     }
     #page-body #table-banner,#map-banner{
     font-size: 35px;
@@ -351,7 +358,6 @@ font-size: 30px;
     }
     #login-footer{
         font-size: 45px;
-        position: relative;
         height:100px;
     }
     #body-login{
@@ -522,7 +528,7 @@ input[type=text]:focus {
 }
 #page-body .floor-table th{
     text-align: center;
-    font-size: 20px;
+    font-size: 22px;
 }
 #page-body .floor-table td{
     font-size: 20px;
@@ -547,4 +553,5 @@ input[type=text]:focus {
     padding-right: 10px;
     font-family: "yekan";
     margin-bottom: 10px;
+     border: 1px solid black;
 }
\ No newline at end of file

From 2a06c16f2830ae2054dca9a75acb9933ccfa1909 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 30 Mar 2017 14:57:37 +0430
Subject: [PATCH 053/104] fix : footer style fixed

---
 site-test/etelaie.html | 146 +++++++++++++++++++++++++++++++++++++++++
 site-test/jadval.html  | 146 +++++++++++++++++++++++++++++++++++++++++
 site-test/style.css    |   7 +-
 3 files changed, 298 insertions(+), 1 deletion(-)
 create mode 100644 site-test/etelaie.html
 create mode 100644 site-test/jadval.html

diff --git a/site-test/etelaie.html b/site-test/etelaie.html
new file mode 100644
index 0000000..785e433
--- /dev/null
+++ b/site-test/etelaie.html
@@ -0,0 +1,146 @@
+<html>
+    <head>
+        <link href="style.css" rel="stylesheet" type="text/css">
+        <script src="script.js"></script>
+        <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
+    </head>
+    <body id="body-index">
+        <div class="banner">
+            
+            <div id="right-image">
+                <img src="images/1.png" height="100px" width="100px"/>
+            </div>
+            <div id="topic">
+                <p>سامانه اطلاع رسانی ساختمان ابوریحان</p>
+            </div>
+            <div id="left-image">
+                <img src="images/2.gif" height="100px" width="100px"/>
+            </div>
+             
+        </div>
+        <div id="menu">
+        <div id="search">
+            <input type="text" name="search" placeholder=&#128270; onclick="search_hide();" onmouseout="search_view();">
+        </div>
+        <div class="topnav" id="myTopnav">
+            <a href="#table">جدول راهنمای طبقات</a>
+            <a href="#map">نقشه طبقات</a>
+            <a href="#masters">برنامه هفتگی اساتید</a>
+            <a href="#labs">آزمایشگاه ها</a>
+            <a href="#messages">اطلاعیه ها</a>
+            <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
+        </div>
+        </div>
+        <div id="page-body">
+            <div class="table-search">
+                <input type="text" name="table-search" placeholder="جستجو در جدول" >
+            </div>
+            <div class="floor-tables">
+            
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+              <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            </div>
+        </div>
+        <div id="login-footer">
+        <p> ایده پردازان فناور ماورا &#169 1395</p>
+    </div>
+    </body>
+
+
+
+
+</html>
\ No newline at end of file
diff --git a/site-test/jadval.html b/site-test/jadval.html
new file mode 100644
index 0000000..785e433
--- /dev/null
+++ b/site-test/jadval.html
@@ -0,0 +1,146 @@
+<html>
+    <head>
+        <link href="style.css" rel="stylesheet" type="text/css">
+        <script src="script.js"></script>
+        <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
+    </head>
+    <body id="body-index">
+        <div class="banner">
+            
+            <div id="right-image">
+                <img src="images/1.png" height="100px" width="100px"/>
+            </div>
+            <div id="topic">
+                <p>سامانه اطلاع رسانی ساختمان ابوریحان</p>
+            </div>
+            <div id="left-image">
+                <img src="images/2.gif" height="100px" width="100px"/>
+            </div>
+             
+        </div>
+        <div id="menu">
+        <div id="search">
+            <input type="text" name="search" placeholder=&#128270; onclick="search_hide();" onmouseout="search_view();">
+        </div>
+        <div class="topnav" id="myTopnav">
+            <a href="#table">جدول راهنمای طبقات</a>
+            <a href="#map">نقشه طبقات</a>
+            <a href="#masters">برنامه هفتگی اساتید</a>
+            <a href="#labs">آزمایشگاه ها</a>
+            <a href="#messages">اطلاعیه ها</a>
+            <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
+        </div>
+        </div>
+        <div id="page-body">
+            <div class="table-search">
+                <input type="text" name="table-search" placeholder="جستجو در جدول" >
+            </div>
+            <div class="floor-tables">
+            
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+              <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            <div class="floor-table">
+                <table>
+                    <tr><th>طبقه چهارم</th></tr>
+                    <tr><td>کلاس 413</td></tr>
+                    <tr><td>کلاس 412</td></tr>
+                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
+                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
+                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
+                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
+                </table>
+            </div>
+            </div>
+        </div>
+        <div id="login-footer">
+        <p> ایده پردازان فناور ماورا &#169 1395</p>
+    </div>
+    </body>
+
+
+
+
+</html>
\ No newline at end of file
diff --git a/site-test/style.css b/site-test/style.css
index f74463a..fdc414b 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -6,6 +6,7 @@
 }
 #body-index{
         margin: auto;
+    height: 100%;
     }
 #body-screen,#body-index{
     font-family: "yekan";
@@ -152,7 +153,9 @@ marquee{
     text-align: center;
     background-color: cornflowerblue;
     position:sticky;
-    font-size: 22px;
+    font-size: 27px;
+    margin-top: 200px;
+    height: 50px;
 }
 .form #error-message{
     color: red;
@@ -359,6 +362,7 @@ font-size: 30px;
     #login-footer{
         font-size: 45px;
         height:100px;
+        position: sticky;
     }
     #body-login{
         background-color: cornflowerblue;
@@ -474,6 +478,7 @@ input[type=text]:focus {
 
 #week-table .fix td{
     height: 20px;
+    text-align: center;
 }
 #week-table .place td{
     height: 40px;

From b9f91e28a5109d68598ad84717e7fac4ff5e3844 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 30 Mar 2017 18:48:09 +0430
Subject: [PATCH 054/104] 2 new page added

---
 site-test/1M7O8H6pk7rvWq4w.html | 235 ++++++++++++++++++++++++++++++++
 site-test/B2lk320ni805O0u1.html |  55 ++++++++
 site-test/etelaie.html          | 146 --------------------
 site-test/jadval.html           | 146 --------------------
 site-test/style.css             |  37 ++++-
 5 files changed, 325 insertions(+), 294 deletions(-)
 create mode 100644 site-test/1M7O8H6pk7rvWq4w.html
 create mode 100644 site-test/B2lk320ni805O0u1.html
 delete mode 100644 site-test/etelaie.html
 delete mode 100644 site-test/jadval.html

diff --git a/site-test/1M7O8H6pk7rvWq4w.html b/site-test/1M7O8H6pk7rvWq4w.html
new file mode 100644
index 0000000..e75bdb9
--- /dev/null
+++ b/site-test/1M7O8H6pk7rvWq4w.html
@@ -0,0 +1,235 @@
+<html>
+    <head>
+        <link href="style.css" rel="stylesheet" type="text/css">
+        <script src="script.js"></script>
+        <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
+    </head>
+    <body id="body-index">
+        <div class="banner">
+            
+            <div id="right-image">
+                <img src="images/1.png" height="100px" width="100px"/>
+            </div>
+            <div id="topic">
+                <p>سامانه اطلاع رسانی ساختمان ابوریحان</p>
+            </div>
+            <div id="left-image">
+                <img src="images/2.gif" height="100px" width="100px"/>
+            </div>
+             
+        </div>
+        <div id="menu">
+        <div id="search">
+            <input type="text" name="search" placeholder=&#128270; onclick="search_hide();" onmouseout="search_view();">
+        </div>
+        <div class="topnav" id="myTopnav">
+            <a href="#table">جدول راهنمای طبقات</a>
+            <a href="#map">نقشه طبقات</a>
+            <a href="#masters">برنامه هفتگی اساتید</a>
+            <a href="#labs">آزمایشگاه ها</a>
+            <a href="#messages">اطلاعیه ها</a>
+            <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
+        </div>
+        </div>
+        <div id="page-body">
+            <div class="table-search">
+                <input type="text" name="table-search" placeholder="جستجو در جدول" >
+            </div>
+            
+            <div class="table">
+                <table>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    
+                </table>
+            
+            </div>
+            
+        </div>
+        <div id="login-footer">
+        <p> ایده پردازان فناور ماورا &#169 1395</p>
+    </div>
+    </body>
+
+
+
+
+</html>
\ No newline at end of file
diff --git a/site-test/B2lk320ni805O0u1.html b/site-test/B2lk320ni805O0u1.html
new file mode 100644
index 0000000..2e91cc6
--- /dev/null
+++ b/site-test/B2lk320ni805O0u1.html
@@ -0,0 +1,55 @@
+<html>
+    <head>
+        <link href="style.css" rel="stylesheet" type="text/css">
+        <script src="script.js"></script>
+        <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
+    </head>
+    <body id="body-index">
+        <div class="banner">
+            
+            <div id="right-image">
+                <img src="images/1.png" height="100px" width="100px"/>
+            </div>
+            <div id="topic">
+                <p>سامانه اطلاع رسانی ساختمان ابوریحان</p>
+            </div>
+            <div id="left-image">
+                <img src="images/2.gif" height="100px" width="100px"/>
+            </div>
+             
+        </div>
+        <div id="menu">
+        <div id="search">
+            <input type="text" name="search" placeholder=&#128270; onclick="search_hide();" onmouseout="search_view();">
+        </div>
+        <div class="topnav" id="myTopnav">
+            <a href="#table">جدول راهنمای طبقات</a>
+            <a href="#map">نقشه طبقات</a>
+            <a href="#masters">برنامه هفتگی اساتید</a>
+            <a href="#labs">آزمایشگاه ها</a>
+            <a href="#messages">اطلاعیه ها</a>
+            <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
+        </div>
+        </div>
+        <div id="page-body">
+            <div class="table-search">
+                <input type="text" name="notif-search" placeholder="جستجو در اطلاعیه ها" >
+            </div>
+            <div class="notif">
+                <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>
+                <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>
+                <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>
+                <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>
+                <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>
+            </div>
+            
+        </div>
+        <div id="login-footer">
+        <p> ایده پردازان فناور ماورا &#169 1395</p>
+    </div>
+    </body>
+
+
+
+
+</html>
\ No newline at end of file
diff --git a/site-test/etelaie.html b/site-test/etelaie.html
deleted file mode 100644
index 785e433..0000000
--- a/site-test/etelaie.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<html>
-    <head>
-        <link href="style.css" rel="stylesheet" type="text/css">
-        <script src="script.js"></script>
-        <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
-    </head>
-    <body id="body-index">
-        <div class="banner">
-            
-            <div id="right-image">
-                <img src="images/1.png" height="100px" width="100px"/>
-            </div>
-            <div id="topic">
-                <p>سامانه اطلاع رسانی ساختمان ابوریحان</p>
-            </div>
-            <div id="left-image">
-                <img src="images/2.gif" height="100px" width="100px"/>
-            </div>
-             
-        </div>
-        <div id="menu">
-        <div id="search">
-            <input type="text" name="search" placeholder=&#128270; onclick="search_hide();" onmouseout="search_view();">
-        </div>
-        <div class="topnav" id="myTopnav">
-            <a href="#table">جدول راهنمای طبقات</a>
-            <a href="#map">نقشه طبقات</a>
-            <a href="#masters">برنامه هفتگی اساتید</a>
-            <a href="#labs">آزمایشگاه ها</a>
-            <a href="#messages">اطلاعیه ها</a>
-            <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
-        </div>
-        </div>
-        <div id="page-body">
-            <div class="table-search">
-                <input type="text" name="table-search" placeholder="جستجو در جدول" >
-            </div>
-            <div class="floor-tables">
-            
-            <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-              <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-            <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-            <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-            <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-            <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-            <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-            <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-            </div>
-        </div>
-        <div id="login-footer">
-        <p> ایده پردازان فناور ماورا &#169 1395</p>
-    </div>
-    </body>
-
-
-
-
-</html>
\ No newline at end of file
diff --git a/site-test/jadval.html b/site-test/jadval.html
deleted file mode 100644
index 785e433..0000000
--- a/site-test/jadval.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<html>
-    <head>
-        <link href="style.css" rel="stylesheet" type="text/css">
-        <script src="script.js"></script>
-        <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
-    </head>
-    <body id="body-index">
-        <div class="banner">
-            
-            <div id="right-image">
-                <img src="images/1.png" height="100px" width="100px"/>
-            </div>
-            <div id="topic">
-                <p>سامانه اطلاع رسانی ساختمان ابوریحان</p>
-            </div>
-            <div id="left-image">
-                <img src="images/2.gif" height="100px" width="100px"/>
-            </div>
-             
-        </div>
-        <div id="menu">
-        <div id="search">
-            <input type="text" name="search" placeholder=&#128270; onclick="search_hide();" onmouseout="search_view();">
-        </div>
-        <div class="topnav" id="myTopnav">
-            <a href="#table">جدول راهنمای طبقات</a>
-            <a href="#map">نقشه طبقات</a>
-            <a href="#masters">برنامه هفتگی اساتید</a>
-            <a href="#labs">آزمایشگاه ها</a>
-            <a href="#messages">اطلاعیه ها</a>
-            <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
-        </div>
-        </div>
-        <div id="page-body">
-            <div class="table-search">
-                <input type="text" name="table-search" placeholder="جستجو در جدول" >
-            </div>
-            <div class="floor-tables">
-            
-            <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-              <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-            <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-            <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-            <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-            <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-            <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-            <div class="floor-table">
-                <table>
-                    <tr><th>طبقه چهارم</th></tr>
-                    <tr><td>کلاس 413</td></tr>
-                    <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
-                    <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
-                    <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
-                    <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
-                    <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
-                </table>
-            </div>
-            </div>
-        </div>
-        <div id="login-footer">
-        <p> ایده پردازان فناور ماورا &#169 1395</p>
-    </div>
-    </body>
-
-
-
-
-</html>
\ No newline at end of file
diff --git a/site-test/style.css b/site-test/style.css
index fdc414b..5c92d9c 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -154,7 +154,7 @@ marquee{
     background-color: cornflowerblue;
     position:sticky;
     font-size: 27px;
-    margin-top: 200px;
+    margin-top: 100px;
     height: 50px;
 }
 .form #error-message{
@@ -207,8 +207,16 @@ marquee{
 
 
 @media all and (max-width: 1024px) {
+    #page-body .table table,tr,td{
+    font-size: 27px;
+    }
+    
+    #page-body .notif p{
+    width: 100%;
+    font-size: 40px;
+    }
     #page-body .table-search input{
-        font-size: 40;
+        font-size: 30;
         width: 80%;
         padding-right: 20px;
         margin-top: 10px;
@@ -559,4 +567,29 @@ input[type=text]:focus {
     font-family: "yekan";
     margin-bottom: 10px;
      border: 1px solid black;
+}
+#page-body .notif p{
+    border: 1px solid black;
+    text-align: right;
+    width: 794px;
+    padding: 8px;
+    margin: 10px auto auto auto;
+}
+#page-body .table table,tr,td{
+    border:1px solid black;
+    border-collapse: collapse;
+    text-align: right;
+    border-radius: 10px;
+    margin: auto;
+}
+#page-body .table tr td:first-child{
+    width: 130px;
+    padding: 6px;
+}
+#page-body .table tr td:not(:first-child){
+    width: 221px;
+    padding: 6px;
+}
+#page-body .table{
+    margin-top: 8px;
 }
\ No newline at end of file

From 084c2b6a813fa6fd0eae078afe819536086d7b5b Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Fri, 31 Mar 2017 13:44:35 +0430
Subject: [PATCH 055/104] fix : edit in mobile navigation bar icon

---
 site-test/1M7O8H6pk7rvWq4w.html | 2 +-
 site-test/script.js             | 3 +++
 site-test/style.css             | 8 +++++---
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/site-test/1M7O8H6pk7rvWq4w.html b/site-test/1M7O8H6pk7rvWq4w.html
index e75bdb9..42ec5da 100644
--- a/site-test/1M7O8H6pk7rvWq4w.html
+++ b/site-test/1M7O8H6pk7rvWq4w.html
@@ -28,7 +28,7 @@
             <a href="#masters">برنامه هفتگی اساتید</a>
             <a href="#labs">آزمایشگاه ها</a>
             <a href="#messages">اطلاعیه ها</a>
-            <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
+            <a href="javascript:void(0);" class="icon" id="mobile-icon" onclick="myFunction()">&#9776;</a>
         </div>
         </div>
         <div id="page-body">
diff --git a/site-test/script.js b/site-test/script.js
index 284d0a1..b56da64 100644
--- a/site-test/script.js
+++ b/site-test/script.js
@@ -22,14 +22,17 @@ function login(){
 function myFunction() {
     var x = document.getElementById("myTopnav");
     var menu=document.getElementById("menu");
+    var icon=document.getElementById("mobile-icon");
     if (x.className === "topnav") {
         x.className += " responsive";
         menu.style.height="auto";
         document.getElementById("search").style.display="none";
+        icon.innerHTML="&#x2716";
     } else {
         x.className = "topnav";
         menu.style.height="100px";
         document.getElementById("search").style.display="block";
+        icon.innerHTML="&#9776;"
     }
 }
 
diff --git a/site-test/style.css b/site-test/style.css
index 5c92d9c..b5a1372 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -180,7 +180,8 @@ marquee{
 .topnav {
     overflow: hidden;
     text-align: center;
-    margin-right: 8%;
+    margin-right: 5%;
+    
 }
 
 /* Style the links inside the navigation bar */
@@ -192,6 +193,7 @@ marquee{
     padding: 14px 16px;
     text-decoration: none;
     font-size: 17px;
+    
 }
 
 /* Change the color of links on hover */
@@ -244,7 +246,7 @@ marquee{
     #menu #search input{
         margin-top: 23px;
         background-color: blue;
-        font-size: 45px;
+        font-size: 50px;
         border-style: none;
         margin-left: 25px;
     }
@@ -299,7 +301,7 @@ marquee{
   .topnav a.icon {
     float: right;
     display: block;
-    font-size: 60px;
+    font-size: 50px;
   }
   .topnav.responsive {position:relative;}
   .topnav.responsive a.icon {

From 7b85a34e971fe74e67344251e6345a08e91e69bb Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Fri, 31 Mar 2017 18:22:32 +0430
Subject: [PATCH 056/104] sidenav menu added

---
 site-test/admin-page.html  | 235 +++++++++++++++++++++++++++++++++++++
 site-test/images/admin.png | Bin 0 -> 13894 bytes
 site-test/script.js        |  17 ++-
 site-test/style.css        |  61 ++++++++++
 4 files changed, 312 insertions(+), 1 deletion(-)
 create mode 100644 site-test/admin-page.html
 create mode 100644 site-test/images/admin.png

diff --git a/site-test/admin-page.html b/site-test/admin-page.html
new file mode 100644
index 0000000..0e4d841
--- /dev/null
+++ b/site-test/admin-page.html
@@ -0,0 +1,235 @@
+<html>
+    <head>
+        <link href="style.css" rel="stylesheet" type="text/css">
+        <script src="script.js"></script>
+        <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
+    </head>
+    <body id="body-index">
+        <div class="banner">
+            
+            <div id="right-image">
+                <img src="images/1.png" height="100px" width="100px"/>
+            </div>
+            <div id="topic">
+                <p>سامانه اطلاع رسانی ساختمان ابوریحان</p>
+            </div>
+            <div id="left-image">
+                
+                <img src="images/2.gif" height="100px" width="100px"/>
+            </div>
+             
+        </div>
+        <div id="mySidenav" class="sidenav">
+            <div id="user-role">
+                <img src="images/admin.png">
+            </div>
+            <a href="javascript:void(0)" id="adicon" onclick="openNav();">&#9776;</a>
+            <a href="#">اتاق ها <img src="images/admin.png"></a>
+            <a href="#">اساتید <img src="images/admin.png"></a>
+            <a href="#">آزمایشگاه ها <img src="images/admin.png"></a>
+            <a href="#">اطلاعیه ها <img src="images/admin.png"></a>
+            <a href="#">کاربران <img src="images/admin.png"></a>
+            <a href="#">خروج <img src="images/admin.png"></a>
+        </div>
+        <div id="page-body">
+            <div class="table-search">
+                <input type="text" name="table-search" placeholder="جستجو در جدول" >
+            </div>
+            
+            <div class="table">
+                <table>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    <tr>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                        <td>تست</td>
+                    </tr>
+                    
+                </table>
+            
+            </div>
+            
+        </div>
+        <div id="login-footer">
+        <p> ایده پردازان فناور ماورا &#169 1395</p>
+    </div>
+    </body>
+
+
+
+
+</html>
\ No newline at end of file
diff --git a/site-test/images/admin.png b/site-test/images/admin.png
new file mode 100644
index 0000000000000000000000000000000000000000..ffb08de92bafa01c0e855f8b2cf2676b4994ad0f
GIT binary patch
diff --git a/site-test/script.js b/site-test/script.js
index b56da64..71f8270 100644
--- a/site-test/script.js
+++ b/site-test/script.js
@@ -32,7 +32,7 @@ function myFunction() {
         x.className = "topnav";
         menu.style.height="100px";
         document.getElementById("search").style.display="block";
-        icon.innerHTML="&#9776;"
+        icon.innerHTML="&#9726;"
     }
 }
 
@@ -46,4 +46,19 @@ function search_view(){
     var menu
     menu=document.getElementById("myTopnav");
     menu.style.display="block";
+}
+
+function openNav() {
+    var admin_icon=document.getElementById("adicon");
+    if (document.getElementById("mySidenav").style.width=="" || document.getElementById("mySidenav").style.width=="0px")
+    {
+        document.getElementById("mySidenav").style.width = "250px"
+        admin_icon.innerHTML="&#x2716;";
+    }
+    else{
+        document.getElementById("mySidenav").style.width = "0"
+        admin_icon.innerHTML="&#9776;";
+        
+    }
+
 }
\ No newline at end of file
diff --git a/site-test/style.css b/site-test/style.css
index b5a1372..c69870e 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -302,6 +302,7 @@ marquee{
     float: right;
     display: block;
     font-size: 50px;
+    
   }
   .topnav.responsive {position:relative;}
   .topnav.responsive a.icon {
@@ -594,4 +595,64 @@ input[type=text]:focus {
 }
 #page-body .table{
     margin-top: 8px;
+}
+.sidenav {
+    height: 100%; /* 100% Full-height */
+    width: 0px; /* 0 width - change this with JavaScript */
+    position: fixed; /* Stay in place */
+    z-index: 1; /* Stay on top */
+    top: 0;
+    right: 0;
+    background-color: white;
+    padding-top: 60px; /* Place content 60px from the top */
+    transition: 0.5s; /* 0.5 second transition effect to slide in the sidenav */
+    text-align: right;
+    background-color: cornflowerblue;
+    border-left: 1px solid black;
+}
+
+/* The navigation menu links */
+.sidenav #user-role{
+    padding: 8px 8px 8px 32px;
+    text-decoration: none;
+    font-size: 25px;
+    color: black;
+    display: block;
+    transition: 0.3s;
+    background-color: cornflowerblue;
+    height: 44px;
+}
+.sidenav #user-role img{
+    height: 44px;
+    width: 44px;
+    margin-right: 22px;
+}
+.sidenav img{
+    height: 44px;
+    width: 44px;
+}
+.sidenav a{
+    padding: 8px 8px 8px 32px;
+    text-decoration: none;
+    font-size: 25px;
+    color: black;
+    display: block;
+    transition: 0.1s;
+}
+.sidenav a:not(:first-child){
+    margin-right: 20px;
+}
+
+/* When you mouse over the navigation links, change their color */
+.sidenav a:hover, .offcanvas a:focus{
+    color: #f1f1f1;
+}
+
+/* Position and style the close button (top right corner) */
+.sidenav  #adicon {
+    position: absolute;
+    top: 0;
+    right: 5px;
+    font-size: 30px;
+    margin-left: 50px;
 }
\ No newline at end of file

From 30a86fd01e0d869a2efab198bd956e24e9513c44 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Fri, 31 Mar 2017 18:34:50 +0430
Subject: [PATCH 057/104] fix: minor edit in navbar

---
 site-test/admin-page.html |  2 +-
 site-test/style.css       | 10 +++++++---
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/site-test/admin-page.html b/site-test/admin-page.html
index 0e4d841..2bc493c 100644
--- a/site-test/admin-page.html
+++ b/site-test/admin-page.html
@@ -21,7 +21,7 @@
         </div>
         <div id="mySidenav" class="sidenav">
             <div id="user-role">
-                <img src="images/admin.png">
+               <p>ادمین<img src="images/admin.png"> </p>
             </div>
             <a href="javascript:void(0)" id="adicon" onclick="openNav();">&#9776;</a>
             <a href="#">اتاق ها <img src="images/admin.png"></a>
diff --git a/site-test/style.css b/site-test/style.css
index c69870e..76d8cf6 100644
--- a/site-test/style.css
+++ b/site-test/style.css
@@ -615,18 +615,22 @@ input[type=text]:focus {
 .sidenav #user-role{
     padding: 8px 8px 8px 32px;
     text-decoration: none;
-    font-size: 25px;
+    font-size: 22px;
     color: black;
     display: block;
-    transition: 0.3s;
+    transition: 0.1s;
     background-color: cornflowerblue;
-    height: 44px;
+    height: 75px;
+    border-bottom: 2px groove black;
 }
+
 .sidenav #user-role img{
     height: 44px;
     width: 44px;
     margin-right: 22px;
+    margin-left: 10px;
 }
+
 .sidenav img{
     height: 44px;
     width: 44px;

From 71f51ee9d91d6254c22aac337f118719ab98ef7b Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 1 Apr 2017 18:45:35 +0430
Subject: [PATCH 058/104] new js and css file added

---
 site-test/1M7O8H6pk7rvWq4w.html     |    4 +-
 site-test/2Gk1898126uyqB44.html     |    2 +-
 site-test/42450HMl8U8kl0xI.html     |    4 +-
 site-test/9ZOcz6kuM3h3W8mu.html     |    4 +-
 site-test/B2lk320ni805O0u1.html     |    4 +-
 site-test/E275H47jQ88B0XxV.html     |    4 +-
 site-test/M191478tW1DbJ755.html     |    4 +-
 site-test/admin-page.html           |  281 ++----
 site-test/css/bootstrap.min.css     |    7 +
 site-test/{ => css}/fonts/Yekan.ttf |  Bin
 site-test/css/jquery-ui.css         | 1225 ++++++++++++++++++++++++
 site-test/{ => css}/style.css       |   39 +-
 site-test/css/style2.css            |   33 +
 site-test/js/bootstrap.min.js       |    6 +
 site-test/js/index.js               |   54 ++
 site-test/js/jquery-ui.min.js       |   13 +
 site-test/js/jquery.min.js          |    5 +
 site-test/{ => js}/script.js        |   61 +-
 site-test/js/underscore.js          | 1343 +++++++++++++++++++++++++++
 site-test/rR6732XLw0Q7805Z.html     |    4 +-
 20 files changed, 2855 insertions(+), 242 deletions(-)
 create mode 100644 site-test/css/bootstrap.min.css
 rename site-test/{ => css}/fonts/Yekan.ttf (100%)
 create mode 100644 site-test/css/jquery-ui.css
 rename site-test/{ => css}/style.css (96%)
 create mode 100644 site-test/css/style2.css
 create mode 100644 site-test/js/bootstrap.min.js
 create mode 100644 site-test/js/index.js
 create mode 100644 site-test/js/jquery-ui.min.js
 create mode 100644 site-test/js/jquery.min.js
 rename site-test/{ => js}/script.js (58%)
 create mode 100644 site-test/js/underscore.js

diff --git a/site-test/1M7O8H6pk7rvWq4w.html b/site-test/1M7O8H6pk7rvWq4w.html
index 42ec5da..a8b73cd 100644
--- a/site-test/1M7O8H6pk7rvWq4w.html
+++ b/site-test/1M7O8H6pk7rvWq4w.html
@@ -1,7 +1,7 @@
 <html>
     <head>
-        <link href="style.css" rel="stylesheet" type="text/css">
-        <script src="script.js"></script>
+        <link href="css/style.css" rel="stylesheet" type="text/css">
+        <script src="js/script.js"></script>
         <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
     </head>
     <body id="body-index">
diff --git a/site-test/2Gk1898126uyqB44.html b/site-test/2Gk1898126uyqB44.html
index fd0d0b9..540ee31 100644
--- a/site-test/2Gk1898126uyqB44.html
+++ b/site-test/2Gk1898126uyqB44.html
@@ -1,7 +1,7 @@
 <html>
 
     <head>
-        <link href="style.css" rel="stylesheet" type="text/css">
+        <link href="css/style.css" rel="stylesheet" type="text/css">
         <title>راهنمای طبقات</title>
         <title>راهنمای طبقات</title>
     </head>
diff --git a/site-test/42450HMl8U8kl0xI.html b/site-test/42450HMl8U8kl0xI.html
index f930ef3..1f0fc0a 100644
--- a/site-test/42450HMl8U8kl0xI.html
+++ b/site-test/42450HMl8U8kl0xI.html
@@ -1,7 +1,7 @@
 <html>
     <head>
-        <link href="style.css" rel="stylesheet" type="text/css">
-        <script src="script.js"></script>
+        <link href="css/style.css" rel="stylesheet" type="text/css">
+        <script src="js/script.js"></script>
         <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
     </head>
     <body id="body-index">
diff --git a/site-test/9ZOcz6kuM3h3W8mu.html b/site-test/9ZOcz6kuM3h3W8mu.html
index 75124ea..c2c9409 100644
--- a/site-test/9ZOcz6kuM3h3W8mu.html
+++ b/site-test/9ZOcz6kuM3h3W8mu.html
@@ -1,7 +1,7 @@
 <html>
     <head>
-        <link href="style.css" rel="stylesheet" type="text/css">
-        <script src="script.js"></script>
+        <link href="css/style.css" rel="stylesheet" type="text/css">
+        <script src="js/script.js"></script>
         <title>ورود</title>
     </head>
 <body id="body-login">
diff --git a/site-test/B2lk320ni805O0u1.html b/site-test/B2lk320ni805O0u1.html
index 2e91cc6..b6870ec 100644
--- a/site-test/B2lk320ni805O0u1.html
+++ b/site-test/B2lk320ni805O0u1.html
@@ -1,7 +1,7 @@
 <html>
     <head>
-        <link href="style.css" rel="stylesheet" type="text/css">
-        <script src="script.js"></script>
+        <link href="css/style.css" rel="stylesheet" type="text/css">
+        <script src="js/script.js"></script>
         <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
     </head>
     <body id="body-index">
diff --git a/site-test/E275H47jQ88B0XxV.html b/site-test/E275H47jQ88B0XxV.html
index 785e433..72fbe8e 100644
--- a/site-test/E275H47jQ88B0XxV.html
+++ b/site-test/E275H47jQ88B0XxV.html
@@ -1,7 +1,7 @@
 <html>
     <head>
-        <link href="style.css" rel="stylesheet" type="text/css">
-        <script src="script.js"></script>
+        <link href="css/style.css" rel="stylesheet" type="text/css">
+        <script src="js/script.js"></script>
         <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
     </head>
     <body id="body-index">
diff --git a/site-test/M191478tW1DbJ755.html b/site-test/M191478tW1DbJ755.html
index 537499c..88d5024 100644
--- a/site-test/M191478tW1DbJ755.html
+++ b/site-test/M191478tW1DbJ755.html
@@ -1,7 +1,7 @@
 <html>
     <head>
-        <link href="style.css" rel="stylesheet" type="text/css">
-        <script src="script.js"></script>
+        <link href="css/style.css" rel="stylesheet" type="text/css">
+        <script src="js/script.js"></script>
         <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
     </head>
     <body id="body-index">
diff --git a/site-test/admin-page.html b/site-test/admin-page.html
index 2bc493c..c669266 100644
--- a/site-test/admin-page.html
+++ b/site-test/admin-page.html
@@ -1,232 +1,63 @@
 <html>
     <head>
-        <link href="style.css" rel="stylesheet" type="text/css">
-        <script src="script.js"></script>
+        <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css">
+        <link href="css/jquery-ui.css" rel="stylesheet" type="text/css">
+        <link href="css/style2.css" rel="stylesheet" type="text/css">
         <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
     </head>
-    <body id="body-index">
-        <div class="banner">
-            
-            <div id="right-image">
-                <img src="images/1.png" height="100px" width="100px"/>
-            </div>
-            <div id="topic">
-                <p>سامانه اطلاع رسانی ساختمان ابوریحان</p>
-            </div>
-            <div id="left-image">
-                
-                <img src="images/2.gif" height="100px" width="100px"/>
-            </div>
-             
-        </div>
-        <div id="mySidenav" class="sidenav">
-            <div id="user-role">
-               <p>ادمین<img src="images/admin.png"> </p>
-            </div>
-            <a href="javascript:void(0)" id="adicon" onclick="openNav();">&#9776;</a>
-            <a href="#">اتاق ها <img src="images/admin.png"></a>
-            <a href="#">اساتید <img src="images/admin.png"></a>
-            <a href="#">آزمایشگاه ها <img src="images/admin.png"></a>
-            <a href="#">اطلاعیه ها <img src="images/admin.png"></a>
-            <a href="#">کاربران <img src="images/admin.png"></a>
-            <a href="#">خروج <img src="images/admin.png"></a>
-        </div>
-        <div id="page-body">
-            <div class="table-search">
-                <input type="text" name="table-search" placeholder="جستجو در جدول" >
-            </div>
-            
-            <div class="table">
-                <table>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    <tr>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
-                    </tr>
-                    
-                </table>
-            
-            </div>
-            
-        </div>
-        <div id="login-footer">
-        <p> ایده پردازان فناور ماورا &#169 1395</p>
-    </div>
+    <body>
+        <div class="container">
+  <h1>HTML5 Editable Table</h1>
+  <p>Through the powers of <strong>contenteditable</strong> and some simple jQuery you can easily create a custom editable table. No need for a robust JavaScript library anymore these days.</p>
+  
+  <ul>
+    <li>An editable table that exports a hash array. Dynamically compiles rows from headers</li> 
+    <li>Simple / powerful features such as add row, remove row, move row up/down.</li>
+  </ul>
+  
+  <div id="table" class="table-editable">
+    <span class="table-add glyphicon glyphicon-plus"></span>
+    <table class="table">
+      <tr>
+        <th>Name</th>
+        <th>Value</th>
+        <th></th>
+        <th></th>
+      </tr>
+      <tr>
+        <td contenteditable="true">Stir Fry</td>
+        <td contenteditable="true">stir-fry</td>
+        <td>
+          <span class="table-remove glyphicon glyphicon-remove"></span>
+        </td>
+        <td>
+          <span class="table-up glyphicon glyphicon-arrow-up"></span>
+          <span class="table-down glyphicon glyphicon-arrow-down"></span>
+        </td>
+      </tr>
+      <!-- This is our clonable table line -->
+      <tr class="hide">
+        <td contenteditable="true">Untitled</td>
+        <td contenteditable="true">undefined</td>
+        <td>
+          <span class="table-remove glyphicon glyphicon-remove"></span>
+        </td>
+        <td>
+          <span class="table-up glyphicon glyphicon-arrow-up"></span>
+          <span class="table-down glyphicon glyphicon-arrow-down"></span>
+        </td>
+      </tr>
+    </table>
+  </div>
+  
+  <button id="export-btn" class="btn btn-primary">Export Data</button>
+  <p id="export"></p>
+</div>
+<script src="js/bootstrap.min.js"></script>
+<script src="js/jquery-ui.min.js"></script>
+<script src="js/jquery.min.js"></script>
+<script src="js/underscore.js"></script>
+<script src="js/index.js"></script>
     </body>
 
 
diff --git a/site-test/css/bootstrap.min.css b/site-test/css/bootstrap.min.css
new file mode 100644
index 0000000..679272d
--- /dev/null
+++ b/site-test/css/bootstrap.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}@media print{.hidden-print{display:none!important}}
\ No newline at end of file
diff --git a/site-test/fonts/Yekan.ttf b/site-test/css/fonts/Yekan.ttf
similarity index 100%
rename from site-test/fonts/Yekan.ttf
rename to site-test/css/fonts/Yekan.ttf
diff --git a/site-test/css/jquery-ui.css b/site-test/css/jquery-ui.css
new file mode 100644
index 0000000..62578c5
--- /dev/null
+++ b/site-test/css/jquery-ui.css
@@ -0,0 +1,1225 @@
+/*! jQuery UI - v1.11.2 - 2014-10-16
+* http://jqueryui.com
+* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden {
+	display: none;
+}
+.ui-helper-hidden-accessible {
+	border: 0;
+	clip: rect(0 0 0 0);
+	height: 1px;
+	margin: -1px;
+	overflow: hidden;
+	padding: 0;
+	position: absolute;
+	width: 1px;
+}
+.ui-helper-reset {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	outline: 0;
+	line-height: 1.3;
+	text-decoration: none;
+	font-size: 100%;
+	list-style: none;
+}
+.ui-helper-clearfix:before,
+.ui-helper-clearfix:after {
+	content: "";
+	display: table;
+	border-collapse: collapse;
+}
+.ui-helper-clearfix:after {
+	clear: both;
+}
+.ui-helper-clearfix {
+	min-height: 0; /* support: IE7 */
+}
+.ui-helper-zfix {
+	width: 100%;
+	height: 100%;
+	top: 0;
+	left: 0;
+	position: absolute;
+	opacity: 0;
+	filter:Alpha(Opacity=0); /* support: IE8 */
+}
+
+.ui-front {
+	z-index: 100;
+}
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled {
+	cursor: default !important;
+}
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+	display: block;
+	text-indent: -99999px;
+	overflow: hidden;
+	background-repeat: no-repeat;
+}
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+}
+.ui-accordion .ui-accordion-header {
+	display: block;
+	cursor: pointer;
+	position: relative;
+	margin: 2px 0 0 0;
+	padding: .5em .5em .5em .7em;
+	min-height: 0; /* support: IE7 */
+	font-size: 100%;
+}
+.ui-accordion .ui-accordion-icons {
+	padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-icons .ui-accordion-icons {
+	padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
+	position: absolute;
+	left: .5em;
+	top: 50%;
+	margin-top: -8px;
+}
+.ui-accordion .ui-accordion-content {
+	padding: 1em 2.2em;
+	border-top: 0;
+	overflow: auto;
+}
+.ui-autocomplete {
+	position: absolute;
+	top: 0;
+	left: 0;
+	cursor: default;
+}
+.ui-button {
+	display: inline-block;
+	position: relative;
+	padding: 0;
+	line-height: normal;
+	margin-right: .1em;
+	cursor: pointer;
+	vertical-align: middle;
+	text-align: center;
+	overflow: visible; /* removes extra width in IE */
+}
+.ui-button,
+.ui-button:link,
+.ui-button:visited,
+.ui-button:hover,
+.ui-button:active {
+	text-decoration: none;
+}
+/* to make room for the icon, a width needs to be set here */
+.ui-button-icon-only {
+	width: 2.2em;
+}
+/* button elements seem to need a little more width */
+button.ui-button-icon-only {
+	width: 2.4em;
+}
+.ui-button-icons-only {
+	width: 3.4em;
+}
+button.ui-button-icons-only {
+	width: 3.7em;
+}
+
+/* button text element */
+.ui-button .ui-button-text {
+	display: block;
+	line-height: normal;
+}
+.ui-button-text-only .ui-button-text {
+	padding: .4em 1em;
+}
+.ui-button-icon-only .ui-button-text,
+.ui-button-icons-only .ui-button-text {
+	padding: .4em;
+	text-indent: -9999999px;
+}
+.ui-button-text-icon-primary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+	padding: .4em 1em .4em 2.1em;
+}
+.ui-button-text-icon-secondary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+	padding: .4em 2.1em .4em 1em;
+}
+.ui-button-text-icons .ui-button-text {
+	padding-left: 2.1em;
+	padding-right: 2.1em;
+}
+/* no icon support for input elements, provide padding by default */
+input.ui-button {
+	padding: .4em 1em;
+}
+
+/* button icon element(s) */
+.ui-button-icon-only .ui-icon,
+.ui-button-text-icon-primary .ui-icon,
+.ui-button-text-icon-secondary .ui-icon,
+.ui-button-text-icons .ui-icon,
+.ui-button-icons-only .ui-icon {
+	position: absolute;
+	top: 50%;
+	margin-top: -8px;
+}
+.ui-button-icon-only .ui-icon {
+	left: 50%;
+	margin-left: -8px;
+}
+.ui-button-text-icon-primary .ui-button-icon-primary,
+.ui-button-text-icons .ui-button-icon-primary,
+.ui-button-icons-only .ui-button-icon-primary {
+	left: .5em;
+}
+.ui-button-text-icon-secondary .ui-button-icon-secondary,
+.ui-button-text-icons .ui-button-icon-secondary,
+.ui-button-icons-only .ui-button-icon-secondary {
+	right: .5em;
+}
+
+/* button sets */
+.ui-buttonset {
+	margin-right: 7px;
+}
+.ui-buttonset .ui-button {
+	margin-left: 0;
+	margin-right: -.3em;
+}
+
+/* workarounds */
+/* reset extra padding in Firefox, see h5bp.com/l */
+input.ui-button::-moz-focus-inner,
+button.ui-button::-moz-focus-inner {
+	border: 0;
+	padding: 0;
+}
+.ui-datepicker {
+	width: 17em;
+	padding: .2em .2em 0;
+	display: none;
+}
+.ui-datepicker .ui-datepicker-header {
+	position: relative;
+	padding: .2em 0;
+}
+.ui-datepicker .ui-datepicker-prev,
+.ui-datepicker .ui-datepicker-next {
+	position: absolute;
+	top: 2px;
+	width: 1.8em;
+	height: 1.8em;
+}
+.ui-datepicker .ui-datepicker-prev-hover,
+.ui-datepicker .ui-datepicker-next-hover {
+	top: 1px;
+}
+.ui-datepicker .ui-datepicker-prev {
+	left: 2px;
+}
+.ui-datepicker .ui-datepicker-next {
+	right: 2px;
+}
+.ui-datepicker .ui-datepicker-prev-hover {
+	left: 1px;
+}
+.ui-datepicker .ui-datepicker-next-hover {
+	right: 1px;
+}
+.ui-datepicker .ui-datepicker-prev span,
+.ui-datepicker .ui-datepicker-next span {
+	display: block;
+	position: absolute;
+	left: 50%;
+	margin-left: -8px;
+	top: 50%;
+	margin-top: -8px;
+}
+.ui-datepicker .ui-datepicker-title {
+	margin: 0 2.3em;
+	line-height: 1.8em;
+	text-align: center;
+}
+.ui-datepicker .ui-datepicker-title select {
+	font-size: 1em;
+	margin: 1px 0;
+}
+.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-year {
+	width: 45%;
+}
+.ui-datepicker table {
+	width: 100%;
+	font-size: .9em;
+	border-collapse: collapse;
+	margin: 0 0 .4em;
+}
+.ui-datepicker th {
+	padding: .7em .3em;
+	text-align: center;
+	font-weight: bold;
+	border: 0;
+}
+.ui-datepicker td {
+	border: 0;
+	padding: 1px;
+}
+.ui-datepicker td span,
+.ui-datepicker td a {
+	display: block;
+	padding: .2em;
+	text-align: right;
+	text-decoration: none;
+}
+.ui-datepicker .ui-datepicker-buttonpane {
+	background-image: none;
+	margin: .7em 0 0 0;
+	padding: 0 .2em;
+	border-left: 0;
+	border-right: 0;
+	border-bottom: 0;
+}
+.ui-datepicker .ui-datepicker-buttonpane button {
+	float: right;
+	margin: .5em .2em .4em;
+	cursor: pointer;
+	padding: .2em .6em .3em .6em;
+	width: auto;
+	overflow: visible;
+}
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
+	float: left;
+}
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi {
+	width: auto;
+}
+.ui-datepicker-multi .ui-datepicker-group {
+	float: left;
+}
+.ui-datepicker-multi .ui-datepicker-group table {
+	width: 95%;
+	margin: 0 auto .4em;
+}
+.ui-datepicker-multi-2 .ui-datepicker-group {
+	width: 50%;
+}
+.ui-datepicker-multi-3 .ui-datepicker-group {
+	width: 33.3%;
+}
+.ui-datepicker-multi-4 .ui-datepicker-group {
+	width: 25%;
+}
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
+	border-left-width: 0;
+}
+.ui-datepicker-multi .ui-datepicker-buttonpane {
+	clear: left;
+}
+.ui-datepicker-row-break {
+	clear: both;
+	width: 100%;
+	font-size: 0;
+}
+
+/* RTL support */
+.ui-datepicker-rtl {
+	direction: rtl;
+}
+.ui-datepicker-rtl .ui-datepicker-prev {
+	right: 2px;
+	left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next {
+	left: 2px;
+	right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-prev:hover {
+	right: 1px;
+	left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next:hover {
+	left: 1px;
+	right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane {
+	clear: right;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button {
+	float: left;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
+.ui-datepicker-rtl .ui-datepicker-group {
+	float: right;
+}
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
+	border-right-width: 0;
+	border-left-width: 1px;
+}
+.ui-dialog {
+	overflow: hidden;
+	position: absolute;
+	top: 0;
+	left: 0;
+	padding: .2em;
+	outline: 0;
+}
+.ui-dialog .ui-dialog-titlebar {
+	padding: .4em 1em;
+	position: relative;
+}
+.ui-dialog .ui-dialog-title {
+	float: left;
+	margin: .1em 0;
+	white-space: nowrap;
+	width: 90%;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+.ui-dialog .ui-dialog-titlebar-close {
+	position: absolute;
+	right: .3em;
+	top: 50%;
+	width: 20px;
+	margin: -10px 0 0 0;
+	padding: 1px;
+	height: 20px;
+}
+.ui-dialog .ui-dialog-content {
+	position: relative;
+	border: 0;
+	padding: .5em 1em;
+	background: none;
+	overflow: auto;
+}
+.ui-dialog .ui-dialog-buttonpane {
+	text-align: left;
+	border-width: 1px 0 0 0;
+	background-image: none;
+	margin-top: .5em;
+	padding: .3em 1em .5em .4em;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
+	float: right;
+}
+.ui-dialog .ui-dialog-buttonpane button {
+	margin: .5em .4em .5em 0;
+	cursor: pointer;
+}
+.ui-dialog .ui-resizable-se {
+	width: 12px;
+	height: 12px;
+	right: -5px;
+	bottom: -5px;
+	background-position: 16px 16px;
+}
+.ui-draggable .ui-dialog-titlebar {
+	cursor: move;
+}
+.ui-draggable-handle {
+	-ms-touch-action: none;
+	touch-action: none;
+}
+.ui-menu {
+	list-style: none;
+	padding: 0;
+	margin: 0;
+	display: block;
+	outline: none;
+}
+.ui-menu .ui-menu {
+	position: absolute;
+}
+.ui-menu .ui-menu-item {
+	position: relative;
+	margin: 0;
+	padding: 3px 1em 3px .4em;
+	cursor: pointer;
+	min-height: 0; /* support: IE7 */
+	/* support: IE10, see #8844 */
+	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
+}
+.ui-menu .ui-menu-divider {
+	margin: 5px 0;
+	height: 0;
+	font-size: 0;
+	line-height: 0;
+	border-width: 1px 0 0 0;
+}
+.ui-menu .ui-state-focus,
+.ui-menu .ui-state-active {
+	margin: -1px;
+}
+
+/* icon support */
+.ui-menu-icons {
+	position: relative;
+}
+.ui-menu-icons .ui-menu-item {
+	padding-left: 2em;
+}
+
+/* left-aligned */
+.ui-menu .ui-icon {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: .2em;
+	margin: auto 0;
+}
+
+/* right-aligned */
+.ui-menu .ui-menu-icon {
+	left: auto;
+	right: 0;
+}
+.ui-progressbar {
+	height: 2em;
+	text-align: left;
+	overflow: hidden;
+}
+.ui-progressbar .ui-progressbar-value {
+	margin: -1px;
+	height: 100%;
+}
+.ui-progressbar .ui-progressbar-overlay {
+	background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
+	height: 100%;
+	filter: alpha(opacity=25); /* support: IE8 */
+	opacity: 0.25;
+}
+.ui-progressbar-indeterminate .ui-progressbar-value {
+	background-image: none;
+}
+.ui-resizable {
+	position: relative;
+}
+.ui-resizable-handle {
+	position: absolute;
+	font-size: 0.1px;
+	display: block;
+	-ms-touch-action: none;
+	touch-action: none;
+}
+.ui-resizable-disabled .ui-resizable-handle,
+.ui-resizable-autohide .ui-resizable-handle {
+	display: none;
+}
+.ui-resizable-n {
+	cursor: n-resize;
+	height: 7px;
+	width: 100%;
+	top: -5px;
+	left: 0;
+}
+.ui-resizable-s {
+	cursor: s-resize;
+	height: 7px;
+	width: 100%;
+	bottom: -5px;
+	left: 0;
+}
+.ui-resizable-e {
+	cursor: e-resize;
+	width: 7px;
+	right: -5px;
+	top: 0;
+	height: 100%;
+}
+.ui-resizable-w {
+	cursor: w-resize;
+	width: 7px;
+	left: -5px;
+	top: 0;
+	height: 100%;
+}
+.ui-resizable-se {
+	cursor: se-resize;
+	width: 12px;
+	height: 12px;
+	right: 1px;
+	bottom: 1px;
+}
+.ui-resizable-sw {
+	cursor: sw-resize;
+	width: 9px;
+	height: 9px;
+	left: -5px;
+	bottom: -5px;
+}
+.ui-resizable-nw {
+	cursor: nw-resize;
+	width: 9px;
+	height: 9px;
+	left: -5px;
+	top: -5px;
+}
+.ui-resizable-ne {
+	cursor: ne-resize;
+	width: 9px;
+	height: 9px;
+	right: -5px;
+	top: -5px;
+}
+.ui-selectable {
+	-ms-touch-action: none;
+	touch-action: none;
+}
+.ui-selectable-helper {
+	position: absolute;
+	z-index: 100;
+	border: 1px dotted black;
+}
+.ui-selectmenu-menu {
+	padding: 0;
+	margin: 0;
+	position: absolute;
+	top: 0;
+	left: 0;
+	display: none;
+}
+.ui-selectmenu-menu .ui-menu {
+	overflow: auto;
+	/* Support: IE7 */
+	overflow-x: hidden;
+	padding-bottom: 1px;
+}
+.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
+	font-size: 1em;
+	font-weight: bold;
+	line-height: 1.5;
+	padding: 2px 0.4em;
+	margin: 0.5em 0 0 0;
+	height: auto;
+	border: 0;
+}
+.ui-selectmenu-open {
+	display: block;
+}
+.ui-selectmenu-button {
+	display: inline-block;
+	overflow: hidden;
+	position: relative;
+	text-decoration: none;
+	cursor: pointer;
+}
+.ui-selectmenu-button span.ui-icon {
+	right: 0.5em;
+	left: auto;
+	margin-top: -8px;
+	position: absolute;
+	top: 50%;
+}
+.ui-selectmenu-button span.ui-selectmenu-text {
+	text-align: left;
+	padding: 0.4em 2.1em 0.4em 1em;
+	display: block;
+	line-height: 1.4;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+}
+.ui-slider {
+	position: relative;
+	text-align: left;
+}
+.ui-slider .ui-slider-handle {
+	position: absolute;
+	z-index: 2;
+	width: 1.2em;
+	height: 1.2em;
+	cursor: default;
+	-ms-touch-action: none;
+	touch-action: none;
+}
+.ui-slider .ui-slider-range {
+	position: absolute;
+	z-index: 1;
+	font-size: .7em;
+	display: block;
+	border: 0;
+	background-position: 0 0;
+}
+
+/* support: IE8 - See #6727 */
+.ui-slider.ui-state-disabled .ui-slider-handle,
+.ui-slider.ui-state-disabled .ui-slider-range {
+	filter: inherit;
+}
+
+.ui-slider-horizontal {
+	height: .8em;
+}
+.ui-slider-horizontal .ui-slider-handle {
+	top: -.3em;
+	margin-left: -.6em;
+}
+.ui-slider-horizontal .ui-slider-range {
+	top: 0;
+	height: 100%;
+}
+.ui-slider-horizontal .ui-slider-range-min {
+	left: 0;
+}
+.ui-slider-horizontal .ui-slider-range-max {
+	right: 0;
+}
+
+.ui-slider-vertical {
+	width: .8em;
+	height: 100px;
+}
+.ui-slider-vertical .ui-slider-handle {
+	left: -.3em;
+	margin-left: 0;
+	margin-bottom: -.6em;
+}
+.ui-slider-vertical .ui-slider-range {
+	left: 0;
+	width: 100%;
+}
+.ui-slider-vertical .ui-slider-range-min {
+	bottom: 0;
+}
+.ui-slider-vertical .ui-slider-range-max {
+	top: 0;
+}
+.ui-sortable-handle {
+	-ms-touch-action: none;
+	touch-action: none;
+}
+.ui-spinner {
+	position: relative;
+	display: inline-block;
+	overflow: hidden;
+	padding: 0;
+	vertical-align: middle;
+}
+.ui-spinner-input {
+	border: none;
+	background: none;
+	color: inherit;
+	padding: 0;
+	margin: .2em 0;
+	vertical-align: middle;
+	margin-left: .4em;
+	margin-right: 22px;
+}
+.ui-spinner-button {
+	width: 16px;
+	height: 50%;
+	font-size: .5em;
+	padding: 0;
+	margin: 0;
+	text-align: center;
+	position: absolute;
+	cursor: default;
+	display: block;
+	overflow: hidden;
+	right: 0;
+}
+/* more specificity required here to override default borders */
+.ui-spinner a.ui-spinner-button {
+	border-top: none;
+	border-bottom: none;
+	border-right: none;
+}
+/* vertically center icon */
+.ui-spinner .ui-icon {
+	position: absolute;
+	margin-top: -8px;
+	top: 50%;
+	left: 0;
+}
+.ui-spinner-up {
+	top: 0;
+}
+.ui-spinner-down {
+	bottom: 0;
+}
+
+/* TR overrides */
+.ui-spinner .ui-icon-triangle-1-s {
+	/* need to fix icons sprite */
+	background-position: -65px -16px;
+}
+.ui-tabs {
+	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+	padding: .2em;
+}
+.ui-tabs .ui-tabs-nav {
+	margin: 0;
+	padding: .2em .2em 0;
+}
+.ui-tabs .ui-tabs-nav li {
+	list-style: none;
+	float: left;
+	position: relative;
+	top: 0;
+	margin: 1px .2em 0 0;
+	border-bottom-width: 0;
+	padding: 0;
+	white-space: nowrap;
+}
+.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
+	float: left;
+	padding: .5em 1em;
+	text-decoration: none;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active {
+	margin-bottom: -1px;
+	padding-bottom: 1px;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
+.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
+.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
+	cursor: text;
+}
+.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
+	cursor: pointer;
+}
+.ui-tabs .ui-tabs-panel {
+	display: block;
+	border-width: 0;
+	padding: 1em 1.4em;
+	background: none;
+}
+.ui-tooltip {
+	padding: 8px;
+	position: absolute;
+	z-index: 9999;
+	max-width: 300px;
+	-webkit-box-shadow: 0 0 5px #aaa;
+	box-shadow: 0 0 5px #aaa;
+}
+body .ui-tooltip {
+	border-width: 2px;
+}
+
+/* Component containers
+----------------------------------*/
+.ui-widget {
+	font-family: Verdana,Arial,sans-serif;
+	font-size: 1.1em;
+}
+.ui-widget .ui-widget {
+	font-size: 1em;
+}
+.ui-widget input,
+.ui-widget select,
+.ui-widget textarea,
+.ui-widget button {
+	font-family: Verdana,Arial,sans-serif;
+	font-size: 1em;
+}
+.ui-widget-content {
+	border: 1px solid #aaaaaa;
+	background: #ffffff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;
+	color: #222222;
+}
+.ui-widget-content a {
+	color: #222222;
+}
+.ui-widget-header {
+	border: 1px solid #aaaaaa;
+	background: #cccccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;
+	color: #222222;
+	font-weight: bold;
+}
+.ui-widget-header a {
+	color: #222222;
+}
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default {
+	border: 1px solid #d3d3d3;
+	background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;
+	font-weight: normal;
+	color: #555555;
+}
+.ui-state-default a,
+.ui-state-default a:link,
+.ui-state-default a:visited {
+	color: #555555;
+	text-decoration: none;
+}
+.ui-state-hover,
+.ui-widget-content .ui-state-hover,
+.ui-widget-header .ui-state-hover,
+.ui-state-focus,
+.ui-widget-content .ui-state-focus,
+.ui-widget-header .ui-state-focus {
+	border: 1px solid #999999;
+	background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;
+	font-weight: normal;
+	color: #212121;
+}
+.ui-state-hover a,
+.ui-state-hover a:hover,
+.ui-state-hover a:link,
+.ui-state-hover a:visited,
+.ui-state-focus a,
+.ui-state-focus a:hover,
+.ui-state-focus a:link,
+.ui-state-focus a:visited {
+	color: #212121;
+	text-decoration: none;
+}
+.ui-state-active,
+.ui-widget-content .ui-state-active,
+.ui-widget-header .ui-state-active {
+	border: 1px solid #aaaaaa;
+	background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
+	font-weight: normal;
+	color: #212121;
+}
+.ui-state-active a,
+.ui-state-active a:link,
+.ui-state-active a:visited {
+	color: #212121;
+	text-decoration: none;
+}
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight,
+.ui-widget-content .ui-state-highlight,
+.ui-widget-header .ui-state-highlight {
+	border: 1px solid #fcefa1;
+	background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;
+	color: #363636;
+}
+.ui-state-highlight a,
+.ui-widget-content .ui-state-highlight a,
+.ui-widget-header .ui-state-highlight a {
+	color: #363636;
+}
+.ui-state-error,
+.ui-widget-content .ui-state-error,
+.ui-widget-header .ui-state-error {
+	border: 1px solid #cd0a0a;
+	background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;
+	color: #cd0a0a;
+}
+.ui-state-error a,
+.ui-widget-content .ui-state-error a,
+.ui-widget-header .ui-state-error a {
+	color: #cd0a0a;
+}
+.ui-state-error-text,
+.ui-widget-content .ui-state-error-text,
+.ui-widget-header .ui-state-error-text {
+	color: #cd0a0a;
+}
+.ui-priority-primary,
+.ui-widget-content .ui-priority-primary,
+.ui-widget-header .ui-priority-primary {
+	font-weight: bold;
+}
+.ui-priority-secondary,
+.ui-widget-content .ui-priority-secondary,
+.ui-widget-header .ui-priority-secondary {
+	opacity: .7;
+	filter:Alpha(Opacity=70); /* support: IE8 */
+	font-weight: normal;
+}
+.ui-state-disabled,
+.ui-widget-content .ui-state-disabled,
+.ui-widget-header .ui-state-disabled {
+	opacity: .35;
+	filter:Alpha(Opacity=35); /* support: IE8 */
+	background-image: none;
+}
+.ui-state-disabled .ui-icon {
+	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
+}
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+	width: 16px;
+	height: 16px;
+}
+.ui-icon,
+.ui-widget-content .ui-icon {
+	background-image: url("images/ui-icons_222222_256x240.png");
+}
+.ui-widget-header .ui-icon {
+	background-image: url("images/ui-icons_222222_256x240.png");
+}
+.ui-state-default .ui-icon {
+	background-image: url("images/ui-icons_888888_256x240.png");
+}
+.ui-state-hover .ui-icon,
+.ui-state-focus .ui-icon {
+	background-image: url("images/ui-icons_454545_256x240.png");
+}
+.ui-state-active .ui-icon {
+	background-image: url("images/ui-icons_454545_256x240.png");
+}
+.ui-state-highlight .ui-icon {
+	background-image: url("images/ui-icons_2e83ff_256x240.png");
+}
+.ui-state-error .ui-icon,
+.ui-state-error-text .ui-icon {
+	background-image: url("images/ui-icons_cd0a0a_256x240.png");
+}
+
+/* positioning */
+.ui-icon-blank { background-position: 16px 16px; }
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-on { background-position: -96px -144px; }
+.ui-icon-radio-off { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-left,
+.ui-corner-tl {
+	border-top-left-radius: 4px;
+}
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-right,
+.ui-corner-tr {
+	border-top-right-radius: 4px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-left,
+.ui-corner-bl {
+	border-bottom-left-radius: 4px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-right,
+.ui-corner-br {
+	border-bottom-right-radius: 4px;
+}
+
+/* Overlays */
+.ui-widget-overlay {
+	background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
+	opacity: .3;
+	filter: Alpha(Opacity=30); /* support: IE8 */
+}
+.ui-widget-shadow {
+	margin: -8px 0 0 -8px;
+	padding: 8px;
+	background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
+	opacity: .3;
+	filter: Alpha(Opacity=30); /* support: IE8 */
+	border-radius: 8px;
+}
diff --git a/site-test/style.css b/site-test/css/style.css
similarity index 96%
rename from site-test/style.css
rename to site-test/css/style.css
index 76d8cf6..ee8637e 100644
--- a/site-test/style.css
+++ b/site-test/css/style.css
@@ -659,4 +659,41 @@ input[type=text]:focus {
     right: 5px;
     font-size: 30px;
     margin-left: 50px;
-}
\ No newline at end of file
+}
+
+@import "compass/css3";
+
+.table-editable {
+  position: relative;
+  
+}
+
+.table-remove {
+  color: #700;
+  cursor: pointer;
+  
+  &:hover {
+    color: #f00;
+  }
+}
+
+.table-up, .table-down {
+  color: #007;
+  cursor: pointer;
+  
+  &:hover {
+    color: #00f;
+  }
+}
+
+.table-add {
+  color: #070;
+  cursor: pointer;
+  position: absolute;
+  top: 8px;
+  right: 0;
+  
+  &:hover {
+    color: #0b0;
+  }
+}
diff --git a/site-test/css/style2.css b/site-test/css/style2.css
new file mode 100644
index 0000000..69691ce
--- /dev/null
+++ b/site-test/css/style2.css
@@ -0,0 +1,33 @@
+.table-editable {
+  position: relative;
+}
+.table-editable .glyphicon {
+  font-size: 20px;
+}
+
+.table-remove {
+  color: #700;
+  cursor: pointer;
+}
+.table-remove:hover {
+  color: #f00;
+}
+
+.table-up, .table-down {
+  color: #007;
+  cursor: pointer;
+}
+.table-up:hover, .table-down:hover {
+  color: #00f;
+}
+
+.table-add {
+  color: #070;
+  cursor: pointer;
+  position: absolute;
+  top: 8px;
+  right: 0;
+}
+.table-add:hover {
+  color: #0b0;
+}
diff --git a/site-test/js/bootstrap.min.js b/site-test/js/bootstrap.min.js
new file mode 100644
index 0000000..b04a0e8
--- /dev/null
+++ b/site-test/js/bootstrap.min.js
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.isLoading=!1};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",f.resetText||d.data("resetText",d[e]()),d[e](f[b]||this.options[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},b.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});return this.$element.trigger(j),j.isDefaultPrevented()?void 0:(this.sliding=!0,f&&this.pause(),this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")),f&&this.cycle(),this)};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("collapse in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);!e&&f.toggle&&"show"==c&&(c=!c),e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(b){a(d).remove(),a(e).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown",h),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=" li:not(.divider):visible a",i=f.find("[role=menu]"+h+", [role=listbox]"+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu], [role=listbox]",f.prototype.keydown)}(jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());c.is("a")&&b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this,d=this.tip();this.setContent(),this.options.animation&&d.addClass("fade");var e="function"==typeof this.options.placement?this.options.placement.call(this,d[0],this.$element[0]):this.options.placement,f=/\s?auto?\s?/i,g=f.test(e);g&&(e=e.replace(f,"")||"top"),d.detach().css({top:0,left:0,display:"block"}).addClass(e),this.options.container?d.appendTo(this.options.container):d.insertAfter(this.$element);var h=this.getPosition(),i=d[0].offsetWidth,j=d[0].offsetHeight;if(g){var k=this.$element.parent(),l=e,m=document.documentElement.scrollTop||document.body.scrollTop,n="body"==this.options.container?window.innerWidth:k.outerWidth(),o="body"==this.options.container?window.innerHeight:k.outerHeight(),p="body"==this.options.container?0:k.offset().left;e="bottom"==e&&h.top+h.height+j-m>o?"top":"top"==e&&h.top-m-j<0?"bottom":"right"==e&&h.right+i>n?"left":"left"==e&&h.left-i<p?"right":e,d.removeClass(l).addClass(e)}var q=this.getCalculatedOffset(e,h,i,j);this.applyPlacement(q,e),this.hoverState=null;var r=function(){c.$element.trigger("shown.bs."+c.type)};a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,r).emulateTransitionEnd(150):r()}},b.prototype.applyPlacement=function(b,c){var d,e=this.tip(),f=e[0].offsetWidth,g=e[0].offsetHeight,h=parseInt(e.css("margin-top"),10),i=parseInt(e.css("margin-left"),10);isNaN(h)&&(h=0),isNaN(i)&&(i=0),b.top=b.top+h,b.left=b.left+i,a.offset.setOffset(e[0],a.extend({using:function(a){e.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),e.addClass("in");var j=e[0].offsetWidth,k=e[0].offsetHeight;if("top"==c&&k!=g&&(d=!0,b.top=b.top+g-k),/bottom|top/.test(c)){var l=0;b.left<0&&(l=-2*b.left,b.left=0,e.offset(b),j=e[0].offsetWidth,k=e[0].offsetHeight),this.replaceArrow(l-f+j,j,"left")}else this.replaceArrow(k-g,k,"top");d&&e.offset(b)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]())})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]())})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(a(c).is("body")?window:c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);{var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})}},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(b.RESET).addClass("affix");var a=this.$window.scrollTop(),c=this.$element.offset();return this.pinnedOffset=c.top-a},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"top"==this.affixed&&(e.top+=d),"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(b.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:c-h-this.$element.height()}))}}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery);
\ No newline at end of file
diff --git a/site-test/js/index.js b/site-test/js/index.js
new file mode 100644
index 0000000..cb8d247
--- /dev/null
+++ b/site-test/js/index.js
@@ -0,0 +1,54 @@
+var $TABLE = $('#table');
+var $BTN = $('#export-btn');
+var $EXPORT = $('#export');
+
+$('.table-add').click(function () {
+  var $clone = $TABLE.find('tr.hide').clone(true).removeClass('hide table-line');
+  $TABLE.find('table').append($clone);
+});
+
+$('.table-remove').click(function () {
+  $(this).parents('tr').detach();
+});
+
+$('.table-up').click(function () {
+  var $row = $(this).parents('tr');
+  if ($row.index() === 1) return; // Don't go above the header
+  $row.prev().before($row.get(0));
+});
+
+$('.table-down').click(function () {
+  var $row = $(this).parents('tr');
+  $row.next().after($row.get(0));
+});
+
+// A few jQuery helpers for exporting only
+jQuery.fn.pop = [].pop;
+jQuery.fn.shift = [].shift;
+
+$BTN.click(function () {
+  var $rows = $TABLE.find('tr:not(:hidden)');
+  var headers = [];
+  var data = [];
+  
+  // Get the headers (add special header logic here)
+  $($rows.shift()).find('th:not(:empty)').each(function () {
+    headers.push($(this).text().toLowerCase());
+  });
+  
+  // Turn all existing rows into a loopable array
+  $rows.each(function () {
+    var $td = $(this).find('td');
+    var h = {};
+    
+    // Use the headers from earlier to name our hash keys
+    headers.forEach(function (header, i) {
+      h[header] = $td.eq(i).text();   
+    });
+    
+    data.push(h);
+  });
+  
+  // Output the result
+  $EXPORT.text(JSON.stringify(data));
+});
\ No newline at end of file
diff --git a/site-test/js/jquery-ui.min.js b/site-test/js/jquery-ui.min.js
new file mode 100644
index 0000000..17eab79
--- /dev/null
+++ b/site-test/js/jquery-ui.min.js
@@ -0,0 +1,13 @@
+/*! jQuery UI - v1.11.2 - 2014-10-16
+* http://jqueryui.com
+* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js
+* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
+
+(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/input|select|textarea|button|object/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",o)}function o(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return n=!a&&o.length?e.widget.extend.apply(null,[n].concat(o)):n,a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))}),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||n?i.width():i.outerWidth(),height:s||n?i.height():i.outerHeight()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(n[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,M=e.extend({},y),C=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?M.left-=d:"center"===n.my[0]&&(M.left-=d/2),"bottom"===n.my[1]?M.top-=c:"center"===n.my[1]&&(M.top-=c/2),M.left+=C[0],M.top+=C[1],a||(M.left=h(M.left),M.top=h(M.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](M,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+C[0],p[1]+C[1]],my:n.my,at:n.at,within:x,elem:u})}),n.using&&(l=function(e){var t=v.left-M.left,i=t+m-d,s=v.top-M.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,e.top+p+f+m>u&&(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,e.top+p+f+m>d&&(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.accordion",{version:"1.11.2",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr("aria-selected","false"),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true",tabIndex:0,"aria-expanded":"true"})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.length&&(!t.length||e.index()<t.index()),l=this.options.animate||{},u=h&&l.down||l,d=function(){o._toggleComplete(i)};return"number"==typeof u&&(a=u),"string"==typeof u&&(n=u),n=n||u.easing||l.easing,a=a||u.duration||l.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:a,easing:n,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:a,easing:n,complete:d,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?r+=i.now:"content"!==o.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-r),r=0)}}),void 0):t.animate(this.hideProps,a,n,d):e.animate(this.showProps,a,n,d)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.2",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var i=e(t.currentTarget);i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)
+}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,n,a,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),a.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)},_filterMenuItems:function(t){var i=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.2",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var i=t.name,s=t.form,n=e([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.2",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,m),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,i=this.options,s="checkbox"===this.type||"radio"===this.type,n=s?"":"ui-state-active";null===i.label&&(i.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){i.disabled||this===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(n)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),s&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return i.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(i.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(p+" ui-state-active "+f).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")),void 0):(this._resetButton(),void 0)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?g(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,n=s.primary&&s.secondary,a=[];s.primary||s.secondary?(this.options.text&&a.push("ui-button-text-icon"+(n?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(a.push(n?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):a.push("ui-button-text-only"),t.addClass(a.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.2",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),i=this.element.find(this.options.items),s=i.filter(":ui-button");i.not(":ui-button").button(),s.button("refresh"),this.buttons=i.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.2"}});var v;e.extend(n.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),o&&(i.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[r?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),a=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e("<button type='button'></button>").addClass(this._triggerClass).html(a?e("<img/>").attr({src:a,alt:n,title:n}):n)),t[r?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,s,n,a=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),e.input.attr("size",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty())},_enableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,a.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,a.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,"onSelect"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target);return e.datepicker._get(n,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0
+},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,"beforeShow"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&t.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),t.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(t){for(var i,s=this._getInst(t),n=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),s,n):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,"onClose"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+("M"===s?this._get(a,"showCurrentAtPos"):0),s),this._updateDatepicker(a))},_gotoToday:function(t){var i,s=e(t),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var n=e(t),a=this._getInst(n[0]);a["selected"+("M"===s?"Month":"Year")]=a["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,n=e(t),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,"onSelect"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger("change"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],"object"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,n,a=this._get(t,"altField");a&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?s:1,a=RegExp("^\\d{"+n+","+s+"}"),o=i.substring(h).match(a);if(!o)throw"Missing number at position "+h;return h+=o[0].length,parseInt(o[0],10)},w=function(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw"Unknown name at position "+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;t.length>n;n++)if(b)"'"!==t.charAt(n)||_("'")?k():b=!1;else switch(t.charAt(n)){case"d":v=x("d");break;case"D":w("D",d,c);break;case"o":y=x("o");break;case"m":g=x("m");break;case"M":g=w("M",p,f);break;case"y":m=x("y");break;case"@":r=new Date(x("@")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"!":r=new Date((x("!")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"'":_("'")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,a);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),o,r);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||n("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?"":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":o+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o));break;case"y":case"Y":a+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||""===i?s:"string"==typeof i?a(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&"Invalid Date"==""+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,M,C,N,A,P,I,z,H,F,E,O,j,W,L=new Date,R=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(e,"isRTL"),B=this._get(e,"showButtonPanel"),J=this._get(e,"hideIfNoPrevNext"),q=this._get(e,"navigationAsDateFormat"),K=this._getNumberOfMonths(e),V=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),Q=1!==K[0]||1!==K[1],G=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-V,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-K[0]*K[1]+1,$.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=q?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":J?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(e,"nextText"),n=q?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":J?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",o=this._get(e,"currentText"),r=this._get(e,"gotoCurrent")&&e.currentDay?G:R,o=q?this.formatDate(o,r,this._getFormatConfig(e)):o,h=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(Y?"":h)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",w=0;K[0]>w;w++){for(k="",this.maxRows=4,T=0;K[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",Q){if(M+="<div class='ui-datepicker-group",K[1]>1)switch(T){case 0:M+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case K[1]-1:M+=" ui-datepicker-group-last",S=" ui-corner-"+(Y?"left":"right");break;default:M+=" ui-datepicker-group-middle",S=""}M+="'>"}for(M+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+S+"'>"+(/all|left/.test(S)&&0===w?Y?a:s:"")+(/all|right/.test(S)&&0===w?Y?s:a:"")+this._generateMonthYearHeader(e,Z,et,X,$,w>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",C=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",x=0;7>x;x++)N=(x+u)%7,C+="<th scope='col'"+((x+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+c[N]+"'>"+p[N]+"</span></th>";for(M+=C+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),P=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((P+A)/7),z=Q?this.maxRows>I?this.maxRows:I:I,this.maxRows=z,H=this._daylightSavingAdjust(new Date(et,Z,1-P)),F=0;z>F;F++){for(M+="<tr>",E=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(H)+"</td>":"",x=0;7>x;x++)O=g?g.apply(e.input?e.input[0]:null,[H]):[!0,""],j=H.getMonth()!==Z,W=j&&!y||!O[0]||X&&X>H||$&&H>$,E+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(j?" ui-datepicker-other-month":"")+(H.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===H.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(W?" "+this._unselectableClass+" ui-state-disabled":"")+(j&&!v?"":" "+O[1]+(H.getTime()===G.getTime()?" "+this._currentClass:"")+(H.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(j&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"&#39;")+"'")+(W?"":" data-handler='selectDay' data-event='click' data-month='"+H.getMonth()+"' data-year='"+H.getFullYear()+"'")+">"+(j&&!v?"&#xa0;":W?"<span class='ui-state-default'>"+H.getDate()+"</span>":"<a class='ui-state-default"+(H.getTime()===R.getTime()?" ui-state-highlight":"")+(H.getTime()===G.getTime()?" ui-state-active":"")+(j?" ui-priority-secondary":"")+"' href='#'>"+H.getDate()+"</a>")+"</td>",H.setDate(H.getDate()+1),H=this._daylightSavingAdjust(H);M+=E+"</tr>"}Z++,Z>11&&(Z=0,et++),M+="</tbody></table>"+(Q?"</div>"+(K[0]>0&&T===K[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=M}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(a||!g)_+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+r[u]+"</option>");_+="</select>"}if(y||(b+=_+(!a&&g&&v?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",a||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)e.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!a&&g&&v?"":"&#xa0;")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),n=e.drawMonth+("M"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+("D"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=i&&i>t?i:t;return s&&n>s?s:n},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),o=null,r=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(o+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.2",e.datepicker,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)
+},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=this.element.children(this.handles[i]).first().show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),e(this.handles[i]).length},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=function(t){e(t).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)})},resize:function(t,i){var s=e(this).resizable("instance"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0},h=function(t,s){e(t).each(function(){var t=e(this),n=e(this).data("ui-resizable-alsoresize"),a={},o=s&&s.length?s:t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var i=(n[t]||0)+(r[t]||0);i&&i>=0&&(a[t]=i||null)}),t.css(a)})};"object"!=typeof n.alsoResize||n.alsoResize.nodeType?h(n.alsoResize):e.each(n.alsoResize,function(e,t){h(e,t)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=u-t.height,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.dialog",{version:"1.11.2",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),a=Math.max.apply(null,n);return a>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",a+1),s=!0),s&&!i&&this._trigger("focus",t),s},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0;
+if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){s.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html("&#160;"),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var n,a;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(t.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(a).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(n))},drag:function(e,s){i._trigger("drag",e,t(s))},stop:function(n,a){var o=a.offset.left-i.document.scrollLeft(),r=a.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(r>=0?"+":"")+r,of:i.window},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,t(a))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,s=this.options,n=s.resizable,a=this.uiDialog.css("position"),o="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:o,start:function(s,n){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(n))},resize:function(e,s){i._trigger("resize",e,t(s))},stop:function(n,a){var o=i.uiDialog.offset(),r=o.left-i.document.scrollLeft(),h=o.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,t(a))}}).css("position",a)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),i=e.inArray(this,t);-1!==i&&t.splice(i,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(n[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var i,s,n=this.uiDialog;"dialogClass"===e&&n.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=n.is(":data(ui-draggable)"),i&&!t&&n.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=n.is(":data(ui-resizable)"),s&&!t&&n.resizable("destroy"),s&&"string"==typeof t&&n.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.droppable",{version:"1.11.2",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable;var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.2",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};
+f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})},e.widget("ui.progressbar",{version:"1.11.2",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectable",e.ui.mouse,{version:"1.11.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.selectmenu",{version:"1.11.2",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var t=this,i=this.element.attr("tabindex");this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:i||this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,i){e.preventDefault(),t._setSelection(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,i){var s=this,n="";e.each(i,function(i,a){a.optgroup!==n&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(a.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:a.optgroup}).appendTo(t),n=a.optgroup),s._renderItemData(t,a)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html("&#160;")},_move:function(e,t){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex):(i=this.menuItems.eq(this.element[0].selectedIndex),n+=":not(.ui-state-disabled)"),s="first"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](n).eq(-1):i[e+"All"](n).eq(0),s.length&&this.menuInstance.focus(t,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?(e=window.getSelection(),e.removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection(),e.rangeCount&&(this.range=e.getRangeAt(0))):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),i=!1}i&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==i&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var i=[];t.each(function(t,s){var n=e(s),a=n.parent("optgroup");i.push({element:n,index:t,value:n.attr("value"),label:n.text(),optgroup:a.attr("label")||"",disabled:a.prop("disabled")||n.prop("disabled")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),t=n.length;i>t;t++)o.push(a);this.handles=n.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,a,o,r,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(n>i||n===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(n=i,a=e(this),o=t)}),r=this._start(t,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),h=a.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-a.width()/2,top:t.pageY-h.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,n,a;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(n=this.values(),n[t]=i,a=this._trigger("slide",e,{handle:this.handles[t],value:i,values:n}),s=this.values(t?0:1),a!==!1&&this.values(t,i))):i!==this.value()&&(a=this._trigger("slide",e,{handle:this.handles[t],value:i}),a!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,n,a;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(t,i){var s,n=0;switch("range"===t&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var e=(this.options.max-this._valueMin())%this.options.step;this.max=this.options.max-e},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,i,s,n,a,o=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:r.animate}))),t=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(t){var i,s,n,a,o=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),i=this._start(t,o),i===!1))return}switch(a=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(o):this.value(),t.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+a);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-a)}this._slide(t,o,n)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===e.axis||this._isFloating(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this));
+return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-e(document).scrollTop()<o.scrollSensitivity?r=e(document).scrollTop(e(document).scrollTop()-o.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<o.scrollSensitivity&&(r=e(document).scrollTop(e(document).scrollTop()+o.scrollSpeed)),t.pageX-e(document).scrollLeft()<o.scrollSensitivity?r=e(document).scrollLeft(e(document).scrollLeft()-o.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<o.scrollSensitivity&&(r=e(document).scrollLeft(e(document).scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&"right"===a||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?t.currentItem.children().each(function(){e("<td>&#160;</td>",t.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(n)}):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-h),a=this.items[s],this.direction=l?"up":"down"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e("document"===n.containment?document:window).width()-this.helperProportions.width-this.margins.left,(e("document"===n.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.spinner",{version:"1.11.2",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},i=this.element;return e.each(["min","max","step"],function(e,s){var n=i.attr(s);void 0!==n&&n.length&&(t[s]=n)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:h(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.2",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return t.hash.length>1&&i===s}}(),_create:function(){var t=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible),this._processTabs(),i.active=this._initialActive(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,n){return e(n).attr("aria-controls")===s?(t=i,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=i?!1:0)),!i&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),t.ctrlKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,i){function s(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]
+}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,s){var n,a,o,r=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(n=s.hash,o=n.substring(1),a=t.element.find(t._sanitizeSelector(n))):(o=h.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+o,a=t.element.find(n),a.length||(a=t._createPanel(o),a.insertAfter(t.panels[i-1]||t.tablist)),a.attr("aria-live","polite")),a.length&&(t.panels=t.panels.add(a)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":o,"aria-labelledby":r}),a.attr("aria-labelledby",r)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?e():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:r?e():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?e():a,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,u))},_toggle:function(t,i){function s(){a.running=!1,a._trigger("activate",t,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,n=this.tabs.eq(t),a=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),r={tab:n,panel:o};this._isLocal(a[0])||(this.xhr=e.ajax(this._ajaxSettings(a,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){o.html(e),s._trigger("load",i,r)},1)}).complete(function(e,t){setTimeout(function(){"abort"===t&&s.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,a){return n._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:a},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.2",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(i,s);-1!==n&&s.splice(n,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s.element[0],t.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,n=this,a=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){e.data("ui-tooltip-open")&&n._delay(function(){t&&(t.type=a),this._open(t,e,i)})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function n(e){u.of=e,o.is(":hidden")||o.position(u)}var a,o,r,h,l,u=e.extend({},this.options.position);if(s){if(a=this._find(i))return a.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),a=this._tooltip(i),o=a.tooltip,this._addDescribedBy(i,o.attr("id")),o.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),s.clone?(l=s.clone(),l.removeAttr("id").find("[id]").removeAttr("id")):l=s,e("<div>").html(l).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):o.position(e.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(h=this.delayedShow=setInterval(function(){o.is(":visible")&&(n(u.of),clearInterval(h))},e.fx.interval)),this._trigger("open",t,{tooltip:o}),r={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}},i[0]!==this.element[0]&&(r.remove=function(){this._removeTooltip(o)}),t&&"mouseover"!==t.type||(r.mouseleave="close"),t&&"focusin"!==t.type||(r.focusout="close"),this._on(!0,i,r)}},close:function(t){var i,s=this,n=e(t?t.currentTarget:this.element),a=this._find(n);a&&(i=a.tooltip,a.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),a.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(e(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),a.closing=!0,this._trigger("close",t,{tooltip:i}),a.hiding||(a.closing=!1)))},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur"),a=s.element;n.target=n.currentTarget=a[0],t.close(n,!0),e("#"+i).remove(),a.data("ui-tooltip-title")&&(a.attr("title")||a.attr("title",a.data("ui-tooltip-title")),a.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}})});
\ No newline at end of file
diff --git a/site-test/js/jquery.min.js b/site-test/js/jquery.min.js
new file mode 100644
index 0000000..18bdbed
--- /dev/null
+++ b/site-test/js/jquery.min.js
@@ -0,0 +1,5 @@
+/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.3",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)
+},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ib={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"1":c}}}},cssNumber:{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:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))
+},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var ec=/#.*$/,fc=/([?&])_=[^&]*/,gc=/^(.*?):[ \t]*([^\r\n]*)$/gm,hc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ic=/^(?:GET|HEAD)$/,jc=/^\/\//,kc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lc={},mc={},nc="*/".concat("*"),oc=a.location.href,pc=kc.exec(oc.toLowerCase())||[];function qc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rc(a,b,c,d){var e={},f=a===mc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function uc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:oc,type:"GET",isLocal:hc.test(pc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sc(sc(a,n.ajaxSettings),b):sc(n.ajaxSettings,a)},ajaxPrefilter:qc(lc),ajaxTransport:qc(mc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gc.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||oc)+"").replace(ec,"").replace(jc,pc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pc[1]&&h[2]===pc[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pc[3]||("http:"===pc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rc(lc,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ic.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fc.test(d)?d.replace(fc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rc(mc,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tc(k,v,f)),u=uc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vc=/%20/g,wc=/\[\]$/,xc=/\r?\n/g,yc=/^(?:submit|button|image|reset|file)$/i,zc=/^(?:input|select|textarea|keygen)/i;function Ac(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wc.test(a)?d(a,e):Ac(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ac(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ac(c,a[c],b,e);return d.join("&").replace(vc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zc.test(this.nodeName)&&!yc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xc,"\r\n")}}):{name:b.name,value:c.replace(xc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bc=0,Cc={},Dc={0:200,1223:204},Ec=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cc)Cc[a]()}),k.cors=!!Ec&&"withCredentials"in Ec,k.ajax=Ec=!!Ec,n.ajaxTransport(function(a){var b;return k.cors||Ec&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Dc[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fc=[],Gc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fc.pop()||n.expando+"_"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gc.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gc,"$1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hc)return Hc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ic=a.document.documentElement;function Jc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ic;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ic})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kc=a.jQuery,Lc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lc),b&&a.jQuery===n&&(a.jQuery=Kc),n},typeof b===U&&(a.jQuery=a.$=n),n});
+//# sourceMappingURL=jquery.min.map
\ No newline at end of file
diff --git a/site-test/script.js b/site-test/js/script.js
similarity index 58%
rename from site-test/script.js
rename to site-test/js/script.js
index 71f8270..98aa48d 100644
--- a/site-test/script.js
+++ b/site-test/js/script.js
@@ -61,4 +61,63 @@ function openNav() {
         
     }
 
-}
\ No newline at end of file
+}
+
+
+
+var $TABLE = $('#table');
+var $BTN = $('#export-btn');
+var $EXPORT = $('#export');
+
+$('.table-add').click(function () {
+  var $clone = $TABLE.find('tr.hide').clone(true).removeClass('hide table-line');
+  $TABLE.find('table').append($clone);
+});
+
+$('.table-remove').click(function () {
+  $(this).parents('tr').detach();
+});
+
+$('.table-up').click(function () {
+  var $row = $(this).parents('tr');
+  if ($row.index() === 1) return; // Don't go above the header
+  $row.prev().before($row.get(0));
+});
+
+$('.table-down').click(function () {
+  var $row = $(this).parents('tr');
+  $row.next().after($row.get(0));
+});
+
+// A few jQuery helpers for exporting only
+jQuery.fn.pop = [].pop;
+jQuery.fn.shift = [].shift;
+
+$BTN.click(function () {
+  var $rows = $TABLE.find('tr:not(:hidden)');
+  var headers = [];
+  var data = [];
+  
+  // Get the headers (add special header logic here)
+  $($rows.shift()).find('th:not(:empty)').each(function () {
+    headers.push($(this).text().toLowerCase());
+  });
+  
+  // Turn all existing rows into a loopable array
+  $rows.each(function () {
+    var $td = $(this).find('td');
+    var h = {};
+    
+    // Use the headers from earlier to name our hash keys
+    headers.forEach(function (header, i) {
+      h[header] = $td.eq(i).text();   
+    });
+    
+    data.push(h);
+  });
+  
+  // Output the result
+  $EXPORT.text(JSON.stringify(data));
+});
+
+
diff --git a/site-test/js/underscore.js b/site-test/js/underscore.js
new file mode 100644
index 0000000..9a4cabe
--- /dev/null
+++ b/site-test/js/underscore.js
@@ -0,0 +1,1343 @@
+//     Underscore.js 1.6.0
+//     http://underscorejs.org
+//     (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+
+(function() {
+
+  // Baseline setup
+  // --------------
+
+  // Establish the root object, `window` in the browser, or `exports` on the server.
+  var root = this;
+
+  // Save the previous value of the `_` variable.
+  var previousUnderscore = root._;
+
+  // Establish the object that gets returned to break out of a loop iteration.
+  var breaker = {};
+
+  // Save bytes in the minified (but not gzipped) version:
+  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
+
+  // Create quick reference variables for speed access to core prototypes.
+  var
+    push             = ArrayProto.push,
+    slice            = ArrayProto.slice,
+    concat           = ArrayProto.concat,
+    toString         = ObjProto.toString,
+    hasOwnProperty   = ObjProto.hasOwnProperty;
+
+  // All **ECMAScript 5** native function implementations that we hope to use
+  // are declared here.
+  var
+    nativeForEach      = ArrayProto.forEach,
+    nativeMap          = ArrayProto.map,
+    nativeReduce       = ArrayProto.reduce,
+    nativeReduceRight  = ArrayProto.reduceRight,
+    nativeFilter       = ArrayProto.filter,
+    nativeEvery        = ArrayProto.every,
+    nativeSome         = ArrayProto.some,
+    nativeIndexOf      = ArrayProto.indexOf,
+    nativeLastIndexOf  = ArrayProto.lastIndexOf,
+    nativeIsArray      = Array.isArray,
+    nativeKeys         = Object.keys,
+    nativeBind         = FuncProto.bind;
+
+  // Create a safe reference to the Underscore object for use below.
+  var _ = function(obj) {
+    if (obj instanceof _) return obj;
+    if (!(this instanceof _)) return new _(obj);
+    this._wrapped = obj;
+  };
+
+  // Export the Underscore object for **Node.js**, with
+  // backwards-compatibility for the old `require()` API. If we're in
+  // the browser, add `_` as a global object via a string identifier,
+  // for Closure Compiler "advanced" mode.
+  if (typeof exports !== 'undefined') {
+    if (typeof module !== 'undefined' && module.exports) {
+      exports = module.exports = _;
+    }
+    exports._ = _;
+  } else {
+    root._ = _;
+  }
+
+  // Current version.
+  _.VERSION = '1.6.0';
+
+  // Collection Functions
+  // --------------------
+
+  // The cornerstone, an `each` implementation, aka `forEach`.
+  // Handles objects with the built-in `forEach`, arrays, and raw objects.
+  // Delegates to **ECMAScript 5**'s native `forEach` if available.
+  var each = _.each = _.forEach = function(obj, iterator, context) {
+    if (obj == null) return obj;
+    if (nativeForEach && obj.forEach === nativeForEach) {
+      obj.forEach(iterator, context);
+    } else if (obj.length === +obj.length) {
+      for (var i = 0, length = obj.length; i < length; i++) {
+        if (iterator.call(context, obj[i], i, obj) === breaker) return;
+      }
+    } else {
+      var keys = _.keys(obj);
+      for (var i = 0, length = keys.length; i < length; i++) {
+        if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
+      }
+    }
+    return obj;
+  };
+
+  // Return the results of applying the iterator to each element.
+  // Delegates to **ECMAScript 5**'s native `map` if available.
+  _.map = _.collect = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
+    each(obj, function(value, index, list) {
+      results.push(iterator.call(context, value, index, list));
+    });
+    return results;
+  };
+
+  var reduceError = 'Reduce of empty array with no initial value';
+
+  // **Reduce** builds up a single result from a list of values, aka `inject`,
+  // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
+  _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduce && obj.reduce === nativeReduce) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
+    }
+    each(obj, function(value, index, list) {
+      if (!initial) {
+        memo = value;
+        initial = true;
+      } else {
+        memo = iterator.call(context, memo, value, index, list);
+      }
+    });
+    if (!initial) throw new TypeError(reduceError);
+    return memo;
+  };
+
+  // The right-associative version of reduce, also known as `foldr`.
+  // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
+  _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
+    }
+    var length = obj.length;
+    if (length !== +length) {
+      var keys = _.keys(obj);
+      length = keys.length;
+    }
+    each(obj, function(value, index, list) {
+      index = keys ? keys[--length] : --length;
+      if (!initial) {
+        memo = obj[index];
+        initial = true;
+      } else {
+        memo = iterator.call(context, memo, obj[index], index, list);
+      }
+    });
+    if (!initial) throw new TypeError(reduceError);
+    return memo;
+  };
+
+  // Return the first value which passes a truth test. Aliased as `detect`.
+  _.find = _.detect = function(obj, predicate, context) {
+    var result;
+    any(obj, function(value, index, list) {
+      if (predicate.call(context, value, index, list)) {
+        result = value;
+        return true;
+      }
+    });
+    return result;
+  };
+
+  // Return all the elements that pass a truth test.
+  // Delegates to **ECMAScript 5**'s native `filter` if available.
+  // Aliased as `select`.
+  _.filter = _.select = function(obj, predicate, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
+    each(obj, function(value, index, list) {
+      if (predicate.call(context, value, index, list)) results.push(value);
+    });
+    return results;
+  };
+
+  // Return all the elements for which a truth test fails.
+  _.reject = function(obj, predicate, context) {
+    return _.filter(obj, function(value, index, list) {
+      return !predicate.call(context, value, index, list);
+    }, context);
+  };
+
+  // Determine whether all of the elements match a truth test.
+  // Delegates to **ECMAScript 5**'s native `every` if available.
+  // Aliased as `all`.
+  _.every = _.all = function(obj, predicate, context) {
+    predicate || (predicate = _.identity);
+    var result = true;
+    if (obj == null) return result;
+    if (nativeEvery && obj.every === nativeEvery) return obj.every(predicate, context);
+    each(obj, function(value, index, list) {
+      if (!(result = result && predicate.call(context, value, index, list))) return breaker;
+    });
+    return !!result;
+  };
+
+  // Determine if at least one element in the object matches a truth test.
+  // Delegates to **ECMAScript 5**'s native `some` if available.
+  // Aliased as `any`.
+  var any = _.some = _.any = function(obj, predicate, context) {
+    predicate || (predicate = _.identity);
+    var result = false;
+    if (obj == null) return result;
+    if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
+    each(obj, function(value, index, list) {
+      if (result || (result = predicate.call(context, value, index, list))) return breaker;
+    });
+    return !!result;
+  };
+
+  // Determine if the array or object contains a given value (using `===`).
+  // Aliased as `include`.
+  _.contains = _.include = function(obj, target) {
+    if (obj == null) return false;
+    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
+    return any(obj, function(value) {
+      return value === target;
+    });
+  };
+
+  // Invoke a method (with arguments) on every item in a collection.
+  _.invoke = function(obj, method) {
+    var args = slice.call(arguments, 2);
+    var isFunc = _.isFunction(method);
+    return _.map(obj, function(value) {
+      return (isFunc ? method : value[method]).apply(value, args);
+    });
+  };
+
+  // Convenience version of a common use case of `map`: fetching a property.
+  _.pluck = function(obj, key) {
+    return _.map(obj, _.property(key));
+  };
+
+  // Convenience version of a common use case of `filter`: selecting only objects
+  // containing specific `key:value` pairs.
+  _.where = function(obj, attrs) {
+    return _.filter(obj, _.matches(attrs));
+  };
+
+  // Convenience version of a common use case of `find`: getting the first object
+  // containing specific `key:value` pairs.
+  _.findWhere = function(obj, attrs) {
+    return _.find(obj, _.matches(attrs));
+  };
+
+  // Return the maximum element or (element-based computation).
+  // Can't optimize arrays of integers longer than 65,535 elements.
+  // See [WebKit Bug 80797](https://bugs.webkit.org/show_bug.cgi?id=80797)
+  _.max = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
+      return Math.max.apply(Math, obj);
+    }
+    var result = -Infinity, lastComputed = -Infinity;
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      if (computed > lastComputed) {
+        result = value;
+        lastComputed = computed;
+      }
+    });
+    return result;
+  };
+
+  // Return the minimum element (or element-based computation).
+  _.min = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
+      return Math.min.apply(Math, obj);
+    }
+    var result = Infinity, lastComputed = Infinity;
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      if (computed < lastComputed) {
+        result = value;
+        lastComputed = computed;
+      }
+    });
+    return result;
+  };
+
+  // Shuffle an array, using the modern version of the
+  // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
+  _.shuffle = function(obj) {
+    var rand;
+    var index = 0;
+    var shuffled = [];
+    each(obj, function(value) {
+      rand = _.random(index++);
+      shuffled[index - 1] = shuffled[rand];
+      shuffled[rand] = value;
+    });
+    return shuffled;
+  };
+
+  // Sample **n** random values from a collection.
+  // If **n** is not specified, returns a single random element.
+  // The internal `guard` argument allows it to work with `map`.
+  _.sample = function(obj, n, guard) {
+    if (n == null || guard) {
+      if (obj.length !== +obj.length) obj = _.values(obj);
+      return obj[_.random(obj.length - 1)];
+    }
+    return _.shuffle(obj).slice(0, Math.max(0, n));
+  };
+
+  // An internal function to generate lookup iterators.
+  var lookupIterator = function(value) {
+    if (value == null) return _.identity;
+    if (_.isFunction(value)) return value;
+    return _.property(value);
+  };
+
+  // Sort the object's values by a criterion produced by an iterator.
+  _.sortBy = function(obj, iterator, context) {
+    iterator = lookupIterator(iterator);
+    return _.pluck(_.map(obj, function(value, index, list) {
+      return {
+        value: value,
+        index: index,
+        criteria: iterator.call(context, value, index, list)
+      };
+    }).sort(function(left, right) {
+      var a = left.criteria;
+      var b = right.criteria;
+      if (a !== b) {
+        if (a > b || a === void 0) return 1;
+        if (a < b || b === void 0) return -1;
+      }
+      return left.index - right.index;
+    }), 'value');
+  };
+
+  // An internal function used for aggregate "group by" operations.
+  var group = function(behavior) {
+    return function(obj, iterator, context) {
+      var result = {};
+      iterator = lookupIterator(iterator);
+      each(obj, function(value, index) {
+        var key = iterator.call(context, value, index, obj);
+        behavior(result, key, value);
+      });
+      return result;
+    };
+  };
+
+  // Groups the object's values by a criterion. Pass either a string attribute
+  // to group by, or a function that returns the criterion.
+  _.groupBy = group(function(result, key, value) {
+    _.has(result, key) ? result[key].push(value) : result[key] = [value];
+  });
+
+  // Indexes the object's values by a criterion, similar to `groupBy`, but for
+  // when you know that your index values will be unique.
+  _.indexBy = group(function(result, key, value) {
+    result[key] = value;
+  });
+
+  // Counts instances of an object that group by a certain criterion. Pass
+  // either a string attribute to count by, or a function that returns the
+  // criterion.
+  _.countBy = group(function(result, key) {
+    _.has(result, key) ? result[key]++ : result[key] = 1;
+  });
+
+  // Use a comparator function to figure out the smallest index at which
+  // an object should be inserted so as to maintain order. Uses binary search.
+  _.sortedIndex = function(array, obj, iterator, context) {
+    iterator = lookupIterator(iterator);
+    var value = iterator.call(context, obj);
+    var low = 0, high = array.length;
+    while (low < high) {
+      var mid = (low + high) >>> 1;
+      iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid;
+    }
+    return low;
+  };
+
+  // Safely create a real, live array from anything iterable.
+  _.toArray = function(obj) {
+    if (!obj) return [];
+    if (_.isArray(obj)) return slice.call(obj);
+    if (obj.length === +obj.length) return _.map(obj, _.identity);
+    return _.values(obj);
+  };
+
+  // Return the number of elements in an object.
+  _.size = function(obj) {
+    if (obj == null) return 0;
+    return (obj.length === +obj.length) ? obj.length : _.keys(obj).length;
+  };
+
+  // Array Functions
+  // ---------------
+
+  // Get the first element of an array. Passing **n** will return the first N
+  // values in the array. Aliased as `head` and `take`. The **guard** check
+  // allows it to work with `_.map`.
+  _.first = _.head = _.take = function(array, n, guard) {
+    if (array == null) return void 0;
+    if ((n == null) || guard) return array[0];
+    if (n < 0) return [];
+    return slice.call(array, 0, n);
+  };
+
+  // Returns everything but the last entry of the array. Especially useful on
+  // the arguments object. Passing **n** will return all the values in
+  // the array, excluding the last N. The **guard** check allows it to work with
+  // `_.map`.
+  _.initial = function(array, n, guard) {
+    return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
+  };
+
+  // Get the last element of an array. Passing **n** will return the last N
+  // values in the array. The **guard** check allows it to work with `_.map`.
+  _.last = function(array, n, guard) {
+    if (array == null) return void 0;
+    if ((n == null) || guard) return array[array.length - 1];
+    return slice.call(array, Math.max(array.length - n, 0));
+  };
+
+  // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.
+  // Especially useful on the arguments object. Passing an **n** will return
+  // the rest N values in the array. The **guard**
+  // check allows it to work with `_.map`.
+  _.rest = _.tail = _.drop = function(array, n, guard) {
+    return slice.call(array, (n == null) || guard ? 1 : n);
+  };
+
+  // Trim out all falsy values from an array.
+  _.compact = function(array) {
+    return _.filter(array, _.identity);
+  };
+
+  // Internal implementation of a recursive `flatten` function.
+  var flatten = function(input, shallow, output) {
+    if (shallow && _.every(input, _.isArray)) {
+      return concat.apply(output, input);
+    }
+    each(input, function(value) {
+      if (_.isArray(value) || _.isArguments(value)) {
+        shallow ? push.apply(output, value) : flatten(value, shallow, output);
+      } else {
+        output.push(value);
+      }
+    });
+    return output;
+  };
+
+  // Flatten out an array, either recursively (by default), or just one level.
+  _.flatten = function(array, shallow) {
+    return flatten(array, shallow, []);
+  };
+
+  // Return a version of the array that does not contain the specified value(s).
+  _.without = function(array) {
+    return _.difference(array, slice.call(arguments, 1));
+  };
+
+  // Split an array into two arrays: one whose elements all satisfy the given
+  // predicate, and one whose elements all do not satisfy the predicate.
+  _.partition = function(array, predicate) {
+    var pass = [], fail = [];
+    each(array, function(elem) {
+      (predicate(elem) ? pass : fail).push(elem);
+    });
+    return [pass, fail];
+  };
+
+  // Produce a duplicate-free version of the array. If the array has already
+  // been sorted, you have the option of using a faster algorithm.
+  // Aliased as `unique`.
+  _.uniq = _.unique = function(array, isSorted, iterator, context) {
+    if (_.isFunction(isSorted)) {
+      context = iterator;
+      iterator = isSorted;
+      isSorted = false;
+    }
+    var initial = iterator ? _.map(array, iterator, context) : array;
+    var results = [];
+    var seen = [];
+    each(initial, function(value, index) {
+      if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) {
+        seen.push(value);
+        results.push(array[index]);
+      }
+    });
+    return results;
+  };
+
+  // Produce an array that contains the union: each distinct element from all of
+  // the passed-in arrays.
+  _.union = function() {
+    return _.uniq(_.flatten(arguments, true));
+  };
+
+  // Produce an array that contains every item shared between all the
+  // passed-in arrays.
+  _.intersection = function(array) {
+    var rest = slice.call(arguments, 1);
+    return _.filter(_.uniq(array), function(item) {
+      return _.every(rest, function(other) {
+        return _.contains(other, item);
+      });
+    });
+  };
+
+  // Take the difference between one array and a number of other arrays.
+  // Only the elements present in just the first array will remain.
+  _.difference = function(array) {
+    var rest = concat.apply(ArrayProto, slice.call(arguments, 1));
+    return _.filter(array, function(value){ return !_.contains(rest, value); });
+  };
+
+  // Zip together multiple lists into a single array -- elements that share
+  // an index go together.
+  _.zip = function() {
+    var length = _.max(_.pluck(arguments, 'length').concat(0));
+    var results = new Array(length);
+    for (var i = 0; i < length; i++) {
+      results[i] = _.pluck(arguments, '' + i);
+    }
+    return results;
+  };
+
+  // Converts lists into objects. Pass either a single array of `[key, value]`
+  // pairs, or two parallel arrays of the same length -- one of keys, and one of
+  // the corresponding values.
+  _.object = function(list, values) {
+    if (list == null) return {};
+    var result = {};
+    for (var i = 0, length = list.length; i < length; i++) {
+      if (values) {
+        result[list[i]] = values[i];
+      } else {
+        result[list[i][0]] = list[i][1];
+      }
+    }
+    return result;
+  };
+
+  // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
+  // we need this function. Return the position of the first occurrence of an
+  // item in an array, or -1 if the item is not included in the array.
+  // Delegates to **ECMAScript 5**'s native `indexOf` if available.
+  // If the array is large and already in sort order, pass `true`
+  // for **isSorted** to use binary search.
+  _.indexOf = function(array, item, isSorted) {
+    if (array == null) return -1;
+    var i = 0, length = array.length;
+    if (isSorted) {
+      if (typeof isSorted == 'number') {
+        i = (isSorted < 0 ? Math.max(0, length + isSorted) : isSorted);
+      } else {
+        i = _.sortedIndex(array, item);
+        return array[i] === item ? i : -1;
+      }
+    }
+    if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted);
+    for (; i < length; i++) if (array[i] === item) return i;
+    return -1;
+  };
+
+  // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
+  _.lastIndexOf = function(array, item, from) {
+    if (array == null) return -1;
+    var hasIndex = from != null;
+    if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) {
+      return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item);
+    }
+    var i = (hasIndex ? from : array.length);
+    while (i--) if (array[i] === item) return i;
+    return -1;
+  };
+
+  // Generate an integer Array containing an arithmetic progression. A port of
+  // the native Python `range()` function. See
+  // [the Python documentation](http://docs.python.org/library/functions.html#range).
+  _.range = function(start, stop, step) {
+    if (arguments.length <= 1) {
+      stop = start || 0;
+      start = 0;
+    }
+    step = arguments[2] || 1;
+
+    var length = Math.max(Math.ceil((stop - start) / step), 0);
+    var idx = 0;
+    var range = new Array(length);
+
+    while(idx < length) {
+      range[idx++] = start;
+      start += step;
+    }
+
+    return range;
+  };
+
+  // Function (ahem) Functions
+  // ------------------
+
+  // Reusable constructor function for prototype setting.
+  var ctor = function(){};
+
+  // Create a function bound to a given object (assigning `this`, and arguments,
+  // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
+  // available.
+  _.bind = function(func, context) {
+    var args, bound;
+    if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
+    if (!_.isFunction(func)) throw new TypeError;
+    args = slice.call(arguments, 2);
+    return bound = function() {
+      if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
+      ctor.prototype = func.prototype;
+      var self = new ctor;
+      ctor.prototype = null;
+      var result = func.apply(self, args.concat(slice.call(arguments)));
+      if (Object(result) === result) return result;
+      return self;
+    };
+  };
+
+  // Partially apply a function by creating a version that has had some of its
+  // arguments pre-filled, without changing its dynamic `this` context. _ acts
+  // as a placeholder, allowing any combination of arguments to be pre-filled.
+  _.partial = function(func) {
+    var boundArgs = slice.call(arguments, 1);
+    return function() {
+      var position = 0;
+      var args = boundArgs.slice();
+      for (var i = 0, length = args.length; i < length; i++) {
+        if (args[i] === _) args[i] = arguments[position++];
+      }
+      while (position < arguments.length) args.push(arguments[position++]);
+      return func.apply(this, args);
+    };
+  };
+
+  // Bind a number of an object's methods to that object. Remaining arguments
+  // are the method names to be bound. Useful for ensuring that all callbacks
+  // defined on an object belong to it.
+  _.bindAll = function(obj) {
+    var funcs = slice.call(arguments, 1);
+    if (funcs.length === 0) throw new Error('bindAll must be passed function names');
+    each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
+    return obj;
+  };
+
+  // Memoize an expensive function by storing its results.
+  _.memoize = function(func, hasher) {
+    var memo = {};
+    hasher || (hasher = _.identity);
+    return function() {
+      var key = hasher.apply(this, arguments);
+      return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
+    };
+  };
+
+  // Delays a function for the given number of milliseconds, and then calls
+  // it with the arguments supplied.
+  _.delay = function(func, wait) {
+    var args = slice.call(arguments, 2);
+    return setTimeout(function(){ return func.apply(null, args); }, wait);
+  };
+
+  // Defers a function, scheduling it to run after the current call stack has
+  // cleared.
+  _.defer = function(func) {
+    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
+  };
+
+  // Returns a function, that, when invoked, will only be triggered at most once
+  // during a given window of time. Normally, the throttled function will run
+  // as much as it can, without ever going more than once per `wait` duration;
+  // but if you'd like to disable the execution on the leading edge, pass
+  // `{leading: false}`. To disable execution on the trailing edge, ditto.
+  _.throttle = function(func, wait, options) {
+    var context, args, result;
+    var timeout = null;
+    var previous = 0;
+    options || (options = {});
+    var later = function() {
+      previous = options.leading === false ? 0 : _.now();
+      timeout = null;
+      result = func.apply(context, args);
+      context = args = null;
+    };
+    return function() {
+      var now = _.now();
+      if (!previous && options.leading === false) previous = now;
+      var remaining = wait - (now - previous);
+      context = this;
+      args = arguments;
+      if (remaining <= 0) {
+        clearTimeout(timeout);
+        timeout = null;
+        previous = now;
+        result = func.apply(context, args);
+        context = args = null;
+      } else if (!timeout && options.trailing !== false) {
+        timeout = setTimeout(later, remaining);
+      }
+      return result;
+    };
+  };
+
+  // Returns a function, that, as long as it continues to be invoked, will not
+  // be triggered. The function will be called after it stops being called for
+  // N milliseconds. If `immediate` is passed, trigger the function on the
+  // leading edge, instead of the trailing.
+  _.debounce = function(func, wait, immediate) {
+    var timeout, args, context, timestamp, result;
+
+    var later = function() {
+      var last = _.now() - timestamp;
+      if (last < wait) {
+        timeout = setTimeout(later, wait - last);
+      } else {
+        timeout = null;
+        if (!immediate) {
+          result = func.apply(context, args);
+          context = args = null;
+        }
+      }
+    };
+
+    return function() {
+      context = this;
+      args = arguments;
+      timestamp = _.now();
+      var callNow = immediate && !timeout;
+      if (!timeout) {
+        timeout = setTimeout(later, wait);
+      }
+      if (callNow) {
+        result = func.apply(context, args);
+        context = args = null;
+      }
+
+      return result;
+    };
+  };
+
+  // Returns a function that will be executed at most one time, no matter how
+  // often you call it. Useful for lazy initialization.
+  _.once = function(func) {
+    var ran = false, memo;
+    return function() {
+      if (ran) return memo;
+      ran = true;
+      memo = func.apply(this, arguments);
+      func = null;
+      return memo;
+    };
+  };
+
+  // Returns the first function passed as an argument to the second,
+  // allowing you to adjust arguments, run code before and after, and
+  // conditionally execute the original function.
+  _.wrap = function(func, wrapper) {
+    return _.partial(wrapper, func);
+  };
+
+  // Returns a function that is the composition of a list of functions, each
+  // consuming the return value of the function that follows.
+  _.compose = function() {
+    var funcs = arguments;
+    return function() {
+      var args = arguments;
+      for (var i = funcs.length - 1; i >= 0; i--) {
+        args = [funcs[i].apply(this, args)];
+      }
+      return args[0];
+    };
+  };
+
+  // Returns a function that will only be executed after being called N times.
+  _.after = function(times, func) {
+    return function() {
+      if (--times < 1) {
+        return func.apply(this, arguments);
+      }
+    };
+  };
+
+  // Object Functions
+  // ----------------
+
+  // Retrieve the names of an object's properties.
+  // Delegates to **ECMAScript 5**'s native `Object.keys`
+  _.keys = function(obj) {
+    if (!_.isObject(obj)) return [];
+    if (nativeKeys) return nativeKeys(obj);
+    var keys = [];
+    for (var key in obj) if (_.has(obj, key)) keys.push(key);
+    return keys;
+  };
+
+  // Retrieve the values of an object's properties.
+  _.values = function(obj) {
+    var keys = _.keys(obj);
+    var length = keys.length;
+    var values = new Array(length);
+    for (var i = 0; i < length; i++) {
+      values[i] = obj[keys[i]];
+    }
+    return values;
+  };
+
+  // Convert an object into a list of `[key, value]` pairs.
+  _.pairs = function(obj) {
+    var keys = _.keys(obj);
+    var length = keys.length;
+    var pairs = new Array(length);
+    for (var i = 0; i < length; i++) {
+      pairs[i] = [keys[i], obj[keys[i]]];
+    }
+    return pairs;
+  };
+
+  // Invert the keys and values of an object. The values must be serializable.
+  _.invert = function(obj) {
+    var result = {};
+    var keys = _.keys(obj);
+    for (var i = 0, length = keys.length; i < length; i++) {
+      result[obj[keys[i]]] = keys[i];
+    }
+    return result;
+  };
+
+  // Return a sorted list of the function names available on the object.
+  // Aliased as `methods`
+  _.functions = _.methods = function(obj) {
+    var names = [];
+    for (var key in obj) {
+      if (_.isFunction(obj[key])) names.push(key);
+    }
+    return names.sort();
+  };
+
+  // Extend a given object with all the properties in passed-in object(s).
+  _.extend = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      if (source) {
+        for (var prop in source) {
+          obj[prop] = source[prop];
+        }
+      }
+    });
+    return obj;
+  };
+
+  // Return a copy of the object only containing the whitelisted properties.
+  _.pick = function(obj) {
+    var copy = {};
+    var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
+    each(keys, function(key) {
+      if (key in obj) copy[key] = obj[key];
+    });
+    return copy;
+  };
+
+   // Return a copy of the object without the blacklisted properties.
+  _.omit = function(obj) {
+    var copy = {};
+    var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
+    for (var key in obj) {
+      if (!_.contains(keys, key)) copy[key] = obj[key];
+    }
+    return copy;
+  };
+
+  // Fill in a given object with default properties.
+  _.defaults = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      if (source) {
+        for (var prop in source) {
+          if (obj[prop] === void 0) obj[prop] = source[prop];
+        }
+      }
+    });
+    return obj;
+  };
+
+  // Create a (shallow-cloned) duplicate of an object.
+  _.clone = function(obj) {
+    if (!_.isObject(obj)) return obj;
+    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
+  };
+
+  // Invokes interceptor with the obj, and then returns obj.
+  // The primary purpose of this method is to "tap into" a method chain, in
+  // order to perform operations on intermediate results within the chain.
+  _.tap = function(obj, interceptor) {
+    interceptor(obj);
+    return obj;
+  };
+
+  // Internal recursive comparison function for `isEqual`.
+  var eq = function(a, b, aStack, bStack) {
+    // Identical objects are equal. `0 === -0`, but they aren't identical.
+    // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
+    if (a === b) return a !== 0 || 1 / a == 1 / b;
+    // A strict comparison is necessary because `null == undefined`.
+    if (a == null || b == null) return a === b;
+    // Unwrap any wrapped objects.
+    if (a instanceof _) a = a._wrapped;
+    if (b instanceof _) b = b._wrapped;
+    // Compare `[[Class]]` names.
+    var className = toString.call(a);
+    if (className != toString.call(b)) return false;
+    switch (className) {
+      // Strings, numbers, dates, and booleans are compared by value.
+      case '[object String]':
+        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
+        // equivalent to `new String("5")`.
+        return a == String(b);
+      case '[object Number]':
+        // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
+        // other numeric values.
+        return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
+      case '[object Date]':
+      case '[object Boolean]':
+        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
+        // millisecond representations. Note that invalid dates with millisecond representations
+        // of `NaN` are not equivalent.
+        return +a == +b;
+      // RegExps are compared by their source patterns and flags.
+      case '[object RegExp]':
+        return a.source == b.source &&
+               a.global == b.global &&
+               a.multiline == b.multiline &&
+               a.ignoreCase == b.ignoreCase;
+    }
+    if (typeof a != 'object' || typeof b != 'object') return false;
+    // Assume equality for cyclic structures. The algorithm for detecting cyclic
+    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
+    var length = aStack.length;
+    while (length--) {
+      // Linear search. Performance is inversely proportional to the number of
+      // unique nested structures.
+      if (aStack[length] == a) return bStack[length] == b;
+    }
+    // Objects with different constructors are not equivalent, but `Object`s
+    // from different frames are.
+    var aCtor = a.constructor, bCtor = b.constructor;
+    if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
+                             _.isFunction(bCtor) && (bCtor instanceof bCtor))
+                        && ('constructor' in a && 'constructor' in b)) {
+      return false;
+    }
+    // Add the first object to the stack of traversed objects.
+    aStack.push(a);
+    bStack.push(b);
+    var size = 0, result = true;
+    // Recursively compare objects and arrays.
+    if (className == '[object Array]') {
+      // Compare array lengths to determine if a deep comparison is necessary.
+      size = a.length;
+      result = size == b.length;
+      if (result) {
+        // Deep compare the contents, ignoring non-numeric properties.
+        while (size--) {
+          if (!(result = eq(a[size], b[size], aStack, bStack))) break;
+        }
+      }
+    } else {
+      // Deep compare objects.
+      for (var key in a) {
+        if (_.has(a, key)) {
+          // Count the expected number of properties.
+          size++;
+          // Deep compare each member.
+          if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break;
+        }
+      }
+      // Ensure that both objects contain the same number of properties.
+      if (result) {
+        for (key in b) {
+          if (_.has(b, key) && !(size--)) break;
+        }
+        result = !size;
+      }
+    }
+    // Remove the first object from the stack of traversed objects.
+    aStack.pop();
+    bStack.pop();
+    return result;
+  };
+
+  // Perform a deep comparison to check if two objects are equal.
+  _.isEqual = function(a, b) {
+    return eq(a, b, [], []);
+  };
+
+  // Is a given array, string, or object empty?
+  // An "empty" object has no enumerable own-properties.
+  _.isEmpty = function(obj) {
+    if (obj == null) return true;
+    if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
+    for (var key in obj) if (_.has(obj, key)) return false;
+    return true;
+  };
+
+  // Is a given value a DOM element?
+  _.isElement = function(obj) {
+    return !!(obj && obj.nodeType === 1);
+  };
+
+  // Is a given value an array?
+  // Delegates to ECMA5's native Array.isArray
+  _.isArray = nativeIsArray || function(obj) {
+    return toString.call(obj) == '[object Array]';
+  };
+
+  // Is a given variable an object?
+  _.isObject = function(obj) {
+    return obj === Object(obj);
+  };
+
+  // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp.
+  each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {
+    _['is' + name] = function(obj) {
+      return toString.call(obj) == '[object ' + name + ']';
+    };
+  });
+
+  // Define a fallback version of the method in browsers (ahem, IE), where
+  // there isn't any inspectable "Arguments" type.
+  if (!_.isArguments(arguments)) {
+    _.isArguments = function(obj) {
+      return !!(obj && _.has(obj, 'callee'));
+    };
+  }
+
+  // Optimize `isFunction` if appropriate.
+  if (typeof (/./) !== 'function') {
+    _.isFunction = function(obj) {
+      return typeof obj === 'function';
+    };
+  }
+
+  // Is a given object a finite number?
+  _.isFinite = function(obj) {
+    return isFinite(obj) && !isNaN(parseFloat(obj));
+  };
+
+  // Is the given value `NaN`? (NaN is the only number which does not equal itself).
+  _.isNaN = function(obj) {
+    return _.isNumber(obj) && obj != +obj;
+  };
+
+  // Is a given value a boolean?
+  _.isBoolean = function(obj) {
+    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
+  };
+
+  // Is a given value equal to null?
+  _.isNull = function(obj) {
+    return obj === null;
+  };
+
+  // Is a given variable undefined?
+  _.isUndefined = function(obj) {
+    return obj === void 0;
+  };
+
+  // Shortcut function for checking if an object has a given property directly
+  // on itself (in other words, not on a prototype).
+  _.has = function(obj, key) {
+    return hasOwnProperty.call(obj, key);
+  };
+
+  // Utility Functions
+  // -----------------
+
+  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
+  // previous owner. Returns a reference to the Underscore object.
+  _.noConflict = function() {
+    root._ = previousUnderscore;
+    return this;
+  };
+
+  // Keep the identity function around for default iterators.
+  _.identity = function(value) {
+    return value;
+  };
+
+  _.constant = function(value) {
+    return function () {
+      return value;
+    };
+  };
+
+  _.property = function(key) {
+    return function(obj) {
+      return obj[key];
+    };
+  };
+
+  // Returns a predicate for checking whether an object has a given set of `key:value` pairs.
+  _.matches = function(attrs) {
+    return function(obj) {
+      if (obj === attrs) return true; //avoid comparing an object to itself.
+      for (var key in attrs) {
+        if (attrs[key] !== obj[key])
+          return false;
+      }
+      return true;
+    }
+  };
+
+  // Run a function **n** times.
+  _.times = function(n, iterator, context) {
+    var accum = Array(Math.max(0, n));
+    for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i);
+    return accum;
+  };
+
+  // Return a random integer between min and max (inclusive).
+  _.random = function(min, max) {
+    if (max == null) {
+      max = min;
+      min = 0;
+    }
+    return min + Math.floor(Math.random() * (max - min + 1));
+  };
+
+  // A (possibly faster) way to get the current timestamp as an integer.
+  _.now = Date.now || function() { return new Date().getTime(); };
+
+  // List of HTML entities for escaping.
+  var entityMap = {
+    escape: {
+      '&': '&amp;',
+      '<': '&lt;',
+      '>': '&gt;',
+      '"': '&quot;',
+      "'": '&#x27;'
+    }
+  };
+  entityMap.unescape = _.invert(entityMap.escape);
+
+  // Regexes containing the keys and values listed immediately above.
+  var entityRegexes = {
+    escape:   new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'),
+    unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g')
+  };
+
+  // Functions for escaping and unescaping strings to/from HTML interpolation.
+  _.each(['escape', 'unescape'], function(method) {
+    _[method] = function(string) {
+      if (string == null) return '';
+      return ('' + string).replace(entityRegexes[method], function(match) {
+        return entityMap[method][match];
+      });
+    };
+  });
+
+  // If the value of the named `property` is a function then invoke it with the
+  // `object` as context; otherwise, return it.
+  _.result = function(object, property) {
+    if (object == null) return void 0;
+    var value = object[property];
+    return _.isFunction(value) ? value.call(object) : value;
+  };
+
+  // Add your own custom functions to the Underscore object.
+  _.mixin = function(obj) {
+    each(_.functions(obj), function(name) {
+      var func = _[name] = obj[name];
+      _.prototype[name] = function() {
+        var args = [this._wrapped];
+        push.apply(args, arguments);
+        return result.call(this, func.apply(_, args));
+      };
+    });
+  };
+
+  // Generate a unique integer id (unique within the entire client session).
+  // Useful for temporary DOM ids.
+  var idCounter = 0;
+  _.uniqueId = function(prefix) {
+    var id = ++idCounter + '';
+    return prefix ? prefix + id : id;
+  };
+
+  // By default, Underscore uses ERB-style template delimiters, change the
+  // following template settings to use alternative delimiters.
+  _.templateSettings = {
+    evaluate    : /<%([\s\S]+?)%>/g,
+    interpolate : /<%=([\s\S]+?)%>/g,
+    escape      : /<%-([\s\S]+?)%>/g
+  };
+
+  // When customizing `templateSettings`, if you don't want to define an
+  // interpolation, evaluation or escaping regex, we need one that is
+  // guaranteed not to match.
+  var noMatch = /(.)^/;
+
+  // Certain characters need to be escaped so that they can be put into a
+  // string literal.
+  var escapes = {
+    "'":      "'",
+    '\\':     '\\',
+    '\r':     'r',
+    '\n':     'n',
+    '\t':     't',
+    '\u2028': 'u2028',
+    '\u2029': 'u2029'
+  };
+
+  var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;
+
+  // JavaScript micro-templating, similar to John Resig's implementation.
+  // Underscore templating handles arbitrary delimiters, preserves whitespace,
+  // and correctly escapes quotes within interpolated code.
+  _.template = function(text, data, settings) {
+    var render;
+    settings = _.defaults({}, settings, _.templateSettings);
+
+    // Combine delimiters into one regular expression via alternation.
+    var matcher = new RegExp([
+      (settings.escape || noMatch).source,
+      (settings.interpolate || noMatch).source,
+      (settings.evaluate || noMatch).source
+    ].join('|') + '|$', 'g');
+
+    // Compile the template source, escaping string literals appropriately.
+    var index = 0;
+    var source = "__p+='";
+    text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
+      source += text.slice(index, offset)
+        .replace(escaper, function(match) { return '\\' + escapes[match]; });
+
+      if (escape) {
+        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
+      }
+      if (interpolate) {
+        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
+      }
+      if (evaluate) {
+        source += "';\n" + evaluate + "\n__p+='";
+      }
+      index = offset + match.length;
+      return match;
+    });
+    source += "';\n";
+
+    // If a variable is not specified, place data values in local scope.
+    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
+
+    source = "var __t,__p='',__j=Array.prototype.join," +
+      "print=function(){__p+=__j.call(arguments,'');};\n" +
+      source + "return __p;\n";
+
+    try {
+      render = new Function(settings.variable || 'obj', '_', source);
+    } catch (e) {
+      e.source = source;
+      throw e;
+    }
+
+    if (data) return render(data, _);
+    var template = function(data) {
+      return render.call(this, data, _);
+    };
+
+    // Provide the compiled function source as a convenience for precompilation.
+    template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';
+
+    return template;
+  };
+
+  // Add a "chain" function, which will delegate to the wrapper.
+  _.chain = function(obj) {
+    return _(obj).chain();
+  };
+
+  // OOP
+  // ---------------
+  // If Underscore is called as a function, it returns a wrapped object that
+  // can be used OO-style. This wrapper holds altered versions of all the
+  // underscore functions. Wrapped objects may be chained.
+
+  // Helper function to continue chaining intermediate results.
+  var result = function(obj) {
+    return this._chain ? _(obj).chain() : obj;
+  };
+
+  // Add all of the Underscore functions to the wrapper object.
+  _.mixin(_);
+
+  // Add all mutator Array functions to the wrapper.
+  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+    var method = ArrayProto[name];
+    _.prototype[name] = function() {
+      var obj = this._wrapped;
+      method.apply(obj, arguments);
+      if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0];
+      return result.call(this, obj);
+    };
+  });
+
+  // Add all accessor Array functions to the wrapper.
+  each(['concat', 'join', 'slice'], function(name) {
+    var method = ArrayProto[name];
+    _.prototype[name] = function() {
+      return result.call(this, method.apply(this._wrapped, arguments));
+    };
+  });
+
+  _.extend(_.prototype, {
+
+    // Start chaining a wrapped Underscore object.
+    chain: function() {
+      this._chain = true;
+      return this;
+    },
+
+    // Extracts the result from a wrapped and chained object.
+    value: function() {
+      return this._wrapped;
+    }
+
+  });
+
+  // AMD registration happens at the end for compatibility with AMD loaders
+  // that may not enforce next-turn semantics on modules. Even though general
+  // practice for AMD registration is to be anonymous, underscore registers
+  // as a named module because, like jQuery, it is a base library that is
+  // popular enough to be bundled in a third party lib, but not be part of
+  // an AMD load request. Those cases could generate an error when an
+  // anonymous define() is called outside of a loader request.
+  if (typeof define === 'function' && define.amd) {
+    define('underscore', [], function() {
+      return _;
+    });
+  }
+}).call(this);
diff --git a/site-test/rR6732XLw0Q7805Z.html b/site-test/rR6732XLw0Q7805Z.html
index ab091a3..acfc80d 100644
--- a/site-test/rR6732XLw0Q7805Z.html
+++ b/site-test/rR6732XLw0Q7805Z.html
@@ -1,7 +1,7 @@
 <html>
     <head>
-        <link href="style.css" rel="stylesheet" type="text/css">
-        <script src="script.js"></script>
+        <link href="css/style.css" rel="stylesheet" type="text/css">
+        <script src="js/script.js"></script>
         <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
     </head>
     <body id="body-index">

From 4622f761b6ff3e37940e4b18eade49325c00d798 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 1 Apr 2017 19:22:13 +0430
Subject: [PATCH 059/104] fix : minor edit

---
 site-test/admin-page.html | 92 ++++++++++++++++++++++++---------------
 1 file changed, 57 insertions(+), 35 deletions(-)

diff --git a/site-test/admin-page.html b/site-test/admin-page.html
index c669266..50fa0bc 100644
--- a/site-test/admin-page.html
+++ b/site-test/admin-page.html
@@ -1,22 +1,48 @@
+
+
 <html>
     <head>
+        <link href="css/style.css" rel="stylesheet" type="text/css">
         <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css">
         <link href="css/jquery-ui.css" rel="stylesheet" type="text/css">
         <link href="css/style2.css" rel="stylesheet" type="text/css">
+        
         <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
     </head>
-    <body>
-        <div class="container">
-  <h1>HTML5 Editable Table</h1>
-  <p>Through the powers of <strong>contenteditable</strong> and some simple jQuery you can easily create a custom editable table. No need for a robust JavaScript library anymore these days.</p>
-  
-  <ul>
-    <li>An editable table that exports a hash array. Dynamically compiles rows from headers</li> 
-    <li>Simple / powerful features such as add row, remove row, move row up/down.</li>
-  </ul>
-  
-  <div id="table" class="table-editable">
-    <span class="table-add glyphicon glyphicon-plus"></span>
+    <body id="body-index">
+        <div class="banner">
+            
+            <div id="right-image">
+                <img src="images/1.png" height="100px" width="100px"/>
+            </div>
+            <div id="topic">
+                <p>سامانه اطلاع رسانی ساختمان ابوریحان</p>
+            </div>
+            <div id="left-image">
+                <img src="images/2.gif" height="100px" width="100px"/>
+            </div>
+             
+        </div>
+        <div id="menu">
+        <div id="search">
+            <input type="text" name="search" placeholder=&#128270; onclick="search_hide();" onmouseout="search_view();">
+        </div>
+        <div class="topnav" id="myTopnav">
+            <a href="#table">جدول راهنمای طبقات</a>
+            <a href="#map">نقشه طبقات</a>
+            <a href="#masters">برنامه هفتگی اساتید</a>
+            <a href="#labs">آزمایشگاه ها</a>
+            <a href="#messages">اطلاعیه ها</a>
+            <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
+        </div>
+        </div>
+        <div id="page-body">
+            <div class="table-search">
+                <input type="text" name="table-search" placeholder="جستجو در جدول" >
+            </div>
+            <input type="button" name="table-add" class="table-add glyphicon" placeholder="&#x271A;">
+            <div id="table" class="table-editable">
+    <span class="table-add glyphicon">&#x271A;</span>
     <table class="table">
       <tr>
         <th>Name</th>
@@ -25,42 +51,38 @@ <h1>HTML5 Editable Table</h1>
         <th></th>
       </tr>
       <tr>
-        <td contenteditable="true">Stir Fry</td>
-        <td contenteditable="true">stir-fry</td>
+        <td contenteditable="true">&nbsp;</td>
+        <td contenteditable="true">&nbsp;</td>
         <td>
-          <span class="table-remove glyphicon glyphicon-remove"></span>
+          <span class="table-remove glyphicon ">&#x2716;</span>
         </td>
         <td>
-          <span class="table-up glyphicon glyphicon-arrow-up"></span>
-          <span class="table-down glyphicon glyphicon-arrow-down"></span>
+          <span class="table-up glyphicon ">&#x2191;</span>
+          <span class="table-down glyphicon ">&#x2193;</span>
         </td>
       </tr>
       <!-- This is our clonable table line -->
       <tr class="hide">
-        <td contenteditable="true">Untitled</td>
-        <td contenteditable="true">undefined</td>
+        <td contenteditable="true">&nbsp;</td>
+        <td contenteditable="true">&nbsp;</td>
         <td>
-          <span class="table-remove glyphicon glyphicon-remove"></span>
+          <span class="table-remove glyphicon">&#x2716;</span>
         </td>
         <td>
-          <span class="table-up glyphicon glyphicon-arrow-up"></span>
-          <span class="table-down glyphicon glyphicon-arrow-down"></span>
+          <span class="table-up glyphicon">&#x2191;</span>
+          <span class="table-down glyphicon">&#x2193;</span>
         </td>
       </tr>
     </table>
   </div>
-  
-  <button id="export-btn" class="btn btn-primary">Export Data</button>
-  <p id="export"></p>
-</div>
-<script src="js/bootstrap.min.js"></script>
-<script src="js/jquery-ui.min.js"></script>
-<script src="js/jquery.min.js"></script>
-<script src="js/underscore.js"></script>
-<script src="js/index.js"></script>
+        </div>
+        <div id="login-footer">
+        <p> ایده پردازان فناور ماورا &#169 1395</p>
+    </div>
+        <script src="js/bootstrap.min.js"></script>
+        <script src="js/jquery-ui.min.js"></script>
+        <script src="js/jquery.min.js"></script>
+        <script src="js/underscore.js"></script>
+        <script src="js/script.js"></script>
     </body>
-
-
-
-
 </html>
\ No newline at end of file

From cff863cac12fe3432c7a02fc115752964ca2d497 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 1 Apr 2017 19:26:54 +0430
Subject: [PATCH 060/104] fix : admin-page back to normal mode

---
 site-test/admin-page.html | 35 +++++++++++++++++++----------------
 1 file changed, 19 insertions(+), 16 deletions(-)

diff --git a/site-test/admin-page.html b/site-test/admin-page.html
index 50fa0bc..9475039 100644
--- a/site-test/admin-page.html
+++ b/site-test/admin-page.html
@@ -1,12 +1,9 @@
-
-
 <html>
     <head>
         <link href="css/style.css" rel="stylesheet" type="text/css">
         <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css">
         <link href="css/jquery-ui.css" rel="stylesheet" type="text/css">
         <link href="css/style2.css" rel="stylesheet" type="text/css">
-        
         <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
     </head>
     <body id="body-index">
@@ -19,24 +16,25 @@
                 <p>سامانه اطلاع رسانی ساختمان ابوریحان</p>
             </div>
             <div id="left-image">
+                
                 <img src="images/2.gif" height="100px" width="100px"/>
             </div>
              
         </div>
-        <div id="menu">
-        <div id="search">
-            <input type="text" name="search" placeholder=&#128270; onclick="search_hide();" onmouseout="search_view();">
-        </div>
-        <div class="topnav" id="myTopnav">
-            <a href="#table">جدول راهنمای طبقات</a>
-            <a href="#map">نقشه طبقات</a>
-            <a href="#masters">برنامه هفتگی اساتید</a>
-            <a href="#labs">آزمایشگاه ها</a>
-            <a href="#messages">اطلاعیه ها</a>
-            <a href="javascript:void(0);" class="icon" onclick="myFunction()">&#9776;</a>
-        </div>
+        <div id="mySidenav" class="sidenav">
+            <div id="user-role">
+               <p>ادمین<img src="images/admin.png"> </p>
+            </div>
+            <a href="javascript:void(0)" id="adicon" onclick="openNav();">&#9776;</a>
+            <a href="#">اتاق ها <img src="images/admin.png"></a>
+            <a href="#">اساتید <img src="images/admin.png"></a>
+            <a href="#">آزمایشگاه ها <img src="images/admin.png"></a>
+            <a href="#">اطلاعیه ها <img src="images/admin.png"></a>
+            <a href="#">کاربران <img src="images/admin.png"></a>
+            <a href="#">خروج <img src="images/admin.png"></a>
         </div>
         <div id="page-body">
+            
             <div class="table-search">
                 <input type="text" name="table-search" placeholder="جستجو در جدول" >
             </div>
@@ -75,14 +73,19 @@
       </tr>
     </table>
   </div>
+            
         </div>
         <div id="login-footer">
         <p> ایده پردازان فناور ماورا &#169 1395</p>
     </div>
-        <script src="js/bootstrap.min.js"></script>
+                <script src="js/bootstrap.min.js"></script>
         <script src="js/jquery-ui.min.js"></script>
         <script src="js/jquery.min.js"></script>
         <script src="js/underscore.js"></script>
         <script src="js/script.js"></script>
     </body>
+
+
+
+
 </html>
\ No newline at end of file

From 6b57fb67cb4ea4d384846f2cbca2a4ea1aa95ea1 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sun, 2 Apr 2017 03:15:55 +0430
Subject: [PATCH 061/104] sidenav text-decoration problem solved

---
 site-test/admin-page.html | 40 +++++++++++++++++++--------------------
 site-test/css/style.css   | 34 ++++++++++++++++++++++++++++++---
 2 files changed, 51 insertions(+), 23 deletions(-)

diff --git a/site-test/admin-page.html b/site-test/admin-page.html
index 9475039..ebe43a7 100644
--- a/site-test/admin-page.html
+++ b/site-test/admin-page.html
@@ -3,7 +3,6 @@
         <link href="css/style.css" rel="stylesheet" type="text/css">
         <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css">
         <link href="css/jquery-ui.css" rel="stylesheet" type="text/css">
-        <link href="css/style2.css" rel="stylesheet" type="text/css">
         <title>سامانه اطلاع رسانی ساختمان ابوریحان</title>
     </head>
     <body id="body-index">
@@ -37,39 +36,40 @@
             
             <div class="table-search">
                 <input type="text" name="table-search" placeholder="جستجو در جدول" >
+                
             </div>
-            <input type="button" name="table-add" class="table-add glyphicon" placeholder="&#x271A;">
-            <div id="table" class="table-editable">
-    <span class="table-add glyphicon">&#x271A;</span>
+    <span class="table-add glyphicon"> افزودن آزمایشگاه &#x271A;</span>        
+    <div id="table" class="table-editable">
+    
     <table class="table">
+        <col width="10px"/>
+         <col width="10px"/>
+        <col width="40px"/>
+        <col width="40px"/>
       <tr>
-        <th>Name</th>
-        <th>Value</th>
-        <th></th>
-        <th></th>
-      </tr>
-      <tr>
-        <td contenteditable="true">&nbsp;</td>
-        <td contenteditable="true">&nbsp;</td>
-        <td>
+          <td class="sign">
           <span class="table-remove glyphicon ">&#x2716;</span>
         </td>
-        <td>
-          <span class="table-up glyphicon ">&#x2191;</span>
-          <span class="table-down glyphicon ">&#x2193;</span>
+        <td class="sign">
+          <span class="table-up">&#x2191;</span>
+          <span class="table-down">&#x2193;</span>
         </td>
+        <td contenteditable="true">&nbsp;</td>
+        <td contenteditable="true">&nbsp;</td>
+        
       </tr>
       <!-- This is our clonable table line -->
       <tr class="hide">
-        <td contenteditable="true">&nbsp;</td>
-        <td contenteditable="true">&nbsp;</td>
-        <td>
+        <td class="sign">
           <span class="table-remove glyphicon">&#x2716;</span>
         </td>
-        <td>
+        <td class="sign">
           <span class="table-up glyphicon">&#x2191;</span>
           <span class="table-down glyphicon">&#x2193;</span>
         </td>
+        <td contenteditable="true">&nbsp;</td>
+        <td contenteditable="true">&nbsp;</td>
+        
       </tr>
     </table>
   </div>
diff --git a/site-test/css/style.css b/site-test/css/style.css
index ee8637e..4f38238 100644
--- a/site-test/css/style.css
+++ b/site-test/css/style.css
@@ -152,7 +152,7 @@ marquee{
     bottom: 0;
     text-align: center;
     background-color: cornflowerblue;
-    position:sticky;
+    position:fixed;
     font-size: 27px;
     margin-top: 100px;
     height: 50px;
@@ -595,6 +595,7 @@ input[type=text]:focus {
 }
 #page-body .table{
     margin-top: 8px;
+    margin-bottom: 100px;
 }
 .sidenav {
     height: 100%; /* 100% Full-height */
@@ -650,6 +651,7 @@ input[type=text]:focus {
 /* When you mouse over the navigation links, change their color */
 .sidenav a:hover, .offcanvas a:focus{
     color: #f1f1f1;
+    text-decoration: none;
 }
 
 /* Position and style the close button (top right corner) */
@@ -659,14 +661,37 @@ input[type=text]:focus {
     right: 5px;
     font-size: 30px;
     margin-left: 50px;
+    text-decoration: none;
 }
 
 @import "compass/css3";
 
 .table-editable {
   position: relative;
+    margin: auto;
+    width: 1200px;
+    margin-bottom: 80px;
+    
   
 }
+.table-editable tr td th {
+  text-align: right;
+  
+}
+
+.table-editable td{
+    margin: auto;
+    overflow:hidden;
+}
+
+.table-editable table{
+    table-layout: fixed;
+}
+
+.table-editable .sign{
+    text-align: center;
+}
+
 
 .table-remove {
   color: #700;
@@ -687,12 +712,15 @@ input[type=text]:focus {
 }
 
 .table-add {
-  color: #070;
+  color: white;
   cursor: pointer;
   position: absolute;
   top: 8px;
   right: 0;
-  
+   border: 1px solid black;
+  padding: 10px;
+    background-color: green;
+    border-radius: 3px;
   &:hover {
     color: #0b0;
   }

From 36076b1acf5ddaf96d002772bf882dacf3043253 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Mon, 3 Apr 2017 16:02:59 +0430
Subject: [PATCH 062/104] fix  : table mobile view added

---
 site-test/admin-page.html | 13 ++++++++-----
 site-test/css/style.css   | 19 ++++++++++++++-----
 2 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/site-test/admin-page.html b/site-test/admin-page.html
index ebe43a7..fda7fff 100644
--- a/site-test/admin-page.html
+++ b/site-test/admin-page.html
@@ -19,6 +19,9 @@
                 <img src="images/2.gif" height="100px" width="100px"/>
             </div>
              
+        </div>
+         <div id="menu">
+
         </div>
         <div id="mySidenav" class="sidenav">
             <div id="user-role">
@@ -38,14 +41,14 @@
                 <input type="text" name="table-search" placeholder="جستجو در جدول" >
                 
             </div>
-    <span class="table-add glyphicon"> افزودن آزمایشگاه &#x271A;</span>        
+    <span class="table-add glyphicon">افزودن آزمایشگاه &#x271A;</span>        
     <div id="table" class="table-editable">
     
     <table class="table">
-        <col width="10px"/>
-         <col width="10px"/>
-        <col width="40px"/>
-        <col width="40px"/>
+        <col  />
+         <col />
+        <col  />
+        <col />
       <tr>
           <td class="sign">
           <span class="table-remove glyphicon ">&#x2716;</span>
diff --git a/site-test/css/style.css b/site-test/css/style.css
index 4f38238..794b401 100644
--- a/site-test/css/style.css
+++ b/site-test/css/style.css
@@ -209,6 +209,14 @@ marquee{
 
 
 @media all and (max-width: 1024px) {
+    .table-add{
+        font-size: 35px;
+    }
+    .table-editable table{
+      width: 100%;
+        flex: 1;
+        font-size: 30px;
+        }  
     #page-body .table table,tr,td{
     font-size: 27px;
     }
@@ -371,9 +379,9 @@ font-size: 30px;
         transform: scale(3);
     }
     #login-footer{
-        font-size: 45px;
+        font-size: 40px;
         height:100px;
-        position: sticky;
+        position: fixed;
     }
     #body-login{
         background-color: cornflowerblue;
@@ -614,7 +622,7 @@ input[type=text]:focus {
 
 /* The navigation menu links */
 .sidenav #user-role{
-    padding: 8px 8px 8px 32px;
+    padding: auto;
     text-decoration: none;
     font-size: 22px;
     color: black;
@@ -669,7 +677,7 @@ input[type=text]:focus {
 .table-editable {
   position: relative;
     margin: auto;
-    width: 1200px;
+    width: 80%;
     margin-bottom: 80px;
     
   
@@ -685,7 +693,8 @@ input[type=text]:focus {
 }
 
 .table-editable table{
-    table-layout: fixed;
+       table-layout:fixed;
+ 
 }
 
 .table-editable .sign{

From 07174bbfb73f4061f877c7ef7ad2505f715dedd9 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Mon, 3 Apr 2017 17:13:56 +0430
Subject: [PATCH 063/104] footer mobile view fixed

---
 site-test/css/style.css | 27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/site-test/css/style.css b/site-test/css/style.css
index 794b401..8bb312e 100644
--- a/site-test/css/style.css
+++ b/site-test/css/style.css
@@ -146,8 +146,12 @@ marquee{
     color: cornflowerblue;
     border-radius: 5px;
 }
-
+#login-footer p{
+    vertical-align: center;
+    margin:auto;
+}
 #login-footer{
+    
     width: 100%;
     bottom: 0;
     text-align: center;
@@ -155,7 +159,7 @@ marquee{
     position:fixed;
     font-size: 27px;
     margin-top: 100px;
-    height: 50px;
+    height: auto;
 }
 .form #error-message{
     color: red;
@@ -243,6 +247,7 @@ marquee{
     }
     #page-body #mobile-table{
         display: block;
+        margin-bottom: 100px;
     }
     #page-body #week-table{
         display: none;
@@ -273,6 +278,9 @@ marquee{
         margin-top: 8px;
         border-radius: 8px;
     }
+    #body-index #menu-item:last-child{
+        margin-bottom: 100px;
+    }
     #body-index #menu-text{
         text-align: center;
         background-color: white;
@@ -304,6 +312,7 @@ marquee{
     }
     #body-index #map img{
         width: 90%;
+        margin-bottom: 100px;
     }
   .topnav a {display: none;}
   .topnav a.icon {
@@ -379,9 +388,12 @@ font-size: 30px;
         transform: scale(3);
     }
     #login-footer{
-        font-size: 40px;
-        height:100px;
-        position: fixed;
+        font-size: 45px;
+        height: auto;
+    }
+     #login-footer p{
+        margin: auto;
+        padding: auto;
     }
     #body-login{
         background-color: cornflowerblue;
@@ -493,6 +505,7 @@ input[type=text]:focus {
 #week-table{
     text-align: center;
     margin-left: 24%;
+    margin-bottom: 100px;
 }
 
 #week-table .fix td{
@@ -569,6 +582,7 @@ input[type=text]:focus {
 #page-body .floor-tables{
     margin-left: 18.05%;
     margin-right:18.5%;
+    margin-bottom: 100px;
 }
 .table-search input{
     font-size: 20px;
@@ -586,6 +600,9 @@ input[type=text]:focus {
     padding: 8px;
     margin: 10px auto auto auto;
 }
+#page-body .notif{
+    margin-bottom: 100px;
+}
 #page-body .table table,tr,td{
     border:1px solid black;
     border-collapse: collapse;

From 8682a4b919f943c5a4b15b2d2b6ec17c52166146 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Mon, 3 Apr 2017 18:10:14 +0430
Subject: [PATCH 064/104] fix : search method added

---
 site-test/1M7O8H6pk7rvWq4w.html |  8 ++++----
 site-test/E275H47jQ88B0XxV.html |  2 +-
 site-test/js/script.js          | 21 +++++++++++++++++++++
 3 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/site-test/1M7O8H6pk7rvWq4w.html b/site-test/1M7O8H6pk7rvWq4w.html
index a8b73cd..a9182b6 100644
--- a/site-test/1M7O8H6pk7rvWq4w.html
+++ b/site-test/1M7O8H6pk7rvWq4w.html
@@ -20,7 +20,7 @@
         </div>
         <div id="menu">
         <div id="search">
-            <input type="text" name="search" placeholder=&#128270; onclick="search_hide();" onmouseout="search_view();">
+            <input  type="text" name="search" placeholder=&#128270; onclick="search_hide();"  onmouseout="search_view();">
         </div>
         <div class="topnav" id="myTopnav">
             <a href="#table">جدول راهنمای طبقات</a>
@@ -33,7 +33,7 @@
         </div>
         <div id="page-body">
             <div class="table-search">
-                <input type="text" name="table-search" placeholder="جستجو در جدول" >
+                <input type="text" name="table-search" placeholder="جستجو در جدول" onkeyup="search();" id="myinput" >
             </div>
             
             <div class="table">
@@ -88,9 +88,9 @@
                     </tr>
                     <tr>
                         <td>تست</td>
+                        <td>سهند</td>
                         <td>تست</td>
-                        <td>تست</td>
-                        <td>تست</td>
+                        <td>سپند</td>
                     </tr>
                     <tr>
                         <td>تست</td>
diff --git a/site-test/E275H47jQ88B0XxV.html b/site-test/E275H47jQ88B0XxV.html
index 72fbe8e..ace8505 100644
--- a/site-test/E275H47jQ88B0XxV.html
+++ b/site-test/E275H47jQ88B0XxV.html
@@ -33,7 +33,7 @@
         </div>
         <div id="page-body">
             <div class="table-search">
-                <input type="text" name="table-search" placeholder="جستجو در جدول" >
+                <input type="text" name="table-search" placeholder="جستجو در جدول" id="myinput" onkeyup="search();">
             </div>
             <div class="floor-tables">
             
diff --git a/site-test/js/script.js b/site-test/js/script.js
index 98aa48d..da8fb4f 100644
--- a/site-test/js/script.js
+++ b/site-test/js/script.js
@@ -63,6 +63,27 @@ function openNav() {
 
 }
 
+function search(){
+    var input,filter,table,tr,td_list,i;
+    input=document.getElementById("myinput");
+    filter=input.value.toUpperCase();
+    tr=document.getElementsByTagName("tr");
+    for (i = 0; i < tr.length; i++) {
+    td_list = tr[i].getElementsByTagName("td");
+        for (j=0;j<td_list.length;j++){
+            td=td_list[j];
+    if (td) {
+      if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
+        tr[i].style.display = "";
+          break;
+      } else {
+        tr[i].style.display = "none";
+          
+      }
+    } 
+  }
+    }
+}
 
 
 var $TABLE = $('#table');

From 20d3b1dbce020e197b53fa8f5525ff9e88b5b29a Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Mon, 3 Apr 2017 22:44:01 +0430
Subject: [PATCH 065/104] notif search function added

---
 site-test/B2lk320ni805O0u1.html |  4 ++--
 site-test/js/script.js          | 17 +++++++++++++++++
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/site-test/B2lk320ni805O0u1.html b/site-test/B2lk320ni805O0u1.html
index b6870ec..33f22a0 100644
--- a/site-test/B2lk320ni805O0u1.html
+++ b/site-test/B2lk320ni805O0u1.html
@@ -33,9 +33,9 @@
         </div>
         <div id="page-body">
             <div class="table-search">
-                <input type="text" name="notif-search" placeholder="جستجو در اطلاعیه ها" >
+                <input type="text" name="notif-search" placeholder="جستجو در اطلاعیه ها" id="myinput" onkeyup="notif_search();" >
             </div>
-            <div class="notif">
+            <div class="notif" id="notif">
                 <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>
                 <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>
                 <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>
diff --git a/site-test/js/script.js b/site-test/js/script.js
index da8fb4f..57f20e4 100644
--- a/site-test/js/script.js
+++ b/site-test/js/script.js
@@ -85,6 +85,23 @@ function search(){
     }
 }
 
+function notif_search(){
+    var input,filter,notif,p_list,i;
+    input=document.getElementById("myinput");
+    filter=input.value.toUpperCase();
+    notif=document.getElementById("notif");
+    p_list=notif.getElementsByTagName("p");
+    for (i=0;i<p_list.length;i++){
+        if (p_list[i].innerHTML.toUpperCase().indexOf(filter)>-1){
+            p_list[i].style.display="";
+        }
+        else{
+            p_list[i].style.display="none";
+        }
+    }
+    
+}
+
 
 var $TABLE = $('#table');
 var $BTN = $('#export-btn');

From e55cab4dd148ef8141bf199e33bb3211a049e1e9 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Mon, 3 Apr 2017 22:58:08 +0430
Subject: [PATCH 066/104] floor_search function in js added

---
 site-test/E275H47jQ88B0XxV.html |  4 ++--
 site-test/js/script.js          | 21 +++++++++++++++++++++
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/site-test/E275H47jQ88B0XxV.html b/site-test/E275H47jQ88B0XxV.html
index ace8505..9afc18d 100644
--- a/site-test/E275H47jQ88B0XxV.html
+++ b/site-test/E275H47jQ88B0XxV.html
@@ -33,7 +33,7 @@
         </div>
         <div id="page-body">
             <div class="table-search">
-                <input type="text" name="table-search" placeholder="جستجو در جدول" id="myinput" onkeyup="search();">
+                <input type="text" name="table-search" placeholder="جستجو در جدول" id="myinput" onkeyup="floor_search();">
             </div>
             <div class="floor-tables">
             
@@ -54,7 +54,7 @@
                     <tr><th>طبقه چهارم</th></tr>
                     <tr><td>کلاس 413</td></tr>
                     <tr><td>کلاس 412</td></tr>
-                    <tr><td>کلاس 417</td></tr>
+                    <tr><td>کلاس 418</td></tr>
                     <tr><td>آزمایشگاه الکترونیک و سیستمهای تلویزیون</td></tr>
                     <tr><td>دفتر آموزش کارشناسی دانشکده مهندسی برق</td></tr>
                     <tr><td>سالن آمفی تئاتر زنده یاد دکتر ادیبی</td></tr>
diff --git a/site-test/js/script.js b/site-test/js/script.js
index 57f20e4..0da9df5 100644
--- a/site-test/js/script.js
+++ b/site-test/js/script.js
@@ -103,6 +103,27 @@ function notif_search(){
 }
 
 
+function floor_search(){
+    var input,filter,i,j,table_list,td_list;
+    input=document.getElementById("myinput");
+    filter=input.value.toUpperCase();
+    table_list=document.getElementsByTagName("table");
+    for(i=0;i<table_list.length;i++){
+        td_list=table_list[i].getElementsByTagName("td");
+        for (j=0;j<td_list.length;j++){
+            if(td_list[j].innerHTML.toUpperCase().indexOf(filter)>-1){
+                table_list[i].style.display="";
+                break;
+            } 
+            else{
+                table_list[i].style.display="none";
+                
+            }
+        }
+    }
+}
+
+
 var $TABLE = $('#table');
 var $BTN = $('#export-btn');
 var $EXPORT = $('#export');

From b234f0d9f7e66d3928d03139d1f38c6d40783ff7 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Mon, 3 Apr 2017 23:01:40 +0430
Subject: [PATCH 067/104] table-search focus problem fixed

---
 site-test/css/style.css | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/site-test/css/style.css b/site-test/css/style.css
index 8bb312e..9813150 100644
--- a/site-test/css/style.css
+++ b/site-test/css/style.css
@@ -490,7 +490,7 @@ font-size: 30px;
     margin-top:2px;
     vertical-align: middle;
 }
-input[type=text]:focus {
+#search input[type=text]:focus {
     width: 90%;
 }
 

From 0819e82bea42a4cb085b3702f338d12297c7723c Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 4 Apr 2017 00:03:04 +0430
Subject: [PATCH 068/104] search message added

---
 site-test/1M7O8H6pk7rvWq4w.html |  2 +-
 site-test/B2lk320ni805O0u1.html |  2 +-
 site-test/E275H47jQ88B0XxV.html |  1 +
 site-test/css/style.css         |  6 ++++++
 site-test/js/script.js          | 31 ++++++++++++++++++++++++++++---
 5 files changed, 37 insertions(+), 5 deletions(-)

diff --git a/site-test/1M7O8H6pk7rvWq4w.html b/site-test/1M7O8H6pk7rvWq4w.html
index a9182b6..9782bc9 100644
--- a/site-test/1M7O8H6pk7rvWq4w.html
+++ b/site-test/1M7O8H6pk7rvWq4w.html
@@ -222,7 +222,7 @@
                 </table>
             
             </div>
-            
+            <p id="search-message">نتیجه ای یافت نشد</p>
         </div>
         <div id="login-footer">
         <p> ایده پردازان فناور ماورا &#169 1395</p>
diff --git a/site-test/B2lk320ni805O0u1.html b/site-test/B2lk320ni805O0u1.html
index 33f22a0..c1f76ed 100644
--- a/site-test/B2lk320ni805O0u1.html
+++ b/site-test/B2lk320ni805O0u1.html
@@ -42,7 +42,7 @@
                 <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>
                 <p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>
             </div>
-            
+            <p id="search-message">نتیجه ای یافت نشد</p>
         </div>
         <div id="login-footer">
         <p> ایده پردازان فناور ماورا &#169 1395</p>
diff --git a/site-test/E275H47jQ88B0XxV.html b/site-test/E275H47jQ88B0XxV.html
index 9afc18d..a47d101 100644
--- a/site-test/E275H47jQ88B0XxV.html
+++ b/site-test/E275H47jQ88B0XxV.html
@@ -133,6 +133,7 @@
                     <tr><td>دفتر انتشارات دانشکده مهندسی برق</td></tr>
                 </table>
             </div>
+                <p id="search-message">نتیجه ای یافت نشد</p>
             </div>
         </div>
         <div id="login-footer">
diff --git a/site-test/css/style.css b/site-test/css/style.css
index 9813150..7c0a99d 100644
--- a/site-test/css/style.css
+++ b/site-test/css/style.css
@@ -213,6 +213,7 @@ marquee{
 
 
 @media all and (max-width: 1024px) {
+    
     .table-add{
         font-size: 35px;
     }
@@ -751,3 +752,8 @@ font-size: 30px;
     color: #0b0;
   }
 }
+
+#search-message{
+    display: none;
+    font-size: 25px;
+}
diff --git a/site-test/js/script.js b/site-test/js/script.js
index 0da9df5..ad97ac2 100644
--- a/site-test/js/script.js
+++ b/site-test/js/script.js
@@ -64,8 +64,10 @@ function openNav() {
 }
 
 function search(){
-    var input,filter,table,tr,td_list,i;
+    var input,filter,table,tr,td_list,i,message,counter;
+    counter=0;
     input=document.getElementById("myinput");
+    message=document.getElementById("search-message");
     filter=input.value.toUpperCase();
     tr=document.getElementsByTagName("tr");
     for (i = 0; i < tr.length; i++) {
@@ -83,13 +85,21 @@ function search(){
     } 
   }
     }
+    if (counter==0){
+        message.style.display="block";
+    }
+    else{
+        message.style.display="none";
+    }
 }
 
 function notif_search(){
-    var input,filter,notif,p_list,i;
+    var input,filter,notif,p_list,i,message,counter;
+    counter=0;
     input=document.getElementById("myinput");
     filter=input.value.toUpperCase();
     notif=document.getElementById("notif");
+    message=document.getElementById("search-message");
     p_list=notif.getElementsByTagName("p");
     for (i=0;i<p_list.length;i++){
         if (p_list[i].innerHTML.toUpperCase().indexOf(filter)>-1){
@@ -99,20 +109,29 @@ function notif_search(){
             p_list[i].style.display="none";
         }
     }
+    if (counter==0){
+        message.style.display="block";
+    }
+    else{
+        message.style.display="none";
+    }
     
 }
 
 
 function floor_search(){
-    var input,filter,i,j,table_list,td_list;
+    var input,filter,i,j,table_list,td_list,counter,message;
+    counter=0;
     input=document.getElementById("myinput");
     filter=input.value.toUpperCase();
+    message=document.getElementById("search-message");
     table_list=document.getElementsByTagName("table");
     for(i=0;i<table_list.length;i++){
         td_list=table_list[i].getElementsByTagName("td");
         for (j=0;j<td_list.length;j++){
             if(td_list[j].innerHTML.toUpperCase().indexOf(filter)>-1){
                 table_list[i].style.display="";
+                counter=counter+1;
                 break;
             } 
             else{
@@ -121,6 +140,12 @@ function floor_search(){
             }
         }
     }
+    if (counter==0){
+        message.style.display="block";
+    }
+    else{
+        message.style.display="none";
+    }
 }
 
 

From 5f49e1c5ad43784dfa48fcbf34df92534805c4f4 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 4 Apr 2017 00:19:03 +0430
Subject: [PATCH 069/104] search function added to admin-page

---
 site-test/admin-page.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/site-test/admin-page.html b/site-test/admin-page.html
index fda7fff..93633af 100644
--- a/site-test/admin-page.html
+++ b/site-test/admin-page.html
@@ -38,7 +38,7 @@
         <div id="page-body">
             
             <div class="table-search">
-                <input type="text" name="table-search" placeholder="جستجو در جدول" >
+                <input type="text" name="table-search" placeholder="جستجو در جدول" id="myinput" onkeyup="search();" >
                 
             </div>
     <span class="table-add glyphicon">افزودن آزمایشگاه &#x271A;</span>        

From 825dea15218db6bb64e5df6bd10dc989b98f144e Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 4 Apr 2017 00:35:11 +0430
Subject: [PATCH 070/104] fix : minor edit in admin-page searh

---
 site-test/1M7O8H6pk7rvWq4w.html |  2 +-
 site-test/admin-page.html       | 12 ++++++------
 site-test/js/script.js          | 26 +++++++++++++++++++++++++-
 3 files changed, 32 insertions(+), 8 deletions(-)

diff --git a/site-test/1M7O8H6pk7rvWq4w.html b/site-test/1M7O8H6pk7rvWq4w.html
index 9782bc9..a25a41f 100644
--- a/site-test/1M7O8H6pk7rvWq4w.html
+++ b/site-test/1M7O8H6pk7rvWq4w.html
@@ -33,7 +33,7 @@
         </div>
         <div id="page-body">
             <div class="table-search">
-                <input type="text" name="table-search" placeholder="جستجو در جدول" onkeyup="search();" id="myinput" >
+                <input type="text" name="table-search" placeholder="جستجو در جدول" onkeyup="all_search();" id="myinput" >
             </div>
             
             <div class="table">
diff --git a/site-test/admin-page.html b/site-test/admin-page.html
index 93633af..c048f41 100644
--- a/site-test/admin-page.html
+++ b/site-test/admin-page.html
@@ -38,7 +38,7 @@
         <div id="page-body">
             
             <div class="table-search">
-                <input type="text" name="table-search" placeholder="جستجو در جدول" id="myinput" onkeyup="search();" >
+                <input type="text" name="table-search" placeholder="جستجو در جدول" id="myinput" onkeyup="custom_search();" >
                 
             </div>
     <span class="table-add glyphicon">افزودن آزمایشگاه &#x271A;</span>        
@@ -57,8 +57,8 @@
           <span class="table-up">&#x2191;</span>
           <span class="table-down">&#x2193;</span>
         </td>
-        <td contenteditable="true">&nbsp;</td>
-        <td contenteditable="true">&nbsp;</td>
+        <td contenteditable="true"></td>
+        <td contenteditable="true"></td>
         
       </tr>
       <!-- This is our clonable table line -->
@@ -70,13 +70,13 @@
           <span class="table-up glyphicon">&#x2191;</span>
           <span class="table-down glyphicon">&#x2193;</span>
         </td>
-        <td contenteditable="true">&nbsp;</td>
-        <td contenteditable="true">&nbsp;</td>
+        <td contenteditable="true"></td>
+        <td contenteditable="true"></td>
         
       </tr>
     </table>
   </div>
-            
+         <p id="search-message">نتیجه ای یافت نشد</p>   
         </div>
         <div id="login-footer">
         <p> ایده پردازان فناور ماورا &#169 1395</p>
diff --git a/site-test/js/script.js b/site-test/js/script.js
index ad97ac2..533a51f 100644
--- a/site-test/js/script.js
+++ b/site-test/js/script.js
@@ -63,7 +63,31 @@ function openNav() {
 
 }
 
-function search(){
+function custom_search(){
+    var input,filter,table,tr,td_list,i,message,counter;
+    counter=0;
+    input=document.getElementById("myinput");
+    message=document.getElementById("search-message");
+    filter=input.value.toUpperCase();
+    tr=document.getElementsByTagName("tr");
+    for (i = 0; i < tr.length; i++) {
+    td_list = tr[i].getElementsByTagName("td");
+        for (j=td_list.length;j>1;j--){
+            td=td_list[j];
+    if (td) {
+      if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
+        tr[i].style.display = "";
+          break;
+      } else {
+        tr[i].style.display = "none";
+          
+      }
+    } 
+  }
+    }
+}
+
+function all_search(){
     var input,filter,table,tr,td_list,i,message,counter;
     counter=0;
     input=document.getElementById("myinput");

From 8cdfd238ea63559474309f7bafbc40d25f37227a Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 4 Apr 2017 02:43:05 +0430
Subject: [PATCH 071/104] minor edit in mobile style position

---
 site-test/42450HMl8U8kl0xI.html |   1 -
 site-test/M191478tW1DbJ755.html |   1 -
 site-test/admin-page.html       |   4 +-
 site-test/css/style.css         | 418 +++++++++++++++++---------------
 site-test/js/script.js          |   2 +-
 5 files changed, 225 insertions(+), 201 deletions(-)

diff --git a/site-test/42450HMl8U8kl0xI.html b/site-test/42450HMl8U8kl0xI.html
index 1f0fc0a..db5cbc0 100644
--- a/site-test/42450HMl8U8kl0xI.html
+++ b/site-test/42450HMl8U8kl0xI.html
@@ -33,7 +33,6 @@
         </div>
         <div id="page-body">
             <div id="table-banner">
-                &nbsp;
                 <p>برنامه هفتگی نیمسال اول  ۹۶-۹۵آقای  دکتر  فلانی</p>
             </div>
             <div id="week-table">
diff --git a/site-test/M191478tW1DbJ755.html b/site-test/M191478tW1DbJ755.html
index 88d5024..cbafd99 100644
--- a/site-test/M191478tW1DbJ755.html
+++ b/site-test/M191478tW1DbJ755.html
@@ -33,7 +33,6 @@
         </div>
         <div id="page-body">
             <div id="map-banner">
-                &nbsp;
                 <p>نقشه طبقه چهارم</p>
             </div>
             <div id="map">
diff --git a/site-test/admin-page.html b/site-test/admin-page.html
index c048f41..fa64d1f 100644
--- a/site-test/admin-page.html
+++ b/site-test/admin-page.html
@@ -39,9 +39,9 @@
             
             <div class="table-search">
                 <input type="text" name="table-search" placeholder="جستجو در جدول" id="myinput" onkeyup="custom_search();" >
-                
+                <span class="table-add"><span>افزودن آزمایشگاه</span> &#x271A;</span>  
             </div>
-    <span class="table-add glyphicon">افزودن آزمایشگاه &#x271A;</span>        
+          
     <div id="table" class="table-editable">
     
     <table class="table">
diff --git a/site-test/css/style.css b/site-test/css/style.css
index 7c0a99d..1442f97 100644
--- a/site-test/css/style.css
+++ b/site-test/css/style.css
@@ -212,197 +212,7 @@ marquee{
 /* Hide the link that should open and close the topnav on small screens */
 
 
-@media all and (max-width: 1024px) {
-    
-    .table-add{
-        font-size: 35px;
-    }
-    .table-editable table{
-      width: 100%;
-        flex: 1;
-        font-size: 30px;
-        }  
-    #page-body .table table,tr,td{
-    font-size: 27px;
-    }
-    
-    #page-body .notif p{
-    width: 100%;
-    font-size: 40px;
-    }
-    #page-body .table-search input{
-        font-size: 30;
-        width: 80%;
-        padding-right: 20px;
-        margin-top: 10px;
-       
-    }
-    #page-body .floor-table td{
-        width: 100%;
-        height: 400px;
-        font-size: 30;
-    }
-    #page-body #table-banner,#map-banner{
-    font-size: 35px;
-    
-    }
-    #page-body #mobile-table{
-        display: block;
-        margin-bottom: 100px;
-    }
-    #page-body #week-table{
-        display: none;
-    }
-    #menu{
-        height: 100px;
- 
-    }
-    #menu #search input{
-        margin-top: 23px;
-        background-color: blue;
-        font-size: 50px;
-        border-style: none;
-        margin-left: 25px;
-    }
-    
-    #page-body{
-    }
-    #body-index #menu-item img{
-        display: none;
-    }
-    #body-index #menu-item{
-        width: 100%;
-        margin: auto;
-        text-align: center;
-        display:block;
-        font-size: 45px;
-        margin-top: 8px;
-        border-radius: 8px;
-    }
-    #body-index #menu-item:last-child{
-        margin-bottom: 100px;
-    }
-    #body-index #menu-text{
-        text-align: center;
-        background-color: white;
-        display: inline;
-        margin: auto;
-    }
-     #body-index p{
-        margin-top: 70px;
-    }
-    .banner #left-image img{
-        display: none;
-    }
-    .banner #right-image img{
-        display: none;
-    }
-    #body-index .banner{
-        width: 100%;
-        height: auto;
-    }
-    #body-index .banner #topic{
-        font-size: 70px;
-        margin-bottom: 20px;
-    }
-    #body-index #menu{
-        width: 100%;
-    }
-    #body-index #map,#map-prev{
-        height: auto;
-    }
-    #body-index #map img{
-        width: 90%;
-        margin-bottom: 100px;
-    }
-  .topnav a {display: none;}
-  .topnav a.icon {
-    float: right;
-    display: block;
-    font-size: 50px;
-    
-  }
-  .topnav.responsive {position:relative;}
-  .topnav.responsive a.icon {
-    position: absolute;
-    right: 0;
-    top: 0;
-  }
-  
-  .topnav.responsive a:not(:last-child) {
-    float: none;
-    display: block;
-    text-align: right;
-    font-size: 45px;
-    margin-right: 60px;
-  }
 
-   .form #error-message{
-    color: red;
-    font-size: 50px;
-        } 
-    .login-page{
-        width: 100%;
-        padding: auto;
-        height: 100%;
-    }
-    #login-head{
-        width: 100%;
-        font-size:60px;
-        text-align: center;
-    }
-    .form {
-  position: relative;
-  background-color: cornflowerblue;
-  max-width: 100%;
-  text-align: center;
-  margin-top: 20%;
-
-  border-radius: 5px;
-}
-    .form #username,#password{
-  font-size: 42px;
-  padding:27px;
-        
-}
-.form #login-button {
-  font-family: "yekan";
-  text-transform: uppercase;
-  outline: 0;
-  background-color:green;
-  width: 100%;
-  border: 0;
-  padding: 30px;
-  color: #FFFFFF;
-  font-size: 36px;
-  -webkit-transition: all 0.3 ease;
-  transition: all 0.3 ease;
-  cursor: pointer;
-  margin: 4px;
-}
-.form .checkbox label{
-font-size: 30px;
-    margin-right: 20px;
-
-}
-    .form .checkbox input{
-        transform: scale(3);
-    }
-    #login-footer{
-        font-size: 45px;
-        height: auto;
-    }
-     #login-footer p{
-        margin: auto;
-        padding: auto;
-    }
-    #body-login{
-        background-color: cornflowerblue;
-    }
-    #menu-item:hover{
-    opacity: 1;
-}
-}
 
 
 #list-page{
@@ -492,16 +302,17 @@ font-size: 30px;
     vertical-align: middle;
 }
 #search input[type=text]:focus {
-    width: 90%;
+    width: 98%;
 }
 
 #week-table table,tr,td{
     border: 1px solid black;
     border-collapse: collapse;
-    text-align: center;
+    
 }
 #week-table td{
     width: 120px;
+    text-align: center;
 }
 #week-table{
     text-align: center;
@@ -527,10 +338,10 @@ font-size: 30px;
     margin-right: 4%;
     font-size:40px;
 }
-#mobile-table table,tr,td{
+#mobile-table table tr td{
     border:1px solid black;
     border-collapse: collapse;
-
+    text-align: center;
 }
 .rotate-hour div{
     transform: rotate(90deg);
@@ -561,7 +372,6 @@ font-size: 30px;
 #page-body .floor-table table,tr,td{
     border:1px solid black;
     border-collapse: collapse;
-    text-align: right;
     border-radius: 10px;
 }
 #page-body .floor-table th{
@@ -573,6 +383,7 @@ font-size: 30px;
     height: 40px;
     width: 380px;
     padding-right: 9px;
+        text-align: center;
 }
 #page-body .floor-table{
     display: inline-block;
@@ -717,6 +528,7 @@ font-size: 30px;
 
 .table-editable .sign{
     text-align: center;
+    vertical-align: middle;
 }
 
 
@@ -741,13 +553,13 @@ font-size: 30px;
 .table-add {
   color: white;
   cursor: pointer;
-  position: absolute;
   top: 8px;
   right: 0;
    border: 1px solid black;
   padding: 10px;
     background-color: green;
     border-radius: 3px;
+    margin-left: 5px;
   &:hover {
     color: #0b0;
   }
@@ -757,3 +569,217 @@ font-size: 30px;
     display: none;
     font-size: 25px;
 }
+
+
+
+@media all and (max-width: 1024px) {
+    
+    
+    .sidenav  #adicon {
+    font-size: 50px;
+
+}
+    .sidenav a{
+        font-size: 25;
+    }
+    
+    
+    .table-add span {
+        display: none;
+    }
+    .table-add{
+        font-size: 25;
+    }
+    .table-editable table{
+      width: 80%;
+        }  
+    
+    #page-body .table table,tr,td{
+    font-size: 27px;
+    }
+    
+    #page-body .notif p{
+    width: 80%;
+    font-size: 40px;
+   margin-top: 15px;
+    }
+    #page-body .table-search input{
+        font-size: 45;
+        width: 80%;
+        padding-right: 29px;
+        margin: auto;
+        margin-top: 25px;
+        margin-bottom: 20px;
+       
+    }
+    #page-body .floor-table td{
+        width: 100%;
+        height: auto;
+        font-size: 40;
+    }
+      #page-body .floor-table th{
+        font-size: 45;
+    }
+    #page-body #table-banner,#map-banner{
+    font-size: 35px;
+    
+    }
+    #page-body #mobile-table{
+        display: block;
+        margin-bottom: 100px;
+    }
+    #page-body #week-table{
+        display: none;
+    }
+    #menu{
+        height: 100px;
+ 
+    }
+    #menu #search input{
+        margin-top: 23px;
+        background-color: blue;
+        font-size: 50px;
+        border-style: none;
+        margin-left: 25px;
+    }
+    
+    #page-body{
+    }
+    #body-index #menu-item img{
+        display: none;
+    }
+    #body-index #menu-item{
+        width: 100%;
+        margin: auto;
+        text-align: center;
+        display:block;
+        font-size: 45px;
+        margin-top: 8px;
+        border-radius: 8px;
+    }
+    #body-index #menu-item:last-child{
+        margin-bottom: 100px;
+    }
+    #body-index #menu-text{
+        text-align: center;
+        background-color: white;
+        display: inline;
+        margin: auto;
+    }
+     #body-index p{
+        margin-top: 70px;
+    }
+    .banner #left-image img{
+        display: none;
+    }
+    .banner #right-image img{
+        display: none;
+    }
+    #body-index .banner{
+        width: 100%;
+        height: auto;
+        vertical-align: center;
+    }
+    #body-index .banner #topic{
+        font-size: 70px;
+        margin-bottom: 20px;
+        vertical-align: middle;
+    }
+    #body-index #menu{
+        width: 100%;
+    }
+    #body-index #map,#map-prev{
+        height: auto;
+    }
+    #body-index #map img{
+        width: 90%;
+        margin-bottom: 100px;
+    }
+  .topnav a {display: none;}
+  .topnav a.icon {
+    float: right;
+    display: block;
+    font-size: 50px;
+    
+  }
+  .topnav.responsive {position:relative;}
+  .topnav.responsive a.icon {
+    position: absolute;
+    right: 0;
+    top: 0;
+  }
+  
+  .topnav.responsive a:not(:last-child) {
+    float: none;
+    display: block;
+    text-align: right;
+    font-size: 45px;
+    margin-right: 60px;
+  }
+
+   .form #error-message{
+    color: red;
+    font-size: 50px;
+        } 
+    .login-page{
+        width: 100%;
+        padding: auto;
+        height: 100%;
+    }
+    #login-head{
+        width: 100%;
+        font-size:60px;
+        text-align: center;
+    }
+    .form {
+  position: relative;
+  background-color: cornflowerblue;
+  max-width: 100%;
+  text-align: center;
+  margin-top: 20%;
+
+  border-radius: 5px;
+}
+    .form #username,#password{
+  font-size: 42px;
+  padding:27px;
+        
+}
+.form #login-button {
+  font-family: "yekan";
+  text-transform: uppercase;
+  outline: 0;
+  background-color:green;
+  width: 100%;
+  border: 0;
+  padding: 30px;
+  color: #FFFFFF;
+  font-size: 36px;
+  -webkit-transition: all 0.3 ease;
+  transition: all 0.3 ease;
+  cursor: pointer;
+  margin: 4px;
+}
+.form .checkbox label{
+font-size: 30px;
+    margin-right: 20px;
+
+}
+    .form .checkbox input{
+        transform: scale(3);
+    }
+    #login-footer{
+        font-size: 45px;
+        height: auto;
+    }
+     #login-footer p{
+        margin: auto;
+        padding: auto;
+    }
+    #body-login{
+        background-color: cornflowerblue;
+    }
+    #menu-item:hover{
+    opacity: 1;
+}
+}
diff --git a/site-test/js/script.js b/site-test/js/script.js
index 533a51f..0c8299b 100644
--- a/site-test/js/script.js
+++ b/site-test/js/script.js
@@ -32,7 +32,7 @@ function myFunction() {
         x.className = "topnav";
         menu.style.height="100px";
         document.getElementById("search").style.display="block";
-        icon.innerHTML="&#9726;"
+        icon.innerHTML="&#9776;"
     }
 }
 

From e6802013ab691a20e35ad1fb9df56aad856f0f41 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 30 May 2017 02:01:14 +0430
Subject: [PATCH 072/104] moduland icons changed

---
 images/moduland.jpg | Bin 18100 -> 20036 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/images/moduland.jpg b/images/moduland.jpg
index 4528d00f514d195f30df342ae91cc76550a2df98..9afad90c6e81e615e73d3f4675af453d11df547b 100644
GIT binary patch

From 3b17a756b54dc786cd58a88804d0e2b97cc517e2 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 30 May 2017 02:48:14 +0430
Subject: [PATCH 073/104] docs : minor edit in site

---
 images/list.png | Bin 0 -> 4897 bytes
 index.html      |  13 ++++++++++---
 style.css       |  31 +++++++++++++++++++++++++------
 3 files changed, 35 insertions(+), 9 deletions(-)
 create mode 100644 images/list.png

diff --git a/images/list.png b/images/list.png
new file mode 100644
index 0000000000000000000000000000000000000000..a18516f98c90179cd9043331b360d47f6dc32c0c
GIT binary patch
diff --git a/index.html b/index.html
index 8abaa74..7626596 100644
--- a/index.html
+++ b/index.html
@@ -10,18 +10,25 @@
     <body>
         	
         <div class="logo"  align="center">
-            <img src="images/orangetool.jpg" height="400px" width="600px">
+            <img src="images/orangetool.jpg" height="350px" width="500px">
             <br/>
-            <h2>General and useful python-scripts developed for Single-Board Computers (Under Development)</h2>
-            <h3>Tested on Lubuntu 14.04 / Orange Pi-PC</h3>
+            <h3 class="moduland">Version 0.2</h3>
+            <h2>General and useful python-scripts developed for Single-Board Computers</h2>
+            <h3>Tested on Lubuntu 14.04</h3>
         </div>
         <div class="button" align="center">
         
             <a href="https://github.com/Moduland/Orangetool/archive/master.zip" title="Download Source"><img src="images/download.png" height="128px" width="128px" alt="Download Source"></a>
             <a href="http://github.com/moduland/orangetool" target="_blank" title="Orangetool Github"><img src="images/github.png" alt="Orangetool Github"></a>
             <a href="http://moduland.github.io/Orangetool/doc" target="_blank" title="Orangetool Doc"><img src="images/doc.png" alt="Orangetool Doc"></a>
+            <a href="https://github.com/Moduland/Orangetool/blob/master/Supported_Device_List.md" target="_blank" title="Supported Device List"><img src="images/list.png" height="128px" width="128px" alt="Supported Device List"></a>
             <a href="http://www.moduland.ir" target="_blank" title="Moduland Website"><img src="images/moduland.jpg" height="128px" width="128px" alt="Moduland Website"></a>
         </div>
+        
+        
+        <div id="login-footer" class="abs">
+        <p> Copyright (c) 2017 Moduland Co</p>
+    </div>
     
     
     
diff --git a/style.css b/style.css
index 5363030..f8f05c7 100644
--- a/style.css
+++ b/style.css
@@ -1,20 +1,22 @@
 .logo{
     vertical-align: middle;
-    margin: 10 10 10 10;
-    padding: 40 10 10 10;
+    margin: auto;
+    padding: auto;;
 }
 
 body{
-    border: 8px;
-    border-color:darkorange;
     background-color:white;
-    border-style: groove;
     font-family: 'Baloo Bhaina', cursive;
+    margin: 0;
     
 }
+.moduland{
+    color: red;
+}
 
 .button{
-    padding-top: 60px
+    padding-top: 80px;
+    padding-bottom: 30px;
 }
 
 a{
@@ -38,4 +40,21 @@ hr{
     animation-duration: 4s;
     animation-iteration-count: infinite;
     position: relative;
+}
+
+
+#login-footer p{
+    vertical-align: center;
+    margin:auto;
+}
+#login-footer{
+    color: white;
+    width: 100%;
+    bottom: 0;
+    text-align: center;
+    background-color: #f2b56b;
+    position:fixed;
+    font-size: 17px;
+    margin-top: 100px;
+    height: auto;
 }
\ No newline at end of file

From 2555fdb0ca1e2952361a9427ce3daa72f9c01751 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 30 May 2017 02:51:19 +0430
Subject: [PATCH 074/104] og:image tag added

---
 index.html | 1 +
 1 file changed, 1 insertion(+)

diff --git a/index.html b/index.html
index 7626596..df2d2ce 100644
--- a/index.html
+++ b/index.html
@@ -6,6 +6,7 @@
         <meta property="og:title" content="Orangetool" />
         <meta property="og:site_name" content="http://moduland.github.io/Orangetool"/>
         <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
+        <meta property="og:image" content="http://www.orangetool.ir/images/orangetool.png" />
     </head>
     <body>
         	

From 4c05efefbc392c10ef1a626cc4508d3032999e13 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 30 May 2017 02:52:03 +0430
Subject: [PATCH 075/104] og:image tag added

---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index df2d2ce..d9a0a74 100644
--- a/index.html
+++ b/index.html
@@ -6,7 +6,7 @@
         <meta property="og:title" content="Orangetool" />
         <meta property="og:site_name" content="http://moduland.github.io/Orangetool"/>
         <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
-        <meta property="og:image" content="http://www.orangetool.ir/images/orangetool.png" />
+        <meta property="og:image" content="http://www.orangetool.ir/images/orangetool.jpg" />
     </head>
     <body>
         	

From 573cabf7d3bc386a749222c8d6e684e856349de9 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 30 May 2017 13:24:48 +0430
Subject: [PATCH 076/104] install gif added

---
 images/install.gif | Bin 0 -> 131866 bytes
 images/og-icon.png | Bin 0 -> 7306 bytes
 index.html         |   4 ++--
 3 files changed, 2 insertions(+), 2 deletions(-)
 create mode 100644 images/install.gif
 create mode 100644 images/og-icon.png

diff --git a/images/install.gif b/images/install.gif
new file mode 100644
index 0000000000000000000000000000000000000000..75207b8950c8bbe3dcead459d3c2976959e0fa8c
GIT binary patch
diff --git a/images/og-icon.png b/images/og-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..b994d82b78dd370a418aef7966c547bcd5792d32
GIT binary patch
diff --git a/index.html b/index.html
index d9a0a74..be16dbc 100644
--- a/index.html
+++ b/index.html
@@ -6,14 +6,14 @@
         <meta property="og:title" content="Orangetool" />
         <meta property="og:site_name" content="http://moduland.github.io/Orangetool"/>
         <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
-        <meta property="og:image" content="http://www.orangetool.ir/images/orangetool.jpg" />
+        <meta property="og:image" content="http://www.orangetool.ir/images/og-icon.png" />
     </head>
     <body>
         	
         <div class="logo"  align="center">
             <img src="images/orangetool.jpg" height="350px" width="500px">
             <br/>
-            <h3 class="moduland">Version 0.2</h3>
+            <h3 class="moduland"><a href="https://github.com/moduland/Orangetool/archive/v0.22.zip">Version 0.22</a></h3>
             <h2>General and useful python-scripts developed for Single-Board Computers</h2>
             <h3>Tested on Lubuntu 14.04</h3>
         </div>

From b48c531583b20fd87701f083a66070902d60e20f Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 15 Jul 2017 16:30:38 +0430
Subject: [PATCH 077/104] version added

---
 version/index.html | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 version/index.html

diff --git a/version/index.html b/version/index.html
new file mode 100644
index 0000000..a5f6313
--- /dev/null
+++ b/version/index.html
@@ -0,0 +1 @@
+0.22
\ No newline at end of file

From 915c33e437dd3fbc1245153a414ec85c316ff638 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 15 Jul 2017 17:12:04 +0430
Subject: [PATCH 078/104] docs : docs updated

---
 doc/index.html | 121 ++++++++++++++++++++++++++++---------------------
 1 file changed, 69 insertions(+), 52 deletions(-)

diff --git a/doc/index.html b/doc/index.html
index a7ecfa6..0f7b006 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -13,31 +13,8 @@
 <font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
     
 <tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%"><dl><dt><a name="-convert_bytes"><strong>convert_bytes</strong></a>(num)</dt><dd><tt>convert&nbsp;num&nbsp;to&nbsp;idiomatic&nbsp;byte&nbsp;unit<br>
-:param&nbsp;num:&nbsp;the&nbsp;input&nbsp;number.<br>
-:type&nbsp;num:int<br>
-:return:&nbsp;str<br>
-&gt;&gt;&gt;&nbsp;<a href="#-convert_bytes">convert_bytes</a>(200)<br>
-'200.0&nbsp;bytes'<br>
-&gt;&gt;&gt;&nbsp;<a href="#-convert_bytes">convert_bytes</a>(6000)<br>
-'5.9&nbsp;KB'<br>
-&gt;&gt;&gt;&nbsp;<a href="#-convert_bytes">convert_bytes</a>(80000)<br>
-'78.1&nbsp;KB'</tt></dd></dl>
- <dl><dt><a name="-freeup"><strong>freeup</strong></a>(DEBUG=False)</dt><dd><tt>To&nbsp;free&nbsp;pagecache,&nbsp;dentries&nbsp;and&nbsp;inodes:<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;Amount&nbsp;of&nbsp;freeuped&nbsp;ram&nbsp;as&nbsp;string&nbsp;and&nbsp;converted&nbsp;by&nbsp;<a href="#-convert_bytes">convert_bytes</a>()</tt></dd></dl>
- <dl><dt><a name="-get_temp"><strong>get_temp</strong></a>(Zone=0, DEBUG=False)</dt><dd><tt>This&nbsp;Function&nbsp;Wrote&nbsp;for&nbsp;Orangepi&nbsp;to&nbsp;read&nbsp;cpu&nbsp;temperature<br>
-:param&nbsp;DEBUG&nbsp;:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:param&nbsp;Zone&nbsp;:&nbsp;Thermal&nbsp;Zone&nbsp;Index<br>
-:type&nbsp;DEBUG:bool<br>
-:type&nbsp;Zone:int<br>
-:return:&nbsp;Board&nbsp;Temp&nbsp;as&nbsp;string&nbsp;in&nbsp;celsius</tt></dd></dl>
- <dl><dt><a name="-global_ip"><strong>global_ip</strong></a>(DEBUG=False)</dt><dd><tt>return&nbsp;ip&nbsp;with&nbsp;by&nbsp;<a href="http://ipinfo.io/ip">http://ipinfo.io/ip</a>&nbsp;api<br>
-:param&nbsp;DEBUG:Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;global&nbsp;ip&nbsp;as&nbsp;string</tt></dd></dl>
- <dl><dt><a name="-hdmi_off"><strong>hdmi_off</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;turn&nbsp;off&nbsp;hdmi&nbsp;port&nbsp;(need&nbsp;sudo&nbsp;-s)<br>
+<td width="100%">
+<dl><dt><a name="-hdmi_off"><strong>hdmi_off</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;turn&nbsp;off&nbsp;hdmi&nbsp;port&nbsp;(need&nbsp;sudo&nbsp;-s)<br>
 :param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
 :type&nbsp;DEBUG:bool<br>
 :return:&nbsp;bool</tt></dd></dl>
@@ -53,10 +30,11 @@
 :type&nbsp;h:int<br>
 :type&nbsp;DEBUG:bool<br>
 :return:&nbsp;bool</tt></dd></dl>
- <dl><dt><a name="-idletime"><strong>idletime</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;system&nbsp;idletime<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+    
+<dl><dt><a name="-global_ip"><strong>global_ip</strong></a>(DEBUG=False)</dt><dd><tt>return&nbsp;ip&nbsp;with&nbsp;by&nbsp;<a href="http://ipinfo.io/ip">http://ipinfo.io/ip</a>&nbsp;api<br>
+:param&nbsp;DEBUG:Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
 :type&nbsp;DEBUG:bool<br>
-:return:&nbsp;system&nbsp;idle&nbsp;as&nbsp;string</tt></dd></dl>
+:return:&nbsp;global&nbsp;ip&nbsp;as&nbsp;string</tt></dd></dl>
  <dl><dt><a name="-internet"><strong>internet</strong></a>(host='8.8.8.8', port=53, timeout=3)</dt><dd><tt>Check&nbsp;Internet&nbsp;Connections.<br>
 :param&nbsp;&nbsp;host:&nbsp;the&nbsp;host&nbsp;that&nbsp;check&nbsp;connection&nbsp;to<br>
 :param&nbsp;&nbsp;port:&nbsp;port&nbsp;that&nbsp;check&nbsp;connection&nbsp;with<br>
@@ -77,17 +55,6 @@
 :param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
 :type&nbsp;DEBUG:bool<br>
 :return:&nbsp;return&nbsp;mac&nbsp;addresses&nbsp;as&nbsp;dict&nbsp;with&nbsp;name&nbsp;as&nbsp;keys&nbsp;and&nbsp;mac&nbsp;addresses&nbsp;as&nbsp;values</tt></dd></dl>
- <dl><dt><a name="-mount"><strong>mount</strong></a>(device_name, mount_address=None, DEBUG=False)</dt><dd><tt>:param&nbsp;device_name:&nbsp;name&nbsp;of&nbsp;device&nbsp;for&nbsp;mounted&nbsp;example&nbsp;=&nbsp;sda1<br>
-:param&nbsp;mount_address:&nbsp;address&nbsp;for&nbsp;mounting&nbsp;device&nbsp;example&nbsp;=&nbsp;/mnt/usb&nbsp;,&nbsp;default&nbsp;value&nbsp;is&nbsp;None&nbsp;in&nbsp;this&nbsp;case&nbsp;function&nbsp;generate&nbsp;random&nbsp;number&nbsp;for&nbsp;mount&nbsp;folder&nbsp;name<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;device_name:str<br>
-:type&nbsp;mount_address:str<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;True&nbsp;if&nbsp;device&nbsp;mount&nbsp;correctly&nbsp;and&nbsp;False&nbsp;other&nbsp;wise</tt></dd></dl>
- <dl><dt><a name="-mount_status"><strong>mount_status</strong></a>(device_name, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;addresses&nbsp;of&nbsp;mounted&nbsp;memory&nbsp;devices&nbsp;in&nbsp;dev&nbsp;by&nbsp;device&nbsp;name<br>
-:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
-:type&nbsp;DEBUG:bool<br>
-:return:&nbsp;list&nbsp;of&nbsp;memory&nbsp;devices</tt></dd></dl>
  <dl><dt><a name="-ping"><strong>ping</strong></a>(ip, packet_number=3, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;ping&nbsp;ip&nbsp;and&nbsp;return&nbsp;True&nbsp;if&nbsp;this&nbsp;ip&nbsp;is&nbsp;available&nbsp;and&nbsp;False&nbsp;otherwise<br>
 :param&nbsp;ip:&nbsp;target&nbsp;ip<br>
 :param&nbsp;packet_number:&nbsp;numer&nbsp;of&nbsp;packet&nbsp;to&nbsp;size<br>
@@ -96,6 +63,29 @@
 :type&nbsp;packet_number:int<br>
 :type&nbsp;DEBUG:bool<br>
 :return:&nbsp;a&nbsp;boolean&nbsp;value&nbsp;(True&nbsp;if&nbsp;ip&nbsp;is&nbsp;available&nbsp;and&nbsp;False&nbsp;otherwise)</tt></dd></dl>
+ <dl><dt><a name="-set_ip"><strong>set_ip</strong></a>(ip, DEVICE='eth0', DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;set&nbsp;static&nbsp;ip&nbsp;in&nbsp;interfaces&nbsp;file&nbsp;(need&nbsp;sudo)<br>
+:param&nbsp;DEVICE:&nbsp;network&nbsp;device&nbsp;name<br>
+:type&nbsp;DEVICE:str<br>
+:param&nbsp;ip:&nbsp;static&nbsp;ip<br>
+:type&nbsp;ip&nbsp;:str<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;True&nbsp;in&nbsp;successful</tt></dd></dl>
+    
+<dl><dt><a name="-convert_bytes"><strong>convert_bytes</strong></a>(num)</dt><dd><tt>convert&nbsp;num&nbsp;to&nbsp;idiomatic&nbsp;byte&nbsp;unit<br>
+:param&nbsp;num:&nbsp;the&nbsp;input&nbsp;number.<br>
+:type&nbsp;num:int<br>
+:return:&nbsp;str<br>
+&gt;&gt;&gt;&nbsp;<a href="#-convert_bytes">convert_bytes</a>(200)<br>
+'200.0&nbsp;bytes'<br>
+&gt;&gt;&gt;&nbsp;<a href="#-convert_bytes">convert_bytes</a>(6000)<br>
+'5.9&nbsp;KB'<br>
+&gt;&gt;&gt;&nbsp;<a href="#-convert_bytes">convert_bytes</a>(80000)<br>
+'78.1&nbsp;KB'</tt></dd></dl>
+ <dl><dt><a name="-freeup"><strong>freeup</strong></a>(DEBUG=False)</dt><dd><tt>To&nbsp;free&nbsp;pagecache,&nbsp;dentries&nbsp;and&nbsp;inodes:<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;Amount&nbsp;of&nbsp;freeuped&nbsp;ram&nbsp;as&nbsp;string&nbsp;and&nbsp;converted&nbsp;by&nbsp;<a href="#-convert_bytes">convert_bytes</a>()</tt></dd></dl>
  <dl><dt><a name="-ram_free"><strong>ram_free</strong></a>(convert=True)</dt><dd><tt>Return&nbsp;how&nbsp;much&nbsp;ram&nbsp;is&nbsp;available<br>
 :param&nbsp;convert:&nbsp;Flag&nbsp;for&nbsp;convert&nbsp;mode&nbsp;(using&nbsp;of&nbsp;convert_byte&nbsp;function)<br>
 :type&nbsp;convert&nbsp;:&nbsp;bool<br>
@@ -110,27 +100,23 @@
 :param&nbsp;convert:&nbsp;Flag&nbsp;for&nbsp;convert&nbsp;mode&nbsp;(using&nbsp;of&nbsp;convert_byte&nbsp;function)<br>
 :type&nbsp;convert:bool<br>
 :return:&nbsp;how&nbsp;much&nbsp;ram&nbsp;is&nbsp;using&nbsp;as&nbsp;string</tt></dd></dl>
- <dl><dt><a name="-random_generator"><strong>random_generator</strong></a>(number)</dt></dl>
- <dl><dt><a name="-set_ip"><strong>set_ip</strong></a>(ip, DEVICE='eth0', DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;set&nbsp;static&nbsp;ip&nbsp;in&nbsp;interfaces&nbsp;file&nbsp;(need&nbsp;sudo)<br>
-:param&nbsp;DEVICE:&nbsp;network&nbsp;device&nbsp;name<br>
-:type&nbsp;DEVICE:str<br>
-:param&nbsp;ip:&nbsp;static&nbsp;ip<br>
-:type&nbsp;ip&nbsp;:str<br>
+    
+<dl><dt><a name="-mount"><strong>mount</strong></a>(device_name, mount_address=None, DEBUG=False)</dt><dd><tt>:param&nbsp;device_name:&nbsp;name&nbsp;of&nbsp;device&nbsp;for&nbsp;mounted&nbsp;example&nbsp;=&nbsp;sda1<br>
+:param&nbsp;mount_address:&nbsp;address&nbsp;for&nbsp;mounting&nbsp;device&nbsp;example&nbsp;=&nbsp;/mnt/usb&nbsp;,&nbsp;default&nbsp;value&nbsp;is&nbsp;None&nbsp;in&nbsp;this&nbsp;case&nbsp;function&nbsp;generate&nbsp;random&nbsp;number&nbsp;for&nbsp;mount&nbsp;folder&nbsp;name<br>
 :param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;device_name:str<br>
+:type&nbsp;mount_address:str<br>
 :type&nbsp;DEBUG:bool<br>
-:return:&nbsp;True&nbsp;in&nbsp;successful</tt></dd></dl>
- <dl><dt><a name="-sleep"><strong>sleep</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;is&nbsp;a&nbsp;shortcut&nbsp;for&nbsp;sleep&nbsp;(need&nbsp;sudo)<br>
+:return:&nbsp;True&nbsp;if&nbsp;device&nbsp;mount&nbsp;correctly&nbsp;and&nbsp;False&nbsp;other&nbsp;wise</tt></dd></dl>
+ <dl><dt><a name="-mount_status"><strong>mount_status</strong></a>(device_name, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;addresses&nbsp;of&nbsp;mounted&nbsp;memory&nbsp;devices&nbsp;in&nbsp;dev&nbsp;by&nbsp;device&nbsp;name<br>
 :param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
 :type&nbsp;DEBUG:bool<br>
-:return:&nbsp;None</tt></dd></dl>
+:return:&nbsp;list&nbsp;of&nbsp;memory&nbsp;devices</tt></dd></dl>
+ <dl><dt><a name="-random_generator"><strong>random_generator</strong></a>(number)</dt></dl>
  <dl><dt><a name="-storage_status"><strong>storage_status</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;all&nbsp;of&nbsp;the&nbsp;inserted&nbsp;memory&nbsp;and&nbsp;their&nbsp;status<br>
 :param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
 :type&nbsp;DEBUG:bool<br>
 :return:&nbsp;All&nbsp;of&nbsp;the&nbsp;inserted&nbsp;memory&nbsp;and&nbsp;their&nbsp;status&nbsp;as&nbsp;dictionary&nbsp;(&nbsp;device&nbsp;name&nbsp;as&nbsp;keys&nbsp;and&nbsp;mount&nbsp;status&nbsp;(mounted_addresses&nbsp;as&nbsp;list&nbsp;and&nbsp;u&nbsp;--&gt;&nbsp;unmounted)&nbsp;as&nbsp;values</tt></dd></dl>
- <dl><dt><a name="-time_convert"><strong>time_convert</strong></a>(input_string)</dt><dd><tt>This&nbsp;function&nbsp;convert&nbsp;input_string&nbsp;from&nbsp;uptime&nbsp;from&nbsp;sec&nbsp;to&nbsp;DD,HH,MM,SS&nbsp;Format<br>
-:param&nbsp;input_string:&nbsp;input&nbsp;time&nbsp;string&nbsp;&nbsp;in&nbsp;sec<br>
-:type&nbsp;input_string:str<br>
-:return:&nbsp;converted&nbsp;time&nbsp;as&nbsp;string</tt></dd></dl>
  <dl><dt><a name="-unmount"><strong>unmount</strong></a>(ADDRESS, DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;unmount&nbsp;memory&nbsp;devices&nbsp;by&nbsp;addresses<br>
 :param&nbsp;ADDRESS:&nbsp;address&nbsp;of&nbsp;that&nbsp;device&nbsp;mount&nbsp;on<br>
 :type&nbsp;ADDRESS:str<br>
@@ -141,6 +127,37 @@
 :param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
 :type&nbsp;DEBUG:bool<br>
 :return:&nbsp;return&nbsp;True&nbsp;if&nbsp;all&nbsp;of&nbsp;the&nbsp;mounted&nbsp;devices&nbsp;unmount&nbsp;correctly</tt></dd></dl>
+    
+<dl><dt><a name="-check_update"><strong>check_update</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;check&nbsp;orangetool&nbsp;site&nbsp;for&nbsp;newversion<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;True&nbsp;if&nbsp;new&nbsp;version&nbsp;is&nbsp;available</tt></dd></dl>
+ <dl><dt><a name="-get_temp"><strong>get_temp</strong></a>(Zone=0, DEBUG=False)</dt><dd><tt>This&nbsp;Function&nbsp;Wrote&nbsp;for&nbsp;Orangepi&nbsp;to&nbsp;read&nbsp;cpu&nbsp;temperature<br>
+:param&nbsp;DEBUG&nbsp;:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:param&nbsp;Zone&nbsp;:&nbsp;Thermal&nbsp;Zone&nbsp;Index<br>
+:type&nbsp;DEBUG:bool<br>
+:type&nbsp;Zone:int<br>
+:return:&nbsp;Board&nbsp;Temp&nbsp;as&nbsp;string&nbsp;in&nbsp;celsius</tt></dd></dl>
+ <dl><dt><a name="-halt"><strong>halt</strong></a>(DEBUG=False)</dt><dd><tt>his&nbsp;function&nbsp;is&nbsp;a&nbsp;shortcut&nbsp;for&nbsp;poweroff&nbsp;(need&nbsp;sudo)<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;None</tt></dd></dl>
+ <dl><dt><a name="-idletime"><strong>idletime</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;system&nbsp;idletime<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;system&nbsp;idle&nbsp;as&nbsp;string</tt></dd></dl>
+ <dl><dt><a name="-restart"><strong>restart</strong></a>(DEBUG=False)</dt><dd><tt>his&nbsp;function&nbsp;is&nbsp;a&nbsp;shortcut&nbsp;for&nbsp;reboot&nbsp;(need&nbsp;sudo)<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;None</tt></dd></dl>
+ <dl><dt><a name="-sleep"><strong>sleep</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;is&nbsp;a&nbsp;shortcut&nbsp;for&nbsp;sleep&nbsp;(need&nbsp;sudo)<br>
+:param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
+:type&nbsp;DEBUG:bool<br>
+:return:&nbsp;None</tt></dd></dl>
+ <dl><dt><a name="-time_convert"><strong>time_convert</strong></a>(input_string)</dt><dd><tt>This&nbsp;function&nbsp;convert&nbsp;input_string&nbsp;from&nbsp;uptime&nbsp;from&nbsp;sec&nbsp;to&nbsp;DD,HH,MM,SS&nbsp;Format<br>
+:param&nbsp;input_string:&nbsp;input&nbsp;time&nbsp;string&nbsp;&nbsp;in&nbsp;sec<br>
+:type&nbsp;input_string:str<br>
+:return:&nbsp;converted&nbsp;time&nbsp;as&nbsp;string</tt></dd></dl>
  <dl><dt><a name="-uptime"><strong>uptime</strong></a>(DEBUG=False)</dt><dd><tt>This&nbsp;function&nbsp;return&nbsp;system&nbsp;uptime<br>
 :param&nbsp;DEBUG:&nbsp;Flag&nbsp;for&nbsp;using&nbsp;Debug&nbsp;mode<br>
 :type&nbsp;DEBUG:bool<br>

From 8a33dd394d7180b5d7c0378122409fb5eb2b4c1a Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 15 Jul 2017 17:15:11 +0430
Subject: [PATCH 079/104] website updated

---
 index.html  |  2 +-
 robots.txt  |  3 +++
 sitemap.xml | 14 ++++++++++++++
 3 files changed, 18 insertions(+), 1 deletion(-)
 create mode 100644 robots.txt
 create mode 100644 sitemap.xml

diff --git a/index.html b/index.html
index be16dbc..61e2faa 100644
--- a/index.html
+++ b/index.html
@@ -13,7 +13,7 @@
         <div class="logo"  align="center">
             <img src="images/orangetool.jpg" height="350px" width="500px">
             <br/>
-            <h3 class="moduland"><a href="https://github.com/moduland/Orangetool/archive/v0.22.zip">Version 0.22</a></h3>
+            <h3 class="moduland"><a href="https://github.com/moduland/Orangetool/archive/v0.23.zip">Version 0.23</a></h3>
             <h2>General and useful python-scripts developed for Single-Board Computers</h2>
             <h3>Tested on Lubuntu 14.04</h3>
         </div>
diff --git a/robots.txt b/robots.txt
new file mode 100644
index 0000000..60ed3d0
--- /dev/null
+++ b/robots.txt
@@ -0,0 +1,3 @@
+User-agent: *
+Disallow: 
+
diff --git a/sitemap.xml b/sitemap.xml
new file mode 100644
index 0000000..c57d365
--- /dev/null
+++ b/sitemap.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<urlset
+      xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
+            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
+<!-- created with Free Online Sitemap Generator www.xml-sitemaps.com -->
+
+<url>
+  <loc>http://www.orangetool.ir/</loc>
+  <lastmod>2017-07-15T12:42:24+00:00</lastmod>
+  <changefreq>monthly</changefreq>
+</url>
+</urlset>
\ No newline at end of file

From 995b98afb452361788afe9e61ee0f3e8975f5dd1 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Mon, 28 Aug 2017 23:21:45 +0430
Subject: [PATCH 080/104] website updated

---
 css/style.css                      |  241 ++++++
 css/sweetalert.css                 |  935 +++++++++++++++++++++
 css/themes/facebook/facebook.css   |  111 +++
 css/themes/facebook/facebook.scss  |  146 ++++
 css/themes/google/google.css       |  115 +++
 css/themes/google/google.scss      |  148 ++++
 css/themes/twitter/twitter.css     |  140 ++++
 css/themes/twitter/twitter.scss    |  177 ++++
 donate.html                        |   63 ++
 images/Bitcoin-Donation-Banner.jpg |  Bin 0 -> 141831 bytes
 images/donate-button-blue.jpg      |  Bin 0 -> 14212 bytes
 images/donate.jpg                  |  Bin 0 -> 55439 bytes
 images/payping-puzzley.png         |  Bin 0 -> 39093 bytes
 index.html                         |   16 +-
 js/script.js                       |   21 +
 js/sweetalert-dev.js               | 1253 ++++++++++++++++++++++++++++
 js/sweetalert.min.js               |    1 +
 style.css                          |   60 --
 18 files changed, 3362 insertions(+), 65 deletions(-)
 create mode 100644 css/style.css
 create mode 100644 css/sweetalert.css
 create mode 100644 css/themes/facebook/facebook.css
 create mode 100644 css/themes/facebook/facebook.scss
 create mode 100644 css/themes/google/google.css
 create mode 100644 css/themes/google/google.scss
 create mode 100644 css/themes/twitter/twitter.css
 create mode 100644 css/themes/twitter/twitter.scss
 create mode 100644 donate.html
 create mode 100644 images/Bitcoin-Donation-Banner.jpg
 create mode 100644 images/donate-button-blue.jpg
 create mode 100644 images/donate.jpg
 create mode 100644 images/payping-puzzley.png
 create mode 100644 js/script.js
 create mode 100644 js/sweetalert-dev.js
 create mode 100644 js/sweetalert.min.js
 delete mode 100644 style.css

diff --git a/css/style.css b/css/style.css
new file mode 100644
index 0000000..0dc7f24
--- /dev/null
+++ b/css/style.css
@@ -0,0 +1,241 @@
+.logo{
+    vertical-align: middle;
+    margin: auto;
+    padding: auto;;
+}
+
+body{
+    background-color:white;
+    font-family: 'Baloo Bhaina', cursive;
+    margin: 0;
+    
+}
+
+.orange_image{
+    height: 350px;
+    width: 500px;
+}
+
+.moduland{
+    color: red;
+}
+
+.button{
+    padding-top: 80px;
+    padding-bottom: 30px;
+}
+
+a{
+  opacity: 1; 
+  transition: opacity 3s;
+  -webkit-transition: opacity 3s;
+}
+
+a:hover{
+    opacity: 0.3;
+}
+hr{
+    border-color: darkorange;
+    border-style:double;
+}
+.fork-pc{
+    top: 0;
+    border: 0;
+    left: 0;
+    position: absolute;
+    animation-duration: 4s;
+    animation-iteration-count: infinite;
+    position: relative;
+}
+
+
+#login-footer p{
+    font-family: 'Baloo Bhaina', cursive;
+    vertical-align: center;
+    margin:auto;
+}
+#login-footer{
+    color: white;
+    width: 100%;
+    bottom: 0;
+    text-align: center;
+    background-color: #f2b56b;
+    position:fixed;
+    font-size: 17px;
+    margin-top: 100px;
+    height: auto;
+}
+
+.header{
+    text-align: center;
+}
+.header h1{
+    display: inline-block;
+    margin-right: 10px;
+    padding: 10px;
+    border-radius: 40px;
+}
+
+.help {
+    width: 80%;
+    margin: auto;
+    font-size: 37px;
+    text-align: justify;
+    font-size-adjust: auto;
+    hyphens: auto;
+    
+}
+.main_text{
+    width: 80%;
+    margin: auto;
+    font-size: 37px;
+    text-align: center;
+    font-size-adjust: auto;
+    hyphens: auto;
+}
+.help h3{
+    text-align: center;
+}
+
+
+.button_section{
+    text-align: center;
+}
+
+button {
+    display: inline;
+    margin: 7px;
+    margin-bottom: 5px;
+    position: relative;
+    height: 45px;
+    width: 170px;
+    padding: 5px 5px;
+    font-weight: 700;
+    font-size: 15px;
+    letter-spacing: 2px;
+    color: #383736;
+    border: 2px #383736 solid;
+    border-radius: 4px;
+    text-transform: uppercase;
+    outline: 0;
+    overflow: hidden;
+    background: none;
+    z-index: 1;
+    cursor: pointer;
+    transition: 0.08s ease-in;
+    -o-transition: 0.08s ease-in;
+    -ms-transition: 0.08s ease-in;
+    -moz-transition: 0.08s ease-in;
+    -webkit-transition: 0.08s ease-in;
+}
+
+#back a:hover {
+    cursor: pointer;
+}
+
+.donate_image{
+    width: 80%;
+    height: auto;
+}   
+
+
+.reset {
+    -webkit-transition: all 150ms cubic-bezier(0.445, 0.050, 0.550, 0.950);
+}
+.reset:before {
+    position: absolute;
+    content: "";
+    background: url(https://f.cl.ly/items/3H3A0D1N281a2T280F3o/heist.svg) no-repeat center center;
+    width: 100%;
+    height: 100%;
+    top: 0;
+    left: 0;
+    z-index: -1;
+    opacity: 0;
+    -webkit-transition: all 500ms cubic-bezier(0.230, 1.000, 0.320, 1.000);
+}
+.reset:after {
+    content: "";
+    position: absolute;
+    background: #202026;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    top: 100%;
+    z-index: -2;
+    -webkit-transition: all 500ms cubic-bezier(0.230, 1.000, 0.320, 1.000);
+}
+.reset:hover {
+    color: white;
+}
+.reset:hover:before {
+    opacity: .8;
+}
+.reset:hover:after {
+    top: 0;
+}
+#login-footer p {
+    vertical-align: center;
+    margin: auto;
+    color: #fafafa;
+}
+#login-footer p {
+    color: #fafafa;
+}
+#login-footer {
+    background: transparent;
+    width: 100%;
+    bottom: 0;
+    text-align: center;
+    background-color: #202026;
+    position: relative;
+    font-size: 17px;
+    margin-right: 0px;
+    height: auto;
+    width: 100%;
+    margin-top: 25px;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    font-family: "sacramento";
+    font-size: 25px;
+}
+
+@media all and (max-width: 1024px) {
+  #login-footer {
+        position: relative;
+        display: none;
+        font-size: 30px;
+        height: auto;
+    }
+    #login-footer p {
+        margin: auto;
+        padding: auto;
+    }
+.donate_image{
+    width: 90%;
+    height: 50%;
+}
+    .orange_image{
+    width: 90%;
+    height: 50%;
+}
+
+.help {
+        width: 95%;
+        font-size: 40px;
+        text-align: center;
+        hyphens: auto;
+    }
+
+    .main_text{
+           width: 95%;
+        font-size: 40px;
+        text-align: center;
+        hyphens: auto;
+    }
+button{
+        width: 90%;
+        margin-bottom: 20px;
+    }
+    
+}
\ No newline at end of file
diff --git a/css/sweetalert.css b/css/sweetalert.css
new file mode 100644
index 0000000..f2af7e3
--- /dev/null
+++ b/css/sweetalert.css
@@ -0,0 +1,935 @@
+body.stop-scrolling {
+  height: 100%;
+  overflow: hidden; }
+
+.sweet-overlay {
+  background-color: black;
+  /* IE8 */
+  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
+  /* IE8 */
+  background-color: rgba(0, 0, 0, 0.4);
+  position: fixed;
+  left: 0;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  display: none;
+  z-index: 10000; }
+
+.sweet-alert {
+  background-color: white;
+  font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+  width: 478px;
+  padding: 17px;
+  border-radius: 5px;
+  text-align: center;
+  position: fixed;
+  left: 50%;
+  top: 50%;
+  margin-left: -256px;
+  margin-top: -200px;
+  overflow: hidden;
+  display: none;
+  z-index: 99999; }
+  @media all and (max-width: 540px) {
+    .sweet-alert {
+      width: auto;
+      margin-left: 0;
+      margin-right: 0;
+      left: 15px;
+      right: 15px; } }
+  .sweet-alert h2 {
+    color: #575757;
+    font-size: 30px;
+    text-align: center;
+    font-weight: 600;
+    text-transform: none;
+    position: relative;
+    margin: 25px 0;
+    padding: 0;
+    line-height: 40px;
+    display: block; }
+  .sweet-alert p {
+    color: #797979;
+    font-size: 16px;
+    text-align: center;
+    font-weight: 300;
+    position: relative;
+    text-align: inherit;
+    float: none;
+    margin: 0;
+    padding: 0;
+    line-height: normal; }
+  .sweet-alert fieldset {
+    border: none;
+    position: relative; }
+  .sweet-alert .sa-error-container {
+    background-color: #f1f1f1;
+    margin-left: -17px;
+    margin-right: -17px;
+    overflow: hidden;
+    padding: 0 10px;
+    max-height: 0;
+    webkit-transition: padding 0.15s, max-height 0.15s;
+    transition: padding 0.15s, max-height 0.15s; }
+    .sweet-alert .sa-error-container.show {
+      padding: 10px 0;
+      max-height: 100px;
+      webkit-transition: padding 0.2s, max-height 0.2s;
+      transition: padding 0.25s, max-height 0.25s; }
+    .sweet-alert .sa-error-container .icon {
+      display: inline-block;
+      width: 24px;
+      height: 24px;
+      border-radius: 50%;
+      background-color: #ea7d7d;
+      color: white;
+      line-height: 24px;
+      text-align: center;
+      margin-right: 3px; }
+    .sweet-alert .sa-error-container p {
+      display: inline-block; }
+  .sweet-alert .sa-input-error {
+    position: absolute;
+    top: 29px;
+    right: 26px;
+    width: 20px;
+    height: 20px;
+    opacity: 0;
+    -webkit-transform: scale(0.5);
+    transform: scale(0.5);
+    -webkit-transform-origin: 50% 50%;
+    transform-origin: 50% 50%;
+    -webkit-transition: all 0.1s;
+    transition: all 0.1s; }
+    .sweet-alert .sa-input-error::before, .sweet-alert .sa-input-error::after {
+      content: "";
+      width: 20px;
+      height: 6px;
+      background-color: #f06e57;
+      border-radius: 3px;
+      position: absolute;
+      top: 50%;
+      margin-top: -4px;
+      left: 50%;
+      margin-left: -9px; }
+    .sweet-alert .sa-input-error::before {
+      -webkit-transform: rotate(-45deg);
+      transform: rotate(-45deg); }
+    .sweet-alert .sa-input-error::after {
+      -webkit-transform: rotate(45deg);
+      transform: rotate(45deg); }
+    .sweet-alert .sa-input-error.show {
+      opacity: 1;
+      -webkit-transform: scale(1);
+      transform: scale(1); }
+  .sweet-alert input {
+    width: 100%;
+    box-sizing: border-box;
+    border-radius: 3px;
+    border: 1px solid #d7d7d7;
+    height: 43px;
+    margin-top: 10px;
+    margin-bottom: 17px;
+    font-size: 18px;
+    box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.06);
+    padding: 0 12px;
+    display: none;
+    -webkit-transition: all 0.3s;
+    transition: all 0.3s; }
+    .sweet-alert input:focus {
+      outline: none;
+      box-shadow: 0px 0px 3px #c4e6f5;
+      border: 1px solid #b4dbed; }
+      .sweet-alert input:focus::-moz-placeholder {
+        transition: opacity 0.3s 0.03s ease;
+        opacity: 0.5; }
+      .sweet-alert input:focus:-ms-input-placeholder {
+        transition: opacity 0.3s 0.03s ease;
+        opacity: 0.5; }
+      .sweet-alert input:focus::-webkit-input-placeholder {
+        transition: opacity 0.3s 0.03s ease;
+        opacity: 0.5; }
+    .sweet-alert input::-moz-placeholder {
+      color: #bdbdbd; }
+    .sweet-alert input::-ms-clear {
+      display: none; }
+    .sweet-alert input:-ms-input-placeholder {
+      color: #bdbdbd; }
+    .sweet-alert input::-webkit-input-placeholder {
+      color: #bdbdbd; }
+  .sweet-alert.show-input input {
+    display: block; }
+  .sweet-alert .sa-confirm-button-container {
+    display: inline-block;
+    position: relative; }
+  .sweet-alert .la-ball-fall {
+    position: absolute;
+    left: 50%;
+    top: 50%;
+    margin-left: -27px;
+    margin-top: 4px;
+    opacity: 0;
+    visibility: hidden; }
+  .sweet-alert button {
+    background-color: #8CD4F5;
+    color: white;
+    border: none;
+    box-shadow: none;
+    font-size: 17px;
+    font-weight: 500;
+    -webkit-border-radius: 4px;
+    border-radius: 5px;
+    padding: 10px 32px;
+    margin: 26px 5px 0 5px;
+    cursor: pointer; }
+    .sweet-alert button:focus {
+      outline: none;
+      box-shadow: 0 0 2px rgba(128, 179, 235, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.05); }
+    .sweet-alert button:hover {
+      background-color: #7ecff4; }
+    .sweet-alert button:active {
+      background-color: #5dc2f1; }
+    .sweet-alert button.cancel {
+      background-color: #C1C1C1; }
+      .sweet-alert button.cancel:hover {
+        background-color: #b9b9b9; }
+      .sweet-alert button.cancel:active {
+        background-color: #a8a8a8; }
+      .sweet-alert button.cancel:focus {
+        box-shadow: rgba(197, 205, 211, 0.8) 0px 0px 2px, rgba(0, 0, 0, 0.0470588) 0px 0px 0px 1px inset !important; }
+    .sweet-alert button[disabled] {
+      opacity: .6;
+      cursor: default; }
+    .sweet-alert button.confirm[disabled] {
+      color: transparent; }
+      .sweet-alert button.confirm[disabled] ~ .la-ball-fall {
+        opacity: 1;
+        visibility: visible;
+        transition-delay: 0s; }
+    .sweet-alert button::-moz-focus-inner {
+      border: 0; }
+  .sweet-alert[data-has-cancel-button=false] button {
+    box-shadow: none !important; }
+  .sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] {
+    padding-bottom: 40px; }
+  .sweet-alert .sa-icon {
+    width: 80px;
+    height: 80px;
+    border: 4px solid gray;
+    -webkit-border-radius: 40px;
+    border-radius: 40px;
+    border-radius: 50%;
+    margin: 20px auto;
+    padding: 0;
+    position: relative;
+    box-sizing: content-box; }
+    .sweet-alert .sa-icon.sa-error {
+      border-color: #F27474; }
+      .sweet-alert .sa-icon.sa-error .sa-x-mark {
+        position: relative;
+        display: block; }
+      .sweet-alert .sa-icon.sa-error .sa-line {
+        position: absolute;
+        height: 5px;
+        width: 47px;
+        background-color: #F27474;
+        display: block;
+        top: 37px;
+        border-radius: 2px; }
+        .sweet-alert .sa-icon.sa-error .sa-line.sa-left {
+          -webkit-transform: rotate(45deg);
+          transform: rotate(45deg);
+          left: 17px; }
+        .sweet-alert .sa-icon.sa-error .sa-line.sa-right {
+          -webkit-transform: rotate(-45deg);
+          transform: rotate(-45deg);
+          right: 16px; }
+    .sweet-alert .sa-icon.sa-warning {
+      border-color: #F8BB86; }
+      .sweet-alert .sa-icon.sa-warning .sa-body {
+        position: absolute;
+        width: 5px;
+        height: 47px;
+        left: 50%;
+        top: 10px;
+        -webkit-border-radius: 2px;
+        border-radius: 2px;
+        margin-left: -2px;
+        background-color: #F8BB86; }
+      .sweet-alert .sa-icon.sa-warning .sa-dot {
+        position: absolute;
+        width: 7px;
+        height: 7px;
+        -webkit-border-radius: 50%;
+        border-radius: 50%;
+        margin-left: -3px;
+        left: 50%;
+        bottom: 10px;
+        background-color: #F8BB86; }
+    .sweet-alert .sa-icon.sa-info {
+      border-color: #C9DAE1; }
+      .sweet-alert .sa-icon.sa-info::before {
+        content: "";
+        position: absolute;
+        width: 5px;
+        height: 29px;
+        left: 50%;
+        bottom: 17px;
+        border-radius: 2px;
+        margin-left: -2px;
+        background-color: #C9DAE1; }
+      .sweet-alert .sa-icon.sa-info::after {
+        content: "";
+        position: absolute;
+        width: 7px;
+        height: 7px;
+        border-radius: 50%;
+        margin-left: -3px;
+        top: 19px;
+        background-color: #C9DAE1;
+        left: 50%; }
+    .sweet-alert .sa-icon.sa-success {
+      border-color: #A5DC86; }
+      .sweet-alert .sa-icon.sa-success::before, .sweet-alert .sa-icon.sa-success::after {
+        content: '';
+        -webkit-border-radius: 40px;
+        border-radius: 40px;
+        border-radius: 50%;
+        position: absolute;
+        width: 60px;
+        height: 120px;
+        background: white;
+        -webkit-transform: rotate(45deg);
+        transform: rotate(45deg); }
+      .sweet-alert .sa-icon.sa-success::before {
+        -webkit-border-radius: 120px 0 0 120px;
+        border-radius: 120px 0 0 120px;
+        top: -7px;
+        left: -33px;
+        -webkit-transform: rotate(-45deg);
+        transform: rotate(-45deg);
+        -webkit-transform-origin: 60px 60px;
+        transform-origin: 60px 60px; }
+      .sweet-alert .sa-icon.sa-success::after {
+        -webkit-border-radius: 0 120px 120px 0;
+        border-radius: 0 120px 120px 0;
+        top: -11px;
+        left: 30px;
+        -webkit-transform: rotate(-45deg);
+        transform: rotate(-45deg);
+        -webkit-transform-origin: 0px 60px;
+        transform-origin: 0px 60px; }
+      .sweet-alert .sa-icon.sa-success .sa-placeholder {
+        width: 80px;
+        height: 80px;
+        border: 4px solid rgba(165, 220, 134, 0.2);
+        -webkit-border-radius: 40px;
+        border-radius: 40px;
+        border-radius: 50%;
+        box-sizing: content-box;
+        position: absolute;
+        left: -4px;
+        top: -4px;
+        z-index: 2; }
+      .sweet-alert .sa-icon.sa-success .sa-fix {
+        width: 5px;
+        height: 90px;
+        background-color: white;
+        position: absolute;
+        left: 28px;
+        top: 8px;
+        z-index: 1;
+        -webkit-transform: rotate(-45deg);
+        transform: rotate(-45deg); }
+      .sweet-alert .sa-icon.sa-success .sa-line {
+        height: 5px;
+        background-color: #A5DC86;
+        display: block;
+        border-radius: 2px;
+        position: absolute;
+        z-index: 2; }
+        .sweet-alert .sa-icon.sa-success .sa-line.sa-tip {
+          width: 25px;
+          left: 14px;
+          top: 46px;
+          -webkit-transform: rotate(45deg);
+          transform: rotate(45deg); }
+        .sweet-alert .sa-icon.sa-success .sa-line.sa-long {
+          width: 47px;
+          right: 8px;
+          top: 38px;
+          -webkit-transform: rotate(-45deg);
+          transform: rotate(-45deg); }
+    .sweet-alert .sa-icon.sa-custom {
+      background-size: contain;
+      border-radius: 0;
+      border: none;
+      background-position: center center;
+      background-repeat: no-repeat; }
+
+/*
+ * Animations
+ */
+@-webkit-keyframes showSweetAlert {
+  0% {
+    transform: scale(0.7);
+    -webkit-transform: scale(0.7); }
+  45% {
+    transform: scale(1.05);
+    -webkit-transform: scale(1.05); }
+  80% {
+    transform: scale(0.95);
+    -webkit-transform: scale(0.95); }
+  100% {
+    transform: scale(1);
+    -webkit-transform: scale(1); } }
+
+@keyframes showSweetAlert {
+  0% {
+    transform: scale(0.7);
+    -webkit-transform: scale(0.7); }
+  45% {
+    transform: scale(1.05);
+    -webkit-transform: scale(1.05); }
+  80% {
+    transform: scale(0.95);
+    -webkit-transform: scale(0.95); }
+  100% {
+    transform: scale(1);
+    -webkit-transform: scale(1); } }
+
+@-webkit-keyframes hideSweetAlert {
+  0% {
+    transform: scale(1);
+    -webkit-transform: scale(1); }
+  100% {
+    transform: scale(0.5);
+    -webkit-transform: scale(0.5); } }
+
+@keyframes hideSweetAlert {
+  0% {
+    transform: scale(1);
+    -webkit-transform: scale(1); }
+  100% {
+    transform: scale(0.5);
+    -webkit-transform: scale(0.5); } }
+
+@-webkit-keyframes slideFromTop {
+  0% {
+    top: 0%; }
+  100% {
+    top: 50%; } }
+
+@keyframes slideFromTop {
+  0% {
+    top: 0%; }
+  100% {
+    top: 50%; } }
+
+@-webkit-keyframes slideToTop {
+  0% {
+    top: 50%; }
+  100% {
+    top: 0%; } }
+
+@keyframes slideToTop {
+  0% {
+    top: 50%; }
+  100% {
+    top: 0%; } }
+
+@-webkit-keyframes slideFromBottom {
+  0% {
+    top: 70%; }
+  100% {
+    top: 50%; } }
+
+@keyframes slideFromBottom {
+  0% {
+    top: 70%; }
+  100% {
+    top: 50%; } }
+
+@-webkit-keyframes slideToBottom {
+  0% {
+    top: 50%; }
+  100% {
+    top: 70%; } }
+
+@keyframes slideToBottom {
+  0% {
+    top: 50%; }
+  100% {
+    top: 70%; } }
+
+.showSweetAlert[data-animation=pop] {
+  -webkit-animation: showSweetAlert 0.3s;
+  animation: showSweetAlert 0.3s; }
+
+.showSweetAlert[data-animation=none] {
+  -webkit-animation: none;
+  animation: none; }
+
+.showSweetAlert[data-animation=slide-from-top] {
+  -webkit-animation: slideFromTop 0.3s;
+  animation: slideFromTop 0.3s; }
+
+.showSweetAlert[data-animation=slide-from-bottom] {
+  -webkit-animation: slideFromBottom 0.3s;
+  animation: slideFromBottom 0.3s; }
+
+.hideSweetAlert[data-animation=pop] {
+  -webkit-animation: hideSweetAlert 0.2s;
+  animation: hideSweetAlert 0.2s; }
+
+.hideSweetAlert[data-animation=none] {
+  -webkit-animation: none;
+  animation: none; }
+
+.hideSweetAlert[data-animation=slide-from-top] {
+  -webkit-animation: slideToTop 0.4s;
+  animation: slideToTop 0.4s; }
+
+.hideSweetAlert[data-animation=slide-from-bottom] {
+  -webkit-animation: slideToBottom 0.3s;
+  animation: slideToBottom 0.3s; }
+
+@-webkit-keyframes animateSuccessTip {
+  0% {
+    width: 0;
+    left: 1px;
+    top: 19px; }
+  54% {
+    width: 0;
+    left: 1px;
+    top: 19px; }
+  70% {
+    width: 50px;
+    left: -8px;
+    top: 37px; }
+  84% {
+    width: 17px;
+    left: 21px;
+    top: 48px; }
+  100% {
+    width: 25px;
+    left: 14px;
+    top: 45px; } }
+
+@keyframes animateSuccessTip {
+  0% {
+    width: 0;
+    left: 1px;
+    top: 19px; }
+  54% {
+    width: 0;
+    left: 1px;
+    top: 19px; }
+  70% {
+    width: 50px;
+    left: -8px;
+    top: 37px; }
+  84% {
+    width: 17px;
+    left: 21px;
+    top: 48px; }
+  100% {
+    width: 25px;
+    left: 14px;
+    top: 45px; } }
+
+@-webkit-keyframes animateSuccessLong {
+  0% {
+    width: 0;
+    right: 46px;
+    top: 54px; }
+  65% {
+    width: 0;
+    right: 46px;
+    top: 54px; }
+  84% {
+    width: 55px;
+    right: 0px;
+    top: 35px; }
+  100% {
+    width: 47px;
+    right: 8px;
+    top: 38px; } }
+
+@keyframes animateSuccessLong {
+  0% {
+    width: 0;
+    right: 46px;
+    top: 54px; }
+  65% {
+    width: 0;
+    right: 46px;
+    top: 54px; }
+  84% {
+    width: 55px;
+    right: 0px;
+    top: 35px; }
+  100% {
+    width: 47px;
+    right: 8px;
+    top: 38px; } }
+
+@-webkit-keyframes rotatePlaceholder {
+  0% {
+    transform: rotate(-45deg);
+    -webkit-transform: rotate(-45deg); }
+  5% {
+    transform: rotate(-45deg);
+    -webkit-transform: rotate(-45deg); }
+  12% {
+    transform: rotate(-405deg);
+    -webkit-transform: rotate(-405deg); }
+  100% {
+    transform: rotate(-405deg);
+    -webkit-transform: rotate(-405deg); } }
+
+@keyframes rotatePlaceholder {
+  0% {
+    transform: rotate(-45deg);
+    -webkit-transform: rotate(-45deg); }
+  5% {
+    transform: rotate(-45deg);
+    -webkit-transform: rotate(-45deg); }
+  12% {
+    transform: rotate(-405deg);
+    -webkit-transform: rotate(-405deg); }
+  100% {
+    transform: rotate(-405deg);
+    -webkit-transform: rotate(-405deg); } }
+
+.animateSuccessTip {
+  -webkit-animation: animateSuccessTip 0.75s;
+  animation: animateSuccessTip 0.75s; }
+
+.animateSuccessLong {
+  -webkit-animation: animateSuccessLong 0.75s;
+  animation: animateSuccessLong 0.75s; }
+
+.sa-icon.sa-success.animate::after {
+  -webkit-animation: rotatePlaceholder 4.25s ease-in;
+  animation: rotatePlaceholder 4.25s ease-in; }
+
+@-webkit-keyframes animateErrorIcon {
+  0% {
+    transform: rotateX(100deg);
+    -webkit-transform: rotateX(100deg);
+    opacity: 0; }
+  100% {
+    transform: rotateX(0deg);
+    -webkit-transform: rotateX(0deg);
+    opacity: 1; } }
+
+@keyframes animateErrorIcon {
+  0% {
+    transform: rotateX(100deg);
+    -webkit-transform: rotateX(100deg);
+    opacity: 0; }
+  100% {
+    transform: rotateX(0deg);
+    -webkit-transform: rotateX(0deg);
+    opacity: 1; } }
+
+.animateErrorIcon {
+  -webkit-animation: animateErrorIcon 0.5s;
+  animation: animateErrorIcon 0.5s; }
+
+@-webkit-keyframes animateXMark {
+  0% {
+    transform: scale(0.4);
+    -webkit-transform: scale(0.4);
+    margin-top: 26px;
+    opacity: 0; }
+  50% {
+    transform: scale(0.4);
+    -webkit-transform: scale(0.4);
+    margin-top: 26px;
+    opacity: 0; }
+  80% {
+    transform: scale(1.15);
+    -webkit-transform: scale(1.15);
+    margin-top: -6px; }
+  100% {
+    transform: scale(1);
+    -webkit-transform: scale(1);
+    margin-top: 0;
+    opacity: 1; } }
+
+@keyframes animateXMark {
+  0% {
+    transform: scale(0.4);
+    -webkit-transform: scale(0.4);
+    margin-top: 26px;
+    opacity: 0; }
+  50% {
+    transform: scale(0.4);
+    -webkit-transform: scale(0.4);
+    margin-top: 26px;
+    opacity: 0; }
+  80% {
+    transform: scale(1.15);
+    -webkit-transform: scale(1.15);
+    margin-top: -6px; }
+  100% {
+    transform: scale(1);
+    -webkit-transform: scale(1);
+    margin-top: 0;
+    opacity: 1; } }
+
+.animateXMark {
+  -webkit-animation: animateXMark 0.5s;
+  animation: animateXMark 0.5s; }
+
+@-webkit-keyframes pulseWarning {
+  0% {
+    border-color: #F8D486; }
+  100% {
+    border-color: #F8BB86; } }
+
+@keyframes pulseWarning {
+  0% {
+    border-color: #F8D486; }
+  100% {
+    border-color: #F8BB86; } }
+
+.pulseWarning {
+  -webkit-animation: pulseWarning 0.75s infinite alternate;
+  animation: pulseWarning 0.75s infinite alternate; }
+
+@-webkit-keyframes pulseWarningIns {
+  0% {
+    background-color: #F8D486; }
+  100% {
+    background-color: #F8BB86; } }
+
+@keyframes pulseWarningIns {
+  0% {
+    background-color: #F8D486; }
+  100% {
+    background-color: #F8BB86; } }
+
+.pulseWarningIns {
+  -webkit-animation: pulseWarningIns 0.75s infinite alternate;
+  animation: pulseWarningIns 0.75s infinite alternate; }
+
+@-webkit-keyframes rotate-loading {
+  0% {
+    transform: rotate(0deg); }
+  100% {
+    transform: rotate(360deg); } }
+
+@keyframes rotate-loading {
+  0% {
+    transform: rotate(0deg); }
+  100% {
+    transform: rotate(360deg); } }
+
+/* Internet Explorer 9 has some special quirks that are fixed here */
+/* The icons are not animated. */
+/* This file is automatically merged into sweet-alert.min.js through Gulp */
+/* Error icon */
+.sweet-alert .sa-icon.sa-error .sa-line.sa-left {
+  -ms-transform: rotate(45deg) \9; }
+
+.sweet-alert .sa-icon.sa-error .sa-line.sa-right {
+  -ms-transform: rotate(-45deg) \9; }
+
+/* Success icon */
+.sweet-alert .sa-icon.sa-success {
+  border-color: transparent\9; }
+
+.sweet-alert .sa-icon.sa-success .sa-line.sa-tip {
+  -ms-transform: rotate(45deg) \9; }
+
+.sweet-alert .sa-icon.sa-success .sa-line.sa-long {
+  -ms-transform: rotate(-45deg) \9; }
+
+/*!
+ * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/)
+ * Copyright 2015 Daniel Cardoso <@DanielCardoso>
+ * Licensed under MIT
+ */
+.la-ball-fall,
+.la-ball-fall > div {
+  position: relative;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box; }
+
+.la-ball-fall {
+  display: block;
+  font-size: 0;
+  color: #fff; }
+
+.la-ball-fall.la-dark {
+  color: #333; }
+
+.la-ball-fall > div {
+  display: inline-block;
+  float: none;
+  background-color: currentColor;
+  border: 0 solid currentColor; }
+
+.la-ball-fall {
+  width: 54px;
+  height: 18px; }
+
+.la-ball-fall > div {
+  width: 10px;
+  height: 10px;
+  margin: 4px;
+  border-radius: 100%;
+  opacity: 0;
+  -webkit-animation: ball-fall 1s ease-in-out infinite;
+  -moz-animation: ball-fall 1s ease-in-out infinite;
+  -o-animation: ball-fall 1s ease-in-out infinite;
+  animation: ball-fall 1s ease-in-out infinite; }
+
+.la-ball-fall > div:nth-child(1) {
+  -webkit-animation-delay: -200ms;
+  -moz-animation-delay: -200ms;
+  -o-animation-delay: -200ms;
+  animation-delay: -200ms; }
+
+.la-ball-fall > div:nth-child(2) {
+  -webkit-animation-delay: -100ms;
+  -moz-animation-delay: -100ms;
+  -o-animation-delay: -100ms;
+  animation-delay: -100ms; }
+
+.la-ball-fall > div:nth-child(3) {
+  -webkit-animation-delay: 0ms;
+  -moz-animation-delay: 0ms;
+  -o-animation-delay: 0ms;
+  animation-delay: 0ms; }
+
+.la-ball-fall.la-sm {
+  width: 26px;
+  height: 8px; }
+
+.la-ball-fall.la-sm > div {
+  width: 4px;
+  height: 4px;
+  margin: 2px; }
+
+.la-ball-fall.la-2x {
+  width: 108px;
+  height: 36px; }
+
+.la-ball-fall.la-2x > div {
+  width: 20px;
+  height: 20px;
+  margin: 8px; }
+
+.la-ball-fall.la-3x {
+  width: 162px;
+  height: 54px; }
+
+.la-ball-fall.la-3x > div {
+  width: 30px;
+  height: 30px;
+  margin: 12px; }
+
+/*
+ * Animation
+ */
+@-webkit-keyframes ball-fall {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(-145%);
+    transform: translateY(-145%); }
+  10% {
+    opacity: .5; }
+  20% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+    transform: translateY(0); }
+  80% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+    transform: translateY(0); }
+  90% {
+    opacity: .5; }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(145%);
+    transform: translateY(145%); } }
+
+@-moz-keyframes ball-fall {
+  0% {
+    opacity: 0;
+    -moz-transform: translateY(-145%);
+    transform: translateY(-145%); }
+  10% {
+    opacity: .5; }
+  20% {
+    opacity: 1;
+    -moz-transform: translateY(0);
+    transform: translateY(0); }
+  80% {
+    opacity: 1;
+    -moz-transform: translateY(0);
+    transform: translateY(0); }
+  90% {
+    opacity: .5; }
+  100% {
+    opacity: 0;
+    -moz-transform: translateY(145%);
+    transform: translateY(145%); } }
+
+@-o-keyframes ball-fall {
+  0% {
+    opacity: 0;
+    -o-transform: translateY(-145%);
+    transform: translateY(-145%); }
+  10% {
+    opacity: .5; }
+  20% {
+    opacity: 1;
+    -o-transform: translateY(0);
+    transform: translateY(0); }
+  80% {
+    opacity: 1;
+    -o-transform: translateY(0);
+    transform: translateY(0); }
+  90% {
+    opacity: .5; }
+  100% {
+    opacity: 0;
+    -o-transform: translateY(145%);
+    transform: translateY(145%); } }
+
+@keyframes ball-fall {
+  0% {
+    opacity: 0;
+    -webkit-transform: translateY(-145%);
+    -moz-transform: translateY(-145%);
+    -o-transform: translateY(-145%);
+    transform: translateY(-145%); }
+  10% {
+    opacity: .5; }
+  20% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+    -moz-transform: translateY(0);
+    -o-transform: translateY(0);
+    transform: translateY(0); }
+  80% {
+    opacity: 1;
+    -webkit-transform: translateY(0);
+    -moz-transform: translateY(0);
+    -o-transform: translateY(0);
+    transform: translateY(0); }
+  90% {
+    opacity: .5; }
+  100% {
+    opacity: 0;
+    -webkit-transform: translateY(145%);
+    -moz-transform: translateY(145%);
+    -o-transform: translateY(145%);
+    transform: translateY(145%); } }
diff --git a/css/themes/facebook/facebook.css b/css/themes/facebook/facebook.css
new file mode 100644
index 0000000..4c81b56
--- /dev/null
+++ b/css/themes/facebook/facebook.css
@@ -0,0 +1,111 @@
+.sweet-overlay {
+  border-radius: 3px; }
+
+.sweet-alert {
+  font-family: Helvetica, Arial, 'lucida grande', tahoma, verdana, arial, sans-serif;
+  padding: 12px;
+  padding-top: 53px;
+  text-align: right;
+  box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.11), 0px 6px 30px rgba(0, 0, 0, 0.14); }
+  .sweet-alert h2 {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    height: 41px;
+    background-color: #f6f7f8;
+    margin: 0;
+    font-size: 15px;
+    text-align: left;
+    padding-left: 12px;
+    color: #131722;
+    border-bottom: 1px solid #e5e5e5; }
+  .sweet-alert p {
+    display: block;
+    text-align: center;
+    color: #131722;
+    font-weight: 400;
+    font-size: 15px;
+    margin-top: 7px; }
+  .sweet-alert .sa-button-container {
+    border-top: 1px solid #dcdee3; }
+  .sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] {
+    padding-bottom: 10px; }
+    .sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] .sa-button-container {
+      display: none; }
+  .sweet-alert button {
+    font-size: 12px;
+    padding: 5px 10px;
+    border-radius: 2px;
+    box-shadow: none !important;
+    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.3);
+    font-weight: 500;
+    margin: 0;
+    margin-top: 12px; }
+    .sweet-alert button:focus, .sweet-alert button.cancel:focus {
+      box-shadow: 0 0 1px 2px rgba(88, 144, 255, 0.75), 0 1px 1px rgba(0, 0, 0, 0.15) !important; }
+    .sweet-alert button.confirm {
+      border: 1px solid #3d5586;
+      background-color: #47639c !important;
+      margin-left: 4px; }
+    .sweet-alert button.cancel {
+      color: #4e5664;
+      background-color: #fafbfb;
+      text-shadow: 0px -1px 0px white;
+      border: 1px solid #c5c6c8;
+      box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.04) !important;
+      font-weight: 600; }
+      .sweet-alert button.cancel:hover {
+        background-color: #fafbfb; }
+  .sweet-alert .sa-icon:not(.sa-custom) {
+    transform: scale(0.7);
+    margin-bottom: -10px;
+    margin-top: -10px; }
+  .sweet-alert input {
+    border: 1px solid #bdc7d8;
+    padding: 3px;
+    border-radius: 0;
+    box-shadow: none;
+    font-size: 15px;
+    height: 33px;
+    margin: 10px 0; }
+    .sweet-alert input:focus {
+      box-shadow: 0 0 1px 2px rgba(88, 144, 255, 0.75), 0 1px 1px rgba(0, 0, 0, 0.15) !important; }
+  .sweet-alert fieldset .sa-input-error {
+    display: none; }
+  .sweet-alert .sa-error-container {
+    text-align: center;
+    background-color: #fdebe8;
+    margin: 0;
+    border: none; }
+    .sweet-alert .sa-error-container.show {
+      margin: 14px;
+      margin-top: 0;
+      border: 1px solid #d5512d; }
+    .sweet-alert .sa-error-container .icon {
+      display: none; }
+    .sweet-alert .sa-error-container p {
+      color: #303b44;
+      margin-top: 3px; }
+
+@-webkit-keyframes animateErrorIcon {
+  0% {
+    transform: rotateX(100deg), scale(0.5);
+    -webkit-transform: rotateX(100deg), scale(0.5);
+    opacity: 0; }
+
+  100% {
+    transform: rotateX(0deg), scale(0.5);
+    -webkit-transform: rotateX(0deg), scale(0.5);
+    opacity: 1; } }
+
+@keyframes animateErrorIcon {
+  0% {
+    transform: rotateX(100deg), scale(0.5);
+    -webkit-transform: rotateX(100deg), scale(0.5);
+    opacity: 0; }
+
+  100% {
+    transform: rotateX(0deg), scale(0.5);
+    -webkit-transform: rotateX(0deg), scale(0.5);
+    opacity: 1; } }
diff --git a/css/themes/facebook/facebook.scss b/css/themes/facebook/facebook.scss
new file mode 100644
index 0000000..2ea546d
--- /dev/null
+++ b/css/themes/facebook/facebook.scss
@@ -0,0 +1,146 @@
+// Facebook Theme for SweetAlert
+// By Tristan Edwards
+
+.sweet-overlay {  
+  border-radius: 3px;
+}
+
+
+.sweet-alert {
+  $header-height: 41px;
+  $footer-height: 50px;
+  $text-color: #131722;
+  $fb-focus: 0 0 1px 2px rgba(88, 144, 255, .75), 0 1px 1px rgba(0, 0, 0, .15) !important;
+  $padding: 12px;
+
+  font-family: Helvetica, Arial, 'lucida grande', tahoma, verdana, arial, sans-serif;
+  padding: $padding;
+  padding-top: $header-height + $padding;
+  text-align: right; // Align buttons
+  box-shadow: 0px 0px 0px 1px rgba(black, 0.11), 0px 6px 30px rgba(black, 0.14);
+
+  h2 {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    height: $header-height;
+    background-color: #f6f7f8;
+    margin: 0;
+    font-size: 15px;
+    text-align: left;
+    padding-left: 12px;
+    color: $text-color;
+    border-bottom: 1px solid #e5e5e5;
+  }
+
+  p {
+    display: block;
+    text-align: center;
+    color: #131722;
+    font-weight: 400;
+    font-size: 15px;
+    margin-top: 7px;
+  }
+
+  .sa-button-container {
+    border-top: 1px solid #dcdee3;
+  }
+  &[data-has-confirm-button=false][data-has-cancel-button=false] {
+    padding-bottom: 10px;
+    .sa-button-container {
+      display: none;
+    }
+  }
+
+  button {
+    font-size: 12px;
+    padding: 5px 10px;
+    border-radius: 2px;
+    box-shadow: none !important;
+    text-shadow: 0px -1px 0px rgba(black, 0.3);
+    font-weight: 500;
+    margin: 0;
+    margin-top: $padding;
+    &:focus, &.cancel:focus {
+      box-shadow: $fb-focus;
+    }
+
+    &.confirm {
+      border: 1px solid #3d5586;
+      background-color: #47639c !important;
+      margin-left: 4px;
+    }
+    &.cancel {
+      color: #4e5664;
+      background-color: #fafbfb;
+      text-shadow: 0px -1px 0px white;
+      border: 1px solid #c5c6c8;
+      box-shadow: 0px 1px 1px rgba(black, 0.04) !important;
+      font-weight: 600;
+      &:hover {
+        background-color: #fafbfb;
+      }
+    }
+  }
+
+  .sa-icon:not(.sa-custom) {
+    transform: scale(0.7);
+    margin-bottom: -10px;
+    margin-top: -10px;
+  }
+
+  input {
+    border: 1px solid #bdc7d8;
+    padding: 3px;
+    border-radius: 0;
+    box-shadow: none;
+    font-size: 15px;
+    height: 33px;
+    margin: 10px 0;
+    &:focus {
+      box-shadow: $fb-focus;
+    }
+  }
+
+  fieldset .sa-input-error {
+    display: none;
+  }
+
+  .sa-error-container {
+    text-align: center;
+    background-color: #fdebe8;
+    margin: 0;
+    border: none;
+    &.show {
+      margin: 14px;
+      margin-top: 0;
+      border: 1px solid #d5512d;
+    }
+
+    .icon {
+      display: none;
+    }
+    p {
+      color: #303b44;
+      margin-top: 3px;
+    }
+  }
+}
+
+
+// Animations
+
+@mixin keyframes($animation-name) {
+  @-webkit-keyframes #{$animation-name} {
+    @content;
+  }
+  @keyframes #{$animation-name} {
+    @content;
+  }
+}
+
+@include keyframes(animateErrorIcon) {
+  0%    { transform: rotateX(100deg), scale(0.5); -webkit-transform: rotateX(100deg), scale(0.5); opacity: 0; }
+  100%  { transform: rotateX(0deg),   scale(0.5); -webkit-transform: rotateX(0deg),   scale(0.5); opacity: 1; }
+}
\ No newline at end of file
diff --git a/css/themes/google/google.css b/css/themes/google/google.css
new file mode 100644
index 0000000..5e53a99
--- /dev/null
+++ b/css/themes/google/google.css
@@ -0,0 +1,115 @@
+.sweet-overlay {
+  background: rgba(10, 10, 10, 0.6); }
+
+.sweet-alert {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  padding: 24px;
+  padding-top: 64px;
+  padding-bottom: 13px;
+  text-align: right;
+  border-radius: 0;
+  box-shadow: 0 0 14px rgba(0, 0, 0, 0.24), 0 14px 28px rgba(0, 0, 0, 0.48); }
+  .sweet-alert h2 {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    height: auto;
+    font-weight: 400;
+    color: #212121;
+    margin: 20px 0;
+    font-size: 1.2em;
+    line-height: 1.25;
+    text-align: left;
+    padding: 0 24px; }
+  .sweet-alert p {
+    display: block;
+    text-align: center;
+    color: #212121;
+    font-weight: 400;
+    font-size: 14px;
+    margin: 20px 0; }
+  .sweet-alert button {
+    border-radius: 2px;
+    box-shadow: none !important;
+    background: none !important;
+    border-radius: 2px;
+    text-transform: uppercase;
+    font-size: 14px;
+    font-weight: 600;
+    padding: 8px 16px;
+    position: relative;
+    margin-top: 0; }
+    .sweet-alert button:hover, .sweet-alert button:focus {
+      background-color: #f6f6f6 !important; }
+    .sweet-alert button.confirm {
+      color: #3c80f6; }
+    .sweet-alert button.cancel {
+      color: #757575; }
+      .sweet-alert button.cancel:focus {
+        box-shadow: none !important; }
+  .sweet-alert .sa-icon:not(.sa-custom) {
+    transform: scale(0.8);
+    margin-bottom: -10px;
+    margin-top: -10px; }
+  .sweet-alert input {
+    border: none;
+    border-radius: 0;
+    border-bottom: 1px solid #c9c9c9;
+    color: #212121;
+    margin-bottom: 8px;
+    padding: 1px;
+    padding-bottom: 8px;
+    height: auto;
+    box-shadow: none;
+    font-size: 13px;
+    margin: 10px 0; }
+    .sweet-alert input:focus {
+      border: none;
+      border-bottom: 1px solid #3c80f6;
+      box-shadow: inset 0 -1px 0 #3c80f6; }
+  .sweet-alert fieldset {
+    padding: 0; }
+    .sweet-alert fieldset .sa-input-error {
+      display: none; }
+  .sweet-alert .sa-error-container {
+    display: none;
+    background: none;
+    height: auto;
+    padding: 0 24px;
+    margin: 0 -20px;
+    text-align: left; }
+    .sweet-alert .sa-error-container.show {
+      padding: 0 24px;
+      display: block; }
+      .sweet-alert .sa-error-container.show ~ fieldset input {
+        background: red;
+        border-bottom: 1px solid #d9453c;
+        box-shadow: inset 0 -1px 0 #d9453c; }
+    .sweet-alert .sa-error-container .icon {
+      display: none; }
+    .sweet-alert .sa-error-container p {
+      color: #d9453c;
+      margin-top: 0; }
+
+@-webkit-keyframes animateErrorIcon {
+  0% {
+    transform: rotateX(100deg), scale(0.5);
+    -webkit-transform: rotateX(100deg), scale(0.5);
+    opacity: 0; }
+
+  100% {
+    transform: rotateX(0deg), scale(0.5);
+    -webkit-transform: rotateX(0deg), scale(0.5);
+    opacity: 1; } }
+
+@keyframes animateErrorIcon {
+  0% {
+    transform: rotateX(100deg), scale(0.5);
+    -webkit-transform: rotateX(100deg), scale(0.5);
+    opacity: 0; }
+
+  100% {
+    transform: rotateX(0deg), scale(0.5);
+    -webkit-transform: rotateX(0deg), scale(0.5);
+    opacity: 1; } }
diff --git a/css/themes/google/google.scss b/css/themes/google/google.scss
new file mode 100644
index 0000000..86285d6
--- /dev/null
+++ b/css/themes/google/google.scss
@@ -0,0 +1,148 @@
+// Google Theme for SweetAlert
+// By Tristan Edwards
+
+.sweet-overlay {  
+  background: rgba(10,10,10,.6);
+}
+
+
+.sweet-alert {
+  $header-height: 40px;
+  $footer-height: 66px;
+  $text-color: #212121;
+  $padding: 24px;
+  $error-color: #d9453c;
+
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  padding: $padding;
+  padding-top: $header-height + $padding;
+  padding-bottom: 13px;
+  text-align: right; // Align buttons
+  border-radius: 0;
+  box-shadow: 0 0 14px rgba(black, 0.24),0 14px 28px rgba(black, 0.48);
+
+  h2 {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    height: auto;
+    font-weight: 400;
+    color: $text-color;
+    margin: 20px 0;
+    font-size: 1.2em;
+    line-height: 1.25;
+    text-align: left;
+    padding: 0 $padding;
+  }
+
+  p {
+    display: block;
+    text-align: center;
+    color: $text-color;
+    font-weight: 400;
+    font-size: 14px;
+    margin: 20px 0;
+  }
+
+  button {
+    border-radius: 2px;
+    box-shadow: none !important;
+    background: none !important;
+    border-radius: 2px;
+    text-transform: uppercase;
+    font-size: 14px;
+    font-weight: 600;
+    padding: 8px 16px;
+    position: relative;
+    margin-top: 0;
+    &:hover, &:focus {
+      background-color: #f6f6f6 !important;
+    }
+
+    &.confirm {
+      color: #3c80f6;
+    }
+    &.cancel {
+      color: #757575;
+      &:focus {
+        box-shadow: none !important;
+      }
+    }
+  }
+
+  .sa-icon:not(.sa-custom) {
+    transform: scale(0.8);
+    margin-bottom: -10px;
+    margin-top: -10px;
+  }
+
+  input {
+    border: none;
+    border-radius: 0;
+    border-bottom: 1px solid #c9c9c9;
+    color: #212121;
+    margin-bottom: 8px;
+    padding: 1px;
+    padding-bottom: 8px;
+    height: auto;
+    box-shadow: none;
+    font-size: 13px;
+    margin: 10px 0;
+    &:focus {
+      border: none;
+      border-bottom: 1px solid #3c80f6;
+      box-shadow: inset 0 -1px 0 #3c80f6;
+    }
+  }
+
+  fieldset {
+    padding: 0;
+    .sa-input-error {
+      display: none;
+    }
+  }
+
+  .sa-error-container {
+    display: none;
+    background: none;
+    height: auto;
+    padding: 0 $padding;
+    margin: 0 -20px;
+    text-align: left;
+    &.show {
+      padding: 0 $padding;
+      display: block;
+      ~ fieldset input {
+        background: red;
+        border-bottom: 1px solid $error-color;
+        box-shadow: inset 0 -1px 0 $error-color;
+      }
+    }
+
+    .icon {
+      display: none;
+    }
+    p {
+      color: $error-color;
+      margin-top: 0;
+    }
+  }
+}
+
+
+// Animations
+
+@mixin keyframes($animation-name) {
+  @-webkit-keyframes #{$animation-name} {
+    @content;
+  }
+  @keyframes #{$animation-name} {
+    @content;
+  }
+}
+
+@include keyframes(animateErrorIcon) {
+  0%    { transform: rotateX(100deg), scale(0.5); -webkit-transform: rotateX(100deg), scale(0.5); opacity: 0; }
+  100%  { transform: rotateX(0deg),   scale(0.5); -webkit-transform: rotateX(0deg),   scale(0.5); opacity: 1; }
+}
\ No newline at end of file
diff --git a/css/themes/twitter/twitter.css b/css/themes/twitter/twitter.css
new file mode 100644
index 0000000..062ded6
--- /dev/null
+++ b/css/themes/twitter/twitter.css
@@ -0,0 +1,140 @@
+.sweet-overlay {
+  background: rgba(41, 47, 51, 0.9); }
+
+.sweet-alert {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  padding: 15px;
+  padding-top: 55px;
+  text-align: right;
+  border-radius: 6px;
+  box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.11), 0px 6px 30px rgba(0, 0, 0, 0.14); }
+  .sweet-alert h2 {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    height: 40px;
+    line-height: 40px;
+    font-size: 16px;
+    font-weight: 400;
+    color: #8899a6;
+    margin: 0;
+    color: #66757f;
+    border-bottom: 1px solid #e1e8ed; }
+  .sweet-alert p {
+    display: block;
+    text-align: center;
+    color: #66757f;
+    font-weight: 400;
+    font-size: 13px;
+    margin-top: 7px; }
+  .sweet-alert .sa-button-container {
+    background-color: #f5f8fa;
+    border-top: 1px solid #e1e8ed;
+    box-shadow: 0px -1px 0px white;
+    margin: -15px;
+    margin-top: 0; }
+  .sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] {
+    padding-bottom: 10px; }
+    .sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] .sa-button-container {
+      display: none; }
+  .sweet-alert button {
+    border-radius: 2px;
+    box-shadow: none !important;
+    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.3);
+    margin: 17px 0px;
+    border-radius: 4px;
+    font-size: 14px;
+    font-weight: 600;
+    padding: 8px 16px;
+    position: relative; }
+    .sweet-alert button:focus, .sweet-alert button.cancel:focus {
+      box-shadow: none !important; }
+      .sweet-alert button:focus::before, .sweet-alert button.cancel:focus::before {
+        content: "";
+        position: absolute;
+        left: -5px;
+        top: -5px;
+        right: -5px;
+        bottom: -5px;
+        border: 2px solid #a5b0b4;
+        border-radius: 8px; }
+    .sweet-alert button.confirm {
+      background-color: #55acee !important;
+      background-image: linear-gradient(transparent, rgba(0, 0, 0, 0.05));
+      -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000, endColorstr=#0C000000)";
+      border: 1px solid #3b88c3;
+      box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15);
+      margin-right: 15px; }
+      .sweet-alert button.confirm:hover {
+        background-color: #55acee;
+        background-image: linear-gradient(transparent, rgba(0, 0, 0, 0.15));
+        -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000, endColorstr=#26000000)";
+        border-color: #3b88c3; }
+    .sweet-alert button.cancel {
+      color: #66757e;
+      background-color: #f5f8fa;
+      background-image: linear-gradient(#fff, #f5f8fa);
+      text-shadow: 0px -1px 0px white;
+      margin-right: 9px;
+      border: 1px solid #e1e8ed; }
+      .sweet-alert button.cancel:hover, .sweet-alert button.cancel:focus:hover {
+        background-color: #e1e8ed;
+        background-image: linear-gradient(#fff, #e1e8ed);
+        -ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)";
+        border-color: #e1e8ed; }
+      .sweet-alert button.cancel:focus {
+        background: #fff;
+        border-color: #fff; }
+  .sweet-alert .sa-icon:not(.sa-custom) {
+    transform: scale(0.72);
+    margin-bottom: -2px;
+    margin-top: -10px; }
+  .sweet-alert input {
+    border: 1px solid #e1e8ed;
+    border-radius: 3px;
+    padding: 10px 7px;
+    height: auto;
+    box-shadow: none;
+    font-size: 13px;
+    margin: 10px 0; }
+    .sweet-alert input:focus {
+      border-color: #94A1A6;
+      box-shadow: inset 0 0 0 1px rgba(77, 99, 107, 0.7); }
+  .sweet-alert fieldset .sa-input-error {
+    display: none; }
+  .sweet-alert .sa-error-container {
+    text-align: center;
+    border: none;
+    background-color: #fbedc0;
+    margin-bottom: 6px; }
+    .sweet-alert .sa-error-container.show {
+      border: 1px solid #f0e1b9; }
+    .sweet-alert .sa-error-container .icon {
+      display: none; }
+    .sweet-alert .sa-error-container p {
+      color: #292f33;
+      font-weight: 600;
+      margin-top: 0; }
+
+@-webkit-keyframes animateErrorIcon {
+  0% {
+    transform: rotateX(100deg), scale(0.5);
+    -webkit-transform: rotateX(100deg), scale(0.5);
+    opacity: 0; }
+
+  100% {
+    transform: rotateX(0deg), scale(0.5);
+    -webkit-transform: rotateX(0deg), scale(0.5);
+    opacity: 1; } }
+
+@keyframes animateErrorIcon {
+  0% {
+    transform: rotateX(100deg), scale(0.5);
+    -webkit-transform: rotateX(100deg), scale(0.5);
+    opacity: 0; }
+
+  100% {
+    transform: rotateX(0deg), scale(0.5);
+    -webkit-transform: rotateX(0deg), scale(0.5);
+    opacity: 1; } }
diff --git a/css/themes/twitter/twitter.scss b/css/themes/twitter/twitter.scss
new file mode 100644
index 0000000..2a7ec9f
--- /dev/null
+++ b/css/themes/twitter/twitter.scss
@@ -0,0 +1,177 @@
+// Twitter Theme for SweetAlert
+// By Tristan Edwards
+
+.sweet-overlay {  
+  background: rgba(41,47,51,0.9);
+}
+
+
+.sweet-alert {
+  $header-height: 40px;
+  $footer-height: 66px;
+  $text-color: #66757f;
+  $padding: 15px;
+
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  padding: $padding;
+  padding-top: $header-height + $padding;
+  text-align: right; // Align buttons
+  border-radius: 6px;
+  box-shadow: 0px 0px 0px 1px rgba(black, 0.11), 0px 6px 30px rgba(black, 0.14);
+
+  h2 {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    height: $header-height;
+    line-height: $header-height; 
+    font-size: 16px;
+    font-weight: 400;
+    color: #8899a6;
+    margin: 0;
+    color: $text-color;
+    border-bottom: 1px solid #e1e8ed;
+  }
+
+  p {
+    display: block;
+    text-align: center;
+    color: #66757f;
+    font-weight: 400;
+    font-size: 13px;
+    margin-top: 7px;
+  }
+
+  .sa-button-container {
+    background-color: #f5f8fa;
+    border-top: 1px solid #e1e8ed;
+    box-shadow: 0px -1px 0px white;
+    margin: -$padding;
+    margin-top: 0;
+  }
+  &[data-has-confirm-button=false][data-has-cancel-button=false] {
+    padding-bottom: 10px;
+    .sa-button-container {
+      display: none;
+    }
+  }
+
+  button {
+    border-radius: 2px;
+    box-shadow: none !important;
+    text-shadow: 0px -1px 0px rgba(black, 0.3);
+    margin: 17px 0px;
+    border-radius: 4px;
+    font-size: 14px;
+    font-weight: 600;
+    padding: 8px 16px;
+    position: relative;
+    &:focus, &.cancel:focus {
+      box-shadow: none !important;
+      &::before {
+        content: "";
+        position: absolute;
+        left: -5px;
+        top: -5px;
+        right: -5px;
+        bottom: -5px;
+        border: 2px solid #a5b0b4;
+        border-radius: 8px;
+      }
+    }
+
+    &.confirm {
+      background-color: #55acee !important;
+      background-image: linear-gradient(rgba(0,0,0,0),rgba(0,0,0,0.05));
+      -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000, endColorstr=#0C000000)";
+      border: 1px solid #3b88c3;
+      box-shadow: inset 0 1px 0 rgba(255,255,255,0.15);
+      margin-right: $padding;
+      &:hover {
+        background-color: #55acee;
+        background-image: linear-gradient(rgba(0,0,0,0),rgba(0,0,0,0.15));
+        -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00000000, endColorstr=#26000000)";
+        border-color: #3b88c3;
+      }
+    }
+    &.cancel {
+      color: #66757e;
+      background-color: #f5f8fa;
+      background-image: linear-gradient(#fff,#f5f8fa);
+      text-shadow: 0px -1px 0px white;
+      margin-right: 9px;
+      border: 1px solid #e1e8ed;
+      &:hover, &:focus:hover {
+        background-color: #e1e8ed;
+        background-image: linear-gradient(#fff,#e1e8ed);
+        -ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)";
+        border-color: #e1e8ed;
+      }
+      &:focus {
+        background: #fff;
+        border-color: #fff;
+      }
+    }
+  }
+
+  .sa-icon:not(.sa-custom) {
+    transform: scale(0.72);
+    margin-bottom: -2px;
+    margin-top: -10px;
+  }
+
+  input {
+    border: 1px solid #e1e8ed;
+    border-radius: 3px;
+    padding: 10px 7px;
+    height: auto;
+    box-shadow: none;
+    font-size: 13px;
+    margin: 10px 0;
+    &:focus {
+      border-color: #94A1A6;
+      box-shadow: inset 0 0 0 1px rgba(77, 99, 107, 0.7);
+    }
+  }
+
+  fieldset .sa-input-error {
+    display: none;
+  }
+
+  .sa-error-container {
+    text-align: center;
+    border: none;
+    background-color: #fbedc0;
+    margin-bottom: 6px;
+    &.show {
+      border: 1px solid #f0e1b9;
+    }
+
+    .icon {
+      display: none;
+    }
+    p {
+      color: #292f33;
+      font-weight: 600;
+      margin-top: 0;
+    }
+  }
+}
+
+
+// Animations
+
+@mixin keyframes($animation-name) {
+  @-webkit-keyframes #{$animation-name} {
+    @content;
+  }
+  @keyframes #{$animation-name} {
+    @content;
+  }
+}
+
+@include keyframes(animateErrorIcon) {
+  0%    { transform: rotateX(100deg), scale(0.5); -webkit-transform: rotateX(100deg), scale(0.5); opacity: 0; }
+  100%  { transform: rotateX(0deg),   scale(0.5); -webkit-transform: rotateX(0deg),   scale(0.5); opacity: 1; }
+}
\ No newline at end of file
diff --git a/donate.html b/donate.html
new file mode 100644
index 0000000..45536d1
--- /dev/null
+++ b/donate.html
@@ -0,0 +1,63 @@
+<html>
+    <head>
+        <title>Orangetool</title>
+        <link href="css/style.css" rel="stylesheet" type="text/css">
+          <link href="css/style.min.css" rel=stylesheet type="text/css">
+        <script src="js/sweetalert.min.js"></script>
+        <link rel="stylesheet" href="css/themes/google/google.css">
+        <link rel="stylesheet" type="text/css" href="css/sweetalert.css">
+        <script src="js/script.js" type="text/javascript"></script>
+        <meta name="description" content="Orangetool By Moduland"/>
+        <meta property="og:title" content="Orangetool" />
+        <meta property="og:site_name" content="http://moduland.github.io/Orangetool"/>
+        <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
+        <meta property="og:image" content="http://www.orangetool.ir/images/og-icon.png" />
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+    </head>
+    <body>
+        	
+      <div class="header">
+            <h1 id="back"><a href="index.html">Back</a></h1>
+        </div>
+        <div align="center">
+        <img src="images/donate.jpg" alt="Orangetool Donation" class="donate_image">
+        </div>
+        <div class="help">
+            <p>If you do like our project and we hope that you do, can you please support us? Our project is not and is never going to be working for profit. We need the money just so we can continue doing what we do ;-) .</p>
+        </div>
+        <div class="button_section">
+                <button onclick="redirect(3);" class="reset" title="BeerPay">BeerPay</button>
+                <button onclick="redirect(2);" class="reset" title="Bitcoin">Bitcoin</button>
+                <button onclick="redirect(4);" class="reset" title="Payping">Payping</button>
+                <button onclick="redirect(1);" id="saythanks"  class="reset" title="Say Thanks ;-)">Say Thanks!</button>
+            </div>
+        
+        <div id="login-footer" class="abs">
+        <p> Copyright (c) 2017 Moduland Co</p>
+    </div>
+    
+    
+    
+    
+    
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+    </body>
+
+
+
+
+
+
+
+
+
+</html>
\ No newline at end of file
diff --git a/images/Bitcoin-Donation-Banner.jpg b/images/Bitcoin-Donation-Banner.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..196065ec8f182b807152968cb95d15450f77bab1
GIT binary patch
diff --git a/images/donate-button-blue.jpg b/images/donate-button-blue.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..73991d9c7d8ac6d0fab5b916e620d555eb64ed94
GIT binary patch
diff --git a/images/donate.jpg b/images/donate.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..5dad0c805bb210824a3eb61bbd69a93e64e1d6e1
GIT binary patch
diff --git a/images/payping-puzzley.png b/images/payping-puzzley.png
new file mode 100644
index 0000000000000000000000000000000000000000..a2d5ec90e1c307bdb09e102c99e32d00ccfd14f0
GIT binary patch
diff --git a/index.html b/index.html
index 61e2faa..80454f7 100644
--- a/index.html
+++ b/index.html
@@ -1,22 +1,26 @@
 <html>
     <head>
         <title>Orangetool</title>
-        <link href="style.css" rel="stylesheet" type="text/css">
+        <link href="css/style.css" rel="stylesheet" type="text/css">
         <meta name="description" content="Orangetool By Moduland"/>
         <meta property="og:title" content="Orangetool" />
         <meta property="og:site_name" content="http://moduland.github.io/Orangetool"/>
         <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
         <meta property="og:image" content="http://www.orangetool.ir/images/og-icon.png" />
+         <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
     </head>
     <body>
         	
         <div class="logo"  align="center">
-            <img src="images/orangetool.jpg" height="350px" width="500px">
+            <img src="images/orangetool.jpg"  class="orange_image">
             <br/>
-            <h3 class="moduland"><a href="https://github.com/moduland/Orangetool/archive/v0.23.zip">Version 0.23</a></h3>
-            <h2>General and useful python-scripts developed for Single-Board Computers</h2>
-            <h3>Tested on Lubuntu 14.04</h3>
         </div>
+         <div class="main_text" >
+             <p class="moduland"><a href="https://github.com/moduland/Orangetool/archive/v0.23.zip">Version 0.23</a></p>
+            <p>General and useful python-scripts developed for Single-Board Computers</p>
+            <p>Tested on Lubuntu 14.04</p>
+        </div>
+            
         <div class="button" align="center">
         
             <a href="https://github.com/Moduland/Orangetool/archive/master.zip" title="Download Source"><img src="images/download.png" height="128px" width="128px" alt="Download Source"></a>
@@ -24,6 +28,8 @@ <h3>Tested on Lubuntu 14.04</h3>
             <a href="http://moduland.github.io/Orangetool/doc" target="_blank" title="Orangetool Doc"><img src="images/doc.png" alt="Orangetool Doc"></a>
             <a href="https://github.com/Moduland/Orangetool/blob/master/Supported_Device_List.md" target="_blank" title="Supported Device List"><img src="images/list.png" height="128px" width="128px" alt="Supported Device List"></a>
             <a href="http://www.moduland.ir" target="_blank" title="Moduland Website"><img src="images/moduland.jpg" height="128px" width="128px" alt="Moduland Website"></a>
+            <a href="donate.html" target="_blank" title="Donate"><img src="images/donate-button-blue.jpg" height="128px" width="128px" alt="Donate"></a>
+            
         </div>
         
         
diff --git a/js/script.js b/js/script.js
new file mode 100644
index 0000000..0af8294
--- /dev/null
+++ b/js/script.js
@@ -0,0 +1,21 @@
+
+function redirect(flag){
+    switch(flag){
+        case 1:
+            window.open("https://saythanks.io/to/lightsout");
+            break;
+        case 2:
+            swal("Bitocin Wallet","1XGr9qbZjBpUQJJSB6WtgBQbDTgrhPLPA");
+            break;
+        case 3:
+            window.open("https://beerpay.io/sepandhaghighi/lightsout");
+            break;
+        case 4:
+            window.open("https://www.payping.ir/sepandhaghighi");
+            break;
+        default:
+            window.open("https://saythanks.io/to/orangetool");
+            
+    }
+    
+}
diff --git a/js/sweetalert-dev.js b/js/sweetalert-dev.js
new file mode 100644
index 0000000..b6aeece
--- /dev/null
+++ b/js/sweetalert-dev.js
@@ -0,0 +1,1253 @@
+;(function(window, document, undefined) {
+  "use strict";
+  
+  (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
+// SweetAlert
+// 2014-2015 (c) - Tristan Edwards
+// github.com/t4t5/sweetalert
+
+/*
+ * jQuery-like functions for manipulating the DOM
+ */
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+  value: true
+});
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+var _modulesHandleDom = require('./modules/handle-dom');
+
+/*
+ * Handy utilities
+ */
+
+var _modulesUtils = require('./modules/utils');
+
+/*
+ *  Handle sweetAlert's DOM elements
+ */
+
+var _modulesHandleSwalDom = require('./modules/handle-swal-dom');
+
+// Handle button events and keyboard events
+
+var _modulesHandleClick = require('./modules/handle-click');
+
+var _modulesHandleKey = require('./modules/handle-key');
+
+var _modulesHandleKey2 = _interopRequireDefault(_modulesHandleKey);
+
+// Default values
+
+var _modulesDefaultParams = require('./modules/default-params');
+
+var _modulesDefaultParams2 = _interopRequireDefault(_modulesDefaultParams);
+
+var _modulesSetParams = require('./modules/set-params');
+
+var _modulesSetParams2 = _interopRequireDefault(_modulesSetParams);
+
+/*
+ * Remember state in cases where opening and handling a modal will fiddle with it.
+ * (We also use window.previousActiveElement as a global variable)
+ */
+var previousWindowKeyDown;
+var lastFocusedButton;
+
+/*
+ * Global sweetAlert function
+ * (this is what the user calls)
+ */
+var sweetAlert, swal;
+
+exports['default'] = sweetAlert = swal = function () {
+  var customizations = arguments[0];
+
+  (0, _modulesHandleDom.addClass)(document.body, 'stop-scrolling');
+  (0, _modulesHandleSwalDom.resetInput)();
+
+  /*
+   * Use argument if defined or default value from params object otherwise.
+   * Supports the case where a default value is boolean true and should be
+   * overridden by a corresponding explicit argument which is boolean false.
+   */
+  function argumentOrDefault(key) {
+    var args = customizations;
+    return args[key] === undefined ? _modulesDefaultParams2['default'][key] : args[key];
+  }
+
+  if (customizations === undefined) {
+    (0, _modulesUtils.logStr)('SweetAlert expects at least 1 attribute!');
+    return false;
+  }
+
+  var params = (0, _modulesUtils.extend)({}, _modulesDefaultParams2['default']);
+
+  switch (typeof customizations) {
+
+    // Ex: swal("Hello", "Just testing", "info");
+    case 'string':
+      params.title = customizations;
+      params.text = arguments[1] || '';
+      params.type = arguments[2] || '';
+      break;
+
+    // Ex: swal({ title:"Hello", text: "Just testing", type: "info" });
+    case 'object':
+      if (customizations.title === undefined) {
+        (0, _modulesUtils.logStr)('Missing "title" argument!');
+        return false;
+      }
+
+      params.title = customizations.title;
+
+      for (var customName in _modulesDefaultParams2['default']) {
+        params[customName] = argumentOrDefault(customName);
+      }
+
+      // Show "Confirm" instead of "OK" if cancel button is visible
+      params.confirmButtonText = params.showCancelButton ? 'Confirm' : _modulesDefaultParams2['default'].confirmButtonText;
+      params.confirmButtonText = argumentOrDefault('confirmButtonText');
+
+      // Callback function when clicking on "OK"/"Cancel"
+      params.doneFunction = arguments[1] || null;
+
+      break;
+
+    default:
+      (0, _modulesUtils.logStr)('Unexpected type of argument! Expected "string" or "object", got ' + typeof customizations);
+      return false;
+
+  }
+
+  (0, _modulesSetParams2['default'])(params);
+  (0, _modulesHandleSwalDom.fixVerticalPosition)();
+  (0, _modulesHandleSwalDom.openModal)(arguments[1]);
+
+  // Modal interactions
+  var modal = (0, _modulesHandleSwalDom.getModal)();
+
+  /*
+   * Make sure all modal buttons respond to all events
+   */
+  var $buttons = modal.querySelectorAll('button');
+  var buttonEvents = ['onclick', 'onmouseover', 'onmouseout', 'onmousedown', 'onmouseup', 'onfocus'];
+  var onButtonEvent = function onButtonEvent(e) {
+    return (0, _modulesHandleClick.handleButton)(e, params, modal);
+  };
+
+  for (var btnIndex = 0; btnIndex < $buttons.length; btnIndex++) {
+    for (var evtIndex = 0; evtIndex < buttonEvents.length; evtIndex++) {
+      var btnEvt = buttonEvents[evtIndex];
+      $buttons[btnIndex][btnEvt] = onButtonEvent;
+    }
+  }
+
+  // Clicking outside the modal dismisses it (if allowed by user)
+  (0, _modulesHandleSwalDom.getOverlay)().onclick = onButtonEvent;
+
+  previousWindowKeyDown = window.onkeydown;
+
+  var onKeyEvent = function onKeyEvent(e) {
+    return (0, _modulesHandleKey2['default'])(e, params, modal);
+  };
+  window.onkeydown = onKeyEvent;
+
+  window.onfocus = function () {
+    // When the user has focused away and focused back from the whole window.
+    setTimeout(function () {
+      // Put in a timeout to jump out of the event sequence.
+      // Calling focus() in the event sequence confuses things.
+      if (lastFocusedButton !== undefined) {
+        lastFocusedButton.focus();
+        lastFocusedButton = undefined;
+      }
+    }, 0);
+  };
+
+  // Show alert with enabled buttons always
+  swal.enableButtons();
+};
+
+/*
+ * Set default params for each popup
+ * @param {Object} userParams
+ */
+sweetAlert.setDefaults = swal.setDefaults = function (userParams) {
+  if (!userParams) {
+    throw new Error('userParams is required');
+  }
+  if (typeof userParams !== 'object') {
+    throw new Error('userParams has to be a object');
+  }
+
+  (0, _modulesUtils.extend)(_modulesDefaultParams2['default'], userParams);
+};
+
+/*
+ * Animation when closing modal
+ */
+sweetAlert.close = swal.close = function () {
+  var modal = (0, _modulesHandleSwalDom.getModal)();
+
+  (0, _modulesHandleDom.fadeOut)((0, _modulesHandleSwalDom.getOverlay)(), 5);
+  (0, _modulesHandleDom.fadeOut)(modal, 5);
+  (0, _modulesHandleDom.removeClass)(modal, 'showSweetAlert');
+  (0, _modulesHandleDom.addClass)(modal, 'hideSweetAlert');
+  (0, _modulesHandleDom.removeClass)(modal, 'visible');
+
+  /*
+   * Reset icon animations
+   */
+  var $successIcon = modal.querySelector('.sa-icon.sa-success');
+  (0, _modulesHandleDom.removeClass)($successIcon, 'animate');
+  (0, _modulesHandleDom.removeClass)($successIcon.querySelector('.sa-tip'), 'animateSuccessTip');
+  (0, _modulesHandleDom.removeClass)($successIcon.querySelector('.sa-long'), 'animateSuccessLong');
+
+  var $errorIcon = modal.querySelector('.sa-icon.sa-error');
+  (0, _modulesHandleDom.removeClass)($errorIcon, 'animateErrorIcon');
+  (0, _modulesHandleDom.removeClass)($errorIcon.querySelector('.sa-x-mark'), 'animateXMark');
+
+  var $warningIcon = modal.querySelector('.sa-icon.sa-warning');
+  (0, _modulesHandleDom.removeClass)($warningIcon, 'pulseWarning');
+  (0, _modulesHandleDom.removeClass)($warningIcon.querySelector('.sa-body'), 'pulseWarningIns');
+  (0, _modulesHandleDom.removeClass)($warningIcon.querySelector('.sa-dot'), 'pulseWarningIns');
+
+  // Reset custom class (delay so that UI changes aren't visible)
+  setTimeout(function () {
+    var customClass = modal.getAttribute('data-custom-class');
+    (0, _modulesHandleDom.removeClass)(modal, customClass);
+  }, 300);
+
+  // Make page scrollable again
+  (0, _modulesHandleDom.removeClass)(document.body, 'stop-scrolling');
+
+  // Reset the page to its previous state
+  window.onkeydown = previousWindowKeyDown;
+  if (window.previousActiveElement) {
+    window.previousActiveElement.focus();
+  }
+  lastFocusedButton = undefined;
+  clearTimeout(modal.timeout);
+
+  return true;
+};
+
+/*
+ * Validation of the input field is done by user
+ * If something is wrong => call showInputError with errorMessage
+ */
+sweetAlert.showInputError = swal.showInputError = function (errorMessage) {
+  var modal = (0, _modulesHandleSwalDom.getModal)();
+
+  var $errorIcon = modal.querySelector('.sa-input-error');
+  (0, _modulesHandleDom.addClass)($errorIcon, 'show');
+
+  var $errorContainer = modal.querySelector('.sa-error-container');
+  (0, _modulesHandleDom.addClass)($errorContainer, 'show');
+
+  $errorContainer.querySelector('p').innerHTML = errorMessage;
+
+  setTimeout(function () {
+    sweetAlert.enableButtons();
+  }, 1);
+
+  modal.querySelector('input').focus();
+};
+
+/*
+ * Reset input error DOM elements
+ */
+sweetAlert.resetInputError = swal.resetInputError = function (event) {
+  // If press enter => ignore
+  if (event && event.keyCode === 13) {
+    return false;
+  }
+
+  var $modal = (0, _modulesHandleSwalDom.getModal)();
+
+  var $errorIcon = $modal.querySelector('.sa-input-error');
+  (0, _modulesHandleDom.removeClass)($errorIcon, 'show');
+
+  var $errorContainer = $modal.querySelector('.sa-error-container');
+  (0, _modulesHandleDom.removeClass)($errorContainer, 'show');
+};
+
+/*
+ * Disable confirm and cancel buttons
+ */
+sweetAlert.disableButtons = swal.disableButtons = function (event) {
+  var modal = (0, _modulesHandleSwalDom.getModal)();
+  var $confirmButton = modal.querySelector('button.confirm');
+  var $cancelButton = modal.querySelector('button.cancel');
+  $confirmButton.disabled = true;
+  $cancelButton.disabled = true;
+};
+
+/*
+ * Enable confirm and cancel buttons
+ */
+sweetAlert.enableButtons = swal.enableButtons = function (event) {
+  var modal = (0, _modulesHandleSwalDom.getModal)();
+  var $confirmButton = modal.querySelector('button.confirm');
+  var $cancelButton = modal.querySelector('button.cancel');
+  $confirmButton.disabled = false;
+  $cancelButton.disabled = false;
+};
+
+if (typeof window !== 'undefined') {
+  // The 'handle-click' module requires
+  // that 'sweetAlert' was set as global.
+  window.sweetAlert = window.swal = sweetAlert;
+} else {
+  (0, _modulesUtils.logStr)('SweetAlert is a frontend module!');
+}
+module.exports = exports['default'];
+
+},{"./modules/default-params":2,"./modules/handle-click":3,"./modules/handle-dom":4,"./modules/handle-key":5,"./modules/handle-swal-dom":6,"./modules/set-params":8,"./modules/utils":9}],2:[function(require,module,exports){
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+  value: true
+});
+var defaultParams = {
+  title: '',
+  text: '',
+  type: null,
+  allowOutsideClick: false,
+  showConfirmButton: true,
+  showCancelButton: false,
+  closeOnConfirm: true,
+  closeOnCancel: true,
+  confirmButtonText: 'OK',
+  confirmButtonColor: '#8CD4F5',
+  cancelButtonText: 'Cancel',
+  imageUrl: null,
+  imageSize: null,
+  timer: null,
+  customClass: '',
+  html: false,
+  animation: true,
+  allowEscapeKey: true,
+  inputType: 'text',
+  inputPlaceholder: '',
+  inputValue: '',
+  showLoaderOnConfirm: false
+};
+
+exports['default'] = defaultParams;
+module.exports = exports['default'];
+
+},{}],3:[function(require,module,exports){
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+  value: true
+});
+
+var _utils = require('./utils');
+
+var _handleSwalDom = require('./handle-swal-dom');
+
+var _handleDom = require('./handle-dom');
+
+/*
+ * User clicked on "Confirm"/"OK" or "Cancel"
+ */
+var handleButton = function handleButton(event, params, modal) {
+  var e = event || window.event;
+  var target = e.target || e.srcElement;
+
+  var targetedConfirm = target.className.indexOf('confirm') !== -1;
+  var targetedOverlay = target.className.indexOf('sweet-overlay') !== -1;
+  var modalIsVisible = (0, _handleDom.hasClass)(modal, 'visible');
+  var doneFunctionExists = params.doneFunction && modal.getAttribute('data-has-done-function') === 'true';
+
+  // Since the user can change the background-color of the confirm button programmatically,
+  // we must calculate what the color should be on hover/active
+  var normalColor, hoverColor, activeColor;
+  if (targetedConfirm && params.confirmButtonColor) {
+    normalColor = params.confirmButtonColor;
+    hoverColor = (0, _utils.colorLuminance)(normalColor, -0.04);
+    activeColor = (0, _utils.colorLuminance)(normalColor, -0.14);
+  }
+
+  function shouldSetConfirmButtonColor(color) {
+    if (targetedConfirm && params.confirmButtonColor) {
+      target.style.backgroundColor = color;
+    }
+  }
+
+  switch (e.type) {
+    case 'mouseover':
+      shouldSetConfirmButtonColor(hoverColor);
+      break;
+
+    case 'mouseout':
+      shouldSetConfirmButtonColor(normalColor);
+      break;
+
+    case 'mousedown':
+      shouldSetConfirmButtonColor(activeColor);
+      break;
+
+    case 'mouseup':
+      shouldSetConfirmButtonColor(hoverColor);
+      break;
+
+    case 'focus':
+      var $confirmButton = modal.querySelector('button.confirm');
+      var $cancelButton = modal.querySelector('button.cancel');
+
+      if (targetedConfirm) {
+        $cancelButton.style.boxShadow = 'none';
+      } else {
+        $confirmButton.style.boxShadow = 'none';
+      }
+      break;
+
+    case 'click':
+      var clickedOnModal = modal === target;
+      var clickedOnModalChild = (0, _handleDom.isDescendant)(modal, target);
+
+      // Ignore click outside if allowOutsideClick is false
+      if (!clickedOnModal && !clickedOnModalChild && modalIsVisible && !params.allowOutsideClick) {
+        break;
+      }
+
+      if (targetedConfirm && doneFunctionExists && modalIsVisible) {
+        handleConfirm(modal, params);
+      } else if (doneFunctionExists && modalIsVisible || targetedOverlay) {
+        handleCancel(modal, params);
+      } else if ((0, _handleDom.isDescendant)(modal, target) && target.tagName === 'BUTTON') {
+        sweetAlert.close();
+      }
+      break;
+  }
+};
+
+/*
+ *  User clicked on "Confirm"/"OK"
+ */
+var handleConfirm = function handleConfirm(modal, params) {
+  var callbackValue = true;
+
+  if ((0, _handleDom.hasClass)(modal, 'show-input')) {
+    callbackValue = modal.querySelector('input').value;
+
+    if (!callbackValue) {
+      callbackValue = '';
+    }
+  }
+
+  params.doneFunction(callbackValue);
+
+  if (params.closeOnConfirm) {
+    sweetAlert.close();
+  }
+  // Disable cancel and confirm button if the parameter is true
+  if (params.showLoaderOnConfirm) {
+    sweetAlert.disableButtons();
+  }
+};
+
+/*
+ *  User clicked on "Cancel"
+ */
+var handleCancel = function handleCancel(modal, params) {
+  // Check if callback function expects a parameter (to track cancel actions)
+  var functionAsStr = String(params.doneFunction).replace(/\s/g, '');
+  var functionHandlesCancel = functionAsStr.substring(0, 9) === 'function(' && functionAsStr.substring(9, 10) !== ')';
+
+  if (functionHandlesCancel) {
+    params.doneFunction(false);
+  }
+
+  if (params.closeOnCancel) {
+    sweetAlert.close();
+  }
+};
+
+exports['default'] = {
+  handleButton: handleButton,
+  handleConfirm: handleConfirm,
+  handleCancel: handleCancel
+};
+module.exports = exports['default'];
+
+},{"./handle-dom":4,"./handle-swal-dom":6,"./utils":9}],4:[function(require,module,exports){
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+  value: true
+});
+var hasClass = function hasClass(elem, className) {
+  return new RegExp(' ' + className + ' ').test(' ' + elem.className + ' ');
+};
+
+var addClass = function addClass(elem, className) {
+  if (!hasClass(elem, className)) {
+    elem.className += ' ' + className;
+  }
+};
+
+var removeClass = function removeClass(elem, className) {
+  var newClass = ' ' + elem.className.replace(/[\t\r\n]/g, ' ') + ' ';
+  if (hasClass(elem, className)) {
+    while (newClass.indexOf(' ' + className + ' ') >= 0) {
+      newClass = newClass.replace(' ' + className + ' ', ' ');
+    }
+    elem.className = newClass.replace(/^\s+|\s+$/g, '');
+  }
+};
+
+var escapeHtml = function escapeHtml(str) {
+  var div = document.createElement('div');
+  div.appendChild(document.createTextNode(str));
+  return div.innerHTML;
+};
+
+var _show = function _show(elem) {
+  elem.style.opacity = '';
+  elem.style.display = 'block';
+};
+
+var show = function show(elems) {
+  if (elems && !elems.length) {
+    return _show(elems);
+  }
+  for (var i = 0; i < elems.length; ++i) {
+    _show(elems[i]);
+  }
+};
+
+var _hide = function _hide(elem) {
+  elem.style.opacity = '';
+  elem.style.display = 'none';
+};
+
+var hide = function hide(elems) {
+  if (elems && !elems.length) {
+    return _hide(elems);
+  }
+  for (var i = 0; i < elems.length; ++i) {
+    _hide(elems[i]);
+  }
+};
+
+var isDescendant = function isDescendant(parent, child) {
+  var node = child.parentNode;
+  while (node !== null) {
+    if (node === parent) {
+      return true;
+    }
+    node = node.parentNode;
+  }
+  return false;
+};
+
+var getTopMargin = function getTopMargin(elem) {
+  elem.style.left = '-9999px';
+  elem.style.display = 'block';
+
+  var height = elem.clientHeight,
+      padding;
+  if (typeof getComputedStyle !== "undefined") {
+    // IE 8
+    padding = parseInt(getComputedStyle(elem).getPropertyValue('padding-top'), 10);
+  } else {
+    padding = parseInt(elem.currentStyle.padding);
+  }
+
+  elem.style.left = '';
+  elem.style.display = 'none';
+  return '-' + parseInt((height + padding) / 2) + 'px';
+};
+
+var fadeIn = function fadeIn(elem, interval) {
+  if (+elem.style.opacity < 1) {
+    interval = interval || 16;
+    elem.style.opacity = 0;
+    elem.style.display = 'block';
+    var last = +new Date();
+    var tick = function tick() {
+      elem.style.opacity = +elem.style.opacity + (new Date() - last) / 100;
+      last = +new Date();
+
+      if (+elem.style.opacity < 1) {
+        setTimeout(tick, interval);
+      }
+    };
+    tick();
+  }
+  elem.style.display = 'block'; //fallback IE8
+};
+
+var fadeOut = function fadeOut(elem, interval) {
+  interval = interval || 16;
+  elem.style.opacity = 1;
+  var last = +new Date();
+  var tick = function tick() {
+    elem.style.opacity = +elem.style.opacity - (new Date() - last) / 100;
+    last = +new Date();
+
+    if (+elem.style.opacity > 0) {
+      setTimeout(tick, interval);
+    } else {
+      elem.style.display = 'none';
+    }
+  };
+  tick();
+};
+
+var fireClick = function fireClick(node) {
+  // Taken from http://www.nonobtrusive.com/2011/11/29/programatically-fire-crossbrowser-click-event-with-javascript/
+  // Then fixed for today's Chrome browser.
+  if (typeof MouseEvent === 'function') {
+    // Up-to-date approach
+    var mevt = new MouseEvent('click', {
+      view: window,
+      bubbles: false,
+      cancelable: true
+    });
+    node.dispatchEvent(mevt);
+  } else if (document.createEvent) {
+    // Fallback
+    var evt = document.createEvent('MouseEvents');
+    evt.initEvent('click', false, false);
+    node.dispatchEvent(evt);
+  } else if (document.createEventObject) {
+    node.fireEvent('onclick');
+  } else if (typeof node.onclick === 'function') {
+    node.onclick();
+  }
+};
+
+var stopEventPropagation = function stopEventPropagation(e) {
+  // In particular, make sure the space bar doesn't scroll the main window.
+  if (typeof e.stopPropagation === 'function') {
+    e.stopPropagation();
+    e.preventDefault();
+  } else if (window.event && window.event.hasOwnProperty('cancelBubble')) {
+    window.event.cancelBubble = true;
+  }
+};
+
+exports.hasClass = hasClass;
+exports.addClass = addClass;
+exports.removeClass = removeClass;
+exports.escapeHtml = escapeHtml;
+exports._show = _show;
+exports.show = show;
+exports._hide = _hide;
+exports.hide = hide;
+exports.isDescendant = isDescendant;
+exports.getTopMargin = getTopMargin;
+exports.fadeIn = fadeIn;
+exports.fadeOut = fadeOut;
+exports.fireClick = fireClick;
+exports.stopEventPropagation = stopEventPropagation;
+
+},{}],5:[function(require,module,exports){
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+  value: true
+});
+
+var _handleDom = require('./handle-dom');
+
+var _handleSwalDom = require('./handle-swal-dom');
+
+var handleKeyDown = function handleKeyDown(event, params, modal) {
+  var e = event || window.event;
+  var keyCode = e.keyCode || e.which;
+
+  var $okButton = modal.querySelector('button.confirm');
+  var $cancelButton = modal.querySelector('button.cancel');
+  var $modalButtons = modal.querySelectorAll('button[tabindex]');
+
+  if ([9, 13, 32, 27].indexOf(keyCode) === -1) {
+    // Don't do work on keys we don't care about.
+    return;
+  }
+
+  var $targetElement = e.target || e.srcElement;
+
+  var btnIndex = -1; // Find the button - note, this is a nodelist, not an array.
+  for (var i = 0; i < $modalButtons.length; i++) {
+    if ($targetElement === $modalButtons[i]) {
+      btnIndex = i;
+      break;
+    }
+  }
+
+  if (keyCode === 9) {
+    // TAB
+    if (btnIndex === -1) {
+      // No button focused. Jump to the confirm button.
+      $targetElement = $okButton;
+    } else {
+      // Cycle to the next button
+      if (btnIndex === $modalButtons.length - 1) {
+        $targetElement = $modalButtons[0];
+      } else {
+        $targetElement = $modalButtons[btnIndex + 1];
+      }
+    }
+
+    (0, _handleDom.stopEventPropagation)(e);
+    $targetElement.focus();
+
+    if (params.confirmButtonColor) {
+      (0, _handleSwalDom.setFocusStyle)($targetElement, params.confirmButtonColor);
+    }
+  } else {
+    if (keyCode === 13) {
+      if ($targetElement.tagName === 'INPUT') {
+        $targetElement = $okButton;
+        $okButton.focus();
+      }
+
+      if (btnIndex === -1) {
+        // ENTER/SPACE clicked outside of a button.
+        $targetElement = $okButton;
+      } else {
+        // Do nothing - let the browser handle it.
+        $targetElement = undefined;
+      }
+    } else if (keyCode === 27 && params.allowEscapeKey === true) {
+      $targetElement = $cancelButton;
+      (0, _handleDom.fireClick)($targetElement, e);
+    } else {
+      // Fallback - let the browser handle it.
+      $targetElement = undefined;
+    }
+  }
+};
+
+exports['default'] = handleKeyDown;
+module.exports = exports['default'];
+
+},{"./handle-dom":4,"./handle-swal-dom":6}],6:[function(require,module,exports){
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+  value: true
+});
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+var _utils = require('./utils');
+
+var _handleDom = require('./handle-dom');
+
+var _defaultParams = require('./default-params');
+
+var _defaultParams2 = _interopRequireDefault(_defaultParams);
+
+/*
+ * Add modal + overlay to DOM
+ */
+
+var _injectedHtml = require('./injected-html');
+
+var _injectedHtml2 = _interopRequireDefault(_injectedHtml);
+
+var modalClass = '.sweet-alert';
+var overlayClass = '.sweet-overlay';
+
+var sweetAlertInitialize = function sweetAlertInitialize() {
+  var sweetWrap = document.createElement('div');
+  sweetWrap.innerHTML = _injectedHtml2['default'];
+
+  // Append elements to body
+  while (sweetWrap.firstChild) {
+    document.body.appendChild(sweetWrap.firstChild);
+  }
+};
+
+/*
+ * Get DOM element of modal
+ */
+var getModal = function getModal() {
+  var $modal = document.querySelector(modalClass);
+
+  if (!$modal) {
+    sweetAlertInitialize();
+    $modal = getModal();
+  }
+
+  return $modal;
+};
+
+/*
+ * Get DOM element of input (in modal)
+ */
+var getInput = function getInput() {
+  var $modal = getModal();
+  if ($modal) {
+    return $modal.querySelector('input');
+  }
+};
+
+/*
+ * Get DOM element of overlay
+ */
+var getOverlay = function getOverlay() {
+  return document.querySelector(overlayClass);
+};
+
+/*
+ * Add box-shadow style to button (depending on its chosen bg-color)
+ */
+var setFocusStyle = function setFocusStyle($button, bgColor) {
+  var rgbColor = (0, _utils.hexToRgb)(bgColor);
+  $button.style.boxShadow = '0 0 2px rgba(' + rgbColor + ', 0.8), inset 0 0 0 1px rgba(0, 0, 0, 0.05)';
+};
+
+/*
+ * Animation when opening modal
+ */
+var openModal = function openModal(callback) {
+  var $modal = getModal();
+  (0, _handleDom.fadeIn)(getOverlay(), 10);
+  (0, _handleDom.show)($modal);
+  (0, _handleDom.addClass)($modal, 'showSweetAlert');
+  (0, _handleDom.removeClass)($modal, 'hideSweetAlert');
+
+  window.previousActiveElement = document.activeElement;
+  var $okButton = $modal.querySelector('button.confirm');
+  $okButton.focus();
+
+  setTimeout(function () {
+    (0, _handleDom.addClass)($modal, 'visible');
+  }, 500);
+
+  var timer = $modal.getAttribute('data-timer');
+
+  if (timer !== 'null' && timer !== '') {
+    var timerCallback = callback;
+    $modal.timeout = setTimeout(function () {
+      var doneFunctionExists = (timerCallback || null) && $modal.getAttribute('data-has-done-function') === 'true';
+      if (doneFunctionExists) {
+        timerCallback(null);
+      } else {
+        sweetAlert.close();
+      }
+    }, timer);
+  }
+};
+
+/*
+ * Reset the styling of the input
+ * (for example if errors have been shown)
+ */
+var resetInput = function resetInput() {
+  var $modal = getModal();
+  var $input = getInput();
+
+  (0, _handleDom.removeClass)($modal, 'show-input');
+  $input.value = _defaultParams2['default'].inputValue;
+  $input.setAttribute('type', _defaultParams2['default'].inputType);
+  $input.setAttribute('placeholder', _defaultParams2['default'].inputPlaceholder);
+
+  resetInputError();
+};
+
+var resetInputError = function resetInputError(event) {
+  // If press enter => ignore
+  if (event && event.keyCode === 13) {
+    return false;
+  }
+
+  var $modal = getModal();
+
+  var $errorIcon = $modal.querySelector('.sa-input-error');
+  (0, _handleDom.removeClass)($errorIcon, 'show');
+
+  var $errorContainer = $modal.querySelector('.sa-error-container');
+  (0, _handleDom.removeClass)($errorContainer, 'show');
+};
+
+/*
+ * Set "margin-top"-property on modal based on its computed height
+ */
+var fixVerticalPosition = function fixVerticalPosition() {
+  var $modal = getModal();
+  $modal.style.marginTop = (0, _handleDom.getTopMargin)(getModal());
+};
+
+exports.sweetAlertInitialize = sweetAlertInitialize;
+exports.getModal = getModal;
+exports.getOverlay = getOverlay;
+exports.getInput = getInput;
+exports.setFocusStyle = setFocusStyle;
+exports.openModal = openModal;
+exports.resetInput = resetInput;
+exports.resetInputError = resetInputError;
+exports.fixVerticalPosition = fixVerticalPosition;
+
+},{"./default-params":2,"./handle-dom":4,"./injected-html":7,"./utils":9}],7:[function(require,module,exports){
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+var injectedHTML =
+
+// Dark overlay
+"<div class=\"sweet-overlay\" tabIndex=\"-1\"></div>" +
+
+// Modal
+"<div class=\"sweet-alert\">" +
+
+// Error icon
+"<div class=\"sa-icon sa-error\">\n      <span class=\"sa-x-mark\">\n        <span class=\"sa-line sa-left\"></span>\n        <span class=\"sa-line sa-right\"></span>\n      </span>\n    </div>" +
+
+// Warning icon
+"<div class=\"sa-icon sa-warning\">\n      <span class=\"sa-body\"></span>\n      <span class=\"sa-dot\"></span>\n    </div>" +
+
+// Info icon
+"<div class=\"sa-icon sa-info\"></div>" +
+
+// Success icon
+"<div class=\"sa-icon sa-success\">\n      <span class=\"sa-line sa-tip\"></span>\n      <span class=\"sa-line sa-long\"></span>\n\n      <div class=\"sa-placeholder\"></div>\n      <div class=\"sa-fix\"></div>\n    </div>" + "<div class=\"sa-icon sa-custom\"></div>" +
+
+// Title, text and input
+"<h2>Title</h2>\n    <p>Text</p>\n    <fieldset>\n      <input type=\"text\" tabIndex=\"3\" />\n      <div class=\"sa-input-error\"></div>\n    </fieldset>" +
+
+// Input errors
+"<div class=\"sa-error-container\">\n      <div class=\"icon\">!</div>\n      <p>Not valid!</p>\n    </div>" +
+
+// Cancel and confirm buttons
+"<div class=\"sa-button-container\">\n      <button class=\"cancel\" tabIndex=\"2\">Cancel</button>\n      <div class=\"sa-confirm-button-container\">\n        <button class=\"confirm\" tabIndex=\"1\">OK</button>" +
+
+// Loading animation
+"<div class=\"la-ball-fall\">\n          <div></div>\n          <div></div>\n          <div></div>\n        </div>\n      </div>\n    </div>" +
+
+// End of modal
+"</div>";
+
+exports["default"] = injectedHTML;
+module.exports = exports["default"];
+
+},{}],8:[function(require,module,exports){
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+  value: true
+});
+
+var _utils = require('./utils');
+
+var _handleSwalDom = require('./handle-swal-dom');
+
+var _handleDom = require('./handle-dom');
+
+/*
+ * Set type, text and actions on modal
+ */
+var alertTypes = ['error', 'warning', 'info', 'success', 'input', 'prompt'];
+
+var setParameters = function setParameters(params) {
+  var modal = (0, _handleSwalDom.getModal)();
+
+  var $title = modal.querySelector('h2');
+  var $text = modal.querySelector('p');
+  var $cancelBtn = modal.querySelector('button.cancel');
+  var $confirmBtn = modal.querySelector('button.confirm');
+
+  /*
+   * Title
+   */
+  $title.innerHTML = params.html ? params.title : (0, _handleDom.escapeHtml)(params.title).split('\n').join('<br>');
+
+  /*
+   * Text
+   */
+  $text.innerHTML = params.html ? params.text : (0, _handleDom.escapeHtml)(params.text || '').split('\n').join('<br>');
+  if (params.text) (0, _handleDom.show)($text);
+
+  /*
+   * Custom class
+   */
+  if (params.customClass) {
+    (0, _handleDom.addClass)(modal, params.customClass);
+    modal.setAttribute('data-custom-class', params.customClass);
+  } else {
+    // Find previously set classes and remove them
+    var customClass = modal.getAttribute('data-custom-class');
+    (0, _handleDom.removeClass)(modal, customClass);
+    modal.setAttribute('data-custom-class', '');
+  }
+
+  /*
+   * Icon
+   */
+  (0, _handleDom.hide)(modal.querySelectorAll('.sa-icon'));
+
+  if (params.type && !(0, _utils.isIE8)()) {
+    var _ret = (function () {
+
+      var validType = false;
+
+      for (var i = 0; i < alertTypes.length; i++) {
+        if (params.type === alertTypes[i]) {
+          validType = true;
+          break;
+        }
+      }
+
+      if (!validType) {
+        logStr('Unknown alert type: ' + params.type);
+        return {
+          v: false
+        };
+      }
+
+      var typesWithIcons = ['success', 'error', 'warning', 'info'];
+      var $icon = undefined;
+
+      if (typesWithIcons.indexOf(params.type) !== -1) {
+        $icon = modal.querySelector('.sa-icon.' + 'sa-' + params.type);
+        (0, _handleDom.show)($icon);
+      }
+
+      var $input = (0, _handleSwalDom.getInput)();
+
+      // Animate icon
+      switch (params.type) {
+
+        case 'success':
+          (0, _handleDom.addClass)($icon, 'animate');
+          (0, _handleDom.addClass)($icon.querySelector('.sa-tip'), 'animateSuccessTip');
+          (0, _handleDom.addClass)($icon.querySelector('.sa-long'), 'animateSuccessLong');
+          break;
+
+        case 'error':
+          (0, _handleDom.addClass)($icon, 'animateErrorIcon');
+          (0, _handleDom.addClass)($icon.querySelector('.sa-x-mark'), 'animateXMark');
+          break;
+
+        case 'warning':
+          (0, _handleDom.addClass)($icon, 'pulseWarning');
+          (0, _handleDom.addClass)($icon.querySelector('.sa-body'), 'pulseWarningIns');
+          (0, _handleDom.addClass)($icon.querySelector('.sa-dot'), 'pulseWarningIns');
+          break;
+
+        case 'input':
+        case 'prompt':
+          $input.setAttribute('type', params.inputType);
+          $input.value = params.inputValue;
+          $input.setAttribute('placeholder', params.inputPlaceholder);
+          (0, _handleDom.addClass)(modal, 'show-input');
+          setTimeout(function () {
+            $input.focus();
+            $input.addEventListener('keyup', swal.resetInputError);
+          }, 400);
+          break;
+      }
+    })();
+
+    if (typeof _ret === 'object') return _ret.v;
+  }
+
+  /*
+   * Custom image
+   */
+  if (params.imageUrl) {
+    var $customIcon = modal.querySelector('.sa-icon.sa-custom');
+
+    $customIcon.style.backgroundImage = 'url(' + params.imageUrl + ')';
+    (0, _handleDom.show)($customIcon);
+
+    var _imgWidth = 80;
+    var _imgHeight = 80;
+
+    if (params.imageSize) {
+      var dimensions = params.imageSize.toString().split('x');
+      var imgWidth = dimensions[0];
+      var imgHeight = dimensions[1];
+
+      if (!imgWidth || !imgHeight) {
+        logStr('Parameter imageSize expects value with format WIDTHxHEIGHT, got ' + params.imageSize);
+      } else {
+        _imgWidth = imgWidth;
+        _imgHeight = imgHeight;
+      }
+    }
+
+    $customIcon.setAttribute('style', $customIcon.getAttribute('style') + 'width:' + _imgWidth + 'px; height:' + _imgHeight + 'px');
+  }
+
+  /*
+   * Show cancel button?
+   */
+  modal.setAttribute('data-has-cancel-button', params.showCancelButton);
+  if (params.showCancelButton) {
+    $cancelBtn.style.display = 'inline-block';
+  } else {
+    (0, _handleDom.hide)($cancelBtn);
+  }
+
+  /*
+   * Show confirm button?
+   */
+  modal.setAttribute('data-has-confirm-button', params.showConfirmButton);
+  if (params.showConfirmButton) {
+    $confirmBtn.style.display = 'inline-block';
+  } else {
+    (0, _handleDom.hide)($confirmBtn);
+  }
+
+  /*
+   * Custom text on cancel/confirm buttons
+   */
+  if (params.cancelButtonText) {
+    $cancelBtn.innerHTML = (0, _handleDom.escapeHtml)(params.cancelButtonText);
+  }
+  if (params.confirmButtonText) {
+    $confirmBtn.innerHTML = (0, _handleDom.escapeHtml)(params.confirmButtonText);
+  }
+
+  /*
+   * Custom color on confirm button
+   */
+  if (params.confirmButtonColor) {
+    // Set confirm button to selected background color
+    $confirmBtn.style.backgroundColor = params.confirmButtonColor;
+
+    // Set the confirm button color to the loading ring
+    $confirmBtn.style.borderLeftColor = params.confirmLoadingButtonColor;
+    $confirmBtn.style.borderRightColor = params.confirmLoadingButtonColor;
+
+    // Set box-shadow to default focused button
+    (0, _handleSwalDom.setFocusStyle)($confirmBtn, params.confirmButtonColor);
+  }
+
+  /*
+   * Allow outside click
+   */
+  modal.setAttribute('data-allow-outside-click', params.allowOutsideClick);
+
+  /*
+   * Callback function
+   */
+  var hasDoneFunction = params.doneFunction ? true : false;
+  modal.setAttribute('data-has-done-function', hasDoneFunction);
+
+  /*
+   * Animation
+   */
+  if (!params.animation) {
+    modal.setAttribute('data-animation', 'none');
+  } else if (typeof params.animation === 'string') {
+    modal.setAttribute('data-animation', params.animation); // Custom animation
+  } else {
+      modal.setAttribute('data-animation', 'pop');
+    }
+
+  /*
+   * Timer
+   */
+  modal.setAttribute('data-timer', params.timer);
+};
+
+exports['default'] = setParameters;
+module.exports = exports['default'];
+
+},{"./handle-dom":4,"./handle-swal-dom":6,"./utils":9}],9:[function(require,module,exports){
+/*
+ * Allow user to pass their own params
+ */
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+  value: true
+});
+var extend = function extend(a, b) {
+  for (var key in b) {
+    if (b.hasOwnProperty(key)) {
+      a[key] = b[key];
+    }
+  }
+  return a;
+};
+
+/*
+ * Convert HEX codes to RGB values (#000000 -> rgb(0,0,0))
+ */
+var hexToRgb = function hexToRgb(hex) {
+  var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
+  return result ? parseInt(result[1], 16) + ', ' + parseInt(result[2], 16) + ', ' + parseInt(result[3], 16) : null;
+};
+
+/*
+ * Check if the user is using Internet Explorer 8 (for fallbacks)
+ */
+var isIE8 = function isIE8() {
+  return window.attachEvent && !window.addEventListener;
+};
+
+/*
+ * IE compatible logging for developers
+ */
+var logStr = function logStr(string) {
+  if (typeof window !== 'undefined' && window.console) {
+    // IE...
+    window.console.log('SweetAlert: ' + string);
+  }
+};
+
+/*
+ * Set hover, active and focus-states for buttons
+ * (source: http://www.sitepoint.com/javascript-generate-lighter-darker-color)
+ */
+var colorLuminance = function colorLuminance(hex, lum) {
+  // Validate hex string
+  hex = String(hex).replace(/[^0-9a-f]/gi, '');
+  if (hex.length < 6) {
+    hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
+  }
+  lum = lum || 0;
+
+  // Convert to decimal and change luminosity
+  var rgb = '#';
+  var c;
+  var i;
+
+  for (i = 0; i < 3; i++) {
+    c = parseInt(hex.substr(i * 2, 2), 16);
+    c = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16);
+    rgb += ('00' + c).substr(c.length);
+  }
+
+  return rgb;
+};
+
+exports.extend = extend;
+exports.hexToRgb = hexToRgb;
+exports.isIE8 = isIE8;
+exports.logStr = logStr;
+exports.colorLuminance = colorLuminance;
+
+},{}]},{},[1])
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCIvVXNlcnMvemh1c2hpeWEvUHJvamVjdHMvbm9kZS9zd2VldGFsZXJ0L2Rldi9zd2VldGFsZXJ0LmVzNi5qcyIsIi9Vc2Vycy96aHVzaGl5YS9Qcm9qZWN0cy9ub2RlL3N3ZWV0YWxlcnQvZGV2L21vZHVsZXMvZGVmYXVsdC1wYXJhbXMuanMiLCIvVXNlcnMvemh1c2hpeWEvUHJvamVjdHMvbm9kZS9zd2VldGFsZXJ0L2Rldi9tb2R1bGVzL2hhbmRsZS1jbGljay5qcyIsIi9Vc2Vycy96aHVzaGl5YS9Qcm9qZWN0cy9ub2RlL3N3ZWV0YWxlcnQvZGV2L21vZHVsZXMvaGFuZGxlLWRvbS5qcyIsIi9Vc2Vycy96aHVzaGl5YS9Qcm9qZWN0cy9ub2RlL3N3ZWV0YWxlcnQvZGV2L21vZHVsZXMvaGFuZGxlLWtleS5qcyIsIi9Vc2Vycy96aHVzaGl5YS9Qcm9qZWN0cy9ub2RlL3N3ZWV0YWxlcnQvZGV2L21vZHVsZXMvaGFuZGxlLXN3YWwtZG9tLmpzIiwiL1VzZXJzL3podXNoaXlhL1Byb2plY3RzL25vZGUvc3dlZXRhbGVydC9kZXYvbW9kdWxlcy9pbmplY3RlZC1odG1sLmpzIiwiL1VzZXJzL3podXNoaXlhL1Byb2plY3RzL25vZGUvc3dlZXRhbGVydC9kZXYvbW9kdWxlcy9zZXQtcGFyYW1zLmpzIiwiL1VzZXJzL3podXNoaXlhL1Byb2plY3RzL25vZGUvc3dlZXRhbGVydC9kZXYvbW9kdWxlcy91dGlscy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7OztnQ0NnQk8sc0JBQXNCOzs7Ozs7NEJBV3RCLGlCQUFpQjs7Ozs7O29DQWNqQiwyQkFBMkI7Ozs7a0NBSXdCLHdCQUF3Qjs7Z0NBQ3hELHNCQUFzQjs7Ozs7O29DQUl0QiwwQkFBMEI7Ozs7Z0NBQzFCLHNCQUFzQjs7Ozs7Ozs7QUFNaEQsSUFBSSxxQkFBcUIsQ0FBQztBQUMxQixJQUFJLGlCQUFpQixDQUFDOzs7Ozs7QUFPdEIsSUFBSSxVQUFVLEVBQUUsSUFBSSxDQUFDOztxQkFFTixVQUFVLEdBQUcsSUFBSSxHQUFHLFlBQVc7QUFDNUMsTUFBSSxjQUFjLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVsQyxrQ0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDMUMseUNBQVksQ0FBQzs7Ozs7OztBQU9iLFdBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO0FBQzlCLFFBQUksSUFBSSxHQUFHLGNBQWMsQ0FBQztBQUMxQixXQUFPLEFBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsR0FBSyxrQ0FBYyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7R0FDcEU7O0FBRUQsTUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFO0FBQ2hDLDhCQUFPLDBDQUEwQyxDQUFDLENBQUM7QUFDbkQsV0FBTyxLQUFLLENBQUM7R0FDZDs7QUFFRCxNQUFJLE1BQU0sR0FBRywwQkFBTyxFQUFFLG9DQUFnQixDQUFDOztBQUV2QyxVQUFRLE9BQU8sY0FBYzs7O0FBRzNCLFNBQUssUUFBUTtBQUNYLFlBQU0sQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDO0FBQzlCLFlBQU0sQ0FBQyxJQUFJLEdBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNsQyxZQUFNLENBQUMsSUFBSSxHQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDbEMsWUFBTTs7QUFBQTtBQUdSLFNBQUssUUFBUTtBQUNYLFVBQUksY0FBYyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUU7QUFDdEMsa0NBQU8sMkJBQTJCLENBQUMsQ0FBQztBQUNwQyxlQUFPLEtBQUssQ0FBQztPQUNkOztBQUVELFlBQU0sQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQzs7QUFFcEMsV0FBSyxJQUFJLFVBQVUsdUNBQW1CO0FBQ3BDLGNBQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztPQUNwRDs7O0FBR0QsWUFBTSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLEdBQUcsa0NBQWMsaUJBQWlCLENBQUM7QUFDakcsWUFBTSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLENBQUM7OztBQUdsRSxZQUFNLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7O0FBRTNDLFlBQU07O0FBQUEsQUFFUjtBQUNFLGdDQUFPLGtFQUFrRSxHQUFHLE9BQU8sY0FBYyxDQUFDLENBQUM7QUFDbkcsYUFBTyxLQUFLLENBQUM7O0FBQUEsR0FFaEI7O0FBRUQscUNBQWMsTUFBTSxDQUFDLENBQUM7QUFDdEIsa0RBQXFCLENBQUM7QUFDdEIsdUNBQVUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7OztBQUd4QixNQUFJLEtBQUssR0FBRyxxQ0FBVSxDQUFDOzs7OztBQU12QixNQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDaEQsTUFBSSxZQUFZLEdBQUcsQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25HLE1BQUksYUFBYSxHQUFHLFNBQWhCLGFBQWEsQ0FBSSxDQUFDO1dBQUssc0NBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUM7R0FBQSxDQUFDOztBQUUxRCxPQUFLLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRTtBQUM3RCxTQUFLLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRTtBQUNqRSxVQUFJLE1BQU0sR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDcEMsY0FBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLGFBQWEsQ0FBQztLQUM1QztHQUNGOzs7QUFHRCx5Q0FBWSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUM7O0FBRXJDLHVCQUFxQixHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7O0FBRXpDLE1BQUksVUFBVSxHQUFHLFNBQWIsVUFBVSxDQUFJLENBQUM7V0FBSyxtQ0FBYyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQztHQUFBLENBQUM7QUFDeEQsUUFBTSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7O0FBRTlCLFFBQU0sQ0FBQyxPQUFPLEdBQUcsWUFBWTs7QUFFM0IsY0FBVSxDQUFDLFlBQVk7OztBQUdyQixVQUFJLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtBQUNuQyx5QkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMxQix5QkFBaUIsR0FBRyxTQUFTLENBQUM7T0FDL0I7S0FDRixFQUFFLENBQUMsQ0FBQyxDQUFDO0dBQ1AsQ0FBQzs7O0FBR0YsTUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0NBQ3RCOzs7Ozs7QUFRRCxVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBUyxVQUFVLEVBQUU7QUFDL0QsTUFBSSxDQUFDLFVBQVUsRUFBRTtBQUNmLFVBQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztHQUMzQztBQUNELE1BQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFO0FBQ2xDLFVBQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztHQUNsRDs7QUFFRCwrREFBc0IsVUFBVSxDQUFDLENBQUM7Q0FDbkMsQ0FBQzs7Ozs7QUFNRixVQUFVLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBVztBQUN6QyxNQUFJLEtBQUssR0FBRyxxQ0FBVSxDQUFDOztBQUV2QixpQ0FBUSx1Q0FBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLGlDQUFRLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsQixxQ0FBWSxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUNyQyxrQ0FBUyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUNsQyxxQ0FBWSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7Ozs7O0FBSzlCLE1BQUksWUFBWSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUM5RCxxQ0FBWSxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDckMscUNBQVksWUFBWSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3hFLHFDQUFZLFlBQVksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQzs7QUFFMUUsTUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQzFELHFDQUFZLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQzVDLHFDQUFZLFVBQVUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7O0FBRXBFLE1BQUksWUFBWSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUM5RCxxQ0FBWSxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDMUMscUNBQVksWUFBWSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3ZFLHFDQUFZLFlBQVksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQzs7O0FBR3RFLFlBQVUsQ0FBQyxZQUFXO0FBQ3BCLFFBQUksV0FBVyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUMxRCx1Q0FBWSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7R0FDakMsRUFBRSxHQUFHLENBQUMsQ0FBQzs7O0FBR1IscUNBQVksUUFBUSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDOzs7QUFHN0MsUUFBTSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQztBQUN6QyxNQUFJLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRTtBQUNoQyxVQUFNLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLENBQUM7R0FDdEM7QUFDRCxtQkFBaUIsR0FBRyxTQUFTLENBQUM7QUFDOUIsY0FBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzs7QUFFNUIsU0FBTyxJQUFJLENBQUM7Q0FDYixDQUFDOzs7Ozs7QUFPRixVQUFVLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBUyxZQUFZLEVBQUU7QUFDdkUsTUFBSSxLQUFLLEdBQUcscUNBQVUsQ0FBQzs7QUFFdkIsTUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3hELGtDQUFTLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQzs7QUFFN0IsTUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ2pFLGtDQUFTLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQzs7QUFFbEMsaUJBQWUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQzs7QUFFNUQsWUFBVSxDQUFDLFlBQVc7QUFDcEIsY0FBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO0dBQzVCLEVBQUUsQ0FBQyxDQUFDLENBQUM7O0FBRU4sT0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztDQUN0QyxDQUFDOzs7OztBQU1GLFVBQVUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxVQUFTLEtBQUssRUFBRTs7QUFFbEUsTUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxFQUFFLEVBQUU7QUFDakMsV0FBTyxLQUFLLENBQUM7R0FDZDs7QUFFRCxNQUFJLE1BQU0sR0FBRyxxQ0FBVSxDQUFDOztBQUV4QixNQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDekQscUNBQVksVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDOztBQUVoQyxNQUFJLGVBQWUsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDbEUscUNBQVksZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQ3RDLENBQUM7Ozs7O0FBS0YsVUFBVSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQ2hFLE1BQUksS0FBSyxHQUFHLHFDQUFVLENBQUM7QUFDdkIsTUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzNELE1BQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDekQsZ0JBQWMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQy9CLGVBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0NBQy9CLENBQUM7Ozs7O0FBS0YsVUFBVSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzlELE1BQUksS0FBSyxHQUFHLHFDQUFVLENBQUM7QUFDdkIsTUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzNELE1BQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDekQsZ0JBQWMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQ2hDLGVBQWEsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0NBQ2hDLENBQUM7O0FBRUYsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7OztBQUdqQyxRQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO0NBQzlDLE1BQU07QUFDTCw0QkFBTyxrQ0FBa0MsQ0FBQyxDQUFDO0NBQzVDOzs7Ozs7Ozs7QUN0VEQsSUFBSSxhQUFhLEdBQUc7QUFDbEIsT0FBSyxFQUFFLEVBQUU7QUFDVCxNQUFJLEVBQUUsRUFBRTtBQUNSLE1BQUksRUFBRSxJQUFJO0FBQ1YsbUJBQWlCLEVBQUUsS0FBSztBQUN4QixtQkFBaUIsRUFBRSxJQUFJO0FBQ3ZCLGtCQUFnQixFQUFFLEtBQUs7QUFDdkIsZ0JBQWMsRUFBRSxJQUFJO0FBQ3BCLGVBQWEsRUFBRSxJQUFJO0FBQ25CLG1CQUFpQixFQUFFLElBQUk7QUFDdkIsb0JBQWtCLEVBQUUsU0FBUztBQUM3QixrQkFBZ0IsRUFBRSxRQUFRO0FBQzFCLFVBQVEsRUFBRSxJQUFJO0FBQ2QsV0FBUyxFQUFFLElBQUk7QUFDZixPQUFLLEVBQUUsSUFBSTtBQUNYLGFBQVcsRUFBRSxFQUFFO0FBQ2YsTUFBSSxFQUFFLEtBQUs7QUFDWCxXQUFTLEVBQUUsSUFBSTtBQUNmLGdCQUFjLEVBQUUsSUFBSTtBQUNwQixXQUFTLEVBQUUsTUFBTTtBQUNqQixrQkFBZ0IsRUFBRSxFQUFFO0FBQ3BCLFlBQVUsRUFBRSxFQUFFO0FBQ2QscUJBQW1CLEVBQUUsS0FBSztDQUMzQixDQUFDOztxQkFFYSxhQUFhOzs7Ozs7Ozs7O3FCQ3pCRyxTQUFTOzs2QkFDZixtQkFBbUI7O3lCQUNMLGNBQWM7Ozs7O0FBTXJELElBQUksWUFBWSxHQUFHLFNBQWYsWUFBWSxDQUFZLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQ2hELE1BQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQzlCLE1BQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQzs7QUFFdEMsTUFBSSxlQUFlLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakUsTUFBSSxlQUFlLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdkUsTUFBSSxjQUFjLEdBQUkseUJBQVMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2pELE1BQUksa0JBQWtCLEdBQUksTUFBTSxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLEtBQUssTUFBTSxBQUFDLENBQUM7Ozs7QUFJMUcsTUFBSSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQztBQUN6QyxNQUFJLGVBQWUsSUFBSSxNQUFNLENBQUMsa0JBQWtCLEVBQUU7QUFDaEQsZUFBVyxHQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztBQUN6QyxjQUFVLEdBQUssMkJBQWUsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEQsZUFBVyxHQUFJLDJCQUFlLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQ25EOztBQUVELFdBQVMsMkJBQTJCLENBQUMsS0FBSyxFQUFFO0FBQzFDLFFBQUksZUFBZSxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTtBQUNoRCxZQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7S0FDdEM7R0FDRjs7QUFFRCxVQUFRLENBQUMsQ0FBQyxJQUFJO0FBQ1osU0FBSyxXQUFXO0FBQ2QsaUNBQTJCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDeEMsWUFBTTs7QUFBQSxBQUVSLFNBQUssVUFBVTtBQUNiLGlDQUEyQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3pDLFlBQU07O0FBQUEsQUFFUixTQUFLLFdBQVc7QUFDZCxpQ0FBMkIsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6QyxZQUFNOztBQUFBLEFBRVIsU0FBSyxTQUFTO0FBQ1osaUNBQTJCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDeEMsWUFBTTs7QUFBQSxBQUVSLFNBQUssT0FBTztBQUNWLFVBQUksY0FBYyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUMzRCxVQUFJLGFBQWEsR0FBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDOztBQUUxRCxVQUFJLGVBQWUsRUFBRTtBQUNuQixxQkFBYSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO09BQ3hDLE1BQU07QUFDTCxzQkFBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO09BQ3pDO0FBQ0QsWUFBTTs7QUFBQSxBQUVSLFNBQUssT0FBTztBQUNWLFVBQUksY0FBYyxHQUFJLEtBQUssS0FBSyxNQUFNLEFBQUMsQ0FBQztBQUN4QyxVQUFJLG1CQUFtQixHQUFHLDZCQUFhLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQzs7O0FBR3RELFVBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxjQUFjLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUU7QUFDMUYsY0FBTTtPQUNQOztBQUVELFVBQUksZUFBZSxJQUFJLGtCQUFrQixJQUFJLGNBQWMsRUFBRTtBQUMzRCxxQkFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztPQUM5QixNQUFNLElBQUksa0JBQWtCLElBQUksY0FBYyxJQUFJLGVBQWUsRUFBRTtBQUNsRSxvQkFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztPQUM3QixNQUFNLElBQUksNkJBQWEsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQ3JFLGtCQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7T0FDcEI7QUFDRCxZQUFNO0FBQUEsR0FDVDtDQUNGLENBQUM7Ozs7O0FBS0YsSUFBSSxhQUFhLEdBQUcsU0FBaEIsYUFBYSxDQUFZLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDMUMsTUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDOztBQUV6QixNQUFJLHlCQUFTLEtBQUssRUFBRSxZQUFZLENBQUMsRUFBRTtBQUNqQyxpQkFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDOztBQUVuRCxRQUFJLENBQUMsYUFBYSxFQUFFO0FBQ2xCLG1CQUFhLEdBQUcsRUFBRSxDQUFDO0tBQ3BCO0dBQ0Y7O0FBRUQsUUFBTSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQzs7QUFFbkMsTUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFO0FBQ3pCLGNBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztHQUNwQjs7QUFFRCxNQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRTtBQUM5QixjQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7R0FDN0I7Q0FDRixDQUFDOzs7OztBQUtGLElBQUksWUFBWSxHQUFHLFNBQWYsWUFBWSxDQUFZLEtBQUssRUFBRSxNQUFNLEVBQUU7O0FBRXpDLE1BQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuRSxNQUFJLHFCQUFxQixHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFdBQVcsSUFBSSxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUM7O0FBRXBILE1BQUkscUJBQXFCLEVBQUU7QUFDekIsVUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztHQUM1Qjs7QUFFRCxNQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUU7QUFDeEIsY0FBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0dBQ3BCO0NBQ0YsQ0FBQzs7cUJBR2E7QUFDYixjQUFZLEVBQVosWUFBWTtBQUNaLGVBQWEsRUFBYixhQUFhO0FBQ2IsY0FBWSxFQUFaLFlBQVk7Q0FDYjs7Ozs7Ozs7O0FDL0hELElBQUksUUFBUSxHQUFHLFNBQVgsUUFBUSxDQUFZLElBQUksRUFBRSxTQUFTLEVBQUU7QUFDdkMsU0FBTyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEdBQUcsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsQ0FBQztDQUMzRSxDQUFDOztBQUVGLElBQUksUUFBUSxHQUFHLFNBQVgsUUFBUSxDQUFZLElBQUksRUFBRSxTQUFTLEVBQUU7QUFDdkMsTUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUU7QUFDOUIsUUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDO0dBQ25DO0NBQ0YsQ0FBQzs7QUFFRixJQUFJLFdBQVcsR0FBRyxTQUFkLFdBQVcsQ0FBWSxJQUFJLEVBQUUsU0FBUyxFQUFFO0FBQzFDLE1BQUksUUFBUSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3BFLE1BQUksUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsRUFBRTtBQUM3QixXQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkQsY0FBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLFNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDekQ7QUFDRCxRQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0dBQ3JEO0NBQ0YsQ0FBQzs7QUFFRixJQUFJLFVBQVUsR0FBRyxTQUFiLFVBQVUsQ0FBWSxHQUFHLEVBQUU7QUFDN0IsTUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QyxLQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxTQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUM7Q0FDdEIsQ0FBQzs7QUFFRixJQUFJLEtBQUssR0FBRyxTQUFSLEtBQUssQ0FBWSxJQUFJLEVBQUU7QUFDekIsTUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLE1BQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztDQUM5QixDQUFDOztBQUVGLElBQUksSUFBSSxHQUFHLFNBQVAsSUFBSSxDQUFZLEtBQUssRUFBRTtBQUN6QixNQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7QUFDMUIsV0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7R0FDckI7QUFDRCxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtBQUNyQyxTQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7R0FDakI7Q0FDRixDQUFDOztBQUVGLElBQUksS0FBSyxHQUFHLFNBQVIsS0FBSyxDQUFZLElBQUksRUFBRTtBQUN6QixNQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDeEIsTUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0NBQzdCLENBQUM7O0FBRUYsSUFBSSxJQUFJLEdBQUcsU0FBUCxJQUFJLENBQVksS0FBSyxFQUFFO0FBQ3pCLE1BQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtBQUMxQixXQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztHQUNyQjtBQUNELE9BQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3JDLFNBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztHQUNqQjtDQUNGLENBQUM7O0FBRUYsSUFBSSxZQUFZLEdBQUcsU0FBZixZQUFZLENBQVksTUFBTSxFQUFFLEtBQUssRUFBRTtBQUN6QyxNQUFJLElBQUksR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO0FBQzVCLFNBQU8sSUFBSSxLQUFLLElBQUksRUFBRTtBQUNwQixRQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7QUFDbkIsYUFBTyxJQUFJLENBQUM7S0FDYjtBQUNELFFBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO0dBQ3hCO0FBQ0QsU0FBTyxLQUFLLENBQUM7Q0FDZCxDQUFDOztBQUVGLElBQUksWUFBWSxHQUFHLFNBQWYsWUFBWSxDQUFZLElBQUksRUFBRTtBQUNoQyxNQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7QUFDNUIsTUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUU3QixNQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWTtNQUMxQixPQUFPLENBQUM7QUFDWixNQUFJLE9BQU8sZ0JBQWdCLEtBQUssV0FBVyxFQUFFOztBQUMzQyxXQUFPLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0dBQ2hGLE1BQU07QUFDTCxXQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7R0FDL0M7O0FBRUQsTUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ3JCLE1BQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztBQUM1QixTQUFRLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFBLEdBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFFO0NBQ3hELENBQUM7O0FBRUYsSUFBSSxNQUFNLEdBQUcsU0FBVCxNQUFNLENBQVksSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUNwQyxNQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFO0FBQzNCLFlBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQzFCLFFBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUN2QixRQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDN0IsUUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQ3ZCLFFBQUksSUFBSSxHQUFHLFNBQVAsSUFBSSxHQUFjO0FBQ3BCLFVBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQSxHQUFJLEdBQUcsQ0FBQztBQUNyRSxVQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDOztBQUVuQixVQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFO0FBQzNCLGtCQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO09BQzVCO0tBQ0YsQ0FBQztBQUNGLFFBQUksRUFBRSxDQUFDO0dBQ1I7QUFDRCxNQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Q0FDOUIsQ0FBQzs7QUFFRixJQUFJLE9BQU8sR0FBRyxTQUFWLE9BQU8sQ0FBWSxJQUFJLEVBQUUsUUFBUSxFQUFFO0FBQ3JDLFVBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQzFCLE1BQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUN2QixNQUFJLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7QUFDdkIsTUFBSSxJQUFJLEdBQUcsU0FBUCxJQUFJLEdBQWM7QUFDcEIsUUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFBLEdBQUksR0FBRyxDQUFDO0FBQ3JFLFFBQUksR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7O0FBRW5CLFFBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUU7QUFDM0IsZ0JBQVUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDNUIsTUFBTTtBQUNMLFVBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztLQUM3QjtHQUNGLENBQUM7QUFDRixNQUFJLEVBQUUsQ0FBQztDQUNSLENBQUM7O0FBRUYsSUFBSSxTQUFTLEdBQUcsU0FBWixTQUFTLENBQVksSUFBSSxFQUFFOzs7QUFHN0IsTUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLEVBQUU7O0FBRXBDLFFBQUksSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRTtBQUNqQyxVQUFJLEVBQUUsTUFBTTtBQUNaLGFBQU8sRUFBRSxLQUFLO0FBQ2QsZ0JBQVUsRUFBRSxJQUFJO0tBQ2pCLENBQUMsQ0FBQztBQUNILFFBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDMUIsTUFBTSxJQUFLLFFBQVEsQ0FBQyxXQUFXLEVBQUc7O0FBRWpDLFFBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDOUMsT0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3JDLFFBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7R0FDekIsTUFBTSxJQUFJLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtBQUNyQyxRQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFFO0dBQzVCLE1BQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFHO0FBQzlDLFFBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztHQUNoQjtDQUNGLENBQUM7O0FBRUYsSUFBSSxvQkFBb0IsR0FBRyxTQUF2QixvQkFBb0IsQ0FBWSxDQUFDLEVBQUU7O0FBRXJDLE1BQUksT0FBTyxDQUFDLENBQUMsZUFBZSxLQUFLLFVBQVUsRUFBRTtBQUMzQyxLQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDcEIsS0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0dBQ3BCLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFO0FBQ3RFLFVBQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztHQUNsQztDQUNGLENBQUM7O1FBR0EsUUFBUSxHQUFSLFFBQVE7UUFBRSxRQUFRLEdBQVIsUUFBUTtRQUFFLFdBQVcsR0FBWCxXQUFXO1FBQy9CLFVBQVUsR0FBVixVQUFVO1FBQ1YsS0FBSyxHQUFMLEtBQUs7UUFBRSxJQUFJLEdBQUosSUFBSTtRQUFFLEtBQUssR0FBTCxLQUFLO1FBQUUsSUFBSSxHQUFKLElBQUk7UUFDeEIsWUFBWSxHQUFaLFlBQVk7UUFDWixZQUFZLEdBQVosWUFBWTtRQUNaLE1BQU0sR0FBTixNQUFNO1FBQUUsT0FBTyxHQUFQLE9BQU87UUFDZixTQUFTLEdBQVQsU0FBUztRQUNULG9CQUFvQixHQUFwQixvQkFBb0I7Ozs7Ozs7Ozt5QkMvSjBCLGNBQWM7OzZCQUNoQyxtQkFBbUI7O0FBR2pELElBQUksYUFBYSxHQUFHLFNBQWhCLGFBQWEsQ0FBWSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtBQUNqRCxNQUFJLENBQUMsR0FBRyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztBQUM5QixNQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUM7O0FBRW5DLE1BQUksU0FBUyxHQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUMxRCxNQUFJLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ3pELE1BQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDOztBQUcvRCxNQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFOztBQUUzQyxXQUFPO0dBQ1I7O0FBRUQsTUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDOztBQUU5QyxNQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsQixPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM3QyxRQUFJLGNBQWMsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDdkMsY0FBUSxHQUFHLENBQUMsQ0FBQztBQUNiLFlBQU07S0FDUDtHQUNGOztBQUVELE1BQUksT0FBTyxLQUFLLENBQUMsRUFBRTs7QUFFakIsUUFBSSxRQUFRLEtBQUssQ0FBQyxDQUFDLEVBQUU7O0FBRW5CLG9CQUFjLEdBQUcsU0FBUyxDQUFDO0tBQzVCLE1BQU07O0FBRUwsVUFBSSxRQUFRLEtBQUssYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDekMsc0JBQWMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7T0FDbkMsTUFBTTtBQUNMLHNCQUFjLEdBQUcsYUFBYSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztPQUM5QztLQUNGOztBQUVELHlDQUFxQixDQUFDLENBQUMsQ0FBQztBQUN4QixrQkFBYyxDQUFDLEtBQUssRUFBRSxDQUFDOztBQUV2QixRQUFJLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTtBQUM3Qix3Q0FBYyxjQUFjLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0FDMUQ7R0FDRixNQUFNO0FBQ0wsUUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFO0FBQ2xCLFVBQUksY0FBYyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUU7QUFDdEMsc0JBQWMsR0FBRyxTQUFTLENBQUM7QUFDM0IsaUJBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztPQUNuQjs7QUFFRCxVQUFJLFFBQVEsS0FBSyxDQUFDLENBQUMsRUFBRTs7QUFFbkIsc0JBQWMsR0FBRyxTQUFTLENBQUM7T0FDNUIsTUFBTTs7QUFFTCxzQkFBYyxHQUFHLFNBQVMsQ0FBQztPQUM1QjtLQUNGLE1BQU0sSUFBSSxPQUFPLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxjQUFjLEtBQUssSUFBSSxFQUFFO0FBQzNELG9CQUFjLEdBQUcsYUFBYSxDQUFDO0FBQy9CLGdDQUFVLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUM5QixNQUFNOztBQUVMLG9CQUFjLEdBQUcsU0FBUyxDQUFDO0tBQzVCO0dBQ0Y7Q0FDRixDQUFDOztxQkFFYSxhQUFhOzs7Ozs7Ozs7Ozs7cUJDeEVILFNBQVM7O3lCQUNnQyxjQUFjOzs2QkFDdEQsa0JBQWtCOzs7Ozs7Ozs0QkFRbkIsaUJBQWlCOzs7O0FBTjFDLElBQUksVUFBVSxHQUFLLGNBQWMsQ0FBQztBQUNsQyxJQUFJLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQzs7QUFPcEMsSUFBSSxvQkFBb0IsR0FBRyxTQUF2QixvQkFBb0IsR0FBYztBQUNwQyxNQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlDLFdBQVMsQ0FBQyxTQUFTLDRCQUFlLENBQUM7OztBQUduQyxTQUFPLFNBQVMsQ0FBQyxVQUFVLEVBQUU7QUFDM0IsWUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0dBQ2pEO0NBQ0YsQ0FBQzs7Ozs7QUFLRixJQUFJLFFBQVEsR0FBRyxTQUFYLFFBQVEsR0FBYztBQUN4QixNQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDOztBQUVoRCxNQUFJLENBQUMsTUFBTSxFQUFFO0FBQ1gsd0JBQW9CLEVBQUUsQ0FBQztBQUN2QixVQUFNLEdBQUcsUUFBUSxFQUFFLENBQUM7R0FDckI7O0FBRUQsU0FBTyxNQUFNLENBQUM7Q0FDZixDQUFDOzs7OztBQUtGLElBQUksUUFBUSxHQUFHLFNBQVgsUUFBUSxHQUFjO0FBQ3hCLE1BQUksTUFBTSxHQUFHLFFBQVEsRUFBRSxDQUFDO0FBQ3hCLE1BQUksTUFBTSxFQUFFO0FBQ1YsV0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0dBQ3RDO0NBQ0YsQ0FBQzs7Ozs7QUFLRixJQUFJLFVBQVUsR0FBRyxTQUFiLFVBQVUsR0FBYztBQUMxQixTQUFPLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7Q0FDN0MsQ0FBQzs7Ozs7QUFLRixJQUFJLGFBQWEsR0FBRyxTQUFoQixhQUFhLENBQVksT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUM3QyxNQUFJLFFBQVEsR0FBRyxxQkFBUyxPQUFPLENBQUMsQ0FBQztBQUNqQyxTQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxlQUFlLEdBQUcsUUFBUSxHQUFHLDZDQUE2QyxDQUFDO0NBQ3RHLENBQUM7Ozs7O0FBS0YsSUFBSSxTQUFTLEdBQUcsU0FBWixTQUFTLENBQVksUUFBUSxFQUFFO0FBQ2pDLE1BQUksTUFBTSxHQUFHLFFBQVEsRUFBRSxDQUFDO0FBQ3hCLHlCQUFPLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLHVCQUFLLE1BQU0sQ0FBQyxDQUFDO0FBQ2IsMkJBQVMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDbkMsOEJBQVksTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7O0FBRXRDLFFBQU0sQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO0FBQ3RELE1BQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN2RCxXQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7O0FBRWxCLFlBQVUsQ0FBQyxZQUFZO0FBQ3JCLDZCQUFTLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztHQUM3QixFQUFFLEdBQUcsQ0FBQyxDQUFDOztBQUVSLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7O0FBRTlDLE1BQUksS0FBSyxLQUFLLE1BQU0sSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO0FBQ3BDLFFBQUksYUFBYSxHQUFHLFFBQVEsQ0FBQztBQUM3QixVQUFNLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxZQUFXO0FBQ3JDLFVBQUksa0JBQWtCLEdBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFBLElBQUssTUFBTSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLE1BQU0sQUFBQyxDQUFDO0FBQy9HLFVBQUksa0JBQWtCLEVBQUU7QUFDdEIscUJBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUNyQixNQUNJO0FBQ0gsa0JBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztPQUNwQjtLQUNGLEVBQUUsS0FBSyxDQUFDLENBQUM7R0FDWDtDQUNGLENBQUM7Ozs7OztBQU1GLElBQUksVUFBVSxHQUFHLFNBQWIsVUFBVSxHQUFjO0FBQzFCLE1BQUksTUFBTSxHQUFHLFFBQVEsRUFBRSxDQUFDO0FBQ3hCLE1BQUksTUFBTSxHQUFHLFFBQVEsRUFBRSxDQUFDOztBQUV4Qiw4QkFBWSxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDbEMsUUFBTSxDQUFDLEtBQUssR0FBRywyQkFBYyxVQUFVLENBQUM7QUFDeEMsUUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsMkJBQWMsU0FBUyxDQUFDLENBQUM7QUFDckQsUUFBTSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsMkJBQWMsZ0JBQWdCLENBQUMsQ0FBQzs7QUFFbkUsaUJBQWUsRUFBRSxDQUFDO0NBQ25CLENBQUM7O0FBR0YsSUFBSSxlQUFlLEdBQUcsU0FBbEIsZUFBZSxDQUFZLEtBQUssRUFBRTs7QUFFcEMsTUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxFQUFFLEVBQUU7QUFDakMsV0FBTyxLQUFLLENBQUM7R0FDZDs7QUFFRCxNQUFJLE1BQU0sR0FBRyxRQUFRLEVBQUUsQ0FBQzs7QUFFeEIsTUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3pELDhCQUFZLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQzs7QUFFaEMsTUFBSSxlQUFlLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ2xFLDhCQUFZLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztDQUN0QyxDQUFDOzs7OztBQU1GLElBQUksbUJBQW1CLEdBQUcsU0FBdEIsbUJBQW1CLEdBQWM7QUFDbkMsTUFBSSxNQUFNLEdBQUcsUUFBUSxFQUFFLENBQUM7QUFDeEIsUUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsNkJBQWEsUUFBUSxFQUFFLENBQUMsQ0FBQztDQUNuRCxDQUFDOztRQUlBLG9CQUFvQixHQUFwQixvQkFBb0I7UUFDcEIsUUFBUSxHQUFSLFFBQVE7UUFDUixVQUFVLEdBQVYsVUFBVTtRQUNWLFFBQVEsR0FBUixRQUFRO1FBQ1IsYUFBYSxHQUFiLGFBQWE7UUFDYixTQUFTLEdBQVQsU0FBUztRQUNULFVBQVUsR0FBVixVQUFVO1FBQ1YsZUFBZSxHQUFmLGVBQWU7UUFDZixtQkFBbUIsR0FBbkIsbUJBQW1COzs7Ozs7OztBQ2xKckIsSUFBSSxZQUFZOzs7QUFHZDs7OzZCQUcyQjs7O2tNQVFsQjs7OzZIQU1BOzs7dUNBRzhCOzs7K05BUzlCLDRDQUVnQzs7OzRKQVEzQjs7OzRHQU1MOzs7cU5BTThDOzs7NklBUzlDOzs7UUFHRCxDQUFDOztxQkFFSSxZQUFZOzs7Ozs7Ozs7O3FCQ2hFcEIsU0FBUzs7NkJBTVQsbUJBQW1COzt5QkFNbkIsY0FBYzs7Ozs7QUFoQnJCLElBQUksVUFBVSxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQzs7QUFzQjVFLElBQUksYUFBYSxHQUFHLFNBQWhCLGFBQWEsQ0FBWSxNQUFNLEVBQUU7QUFDbkMsTUFBSSxLQUFLLEdBQUcsOEJBQVUsQ0FBQzs7QUFFdkIsTUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxNQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JDLE1BQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDdEQsTUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDOzs7OztBQUt4RCxRQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRywyQkFBVyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzs7Ozs7QUFLbEcsT0FBSyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsMkJBQVcsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3JHLE1BQUksTUFBTSxDQUFDLElBQUksRUFBRSxxQkFBSyxLQUFLLENBQUMsQ0FBQzs7Ozs7QUFLN0IsTUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO0FBQ3RCLDZCQUFTLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDcEMsU0FBSyxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7R0FDN0QsTUFBTTs7QUFFTCxRQUFJLFdBQVcsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDMUQsZ0NBQVksS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ2hDLFNBQUssQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDN0M7Ozs7O0FBS0QsdUJBQUssS0FBSyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7O0FBRXpDLE1BQUksTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFPLEVBQUU7OztBQUUzQixVQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7O0FBRXRCLFdBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFDLFlBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDakMsbUJBQVMsR0FBRyxJQUFJLENBQUM7QUFDakIsZ0JBQU07U0FDUDtPQUNGOztBQUVELFVBQUksQ0FBQyxTQUFTLEVBQUU7QUFDZCxjQUFNLENBQUMsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdDO2FBQU8sS0FBSztVQUFDO09BQ2Q7O0FBRUQsVUFBSSxjQUFjLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM3RCxVQUFJLEtBQUssWUFBQSxDQUFDOztBQUVWLFVBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDOUMsYUFBSyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0QsNkJBQUssS0FBSyxDQUFDLENBQUM7T0FDYjs7QUFFRCxVQUFJLE1BQU0sR0FBRyw4QkFBVSxDQUFDOzs7QUFHeEIsY0FBUSxNQUFNLENBQUMsSUFBSTs7QUFFakIsYUFBSyxTQUFTO0FBQ1osbUNBQVMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzNCLG1DQUFTLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQUM5RCxtQ0FBUyxLQUFLLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFDaEUsZ0JBQU07O0FBQUEsQUFFUixhQUFLLE9BQU87QUFDVixtQ0FBUyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQUNwQyxtQ0FBUyxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQzVELGdCQUFNOztBQUFBLEFBRVIsYUFBSyxTQUFTO0FBQ1osbUNBQVMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ2hDLG1DQUFTLEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUM3RCxtQ0FBUyxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDNUQsZ0JBQU07O0FBQUEsQUFFUixhQUFLLE9BQU8sQ0FBQztBQUNiLGFBQUssUUFBUTtBQUNYLGdCQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDOUMsZ0JBQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUNqQyxnQkFBTSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDNUQsbUNBQVMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQzlCLG9CQUFVLENBQUMsWUFBWTtBQUNyQixrQkFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2Ysa0JBQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1dBQ3hELEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDUixnQkFBTTtBQUFBLE9BQ1Q7Ozs7R0FDRjs7Ozs7QUFLRCxNQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7QUFDbkIsUUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDOztBQUU1RCxlQUFXLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDbkUseUJBQUssV0FBVyxDQUFDLENBQUM7O0FBRWxCLFFBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNuQixRQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7O0FBRXBCLFFBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtBQUNwQixVQUFJLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4RCxVQUFJLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsVUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUU5QixVQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsU0FBUyxFQUFFO0FBQzNCLGNBQU0sQ0FBQyxrRUFBa0UsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7T0FDL0YsTUFBTTtBQUNMLGlCQUFTLEdBQUcsUUFBUSxDQUFDO0FBQ3JCLGtCQUFVLEdBQUcsU0FBUyxDQUFDO09BQ3hCO0tBQ0Y7O0FBRUQsZUFBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxRQUFRLEdBQUcsU0FBUyxHQUFHLGFBQWEsR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUM7R0FDakk7Ozs7O0FBS0QsT0FBSyxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN0RSxNQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTtBQUMzQixjQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUM7R0FDM0MsTUFBTTtBQUNMLHlCQUFLLFVBQVUsQ0FBQyxDQUFDO0dBQ2xCOzs7OztBQUtELE9BQUssQ0FBQyxZQUFZLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDeEUsTUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUU7QUFDNUIsZUFBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDO0dBQzVDLE1BQU07QUFDTCx5QkFBSyxXQUFXLENBQUMsQ0FBQztHQUNuQjs7Ozs7QUFLRCxNQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTtBQUMzQixjQUFVLENBQUMsU0FBUyxHQUFHLDJCQUFXLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0dBQzVEO0FBQ0QsTUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUU7QUFDNUIsZUFBVyxDQUFDLFNBQVMsR0FBRywyQkFBVyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztHQUM5RDs7Ozs7QUFLRCxNQUFJLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTs7QUFFN0IsZUFBVyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDOzs7QUFHOUQsZUFBVyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDO0FBQ3JFLGVBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDOzs7QUFHdEUsc0NBQWMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0dBQ3ZEOzs7OztBQUtELE9BQUssQ0FBQyxZQUFZLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Ozs7O0FBS3pFLE1BQUksZUFBZSxHQUFHLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQztBQUN6RCxPQUFLLENBQUMsWUFBWSxDQUFDLHdCQUF3QixFQUFFLGVBQWUsQ0FBQyxDQUFDOzs7OztBQUs5RCxNQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtBQUNyQixTQUFLLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0dBQzlDLE1BQU0sSUFBSSxPQUFPLE1BQU0sQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFO0FBQy9DLFNBQUssQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0dBQ3hELE1BQU07QUFDTCxXQUFLLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzdDOzs7OztBQUtELE9BQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztDQUNoRCxDQUFDOztxQkFFYSxhQUFhOzs7Ozs7Ozs7Ozs7QUN6TjVCLElBQUksTUFBTSxHQUFHLFNBQVQsTUFBTSxDQUFZLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDMUIsT0FBSyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUU7QUFDakIsUUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3pCLE9BQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDakI7R0FDRjtBQUNELFNBQU8sQ0FBQyxDQUFDO0NBQ1YsQ0FBQzs7Ozs7QUFLRixJQUFJLFFBQVEsR0FBRyxTQUFYLFFBQVEsQ0FBWSxHQUFHLEVBQUU7QUFDM0IsTUFBSSxNQUFNLEdBQUcsMkNBQTJDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25FLFNBQU8sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0NBQ2xILENBQUM7Ozs7O0FBS0YsSUFBSSxLQUFLLEdBQUcsU0FBUixLQUFLLEdBQWM7QUFDckIsU0FBUSxNQUFNLENBQUMsV0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFFO0NBQ3pELENBQUM7Ozs7O0FBS0YsSUFBSSxNQUFNLEdBQUcsU0FBVCxNQUFNLENBQVksTUFBTSxFQUFFO0FBQzVCLE1BQUksT0FBTyxNQUFNLEFBQUMsS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTs7QUFFcEQsVUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0dBQzdDO0NBQ0YsQ0FBQzs7Ozs7O0FBTUYsSUFBSSxjQUFjLEdBQUcsU0FBakIsY0FBYyxDQUFZLEdBQUcsRUFBRSxHQUFHLEVBQUU7O0FBRXRDLEtBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM3QyxNQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ2xCLE9BQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztHQUMzRDtBQUNELEtBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDOzs7QUFHZixNQUFJLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDZCxNQUFJLENBQUMsQ0FBQztBQUNOLE1BQUksQ0FBQyxDQUFDOztBQUVOLE9BQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3RCLEtBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZDLEtBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyRSxPQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFBLENBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztHQUNwQzs7QUFFRCxTQUFPLEdBQUcsQ0FBQztDQUNaLENBQUM7O1FBSUEsTUFBTSxHQUFOLE1BQU07UUFDTixRQUFRLEdBQVIsUUFBUTtRQUNSLEtBQUssR0FBTCxLQUFLO1FBQ0wsTUFBTSxHQUFOLE1BQU07UUFDTixjQUFjLEdBQWQsY0FBYyIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCIvLyBTd2VldEFsZXJ0XG4vLyAyMDE0LTIwMTUgKGMpIC0gVHJpc3RhbiBFZHdhcmRzXG4vLyBnaXRodWIuY29tL3Q0dDUvc3dlZXRhbGVydFxuXG4vKlxuICogalF1ZXJ5LWxpa2UgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmcgdGhlIERPTVxuICovXG5pbXBvcnQge1xuICBoYXNDbGFzcywgYWRkQ2xhc3MsIHJlbW92ZUNsYXNzLFxuICBlc2NhcGVIdG1sLFxuICBfc2hvdywgc2hvdywgX2hpZGUsIGhpZGUsXG4gIGlzRGVzY2VuZGFudCxcbiAgZ2V0VG9wTWFyZ2luLFxuICBmYWRlSW4sIGZhZGVPdXQsXG4gIGZpcmVDbGljayxcbiAgc3RvcEV2ZW50UHJvcGFnYXRpb25cbn0gZnJvbSAnLi9tb2R1bGVzL2hhbmRsZS1kb20nO1xuXG4vKlxuICogSGFuZHkgdXRpbGl0aWVzXG4gKi9cbmltcG9ydCB7XG4gIGV4dGVuZCxcbiAgaGV4VG9SZ2IsXG4gIGlzSUU4LFxuICBsb2dTdHIsXG4gIGNvbG9yTHVtaW5hbmNlXG59IGZyb20gJy4vbW9kdWxlcy91dGlscyc7XG5cbi8qXG4gKiAgSGFuZGxlIHN3ZWV0QWxlcnQncyBET00gZWxlbWVudHNcbiAqL1xuaW1wb3J0IHtcbiAgc3dlZXRBbGVydEluaXRpYWxpemUsXG4gIGdldE1vZGFsLFxuICBnZXRPdmVybGF5LFxuICBnZXRJbnB1dCxcbiAgc2V0Rm9jdXNTdHlsZSxcbiAgb3Blbk1vZGFsLFxuICByZXNldElucHV0LFxuICBmaXhWZXJ0aWNhbFBvc2l0aW9uXG59IGZyb20gJy4vbW9kdWxlcy9oYW5kbGUtc3dhbC1kb20nO1xuXG5cbi8vIEhhbmRsZSBidXR0b24gZXZlbnRzIGFuZCBrZXlib2FyZCBldmVudHNcbmltcG9ydCB7IGhhbmRsZUJ1dHRvbiwgaGFuZGxlQ29uZmlybSwgaGFuZGxlQ2FuY2VsIH0gZnJvbSAnLi9tb2R1bGVzL2hhbmRsZS1jbGljayc7XG5pbXBvcnQgaGFuZGxlS2V5RG93biBmcm9tICcuL21vZHVsZXMvaGFuZGxlLWtleSc7XG5cblxuLy8gRGVmYXVsdCB2YWx1ZXNcbmltcG9ydCBkZWZhdWx0UGFyYW1zIGZyb20gJy4vbW9kdWxlcy9kZWZhdWx0LXBhcmFtcyc7XG5pbXBvcnQgc2V0UGFyYW1ldGVycyBmcm9tICcuL21vZHVsZXMvc2V0LXBhcmFtcyc7XG5cbi8qXG4gKiBSZW1lbWJlciBzdGF0ZSBpbiBjYXNlcyB3aGVyZSBvcGVuaW5nIGFuZCBoYW5kbGluZyBhIG1vZGFsIHdpbGwgZmlkZGxlIHdpdGggaXQuXG4gKiAoV2UgYWxzbyB1c2Ugd2luZG93LnByZXZpb3VzQWN0aXZlRWxlbWVudCBhcyBhIGdsb2JhbCB2YXJpYWJsZSlcbiAqL1xudmFyIHByZXZpb3VzV2luZG93S2V5RG93bjtcbnZhciBsYXN0Rm9jdXNlZEJ1dHRvbjtcblxuXG4vKlxuICogR2xvYmFsIHN3ZWV0QWxlcnQgZnVuY3Rpb25cbiAqICh0aGlzIGlzIHdoYXQgdGhlIHVzZXIgY2FsbHMpXG4gKi9cbnZhciBzd2VldEFsZXJ0LCBzd2FsO1xuXG5leHBvcnQgZGVmYXVsdCBzd2VldEFsZXJ0ID0gc3dhbCA9IGZ1bmN0aW9uKCkge1xuICB2YXIgY3VzdG9taXphdGlvbnMgPSBhcmd1bWVudHNbMF07XG5cbiAgYWRkQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ3N0b3Atc2Nyb2xsaW5nJyk7XG4gIHJlc2V0SW5wdXQoKTtcblxuICAvKlxuICAgKiBVc2UgYXJndW1lbnQgaWYgZGVmaW5lZCBvciBkZWZhdWx0IHZhbHVlIGZyb20gcGFyYW1zIG9iamVjdCBvdGhlcndpc2UuXG4gICAqIFN1cHBvcnRzIHRoZSBjYXNlIHdoZXJlIGEgZGVmYXVsdCB2YWx1ZSBpcyBib29sZWFuIHRydWUgYW5kIHNob3VsZCBiZVxuICAgKiBvdmVycmlkZGVuIGJ5IGEgY29ycmVzcG9uZGluZyBleHBsaWNpdCBhcmd1bWVudCB3aGljaCBpcyBib29sZWFuIGZhbHNlLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJndW1lbnRPckRlZmF1bHQoa2V5KSB7XG4gICAgdmFyIGFyZ3MgPSBjdXN0b21pemF0aW9ucztcbiAgICByZXR1cm4gKGFyZ3Nba2V5XSA9PT0gdW5kZWZpbmVkKSA/ICBkZWZhdWx0UGFyYW1zW2tleV0gOiBhcmdzW2tleV07XG4gIH1cblxuICBpZiAoY3VzdG9taXphdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgIGxvZ1N0cignU3dlZXRBbGVydCBleHBlY3RzIGF0IGxlYXN0IDEgYXR0cmlidXRlIScpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBwYXJhbXMgPSBleHRlbmQoe30sIGRlZmF1bHRQYXJhbXMpO1xuXG4gIHN3aXRjaCAodHlwZW9mIGN1c3RvbWl6YXRpb25zKSB7XG5cbiAgICAvLyBFeDogc3dhbChcIkhlbGxvXCIsIFwiSnVzdCB0ZXN0aW5nXCIsIFwiaW5mb1wiKTtcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcGFyYW1zLnRpdGxlID0gY3VzdG9taXphdGlvbnM7XG4gICAgICBwYXJhbXMudGV4dCAgPSBhcmd1bWVudHNbMV0gfHwgJyc7XG4gICAgICBwYXJhbXMudHlwZSAgPSBhcmd1bWVudHNbMl0gfHwgJyc7XG4gICAgICBicmVhaztcblxuICAgIC8vIEV4OiBzd2FsKHsgdGl0bGU6XCJIZWxsb1wiLCB0ZXh0OiBcIkp1c3QgdGVzdGluZ1wiLCB0eXBlOiBcImluZm9cIiB9KTtcbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgaWYgKGN1c3RvbWl6YXRpb25zLnRpdGxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbG9nU3RyKCdNaXNzaW5nIFwidGl0bGVcIiBhcmd1bWVudCEnKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBwYXJhbXMudGl0bGUgPSBjdXN0b21pemF0aW9ucy50aXRsZTtcblxuICAgICAgZm9yIChsZXQgY3VzdG9tTmFtZSBpbiBkZWZhdWx0UGFyYW1zKSB7XG4gICAgICAgIHBhcmFtc1tjdXN0b21OYW1lXSA9IGFyZ3VtZW50T3JEZWZhdWx0KGN1c3RvbU5hbWUpO1xuICAgICAgfVxuXG4gICAgICAvLyBTaG93IFwiQ29uZmlybVwiIGluc3RlYWQgb2YgXCJPS1wiIGlmIGNhbmNlbCBidXR0b24gaXMgdmlzaWJsZVxuICAgICAgcGFyYW1zLmNvbmZpcm1CdXR0b25UZXh0ID0gcGFyYW1zLnNob3dDYW5jZWxCdXR0b24gPyAnQ29uZmlybScgOiBkZWZhdWx0UGFyYW1zLmNvbmZpcm1CdXR0b25UZXh0O1xuICAgICAgcGFyYW1zLmNvbmZpcm1CdXR0b25UZXh0ID0gYXJndW1lbnRPckRlZmF1bHQoJ2NvbmZpcm1CdXR0b25UZXh0Jyk7XG5cbiAgICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uIHdoZW4gY2xpY2tpbmcgb24gXCJPS1wiL1wiQ2FuY2VsXCJcbiAgICAgIHBhcmFtcy5kb25lRnVuY3Rpb24gPSBhcmd1bWVudHNbMV0gfHwgbnVsbDtcblxuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgbG9nU3RyKCdVbmV4cGVjdGVkIHR5cGUgb2YgYXJndW1lbnQhIEV4cGVjdGVkIFwic3RyaW5nXCIgb3IgXCJvYmplY3RcIiwgZ290ICcgKyB0eXBlb2YgY3VzdG9taXphdGlvbnMpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gIH1cblxuICBzZXRQYXJhbWV0ZXJzKHBhcmFtcyk7XG4gIGZpeFZlcnRpY2FsUG9zaXRpb24oKTtcbiAgb3Blbk1vZGFsKGFyZ3VtZW50c1sxXSk7XG5cbiAgLy8gTW9kYWwgaW50ZXJhY3Rpb25zXG4gIHZhciBtb2RhbCA9IGdldE1vZGFsKCk7XG5cblxuICAvKlxuICAgKiBNYWtlIHN1cmUgYWxsIG1vZGFsIGJ1dHRvbnMgcmVzcG9uZCB0byBhbGwgZXZlbnRzXG4gICAqL1xuICB2YXIgJGJ1dHRvbnMgPSBtb2RhbC5xdWVyeVNlbGVjdG9yQWxsKCdidXR0b24nKTtcbiAgdmFyIGJ1dHRvbkV2ZW50cyA9IFsnb25jbGljaycsICdvbm1vdXNlb3ZlcicsICdvbm1vdXNlb3V0JywgJ29ubW91c2Vkb3duJywgJ29ubW91c2V1cCcsICdvbmZvY3VzJ107XG4gIHZhciBvbkJ1dHRvbkV2ZW50ID0gKGUpID0+IGhhbmRsZUJ1dHRvbihlLCBwYXJhbXMsIG1vZGFsKTtcblxuICBmb3IgKGxldCBidG5JbmRleCA9IDA7IGJ0bkluZGV4IDwgJGJ1dHRvbnMubGVuZ3RoOyBidG5JbmRleCsrKSB7XG4gICAgZm9yIChsZXQgZXZ0SW5kZXggPSAwOyBldnRJbmRleCA8IGJ1dHRvbkV2ZW50cy5sZW5ndGg7IGV2dEluZGV4KyspIHtcbiAgICAgIGxldCBidG5FdnQgPSBidXR0b25FdmVudHNbZXZ0SW5kZXhdO1xuICAgICAgJGJ1dHRvbnNbYnRuSW5kZXhdW2J0bkV2dF0gPSBvbkJ1dHRvbkV2ZW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIENsaWNraW5nIG91dHNpZGUgdGhlIG1vZGFsIGRpc21pc3NlcyBpdCAoaWYgYWxsb3dlZCBieSB1c2VyKVxuICBnZXRPdmVybGF5KCkub25jbGljayA9IG9uQnV0dG9uRXZlbnQ7XG5cbiAgcHJldmlvdXNXaW5kb3dLZXlEb3duID0gd2luZG93Lm9ua2V5ZG93bjtcblxuICB2YXIgb25LZXlFdmVudCA9IChlKSA9PiBoYW5kbGVLZXlEb3duKGUsIHBhcmFtcywgbW9kYWwpO1xuICB3aW5kb3cub25rZXlkb3duID0gb25LZXlFdmVudDtcblxuICB3aW5kb3cub25mb2N1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBXaGVuIHRoZSB1c2VyIGhhcyBmb2N1c2VkIGF3YXkgYW5kIGZvY3VzZWQgYmFjayBmcm9tIHRoZSB3aG9sZSB3aW5kb3cuXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBQdXQgaW4gYSB0aW1lb3V0IHRvIGp1bXAgb3V0IG9mIHRoZSBldmVudCBzZXF1ZW5jZS5cbiAgICAgIC8vIENhbGxpbmcgZm9jdXMoKSBpbiB0aGUgZXZlbnQgc2VxdWVuY2UgY29uZnVzZXMgdGhpbmdzLlxuICAgICAgaWYgKGxhc3RGb2N1c2VkQnV0dG9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGFzdEZvY3VzZWRCdXR0b24uZm9jdXMoKTtcbiAgICAgICAgbGFzdEZvY3VzZWRCdXR0b24gPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSwgMCk7XG4gIH07XG4gIFxuICAvLyBTaG93IGFsZXJ0IHdpdGggZW5hYmxlZCBidXR0b25zIGFsd2F5c1xuICBzd2FsLmVuYWJsZUJ1dHRvbnMoKTtcbn07XG5cblxuXG4vKlxuICogU2V0IGRlZmF1bHQgcGFyYW1zIGZvciBlYWNoIHBvcHVwXG4gKiBAcGFyYW0ge09iamVjdH0gdXNlclBhcmFtc1xuICovXG5zd2VldEFsZXJ0LnNldERlZmF1bHRzID0gc3dhbC5zZXREZWZhdWx0cyA9IGZ1bmN0aW9uKHVzZXJQYXJhbXMpIHtcbiAgaWYgKCF1c2VyUGFyYW1zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VyUGFyYW1zIGlzIHJlcXVpcmVkJyk7XG4gIH1cbiAgaWYgKHR5cGVvZiB1c2VyUGFyYW1zICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlclBhcmFtcyBoYXMgdG8gYmUgYSBvYmplY3QnKTtcbiAgfVxuXG4gIGV4dGVuZChkZWZhdWx0UGFyYW1zLCB1c2VyUGFyYW1zKTtcbn07XG5cblxuLypcbiAqIEFuaW1hdGlvbiB3aGVuIGNsb3NpbmcgbW9kYWxcbiAqL1xuc3dlZXRBbGVydC5jbG9zZSA9IHN3YWwuY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgdmFyIG1vZGFsID0gZ2V0TW9kYWwoKTtcblxuICBmYWRlT3V0KGdldE92ZXJsYXkoKSwgNSk7XG4gIGZhZGVPdXQobW9kYWwsIDUpO1xuICByZW1vdmVDbGFzcyhtb2RhbCwgJ3Nob3dTd2VldEFsZXJ0Jyk7XG4gIGFkZENsYXNzKG1vZGFsLCAnaGlkZVN3ZWV0QWxlcnQnKTtcbiAgcmVtb3ZlQ2xhc3MobW9kYWwsICd2aXNpYmxlJyk7XG5cbiAgLypcbiAgICogUmVzZXQgaWNvbiBhbmltYXRpb25zXG4gICAqL1xuICB2YXIgJHN1Y2Nlc3NJY29uID0gbW9kYWwucXVlcnlTZWxlY3RvcignLnNhLWljb24uc2Etc3VjY2VzcycpO1xuICByZW1vdmVDbGFzcygkc3VjY2Vzc0ljb24sICdhbmltYXRlJyk7XG4gIHJlbW92ZUNsYXNzKCRzdWNjZXNzSWNvbi5xdWVyeVNlbGVjdG9yKCcuc2EtdGlwJyksICdhbmltYXRlU3VjY2Vzc1RpcCcpO1xuICByZW1vdmVDbGFzcygkc3VjY2Vzc0ljb24ucXVlcnlTZWxlY3RvcignLnNhLWxvbmcnKSwgJ2FuaW1hdGVTdWNjZXNzTG9uZycpO1xuXG4gIHZhciAkZXJyb3JJY29uID0gbW9kYWwucXVlcnlTZWxlY3RvcignLnNhLWljb24uc2EtZXJyb3InKTtcbiAgcmVtb3ZlQ2xhc3MoJGVycm9ySWNvbiwgJ2FuaW1hdGVFcnJvckljb24nKTtcbiAgcmVtb3ZlQ2xhc3MoJGVycm9ySWNvbi5xdWVyeVNlbGVjdG9yKCcuc2EteC1tYXJrJyksICdhbmltYXRlWE1hcmsnKTtcblxuICB2YXIgJHdhcm5pbmdJY29uID0gbW9kYWwucXVlcnlTZWxlY3RvcignLnNhLWljb24uc2Etd2FybmluZycpO1xuICByZW1vdmVDbGFzcygkd2FybmluZ0ljb24sICdwdWxzZVdhcm5pbmcnKTtcbiAgcmVtb3ZlQ2xhc3MoJHdhcm5pbmdJY29uLnF1ZXJ5U2VsZWN0b3IoJy5zYS1ib2R5JyksICdwdWxzZVdhcm5pbmdJbnMnKTtcbiAgcmVtb3ZlQ2xhc3MoJHdhcm5pbmdJY29uLnF1ZXJ5U2VsZWN0b3IoJy5zYS1kb3QnKSwgJ3B1bHNlV2FybmluZ0lucycpO1xuXG4gIC8vIFJlc2V0IGN1c3RvbSBjbGFzcyAoZGVsYXkgc28gdGhhdCBVSSBjaGFuZ2VzIGFyZW4ndCB2aXNpYmxlKVxuICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgIHZhciBjdXN0b21DbGFzcyA9IG1vZGFsLmdldEF0dHJpYnV0ZSgnZGF0YS1jdXN0b20tY2xhc3MnKTtcbiAgICByZW1vdmVDbGFzcyhtb2RhbCwgY3VzdG9tQ2xhc3MpO1xuICB9LCAzMDApO1xuXG4gIC8vIE1ha2UgcGFnZSBzY3JvbGxhYmxlIGFnYWluXG4gIHJlbW92ZUNsYXNzKGRvY3VtZW50LmJvZHksICdzdG9wLXNjcm9sbGluZycpO1xuXG4gIC8vIFJlc2V0IHRoZSBwYWdlIHRvIGl0cyBwcmV2aW91cyBzdGF0ZVxuICB3aW5kb3cub25rZXlkb3duID0gcHJldmlvdXNXaW5kb3dLZXlEb3duO1xuICBpZiAod2luZG93LnByZXZpb3VzQWN0aXZlRWxlbWVudCkge1xuICAgIHdpbmRvdy5wcmV2aW91c0FjdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuICBsYXN0Rm9jdXNlZEJ1dHRvbiA9IHVuZGVmaW5lZDtcbiAgY2xlYXJUaW1lb3V0KG1vZGFsLnRpbWVvdXQpO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuXG4vKlxuICogVmFsaWRhdGlvbiBvZiB0aGUgaW5wdXQgZmllbGQgaXMgZG9uZSBieSB1c2VyXG4gKiBJZiBzb21ldGhpbmcgaXMgd3JvbmcgPT4gY2FsbCBzaG93SW5wdXRFcnJvciB3aXRoIGVycm9yTWVzc2FnZVxuICovXG5zd2VldEFsZXJ0LnNob3dJbnB1dEVycm9yID0gc3dhbC5zaG93SW5wdXRFcnJvciA9IGZ1bmN0aW9uKGVycm9yTWVzc2FnZSkge1xuICB2YXIgbW9kYWwgPSBnZXRNb2RhbCgpO1xuXG4gIHZhciAkZXJyb3JJY29uID0gbW9kYWwucXVlcnlTZWxlY3RvcignLnNhLWlucHV0LWVycm9yJyk7XG4gIGFkZENsYXNzKCRlcnJvckljb24sICdzaG93Jyk7XG5cbiAgdmFyICRlcnJvckNvbnRhaW5lciA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJy5zYS1lcnJvci1jb250YWluZXInKTtcbiAgYWRkQ2xhc3MoJGVycm9yQ29udGFpbmVyLCAnc2hvdycpO1xuXG4gICRlcnJvckNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdwJykuaW5uZXJIVE1MID0gZXJyb3JNZXNzYWdlO1xuXG4gIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgc3dlZXRBbGVydC5lbmFibGVCdXR0b25zKCk7XG4gIH0sIDEpO1xuXG4gIG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykuZm9jdXMoKTtcbn07XG5cblxuLypcbiAqIFJlc2V0IGlucHV0IGVycm9yIERPTSBlbGVtZW50c1xuICovXG5zd2VldEFsZXJ0LnJlc2V0SW5wdXRFcnJvciA9IHN3YWwucmVzZXRJbnB1dEVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgLy8gSWYgcHJlc3MgZW50ZXIgPT4gaWdub3JlXG4gIGlmIChldmVudCAmJiBldmVudC5rZXlDb2RlID09PSAxMykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciAkbW9kYWwgPSBnZXRNb2RhbCgpO1xuXG4gIHZhciAkZXJyb3JJY29uID0gJG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJy5zYS1pbnB1dC1lcnJvcicpO1xuICByZW1vdmVDbGFzcygkZXJyb3JJY29uLCAnc2hvdycpO1xuXG4gIHZhciAkZXJyb3JDb250YWluZXIgPSAkbW9kYWwucXVlcnlTZWxlY3RvcignLnNhLWVycm9yLWNvbnRhaW5lcicpO1xuICByZW1vdmVDbGFzcygkZXJyb3JDb250YWluZXIsICdzaG93Jyk7XG59O1xuXG4vKlxuICogRGlzYWJsZSBjb25maXJtIGFuZCBjYW5jZWwgYnV0dG9uc1xuICovXG5zd2VldEFsZXJ0LmRpc2FibGVCdXR0b25zID0gc3dhbC5kaXNhYmxlQnV0dG9ucyA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gIHZhciBtb2RhbCA9IGdldE1vZGFsKCk7XG4gIHZhciAkY29uZmlybUJ1dHRvbiA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbi5jb25maXJtJyk7XG4gIHZhciAkY2FuY2VsQnV0dG9uID0gbW9kYWwucXVlcnlTZWxlY3RvcignYnV0dG9uLmNhbmNlbCcpO1xuICAkY29uZmlybUJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XG4gICRjYW5jZWxCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xufTtcblxuLypcbiAqIEVuYWJsZSBjb25maXJtIGFuZCBjYW5jZWwgYnV0dG9uc1xuICovXG5zd2VldEFsZXJ0LmVuYWJsZUJ1dHRvbnMgPSBzd2FsLmVuYWJsZUJ1dHRvbnMgPSBmdW5jdGlvbihldmVudCkge1xuICB2YXIgbW9kYWwgPSBnZXRNb2RhbCgpO1xuICB2YXIgJGNvbmZpcm1CdXR0b24gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCdidXR0b24uY29uZmlybScpO1xuICB2YXIgJGNhbmNlbEJ1dHRvbiA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbi5jYW5jZWwnKTtcbiAgJGNvbmZpcm1CdXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcbiAgJGNhbmNlbEJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xufTtcblxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIFRoZSAnaGFuZGxlLWNsaWNrJyBtb2R1bGUgcmVxdWlyZXNcbiAgLy8gdGhhdCAnc3dlZXRBbGVydCcgd2FzIHNldCBhcyBnbG9iYWwuXG4gIHdpbmRvdy5zd2VldEFsZXJ0ID0gd2luZG93LnN3YWwgPSBzd2VldEFsZXJ0O1xufSBlbHNlIHtcbiAgbG9nU3RyKCdTd2VldEFsZXJ0IGlzIGEgZnJvbnRlbmQgbW9kdWxlIScpO1xufVxuIiwidmFyIGRlZmF1bHRQYXJhbXMgPSB7XG4gIHRpdGxlOiAnJyxcbiAgdGV4dDogJycsXG4gIHR5cGU6IG51bGwsXG4gIGFsbG93T3V0c2lkZUNsaWNrOiBmYWxzZSxcbiAgc2hvd0NvbmZpcm1CdXR0b246IHRydWUsXG4gIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxuICBjbG9zZU9uQ29uZmlybTogdHJ1ZSxcbiAgY2xvc2VPbkNhbmNlbDogdHJ1ZSxcbiAgY29uZmlybUJ1dHRvblRleHQ6ICdPSycsXG4gIGNvbmZpcm1CdXR0b25Db2xvcjogJyM4Q0Q0RjUnLFxuICBjYW5jZWxCdXR0b25UZXh0OiAnQ2FuY2VsJyxcbiAgaW1hZ2VVcmw6IG51bGwsXG4gIGltYWdlU2l6ZTogbnVsbCxcbiAgdGltZXI6IG51bGwsXG4gIGN1c3RvbUNsYXNzOiAnJyxcbiAgaHRtbDogZmFsc2UsXG4gIGFuaW1hdGlvbjogdHJ1ZSxcbiAgYWxsb3dFc2NhcGVLZXk6IHRydWUsXG4gIGlucHV0VHlwZTogJ3RleHQnLFxuICBpbnB1dFBsYWNlaG9sZGVyOiAnJyxcbiAgaW5wdXRWYWx1ZTogJycsXG4gIHNob3dMb2FkZXJPbkNvbmZpcm06IGZhbHNlXG59O1xuXG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0UGFyYW1zO1xuIiwiaW1wb3J0IHsgY29sb3JMdW1pbmFuY2UgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGdldE1vZGFsIH0gZnJvbSAnLi9oYW5kbGUtc3dhbC1kb20nO1xuaW1wb3J0IHsgaGFzQ2xhc3MsIGlzRGVzY2VuZGFudCB9IGZyb20gJy4vaGFuZGxlLWRvbSc7XG5cblxuLypcbiAqIFVzZXIgY2xpY2tlZCBvbiBcIkNvbmZpcm1cIi9cIk9LXCIgb3IgXCJDYW5jZWxcIlxuICovXG52YXIgaGFuZGxlQnV0dG9uID0gZnVuY3Rpb24oZXZlbnQsIHBhcmFtcywgbW9kYWwpIHtcbiAgdmFyIGUgPSBldmVudCB8fCB3aW5kb3cuZXZlbnQ7XG4gIHZhciB0YXJnZXQgPSBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQ7XG5cbiAgdmFyIHRhcmdldGVkQ29uZmlybSA9IHRhcmdldC5jbGFzc05hbWUuaW5kZXhPZignY29uZmlybScpICE9PSAtMTtcbiAgdmFyIHRhcmdldGVkT3ZlcmxheSA9IHRhcmdldC5jbGFzc05hbWUuaW5kZXhPZignc3dlZXQtb3ZlcmxheScpICE9PSAtMTtcbiAgdmFyIG1vZGFsSXNWaXNpYmxlICA9IGhhc0NsYXNzKG1vZGFsLCAndmlzaWJsZScpO1xuICB2YXIgZG9uZUZ1bmN0aW9uRXhpc3RzID0gKHBhcmFtcy5kb25lRnVuY3Rpb24gJiYgbW9kYWwuZ2V0QXR0cmlidXRlKCdkYXRhLWhhcy1kb25lLWZ1bmN0aW9uJykgPT09ICd0cnVlJyk7XG5cbiAgLy8gU2luY2UgdGhlIHVzZXIgY2FuIGNoYW5nZSB0aGUgYmFja2dyb3VuZC1jb2xvciBvZiB0aGUgY29uZmlybSBidXR0b24gcHJvZ3JhbW1hdGljYWxseSxcbiAgLy8gd2UgbXVzdCBjYWxjdWxhdGUgd2hhdCB0aGUgY29sb3Igc2hvdWxkIGJlIG9uIGhvdmVyL2FjdGl2ZVxuICB2YXIgbm9ybWFsQ29sb3IsIGhvdmVyQ29sb3IsIGFjdGl2ZUNvbG9yO1xuICBpZiAodGFyZ2V0ZWRDb25maXJtICYmIHBhcmFtcy5jb25maXJtQnV0dG9uQ29sb3IpIHtcbiAgICBub3JtYWxDb2xvciAgPSBwYXJhbXMuY29uZmlybUJ1dHRvbkNvbG9yO1xuICAgIGhvdmVyQ29sb3IgICA9IGNvbG9yTHVtaW5hbmNlKG5vcm1hbENvbG9yLCAtMC4wNCk7XG4gICAgYWN0aXZlQ29sb3IgID0gY29sb3JMdW1pbmFuY2Uobm9ybWFsQ29sb3IsIC0wLjE0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3VsZFNldENvbmZpcm1CdXR0b25Db2xvcihjb2xvcikge1xuICAgIGlmICh0YXJnZXRlZENvbmZpcm0gJiYgcGFyYW1zLmNvbmZpcm1CdXR0b25Db2xvcikge1xuICAgICAgdGFyZ2V0LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIHN3aXRjaCAoZS50eXBlKSB7XG4gICAgY2FzZSAnbW91c2VvdmVyJzpcbiAgICAgIHNob3VsZFNldENvbmZpcm1CdXR0b25Db2xvcihob3ZlckNvbG9yKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnbW91c2VvdXQnOlxuICAgICAgc2hvdWxkU2V0Q29uZmlybUJ1dHRvbkNvbG9yKG5vcm1hbENvbG9yKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnbW91c2Vkb3duJzpcbiAgICAgIHNob3VsZFNldENvbmZpcm1CdXR0b25Db2xvcihhY3RpdmVDb2xvcik7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ21vdXNldXAnOlxuICAgICAgc2hvdWxkU2V0Q29uZmlybUJ1dHRvbkNvbG9yKGhvdmVyQ29sb3IpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdmb2N1cyc6XG4gICAgICBsZXQgJGNvbmZpcm1CdXR0b24gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCdidXR0b24uY29uZmlybScpO1xuICAgICAgbGV0ICRjYW5jZWxCdXR0b24gID0gbW9kYWwucXVlcnlTZWxlY3RvcignYnV0dG9uLmNhbmNlbCcpO1xuXG4gICAgICBpZiAodGFyZ2V0ZWRDb25maXJtKSB7XG4gICAgICAgICRjYW5jZWxCdXR0b24uc3R5bGUuYm94U2hhZG93ID0gJ25vbmUnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJGNvbmZpcm1CdXR0b24uc3R5bGUuYm94U2hhZG93ID0gJ25vbmUnO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdjbGljayc6XG4gICAgICBsZXQgY2xpY2tlZE9uTW9kYWwgPSAobW9kYWwgPT09IHRhcmdldCk7XG4gICAgICBsZXQgY2xpY2tlZE9uTW9kYWxDaGlsZCA9IGlzRGVzY2VuZGFudChtb2RhbCwgdGFyZ2V0KTtcblxuICAgICAgLy8gSWdub3JlIGNsaWNrIG91dHNpZGUgaWYgYWxsb3dPdXRzaWRlQ2xpY2sgaXMgZmFsc2VcbiAgICAgIGlmICghY2xpY2tlZE9uTW9kYWwgJiYgIWNsaWNrZWRPbk1vZGFsQ2hpbGQgJiYgbW9kYWxJc1Zpc2libGUgJiYgIXBhcmFtcy5hbGxvd091dHNpZGVDbGljaykge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldGVkQ29uZmlybSAmJiBkb25lRnVuY3Rpb25FeGlzdHMgJiYgbW9kYWxJc1Zpc2libGUpIHtcbiAgICAgICAgaGFuZGxlQ29uZmlybShtb2RhbCwgcGFyYW1zKTtcbiAgICAgIH0gZWxzZSBpZiAoZG9uZUZ1bmN0aW9uRXhpc3RzICYmIG1vZGFsSXNWaXNpYmxlIHx8IHRhcmdldGVkT3ZlcmxheSkge1xuICAgICAgICBoYW5kbGVDYW5jZWwobW9kYWwsIHBhcmFtcyk7XG4gICAgICB9IGVsc2UgaWYgKGlzRGVzY2VuZGFudChtb2RhbCwgdGFyZ2V0KSAmJiB0YXJnZXQudGFnTmFtZSA9PT0gJ0JVVFRPTicpIHtcbiAgICAgICAgc3dlZXRBbGVydC5jbG9zZSgpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbn07XG5cbi8qXG4gKiAgVXNlciBjbGlja2VkIG9uIFwiQ29uZmlybVwiL1wiT0tcIlxuICovXG52YXIgaGFuZGxlQ29uZmlybSA9IGZ1bmN0aW9uKG1vZGFsLCBwYXJhbXMpIHtcbiAgdmFyIGNhbGxiYWNrVmFsdWUgPSB0cnVlO1xuXG4gIGlmIChoYXNDbGFzcyhtb2RhbCwgJ3Nob3ctaW5wdXQnKSkge1xuICAgIGNhbGxiYWNrVmFsdWUgPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlO1xuXG4gICAgaWYgKCFjYWxsYmFja1ZhbHVlKSB7XG4gICAgICBjYWxsYmFja1ZhbHVlID0gJyc7XG4gICAgfVxuICB9XG5cbiAgcGFyYW1zLmRvbmVGdW5jdGlvbihjYWxsYmFja1ZhbHVlKTtcblxuICBpZiAocGFyYW1zLmNsb3NlT25Db25maXJtKSB7XG4gICAgc3dlZXRBbGVydC5jbG9zZSgpO1xuICB9XG4gIC8vIERpc2FibGUgY2FuY2VsIGFuZCBjb25maXJtIGJ1dHRvbiBpZiB0aGUgcGFyYW1ldGVyIGlzIHRydWVcbiAgaWYgKHBhcmFtcy5zaG93TG9hZGVyT25Db25maXJtKSB7XG4gICAgc3dlZXRBbGVydC5kaXNhYmxlQnV0dG9ucygpO1xuICB9XG59O1xuXG4vKlxuICogIFVzZXIgY2xpY2tlZCBvbiBcIkNhbmNlbFwiXG4gKi9cbnZhciBoYW5kbGVDYW5jZWwgPSBmdW5jdGlvbihtb2RhbCwgcGFyYW1zKSB7XG4gIC8vIENoZWNrIGlmIGNhbGxiYWNrIGZ1bmN0aW9uIGV4cGVjdHMgYSBwYXJhbWV0ZXIgKHRvIHRyYWNrIGNhbmNlbCBhY3Rpb25zKVxuICB2YXIgZnVuY3Rpb25Bc1N0ciA9IFN0cmluZyhwYXJhbXMuZG9uZUZ1bmN0aW9uKS5yZXBsYWNlKC9cXHMvZywgJycpO1xuICB2YXIgZnVuY3Rpb25IYW5kbGVzQ2FuY2VsID0gZnVuY3Rpb25Bc1N0ci5zdWJzdHJpbmcoMCwgOSkgPT09ICdmdW5jdGlvbignICYmIGZ1bmN0aW9uQXNTdHIuc3Vic3RyaW5nKDksIDEwKSAhPT0gJyknO1xuXG4gIGlmIChmdW5jdGlvbkhhbmRsZXNDYW5jZWwpIHtcbiAgICBwYXJhbXMuZG9uZUZ1bmN0aW9uKGZhbHNlKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMuY2xvc2VPbkNhbmNlbCkge1xuICAgIHN3ZWV0QWxlcnQuY2xvc2UoKTtcbiAgfVxufTtcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGhhbmRsZUJ1dHRvbixcbiAgaGFuZGxlQ29uZmlybSxcbiAgaGFuZGxlQ2FuY2VsXG59O1xuIiwidmFyIGhhc0NsYXNzID0gZnVuY3Rpb24oZWxlbSwgY2xhc3NOYW1lKSB7XG4gIHJldHVybiBuZXcgUmVnRXhwKCcgJyArIGNsYXNzTmFtZSArICcgJykudGVzdCgnICcgKyBlbGVtLmNsYXNzTmFtZSArICcgJyk7XG59O1xuXG52YXIgYWRkQ2xhc3MgPSBmdW5jdGlvbihlbGVtLCBjbGFzc05hbWUpIHtcbiAgaWYgKCFoYXNDbGFzcyhlbGVtLCBjbGFzc05hbWUpKSB7XG4gICAgZWxlbS5jbGFzc05hbWUgKz0gJyAnICsgY2xhc3NOYW1lO1xuICB9XG59O1xuXG52YXIgcmVtb3ZlQ2xhc3MgPSBmdW5jdGlvbihlbGVtLCBjbGFzc05hbWUpIHtcbiAgdmFyIG5ld0NsYXNzID0gJyAnICsgZWxlbS5jbGFzc05hbWUucmVwbGFjZSgvW1xcdFxcclxcbl0vZywgJyAnKSArICcgJztcbiAgaWYgKGhhc0NsYXNzKGVsZW0sIGNsYXNzTmFtZSkpIHtcbiAgICB3aGlsZSAobmV3Q2xhc3MuaW5kZXhPZignICcgKyBjbGFzc05hbWUgKyAnICcpID49IDApIHtcbiAgICAgIG5ld0NsYXNzID0gbmV3Q2xhc3MucmVwbGFjZSgnICcgKyBjbGFzc05hbWUgKyAnICcsICcgJyk7XG4gICAgfVxuICAgIGVsZW0uY2xhc3NOYW1lID0gbmV3Q2xhc3MucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpO1xuICB9XG59O1xuXG52YXIgZXNjYXBlSHRtbCA9IGZ1bmN0aW9uKHN0cikge1xuICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpKTtcbiAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XG59O1xuXG52YXIgX3Nob3cgPSBmdW5jdGlvbihlbGVtKSB7XG4gIGVsZW0uc3R5bGUub3BhY2l0eSA9ICcnO1xuICBlbGVtLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xufTtcblxudmFyIHNob3cgPSBmdW5jdGlvbihlbGVtcykge1xuICBpZiAoZWxlbXMgJiYgIWVsZW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBfc2hvdyhlbGVtcyk7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7ICsraSkge1xuICAgIF9zaG93KGVsZW1zW2ldKTtcbiAgfVxufTtcblxudmFyIF9oaWRlID0gZnVuY3Rpb24oZWxlbSkge1xuICBlbGVtLnN0eWxlLm9wYWNpdHkgPSAnJztcbiAgZWxlbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xufTtcblxudmFyIGhpZGUgPSBmdW5jdGlvbihlbGVtcykge1xuICBpZiAoZWxlbXMgJiYgIWVsZW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBfaGlkZShlbGVtcyk7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7ICsraSkge1xuICAgIF9oaWRlKGVsZW1zW2ldKTtcbiAgfVxufTtcblxudmFyIGlzRGVzY2VuZGFudCA9IGZ1bmN0aW9uKHBhcmVudCwgY2hpbGQpIHtcbiAgdmFyIG5vZGUgPSBjaGlsZC5wYXJlbnROb2RlO1xuICB3aGlsZSAobm9kZSAhPT0gbnVsbCkge1xuICAgIGlmIChub2RlID09PSBwYXJlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbnZhciBnZXRUb3BNYXJnaW4gPSBmdW5jdGlvbihlbGVtKSB7XG4gIGVsZW0uc3R5bGUubGVmdCA9ICctOTk5OXB4JztcbiAgZWxlbS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICB2YXIgaGVpZ2h0ID0gZWxlbS5jbGllbnRIZWlnaHQsXG4gICAgICBwYWRkaW5nO1xuICBpZiAodHlwZW9mIGdldENvbXB1dGVkU3R5bGUgIT09IFwidW5kZWZpbmVkXCIpIHsgLy8gSUUgOFxuICAgIHBhZGRpbmcgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGVsZW0pLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctdG9wJyksIDEwKTtcbiAgfSBlbHNlIHtcbiAgICBwYWRkaW5nID0gcGFyc2VJbnQoZWxlbS5jdXJyZW50U3R5bGUucGFkZGluZyk7XG4gIH1cblxuICBlbGVtLnN0eWxlLmxlZnQgPSAnJztcbiAgZWxlbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICByZXR1cm4gKCctJyArIHBhcnNlSW50KChoZWlnaHQgKyBwYWRkaW5nKSAvIDIpICsgJ3B4Jyk7XG59O1xuXG52YXIgZmFkZUluID0gZnVuY3Rpb24oZWxlbSwgaW50ZXJ2YWwpIHtcbiAgaWYgKCtlbGVtLnN0eWxlLm9wYWNpdHkgPCAxKSB7XG4gICAgaW50ZXJ2YWwgPSBpbnRlcnZhbCB8fCAxNjtcbiAgICBlbGVtLnN0eWxlLm9wYWNpdHkgPSAwO1xuICAgIGVsZW0uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgdmFyIGxhc3QgPSArbmV3IERhdGUoKTtcbiAgICB2YXIgdGljayA9IGZ1bmN0aW9uKCkge1xuICAgICAgZWxlbS5zdHlsZS5vcGFjaXR5ID0gK2VsZW0uc3R5bGUub3BhY2l0eSArIChuZXcgRGF0ZSgpIC0gbGFzdCkgLyAxMDA7XG4gICAgICBsYXN0ID0gK25ldyBEYXRlKCk7XG5cbiAgICAgIGlmICgrZWxlbS5zdHlsZS5vcGFjaXR5IDwgMSkge1xuICAgICAgICBzZXRUaW1lb3V0KHRpY2ssIGludGVydmFsKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRpY2soKTtcbiAgfVxuICBlbGVtLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOyAvL2ZhbGxiYWNrIElFOFxufTtcblxudmFyIGZhZGVPdXQgPSBmdW5jdGlvbihlbGVtLCBpbnRlcnZhbCkge1xuICBpbnRlcnZhbCA9IGludGVydmFsIHx8IDE2O1xuICBlbGVtLnN0eWxlLm9wYWNpdHkgPSAxO1xuICB2YXIgbGFzdCA9ICtuZXcgRGF0ZSgpO1xuICB2YXIgdGljayA9IGZ1bmN0aW9uKCkge1xuICAgIGVsZW0uc3R5bGUub3BhY2l0eSA9ICtlbGVtLnN0eWxlLm9wYWNpdHkgLSAobmV3IERhdGUoKSAtIGxhc3QpIC8gMTAwO1xuICAgIGxhc3QgPSArbmV3IERhdGUoKTtcblxuICAgIGlmICgrZWxlbS5zdHlsZS5vcGFjaXR5ID4gMCkge1xuICAgICAgc2V0VGltZW91dCh0aWNrLCBpbnRlcnZhbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW0uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB9XG4gIH07XG4gIHRpY2soKTtcbn07XG5cbnZhciBmaXJlQ2xpY2sgPSBmdW5jdGlvbihub2RlKSB7XG4gIC8vIFRha2VuIGZyb20gaHR0cDovL3d3dy5ub25vYnRydXNpdmUuY29tLzIwMTEvMTEvMjkvcHJvZ3JhbWF0aWNhbGx5LWZpcmUtY3Jvc3Nicm93c2VyLWNsaWNrLWV2ZW50LXdpdGgtamF2YXNjcmlwdC9cbiAgLy8gVGhlbiBmaXhlZCBmb3IgdG9kYXkncyBDaHJvbWUgYnJvd3Nlci5cbiAgaWYgKHR5cGVvZiBNb3VzZUV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gVXAtdG8tZGF0ZSBhcHByb2FjaFxuICAgIHZhciBtZXZ0ID0gbmV3IE1vdXNlRXZlbnQoJ2NsaWNrJywge1xuICAgICAgdmlldzogd2luZG93LFxuICAgICAgYnViYmxlczogZmFsc2UsXG4gICAgICBjYW5jZWxhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgbm9kZS5kaXNwYXRjaEV2ZW50KG1ldnQpO1xuICB9IGVsc2UgaWYgKCBkb2N1bWVudC5jcmVhdGVFdmVudCApIHtcbiAgICAvLyBGYWxsYmFja1xuICAgIHZhciBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudHMnKTtcbiAgICBldnQuaW5pdEV2ZW50KCdjbGljaycsIGZhbHNlLCBmYWxzZSk7XG4gICAgbm9kZS5kaXNwYXRjaEV2ZW50KGV2dCk7XG4gIH0gZWxzZSBpZiAoZG9jdW1lbnQuY3JlYXRlRXZlbnRPYmplY3QpIHtcbiAgICBub2RlLmZpcmVFdmVudCgnb25jbGljaycpIDtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZS5vbmNsaWNrID09PSAnZnVuY3Rpb24nICkge1xuICAgIG5vZGUub25jbGljaygpO1xuICB9XG59O1xuXG52YXIgc3RvcEV2ZW50UHJvcGFnYXRpb24gPSBmdW5jdGlvbihlKSB7XG4gIC8vIEluIHBhcnRpY3VsYXIsIG1ha2Ugc3VyZSB0aGUgc3BhY2UgYmFyIGRvZXNuJ3Qgc2Nyb2xsIHRoZSBtYWluIHdpbmRvdy5cbiAgaWYgKHR5cGVvZiBlLnN0b3BQcm9wYWdhdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9IGVsc2UgaWYgKHdpbmRvdy5ldmVudCAmJiB3aW5kb3cuZXZlbnQuaGFzT3duUHJvcGVydHkoJ2NhbmNlbEJ1YmJsZScpKSB7XG4gICAgd2luZG93LmV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XG4gIH1cbn07XG5cbmV4cG9ydCB7IFxuICBoYXNDbGFzcywgYWRkQ2xhc3MsIHJlbW92ZUNsYXNzLCBcbiAgZXNjYXBlSHRtbCwgXG4gIF9zaG93LCBzaG93LCBfaGlkZSwgaGlkZSwgXG4gIGlzRGVzY2VuZGFudCwgXG4gIGdldFRvcE1hcmdpbixcbiAgZmFkZUluLCBmYWRlT3V0LFxuICBmaXJlQ2xpY2ssXG4gIHN0b3BFdmVudFByb3BhZ2F0aW9uXG59O1xuIiwiaW1wb3J0IHsgc3RvcEV2ZW50UHJvcGFnYXRpb24sIGZpcmVDbGljayB9IGZyb20gJy4vaGFuZGxlLWRvbSc7XG5pbXBvcnQgeyBzZXRGb2N1c1N0eWxlIH0gZnJvbSAnLi9oYW5kbGUtc3dhbC1kb20nO1xuXG5cbnZhciBoYW5kbGVLZXlEb3duID0gZnVuY3Rpb24oZXZlbnQsIHBhcmFtcywgbW9kYWwpIHtcbiAgdmFyIGUgPSBldmVudCB8fCB3aW5kb3cuZXZlbnQ7XG4gIHZhciBrZXlDb2RlID0gZS5rZXlDb2RlIHx8IGUud2hpY2g7XG5cbiAgdmFyICRva0J1dHRvbiAgICAgPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCdidXR0b24uY29uZmlybScpO1xuICB2YXIgJGNhbmNlbEJ1dHRvbiA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbi5jYW5jZWwnKTtcbiAgdmFyICRtb2RhbEJ1dHRvbnMgPSBtb2RhbC5xdWVyeVNlbGVjdG9yQWxsKCdidXR0b25bdGFiaW5kZXhdJyk7XG5cblxuICBpZiAoWzksIDEzLCAzMiwgMjddLmluZGV4T2Yoa2V5Q29kZSkgPT09IC0xKSB7XG4gICAgLy8gRG9uJ3QgZG8gd29yayBvbiBrZXlzIHdlIGRvbid0IGNhcmUgYWJvdXQuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyICR0YXJnZXRFbGVtZW50ID0gZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50O1xuXG4gIHZhciBidG5JbmRleCA9IC0xOyAvLyBGaW5kIHRoZSBidXR0b24gLSBub3RlLCB0aGlzIGlzIGEgbm9kZWxpc3QsIG5vdCBhbiBhcnJheS5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAkbW9kYWxCdXR0b25zLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCR0YXJnZXRFbGVtZW50ID09PSAkbW9kYWxCdXR0b25zW2ldKSB7XG4gICAgICBidG5JbmRleCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoa2V5Q29kZSA9PT0gOSkge1xuICAgIC8vIFRBQlxuICAgIGlmIChidG5JbmRleCA9PT0gLTEpIHtcbiAgICAgIC8vIE5vIGJ1dHRvbiBmb2N1c2VkLiBKdW1wIHRvIHRoZSBjb25maXJtIGJ1dHRvbi5cbiAgICAgICR0YXJnZXRFbGVtZW50ID0gJG9rQnV0dG9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDeWNsZSB0byB0aGUgbmV4dCBidXR0b25cbiAgICAgIGlmIChidG5JbmRleCA9PT0gJG1vZGFsQnV0dG9ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgICR0YXJnZXRFbGVtZW50ID0gJG1vZGFsQnV0dG9uc1swXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICR0YXJnZXRFbGVtZW50ID0gJG1vZGFsQnV0dG9uc1tidG5JbmRleCArIDFdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN0b3BFdmVudFByb3BhZ2F0aW9uKGUpO1xuICAgICR0YXJnZXRFbGVtZW50LmZvY3VzKCk7XG5cbiAgICBpZiAocGFyYW1zLmNvbmZpcm1CdXR0b25Db2xvcikge1xuICAgICAgc2V0Rm9jdXNTdHlsZSgkdGFyZ2V0RWxlbWVudCwgcGFyYW1zLmNvbmZpcm1CdXR0b25Db2xvcik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChrZXlDb2RlID09PSAxMykge1xuICAgICAgaWYgKCR0YXJnZXRFbGVtZW50LnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcbiAgICAgICAgJHRhcmdldEVsZW1lbnQgPSAkb2tCdXR0b247XG4gICAgICAgICRva0J1dHRvbi5mb2N1cygpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYnRuSW5kZXggPT09IC0xKSB7XG4gICAgICAgIC8vIEVOVEVSL1NQQUNFIGNsaWNrZWQgb3V0c2lkZSBvZiBhIGJ1dHRvbi5cbiAgICAgICAgJHRhcmdldEVsZW1lbnQgPSAkb2tCdXR0b247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEbyBub3RoaW5nIC0gbGV0IHRoZSBicm93c2VyIGhhbmRsZSBpdC5cbiAgICAgICAgJHRhcmdldEVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChrZXlDb2RlID09PSAyNyAmJiBwYXJhbXMuYWxsb3dFc2NhcGVLZXkgPT09IHRydWUpIHtcbiAgICAgICR0YXJnZXRFbGVtZW50ID0gJGNhbmNlbEJ1dHRvbjtcbiAgICAgIGZpcmVDbGljaygkdGFyZ2V0RWxlbWVudCwgZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZhbGxiYWNrIC0gbGV0IHRoZSBicm93c2VyIGhhbmRsZSBpdC5cbiAgICAgICR0YXJnZXRFbGVtZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgaGFuZGxlS2V5RG93bjtcbiIsImltcG9ydCB7IGhleFRvUmdiIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyByZW1vdmVDbGFzcywgZ2V0VG9wTWFyZ2luLCBmYWRlSW4sIHNob3csIGFkZENsYXNzIH0gZnJvbSAnLi9oYW5kbGUtZG9tJztcbmltcG9ydCBkZWZhdWx0UGFyYW1zIGZyb20gJy4vZGVmYXVsdC1wYXJhbXMnO1xuXG52YXIgbW9kYWxDbGFzcyAgID0gJy5zd2VldC1hbGVydCc7XG52YXIgb3ZlcmxheUNsYXNzID0gJy5zd2VldC1vdmVybGF5JztcblxuLypcbiAqIEFkZCBtb2RhbCArIG92ZXJsYXkgdG8gRE9NXG4gKi9cbmltcG9ydCBpbmplY3RlZEhUTUwgZnJvbSAnLi9pbmplY3RlZC1odG1sJztcblxudmFyIHN3ZWV0QWxlcnRJbml0aWFsaXplID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzd2VldFdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgc3dlZXRXcmFwLmlubmVySFRNTCA9IGluamVjdGVkSFRNTDtcblxuICAvLyBBcHBlbmQgZWxlbWVudHMgdG8gYm9keVxuICB3aGlsZSAoc3dlZXRXcmFwLmZpcnN0Q2hpbGQpIHtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHN3ZWV0V3JhcC5maXJzdENoaWxkKTtcbiAgfVxufTtcblxuLypcbiAqIEdldCBET00gZWxlbWVudCBvZiBtb2RhbFxuICovXG52YXIgZ2V0TW9kYWwgPSBmdW5jdGlvbigpIHtcbiAgdmFyICRtb2RhbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IobW9kYWxDbGFzcyk7XG5cbiAgaWYgKCEkbW9kYWwpIHtcbiAgICBzd2VldEFsZXJ0SW5pdGlhbGl6ZSgpO1xuICAgICRtb2RhbCA9IGdldE1vZGFsKCk7XG4gIH1cblxuICByZXR1cm4gJG1vZGFsO1xufTtcblxuLypcbiAqIEdldCBET00gZWxlbWVudCBvZiBpbnB1dCAoaW4gbW9kYWwpXG4gKi9cbnZhciBnZXRJbnB1dCA9IGZ1bmN0aW9uKCkge1xuICB2YXIgJG1vZGFsID0gZ2V0TW9kYWwoKTtcbiAgaWYgKCRtb2RhbCkge1xuICAgIHJldHVybiAkbW9kYWwucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgfVxufTtcblxuLypcbiAqIEdldCBET00gZWxlbWVudCBvZiBvdmVybGF5XG4gKi9cbnZhciBnZXRPdmVybGF5ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG92ZXJsYXlDbGFzcyk7XG59O1xuXG4vKlxuICogQWRkIGJveC1zaGFkb3cgc3R5bGUgdG8gYnV0dG9uIChkZXBlbmRpbmcgb24gaXRzIGNob3NlbiBiZy1jb2xvcilcbiAqL1xudmFyIHNldEZvY3VzU3R5bGUgPSBmdW5jdGlvbigkYnV0dG9uLCBiZ0NvbG9yKSB7XG4gIHZhciByZ2JDb2xvciA9IGhleFRvUmdiKGJnQ29sb3IpO1xuICAkYnV0dG9uLnN0eWxlLmJveFNoYWRvdyA9ICcwIDAgMnB4IHJnYmEoJyArIHJnYkNvbG9yICsgJywgMC44KSwgaW5zZXQgMCAwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSknO1xufTtcblxuLypcbiAqIEFuaW1hdGlvbiB3aGVuIG9wZW5pbmcgbW9kYWxcbiAqL1xudmFyIG9wZW5Nb2RhbCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciAkbW9kYWwgPSBnZXRNb2RhbCgpO1xuICBmYWRlSW4oZ2V0T3ZlcmxheSgpLCAxMCk7XG4gIHNob3coJG1vZGFsKTtcbiAgYWRkQ2xhc3MoJG1vZGFsLCAnc2hvd1N3ZWV0QWxlcnQnKTtcbiAgcmVtb3ZlQ2xhc3MoJG1vZGFsLCAnaGlkZVN3ZWV0QWxlcnQnKTtcblxuICB3aW5kb3cucHJldmlvdXNBY3RpdmVFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgdmFyICRva0J1dHRvbiA9ICRtb2RhbC5xdWVyeVNlbGVjdG9yKCdidXR0b24uY29uZmlybScpO1xuICAkb2tCdXR0b24uZm9jdXMoKTtcblxuICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICBhZGRDbGFzcygkbW9kYWwsICd2aXNpYmxlJyk7XG4gIH0sIDUwMCk7XG5cbiAgdmFyIHRpbWVyID0gJG1vZGFsLmdldEF0dHJpYnV0ZSgnZGF0YS10aW1lcicpO1xuXG4gIGlmICh0aW1lciAhPT0gJ251bGwnICYmIHRpbWVyICE9PSAnJykge1xuICAgIHZhciB0aW1lckNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgJG1vZGFsLnRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGRvbmVGdW5jdGlvbkV4aXN0cyA9ICgodGltZXJDYWxsYmFjayB8fCBudWxsKSAmJiAkbW9kYWwuZ2V0QXR0cmlidXRlKCdkYXRhLWhhcy1kb25lLWZ1bmN0aW9uJykgPT09ICd0cnVlJyk7XG4gICAgICBpZiAoZG9uZUZ1bmN0aW9uRXhpc3RzKSB7IFxuICAgICAgICB0aW1lckNhbGxiYWNrKG51bGwpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHN3ZWV0QWxlcnQuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9LCB0aW1lcik7XG4gIH1cbn07XG5cbi8qXG4gKiBSZXNldCB0aGUgc3R5bGluZyBvZiB0aGUgaW5wdXRcbiAqIChmb3IgZXhhbXBsZSBpZiBlcnJvcnMgaGF2ZSBiZWVuIHNob3duKVxuICovXG52YXIgcmVzZXRJbnB1dCA9IGZ1bmN0aW9uKCkge1xuICB2YXIgJG1vZGFsID0gZ2V0TW9kYWwoKTtcbiAgdmFyICRpbnB1dCA9IGdldElucHV0KCk7XG5cbiAgcmVtb3ZlQ2xhc3MoJG1vZGFsLCAnc2hvdy1pbnB1dCcpO1xuICAkaW5wdXQudmFsdWUgPSBkZWZhdWx0UGFyYW1zLmlucHV0VmFsdWU7XG4gICRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCBkZWZhdWx0UGFyYW1zLmlucHV0VHlwZSk7XG4gICRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgZGVmYXVsdFBhcmFtcy5pbnB1dFBsYWNlaG9sZGVyKTtcblxuICByZXNldElucHV0RXJyb3IoKTtcbn07XG5cblxudmFyIHJlc2V0SW5wdXRFcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gIC8vIElmIHByZXNzIGVudGVyID0+IGlnbm9yZVxuICBpZiAoZXZlbnQgJiYgZXZlbnQua2V5Q29kZSA9PT0gMTMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgJG1vZGFsID0gZ2V0TW9kYWwoKTtcblxuICB2YXIgJGVycm9ySWNvbiA9ICRtb2RhbC5xdWVyeVNlbGVjdG9yKCcuc2EtaW5wdXQtZXJyb3InKTtcbiAgcmVtb3ZlQ2xhc3MoJGVycm9ySWNvbiwgJ3Nob3cnKTtcblxuICB2YXIgJGVycm9yQ29udGFpbmVyID0gJG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJy5zYS1lcnJvci1jb250YWluZXInKTtcbiAgcmVtb3ZlQ2xhc3MoJGVycm9yQ29udGFpbmVyLCAnc2hvdycpO1xufTtcblxuXG4vKlxuICogU2V0IFwibWFyZ2luLXRvcFwiLXByb3BlcnR5IG9uIG1vZGFsIGJhc2VkIG9uIGl0cyBjb21wdXRlZCBoZWlnaHRcbiAqL1xudmFyIGZpeFZlcnRpY2FsUG9zaXRpb24gPSBmdW5jdGlvbigpIHtcbiAgdmFyICRtb2RhbCA9IGdldE1vZGFsKCk7XG4gICRtb2RhbC5zdHlsZS5tYXJnaW5Ub3AgPSBnZXRUb3BNYXJnaW4oZ2V0TW9kYWwoKSk7XG59O1xuXG5cbmV4cG9ydCB7IFxuICBzd2VldEFsZXJ0SW5pdGlhbGl6ZSxcbiAgZ2V0TW9kYWwsXG4gIGdldE92ZXJsYXksXG4gIGdldElucHV0LFxuICBzZXRGb2N1c1N0eWxlLFxuICBvcGVuTW9kYWwsXG4gIHJlc2V0SW5wdXQsXG4gIHJlc2V0SW5wdXRFcnJvcixcbiAgZml4VmVydGljYWxQb3NpdGlvblxufTtcbiIsInZhciBpbmplY3RlZEhUTUwgPSBcblxuICAvLyBEYXJrIG92ZXJsYXlcbiAgYDxkaXYgY2xhc3M9XCJzd2VldC1vdmVybGF5XCIgdGFiSW5kZXg9XCItMVwiPjwvZGl2PmAgK1xuXG4gIC8vIE1vZGFsXG4gIGA8ZGl2IGNsYXNzPVwic3dlZXQtYWxlcnRcIj5gICtcblxuICAgIC8vIEVycm9yIGljb25cbiAgICBgPGRpdiBjbGFzcz1cInNhLWljb24gc2EtZXJyb3JcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic2EteC1tYXJrXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2EtbGluZSBzYS1sZWZ0XCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNhLWxpbmUgc2EtcmlnaHRcIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+YCArXG5cbiAgICAvLyBXYXJuaW5nIGljb25cbiAgICBgPGRpdiBjbGFzcz1cInNhLWljb24gc2Etd2FybmluZ1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzYS1ib2R5XCI+PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzYS1kb3RcIj48L3NwYW4+XG4gICAgPC9kaXY+YCArXG5cbiAgICAvLyBJbmZvIGljb25cbiAgICBgPGRpdiBjbGFzcz1cInNhLWljb24gc2EtaW5mb1wiPjwvZGl2PmAgK1xuXG4gICAgLy8gU3VjY2VzcyBpY29uXG4gICAgYDxkaXYgY2xhc3M9XCJzYS1pY29uIHNhLXN1Y2Nlc3NcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic2EtbGluZSBzYS10aXBcIj48L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInNhLWxpbmUgc2EtbG9uZ1wiPjwvc3Bhbj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNhLXBsYWNlaG9sZGVyXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2EtZml4XCI+PC9kaXY+XG4gICAgPC9kaXY+YCArXG5cbiAgICBgPGRpdiBjbGFzcz1cInNhLWljb24gc2EtY3VzdG9tXCI+PC9kaXY+YCArXG5cbiAgICAvLyBUaXRsZSwgdGV4dCBhbmQgaW5wdXRcbiAgICBgPGgyPlRpdGxlPC9oMj5cbiAgICA8cD5UZXh0PC9wPlxuICAgIDxmaWVsZHNldD5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHRhYkluZGV4PVwiM1wiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwic2EtaW5wdXQtZXJyb3JcIj48L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PmAgK1xuXG4gICAgLy8gSW5wdXQgZXJyb3JzXG4gICAgYDxkaXYgY2xhc3M9XCJzYS1lcnJvci1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpY29uXCI+ITwvZGl2PlxuICAgICAgPHA+Tm90IHZhbGlkITwvcD5cbiAgICA8L2Rpdj5gICtcblxuICAgIC8vIENhbmNlbCBhbmQgY29uZmlybSBidXR0b25zXG4gICAgYDxkaXYgY2xhc3M9XCJzYS1idXR0b24tY29udGFpbmVyXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsXCIgdGFiSW5kZXg9XCIyXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwic2EtY29uZmlybS1idXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjb25maXJtXCIgdGFiSW5kZXg9XCIxXCI+T0s8L2J1dHRvbj5gICsgXG5cbiAgICAgICAgLy8gTG9hZGluZyBhbmltYXRpb25cbiAgICAgICAgYDxkaXYgY2xhc3M9XCJsYS1iYWxsLWZhbGxcIj5cbiAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5gICtcblxuICAvLyBFbmQgb2YgbW9kYWxcbiAgYDwvZGl2PmA7XG5cbmV4cG9ydCBkZWZhdWx0IGluamVjdGVkSFRNTDtcbiIsInZhciBhbGVydFR5cGVzID0gWydlcnJvcicsICd3YXJuaW5nJywgJ2luZm8nLCAnc3VjY2VzcycsICdpbnB1dCcsICdwcm9tcHQnXTtcblxuaW1wb3J0IHtcbiAgaXNJRThcbn0gZnJvbSAnLi91dGlscyc7XG5cbmltcG9ydCB7XG4gIGdldE1vZGFsLFxuICBnZXRJbnB1dCxcbiAgc2V0Rm9jdXNTdHlsZVxufSBmcm9tICcuL2hhbmRsZS1zd2FsLWRvbSc7XG5cbmltcG9ydCB7XG4gIGhhc0NsYXNzLCBhZGRDbGFzcywgcmVtb3ZlQ2xhc3MsXG4gIGVzY2FwZUh0bWwsXG4gIF9zaG93LCBzaG93LCBfaGlkZSwgaGlkZVxufSBmcm9tICcuL2hhbmRsZS1kb20nO1xuXG5cbi8qXG4gKiBTZXQgdHlwZSwgdGV4dCBhbmQgYWN0aW9ucyBvbiBtb2RhbFxuICovXG52YXIgc2V0UGFyYW1ldGVycyA9IGZ1bmN0aW9uKHBhcmFtcykge1xuICB2YXIgbW9kYWwgPSBnZXRNb2RhbCgpO1xuXG4gIHZhciAkdGl0bGUgPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCdoMicpO1xuICB2YXIgJHRleHQgPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCdwJyk7XG4gIHZhciAkY2FuY2VsQnRuID0gbW9kYWwucXVlcnlTZWxlY3RvcignYnV0dG9uLmNhbmNlbCcpO1xuICB2YXIgJGNvbmZpcm1CdG4gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCdidXR0b24uY29uZmlybScpO1xuXG4gIC8qXG4gICAqIFRpdGxlXG4gICAqL1xuICAkdGl0bGUuaW5uZXJIVE1MID0gcGFyYW1zLmh0bWwgPyBwYXJhbXMudGl0bGUgOiBlc2NhcGVIdG1sKHBhcmFtcy50aXRsZSkuc3BsaXQoJ1xcbicpLmpvaW4oJzxicj4nKTtcblxuICAvKlxuICAgKiBUZXh0XG4gICAqL1xuICAkdGV4dC5pbm5lckhUTUwgPSBwYXJhbXMuaHRtbCA/IHBhcmFtcy50ZXh0IDogZXNjYXBlSHRtbChwYXJhbXMudGV4dCB8fCAnJykuc3BsaXQoJ1xcbicpLmpvaW4oJzxicj4nKTtcbiAgaWYgKHBhcmFtcy50ZXh0KSBzaG93KCR0ZXh0KTtcblxuICAvKlxuICAgKiBDdXN0b20gY2xhc3NcbiAgICovXG4gIGlmIChwYXJhbXMuY3VzdG9tQ2xhc3MpIHtcbiAgICBhZGRDbGFzcyhtb2RhbCwgcGFyYW1zLmN1c3RvbUNsYXNzKTtcbiAgICBtb2RhbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtY3VzdG9tLWNsYXNzJywgcGFyYW1zLmN1c3RvbUNsYXNzKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGaW5kIHByZXZpb3VzbHkgc2V0IGNsYXNzZXMgYW5kIHJlbW92ZSB0aGVtXG4gICAgbGV0IGN1c3RvbUNsYXNzID0gbW9kYWwuZ2V0QXR0cmlidXRlKCdkYXRhLWN1c3RvbS1jbGFzcycpO1xuICAgIHJlbW92ZUNsYXNzKG1vZGFsLCBjdXN0b21DbGFzcyk7XG4gICAgbW9kYWwuc2V0QXR0cmlidXRlKCdkYXRhLWN1c3RvbS1jbGFzcycsICcnKTtcbiAgfVxuXG4gIC8qXG4gICAqIEljb25cbiAgICovXG4gIGhpZGUobW9kYWwucXVlcnlTZWxlY3RvckFsbCgnLnNhLWljb24nKSk7XG5cbiAgaWYgKHBhcmFtcy50eXBlICYmICFpc0lFOCgpKSB7XG5cbiAgICBsZXQgdmFsaWRUeXBlID0gZmFsc2U7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFsZXJ0VHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChwYXJhbXMudHlwZSA9PT0gYWxlcnRUeXBlc1tpXSkge1xuICAgICAgICB2YWxpZFR5cGUgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXZhbGlkVHlwZSkge1xuICAgICAgbG9nU3RyKCdVbmtub3duIGFsZXJ0IHR5cGU6ICcgKyBwYXJhbXMudHlwZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IHR5cGVzV2l0aEljb25zID0gWydzdWNjZXNzJywgJ2Vycm9yJywgJ3dhcm5pbmcnLCAnaW5mbyddO1xuICAgIGxldCAkaWNvbjtcblxuICAgIGlmICh0eXBlc1dpdGhJY29ucy5pbmRleE9mKHBhcmFtcy50eXBlKSAhPT0gLTEpIHtcbiAgICAgICRpY29uID0gbW9kYWwucXVlcnlTZWxlY3RvcignLnNhLWljb24uJyArICdzYS0nICsgcGFyYW1zLnR5cGUpO1xuICAgICAgc2hvdygkaWNvbik7XG4gICAgfVxuXG4gICAgbGV0ICRpbnB1dCA9IGdldElucHV0KCk7XG5cbiAgICAvLyBBbmltYXRlIGljb25cbiAgICBzd2l0Y2ggKHBhcmFtcy50eXBlKSB7XG5cbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICBhZGRDbGFzcygkaWNvbiwgJ2FuaW1hdGUnKTtcbiAgICAgICAgYWRkQ2xhc3MoJGljb24ucXVlcnlTZWxlY3RvcignLnNhLXRpcCcpLCAnYW5pbWF0ZVN1Y2Nlc3NUaXAnKTtcbiAgICAgICAgYWRkQ2xhc3MoJGljb24ucXVlcnlTZWxlY3RvcignLnNhLWxvbmcnKSwgJ2FuaW1hdGVTdWNjZXNzTG9uZycpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICBhZGRDbGFzcygkaWNvbiwgJ2FuaW1hdGVFcnJvckljb24nKTtcbiAgICAgICAgYWRkQ2xhc3MoJGljb24ucXVlcnlTZWxlY3RvcignLnNhLXgtbWFyaycpLCAnYW5pbWF0ZVhNYXJrJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgYWRkQ2xhc3MoJGljb24sICdwdWxzZVdhcm5pbmcnKTtcbiAgICAgICAgYWRkQ2xhc3MoJGljb24ucXVlcnlTZWxlY3RvcignLnNhLWJvZHknKSwgJ3B1bHNlV2FybmluZ0lucycpO1xuICAgICAgICBhZGRDbGFzcygkaWNvbi5xdWVyeVNlbGVjdG9yKCcuc2EtZG90JyksICdwdWxzZVdhcm5pbmdJbnMnKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgIGNhc2UgJ3Byb21wdCc6XG4gICAgICAgICRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCBwYXJhbXMuaW5wdXRUeXBlKTtcbiAgICAgICAgJGlucHV0LnZhbHVlID0gcGFyYW1zLmlucHV0VmFsdWU7XG4gICAgICAgICRpbnB1dC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgcGFyYW1zLmlucHV0UGxhY2Vob2xkZXIpO1xuICAgICAgICBhZGRDbGFzcyhtb2RhbCwgJ3Nob3ctaW5wdXQnKTtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgJGlucHV0LmZvY3VzKCk7XG4gICAgICAgICAgJGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgc3dhbC5yZXNldElucHV0RXJyb3IpO1xuICAgICAgICB9LCA0MDApO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKlxuICAgKiBDdXN0b20gaW1hZ2VcbiAgICovXG4gIGlmIChwYXJhbXMuaW1hZ2VVcmwpIHtcbiAgICBsZXQgJGN1c3RvbUljb24gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKCcuc2EtaWNvbi5zYS1jdXN0b20nKTtcblxuICAgICRjdXN0b21JY29uLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICd1cmwoJyArIHBhcmFtcy5pbWFnZVVybCArICcpJztcbiAgICBzaG93KCRjdXN0b21JY29uKTtcblxuICAgIGxldCBfaW1nV2lkdGggPSA4MDtcbiAgICBsZXQgX2ltZ0hlaWdodCA9IDgwO1xuXG4gICAgaWYgKHBhcmFtcy5pbWFnZVNpemUpIHtcbiAgICAgIGxldCBkaW1lbnNpb25zID0gcGFyYW1zLmltYWdlU2l6ZS50b1N0cmluZygpLnNwbGl0KCd4Jyk7XG4gICAgICBsZXQgaW1nV2lkdGggPSBkaW1lbnNpb25zWzBdO1xuICAgICAgbGV0IGltZ0hlaWdodCA9IGRpbWVuc2lvbnNbMV07XG5cbiAgICAgIGlmICghaW1nV2lkdGggfHwgIWltZ0hlaWdodCkge1xuICAgICAgICBsb2dTdHIoJ1BhcmFtZXRlciBpbWFnZVNpemUgZXhwZWN0cyB2YWx1ZSB3aXRoIGZvcm1hdCBXSURUSHhIRUlHSFQsIGdvdCAnICsgcGFyYW1zLmltYWdlU2l6ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfaW1nV2lkdGggPSBpbWdXaWR0aDtcbiAgICAgICAgX2ltZ0hlaWdodCA9IGltZ0hlaWdodDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkY3VzdG9tSWNvbi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJGN1c3RvbUljb24uZ2V0QXR0cmlidXRlKCdzdHlsZScpICsgJ3dpZHRoOicgKyBfaW1nV2lkdGggKyAncHg7IGhlaWdodDonICsgX2ltZ0hlaWdodCArICdweCcpO1xuICB9XG5cbiAgLypcbiAgICogU2hvdyBjYW5jZWwgYnV0dG9uP1xuICAgKi9cbiAgbW9kYWwuc2V0QXR0cmlidXRlKCdkYXRhLWhhcy1jYW5jZWwtYnV0dG9uJywgcGFyYW1zLnNob3dDYW5jZWxCdXR0b24pO1xuICBpZiAocGFyYW1zLnNob3dDYW5jZWxCdXR0b24pIHtcbiAgICAkY2FuY2VsQnRuLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcbiAgfSBlbHNlIHtcbiAgICBoaWRlKCRjYW5jZWxCdG4pO1xuICB9XG5cbiAgLypcbiAgICogU2hvdyBjb25maXJtIGJ1dHRvbj9cbiAgICovXG4gIG1vZGFsLnNldEF0dHJpYnV0ZSgnZGF0YS1oYXMtY29uZmlybS1idXR0b24nLCBwYXJhbXMuc2hvd0NvbmZpcm1CdXR0b24pO1xuICBpZiAocGFyYW1zLnNob3dDb25maXJtQnV0dG9uKSB7XG4gICAgJGNvbmZpcm1CdG4uc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snO1xuICB9IGVsc2Uge1xuICAgIGhpZGUoJGNvbmZpcm1CdG4pO1xuICB9XG5cbiAgLypcbiAgICogQ3VzdG9tIHRleHQgb24gY2FuY2VsL2NvbmZpcm0gYnV0dG9uc1xuICAgKi9cbiAgaWYgKHBhcmFtcy5jYW5jZWxCdXR0b25UZXh0KSB7XG4gICAgJGNhbmNlbEJ0bi5pbm5lckhUTUwgPSBlc2NhcGVIdG1sKHBhcmFtcy5jYW5jZWxCdXR0b25UZXh0KTtcbiAgfVxuICBpZiAocGFyYW1zLmNvbmZpcm1CdXR0b25UZXh0KSB7XG4gICAgJGNvbmZpcm1CdG4uaW5uZXJIVE1MID0gZXNjYXBlSHRtbChwYXJhbXMuY29uZmlybUJ1dHRvblRleHQpO1xuICB9XG5cbiAgLypcbiAgICogQ3VzdG9tIGNvbG9yIG9uIGNvbmZpcm0gYnV0dG9uXG4gICAqL1xuICBpZiAocGFyYW1zLmNvbmZpcm1CdXR0b25Db2xvcikge1xuICAgIC8vIFNldCBjb25maXJtIGJ1dHRvbiB0byBzZWxlY3RlZCBiYWNrZ3JvdW5kIGNvbG9yXG4gICAgJGNvbmZpcm1CdG4uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gcGFyYW1zLmNvbmZpcm1CdXR0b25Db2xvcjtcblxuICAgIC8vIFNldCB0aGUgY29uZmlybSBidXR0b24gY29sb3IgdG8gdGhlIGxvYWRpbmcgcmluZ1xuICAgICRjb25maXJtQnRuLnN0eWxlLmJvcmRlckxlZnRDb2xvciA9IHBhcmFtcy5jb25maXJtTG9hZGluZ0J1dHRvbkNvbG9yO1xuICAgICRjb25maXJtQnRuLnN0eWxlLmJvcmRlclJpZ2h0Q29sb3IgPSBwYXJhbXMuY29uZmlybUxvYWRpbmdCdXR0b25Db2xvcjtcblxuICAgIC8vIFNldCBib3gtc2hhZG93IHRvIGRlZmF1bHQgZm9jdXNlZCBidXR0b25cbiAgICBzZXRGb2N1c1N0eWxlKCRjb25maXJtQnRuLCBwYXJhbXMuY29uZmlybUJ1dHRvbkNvbG9yKTtcbiAgfVxuXG4gIC8qXG4gICAqIEFsbG93IG91dHNpZGUgY2xpY2tcbiAgICovXG4gIG1vZGFsLnNldEF0dHJpYnV0ZSgnZGF0YS1hbGxvdy1vdXRzaWRlLWNsaWNrJywgcGFyYW1zLmFsbG93T3V0c2lkZUNsaWNrKTtcblxuICAvKlxuICAgKiBDYWxsYmFjayBmdW5jdGlvblxuICAgKi9cbiAgdmFyIGhhc0RvbmVGdW5jdGlvbiA9IHBhcmFtcy5kb25lRnVuY3Rpb24gPyB0cnVlIDogZmFsc2U7XG4gIG1vZGFsLnNldEF0dHJpYnV0ZSgnZGF0YS1oYXMtZG9uZS1mdW5jdGlvbicsIGhhc0RvbmVGdW5jdGlvbik7XG5cbiAgLypcbiAgICogQW5pbWF0aW9uXG4gICAqL1xuICBpZiAoIXBhcmFtcy5hbmltYXRpb24pIHtcbiAgICBtb2RhbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYW5pbWF0aW9uJywgJ25vbmUnKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcGFyYW1zLmFuaW1hdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICBtb2RhbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYW5pbWF0aW9uJywgcGFyYW1zLmFuaW1hdGlvbik7IC8vIEN1c3RvbSBhbmltYXRpb25cbiAgfSBlbHNlIHtcbiAgICBtb2RhbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYW5pbWF0aW9uJywgJ3BvcCcpO1xuICB9XG5cbiAgLypcbiAgICogVGltZXJcbiAgICovXG4gIG1vZGFsLnNldEF0dHJpYnV0ZSgnZGF0YS10aW1lcicsIHBhcmFtcy50aW1lcik7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBzZXRQYXJhbWV0ZXJzO1xuIiwiLypcbiAqIEFsbG93IHVzZXIgdG8gcGFzcyB0aGVpciBvd24gcGFyYW1zXG4gKi9cbnZhciBleHRlbmQgPSBmdW5jdGlvbihhLCBiKSB7XG4gIGZvciAodmFyIGtleSBpbiBiKSB7XG4gICAgaWYgKGIuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgYVtrZXldID0gYltrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYTtcbn07XG5cbi8qXG4gKiBDb252ZXJ0IEhFWCBjb2RlcyB0byBSR0IgdmFsdWVzICgjMDAwMDAwIC0+IHJnYigwLDAsMCkpXG4gKi9cbnZhciBoZXhUb1JnYiA9IGZ1bmN0aW9uKGhleCkge1xuICB2YXIgcmVzdWx0ID0gL14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaS5leGVjKGhleCk7XG4gIHJldHVybiByZXN1bHQgPyBwYXJzZUludChyZXN1bHRbMV0sIDE2KSArICcsICcgKyBwYXJzZUludChyZXN1bHRbMl0sIDE2KSArICcsICcgKyBwYXJzZUludChyZXN1bHRbM10sIDE2KSA6IG51bGw7XG59O1xuXG4vKlxuICogQ2hlY2sgaWYgdGhlIHVzZXIgaXMgdXNpbmcgSW50ZXJuZXQgRXhwbG9yZXIgOCAoZm9yIGZhbGxiYWNrcylcbiAqL1xudmFyIGlzSUU4ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAod2luZG93LmF0dGFjaEV2ZW50ICYmICF3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcik7XG59O1xuXG4vKlxuICogSUUgY29tcGF0aWJsZSBsb2dnaW5nIGZvciBkZXZlbG9wZXJzXG4gKi9cbnZhciBsb2dTdHIgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZih3aW5kb3cpICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuY29uc29sZSkge1xuICAgIC8vIElFLi4uXG4gICAgd2luZG93LmNvbnNvbGUubG9nKCdTd2VldEFsZXJ0OiAnICsgc3RyaW5nKTtcbiAgfVxufTtcblxuLypcbiAqIFNldCBob3ZlciwgYWN0aXZlIGFuZCBmb2N1cy1zdGF0ZXMgZm9yIGJ1dHRvbnNcbiAqIChzb3VyY2U6IGh0dHA6Ly93d3cuc2l0ZXBvaW50LmNvbS9qYXZhc2NyaXB0LWdlbmVyYXRlLWxpZ2h0ZXItZGFya2VyLWNvbG9yKVxuICovXG52YXIgY29sb3JMdW1pbmFuY2UgPSBmdW5jdGlvbihoZXgsIGx1bSkge1xuICAvLyBWYWxpZGF0ZSBoZXggc3RyaW5nXG4gIGhleCA9IFN0cmluZyhoZXgpLnJlcGxhY2UoL1teMC05YS1mXS9naSwgJycpO1xuICBpZiAoaGV4Lmxlbmd0aCA8IDYpIHtcbiAgICBoZXggPSBoZXhbMF0gKyBoZXhbMF0gKyBoZXhbMV0gKyBoZXhbMV0gKyBoZXhbMl0gKyBoZXhbMl07XG4gIH1cbiAgbHVtID0gbHVtIHx8IDA7XG5cbiAgLy8gQ29udmVydCB0byBkZWNpbWFsIGFuZCBjaGFuZ2UgbHVtaW5vc2l0eVxuICB2YXIgcmdiID0gJyMnO1xuICB2YXIgYztcbiAgdmFyIGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykge1xuICAgIGMgPSBwYXJzZUludChoZXguc3Vic3RyKGkgKiAyLCAyKSwgMTYpO1xuICAgIGMgPSBNYXRoLnJvdW5kKE1hdGgubWluKE1hdGgubWF4KDAsIGMgKyBjICogbHVtKSwgMjU1KSkudG9TdHJpbmcoMTYpO1xuICAgIHJnYiArPSAoJzAwJyArIGMpLnN1YnN0cihjLmxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gcmdiO1xufTtcblxuXG5leHBvcnQge1xuICBleHRlbmQsXG4gIGhleFRvUmdiLFxuICBpc0lFOCxcbiAgbG9nU3RyLFxuICBjb2xvckx1bWluYW5jZVxufTtcbiJdfQ==
+
+  
+  /*
+   * Use SweetAlert with RequireJS
+   */
+  
+  if (typeof define === 'function' && define.amd) {
+    define(function () {
+      return sweetAlert;
+    });
+  } else if (typeof module !== 'undefined' && module.exports) {
+    module.exports = sweetAlert;
+  }
+
+})(window, document);
\ No newline at end of file
diff --git a/js/sweetalert.min.js b/js/sweetalert.min.js
new file mode 100644
index 0000000..500bf92
--- /dev/null
+++ b/js/sweetalert.min.js
@@ -0,0 +1 @@
+!function(e,t,n){"use strict";!function o(e,t,n){function a(s,l){if(!t[s]){if(!e[s]){var i="function"==typeof require&&require;if(!l&&i)return i(s,!0);if(r)return r(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var c=t[s]={exports:{}};e[s][0].call(c.exports,function(t){var n=e[s][1][t];return a(n?n:t)},c,c.exports,o,e,t,n)}return t[s].exports}for(var r="function"==typeof require&&require,s=0;s<n.length;s++)a(n[s]);return a}({1:[function(o,a,r){function s(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(r,"__esModule",{value:!0});var l,i,u,c,d=o("./modules/handle-dom"),f=o("./modules/utils"),p=o("./modules/handle-swal-dom"),m=o("./modules/handle-click"),v=o("./modules/handle-key"),y=s(v),b=o("./modules/default-params"),h=s(b),g=o("./modules/set-params"),w=s(g);r["default"]=u=c=function(){function o(e){var t=a;return t[e]===n?h["default"][e]:t[e]}var a=arguments[0];if((0,d.addClass)(t.body,"stop-scrolling"),(0,p.resetInput)(),a===n)return(0,f.logStr)("SweetAlert expects at least 1 attribute!"),!1;var r=(0,f.extend)({},h["default"]);switch(typeof a){case"string":r.title=a,r.text=arguments[1]||"",r.type=arguments[2]||"";break;case"object":if(a.title===n)return(0,f.logStr)('Missing "title" argument!'),!1;r.title=a.title;for(var s in h["default"])r[s]=o(s);r.confirmButtonText=r.showCancelButton?"Confirm":h["default"].confirmButtonText,r.confirmButtonText=o("confirmButtonText"),r.doneFunction=arguments[1]||null;break;default:return(0,f.logStr)('Unexpected type of argument! Expected "string" or "object", got '+typeof a),!1}(0,w["default"])(r),(0,p.fixVerticalPosition)(),(0,p.openModal)(arguments[1]);for(var u=(0,p.getModal)(),v=u.querySelectorAll("button"),b=["onclick","onmouseover","onmouseout","onmousedown","onmouseup","onfocus"],g=function(e){return(0,m.handleButton)(e,r,u)},C=0;C<v.length;C++)for(var S=0;S<b.length;S++){var x=b[S];v[C][x]=g}(0,p.getOverlay)().onclick=g,l=e.onkeydown;var k=function(e){return(0,y["default"])(e,r,u)};e.onkeydown=k,e.onfocus=function(){setTimeout(function(){i!==n&&(i.focus(),i=n)},0)},c.enableButtons()},u.setDefaults=c.setDefaults=function(e){if(!e)throw new Error("userParams is required");if("object"!=typeof e)throw new Error("userParams has to be a object");(0,f.extend)(h["default"],e)},u.close=c.close=function(){var o=(0,p.getModal)();(0,d.fadeOut)((0,p.getOverlay)(),5),(0,d.fadeOut)(o,5),(0,d.removeClass)(o,"showSweetAlert"),(0,d.addClass)(o,"hideSweetAlert"),(0,d.removeClass)(o,"visible");var a=o.querySelector(".sa-icon.sa-success");(0,d.removeClass)(a,"animate"),(0,d.removeClass)(a.querySelector(".sa-tip"),"animateSuccessTip"),(0,d.removeClass)(a.querySelector(".sa-long"),"animateSuccessLong");var r=o.querySelector(".sa-icon.sa-error");(0,d.removeClass)(r,"animateErrorIcon"),(0,d.removeClass)(r.querySelector(".sa-x-mark"),"animateXMark");var s=o.querySelector(".sa-icon.sa-warning");return(0,d.removeClass)(s,"pulseWarning"),(0,d.removeClass)(s.querySelector(".sa-body"),"pulseWarningIns"),(0,d.removeClass)(s.querySelector(".sa-dot"),"pulseWarningIns"),setTimeout(function(){var e=o.getAttribute("data-custom-class");(0,d.removeClass)(o,e)},300),(0,d.removeClass)(t.body,"stop-scrolling"),e.onkeydown=l,e.previousActiveElement&&e.previousActiveElement.focus(),i=n,clearTimeout(o.timeout),!0},u.showInputError=c.showInputError=function(e){var t=(0,p.getModal)(),n=t.querySelector(".sa-input-error");(0,d.addClass)(n,"show");var o=t.querySelector(".sa-error-container");(0,d.addClass)(o,"show"),o.querySelector("p").innerHTML=e,setTimeout(function(){u.enableButtons()},1),t.querySelector("input").focus()},u.resetInputError=c.resetInputError=function(e){if(e&&13===e.keyCode)return!1;var t=(0,p.getModal)(),n=t.querySelector(".sa-input-error");(0,d.removeClass)(n,"show");var o=t.querySelector(".sa-error-container");(0,d.removeClass)(o,"show")},u.disableButtons=c.disableButtons=function(e){var t=(0,p.getModal)(),n=t.querySelector("button.confirm"),o=t.querySelector("button.cancel");n.disabled=!0,o.disabled=!0},u.enableButtons=c.enableButtons=function(e){var t=(0,p.getModal)(),n=t.querySelector("button.confirm"),o=t.querySelector("button.cancel");n.disabled=!1,o.disabled=!1},"undefined"!=typeof e?e.sweetAlert=e.swal=u:(0,f.logStr)("SweetAlert is a frontend module!"),a.exports=r["default"]},{"./modules/default-params":2,"./modules/handle-click":3,"./modules/handle-dom":4,"./modules/handle-key":5,"./modules/handle-swal-dom":6,"./modules/set-params":8,"./modules/utils":9}],2:[function(e,t,n){Object.defineProperty(n,"__esModule",{value:!0});var o={title:"",text:"",type:null,allowOutsideClick:!1,showConfirmButton:!0,showCancelButton:!1,closeOnConfirm:!0,closeOnCancel:!0,confirmButtonText:"OK",confirmButtonColor:"#8CD4F5",cancelButtonText:"Cancel",imageUrl:null,imageSize:null,timer:null,customClass:"",html:!1,animation:!0,allowEscapeKey:!0,inputType:"text",inputPlaceholder:"",inputValue:"",showLoaderOnConfirm:!1};n["default"]=o,t.exports=n["default"]},{}],3:[function(t,n,o){Object.defineProperty(o,"__esModule",{value:!0});var a=t("./utils"),r=(t("./handle-swal-dom"),t("./handle-dom")),s=function(t,n,o){function s(e){m&&n.confirmButtonColor&&(p.style.backgroundColor=e)}var u,c,d,f=t||e.event,p=f.target||f.srcElement,m=-1!==p.className.indexOf("confirm"),v=-1!==p.className.indexOf("sweet-overlay"),y=(0,r.hasClass)(o,"visible"),b=n.doneFunction&&"true"===o.getAttribute("data-has-done-function");switch(m&&n.confirmButtonColor&&(u=n.confirmButtonColor,c=(0,a.colorLuminance)(u,-.04),d=(0,a.colorLuminance)(u,-.14)),f.type){case"mouseover":s(c);break;case"mouseout":s(u);break;case"mousedown":s(d);break;case"mouseup":s(c);break;case"focus":var h=o.querySelector("button.confirm"),g=o.querySelector("button.cancel");m?g.style.boxShadow="none":h.style.boxShadow="none";break;case"click":var w=o===p,C=(0,r.isDescendant)(o,p);if(!w&&!C&&y&&!n.allowOutsideClick)break;m&&b&&y?l(o,n):b&&y||v?i(o,n):(0,r.isDescendant)(o,p)&&"BUTTON"===p.tagName&&sweetAlert.close()}},l=function(e,t){var n=!0;(0,r.hasClass)(e,"show-input")&&(n=e.querySelector("input").value,n||(n="")),t.doneFunction(n),t.closeOnConfirm&&sweetAlert.close(),t.showLoaderOnConfirm&&sweetAlert.disableButtons()},i=function(e,t){var n=String(t.doneFunction).replace(/\s/g,""),o="function("===n.substring(0,9)&&")"!==n.substring(9,10);o&&t.doneFunction(!1),t.closeOnCancel&&sweetAlert.close()};o["default"]={handleButton:s,handleConfirm:l,handleCancel:i},n.exports=o["default"]},{"./handle-dom":4,"./handle-swal-dom":6,"./utils":9}],4:[function(n,o,a){Object.defineProperty(a,"__esModule",{value:!0});var r=function(e,t){return new RegExp(" "+t+" ").test(" "+e.className+" ")},s=function(e,t){r(e,t)||(e.className+=" "+t)},l=function(e,t){var n=" "+e.className.replace(/[\t\r\n]/g," ")+" ";if(r(e,t)){for(;n.indexOf(" "+t+" ")>=0;)n=n.replace(" "+t+" "," ");e.className=n.replace(/^\s+|\s+$/g,"")}},i=function(e){var n=t.createElement("div");return n.appendChild(t.createTextNode(e)),n.innerHTML},u=function(e){e.style.opacity="",e.style.display="block"},c=function(e){if(e&&!e.length)return u(e);for(var t=0;t<e.length;++t)u(e[t])},d=function(e){e.style.opacity="",e.style.display="none"},f=function(e){if(e&&!e.length)return d(e);for(var t=0;t<e.length;++t)d(e[t])},p=function(e,t){for(var n=t.parentNode;null!==n;){if(n===e)return!0;n=n.parentNode}return!1},m=function(e){e.style.left="-9999px",e.style.display="block";var t,n=e.clientHeight;return t="undefined"!=typeof getComputedStyle?parseInt(getComputedStyle(e).getPropertyValue("padding-top"),10):parseInt(e.currentStyle.padding),e.style.left="",e.style.display="none","-"+parseInt((n+t)/2)+"px"},v=function(e,t){if(+e.style.opacity<1){t=t||16,e.style.opacity=0,e.style.display="block";var n=+new Date,o=function a(){e.style.opacity=+e.style.opacity+(new Date-n)/100,n=+new Date,+e.style.opacity<1&&setTimeout(a,t)};o()}e.style.display="block"},y=function(e,t){t=t||16,e.style.opacity=1;var n=+new Date,o=function a(){e.style.opacity=+e.style.opacity-(new Date-n)/100,n=+new Date,+e.style.opacity>0?setTimeout(a,t):e.style.display="none"};o()},b=function(n){if("function"==typeof MouseEvent){var o=new MouseEvent("click",{view:e,bubbles:!1,cancelable:!0});n.dispatchEvent(o)}else if(t.createEvent){var a=t.createEvent("MouseEvents");a.initEvent("click",!1,!1),n.dispatchEvent(a)}else t.createEventObject?n.fireEvent("onclick"):"function"==typeof n.onclick&&n.onclick()},h=function(t){"function"==typeof t.stopPropagation?(t.stopPropagation(),t.preventDefault()):e.event&&e.event.hasOwnProperty("cancelBubble")&&(e.event.cancelBubble=!0)};a.hasClass=r,a.addClass=s,a.removeClass=l,a.escapeHtml=i,a._show=u,a.show=c,a._hide=d,a.hide=f,a.isDescendant=p,a.getTopMargin=m,a.fadeIn=v,a.fadeOut=y,a.fireClick=b,a.stopEventPropagation=h},{}],5:[function(t,o,a){Object.defineProperty(a,"__esModule",{value:!0});var r=t("./handle-dom"),s=t("./handle-swal-dom"),l=function(t,o,a){var l=t||e.event,i=l.keyCode||l.which,u=a.querySelector("button.confirm"),c=a.querySelector("button.cancel"),d=a.querySelectorAll("button[tabindex]");if(-1!==[9,13,32,27].indexOf(i)){for(var f=l.target||l.srcElement,p=-1,m=0;m<d.length;m++)if(f===d[m]){p=m;break}9===i?(f=-1===p?u:p===d.length-1?d[0]:d[p+1],(0,r.stopEventPropagation)(l),f.focus(),o.confirmButtonColor&&(0,s.setFocusStyle)(f,o.confirmButtonColor)):13===i?("INPUT"===f.tagName&&(f=u,u.focus()),f=-1===p?u:n):27===i&&o.allowEscapeKey===!0?(f=c,(0,r.fireClick)(f,l)):f=n}};a["default"]=l,o.exports=a["default"]},{"./handle-dom":4,"./handle-swal-dom":6}],6:[function(n,o,a){function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(a,"__esModule",{value:!0});var s=n("./utils"),l=n("./handle-dom"),i=n("./default-params"),u=r(i),c=n("./injected-html"),d=r(c),f=".sweet-alert",p=".sweet-overlay",m=function(){var e=t.createElement("div");for(e.innerHTML=d["default"];e.firstChild;)t.body.appendChild(e.firstChild)},v=function x(){var e=t.querySelector(f);return e||(m(),e=x()),e},y=function(){var e=v();return e?e.querySelector("input"):void 0},b=function(){return t.querySelector(p)},h=function(e,t){var n=(0,s.hexToRgb)(t);e.style.boxShadow="0 0 2px rgba("+n+", 0.8), inset 0 0 0 1px rgba(0, 0, 0, 0.05)"},g=function(n){var o=v();(0,l.fadeIn)(b(),10),(0,l.show)(o),(0,l.addClass)(o,"showSweetAlert"),(0,l.removeClass)(o,"hideSweetAlert"),e.previousActiveElement=t.activeElement;var a=o.querySelector("button.confirm");a.focus(),setTimeout(function(){(0,l.addClass)(o,"visible")},500);var r=o.getAttribute("data-timer");if("null"!==r&&""!==r){var s=n;o.timeout=setTimeout(function(){var e=(s||null)&&"true"===o.getAttribute("data-has-done-function");e?s(null):sweetAlert.close()},r)}},w=function(){var e=v(),t=y();(0,l.removeClass)(e,"show-input"),t.value=u["default"].inputValue,t.setAttribute("type",u["default"].inputType),t.setAttribute("placeholder",u["default"].inputPlaceholder),C()},C=function(e){if(e&&13===e.keyCode)return!1;var t=v(),n=t.querySelector(".sa-input-error");(0,l.removeClass)(n,"show");var o=t.querySelector(".sa-error-container");(0,l.removeClass)(o,"show")},S=function(){var e=v();e.style.marginTop=(0,l.getTopMargin)(v())};a.sweetAlertInitialize=m,a.getModal=v,a.getOverlay=b,a.getInput=y,a.setFocusStyle=h,a.openModal=g,a.resetInput=w,a.resetInputError=C,a.fixVerticalPosition=S},{"./default-params":2,"./handle-dom":4,"./injected-html":7,"./utils":9}],7:[function(e,t,n){Object.defineProperty(n,"__esModule",{value:!0});var o='<div class="sweet-overlay" tabIndex="-1"></div><div class="sweet-alert"><div class="sa-icon sa-error">\n      <span class="sa-x-mark">\n        <span class="sa-line sa-left"></span>\n        <span class="sa-line sa-right"></span>\n      </span>\n    </div><div class="sa-icon sa-warning">\n      <span class="sa-body"></span>\n      <span class="sa-dot"></span>\n    </div><div class="sa-icon sa-info"></div><div class="sa-icon sa-success">\n      <span class="sa-line sa-tip"></span>\n      <span class="sa-line sa-long"></span>\n\n      <div class="sa-placeholder"></div>\n      <div class="sa-fix"></div>\n    </div><div class="sa-icon sa-custom"></div><h2>Title</h2>\n    <p>Text</p>\n    <fieldset>\n      <input type="text" tabIndex="3" />\n      <div class="sa-input-error"></div>\n    </fieldset><div class="sa-error-container">\n      <div class="icon">!</div>\n      <p>Not valid!</p>\n    </div><div class="sa-button-container">\n      <button class="cancel" tabIndex="2">Cancel</button>\n      <div class="sa-confirm-button-container">\n        <button class="confirm" tabIndex="1">OK</button><div class="la-ball-fall">\n          <div></div>\n          <div></div>\n          <div></div>\n        </div>\n      </div>\n    </div></div>';n["default"]=o,t.exports=n["default"]},{}],8:[function(e,t,o){Object.defineProperty(o,"__esModule",{value:!0});var a=e("./utils"),r=e("./handle-swal-dom"),s=e("./handle-dom"),l=["error","warning","info","success","input","prompt"],i=function(e){var t=(0,r.getModal)(),o=t.querySelector("h2"),i=t.querySelector("p"),u=t.querySelector("button.cancel"),c=t.querySelector("button.confirm");if(o.innerHTML=e.html?e.title:(0,s.escapeHtml)(e.title).split("\n").join("<br>"),i.innerHTML=e.html?e.text:(0,s.escapeHtml)(e.text||"").split("\n").join("<br>"),e.text&&(0,s.show)(i),e.customClass)(0,s.addClass)(t,e.customClass),t.setAttribute("data-custom-class",e.customClass);else{var d=t.getAttribute("data-custom-class");(0,s.removeClass)(t,d),t.setAttribute("data-custom-class","")}if((0,s.hide)(t.querySelectorAll(".sa-icon")),e.type&&!(0,a.isIE8)()){var f=function(){for(var o=!1,a=0;a<l.length;a++)if(e.type===l[a]){o=!0;break}if(!o)return logStr("Unknown alert type: "+e.type),{v:!1};var i=["success","error","warning","info"],u=n;-1!==i.indexOf(e.type)&&(u=t.querySelector(".sa-icon.sa-"+e.type),(0,s.show)(u));var c=(0,r.getInput)();switch(e.type){case"success":(0,s.addClass)(u,"animate"),(0,s.addClass)(u.querySelector(".sa-tip"),"animateSuccessTip"),(0,s.addClass)(u.querySelector(".sa-long"),"animateSuccessLong");break;case"error":(0,s.addClass)(u,"animateErrorIcon"),(0,s.addClass)(u.querySelector(".sa-x-mark"),"animateXMark");break;case"warning":(0,s.addClass)(u,"pulseWarning"),(0,s.addClass)(u.querySelector(".sa-body"),"pulseWarningIns"),(0,s.addClass)(u.querySelector(".sa-dot"),"pulseWarningIns");break;case"input":case"prompt":c.setAttribute("type",e.inputType),c.value=e.inputValue,c.setAttribute("placeholder",e.inputPlaceholder),(0,s.addClass)(t,"show-input"),setTimeout(function(){c.focus(),c.addEventListener("keyup",swal.resetInputError)},400)}}();if("object"==typeof f)return f.v}if(e.imageUrl){var p=t.querySelector(".sa-icon.sa-custom");p.style.backgroundImage="url("+e.imageUrl+")",(0,s.show)(p);var m=80,v=80;if(e.imageSize){var y=e.imageSize.toString().split("x"),b=y[0],h=y[1];b&&h?(m=b,v=h):logStr("Parameter imageSize expects value with format WIDTHxHEIGHT, got "+e.imageSize)}p.setAttribute("style",p.getAttribute("style")+"width:"+m+"px; height:"+v+"px")}t.setAttribute("data-has-cancel-button",e.showCancelButton),e.showCancelButton?u.style.display="inline-block":(0,s.hide)(u),t.setAttribute("data-has-confirm-button",e.showConfirmButton),e.showConfirmButton?c.style.display="inline-block":(0,s.hide)(c),e.cancelButtonText&&(u.innerHTML=(0,s.escapeHtml)(e.cancelButtonText)),e.confirmButtonText&&(c.innerHTML=(0,s.escapeHtml)(e.confirmButtonText)),e.confirmButtonColor&&(c.style.backgroundColor=e.confirmButtonColor,c.style.borderLeftColor=e.confirmLoadingButtonColor,c.style.borderRightColor=e.confirmLoadingButtonColor,(0,r.setFocusStyle)(c,e.confirmButtonColor)),t.setAttribute("data-allow-outside-click",e.allowOutsideClick);var g=!!e.doneFunction;t.setAttribute("data-has-done-function",g),e.animation?"string"==typeof e.animation?t.setAttribute("data-animation",e.animation):t.setAttribute("data-animation","pop"):t.setAttribute("data-animation","none"),t.setAttribute("data-timer",e.timer)};o["default"]=i,t.exports=o["default"]},{"./handle-dom":4,"./handle-swal-dom":6,"./utils":9}],9:[function(t,n,o){Object.defineProperty(o,"__esModule",{value:!0});var a=function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},r=function(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?parseInt(t[1],16)+", "+parseInt(t[2],16)+", "+parseInt(t[3],16):null},s=function(){return e.attachEvent&&!e.addEventListener},l=function(t){"undefined"!=typeof e&&e.console&&e.console.log("SweetAlert: "+t)},i=function(e,t){e=String(e).replace(/[^0-9a-f]/gi,""),e.length<6&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),t=t||0;var n,o,a="#";for(o=0;3>o;o++)n=parseInt(e.substr(2*o,2),16),n=Math.round(Math.min(Math.max(0,n+n*t),255)).toString(16),a+=("00"+n).substr(n.length);return a};o.extend=a,o.hexToRgb=r,o.isIE8=s,o.logStr=l,o.colorLuminance=i},{}]},{},[1]),"function"==typeof define&&define.amd?define(function(){return sweetAlert}):"undefined"!=typeof module&&module.exports&&(module.exports=sweetAlert)}(window,document);
\ No newline at end of file
diff --git a/style.css b/style.css
deleted file mode 100644
index f8f05c7..0000000
--- a/style.css
+++ /dev/null
@@ -1,60 +0,0 @@
-.logo{
-    vertical-align: middle;
-    margin: auto;
-    padding: auto;;
-}
-
-body{
-    background-color:white;
-    font-family: 'Baloo Bhaina', cursive;
-    margin: 0;
-    
-}
-.moduland{
-    color: red;
-}
-
-.button{
-    padding-top: 80px;
-    padding-bottom: 30px;
-}
-
-a{
-  opacity: 1; 
-  transition: opacity 3s;
-  -webkit-transition: opacity 3s;
-}
-
-a:hover{
-    opacity: 0.3;
-}
-hr{
-    border-color: darkorange;
-    border-style:double;
-}
-.fork-pc{
-    top: 0;
-    border: 0;
-    left: 0;
-    position: absolute;
-    animation-duration: 4s;
-    animation-iteration-count: infinite;
-    position: relative;
-}
-
-
-#login-footer p{
-    vertical-align: center;
-    margin:auto;
-}
-#login-footer{
-    color: white;
-    width: 100%;
-    bottom: 0;
-    text-align: center;
-    background-color: #f2b56b;
-    position:fixed;
-    font-size: 17px;
-    margin-top: 100px;
-    height: auto;
-}
\ No newline at end of file

From ed5b7fa4a2829c8018939237b6405ea52e162dd0 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 29 Aug 2017 00:49:34 +0430
Subject: [PATCH 081/104] fix : minor edit in page

---
 js/script.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/js/script.js b/js/script.js
index 0af8294..81e5123 100644
--- a/js/script.js
+++ b/js/script.js
@@ -2,7 +2,7 @@
 function redirect(flag){
     switch(flag){
         case 1:
-            window.open("https://saythanks.io/to/lightsout");
+            window.open("https://saythanks.io/to/orangetool");
             break;
         case 2:
             swal("Bitocin Wallet","1XGr9qbZjBpUQJJSB6WtgBQbDTgrhPLPA");

From dd90479e8e41cd1f4824a2a4bd3a248f75cbc2ef Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 29 Aug 2017 00:55:35 +0430
Subject: [PATCH 082/104] addthis script added

---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index 80454f7..29f06d6 100644
--- a/index.html
+++ b/index.html
@@ -50,7 +50,7 @@
         
         
         
-        
+     <!-- Go to www.addthis.com/dashboard to customize your tools --> <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-59a47bb8baaa1a91"></script>    
     </body>
 
 

From f2891905e7ee324c60a164dc36bd6986ba082d16 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 29 Aug 2017 01:01:08 +0430
Subject: [PATCH 083/104] fix : minor edit in mobile view

---
 css/style.css | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/css/style.css b/css/style.css
index 0dc7f24..631adf7 100644
--- a/css/style.css
+++ b/css/style.css
@@ -237,5 +237,7 @@ button{
         width: 90%;
         margin-bottom: 20px;
     }
-    
+    .button{
+        margin-bottom: 60px;
+    }
 }
\ No newline at end of file

From cf0e28d12f1ed89ad98a9843795894fc5580187d Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 29 Aug 2017 15:42:01 +0430
Subject: [PATCH 084/104] 404 page modified

---
 404.html    | 57 ++++++++++++++++++++++++++++++++++++++++++++++++-----
 donate.html |  2 +-
 index.html  |  2 +-
 3 files changed, 54 insertions(+), 7 deletions(-)

diff --git a/404.html b/404.html
index 0a30ede..c2ab71a 100644
--- a/404.html
+++ b/404.html
@@ -1,17 +1,64 @@
 <html>
 	<head>
 		<title>Page not found</title>
+        <style type="text/css">
+        @font-face {
+        font-family: "julius";
+        src: url("http://www.lightsout.ir/fonts/JuliusSansOne-Regular.ttf");
+        }
+        body{
+            font-family: 'Baloo Bhaina', cursive;
+        }
+        .return p{
+            font-size: 40px;
+            font-weight: 600;
+        }
+        .return a{
+            font-size: 30px;
+            text-decoration: none;
+            border: 4px solid red;
+            color: red;
+            padding: 4px;
+            cursor: pointer;
+            transition: 0.3s;
+            margin: auto;
+        }
         
+        .return a:hover{
+            opacity: 0.4;
+        }
+        .Error-page{
+            
+            text-align:center;
+            margin: auto;
+            margin-top:20px;
+        }
+        img{
+            width: 550px;
+            height: 400px;
+        }
+        @media all and (max-width: 1024px) {
+            img{
+                width: 90%;
+                height: 40%;
+            }
+            
+            
+        }
+    </style>
 		
 </head>
+    
 	<body >
-		<div style="margin-top:200px;text-align:center;" >
-		<img src="http://moduland.github.io/Orangetool/images/orangetool.jpg" height=240px width=320px alt="orangetool logo">
+        <div class="Error-page" >
+		<img src="http://moduland.github.io/Orangetool/images/orangetool.jpg"/ alt="orangetool logo">
         <br/>
-        <p style="font-size:30px; text-decoration:None;">Page not found</p>
-        <a href="http://moduland.github.io/Orangetool" style="font-size:30px;border:2px groove;border-radius:23px;text-decoration:None;padding:5px;background:azure; ">Home</a>
-            
+        <div class="return">
+            <p style="font-size:30px; text-decoration:None;">Page Not Found</p>
+            <a href="http://www.orangetool.ir">Back</a>
+         </div>   
         </div>
+        
 	</body>
 
 
diff --git a/donate.html b/donate.html
index 45536d1..d2663f6 100644
--- a/donate.html
+++ b/donate.html
@@ -9,7 +9,7 @@
         <script src="js/script.js" type="text/javascript"></script>
         <meta name="description" content="Orangetool By Moduland"/>
         <meta property="og:title" content="Orangetool" />
-        <meta property="og:site_name" content="http://moduland.github.io/Orangetool"/>
+        <meta property="og:site_name" content="http://www.orangetool.ir"/>
         <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
         <meta property="og:image" content="http://www.orangetool.ir/images/og-icon.png" />
         <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
diff --git a/index.html b/index.html
index 29f06d6..d19e8be 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,7 @@
         <link href="css/style.css" rel="stylesheet" type="text/css">
         <meta name="description" content="Orangetool By Moduland"/>
         <meta property="og:title" content="Orangetool" />
-        <meta property="og:site_name" content="http://moduland.github.io/Orangetool"/>
+        <meta property="og:site_name" content="http://www.orangetool.ir"/>
         <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
         <meta property="og:image" content="http://www.orangetool.ir/images/og-icon.png" />
          <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

From 3311a6b457ccfa0b3b22442e0c70f86d9564ebfd Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 29 Aug 2017 15:45:40 +0430
Subject: [PATCH 085/104] favicon added

---
 favicon.ico | Bin 0 -> 1150 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 favicon.ico

diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..87f7d548e671f8277c674a9dfe94beeff85af4e4
GIT binary patch

From a5bae4dbf7954cae2e0dec3f5e6f42a9c5df0f52 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 29 Aug 2017 23:33:14 +0430
Subject: [PATCH 086/104] particle js added

---
 css/style.css       |   34 +-
 donate.html         |    8 +-
 functions.html      |   98 +++
 index.html          |   25 +-
 js/app.js           |  133 ++++
 js/particles.js     | 1541 +++++++++++++++++++++++++++++++++++++++++++
 js/particles.min.js |    9 +
 7 files changed, 1827 insertions(+), 21 deletions(-)
 create mode 100644 functions.html
 create mode 100644 js/app.js
 create mode 100644 js/particles.js
 create mode 100644 js/particles.min.js

diff --git a/css/style.css b/css/style.css
index 631adf7..c8a0f36 100644
--- a/css/style.css
+++ b/css/style.css
@@ -1,7 +1,8 @@
 .logo{
     vertical-align: middle;
     margin: auto;
-    padding: auto;;
+    padding: auto;
+    margin-top: 10px;
 }
 
 body{
@@ -14,6 +15,7 @@ body{
 .orange_image{
     height: 350px;
     width: 500px;
+    opacity: 0.7;
 }
 
 .moduland{
@@ -93,6 +95,14 @@ hr{
     font-size-adjust: auto;
     hyphens: auto;
 }
+.functions{
+    width: 80%;
+    margin: auto;
+    font-size: 37px;
+    text-align: left;
+    font-size-adjust: auto;
+    hyphens: auto;
+}
 .help h3{
     text-align: center;
 }
@@ -199,7 +209,21 @@ button {
     font-family: "sacramento";
     font-size: 25px;
 }
-
+#particles-js{
+    position: relative;
+    width: 100%;
+    height: 100%;
+    background-color: white;
+    background-image: url('');
+    background-size: cover; 
+    background-repeat: no-repeat;
+  }
+.siteWrapper {
+    position: fixed;
+    overflow: auto;
+    width: 100%;
+    height: 100%;
+}
 @media all and (max-width: 1024px) {
   #login-footer {
         position: relative;
@@ -233,6 +257,12 @@ button {
         text-align: center;
         hyphens: auto;
     }
+    .functions{
+            width: 95%;
+        font-size: 40px;
+        text-align: left;
+        hyphens: auto;
+    }
 button{
         width: 90%;
         margin-bottom: 20px;
diff --git a/donate.html b/donate.html
index d2663f6..eecdb00 100644
--- a/donate.html
+++ b/donate.html
@@ -15,7 +15,8 @@
         <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
     </head>
     <body>
-        	
+      <div id="particles-js">
+          <div class="siteWrapper">  	
       <div class="header">
             <h1 id="back"><a href="index.html">Back</a></h1>
         </div>
@@ -35,6 +36,8 @@ <h1 id="back"><a href="index.html">Back</a></h1>
         <div id="login-footer" class="abs">
         <p> Copyright (c) 2017 Moduland Co</p>
     </div>
+          </div>
+        </div>
     
     
     
@@ -48,7 +51,8 @@ <h1 id="back"><a href="index.html">Back</a></h1>
         
         
         
-        
+      <script src="js/particles.js"></script>
+    <script src="js/app.js"></script>   
         
     </body>
 
diff --git a/functions.html b/functions.html
new file mode 100644
index 0000000..df0be1a
--- /dev/null
+++ b/functions.html
@@ -0,0 +1,98 @@
+<html>
+    <head>
+        <title>Orangetool</title>
+        <link href="css/style.css" rel="stylesheet" type="text/css">
+          <link href="css/style.min.css" rel=stylesheet type="text/css">
+        <script src="js/sweetalert.min.js"></script>
+        <link rel="stylesheet" href="css/themes/google/google.css">
+        <link rel="stylesheet" type="text/css" href="css/sweetalert.css">
+        <script src="js/script.js" type="text/javascript"></script>
+        <meta name="description" content="Orangetool By Moduland"/>
+        <meta property="og:title" content="Orangetool" />
+        <meta property="og:site_name" content="http://www.orangetool.ir"/>
+        <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
+        <meta property="og:image" content="http://www.orangetool.ir/images/og-icon.png" />
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+    </head>
+    <body>
+     <div id="particles-js">
+          <div class="siteWrapper">     	
+      <div class="header">
+            <h1 id="back"><a href="index.html">Back</a></h1>
+        </div>
+        <div class="functions">
+            <ul>
+            <li>IP Functions</li>
+                <ul>
+                    <li>Local IP</li>
+                    <li>Global IP</li>
+                    <li>Internet Check</li>
+                    <li>Ping</li>
+                    <li>Set IP</li>
+                    <li>MAC address</li>
+                </ul>
+            <li>RAM Functions</li>
+                <ul>
+                    <li>Total RAM</li>
+                    <li>Free RAM</li>
+                    <li>RAM Percentage</li>
+                    <li>Used Percentage</li>
+                    <li>Freeup</li>
+                </ul>
+            <li>Storage Functions</li>
+                <ul>
+                    <li>Mount Status</li>
+                    <li>Storage Status</li>
+                    <li>Unmount</li>
+                    <li>Mount</li>
+                    <li>Unmount All</li>
+                </ul>
+            <li>Display Functions</li>
+                <ul>
+                    <li>HDMI On</li>
+                    <li>HDMI Off</li>
+                    <li>HDMI Size</li>
+                </ul>
+            <li>System Functions</li>
+                <ul>
+                    <li>Sleep</li>
+                    <li>Halt</li>
+                    <li>Restart</li>
+                    <li>Wakeup</li>
+                    <li>Temperature</li>
+                    <li>Uptime</li>
+                    <li>IDLEtime</li>
+                </ul>
+            </ul>
+        </div>
+        <div id="login-footer" class="abs">
+        <p> Copyright (c) 2017 Moduland Co</p>
+    </div>
+         </div>
+        </div>
+    
+    
+    
+    
+        
+        
+        
+        
+        
+        
+        
+        
+      <script src="js/particles.js"></script>
+    <script src="js/app.js"></script>   
+        
+    </body>
+
+
+
+
+
+
+
+
+
+</html>
\ No newline at end of file
diff --git a/index.html b/index.html
index d19e8be..d221e0f 100644
--- a/index.html
+++ b/index.html
@@ -10,17 +10,18 @@
          <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
     </head>
     <body>
-        	
+      <div id="particles-js">
+          <div class="siteWrapper">
         <div class="logo"  align="center">
             <img src="images/orangetool.jpg"  class="orange_image">
-            <br/>
         </div>
          <div class="main_text" >
              <p class="moduland"><a href="https://github.com/moduland/Orangetool/archive/v0.23.zip">Version 0.23</a></p>
             <p>General and useful python-scripts developed for Single-Board Computers</p>
             <p>Tested on Lubuntu 14.04</p>
+            <a href="functions.html">Functions List</a>
         </div>
-            
+        
         <div class="button" align="center">
         
             <a href="https://github.com/Moduland/Orangetool/archive/master.zip" title="Download Source"><img src="images/download.png" height="128px" width="128px" alt="Download Source"></a>
@@ -36,20 +37,10 @@
         <div id="login-footer" class="abs">
         <p> Copyright (c) 2017 Moduland Co</p>
     </div>
-    
-    
-    
-    
-    
-        
-        
-        
-        
-        
-        
-        
-        
-        
+              </div>
+          </div>
+    <script src="js/particles.js"></script>
+    <script src="js/app.js"></script> 
      <!-- Go to www.addthis.com/dashboard to customize your tools --> <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-59a47bb8baaa1a91"></script>    
     </body>
 
diff --git a/js/app.js b/js/app.js
new file mode 100644
index 0000000..54c0847
--- /dev/null
+++ b/js/app.js
@@ -0,0 +1,133 @@
+/* -----------------------------------------------
+/* How to use? : Check the GitHub README
+/* ----------------------------------------------- */
+
+/* To load a config file (particles.json) you need to host this demo (MAMP/WAMP/local)... */
+/*
+particlesJS.load('particles-js', 'particles.json', function() {
+  console.log('particles.js loaded - callback');
+});
+*/
+
+/* Otherwise just put the config content (json): */
+var shape_control="images/sun.png";
+var size=35;
+var hr = (new Date()).getHours(); 
+if (hr>=20||hr<6){
+    shape_control="images/star.png";
+    size=15;
+}
+particlesJS('particles-js',
+  
+  {
+  "particles": {
+    "number": {
+      "value": 80,
+      "density": {
+        "enable": true,
+        "value_area": 800
+      }
+    },
+    "color": {
+      "value": "#070404"
+    },
+    "shape": {
+      "type": "circle",
+      "stroke": {
+        "width": 0,
+        "color": "#000000"
+      },
+      "polygon": {
+        "nb_sides": 5
+      },
+      "image": {
+        "src": "img/github.svg",
+        "width": 100,
+        "height": 100
+      }
+    },
+    "opacity": {
+      "value": 0.5,
+      "random": false,
+      "anim": {
+        "enable": false,
+        "speed": 1,
+        "opacity_min": 0.1,
+        "sync": false
+      }
+    },
+    "size": {
+      "value": 3,
+      "random": true,
+      "anim": {
+        "enable": false,
+        "speed": 40,
+        "size_min": 0.1,
+        "sync": false
+      }
+    },
+    "line_linked": {
+      "enable": true,
+      "distance": 150,
+      "color": "#501e1e",
+      "opacity": 0.4,
+      "width": 1
+    },
+    "move": {
+      "enable": true,
+      "speed": 6,
+      "direction": "none",
+      "random": false,
+      "straight": false,
+      "out_mode": "out",
+      "bounce": false,
+      "attract": {
+        "enable": false,
+        "rotateX": 600,
+        "rotateY": 1200
+      }
+    }
+  },
+  "interactivity": {
+    "detect_on": "canvas",
+    "events": {
+      "onhover": {
+        "enable": true,
+        "mode": "repulse"
+      },
+      "onclick": {
+        "enable": true,
+        "mode": "push"
+      },
+      "resize": true
+    },
+    "modes": {
+      "grab": {
+        "distance": 400,
+        "line_linked": {
+          "opacity": 1
+        }
+      },
+      "bubble": {
+        "distance": 400,
+        "size": 40,
+        "duration": 2,
+        "opacity": 8,
+        "speed": 3
+      },
+      "repulse": {
+        "distance": 200,
+        "duration": 0.4
+      },
+      "push": {
+        "particles_nb": 4
+      },
+      "remove": {
+        "particles_nb": 2
+      }
+    }
+  },
+  "retina_detect": true
+}
+
+);
\ No newline at end of file
diff --git a/js/particles.js b/js/particles.js
new file mode 100644
index 0000000..325d834
--- /dev/null
+++ b/js/particles.js
@@ -0,0 +1,1541 @@
+/* -----------------------------------------------
+/* Author : Vincent Garreau  - vincentgarreau.com
+/* MIT license: http://opensource.org/licenses/MIT
+/* Demo / Generator : vincentgarreau.com/particles.js
+/* GitHub : github.com/VincentGarreau/particles.js
+/* How to use? : Check the GitHub README
+/* v2.0.0
+/* ----------------------------------------------- */
+
+var pJS = function(tag_id, params){
+
+  var canvas_el = document.querySelector('#'+tag_id+' > .particles-js-canvas-el');
+
+  /* particles.js variables with default values */
+  this.pJS = {
+    canvas: {
+      el: canvas_el,
+      w: canvas_el.offsetWidth,
+      h: canvas_el.offsetHeight
+    },
+    particles: {
+      number: {
+        value: 400,
+        density: {
+          enable: true,
+          value_area: 800
+        }
+      },
+      color: {
+        value: '#fff'
+      },
+      shape: {
+        type: 'circle',
+        stroke: {
+          width: 0,
+          color: '#ff0000'
+        },
+        polygon: {
+          nb_sides: 5
+        },
+        image: {
+          src: '',
+          width: 100,
+          height: 100
+        }
+      },
+      opacity: {
+        value: 1,
+        random: false,
+        anim: {
+          enable: false,
+          speed: 2,
+          opacity_min: 0,
+          sync: false
+        }
+      },
+      size: {
+        value: 20,
+        random: false,
+        anim: {
+          enable: false,
+          speed: 20,
+          size_min: 0,
+          sync: false
+        }
+      },
+      line_linked: {
+        enable: true,
+        distance: 100,
+        color: '#fff',
+        opacity: 1,
+        width: 1
+      },
+      move: {
+        enable: true,
+        speed: 2,
+        direction: 'none',
+        random: false,
+        straight: false,
+        out_mode: 'out',
+        bounce: false,
+        attract: {
+          enable: false,
+          rotateX: 3000,
+          rotateY: 3000
+        }
+      },
+      array: []
+    },
+    interactivity: {
+      detect_on: 'canvas',
+      events: {
+        onhover: {
+          enable: true,
+          mode: 'grab'
+        },
+        onclick: {
+          enable: true,
+          mode: 'push'
+        },
+        resize: true
+      },
+      modes: {
+        grab:{
+          distance: 100,
+          line_linked:{
+            opacity: 1
+          }
+        },
+        bubble:{
+          distance: 200,
+          size: 80,
+          duration: 0.4
+        },
+        repulse:{
+          distance: 200,
+          duration: 0.4
+        },
+        push:{
+          particles_nb: 4
+        },
+        remove:{
+          particles_nb: 2
+        }
+      },
+      mouse:{}
+    },
+    retina_detect: false,
+    fn: {
+      interact: {},
+      modes: {},
+      vendors:{}
+    },
+    tmp: {}
+  };
+
+  var pJS = this.pJS;
+
+  /* params settings */
+  if(params){
+    Object.deepExtend(pJS, params);
+  }
+
+  pJS.tmp.obj = {
+    size_value: pJS.particles.size.value,
+    size_anim_speed: pJS.particles.size.anim.speed,
+    move_speed: pJS.particles.move.speed,
+    line_linked_distance: pJS.particles.line_linked.distance,
+    line_linked_width: pJS.particles.line_linked.width,
+    mode_grab_distance: pJS.interactivity.modes.grab.distance,
+    mode_bubble_distance: pJS.interactivity.modes.bubble.distance,
+    mode_bubble_size: pJS.interactivity.modes.bubble.size,
+    mode_repulse_distance: pJS.interactivity.modes.repulse.distance
+  };
+
+
+  pJS.fn.retinaInit = function(){
+
+    if(pJS.retina_detect && window.devicePixelRatio > 1){
+      pJS.canvas.pxratio = window.devicePixelRatio; 
+      pJS.tmp.retina = true;
+    } 
+    else{
+      pJS.canvas.pxratio = 1;
+      pJS.tmp.retina = false;
+    }
+
+    pJS.canvas.w = pJS.canvas.el.offsetWidth * pJS.canvas.pxratio;
+    pJS.canvas.h = pJS.canvas.el.offsetHeight * pJS.canvas.pxratio;
+
+    pJS.particles.size.value = pJS.tmp.obj.size_value * pJS.canvas.pxratio;
+    pJS.particles.size.anim.speed = pJS.tmp.obj.size_anim_speed * pJS.canvas.pxratio;
+    pJS.particles.move.speed = pJS.tmp.obj.move_speed * pJS.canvas.pxratio;
+    pJS.particles.line_linked.distance = pJS.tmp.obj.line_linked_distance * pJS.canvas.pxratio;
+    pJS.interactivity.modes.grab.distance = pJS.tmp.obj.mode_grab_distance * pJS.canvas.pxratio;
+    pJS.interactivity.modes.bubble.distance = pJS.tmp.obj.mode_bubble_distance * pJS.canvas.pxratio;
+    pJS.particles.line_linked.width = pJS.tmp.obj.line_linked_width * pJS.canvas.pxratio;
+    pJS.interactivity.modes.bubble.size = pJS.tmp.obj.mode_bubble_size * pJS.canvas.pxratio;
+    pJS.interactivity.modes.repulse.distance = pJS.tmp.obj.mode_repulse_distance * pJS.canvas.pxratio;
+
+  };
+
+
+
+  /* ---------- pJS functions - canvas ------------ */
+
+  pJS.fn.canvasInit = function(){
+    pJS.canvas.ctx = pJS.canvas.el.getContext('2d');
+  };
+
+  pJS.fn.canvasSize = function(){
+
+    pJS.canvas.el.width = pJS.canvas.w;
+    pJS.canvas.el.height = pJS.canvas.h;
+
+    if(pJS && pJS.interactivity.events.resize){
+
+      window.addEventListener('resize', function(){
+
+          pJS.canvas.w = pJS.canvas.el.offsetWidth;
+          pJS.canvas.h = pJS.canvas.el.offsetHeight;
+
+          /* resize canvas */
+          if(pJS.tmp.retina){
+            pJS.canvas.w *= pJS.canvas.pxratio;
+            pJS.canvas.h *= pJS.canvas.pxratio;
+          }
+
+          pJS.canvas.el.width = pJS.canvas.w;
+          pJS.canvas.el.height = pJS.canvas.h;
+
+          /* repaint canvas on anim disabled */
+          if(!pJS.particles.move.enable){
+            pJS.fn.particlesEmpty();
+            pJS.fn.particlesCreate();
+            pJS.fn.particlesDraw();
+            pJS.fn.vendors.densityAutoParticles();
+          }
+
+        /* density particles enabled */
+        pJS.fn.vendors.densityAutoParticles();
+
+      });
+
+    }
+
+  };
+
+
+  pJS.fn.canvasPaint = function(){
+    pJS.canvas.ctx.fillRect(0, 0, pJS.canvas.w, pJS.canvas.h);
+  };
+
+  pJS.fn.canvasClear = function(){
+    pJS.canvas.ctx.clearRect(0, 0, pJS.canvas.w, pJS.canvas.h);
+  };
+
+
+  /* --------- pJS functions - particles ----------- */
+
+  pJS.fn.particle = function(color, opacity, position){
+
+    /* size */
+    this.radius = (pJS.particles.size.random ? Math.random() : 1) * pJS.particles.size.value;
+    if(pJS.particles.size.anim.enable){
+      this.size_status = false;
+      this.vs = pJS.particles.size.anim.speed / 100;
+      if(!pJS.particles.size.anim.sync){
+        this.vs = this.vs * Math.random();
+      }
+    }
+
+    /* position */
+    this.x = position ? position.x : Math.random() * pJS.canvas.w;
+    this.y = position ? position.y : Math.random() * pJS.canvas.h;
+
+    /* check position  - into the canvas */
+    if(this.x > pJS.canvas.w - this.radius*2) this.x = this.x - this.radius;
+    else if(this.x < this.radius*2) this.x = this.x + this.radius;
+    if(this.y > pJS.canvas.h - this.radius*2) this.y = this.y - this.radius;
+    else if(this.y < this.radius*2) this.y = this.y + this.radius;
+
+    /* check position - avoid overlap */
+    if(pJS.particles.move.bounce){
+      pJS.fn.vendors.checkOverlap(this, position);
+    }
+
+    /* color */
+    this.color = {};
+    if(typeof(color.value) == 'object'){
+
+      if(color.value instanceof Array){
+        var color_selected = color.value[Math.floor(Math.random() * pJS.particles.color.value.length)];
+        this.color.rgb = hexToRgb(color_selected);
+      }else{
+        if(color.value.r != undefined && color.value.g != undefined && color.value.b != undefined){
+          this.color.rgb = {
+            r: color.value.r,
+            g: color.value.g,
+            b: color.value.b
+          }
+        }
+        if(color.value.h != undefined && color.value.s != undefined && color.value.l != undefined){
+          this.color.hsl = {
+            h: color.value.h,
+            s: color.value.s,
+            l: color.value.l
+          }
+        }
+      }
+
+    }
+    else if(color.value == 'random'){
+      this.color.rgb = {
+        r: (Math.floor(Math.random() * (255 - 0 + 1)) + 0),
+        g: (Math.floor(Math.random() * (255 - 0 + 1)) + 0),
+        b: (Math.floor(Math.random() * (255 - 0 + 1)) + 0)
+      }
+    }
+    else if(typeof(color.value) == 'string'){
+      this.color = color;
+      this.color.rgb = hexToRgb(this.color.value);
+    }
+
+    /* opacity */
+    this.opacity = (pJS.particles.opacity.random ? Math.random() : 1) * pJS.particles.opacity.value;
+    if(pJS.particles.opacity.anim.enable){
+      this.opacity_status = false;
+      this.vo = pJS.particles.opacity.anim.speed / 100;
+      if(!pJS.particles.opacity.anim.sync){
+        this.vo = this.vo * Math.random();
+      }
+    }
+
+    /* animation - velocity for speed */
+    var velbase = {}
+    switch(pJS.particles.move.direction){
+      case 'top':
+        velbase = { x:0, y:-1 };
+      break;
+      case 'top-right':
+        velbase = { x:0.5, y:-0.5 };
+      break;
+      case 'right':
+        velbase = { x:1, y:-0 };
+      break;
+      case 'bottom-right':
+        velbase = { x:0.5, y:0.5 };
+      break;
+      case 'bottom':
+        velbase = { x:0, y:1 };
+      break;
+      case 'bottom-left':
+        velbase = { x:-0.5, y:1 };
+      break;
+      case 'left':
+        velbase = { x:-1, y:0 };
+      break;
+      case 'top-left':
+        velbase = { x:-0.5, y:-0.5 };
+      break;
+      default:
+        velbase = { x:0, y:0 };
+      break;
+    }
+
+    if(pJS.particles.move.straight){
+      this.vx = velbase.x;
+      this.vy = velbase.y;
+      if(pJS.particles.move.random){
+        this.vx = this.vx * (Math.random());
+        this.vy = this.vy * (Math.random());
+      }
+    }else{
+      this.vx = velbase.x + Math.random()-0.5;
+      this.vy = velbase.y + Math.random()-0.5;
+    }
+
+    // var theta = 2.0 * Math.PI * Math.random();
+    // this.vx = Math.cos(theta);
+    // this.vy = Math.sin(theta);
+
+    this.vx_i = this.vx;
+    this.vy_i = this.vy;
+
+    
+
+    /* if shape is image */
+
+    var shape_type = pJS.particles.shape.type;
+    if(typeof(shape_type) == 'object'){
+      if(shape_type instanceof Array){
+        var shape_selected = shape_type[Math.floor(Math.random() * shape_type.length)];
+        this.shape = shape_selected;
+      }
+    }else{
+      this.shape = shape_type;
+    }
+
+    if(this.shape == 'image'){
+      var sh = pJS.particles.shape;
+      this.img = {
+        src: sh.image.src,
+        ratio: sh.image.width / sh.image.height
+      }
+      if(!this.img.ratio) this.img.ratio = 1;
+      if(pJS.tmp.img_type == 'svg' && pJS.tmp.source_svg != undefined){
+        pJS.fn.vendors.createSvgImg(this);
+        if(pJS.tmp.pushing){
+          this.img.loaded = false;
+        }
+      }
+    }
+
+    
+
+  };
+
+
+  pJS.fn.particle.prototype.draw = function() {
+
+    var p = this;
+
+    if(p.radius_bubble != undefined){
+      var radius = p.radius_bubble; 
+    }else{
+      var radius = p.radius;
+    }
+
+    if(p.opacity_bubble != undefined){
+      var opacity = p.opacity_bubble;
+    }else{
+      var opacity = p.opacity;
+    }
+
+    if(p.color.rgb){
+      var color_value = 'rgba('+p.color.rgb.r+','+p.color.rgb.g+','+p.color.rgb.b+','+opacity+')';
+    }else{
+      var color_value = 'hsla('+p.color.hsl.h+','+p.color.hsl.s+'%,'+p.color.hsl.l+'%,'+opacity+')';
+    }
+
+    pJS.canvas.ctx.fillStyle = color_value;
+    pJS.canvas.ctx.beginPath();
+
+    switch(p.shape){
+
+      case 'circle':
+        pJS.canvas.ctx.arc(p.x, p.y, radius, 0, Math.PI * 2, false);
+      break;
+
+      case 'edge':
+        pJS.canvas.ctx.rect(p.x-radius, p.y-radius, radius*2, radius*2);
+      break;
+
+      case 'triangle':
+        pJS.fn.vendors.drawShape(pJS.canvas.ctx, p.x-radius, p.y+radius / 1.66, radius*2, 3, 2);
+      break;
+
+      case 'polygon':
+        pJS.fn.vendors.drawShape(
+          pJS.canvas.ctx,
+          p.x - radius / (pJS.particles.shape.polygon.nb_sides/3.5), // startX
+          p.y - radius / (2.66/3.5), // startY
+          radius*2.66 / (pJS.particles.shape.polygon.nb_sides/3), // sideLength
+          pJS.particles.shape.polygon.nb_sides, // sideCountNumerator
+          1 // sideCountDenominator
+        );
+      break;
+
+      case 'star':
+        pJS.fn.vendors.drawShape(
+          pJS.canvas.ctx,
+          p.x - radius*2 / (pJS.particles.shape.polygon.nb_sides/4), // startX
+          p.y - radius / (2*2.66/3.5), // startY
+          radius*2*2.66 / (pJS.particles.shape.polygon.nb_sides/3), // sideLength
+          pJS.particles.shape.polygon.nb_sides, // sideCountNumerator
+          2 // sideCountDenominator
+        );
+      break;
+
+      case 'image':
+
+        function draw(){
+          pJS.canvas.ctx.drawImage(
+            img_obj,
+            p.x-radius,
+            p.y-radius,
+            radius*2,
+            radius*2 / p.img.ratio
+          );
+        }
+
+        if(pJS.tmp.img_type == 'svg'){
+          var img_obj = p.img.obj;
+        }else{
+          var img_obj = pJS.tmp.img_obj;
+        }
+
+        if(img_obj){
+          draw();
+        }
+
+      break;
+
+    }
+
+    pJS.canvas.ctx.closePath();
+
+    if(pJS.particles.shape.stroke.width > 0){
+      pJS.canvas.ctx.strokeStyle = pJS.particles.shape.stroke.color;
+      pJS.canvas.ctx.lineWidth = pJS.particles.shape.stroke.width;
+      pJS.canvas.ctx.stroke();
+    }
+    
+    pJS.canvas.ctx.fill();
+    
+  };
+
+
+  pJS.fn.particlesCreate = function(){
+    for(var i = 0; i < pJS.particles.number.value; i++) {
+      pJS.particles.array.push(new pJS.fn.particle(pJS.particles.color, pJS.particles.opacity.value));
+    }
+  };
+
+  pJS.fn.particlesUpdate = function(){
+
+    for(var i = 0; i < pJS.particles.array.length; i++){
+
+      /* the particle */
+      var p = pJS.particles.array[i];
+
+      // var d = ( dx = pJS.interactivity.mouse.click_pos_x - p.x ) * dx + ( dy = pJS.interactivity.mouse.click_pos_y - p.y ) * dy;
+      // var f = -BANG_SIZE / d;
+      // if ( d < BANG_SIZE ) {
+      //     var t = Math.atan2( dy, dx );
+      //     p.vx = f * Math.cos(t);
+      //     p.vy = f * Math.sin(t);
+      // }
+
+      /* move the particle */
+      if(pJS.particles.move.enable){
+        var ms = pJS.particles.move.speed/2;
+        p.x += p.vx * ms;
+        p.y += p.vy * ms;
+      }
+
+      /* change opacity status */
+      if(pJS.particles.opacity.anim.enable) {
+        if(p.opacity_status == true) {
+          if(p.opacity >= pJS.particles.opacity.value) p.opacity_status = false;
+          p.opacity += p.vo;
+        }else {
+          if(p.opacity <= pJS.particles.opacity.anim.opacity_min) p.opacity_status = true;
+          p.opacity -= p.vo;
+        }
+        if(p.opacity < 0) p.opacity = 0;
+      }
+
+      /* change size */
+      if(pJS.particles.size.anim.enable){
+        if(p.size_status == true){
+          if(p.radius >= pJS.particles.size.value) p.size_status = false;
+          p.radius += p.vs;
+        }else{
+          if(p.radius <= pJS.particles.size.anim.size_min) p.size_status = true;
+          p.radius -= p.vs;
+        }
+        if(p.radius < 0) p.radius = 0;
+      }
+
+      /* change particle position if it is out of canvas */
+      if(pJS.particles.move.out_mode == 'bounce'){
+        var new_pos = {
+          x_left: p.radius,
+          x_right:  pJS.canvas.w,
+          y_top: p.radius,
+          y_bottom: pJS.canvas.h
+        }
+      }else{
+        var new_pos = {
+          x_left: -p.radius,
+          x_right: pJS.canvas.w + p.radius,
+          y_top: -p.radius,
+          y_bottom: pJS.canvas.h + p.radius
+        }
+      }
+
+      if(p.x - p.radius > pJS.canvas.w){
+        p.x = new_pos.x_left;
+        p.y = Math.random() * pJS.canvas.h;
+      }
+      else if(p.x + p.radius < 0){
+        p.x = new_pos.x_right;
+        p.y = Math.random() * pJS.canvas.h;
+      }
+      if(p.y - p.radius > pJS.canvas.h){
+        p.y = new_pos.y_top;
+        p.x = Math.random() * pJS.canvas.w;
+      }
+      else if(p.y + p.radius < 0){
+        p.y = new_pos.y_bottom;
+        p.x = Math.random() * pJS.canvas.w;
+      }
+
+      /* out of canvas modes */
+      switch(pJS.particles.move.out_mode){
+        case 'bounce':
+          if (p.x + p.radius > pJS.canvas.w) p.vx = -p.vx;
+          else if (p.x - p.radius < 0) p.vx = -p.vx;
+          if (p.y + p.radius > pJS.canvas.h) p.vy = -p.vy;
+          else if (p.y - p.radius < 0) p.vy = -p.vy;
+        break;
+      }
+
+      /* events */
+      if(isInArray('grab', pJS.interactivity.events.onhover.mode)){
+        pJS.fn.modes.grabParticle(p);
+      }
+
+      if(isInArray('bubble', pJS.interactivity.events.onhover.mode) || isInArray('bubble', pJS.interactivity.events.onclick.mode)){
+        pJS.fn.modes.bubbleParticle(p);
+      }
+
+      if(isInArray('repulse', pJS.interactivity.events.onhover.mode) || isInArray('repulse', pJS.interactivity.events.onclick.mode)){
+        pJS.fn.modes.repulseParticle(p);
+      }
+
+      /* interaction auto between particles */
+      if(pJS.particles.line_linked.enable || pJS.particles.move.attract.enable){
+        for(var j = i + 1; j < pJS.particles.array.length; j++){
+          var p2 = pJS.particles.array[j];
+
+          /* link particles */
+          if(pJS.particles.line_linked.enable){
+            pJS.fn.interact.linkParticles(p,p2);
+          }
+
+          /* attract particles */
+          if(pJS.particles.move.attract.enable){
+            pJS.fn.interact.attractParticles(p,p2);
+          }
+
+          /* bounce particles */
+          if(pJS.particles.move.bounce){
+            pJS.fn.interact.bounceParticles(p,p2);
+          }
+
+        }
+      }
+
+
+    }
+
+  };
+
+  pJS.fn.particlesDraw = function(){
+
+    /* clear canvas */
+    pJS.canvas.ctx.clearRect(0, 0, pJS.canvas.w, pJS.canvas.h);
+
+    /* update each particles param */
+    pJS.fn.particlesUpdate();
+
+    /* draw each particle */
+    for(var i = 0; i < pJS.particles.array.length; i++){
+      var p = pJS.particles.array[i];
+      p.draw();
+    }
+
+  };
+
+  pJS.fn.particlesEmpty = function(){
+    pJS.particles.array = [];
+  };
+
+  pJS.fn.particlesRefresh = function(){
+
+    /* init all */
+    cancelRequestAnimFrame(pJS.fn.checkAnimFrame);
+    cancelRequestAnimFrame(pJS.fn.drawAnimFrame);
+    pJS.tmp.source_svg = undefined;
+    pJS.tmp.img_obj = undefined;
+    pJS.tmp.count_svg = 0;
+    pJS.fn.particlesEmpty();
+    pJS.fn.canvasClear();
+    
+    /* restart */
+    pJS.fn.vendors.start();
+
+  };
+
+
+  /* ---------- pJS functions - particles interaction ------------ */
+
+  pJS.fn.interact.linkParticles = function(p1, p2){
+
+    var dx = p1.x - p2.x,
+        dy = p1.y - p2.y,
+        dist = Math.sqrt(dx*dx + dy*dy);
+
+    /* draw a line between p1 and p2 if the distance between them is under the config distance */
+    if(dist <= pJS.particles.line_linked.distance){
+
+      var opacity_line = pJS.particles.line_linked.opacity - (dist / (1/pJS.particles.line_linked.opacity)) / pJS.particles.line_linked.distance;
+
+      if(opacity_line > 0){        
+        
+        /* style */
+        var color_line = pJS.particles.line_linked.color_rgb_line;
+        pJS.canvas.ctx.strokeStyle = 'rgba('+color_line.r+','+color_line.g+','+color_line.b+','+opacity_line+')';
+        pJS.canvas.ctx.lineWidth = pJS.particles.line_linked.width;
+        //pJS.canvas.ctx.lineCap = 'round'; /* performance issue */
+        
+        /* path */
+        pJS.canvas.ctx.beginPath();
+        pJS.canvas.ctx.moveTo(p1.x, p1.y);
+        pJS.canvas.ctx.lineTo(p2.x, p2.y);
+        pJS.canvas.ctx.stroke();
+        pJS.canvas.ctx.closePath();
+
+      }
+
+    }
+
+  };
+
+
+  pJS.fn.interact.attractParticles  = function(p1, p2){
+
+    /* condensed particles */
+    var dx = p1.x - p2.x,
+        dy = p1.y - p2.y,
+        dist = Math.sqrt(dx*dx + dy*dy);
+
+    if(dist <= pJS.particles.line_linked.distance){
+
+      var ax = dx/(pJS.particles.move.attract.rotateX*1000),
+          ay = dy/(pJS.particles.move.attract.rotateY*1000);
+
+      p1.vx -= ax;
+      p1.vy -= ay;
+
+      p2.vx += ax;
+      p2.vy += ay;
+
+    }
+    
+
+  }
+
+
+  pJS.fn.interact.bounceParticles = function(p1, p2){
+
+    var dx = p1.x - p2.x,
+        dy = p1.y - p2.y,
+        dist = Math.sqrt(dx*dx + dy*dy),
+        dist_p = p1.radius+p2.radius;
+
+    if(dist <= dist_p){
+      p1.vx = -p1.vx;
+      p1.vy = -p1.vy;
+
+      p2.vx = -p2.vx;
+      p2.vy = -p2.vy;
+    }
+
+  }
+
+
+  /* ---------- pJS functions - modes events ------------ */
+
+  pJS.fn.modes.pushParticles = function(nb, pos){
+
+    pJS.tmp.pushing = true;
+
+    for(var i = 0; i < nb; i++){
+      pJS.particles.array.push(
+        new pJS.fn.particle(
+          pJS.particles.color,
+          pJS.particles.opacity.value,
+          {
+            'x': pos ? pos.pos_x : Math.random() * pJS.canvas.w,
+            'y': pos ? pos.pos_y : Math.random() * pJS.canvas.h
+          }
+        )
+      )
+      if(i == nb-1){
+        if(!pJS.particles.move.enable){
+          pJS.fn.particlesDraw();
+        }
+        pJS.tmp.pushing = false;
+      }
+    }
+
+  };
+
+
+  pJS.fn.modes.removeParticles = function(nb){
+
+    pJS.particles.array.splice(0, nb);
+    if(!pJS.particles.move.enable){
+      pJS.fn.particlesDraw();
+    }
+
+  };
+
+
+  pJS.fn.modes.bubbleParticle = function(p){
+
+    /* on hover event */
+    if(pJS.interactivity.events.onhover.enable && isInArray('bubble', pJS.interactivity.events.onhover.mode)){
+
+      var dx_mouse = p.x - pJS.interactivity.mouse.pos_x,
+          dy_mouse = p.y - pJS.interactivity.mouse.pos_y,
+          dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse),
+          ratio = 1 - dist_mouse / pJS.interactivity.modes.bubble.distance;
+
+      function init(){
+        p.opacity_bubble = p.opacity;
+        p.radius_bubble = p.radius;
+      }
+
+      /* mousemove - check ratio */
+      if(dist_mouse <= pJS.interactivity.modes.bubble.distance){
+
+        if(ratio >= 0 && pJS.interactivity.status == 'mousemove'){
+          
+          /* size */
+          if(pJS.interactivity.modes.bubble.size != pJS.particles.size.value){
+
+            if(pJS.interactivity.modes.bubble.size > pJS.particles.size.value){
+              var size = p.radius + (pJS.interactivity.modes.bubble.size*ratio);
+              if(size >= 0){
+                p.radius_bubble = size;
+              }
+            }else{
+              var dif = p.radius - pJS.interactivity.modes.bubble.size,
+                  size = p.radius - (dif*ratio);
+              if(size > 0){
+                p.radius_bubble = size;
+              }else{
+                p.radius_bubble = 0;
+              }
+            }
+
+          }
+
+          /* opacity */
+          if(pJS.interactivity.modes.bubble.opacity != pJS.particles.opacity.value){
+
+            if(pJS.interactivity.modes.bubble.opacity > pJS.particles.opacity.value){
+              var opacity = pJS.interactivity.modes.bubble.opacity*ratio;
+              if(opacity > p.opacity && opacity <= pJS.interactivity.modes.bubble.opacity){
+                p.opacity_bubble = opacity;
+              }
+            }else{
+              var opacity = p.opacity - (pJS.particles.opacity.value-pJS.interactivity.modes.bubble.opacity)*ratio;
+              if(opacity < p.opacity && opacity >= pJS.interactivity.modes.bubble.opacity){
+                p.opacity_bubble = opacity;
+              }
+            }
+
+          }
+
+        }
+
+      }else{
+        init();
+      }
+
+
+      /* mouseleave */
+      if(pJS.interactivity.status == 'mouseleave'){
+        init();
+      }
+    
+    }
+
+    /* on click event */
+    else if(pJS.interactivity.events.onclick.enable && isInArray('bubble', pJS.interactivity.events.onclick.mode)){
+
+
+      if(pJS.tmp.bubble_clicking){
+        var dx_mouse = p.x - pJS.interactivity.mouse.click_pos_x,
+            dy_mouse = p.y - pJS.interactivity.mouse.click_pos_y,
+            dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse),
+            time_spent = (new Date().getTime() - pJS.interactivity.mouse.click_time)/1000;
+
+        if(time_spent > pJS.interactivity.modes.bubble.duration){
+          pJS.tmp.bubble_duration_end = true;
+        }
+
+        if(time_spent > pJS.interactivity.modes.bubble.duration*2){
+          pJS.tmp.bubble_clicking = false;
+          pJS.tmp.bubble_duration_end = false;
+        }
+      }
+
+
+      function process(bubble_param, particles_param, p_obj_bubble, p_obj, id){
+
+        if(bubble_param != particles_param){
+
+          if(!pJS.tmp.bubble_duration_end){
+            if(dist_mouse <= pJS.interactivity.modes.bubble.distance){
+              if(p_obj_bubble != undefined) var obj = p_obj_bubble;
+              else var obj = p_obj;
+              if(obj != bubble_param){
+                var value = p_obj - (time_spent * (p_obj - bubble_param) / pJS.interactivity.modes.bubble.duration);
+                if(id == 'size') p.radius_bubble = value;
+                if(id == 'opacity') p.opacity_bubble = value;
+              }
+            }else{
+              if(id == 'size') p.radius_bubble = undefined;
+              if(id == 'opacity') p.opacity_bubble = undefined;
+            }
+          }else{
+            if(p_obj_bubble != undefined){
+              var value_tmp = p_obj - (time_spent * (p_obj - bubble_param) / pJS.interactivity.modes.bubble.duration),
+                  dif = bubble_param - value_tmp;
+                  value = bubble_param + dif;
+              if(id == 'size') p.radius_bubble = value;
+              if(id == 'opacity') p.opacity_bubble = value;
+            }
+          }
+
+        }
+
+      }
+
+      if(pJS.tmp.bubble_clicking){
+        /* size */
+        process(pJS.interactivity.modes.bubble.size, pJS.particles.size.value, p.radius_bubble, p.radius, 'size');
+        /* opacity */
+        process(pJS.interactivity.modes.bubble.opacity, pJS.particles.opacity.value, p.opacity_bubble, p.opacity, 'opacity');
+      }
+
+    }
+
+  };
+
+
+  pJS.fn.modes.repulseParticle = function(p){
+
+    if(pJS.interactivity.events.onhover.enable && isInArray('repulse', pJS.interactivity.events.onhover.mode) && pJS.interactivity.status == 'mousemove') {
+
+      var dx_mouse = p.x - pJS.interactivity.mouse.pos_x,
+          dy_mouse = p.y - pJS.interactivity.mouse.pos_y,
+          dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse);
+
+      var normVec = {x: dx_mouse/dist_mouse, y: dy_mouse/dist_mouse},
+          repulseRadius = pJS.interactivity.modes.repulse.distance,
+          velocity = 100,
+          repulseFactor = clamp((1/repulseRadius)*(-1*Math.pow(dist_mouse/repulseRadius,2)+1)*repulseRadius*velocity, 0, 50);
+      
+      var pos = {
+        x: p.x + normVec.x * repulseFactor,
+        y: p.y + normVec.y * repulseFactor
+      }
+
+      if(pJS.particles.move.out_mode == 'bounce'){
+        if(pos.x - p.radius > 0 && pos.x + p.radius < pJS.canvas.w) p.x = pos.x;
+        if(pos.y - p.radius > 0 && pos.y + p.radius < pJS.canvas.h) p.y = pos.y;
+      }else{
+        p.x = pos.x;
+        p.y = pos.y;
+      }
+    
+    }
+
+
+    else if(pJS.interactivity.events.onclick.enable && isInArray('repulse', pJS.interactivity.events.onclick.mode)) {
+
+      if(!pJS.tmp.repulse_finish){
+        pJS.tmp.repulse_count++;
+        if(pJS.tmp.repulse_count == pJS.particles.array.length){
+          pJS.tmp.repulse_finish = true;
+        }
+      }
+
+      if(pJS.tmp.repulse_clicking){
+
+        var repulseRadius = Math.pow(pJS.interactivity.modes.repulse.distance/6, 3);
+
+        var dx = pJS.interactivity.mouse.click_pos_x - p.x,
+            dy = pJS.interactivity.mouse.click_pos_y - p.y,
+            d = dx*dx + dy*dy;
+
+        var force = -repulseRadius / d * 1;
+
+        function process(){
+
+          var f = Math.atan2(dy,dx);
+          p.vx = force * Math.cos(f);
+          p.vy = force * Math.sin(f);
+
+          if(pJS.particles.move.out_mode == 'bounce'){
+            var pos = {
+              x: p.x + p.vx,
+              y: p.y + p.vy
+            }
+            if (pos.x + p.radius > pJS.canvas.w) p.vx = -p.vx;
+            else if (pos.x - p.radius < 0) p.vx = -p.vx;
+            if (pos.y + p.radius > pJS.canvas.h) p.vy = -p.vy;
+            else if (pos.y - p.radius < 0) p.vy = -p.vy;
+          }
+
+        }
+
+        // default
+        if(d <= repulseRadius){
+          process();
+        }
+
+        // bang - slow motion mode
+        // if(!pJS.tmp.repulse_finish){
+        //   if(d <= repulseRadius){
+        //     process();
+        //   }
+        // }else{
+        //   process();
+        // }
+        
+
+      }else{
+
+        if(pJS.tmp.repulse_clicking == false){
+
+          p.vx = p.vx_i;
+          p.vy = p.vy_i;
+        
+        }
+
+      }
+
+    }
+
+  }
+
+
+  pJS.fn.modes.grabParticle = function(p){
+
+    if(pJS.interactivity.events.onhover.enable && pJS.interactivity.status == 'mousemove'){
+
+      var dx_mouse = p.x - pJS.interactivity.mouse.pos_x,
+          dy_mouse = p.y - pJS.interactivity.mouse.pos_y,
+          dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse);
+
+      /* draw a line between the cursor and the particle if the distance between them is under the config distance */
+      if(dist_mouse <= pJS.interactivity.modes.grab.distance){
+
+        var opacity_line = pJS.interactivity.modes.grab.line_linked.opacity - (dist_mouse / (1/pJS.interactivity.modes.grab.line_linked.opacity)) / pJS.interactivity.modes.grab.distance;
+
+        if(opacity_line > 0){
+
+          /* style */
+          var color_line = pJS.particles.line_linked.color_rgb_line;
+          pJS.canvas.ctx.strokeStyle = 'rgba('+color_line.r+','+color_line.g+','+color_line.b+','+opacity_line+')';
+          pJS.canvas.ctx.lineWidth = pJS.particles.line_linked.width;
+          //pJS.canvas.ctx.lineCap = 'round'; /* performance issue */
+          
+          /* path */
+          pJS.canvas.ctx.beginPath();
+          pJS.canvas.ctx.moveTo(p.x, p.y);
+          pJS.canvas.ctx.lineTo(pJS.interactivity.mouse.pos_x, pJS.interactivity.mouse.pos_y);
+          pJS.canvas.ctx.stroke();
+          pJS.canvas.ctx.closePath();
+
+        }
+
+      }
+
+    }
+
+  };
+
+
+
+  /* ---------- pJS functions - vendors ------------ */
+
+  pJS.fn.vendors.eventsListeners = function(){
+
+    /* events target element */
+    if(pJS.interactivity.detect_on == 'window'){
+      pJS.interactivity.el = window;
+    }else{
+      pJS.interactivity.el = pJS.canvas.el;
+    }
+
+
+    /* detect mouse pos - on hover / click event */
+    if(pJS.interactivity.events.onhover.enable || pJS.interactivity.events.onclick.enable){
+
+      /* el on mousemove */
+      pJS.interactivity.el.addEventListener('mousemove', function(e){
+
+        if(pJS.interactivity.el == window){
+          var pos_x = e.clientX,
+              pos_y = e.clientY;
+        }
+        else{
+          var pos_x = e.offsetX || e.clientX,
+              pos_y = e.offsetY || e.clientY;
+        }
+
+        pJS.interactivity.mouse.pos_x = pos_x;
+        pJS.interactivity.mouse.pos_y = pos_y;
+
+        if(pJS.tmp.retina){
+          pJS.interactivity.mouse.pos_x *= pJS.canvas.pxratio;
+          pJS.interactivity.mouse.pos_y *= pJS.canvas.pxratio;
+        }
+
+        pJS.interactivity.status = 'mousemove';
+
+      });
+
+      /* el on onmouseleave */
+      pJS.interactivity.el.addEventListener('mouseleave', function(e){
+
+        pJS.interactivity.mouse.pos_x = null;
+        pJS.interactivity.mouse.pos_y = null;
+        pJS.interactivity.status = 'mouseleave';
+
+      });
+
+    }
+
+    /* on click event */
+    if(pJS.interactivity.events.onclick.enable){
+
+      pJS.interactivity.el.addEventListener('click', function(){
+
+        pJS.interactivity.mouse.click_pos_x = pJS.interactivity.mouse.pos_x;
+        pJS.interactivity.mouse.click_pos_y = pJS.interactivity.mouse.pos_y;
+        pJS.interactivity.mouse.click_time = new Date().getTime();
+
+        if(pJS.interactivity.events.onclick.enable){
+
+          switch(pJS.interactivity.events.onclick.mode){
+
+            case 'push':
+              if(pJS.particles.move.enable){
+                pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb, pJS.interactivity.mouse);
+              }else{
+                if(pJS.interactivity.modes.push.particles_nb == 1){
+                  pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb, pJS.interactivity.mouse);
+                }
+                else if(pJS.interactivity.modes.push.particles_nb > 1){
+                  pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb);
+                }
+              }
+            break;
+
+            case 'remove':
+              pJS.fn.modes.removeParticles(pJS.interactivity.modes.remove.particles_nb);
+            break;
+
+            case 'bubble':
+              pJS.tmp.bubble_clicking = true;
+            break;
+
+            case 'repulse':
+              pJS.tmp.repulse_clicking = true;
+              pJS.tmp.repulse_count = 0;
+              pJS.tmp.repulse_finish = false;
+              setTimeout(function(){
+                pJS.tmp.repulse_clicking = false;
+              }, pJS.interactivity.modes.repulse.duration*1000)
+            break;
+
+          }
+
+        }
+
+      });
+        
+    }
+
+
+  };
+
+  pJS.fn.vendors.densityAutoParticles = function(){
+
+    if(pJS.particles.number.density.enable){
+
+      /* calc area */
+      var area = pJS.canvas.el.width * pJS.canvas.el.height / 1000;
+      if(pJS.tmp.retina){
+        area = area/(pJS.canvas.pxratio*2);
+      }
+
+      /* calc number of particles based on density area */
+      var nb_particles = area * pJS.particles.number.value / pJS.particles.number.density.value_area;
+
+      /* add or remove X particles */
+      var missing_particles = pJS.particles.array.length - nb_particles;
+      if(missing_particles < 0) pJS.fn.modes.pushParticles(Math.abs(missing_particles));
+      else pJS.fn.modes.removeParticles(missing_particles);
+
+    }
+
+  };
+
+
+  pJS.fn.vendors.checkOverlap = function(p1, position){
+    for(var i = 0; i < pJS.particles.array.length; i++){
+      var p2 = pJS.particles.array[i];
+
+      var dx = p1.x - p2.x,
+          dy = p1.y - p2.y,
+          dist = Math.sqrt(dx*dx + dy*dy);
+
+      if(dist <= p1.radius + p2.radius){
+        p1.x = position ? position.x : Math.random() * pJS.canvas.w;
+        p1.y = position ? position.y : Math.random() * pJS.canvas.h;
+        pJS.fn.vendors.checkOverlap(p1);
+      }
+    }
+  };
+
+
+  pJS.fn.vendors.createSvgImg = function(p){
+
+    /* set color to svg element */
+    var svgXml = pJS.tmp.source_svg,
+        rgbHex = /#([0-9A-F]{3,6})/gi,
+        coloredSvgXml = svgXml.replace(rgbHex, function (m, r, g, b) {
+          if(p.color.rgb){
+            var color_value = 'rgba('+p.color.rgb.r+','+p.color.rgb.g+','+p.color.rgb.b+','+p.opacity+')';
+          }else{
+            var color_value = 'hsla('+p.color.hsl.h+','+p.color.hsl.s+'%,'+p.color.hsl.l+'%,'+p.opacity+')';
+          }
+          return color_value;
+        });
+
+    /* prepare to create img with colored svg */
+    var svg = new Blob([coloredSvgXml], {type: 'image/svg+xml;charset=utf-8'}),
+        DOMURL = window.URL || window.webkitURL || window,
+        url = DOMURL.createObjectURL(svg);
+
+    /* create particle img obj */
+    var img = new Image();
+    img.addEventListener('load', function(){
+      p.img.obj = img;
+      p.img.loaded = true;
+      DOMURL.revokeObjectURL(url);
+      pJS.tmp.count_svg++;
+    });
+    img.src = url;
+
+  };
+
+
+  pJS.fn.vendors.destroypJS = function(){
+    cancelAnimationFrame(pJS.fn.drawAnimFrame);
+    canvas_el.remove();
+    pJSDom = null;
+  };
+
+
+  pJS.fn.vendors.drawShape = function(c, startX, startY, sideLength, sideCountNumerator, sideCountDenominator){
+
+    // By Programming Thomas - https://programmingthomas.wordpress.com/2013/04/03/n-sided-shapes/
+    var sideCount = sideCountNumerator * sideCountDenominator;
+    var decimalSides = sideCountNumerator / sideCountDenominator;
+    var interiorAngleDegrees = (180 * (decimalSides - 2)) / decimalSides;
+    var interiorAngle = Math.PI - Math.PI * interiorAngleDegrees / 180; // convert to radians
+    c.save();
+    c.beginPath();
+    c.translate(startX, startY);
+    c.moveTo(0,0);
+    for (var i = 0; i < sideCount; i++) {
+      c.lineTo(sideLength,0);
+      c.translate(sideLength,0);
+      c.rotate(interiorAngle);
+    }
+    //c.stroke();
+    c.fill();
+    c.restore();
+
+  };
+
+  pJS.fn.vendors.exportImg = function(){
+    window.open(pJS.canvas.el.toDataURL('image/png'), '_blank');
+  };
+
+
+  pJS.fn.vendors.loadImg = function(type){
+
+    pJS.tmp.img_error = undefined;
+
+    if(pJS.particles.shape.image.src != ''){
+
+      if(type == 'svg'){
+
+        var xhr = new XMLHttpRequest();
+        xhr.open('GET', pJS.particles.shape.image.src);
+        xhr.onreadystatechange = function (data) {
+          if(xhr.readyState == 4){
+            if(xhr.status == 200){
+              pJS.tmp.source_svg = data.currentTarget.response;
+              pJS.fn.vendors.checkBeforeDraw();
+            }else{
+              console.log('Error pJS - Image not found');
+              pJS.tmp.img_error = true;
+            }
+          }
+        }
+        xhr.send();
+
+      }else{
+
+        var img = new Image();
+        img.addEventListener('load', function(){
+          pJS.tmp.img_obj = img;
+          pJS.fn.vendors.checkBeforeDraw();
+        });
+        img.src = pJS.particles.shape.image.src;
+
+      }
+
+    }else{
+      console.log('Error pJS - No image.src');
+      pJS.tmp.img_error = true;
+    }
+
+  };
+
+
+  pJS.fn.vendors.draw = function(){
+
+    if(pJS.particles.shape.type == 'image'){
+
+      if(pJS.tmp.img_type == 'svg'){
+
+        if(pJS.tmp.count_svg >= pJS.particles.number.value){
+          pJS.fn.particlesDraw();
+          if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame);
+          else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw);
+        }else{
+          //console.log('still loading...');
+          if(!pJS.tmp.img_error) pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw);
+        }
+
+      }else{
+
+        if(pJS.tmp.img_obj != undefined){
+          pJS.fn.particlesDraw();
+          if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame);
+          else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw);
+        }else{
+          if(!pJS.tmp.img_error) pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw);
+        }
+
+      }
+
+    }else{
+      pJS.fn.particlesDraw();
+      if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame);
+      else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw);
+    }
+
+  };
+
+
+  pJS.fn.vendors.checkBeforeDraw = function(){
+
+    // if shape is image
+    if(pJS.particles.shape.type == 'image'){
+
+      if(pJS.tmp.img_type == 'svg' && pJS.tmp.source_svg == undefined){
+        pJS.tmp.checkAnimFrame = requestAnimFrame(check);
+      }else{
+        //console.log('images loaded! cancel check');
+        cancelRequestAnimFrame(pJS.tmp.checkAnimFrame);
+        if(!pJS.tmp.img_error){
+          pJS.fn.vendors.init();
+          pJS.fn.vendors.draw();
+        }
+        
+      }
+
+    }else{
+      pJS.fn.vendors.init();
+      pJS.fn.vendors.draw();
+    }
+
+  };
+
+
+  pJS.fn.vendors.init = function(){
+
+    /* init canvas + particles */
+    pJS.fn.retinaInit();
+    pJS.fn.canvasInit();
+    pJS.fn.canvasSize();
+    pJS.fn.canvasPaint();
+    pJS.fn.particlesCreate();
+    pJS.fn.vendors.densityAutoParticles();
+
+    /* particles.line_linked - convert hex colors to rgb */
+    pJS.particles.line_linked.color_rgb_line = hexToRgb(pJS.particles.line_linked.color);
+
+  };
+
+
+  pJS.fn.vendors.start = function(){
+
+    if(isInArray('image', pJS.particles.shape.type)){
+      pJS.tmp.img_type = pJS.particles.shape.image.src.substr(pJS.particles.shape.image.src.length - 3);
+      pJS.fn.vendors.loadImg(pJS.tmp.img_type);
+    }else{
+      pJS.fn.vendors.checkBeforeDraw();
+    }
+
+  };
+
+
+
+
+  /* ---------- pJS - start ------------ */
+
+
+  pJS.fn.vendors.eventsListeners();
+
+  pJS.fn.vendors.start();
+  
+
+
+};
+
+/* ---------- global functions - vendors ------------ */
+
+Object.deepExtend = function(destination, source) {
+  for (var property in source) {
+    if (source[property] && source[property].constructor &&
+     source[property].constructor === Object) {
+      destination[property] = destination[property] || {};
+      arguments.callee(destination[property], source[property]);
+    } else {
+      destination[property] = source[property];
+    }
+  }
+  return destination;
+};
+
+window.requestAnimFrame = (function(){
+  return  window.requestAnimationFrame ||
+    window.webkitRequestAnimationFrame ||
+    window.mozRequestAnimationFrame    ||
+    window.oRequestAnimationFrame      ||
+    window.msRequestAnimationFrame     ||
+    function(callback){
+      window.setTimeout(callback, 1000 / 60);
+    };
+})();
+
+window.cancelRequestAnimFrame = ( function() {
+  return window.cancelAnimationFrame         ||
+    window.webkitCancelRequestAnimationFrame ||
+    window.mozCancelRequestAnimationFrame    ||
+    window.oCancelRequestAnimationFrame      ||
+    window.msCancelRequestAnimationFrame     ||
+    clearTimeout
+} )();
+
+function hexToRgb(hex){
+  // By Tim Down - http://stackoverflow.com/a/5624139/3493650
+  // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
+  var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
+  hex = hex.replace(shorthandRegex, function(m, r, g, b) {
+     return r + r + g + g + b + b;
+  });
+  var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
+  return result ? {
+      r: parseInt(result[1], 16),
+      g: parseInt(result[2], 16),
+      b: parseInt(result[3], 16)
+  } : null;
+};
+
+function clamp(number, min, max) {
+  return Math.min(Math.max(number, min), max);
+};
+
+function isInArray(value, array) {
+  return array.indexOf(value) > -1;
+}
+
+
+/* ---------- particles.js functions - start ------------ */
+
+window.pJSDom = [];
+
+window.particlesJS = function(tag_id, params){
+
+  //console.log(params);
+
+  /* no string id? so it's object params, and set the id with default id */
+  if(typeof(tag_id) != 'string'){
+    params = tag_id;
+    tag_id = 'particles-js';
+  }
+
+  /* no id? set the id to default id */
+  if(!tag_id){
+    tag_id = 'particles-js';
+  }
+
+  /* pJS elements */
+  var pJS_tag = document.getElementById(tag_id),
+      pJS_canvas_class = 'particles-js-canvas-el',
+      exist_canvas = pJS_tag.getElementsByClassName(pJS_canvas_class);
+
+  /* remove canvas if exists into the pJS target tag */
+  if(exist_canvas.length){
+    while(exist_canvas.length > 0){
+      pJS_tag.removeChild(exist_canvas[0]);
+    }
+  }
+
+  /* create canvas element */
+  var canvas_el = document.createElement('canvas');
+  canvas_el.className = pJS_canvas_class;
+
+  /* set size canvas */
+  canvas_el.style.width = "100%";
+  canvas_el.style.height = "100%";
+
+  /* append canvas */
+  var canvas = document.getElementById(tag_id).appendChild(canvas_el);
+
+  /* launch particle.js */
+  if(canvas != null){
+    pJSDom.push(new pJS(tag_id, params));
+  }
+
+};
+
+window.particlesJS.load = function(tag_id, path_config_json, callback){
+
+  /* load json config */
+  var xhr = new XMLHttpRequest();
+  xhr.open('GET', path_config_json);
+  xhr.onreadystatechange = function (data) {
+    if(xhr.readyState == 4){
+      if(xhr.status == 200){
+        var params = JSON.parse(data.currentTarget.response);
+        window.particlesJS(tag_id, params);
+        if(callback) callback();
+      }else{
+        console.log('Error pJS - XMLHttpRequest status: '+xhr.status);
+        console.log('Error pJS - File config not found');
+      }
+    }
+  };
+  xhr.send();
+
+};
\ No newline at end of file
diff --git a/js/particles.min.js b/js/particles.min.js
new file mode 100644
index 0000000..b3d46d1
--- /dev/null
+++ b/js/particles.min.js
@@ -0,0 +1,9 @@
+/* -----------------------------------------------
+/* Author : Vincent Garreau  - vincentgarreau.com
+/* MIT license: http://opensource.org/licenses/MIT
+/* Demo / Generator : vincentgarreau.com/particles.js
+/* GitHub : github.com/VincentGarreau/particles.js
+/* How to use? : Check the GitHub README
+/* v2.0.0
+/* ----------------------------------------------- */
+function hexToRgb(e){var a=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;e=e.replace(a,function(e,a,t,i){return a+a+t+t+i+i});var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}function clamp(e,a,t){return Math.min(Math.max(e,a),t)}function isInArray(e,a){return a.indexOf(e)>-1}var pJS=function(e,a){var t=document.querySelector("#"+e+" > .particles-js-canvas-el");this.pJS={canvas:{el:t,w:t.offsetWidth,h:t.offsetHeight},particles:{number:{value:400,density:{enable:!0,value_area:800}},color:{value:"#fff"},shape:{type:"circle",stroke:{width:0,color:"#ff0000"},polygon:{nb_sides:5},image:{src:"",width:100,height:100}},opacity:{value:1,random:!1,anim:{enable:!1,speed:2,opacity_min:0,sync:!1}},size:{value:20,random:!1,anim:{enable:!1,speed:20,size_min:0,sync:!1}},line_linked:{enable:!0,distance:100,color:"#fff",opacity:1,width:1},move:{enable:!0,speed:2,direction:"none",random:!1,straight:!1,out_mode:"out",bounce:!1,attract:{enable:!1,rotateX:3e3,rotateY:3e3}},array:[]},interactivity:{detect_on:"canvas",events:{onhover:{enable:!0,mode:"grab"},onclick:{enable:!0,mode:"push"},resize:!0},modes:{grab:{distance:100,line_linked:{opacity:1}},bubble:{distance:200,size:80,duration:.4},repulse:{distance:200,duration:.4},push:{particles_nb:4},remove:{particles_nb:2}},mouse:{}},retina_detect:!1,fn:{interact:{},modes:{},vendors:{}},tmp:{}};var i=this.pJS;a&&Object.deepExtend(i,a),i.tmp.obj={size_value:i.particles.size.value,size_anim_speed:i.particles.size.anim.speed,move_speed:i.particles.move.speed,line_linked_distance:i.particles.line_linked.distance,line_linked_width:i.particles.line_linked.width,mode_grab_distance:i.interactivity.modes.grab.distance,mode_bubble_distance:i.interactivity.modes.bubble.distance,mode_bubble_size:i.interactivity.modes.bubble.size,mode_repulse_distance:i.interactivity.modes.repulse.distance},i.fn.retinaInit=function(){i.retina_detect&&window.devicePixelRatio>1?(i.canvas.pxratio=window.devicePixelRatio,i.tmp.retina=!0):(i.canvas.pxratio=1,i.tmp.retina=!1),i.canvas.w=i.canvas.el.offsetWidth*i.canvas.pxratio,i.canvas.h=i.canvas.el.offsetHeight*i.canvas.pxratio,i.particles.size.value=i.tmp.obj.size_value*i.canvas.pxratio,i.particles.size.anim.speed=i.tmp.obj.size_anim_speed*i.canvas.pxratio,i.particles.move.speed=i.tmp.obj.move_speed*i.canvas.pxratio,i.particles.line_linked.distance=i.tmp.obj.line_linked_distance*i.canvas.pxratio,i.interactivity.modes.grab.distance=i.tmp.obj.mode_grab_distance*i.canvas.pxratio,i.interactivity.modes.bubble.distance=i.tmp.obj.mode_bubble_distance*i.canvas.pxratio,i.particles.line_linked.width=i.tmp.obj.line_linked_width*i.canvas.pxratio,i.interactivity.modes.bubble.size=i.tmp.obj.mode_bubble_size*i.canvas.pxratio,i.interactivity.modes.repulse.distance=i.tmp.obj.mode_repulse_distance*i.canvas.pxratio},i.fn.canvasInit=function(){i.canvas.ctx=i.canvas.el.getContext("2d")},i.fn.canvasSize=function(){i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i&&i.interactivity.events.resize&&window.addEventListener("resize",function(){i.canvas.w=i.canvas.el.offsetWidth,i.canvas.h=i.canvas.el.offsetHeight,i.tmp.retina&&(i.canvas.w*=i.canvas.pxratio,i.canvas.h*=i.canvas.pxratio),i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i.particles.move.enable||(i.fn.particlesEmpty(),i.fn.particlesCreate(),i.fn.particlesDraw(),i.fn.vendors.densityAutoParticles()),i.fn.vendors.densityAutoParticles()})},i.fn.canvasPaint=function(){i.canvas.ctx.fillRect(0,0,i.canvas.w,i.canvas.h)},i.fn.canvasClear=function(){i.canvas.ctx.clearRect(0,0,i.canvas.w,i.canvas.h)},i.fn.particle=function(e,a,t){if(this.radius=(i.particles.size.random?Math.random():1)*i.particles.size.value,i.particles.size.anim.enable&&(this.size_status=!1,this.vs=i.particles.size.anim.speed/100,i.particles.size.anim.sync||(this.vs=this.vs*Math.random())),this.x=t?t.x:Math.random()*i.canvas.w,this.y=t?t.y:Math.random()*i.canvas.h,this.x>i.canvas.w-2*this.radius?this.x=this.x-this.radius:this.x<2*this.radius&&(this.x=this.x+this.radius),this.y>i.canvas.h-2*this.radius?this.y=this.y-this.radius:this.y<2*this.radius&&(this.y=this.y+this.radius),i.particles.move.bounce&&i.fn.vendors.checkOverlap(this,t),this.color={},"object"==typeof e.value)if(e.value instanceof Array){var s=e.value[Math.floor(Math.random()*i.particles.color.value.length)];this.color.rgb=hexToRgb(s)}else void 0!=e.value.r&&void 0!=e.value.g&&void 0!=e.value.b&&(this.color.rgb={r:e.value.r,g:e.value.g,b:e.value.b}),void 0!=e.value.h&&void 0!=e.value.s&&void 0!=e.value.l&&(this.color.hsl={h:e.value.h,s:e.value.s,l:e.value.l});else"random"==e.value?this.color.rgb={r:Math.floor(256*Math.random())+0,g:Math.floor(256*Math.random())+0,b:Math.floor(256*Math.random())+0}:"string"==typeof e.value&&(this.color=e,this.color.rgb=hexToRgb(this.color.value));this.opacity=(i.particles.opacity.random?Math.random():1)*i.particles.opacity.value,i.particles.opacity.anim.enable&&(this.opacity_status=!1,this.vo=i.particles.opacity.anim.speed/100,i.particles.opacity.anim.sync||(this.vo=this.vo*Math.random()));var n={};switch(i.particles.move.direction){case"top":n={x:0,y:-1};break;case"top-right":n={x:.5,y:-.5};break;case"right":n={x:1,y:-0};break;case"bottom-right":n={x:.5,y:.5};break;case"bottom":n={x:0,y:1};break;case"bottom-left":n={x:-.5,y:1};break;case"left":n={x:-1,y:0};break;case"top-left":n={x:-.5,y:-.5};break;default:n={x:0,y:0}}i.particles.move.straight?(this.vx=n.x,this.vy=n.y,i.particles.move.random&&(this.vx=this.vx*Math.random(),this.vy=this.vy*Math.random())):(this.vx=n.x+Math.random()-.5,this.vy=n.y+Math.random()-.5),this.vx_i=this.vx,this.vy_i=this.vy;var r=i.particles.shape.type;if("object"==typeof r){if(r instanceof Array){var c=r[Math.floor(Math.random()*r.length)];this.shape=c}}else this.shape=r;if("image"==this.shape){var o=i.particles.shape;this.img={src:o.image.src,ratio:o.image.width/o.image.height},this.img.ratio||(this.img.ratio=1),"svg"==i.tmp.img_type&&void 0!=i.tmp.source_svg&&(i.fn.vendors.createSvgImg(this),i.tmp.pushing&&(this.img.loaded=!1))}},i.fn.particle.prototype.draw=function(){function e(){i.canvas.ctx.drawImage(r,a.x-t,a.y-t,2*t,2*t/a.img.ratio)}var a=this;if(void 0!=a.radius_bubble)var t=a.radius_bubble;else var t=a.radius;if(void 0!=a.opacity_bubble)var s=a.opacity_bubble;else var s=a.opacity;if(a.color.rgb)var n="rgba("+a.color.rgb.r+","+a.color.rgb.g+","+a.color.rgb.b+","+s+")";else var n="hsla("+a.color.hsl.h+","+a.color.hsl.s+"%,"+a.color.hsl.l+"%,"+s+")";switch(i.canvas.ctx.fillStyle=n,i.canvas.ctx.beginPath(),a.shape){case"circle":i.canvas.ctx.arc(a.x,a.y,t,0,2*Math.PI,!1);break;case"edge":i.canvas.ctx.rect(a.x-t,a.y-t,2*t,2*t);break;case"triangle":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t,a.y+t/1.66,2*t,3,2);break;case"polygon":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t/(i.particles.shape.polygon.nb_sides/3.5),a.y-t/.76,2.66*t/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,1);break;case"star":i.fn.vendors.drawShape(i.canvas.ctx,a.x-2*t/(i.particles.shape.polygon.nb_sides/4),a.y-t/1.52,2*t*2.66/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,2);break;case"image":if("svg"==i.tmp.img_type)var r=a.img.obj;else var r=i.tmp.img_obj;r&&e()}i.canvas.ctx.closePath(),i.particles.shape.stroke.width>0&&(i.canvas.ctx.strokeStyle=i.particles.shape.stroke.color,i.canvas.ctx.lineWidth=i.particles.shape.stroke.width,i.canvas.ctx.stroke()),i.canvas.ctx.fill()},i.fn.particlesCreate=function(){for(var e=0;e<i.particles.number.value;e++)i.particles.array.push(new i.fn.particle(i.particles.color,i.particles.opacity.value))},i.fn.particlesUpdate=function(){for(var e=0;e<i.particles.array.length;e++){var a=i.particles.array[e];if(i.particles.move.enable){var t=i.particles.move.speed/2;a.x+=a.vx*t,a.y+=a.vy*t}if(i.particles.opacity.anim.enable&&(1==a.opacity_status?(a.opacity>=i.particles.opacity.value&&(a.opacity_status=!1),a.opacity+=a.vo):(a.opacity<=i.particles.opacity.anim.opacity_min&&(a.opacity_status=!0),a.opacity-=a.vo),a.opacity<0&&(a.opacity=0)),i.particles.size.anim.enable&&(1==a.size_status?(a.radius>=i.particles.size.value&&(a.size_status=!1),a.radius+=a.vs):(a.radius<=i.particles.size.anim.size_min&&(a.size_status=!0),a.radius-=a.vs),a.radius<0&&(a.radius=0)),"bounce"==i.particles.move.out_mode)var s={x_left:a.radius,x_right:i.canvas.w,y_top:a.radius,y_bottom:i.canvas.h};else var s={x_left:-a.radius,x_right:i.canvas.w+a.radius,y_top:-a.radius,y_bottom:i.canvas.h+a.radius};switch(a.x-a.radius>i.canvas.w?(a.x=s.x_left,a.y=Math.random()*i.canvas.h):a.x+a.radius<0&&(a.x=s.x_right,a.y=Math.random()*i.canvas.h),a.y-a.radius>i.canvas.h?(a.y=s.y_top,a.x=Math.random()*i.canvas.w):a.y+a.radius<0&&(a.y=s.y_bottom,a.x=Math.random()*i.canvas.w),i.particles.move.out_mode){case"bounce":a.x+a.radius>i.canvas.w?a.vx=-a.vx:a.x-a.radius<0&&(a.vx=-a.vx),a.y+a.radius>i.canvas.h?a.vy=-a.vy:a.y-a.radius<0&&(a.vy=-a.vy)}if(isInArray("grab",i.interactivity.events.onhover.mode)&&i.fn.modes.grabParticle(a),(isInArray("bubble",i.interactivity.events.onhover.mode)||isInArray("bubble",i.interactivity.events.onclick.mode))&&i.fn.modes.bubbleParticle(a),(isInArray("repulse",i.interactivity.events.onhover.mode)||isInArray("repulse",i.interactivity.events.onclick.mode))&&i.fn.modes.repulseParticle(a),i.particles.line_linked.enable||i.particles.move.attract.enable)for(var n=e+1;n<i.particles.array.length;n++){var r=i.particles.array[n];i.particles.line_linked.enable&&i.fn.interact.linkParticles(a,r),i.particles.move.attract.enable&&i.fn.interact.attractParticles(a,r),i.particles.move.bounce&&i.fn.interact.bounceParticles(a,r)}}},i.fn.particlesDraw=function(){i.canvas.ctx.clearRect(0,0,i.canvas.w,i.canvas.h),i.fn.particlesUpdate();for(var e=0;e<i.particles.array.length;e++){var a=i.particles.array[e];a.draw()}},i.fn.particlesEmpty=function(){i.particles.array=[]},i.fn.particlesRefresh=function(){cancelRequestAnimFrame(i.fn.checkAnimFrame),cancelRequestAnimFrame(i.fn.drawAnimFrame),i.tmp.source_svg=void 0,i.tmp.img_obj=void 0,i.tmp.count_svg=0,i.fn.particlesEmpty(),i.fn.canvasClear(),i.fn.vendors.start()},i.fn.interact.linkParticles=function(e,a){var t=e.x-a.x,s=e.y-a.y,n=Math.sqrt(t*t+s*s);if(n<=i.particles.line_linked.distance){var r=i.particles.line_linked.opacity-n/(1/i.particles.line_linked.opacity)/i.particles.line_linked.distance;if(r>0){var c=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+c.r+","+c.g+","+c.b+","+r+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(a.x,a.y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}},i.fn.interact.attractParticles=function(e,a){var t=e.x-a.x,s=e.y-a.y,n=Math.sqrt(t*t+s*s);if(n<=i.particles.line_linked.distance){var r=t/(1e3*i.particles.move.attract.rotateX),c=s/(1e3*i.particles.move.attract.rotateY);e.vx-=r,e.vy-=c,a.vx+=r,a.vy+=c}},i.fn.interact.bounceParticles=function(e,a){var t=e.x-a.x,i=e.y-a.y,s=Math.sqrt(t*t+i*i),n=e.radius+a.radius;n>=s&&(e.vx=-e.vx,e.vy=-e.vy,a.vx=-a.vx,a.vy=-a.vy)},i.fn.modes.pushParticles=function(e,a){i.tmp.pushing=!0;for(var t=0;e>t;t++)i.particles.array.push(new i.fn.particle(i.particles.color,i.particles.opacity.value,{x:a?a.pos_x:Math.random()*i.canvas.w,y:a?a.pos_y:Math.random()*i.canvas.h})),t==e-1&&(i.particles.move.enable||i.fn.particlesDraw(),i.tmp.pushing=!1)},i.fn.modes.removeParticles=function(e){i.particles.array.splice(0,e),i.particles.move.enable||i.fn.particlesDraw()},i.fn.modes.bubbleParticle=function(e){function a(){e.opacity_bubble=e.opacity,e.radius_bubble=e.radius}function t(a,t,s,n,c){if(a!=t)if(i.tmp.bubble_duration_end){if(void 0!=s){var o=n-p*(n-a)/i.interactivity.modes.bubble.duration,l=a-o;d=a+l,"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else if(r<=i.interactivity.modes.bubble.distance){if(void 0!=s)var v=s;else var v=n;if(v!=a){var d=n-p*(n-a)/i.interactivity.modes.bubble.duration;"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else"size"==c&&(e.radius_bubble=void 0),"opacity"==c&&(e.opacity_bubble=void 0)}if(i.interactivity.events.onhover.enable&&isInArray("bubble",i.interactivity.events.onhover.mode)){var s=e.x-i.interactivity.mouse.pos_x,n=e.y-i.interactivity.mouse.pos_y,r=Math.sqrt(s*s+n*n),c=1-r/i.interactivity.modes.bubble.distance;if(r<=i.interactivity.modes.bubble.distance){if(c>=0&&"mousemove"==i.interactivity.status){if(i.interactivity.modes.bubble.size!=i.particles.size.value)if(i.interactivity.modes.bubble.size>i.particles.size.value){var o=e.radius+i.interactivity.modes.bubble.size*c;o>=0&&(e.radius_bubble=o)}else{var l=e.radius-i.interactivity.modes.bubble.size,o=e.radius-l*c;o>0?e.radius_bubble=o:e.radius_bubble=0}if(i.interactivity.modes.bubble.opacity!=i.particles.opacity.value)if(i.interactivity.modes.bubble.opacity>i.particles.opacity.value){var v=i.interactivity.modes.bubble.opacity*c;v>e.opacity&&v<=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}else{var v=e.opacity-(i.particles.opacity.value-i.interactivity.modes.bubble.opacity)*c;v<e.opacity&&v>=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}}}else a();"mouseleave"==i.interactivity.status&&a()}else if(i.interactivity.events.onclick.enable&&isInArray("bubble",i.interactivity.events.onclick.mode)){if(i.tmp.bubble_clicking){var s=e.x-i.interactivity.mouse.click_pos_x,n=e.y-i.interactivity.mouse.click_pos_y,r=Math.sqrt(s*s+n*n),p=((new Date).getTime()-i.interactivity.mouse.click_time)/1e3;p>i.interactivity.modes.bubble.duration&&(i.tmp.bubble_duration_end=!0),p>2*i.interactivity.modes.bubble.duration&&(i.tmp.bubble_clicking=!1,i.tmp.bubble_duration_end=!1)}i.tmp.bubble_clicking&&(t(i.interactivity.modes.bubble.size,i.particles.size.value,e.radius_bubble,e.radius,"size"),t(i.interactivity.modes.bubble.opacity,i.particles.opacity.value,e.opacity_bubble,e.opacity,"opacity"))}},i.fn.modes.repulseParticle=function(e){function a(){var a=Math.atan2(d,p);if(e.vx=u*Math.cos(a),e.vy=u*Math.sin(a),"bounce"==i.particles.move.out_mode){var t={x:e.x+e.vx,y:e.y+e.vy};t.x+e.radius>i.canvas.w?e.vx=-e.vx:t.x-e.radius<0&&(e.vx=-e.vx),t.y+e.radius>i.canvas.h?e.vy=-e.vy:t.y-e.radius<0&&(e.vy=-e.vy)}}if(i.interactivity.events.onhover.enable&&isInArray("repulse",i.interactivity.events.onhover.mode)&&"mousemove"==i.interactivity.status){var t=e.x-i.interactivity.mouse.pos_x,s=e.y-i.interactivity.mouse.pos_y,n=Math.sqrt(t*t+s*s),r={x:t/n,y:s/n},c=i.interactivity.modes.repulse.distance,o=100,l=clamp(1/c*(-1*Math.pow(n/c,2)+1)*c*o,0,50),v={x:e.x+r.x*l,y:e.y+r.y*l};"bounce"==i.particles.move.out_mode?(v.x-e.radius>0&&v.x+e.radius<i.canvas.w&&(e.x=v.x),v.y-e.radius>0&&v.y+e.radius<i.canvas.h&&(e.y=v.y)):(e.x=v.x,e.y=v.y)}else if(i.interactivity.events.onclick.enable&&isInArray("repulse",i.interactivity.events.onclick.mode))if(i.tmp.repulse_finish||(i.tmp.repulse_count++,i.tmp.repulse_count==i.particles.array.length&&(i.tmp.repulse_finish=!0)),i.tmp.repulse_clicking){var c=Math.pow(i.interactivity.modes.repulse.distance/6,3),p=i.interactivity.mouse.click_pos_x-e.x,d=i.interactivity.mouse.click_pos_y-e.y,m=p*p+d*d,u=-c/m*1;c>=m&&a()}else 0==i.tmp.repulse_clicking&&(e.vx=e.vx_i,e.vy=e.vy_i)},i.fn.modes.grabParticle=function(e){if(i.interactivity.events.onhover.enable&&"mousemove"==i.interactivity.status){var a=e.x-i.interactivity.mouse.pos_x,t=e.y-i.interactivity.mouse.pos_y,s=Math.sqrt(a*a+t*t);if(s<=i.interactivity.modes.grab.distance){var n=i.interactivity.modes.grab.line_linked.opacity-s/(1/i.interactivity.modes.grab.line_linked.opacity)/i.interactivity.modes.grab.distance;if(n>0){var r=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+r.r+","+r.g+","+r.b+","+n+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(i.interactivity.mouse.pos_x,i.interactivity.mouse.pos_y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}}},i.fn.vendors.eventsListeners=function(){"window"==i.interactivity.detect_on?i.interactivity.el=window:i.interactivity.el=i.canvas.el,(i.interactivity.events.onhover.enable||i.interactivity.events.onclick.enable)&&(i.interactivity.el.addEventListener("mousemove",function(e){if(i.interactivity.el==window)var a=e.clientX,t=e.clientY;else var a=e.offsetX||e.clientX,t=e.offsetY||e.clientY;i.interactivity.mouse.pos_x=a,i.interactivity.mouse.pos_y=t,i.tmp.retina&&(i.interactivity.mouse.pos_x*=i.canvas.pxratio,i.interactivity.mouse.pos_y*=i.canvas.pxratio),i.interactivity.status="mousemove"}),i.interactivity.el.addEventListener("mouseleave",function(e){i.interactivity.mouse.pos_x=null,i.interactivity.mouse.pos_y=null,i.interactivity.status="mouseleave"})),i.interactivity.events.onclick.enable&&i.interactivity.el.addEventListener("click",function(){if(i.interactivity.mouse.click_pos_x=i.interactivity.mouse.pos_x,i.interactivity.mouse.click_pos_y=i.interactivity.mouse.pos_y,i.interactivity.mouse.click_time=(new Date).getTime(),i.interactivity.events.onclick.enable)switch(i.interactivity.events.onclick.mode){case"push":i.particles.move.enable?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):1==i.interactivity.modes.push.particles_nb?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):i.interactivity.modes.push.particles_nb>1&&i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb);break;case"remove":i.fn.modes.removeParticles(i.interactivity.modes.remove.particles_nb);break;case"bubble":i.tmp.bubble_clicking=!0;break;case"repulse":i.tmp.repulse_clicking=!0,i.tmp.repulse_count=0,i.tmp.repulse_finish=!1,setTimeout(function(){i.tmp.repulse_clicking=!1},1e3*i.interactivity.modes.repulse.duration)}})},i.fn.vendors.densityAutoParticles=function(){if(i.particles.number.density.enable){var e=i.canvas.el.width*i.canvas.el.height/1e3;i.tmp.retina&&(e/=2*i.canvas.pxratio);var a=e*i.particles.number.value/i.particles.number.density.value_area,t=i.particles.array.length-a;0>t?i.fn.modes.pushParticles(Math.abs(t)):i.fn.modes.removeParticles(t)}},i.fn.vendors.checkOverlap=function(e,a){for(var t=0;t<i.particles.array.length;t++){var s=i.particles.array[t],n=e.x-s.x,r=e.y-s.y,c=Math.sqrt(n*n+r*r);c<=e.radius+s.radius&&(e.x=a?a.x:Math.random()*i.canvas.w,e.y=a?a.y:Math.random()*i.canvas.h,i.fn.vendors.checkOverlap(e))}},i.fn.vendors.createSvgImg=function(e){var a=i.tmp.source_svg,t=/#([0-9A-F]{3,6})/gi,s=a.replace(t,function(a,t,i,s){if(e.color.rgb)var n="rgba("+e.color.rgb.r+","+e.color.rgb.g+","+e.color.rgb.b+","+e.opacity+")";else var n="hsla("+e.color.hsl.h+","+e.color.hsl.s+"%,"+e.color.hsl.l+"%,"+e.opacity+")";return n}),n=new Blob([s],{type:"image/svg+xml;charset=utf-8"}),r=window.URL||window.webkitURL||window,c=r.createObjectURL(n),o=new Image;o.addEventListener("load",function(){e.img.obj=o,e.img.loaded=!0,r.revokeObjectURL(c),i.tmp.count_svg++}),o.src=c},i.fn.vendors.destroypJS=function(){cancelAnimationFrame(i.fn.drawAnimFrame),t.remove(),pJSDom=null},i.fn.vendors.drawShape=function(e,a,t,i,s,n){var r=s*n,c=s/n,o=180*(c-2)/c,l=Math.PI-Math.PI*o/180;e.save(),e.beginPath(),e.translate(a,t),e.moveTo(0,0);for(var v=0;r>v;v++)e.lineTo(i,0),e.translate(i,0),e.rotate(l);e.fill(),e.restore()},i.fn.vendors.exportImg=function(){window.open(i.canvas.el.toDataURL("image/png"),"_blank")},i.fn.vendors.loadImg=function(e){if(i.tmp.img_error=void 0,""!=i.particles.shape.image.src)if("svg"==e){var a=new XMLHttpRequest;a.open("GET",i.particles.shape.image.src),a.onreadystatechange=function(e){4==a.readyState&&(200==a.status?(i.tmp.source_svg=e.currentTarget.response,i.fn.vendors.checkBeforeDraw()):(console.log("Error pJS - Image not found"),i.tmp.img_error=!0))},a.send()}else{var t=new Image;t.addEventListener("load",function(){i.tmp.img_obj=t,i.fn.vendors.checkBeforeDraw()}),t.src=i.particles.shape.image.src}else console.log("Error pJS - No image.src"),i.tmp.img_error=!0},i.fn.vendors.draw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type?i.tmp.count_svg>=i.particles.number.value?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):void 0!=i.tmp.img_obj?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame))},i.fn.vendors.checkBeforeDraw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type&&void 0==i.tmp.source_svg?i.tmp.checkAnimFrame=requestAnimFrame(check):(cancelRequestAnimFrame(i.tmp.checkAnimFrame),i.tmp.img_error||(i.fn.vendors.init(),i.fn.vendors.draw())):(i.fn.vendors.init(),i.fn.vendors.draw())},i.fn.vendors.init=function(){i.fn.retinaInit(),i.fn.canvasInit(),i.fn.canvasSize(),i.fn.canvasPaint(),i.fn.particlesCreate(),i.fn.vendors.densityAutoParticles(),i.particles.line_linked.color_rgb_line=hexToRgb(i.particles.line_linked.color)},i.fn.vendors.start=function(){isInArray("image",i.particles.shape.type)?(i.tmp.img_type=i.particles.shape.image.src.substr(i.particles.shape.image.src.length-3),i.fn.vendors.loadImg(i.tmp.img_type)):i.fn.vendors.checkBeforeDraw()},i.fn.vendors.eventsListeners(),i.fn.vendors.start()};Object.deepExtend=function(e,a){for(var t in a)a[t]&&a[t].constructor&&a[t].constructor===Object?(e[t]=e[t]||{},arguments.callee(e[t],a[t])):e[t]=a[t];return e},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)}}(),window.cancelRequestAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||clearTimeout}(),window.pJSDom=[],window.particlesJS=function(e,a){"string"!=typeof e&&(a=e,e="particles-js"),e||(e="particles-js");var t=document.getElementById(e),i="particles-js-canvas-el",s=t.getElementsByClassName(i);if(s.length)for(;s.length>0;)t.removeChild(s[0]);var n=document.createElement("canvas");n.className=i,n.style.width="100%",n.style.height="100%";var r=document.getElementById(e).appendChild(n);null!=r&&pJSDom.push(new pJS(e,a))},window.particlesJS.load=function(e,a,t){var i=new XMLHttpRequest;i.open("GET",a),i.onreadystatechange=function(a){if(4==i.readyState)if(200==i.status){var s=JSON.parse(a.currentTarget.response);window.particlesJS(e,s),t&&t()}else console.log("Error pJS - XMLHttpRequest status: "+i.status),console.log("Error pJS - File config not found")},i.send()};
\ No newline at end of file

From 6721b37898b215c8c343b78e153f2a01123cbdeb Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Wed, 30 Aug 2017 00:12:40 +0430
Subject: [PATCH 087/104] beerpay deletd

---
 donate.html | 1 -
 1 file changed, 1 deletion(-)

diff --git a/donate.html b/donate.html
index eecdb00..e373980 100644
--- a/donate.html
+++ b/donate.html
@@ -27,7 +27,6 @@ <h1 id="back"><a href="index.html">Back</a></h1>
             <p>If you do like our project and we hope that you do, can you please support us? Our project is not and is never going to be working for profit. We need the money just so we can continue doing what we do ;-) .</p>
         </div>
         <div class="button_section">
-                <button onclick="redirect(3);" class="reset" title="BeerPay">BeerPay</button>
                 <button onclick="redirect(2);" class="reset" title="Bitcoin">Bitcoin</button>
                 <button onclick="redirect(4);" class="reset" title="Payping">Payping</button>
                 <button onclick="redirect(1);" id="saythanks"  class="reset" title="Say Thanks ;-)">Say Thanks!</button>

From 8f760ac6fff81878339183ba1fbda8df24d0e08d Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Wed, 30 Aug 2017 00:16:38 +0430
Subject: [PATCH 088/104] fix : minor edit in 404 page

---
 404.html | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/404.html b/404.html
index c2ab71a..a70bf56 100644
--- a/404.html
+++ b/404.html
@@ -2,10 +2,6 @@
 	<head>
 		<title>Page not found</title>
         <style type="text/css">
-        @font-face {
-        font-family: "julius";
-        src: url("http://www.lightsout.ir/fonts/JuliusSansOne-Regular.ttf");
-        }
         body{
             font-family: 'Baloo Bhaina', cursive;
         }

From 1a15920982be6f71d2a02269c274bf195863a45f Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 31 Aug 2017 11:35:43 +0430
Subject: [PATCH 089/104] fix : google meta tag added

---
 index.html  |  1 +
 sitemap.xml | 21 ++++++++++++++++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/index.html b/index.html
index d221e0f..8258a35 100644
--- a/index.html
+++ b/index.html
@@ -7,6 +7,7 @@
         <meta property="og:site_name" content="http://www.orangetool.ir"/>
         <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
         <meta property="og:image" content="http://www.orangetool.ir/images/og-icon.png" />
+        <meta name="google-site-verification" content="-b5QnoOfrxwYj7BiHN8EH1JqhMgoADEF-icVI2N_dio" />
          <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
     </head>
     <body>
diff --git a/sitemap.xml b/sitemap.xml
index c57d365..ccf7f9e 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -8,7 +8,26 @@
 
 <url>
   <loc>http://www.orangetool.ir/</loc>
-  <lastmod>2017-07-15T12:42:24+00:00</lastmod>
+  <lastmod>2017-08-29T19:46:57+00:00</lastmod>
   <changefreq>monthly</changefreq>
+  <priority>1.00</priority>
+</url>
+<url>
+  <loc>http://www.orangetool.ir/functions.html</loc>
+  <lastmod>2017-08-29T19:46:57+00:00</lastmod>
+  <changefreq>monthly</changefreq>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>http://www.orangetool.ir/donate.html</loc>
+  <lastmod>2017-08-29T19:46:57+00:00</lastmod>
+  <changefreq>monthly</changefreq>
+  <priority>0.80</priority>
+</url>
+<url>
+  <loc>http://www.orangetool.ir/index.html</loc>
+  <lastmod>2017-08-29T19:46:57+00:00</lastmod>
+  <changefreq>monthly</changefreq>
+  <priority>0.64</priority>
 </url>
 </urlset>
\ No newline at end of file

From a119f23074d65ae275c92780d92f78310c73e8c3 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 31 Aug 2017 20:45:34 +0430
Subject: [PATCH 090/104] fix : particle app file changed

---
 functions.html | 10 +++++-----
 js/app.js      | 10 +++++-----
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/functions.html b/functions.html
index df0be1a..4b11717 100644
--- a/functions.html
+++ b/functions.html
@@ -22,7 +22,7 @@ <h1 id="back"><a href="index.html">Back</a></h1>
         </div>
         <div class="functions">
             <ul>
-            <li>IP Functions</li>
+            <li style="color:red;">IP Functions</li>
                 <ul>
                     <li>Local IP</li>
                     <li>Global IP</li>
@@ -31,7 +31,7 @@ <h1 id="back"><a href="index.html">Back</a></h1>
                     <li>Set IP</li>
                     <li>MAC address</li>
                 </ul>
-            <li>RAM Functions</li>
+            <li style="color:red;">RAM Functions</li>
                 <ul>
                     <li>Total RAM</li>
                     <li>Free RAM</li>
@@ -39,7 +39,7 @@ <h1 id="back"><a href="index.html">Back</a></h1>
                     <li>Used Percentage</li>
                     <li>Freeup</li>
                 </ul>
-            <li>Storage Functions</li>
+            <li style="color:red;">Storage Functions</li>
                 <ul>
                     <li>Mount Status</li>
                     <li>Storage Status</li>
@@ -47,13 +47,13 @@ <h1 id="back"><a href="index.html">Back</a></h1>
                     <li>Mount</li>
                     <li>Unmount All</li>
                 </ul>
-            <li>Display Functions</li>
+            <li style="color:red;">Display Functions</li>
                 <ul>
                     <li>HDMI On</li>
                     <li>HDMI Off</li>
                     <li>HDMI Size</li>
                 </ul>
-            <li>System Functions</li>
+            <li style="color:red;">System Functions</li>
                 <ul>
                     <li>Sleep</li>
                     <li>Halt</li>
diff --git a/js/app.js b/js/app.js
index 54c0847..1eb0584 100644
--- a/js/app.js
+++ b/js/app.js
@@ -29,7 +29,7 @@ particlesJS('particles-js',
       }
     },
     "color": {
-      "value": "#070404"
+      "value": "#c88d23"
     },
     "shape": {
       "type": "circle",
@@ -57,7 +57,7 @@ particlesJS('particles-js',
       }
     },
     "size": {
-      "value": 3,
+      "value": 11.8,
       "random": true,
       "anim": {
         "enable": false,
@@ -67,9 +67,9 @@ particlesJS('particles-js',
       }
     },
     "line_linked": {
-      "enable": true,
+      "enable": false,
       "distance": 150,
-      "color": "#501e1e",
+      "color": "#ffffff",
       "opacity": 0.4,
       "width": 1
     },
@@ -77,7 +77,7 @@ particlesJS('particles-js',
       "enable": true,
       "speed": 6,
       "direction": "none",
-      "random": false,
+      "random": true,
       "straight": false,
       "out_mode": "out",
       "bounce": false,

From e331898fe2d38601da6599d6c8730c7d2610e685 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 31 Aug 2017 20:53:23 +0430
Subject: [PATCH 091/104] particles added to 404 page

---
 404.html | 37 +++++++++++++++++++++++++++++++++----
 1 file changed, 33 insertions(+), 4 deletions(-)

diff --git a/404.html b/404.html
index a70bf56..a86af1a 100644
--- a/404.html
+++ b/404.html
@@ -1,6 +1,12 @@
 <html>
 	<head>
 		<title>Page not found</title>
+        <meta name="description" content="Orangetool By Moduland"/>
+        <meta property="og:title" content="Orangetool" />
+        <meta property="og:site_name" content="http://www.orangetool.ir"/>
+        <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
+        <meta property="og:image" content="http://www.orangetool.ir/images/og-icon.png" />
+         <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
         <style type="text/css">
         body{
             font-family: 'Baloo Bhaina', cursive;
@@ -32,7 +38,23 @@
         img{
             width: 550px;
             height: 400px;
+            opacity: 0.7;
         }
+            #particles-js{
+    position: relative;
+    width: 100%;
+    height: 100%;
+    background-color: white;
+    background-image: url('');
+    background-size: cover; 
+    background-repeat: no-repeat;
+  }
+            .siteWrapper {
+            position: fixed;
+            overflow: auto;
+            width: 100%;
+            height: 100%;
+}
         @media all and (max-width: 1024px) {
             img{
                 width: 90%;
@@ -44,8 +66,10 @@
     </style>
 		
 </head>
-    
-	<body >
+     
+	<body>
+        <div id="particles-js">
+          <div class="siteWrapper">
         <div class="Error-page" >
 		<img src="http://moduland.github.io/Orangetool/images/orangetool.jpg"/ alt="orangetool logo">
         <br/>
@@ -54,8 +78,13 @@
             <a href="http://www.orangetool.ir">Back</a>
          </div>   
         </div>
-        
+             </div>
+    </div>
+         
+    <script src="http://www.orangetool.ir/js/particles.js"></script>
+    <script src="http://www.orangetool.ir/js/app.js"></script>
+         
 	</body>
-
+    
 
 </html>

From f2930593a12b629c0c911069ac7ac651fa4f70ed Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Fri, 1 Sep 2017 01:32:25 +0430
Subject: [PATCH 092/104] fonts added

---
 404.html        |   6 +++++-
 css/style.css   |   8 ++++++--
 fonts/Baloo.ttf | Bin 0 -> 360216 bytes
 3 files changed, 11 insertions(+), 3 deletions(-)
 create mode 100644 fonts/Baloo.ttf

diff --git a/404.html b/404.html
index a86af1a..38958f1 100644
--- a/404.html
+++ b/404.html
@@ -8,8 +8,12 @@
         <meta property="og:image" content="http://www.orangetool.ir/images/og-icon.png" />
          <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
         <style type="text/css">
+            @font-face {
+            font-family: "baloo";
+            src: url("http://www.lightsout.ir/fonts/baloo.ttf");
+            }
         body{
-            font-family: 'Baloo Bhaina', cursive;
+            font-family: "baloo";
         }
         .return p{
             font-size: 40px;
diff --git a/css/style.css b/css/style.css
index c8a0f36..15e42b3 100644
--- a/css/style.css
+++ b/css/style.css
@@ -1,3 +1,7 @@
+@font-face {
+    font-family: "baloo";
+    src: url("../fonts/baloo.ttf");
+}
 .logo{
     vertical-align: middle;
     margin: auto;
@@ -7,7 +11,7 @@
 
 body{
     background-color:white;
-    font-family: 'Baloo Bhaina', cursive;
+    font-family: "baloo";
     margin: 0;
     
 }
@@ -52,7 +56,7 @@ hr{
 
 
 #login-footer p{
-    font-family: 'Baloo Bhaina', cursive;
+    font-family: "baloo";
     vertical-align: center;
     margin:auto;
 }
diff --git a/fonts/Baloo.ttf b/fonts/Baloo.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..ece41075be9c39ff08b80468802f63c481d77f00
GIT binary patch

From 3fdaea516bce9ba2be3abd135c1b72a47e942f54 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Fri, 1 Sep 2017 01:46:51 +0430
Subject: [PATCH 093/104] fix : minor edit in font type

---
 404.html      | 2 +-
 css/style.css | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/404.html b/404.html
index 38958f1..152d9af 100644
--- a/404.html
+++ b/404.html
@@ -10,7 +10,7 @@
         <style type="text/css">
             @font-face {
             font-family: "baloo";
-            src: url("http://www.lightsout.ir/fonts/baloo.ttf");
+            src: url("http://www.orangetool.ir/fonts/Baloo.ttf");
             }
         body{
             font-family: "baloo";
diff --git a/css/style.css b/css/style.css
index 15e42b3..170dbd9 100644
--- a/css/style.css
+++ b/css/style.css
@@ -1,6 +1,6 @@
 @font-face {
     font-family: "baloo";
-    src: url("../fonts/baloo.ttf");
+    src: url("../fonts/Baloo.ttf");
 }
 .logo{
     vertical-align: middle;

From 6f6caa1b401eb69d3baa5e7bfa281d4ce68070a2 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 14 Sep 2017 13:29:47 +0430
Subject: [PATCH 094/104] fix : version updated in website

---
 index.html         | 2 +-
 version/index.html | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/index.html b/index.html
index 8258a35..17f5e59 100644
--- a/index.html
+++ b/index.html
@@ -17,7 +17,7 @@
             <img src="images/orangetool.jpg"  class="orange_image">
         </div>
          <div class="main_text" >
-             <p class="moduland"><a href="https://github.com/moduland/Orangetool/archive/v0.23.zip">Version 0.23</a></p>
+             <p class="moduland"><a href="https://github.com/moduland/Orangetool/archive/v0.25.zip">Version 0.25</a></p>
             <p>General and useful python-scripts developed for Single-Board Computers</p>
             <p>Tested on Lubuntu 14.04</p>
             <a href="functions.html">Functions List</a>
diff --git a/version/index.html b/version/index.html
index a5f6313..2a64fae 100644
--- a/version/index.html
+++ b/version/index.html
@@ -1 +1 @@
-0.22
\ No newline at end of file
+0.25
\ No newline at end of file

From f70c02c728423ad72ad5f76b45be112ba3e07b78 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Thu, 21 Sep 2017 15:30:34 +0430
Subject: [PATCH 095/104] new test file added

---
 test.ref | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 test.ref

diff --git a/test.ref b/test.ref
new file mode 100644
index 0000000..36068ce
--- /dev/null
+++ b/test.ref
@@ -0,0 +1,50 @@
+Aquarium,24,0,0,0
+Boom Box,8,0,0,0
+Cable Box,140,0,0,0
+CD Player,7,0,2,0
+Ceiling Fan,35,0,0,0
+Clothes Dryer,2790,0,0,0
+Clothes Washer,255,0,0,0
+Coffe Maker,1000,0,0,0
+Compactors,400,0,0,0
+PC,75,0,0,0
+Laptop,25,2,2,2
+Deep Fryer,1000,2,2,2
+Monitor,42,2,2,2
+Dishwasher,330,0,0,0
+DVD/VCR,17,0,0,0
+Electric Blanket,400,0,0,0
+Electronic Air cleaner,50,0,0,0
+Furance Fan,295,0,0,0
+Garage Door Opener,400,0,0,0
+Hair Dryer,710,0,0,0
+Humidifer,11,0,0,0
+Iron,1100,0,0,0
+Lawn sprinkler,11,0,0,0
+Microwave,1500,0,0,0
+Pool Pump,1000,0,0,0
+Portable spa,4350,0,0,0
+Printer(Laser),250,0,0,0
+Printer(Inkjet),13,0,0,0
+Reciever,28,0,0,0
+Rechargable Power Tool,13,0,0,0
+Refrigerator,225,4,0,0
+DSL Modem,6,0,0,0
+Slow Cooker,200,0,0,0
+Space Heater,1320,0,0,0
+Stereo System,33,2,2,0
+Television Analog <40,86,0,0,0
+Television Analog >40,156,0,0,0
+Television CRT,60,0,0,0
+Television Plasma,300,0,0,0
+Television LCD,150,0,0,0
+Television set-top box,20,0,0,0
+Toaster,1100,0,0,0
+Toaster oven,1051,0,0,0
+Video Game System,36,0,0,0
+Water Heater,4500,0,0,0
+Waterbed Heater,350,0,0,0
+Well Pump,725,0,0,0
+Elevator,2000,0,0,0
+Fluorescent-Tube,43,0,0,0
+Lamp,100,0,0,0

From 1d65987228932a07940b48abe08b5d9c437b3835 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 31 Oct 2017 00:32:09 +0330
Subject: [PATCH 096/104] fix : moduland link added to site

---
 css/style.css | 13 +++++++++++++
 index.html    |  2 +-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/css/style.css b/css/style.css
index 170dbd9..da501b4 100644
--- a/css/style.css
+++ b/css/style.css
@@ -35,6 +35,7 @@ a{
   opacity: 1; 
   transition: opacity 3s;
   -webkit-transition: opacity 3s;
+ text-decoration: none;
 }
 
 a:hover{
@@ -213,6 +214,18 @@ button {
     font-family: "sacramento";
     font-size: 25px;
 }
+
+#login-footer a{
+    color: yellow;
+}
+
+#login-footer a:visited{
+    color: yellow;
+}
+
+#login-footer a:after{
+    color: yellow;
+}
 #particles-js{
     position: relative;
     width: 100%;
diff --git a/index.html b/index.html
index 17f5e59..a5040f0 100644
--- a/index.html
+++ b/index.html
@@ -36,7 +36,7 @@
         
         
         <div id="login-footer" class="abs">
-        <p> Copyright (c) 2017 Moduland Co</p>
+            <p> Copyright (c) 2017 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
     </div>
               </div>
           </div>

From 5dae5f2f8c4c0fcb902dc5d673bd7dc0d1431fe1 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Tue, 31 Oct 2017 00:40:53 +0330
Subject: [PATCH 097/104] favicons added

---
 donate.html          |   6 +++++-
 functions.html       |   6 +++++-
 images/favicon/1.png | Bin 0 -> 2562 bytes
 images/favicon/2.png | Bin 0 -> 3198 bytes
 images/favicon/3.png | Bin 0 -> 6226 bytes
 images/favicon/4.png | Bin 0 -> 1353 bytes
 images/og-icon.png   | Bin 7306 -> 6092 bytes
 index.html           |   6 +++++-
 8 files changed, 15 insertions(+), 3 deletions(-)
 create mode 100644 images/favicon/1.png
 create mode 100644 images/favicon/2.png
 create mode 100644 images/favicon/3.png
 create mode 100644 images/favicon/4.png

diff --git a/donate.html b/donate.html
index e373980..f9bfaa0 100644
--- a/donate.html
+++ b/donate.html
@@ -13,6 +13,10 @@
         <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
         <meta property="og:image" content="http://www.orangetool.ir/images/og-icon.png" />
         <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+        <link href="images/favicon/4.png" rel="shortcut icon">
+        <link href="images/favicon/1.png" rel="-touch-icon">
+        <link href="images/favicon/2.png" rel="apple-touch-icon" sizes="72x72">
+        <link href="images/favicon/3.png" rel="apple-touch-icon" sizes="114x114">
     </head>
     <body>
       <div id="particles-js">
@@ -33,7 +37,7 @@ <h1 id="back"><a href="index.html">Back</a></h1>
             </div>
         
         <div id="login-footer" class="abs">
-        <p> Copyright (c) 2017 Moduland Co</p>
+        <p> Copyright (c) 2017 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
     </div>
           </div>
         </div>
diff --git a/functions.html b/functions.html
index 4b11717..8c8cce7 100644
--- a/functions.html
+++ b/functions.html
@@ -13,6 +13,10 @@
         <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
         <meta property="og:image" content="http://www.orangetool.ir/images/og-icon.png" />
         <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+        <link href="images/favicon/4.png" rel="shortcut icon">
+        <link href="images/favicon/1.png" rel="-touch-icon">
+        <link href="images/favicon/2.png" rel="apple-touch-icon" sizes="72x72">
+        <link href="images/favicon/3.png" rel="apple-touch-icon" sizes="114x114">
     </head>
     <body>
      <div id="particles-js">
@@ -66,7 +70,7 @@ <h1 id="back"><a href="index.html">Back</a></h1>
             </ul>
         </div>
         <div id="login-footer" class="abs">
-        <p> Copyright (c) 2017 Moduland Co</p>
+        <p> Copyright (c) 2017 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
     </div>
          </div>
         </div>
diff --git a/images/favicon/1.png b/images/favicon/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..52ea3fd81a8a19497d982a6d7d40e24a90256304
GIT binary patch
diff --git a/images/favicon/2.png b/images/favicon/2.png
new file mode 100644
index 0000000000000000000000000000000000000000..3491399cc457e5b6fece1b7afc4b3317a02f8300
GIT binary patch
diff --git a/images/favicon/3.png b/images/favicon/3.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb4a0cc947ceb12e084c9d570043f87c448b56a4
GIT binary patch
diff --git a/images/favicon/4.png b/images/favicon/4.png
new file mode 100644
index 0000000000000000000000000000000000000000..66f8120097b5e6fa3aa1479b4eb22843d71dda07
GIT binary patch
diff --git a/images/og-icon.png b/images/og-icon.png
index b994d82b78dd370a418aef7966c547bcd5792d32..78a378a546c6f50010b9d0b01ec04fb3f812ea83 100644
GIT binary patch
diff --git a/index.html b/index.html
index a5040f0..9a45c73 100644
--- a/index.html
+++ b/index.html
@@ -8,7 +8,11 @@
         <meta property="og:description" content="Consist of some general and useful scripts that developed for Single-Board Computers" />
         <meta property="og:image" content="http://www.orangetool.ir/images/og-icon.png" />
         <meta name="google-site-verification" content="-b5QnoOfrxwYj7BiHN8EH1JqhMgoADEF-icVI2N_dio" />
-         <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+        <link href="images/favicon/4.png" rel="shortcut icon">
+        <link href="images/favicon/1.png" rel="-touch-icon">
+        <link href="images/favicon/2.png" rel="apple-touch-icon" sizes="72x72">
+        <link href="images/favicon/3.png" rel="apple-touch-icon" sizes="114x114">
     </head>
     <body>
       <div id="particles-js">

From 5878d4eb43ec59ac9ac5aa9e64fcf3db95001bec Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 1 Jun 2019 18:58:05 +0430
Subject: [PATCH 098/104] webpage updated for version 0.35

---
 donate.html        | 2 +-
 functions.html     | 2 +-
 index.html         | 6 +++---
 version/index.html | 2 +-
 4 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/donate.html b/donate.html
index f9bfaa0..fe671fe 100644
--- a/donate.html
+++ b/donate.html
@@ -37,7 +37,7 @@ <h1 id="back"><a href="index.html">Back</a></h1>
             </div>
         
         <div id="login-footer" class="abs">
-        <p> Copyright (c) 2017 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
+        <p> Copyright (c) 2017 - 2019 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
     </div>
           </div>
         </div>
diff --git a/functions.html b/functions.html
index 8c8cce7..8858a92 100644
--- a/functions.html
+++ b/functions.html
@@ -70,7 +70,7 @@ <h1 id="back"><a href="index.html">Back</a></h1>
             </ul>
         </div>
         <div id="login-footer" class="abs">
-        <p> Copyright (c) 2017 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
+        <p> Copyright (c) 2017 - 2019 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
     </div>
          </div>
         </div>
diff --git a/index.html b/index.html
index 9a45c73..200723f 100644
--- a/index.html
+++ b/index.html
@@ -21,7 +21,7 @@
             <img src="images/orangetool.jpg"  class="orange_image">
         </div>
          <div class="main_text" >
-             <p class="moduland"><a href="https://github.com/moduland/Orangetool/archive/v0.25.zip">Version 0.25</a></p>
+             <p class="moduland"><a href="https://github.com/moduland/Orangetool/archive/v0.35.zip">Version 0.35</a></p>
             <p>General and useful python-scripts developed for Single-Board Computers</p>
             <p>Tested on Lubuntu 14.04</p>
             <a href="functions.html">Functions List</a>
@@ -31,7 +31,7 @@
         
             <a href="https://github.com/Moduland/Orangetool/archive/master.zip" title="Download Source"><img src="images/download.png" height="128px" width="128px" alt="Download Source"></a>
             <a href="http://github.com/moduland/orangetool" target="_blank" title="Orangetool Github"><img src="images/github.png" alt="Orangetool Github"></a>
-            <a href="http://moduland.github.io/Orangetool/doc" target="_blank" title="Orangetool Doc"><img src="images/doc.png" alt="Orangetool Doc"></a>
+            <a href="https://github.com/Moduland/Orangetool/blob/master/README.md" target="_blank" title="Orangetool Doc"><img src="images/doc.png" alt="Orangetool Doc"></a>
             <a href="https://github.com/Moduland/Orangetool/blob/master/Supported_Device_List.md" target="_blank" title="Supported Device List"><img src="images/list.png" height="128px" width="128px" alt="Supported Device List"></a>
             <a href="http://www.moduland.ir" target="_blank" title="Moduland Website"><img src="images/moduland.jpg" height="128px" width="128px" alt="Moduland Website"></a>
             <a href="donate.html" target="_blank" title="Donate"><img src="images/donate-button-blue.jpg" height="128px" width="128px" alt="Donate"></a>
@@ -40,7 +40,7 @@
         
         
         <div id="login-footer" class="abs">
-            <p> Copyright (c) 2017 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
+            <p> Copyright (c) 2017 - 2019 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
     </div>
               </div>
           </div>
diff --git a/version/index.html b/version/index.html
index 2a64fae..b76af45 100644
--- a/version/index.html
+++ b/version/index.html
@@ -1 +1 @@
-0.25
\ No newline at end of file
+0.35
\ No newline at end of file

From b190a39b5f924ec7b79a1e98a8540283842da878 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 26 Dec 2020 15:04:46 +0330
Subject: [PATCH 099/104] webpage updated for version 0.45

---
 functions.html     | 2 +-
 index.html         | 4 ++--
 version/index.html | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/functions.html b/functions.html
index 8858a92..10c7030 100644
--- a/functions.html
+++ b/functions.html
@@ -70,7 +70,7 @@ <h1 id="back"><a href="index.html">Back</a></h1>
             </ul>
         </div>
         <div id="login-footer" class="abs">
-        <p> Copyright (c) 2017 - 2019 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
+        <p> Copyright (c) 2017 - 2020 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
     </div>
          </div>
         </div>
diff --git a/index.html b/index.html
index 200723f..ed42d97 100644
--- a/index.html
+++ b/index.html
@@ -21,7 +21,7 @@
             <img src="images/orangetool.jpg"  class="orange_image">
         </div>
          <div class="main_text" >
-             <p class="moduland"><a href="https://github.com/moduland/Orangetool/archive/v0.35.zip">Version 0.35</a></p>
+             <p class="moduland"><a href="https://github.com/moduland/Orangetool/archive/v0.45.zip">Version 0.45</a></p>
             <p>General and useful python-scripts developed for Single-Board Computers</p>
             <p>Tested on Lubuntu 14.04</p>
             <a href="functions.html">Functions List</a>
@@ -40,7 +40,7 @@
         
         
         <div id="login-footer" class="abs">
-            <p> Copyright (c) 2017 - 2019 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
+            <p> Copyright (c) 2017 - 2020 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
     </div>
               </div>
           </div>
diff --git a/version/index.html b/version/index.html
index b76af45..1615779 100644
--- a/version/index.html
+++ b/version/index.html
@@ -1 +1 @@
-0.35
\ No newline at end of file
+0.45
\ No newline at end of file

From e2057b6e87a60771955a0cd4f9db946060cf8028 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Sat, 26 Dec 2020 15:08:39 +0330
Subject: [PATCH 100/104] minor edit in donate page

---
 donate.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/donate.html b/donate.html
index fe671fe..4b341ff 100644
--- a/donate.html
+++ b/donate.html
@@ -37,7 +37,7 @@ <h1 id="back"><a href="index.html">Back</a></h1>
             </div>
         
         <div id="login-footer" class="abs">
-        <p> Copyright (c) 2017 - 2019 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
+        <p> Copyright (c) 2017 - 2020 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
     </div>
           </div>
         </div>

From 0c99b0ab1126561911f8734326078a88867810fd Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Fri, 1 Jan 2021 19:06:35 +0330
Subject: [PATCH 101/104] webpage updated for version 0.50

---
 donate.html        | 2 +-
 functions.html     | 2 +-
 index.html         | 4 ++--
 version/index.html | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/donate.html b/donate.html
index 4b341ff..3413136 100644
--- a/donate.html
+++ b/donate.html
@@ -37,7 +37,7 @@ <h1 id="back"><a href="index.html">Back</a></h1>
             </div>
         
         <div id="login-footer" class="abs">
-        <p> Copyright (c) 2017 - 2020 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
+        <p> Copyright (c) 2017 - 2021 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
     </div>
           </div>
         </div>
diff --git a/functions.html b/functions.html
index 10c7030..cf5e300 100644
--- a/functions.html
+++ b/functions.html
@@ -70,7 +70,7 @@ <h1 id="back"><a href="index.html">Back</a></h1>
             </ul>
         </div>
         <div id="login-footer" class="abs">
-        <p> Copyright (c) 2017 - 2020 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
+        <p> Copyright (c) 2017 - 2021 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
     </div>
          </div>
         </div>
diff --git a/index.html b/index.html
index ed42d97..da09d85 100644
--- a/index.html
+++ b/index.html
@@ -21,7 +21,7 @@
             <img src="images/orangetool.jpg"  class="orange_image">
         </div>
          <div class="main_text" >
-             <p class="moduland"><a href="https://github.com/moduland/Orangetool/archive/v0.45.zip">Version 0.45</a></p>
+             <p class="moduland"><a href="https://github.com/moduland/Orangetool/archive/v0.50.zip">Version 0.50</a></p>
             <p>General and useful python-scripts developed for Single-Board Computers</p>
             <p>Tested on Lubuntu 14.04</p>
             <a href="functions.html">Functions List</a>
@@ -40,7 +40,7 @@
         
         
         <div id="login-footer" class="abs">
-            <p> Copyright (c) 2017 - 2020 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
+            <p> Copyright (c) 2017 - 2021 <a href="http://www.moduland.ir" target="_blank">Moduland Co</a></p>
     </div>
               </div>
           </div>
diff --git a/version/index.html b/version/index.html
index 1615779..2f20b8f 100644
--- a/version/index.html
+++ b/version/index.html
@@ -1 +1 @@
-0.45
\ No newline at end of file
+0.50
\ No newline at end of file

From b0e5388dc63b7cf43c7c50860ab2e49ed995f626 Mon Sep 17 00:00:00 2001
From: sepandhaghighi <sepand.haghighi@yahoo.com>
Date: Fri, 1 Jan 2021 19:12:22 +0330
Subject: [PATCH 102/104] functions.html updated

---
 functions.html | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/functions.html b/functions.html
index cf5e300..e652cbb 100644
--- a/functions.html
+++ b/functions.html
@@ -33,7 +33,9 @@ <h1 id="back"><a href="index.html">Back</a></h1>
                     <li>Internet Check</li>
                     <li>Ping</li>
                     <li>Set IP</li>
-                    <li>MAC address</li>
+                    <li>MAC Address</li>
+                    <li>Network Enable</li>
+                    <li>Network Disable</li>
                 </ul>
             <li style="color:red;">RAM Functions</li>
                 <ul>
@@ -50,6 +52,8 @@ <h1 id="back"><a href="index.html">Back</a></h1>
                     <li>Unmount</li>
                     <li>Mount</li>
                     <li>Unmount All</li>
+                    <li>USB On</li>
+                    <li>USB Off</li>
                 </ul>
             <li style="color:red;">Display Functions</li>
                 <ul>

From ea8429f39b6ce2c848f038610d9dcbeff001119b Mon Sep 17 00:00:00 2001
From: Sepand Haghighi <sepand.haghighi@yahoo.com>
Date: Fri, 22 Jan 2021 03:03:15 +0330
Subject: [PATCH 103/104] Update CNAME

---
 CNAME | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CNAME b/CNAME
index f46234a..8e54090 100644
--- a/CNAME
+++ b/CNAME
@@ -1 +1 @@
-www.orangetool.ir
+orangetool.ir
\ No newline at end of file

From 0f64f4a5b669b2e9a96a7a15e0f9fbdb929cefe0 Mon Sep 17 00:00:00 2001
From: Sepand Haghighi <sepand.haghighi@yahoo.com>
Date: Fri, 22 Jan 2021 03:04:49 +0330
Subject: [PATCH 104/104] Update CNAME

---
 CNAME | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CNAME b/CNAME
index 8e54090..3086ea8 100644
--- a/CNAME
+++ b/CNAME
@@ -1 +1 @@
-orangetool.ir
\ No newline at end of file
+www.orangetool.ir
\ No newline at end of file
